WonderWitchを久々に触ってみた

WonderWitch(ワンダーウィッチ)」を久々に触ってみました。WonderWitchは発売から20年以上が経過していて、現在はそのままでは動作しませんが、少しの工夫で動くようになります。 

f:id:nicotakuya:20210507102837j:plain

おそらく最古のワンダーウィッチのチラシ

「WonderWitch」は2000年に発売したバンダイ公式のワンダースワン用の開発キットです。ゲーム機用の開発キットといえば、だいたいは高額で企業向けなものですが、WonderWitchの場合は低価格で一般用として販売されたことが特徴です。当時としては画期的な試みでした。

f:id:nicotakuya:20210510101419j:plain

WonderWitchの箱の中身

f:id:nicotakuya:20210507152043j:plain

WonderWitch専用カートリッジ

専用カートリッジはSRAMやRTCを内蔵していたり、システム(FreyaOS/BIOS)の更新機能があったり、恵梨沙フォントが搭載されていたりと、高度な技術を有していました。企画と開発はQute。発売当時の価格は17,640円(税込)。この他にコンパイラを取り除いて価格を抑えたWonderWitchプレーヤーや専用カートリッジ単体が販売されました。

 

f:id:nicotakuya:20210508003940j:plain

WonderWitchのタイトル画面

f:id:nicotakuya:20210507151033p:plain

DicingKnightが14万円(駿河屋)

f:id:nicotakuya:20210514175228p:plain

ジャッジメントシルバーソードが33万円(ネットモール)

ちなみにWonderWitchのコンテストでグランプリを受賞した「ジャッジメントシルバーソード」や「DicingKnight(だんしんぐないと)」は、のちに商品化されて、現在はプレミアソフトとなっています。

 

話を戻します。

WonderWitchでプログラムを作る流れは次の通りです。

ソースファイル(c)

 ↓lcc86でコンパイル

オブジェクトファイル(obj)

 ↓mkfentでバイナリ化

バイナリファイル(fx)

 

この一連の処理(ビルド)はkmmake(make)というツールで行います。ビルドの手順はmakefileに記述します。

f:id:nicotakuya:20210507103056p:plain

DOS系プログラムが動かない

WonderWitchのコンパイラは現在のWindowsでは動きません。原因はコンパイラなどがDOSプログラムであるためです。しばらく使っていなかったので、Windowsのどのバージョンで動かなくなったのか理解していません。

たとえば、kmmakeを実行しようとすると、「このアプリはお使いのPCでは実行できません」または「~は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」というエラーメッセージが表示されてしまいます。

デフォルトでは開発キットは「C:¥WWitch」に存在します。自分の場合、Cドライブの直下には置きたくないので、Gドライブにして、フォルダ名を「G:¥ww¥~」に変更しました。これは好みに応じて直しましょう。

対策したのは以下の4点。

 

f:id:nicotakuya:20210507130051p:plain

MSDOS Player(msdos.exe)を置く

(対策その1)

MSDOS Player」を使ってDOSプログラムを動かします。MSDOS PlayerはフリーソフトDOSプログラムのエミュレータです。

MS-DOS Player for Win32-x64 謎WIPページ

 MSDOS Playermsdos.exe」を開発キットの存在する階層(sampleフォルダの階層)に置きます

 

f:id:nicotakuya:20210507103601p:plain

PATHを修正

(対策その2)

「lcc86ww¥bin16」フォルダにある「_lcc86ww」をテキストエディタで開いて、「C:¥WWitch」の5か所のパスを修正します。

「C:¥WWitch」の場所を変えていない場合、修正は不要です。

 

 

f:id:nicotakuya:20210516160346p:plain

ファイル名を変更

(対策その3)

「lcc86ww¥bin16」フォルダにある「mkfent16.exe」のファイル名を変更します。

「mkfent16.exe」 → 「mkfent.exe」

 

この逆の方法として、テキストエディタでメイクファイル「sample¥makefile.inc」の中身を書き換えてもいいです(「mkfent」→「mkfent16」に変更)。

 

f:id:nicotakuya:20210507124548p:plain

ビルド用バッチファイル

(対策その4)

最後にビルド用のバッチファイル「_build.bat」を作ります。

ここでは例としてサンプルの「sample¥hello」をビルドします。

「hello.c」はHello Worldを表示するだけのシンプルなプログラムです。

 

「_build.bat」の中身は以下の通りです。 

set MSDOS_PATH=G:¥ww¥lsic86ww¥bin16;G:¥ww¥bin16;
Set TZ = JST - 9
..¥..¥msdos.exe kmmake.exe
pause

 

kmmakeを実行するための命令を記述しています。

パスは「MSDOS_PATH」という環境変数で指定するようです。 

MSDOS Playerは16bitのDOSプログラムしか実行できない(「This program cannot be run in DOS mode.」というエラーが出る)ので、パスは「bin」ではなく「bin16」を指定します。

 

f:id:nicotakuya:20210507103754p:plain

ビルドに成功

(ビルド) 

「_build.bat」を実行して、ビルドします。

kmmakeが呼び出され、makefileが参照されて、lcc86やmkfentが実行されます。

最終的にバイナリファイルの「hello.fx」が 出力されたら成功です。

 

 (実行)

あとは専用の通信ケーブルを使ってPCとワンダースワンと接続して、

通信ソフトの「TransMagic」を立ち上げます。TransMagic.exeはbinフォルダにあります。

「hello.fx」を専用カートリッジに転送すれば、ワンダースワンで実行することができます

f:id:nicotakuya:20210507204323p:plain

MiracleMageで「hello.fx」を実行

こちらは「MiracleMage」というWonderWitchエミュレータで実行した例です(Tomoyuki 'ZRY' Nakanoさん作)。WonderWitchの挙動をエミュレーションしています。ワンダースワンエミュレータではありません。

 

f:id:nicotakuya:20210508090736j:plain

カートリッジの電池が切れている場合

f:id:nicotakuya:20210508003734j:plain

カートリッジの電池交換

あと、実機で動かす場合ですが、カートリッジの電池が切れていると正常に起動しません。トルクスドライバーでカートリッジのガワを開けて、リチウムコイン電池を交換します。CR1616が使われています。極性を間違えないようにしましょう。CR1616はヨドバシで200円で売ってます。

 

f:id:nicotakuya:20210509021453j:plain

hello.fxの実行結果

補足的な情報

nicotakuya.hatenablog.com