令和にNetYarozeをはじめてみたい奇特なあなたに

# NetYaroze入門

:::note warn
警告・免責事項
本記事の情報をもとにした開発、製作、運用などの結果について、いかなる責任も負いません。(例: 黒ステが壊れたり等)
:::

![黒ステ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/d6b634e6-83fa-5587-23e1-2499996f359c.jpeg)


## 概要
その昔、初代PlayStationはなんと自作ゲームが作れる環境が公式で用意されていました。
「ネットやろうぜ!」というものです。海外では「NetYaroze」と呼ばれているようです。
当時はインターネット黎明期です。初代PlayStationでネットができるという訳ではなく、市販のパソコンを使ってPlayStation向けの自作ゲーム開発とその情報共有の場所の提供がなされました。
インターネット上に公式が用意した交流用の会員専用サイトがあったらしく、そこにみんなでネットでアクセスしようぜ！といった意味が製品名に込められているのではと思われます。

自作ゲームが作れる環境が用意されていたと言ったもののそのハードルは金銭面で高く、1996年当時12万円で販売されていました。
「ネットやろうぜ!」の内容物としては

- 会員用プレイステーション
    - PlayStation本体。黒色で梨地加工でザラザラしています。(通称、黒ステ。型番DTL-H3000)
    - コントローラー2個。こちらも黒色で梨地加工でザラザラしています。(型番DTL-H3010)
- 「ネットやろうぜ」起動ディスク
    - 黒ステにセットして起動すると、背景がレンガのコンソール?が表示されます。この状態でPCと専用のケーブルで接続すると、PCと黒ステ間でシリアル通信が可能となります。主にPCから黒ステへ作成したゲームデータのアップロードを行うのに利用します。
    - ※ただし、利用にはアクセスカードが必要です。
    - 型番DTL-S3030
- 「ネットやろうぜ」ソフト開発用ディスク
    - 専用のライブラリやCコンパイラ、リンカ、デバッガー、サンプルコード、黒ステとの通信用ソフトであるsioconsが入っています。
    - 型番DTL-S3040
- アクセスカード
    - 「ネットやろうぜ」起動ディスクの利用に必要です。見た目はメモリーカードそっくりです。
    - 型番DTL-H3020
- シリアル通信用のケーブル
    - 黒ステの背面端子とPCのRS232C端子を接続するケーブルです。黒ステ側の端子は対戦ケーブルと同じ端子形状をしています。
    - 型番DTL-H3050
- 冊子
  - スタートアップガイド: 型番DTL-D3060
  - ユーザーズガイド: 型番DTL-D3070
  - ライブラリリファレンス: 型番DTL-D3090
- LightWaveが付属(期間限定?)
- 海外版にはCodewarriorが付属?

以上が同梱物です。冊子にも型番が振られていて面白いですね。
私は令和に「ネットやろうぜ!」に人生で初めて着手し、サンプルコードを動かすところまでできたので、その手順を(詰まったところを取り上げつつ)簡単に紹介したいと思います。全ての手順を網羅できている訳ではなく、記憶を辿って書いているので漏れもあると思いますがご了承ください。
サンプルコード自体はオープンソースではないように思われるので、ここでは取り上げません。

## 第一の関門
まず、どうにかして黒ステ・アクセスカード・起動ディスク・ソフト開発用ディスク・通信ケーブル・スタートアップガイドを手に入れてください。(黒ステの代わりに通常のPlayStationでもできるかもですが私は試していません。)
今の時代、手に入れようとするとおそらく9万円~15万円くらいかかると思います。(2023年12月時点で私の肌感覚なのでなにか根拠があるわけではありません。)
怪しいネットショップで購入してしまわないように注意も必要です。買っても送られてこないなどあり得るかもしれません。
海外から購入する際は為替を気にした方が良いでしょう。
今では円安が進んでしまい、100円/ドル の頃と比較して1.5倍になってしまうので、10万円の1.5倍となると15万円です。
また税関を通れるかどうかもリスクになるかもしれません。チェック時に破損してしまうリスクも少なからずあるのではないでしょうか。
1996年当時にネットやろうぜ!を購入して今現在も所有されたままの方はこの関門はすでにクリアです。

## 第二の関門
開発環境のセットアップについてです。
私は当時の状況を知らない~~若者な~~ので正確な情報はわからないのですが、
1996年当時はPC/AT互換機で、OSはMS-DOS Ver5.0以上での開発が想定なようです。
令和の時代に90年代のマシンでDOSが現役で動いていることは稀だと思うので、今回私はWindows10の自作PC上でDOSBoxを動かして開発環境をととのえました。

ソフト開発用ディスクの中身を自作PC(Windows10)の適当なフォルダにコピーしておき、それをDOSBoxでそのフォルダをマウントするように設定します。
また、自作PCにはRS232C端子は無いので、今回はUSBシリアルケーブルを利用しました。
USBシリアルケーブルを自作PC(Windows10)に接続したらWindows10でCOMポートを認識すると思います。このときのCOMポートをDOSBoxにどのようにマッピングするかが問題です。
DOSBox起動時の設定ファイルに、どのCOMポートをDOSBoxで認識するかを設定できるので私はこれを利用しました。

また、ソフト開発用ディスクにあるDJSETUP.BATではDOSにおける環境変数をセットするバッチなようで、ここで使用するシリアルポートのI/Oアドレスとそれに応じたIRQ番号、bps設定を入れておき、バッチを叩いておきます。
DOSBox上でCOM3ポートを9600bpsで利用する場合は次のように設定します。
```
set DTLH3000=0x3e8,4,9600
```

COM1~4における一般的なアドレスとIRQ番号について、ネットで調べづらく感じたので今回私はChatGPTに教えてもらいました。(※情報の正確性については自己責任でお願いします。)
```
COM1: 0x3F8, IRQ: 4
COM2: 0x2F8, IRQ: 3
COM3: 0x3E8, IRQ: 4
COM4: 0x2E8, IRQ: 3
```

参考
シリアルポートのマッピング設定
https://www.dosbox.com/wiki/Configuration:SerialPort
マウントコマンドのドキュメント
https://www.dosbox.com/wiki/MOUNT

## サンプルプログラムのコンパイル
サンプルプログラムのコンパイルはあまり障壁にならないと思います。
問題はコンパイルしてできたゲームのバイナリを黒ステにアップロードするところです。

## いよいよアップロード...?
サンプルプログラムをコンパイルしてできたバイナリを黒ステにアップロードしましょう。
ボールが壁(というか上下左右の画面端)に跳ね返るサンプルプログラムが動くはずです。
ただ、通信ケーブルと本体端子が接触不良で通信がそもそもできない可能性も考えていますが、とりあえずやってみます。
PCと接続してsioconsコマンドでバイナリのアップロードを試みました

![siocons1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/96ecb0c1-4e97-b18e-8fe6-54ccd4dda326.png)
![siocons1-psx.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/4ce4fef4-bc84-35c4-0a15-ee9441a0e6c6.jpeg)

おや、、うまくいってなさそうです。
ケーブルの接続を見直し、
再度チャレンジします
![last3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/10d24a02-c36c-803d-027a-d6501f5c7d04.png)
![last2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/7e2d8e35-fab4-589f-cdc3-458c5544d30a.png)
黒ステの準備ができていないといったメッセージに変わってしまいました。


写真のように、

```
BINARY WRITE:timeout !
```

や

```
[DTLH300 not ready!]
```




といったエラーメッセージ?がsioconsを実行したDOS側で出力されていれば接触不良と考えて良いかと思います。
予想通りというか、やはりすんなりとは通してくれません。

私の場合はケーブル端子に緑青が生えており、これが原因なのではないかと考えました。
つまり、重曹ペーストで清掃を試みました。内部に水分が浸透してしまったので、乾燥もさせます。
何日も乾燥させる辛抱が必要です。
なぜなら、、うっかりショートして黒ステ本体を壊してしまったら、金額的に心も壊してしまいかねません。
乾燥剤が手持ちになかったので、代用としてお米を使用しました。

![okome.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/a53a43c7-8ede-2341-654e-a688423e27cb.png)

乾燥力に不安がありますが致し方なしです。。。

## 第三の関門
そう、第三の関門は端子の接触不良です。
スーファミ世代なら赤白黄ケーブルの接触が悪くて映像がブラウン管に映らないなどの症状によく遭遇したと思います。カセットの接触不良で何度も本体と差し直したり、「フー、フー」したことでしょう。

シリアルケーブルはその後、5日ほど放置してから接続を試みました。
しかし、残念ながら状況は変わらずでした。
エラーメッセージをよくみてみると前回と変わっていることに気づきました。
エラーメッセージがそもそもケーブルがつながっていないといったものに変わりました。
状況は悪くなっているように見受けられます。これはやばい。。。

sioconsの正常時の挙動を知りたく、インターネットの海を彷徨い、たしかYoutubeで海外の方がsioconsを使ってバイナリを黒ステにアップロードしている動画を見つけた時にある発見がありました。
sioconsコマンド起動直後に

> Connected CIP

というメッセージが出力されているのです。
私の手元の環境ではそんなメッセージは表示されません。この時点ですでに正常時の挙動ができていないわけです。

私は、初代PS２台と対戦ケーブルを所有していました。
そもそもこの対戦ケーブルの接触のしやすさはどのくらいのものか気になったので、こちらでも試してみました。
しかし、なんど試してみても通信が確立できません。
おそらく接触不良と思われます。
ケーブル端子をすこしずらしてみたりするとつながる気がします。

対戦ケーブルでもかなりの高確率で接触不良がおこるのであれば、シリアルケーブルはなおさらかと思います。
同様にシリアルケーブルの端子部分黒ステ本体に接続してから端子を少しズラしてみて再トライしてみます。

![cip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/ba9580b8-93e2-56eb-d4f1-3f71930ccd05.png)
![cip2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/4c2badc2-183e-1584-f7f8-ffdaec6bb0d3.png)

なんと!
> Connected CIP
> Communication baud rate 9600 bps
> OK

というメッセージが表示されるようになりました...!

しかし、黒ステ側のコンソールでは

> SYNC ERROR(FFFFFFFF)
> ABORT.

と表示されてしまっています。
何度か試してたらsioconsでのアップロード時にバイナリが吐き出されることもありました。
進展はありましたが、この日は夜も遅いので一旦あきらめて翌日、端子を接続し直して、昨日よりもさらに端子をズラすイメージで端子を触ってから、再チャレンジしました。


![success-upload.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/73a59618-d935-3cc4-4ebf-0877469ff0d9.png)

![success-upload-game.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/6e65d95c-fa08-f442-5f71-6d593dc81b88.png)



なんと...バイナリのアップロードができました...!

![PXL_20230730_150221195.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/a26cbed3-5f2a-c221-1fd3-c78140c81c5a.jpeg)
コントローラーのボタンを押すことでボールの数を増やせたり減らしたりできます。
セレクトボタンで元の黒ステ側のコンソール画面に戻ることもできます。
![PXL_20230730_150227523.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2320268/50e5e9ac-2c28-9ff9-f9bf-0cc23e52c90f.jpeg)

黒ステは自作PC横のラックに置いているのですが、
バイナリをアップロードできる状態の端子の接続状態を維持したいので、
もう二度とこのラックから動かしたくありません！




## ここまで
本記事ではここまでです。
1996年頃はCodeWarriorを使ってPlaySationのゲーム開発がされていたようですが、そういった開発環境のセットアップも今からでももしかしたらできるかもしれません。(調べてない)

## 余談
1996年ごろは今ほど自作ゲームは気軽にはできない気がするのですが、
多くの自作ゲームが作られました。
wikipediaにゲーム作品のリストがあります。
https://en.wikipedia.org/wiki/List_of_Net_Yaroze_games
もし、バイナリが配布されているのを見かけたら、
自己責任ですが黒ステにバイナリをアップロードしてゲームを起動してみると遊べるはずです。
Magic Castleは最近公開されたものなので、バイナリは正規の方法で入手できるかもしれません。


## 商標について
- PlayStationは株式会社ソニー・インタラクティブエンタテインメントの商標または登録商標です。