MZ-800エミュレータ作者のMichal Hucikさんから連絡をいただき、MZ-700のROMを使う方法を教えてもらいました。(MZ-700 NEW MONITOR は動作しませんでした。実機のROMイメージが必要です。)
最初に、最新版ソースがsvnにあるとのことなのでこちらから取得。
svn://svn.code.sf.net/p/mz800emu/code/mz800emu-code
この時点で一回コンパイルして、動作することを確認しておきましょう。
(1)MZ-800のROMイメージを空イメージで作成した c ファイル(ROM_EMPTY_MZ800.c)を用意する。
src/memory/ROM/ROM_MZ800.c の内容を、全列
1 | 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, |
にしたものです。
(2)MZ-700のROMイメージの c ファイル(ROM_MZ700_JP.c)を用意する。
ROM_MZ700.cの内容を、日本版ROMの内容で置き換えたものです。
日本版ROMイメージをPocketCHIPに入れて、hexdumpでテキストファイルに書き出すといいでしょう。
1 | $ hexdump -v -e " 16/1 \"0x%02X, \" \"\n\"" ROM_MZ700_JP.ROM > ROM_MZ700_JP.ROM.txt |
こういう感じで書き出せると思います。
1 2 | 0xC3, 0x4A, 0x00, 0xC3, 0xE6, 0x07, 0xC3, 0x0E, 0x09, 0xC3, 0x18, 0x09, 0xC3, 0x20, 0x09, 0xC3, 0x24, 0x09, 0xC3, 0x35, 0x09, 0xC3, 0x93, 0x08, 0xC3, 0xA1, 0x08, 0xC3, 0xBD, 0x08, 0xC3, 0x32, |
(3)上記ROMイメージのファイルをプロジェクトに追加する。
nbproject/Makefile-Release-Linux.mk を書き換えます。
[ROM_MZ700]で検索して、同じ内容を[ROM_EMPTY_MZ800][ROM_MZ700_JP]それぞれに作ります。
OBJECTFILES のところと、各ファイルのビルドのところの2か所です。
(4)プログラムソースの修正
・src/memory/ROM/rom.h に定義を加える。
1 2 | extern const Z80EX_BYTE c_ROM_MZ700_JP []; extern const Z80EX_BYTE c_ROM_EMPTY_MZ800 []; |
・src/memory/memory.c の memory_reset() 処理を書き換える。
1 2 3 4 5 6 | void memory_reset ( void ) { //g_memory.map = MEMORY_MAP_FLAG_ROM_0000 | MEMORY_MAP_FLAG_ROM_1000 | MEMORY_MAP_FLAG_ROM_E000; g_memory.map = MEMORY_MAP_FLAG_ROM_0000 | MEMORY_MAP_FLAG_ROM_E000; /* CG-RAM is still rewritable! */ memcpy ( g_memoryVRAM_I, g_rom.cgrom, MEMORY_SIZE_ROM_CGROM ); } |
・src/memory/ROM/rom.c の初期化処理を書き換える。(64行目)
日本語表示のためCGROMに「c_ROM_WILLY_jap_CGROM」を指定します。
1 2 3 | case ROMTYPE_STANDARD: // rom_install_predefined ( c_ROM_MZ700, c_ROM_CGROM, c_ROM_MZ800 ); rom_install_predefined ( c_ROM_MZ700_JP, c_ROM_WILLY_jap_CGROM, c_ROM_EMPTY_MZ800 ); |
これでコンパイル/実行すると…
モニター 1Z-009 ですー。(これはMZ-1500のROMだったので1Z-009B)
WonderHouseも、MZ-700モードでひらがな日本語表示。
この前に行ったドットバイドット修正も入れてみます。最新版だとちょっとソース内容が変わってますが、対象ソースは変わらず、同じ修正でいけました。
くっきり!
いいですねー。
あとは、なるべく高速化になるように、ソースのデバッグフラグをOFFにして、サウンドもUnableにしました。
src/mz800emu_cfg.h
1 2 | //#define MZ800EMU_CFG_DEBUGGER_ENABLED //コメント化 #define MZ800EMU_CFG_AUDIO_DISABLED //有効化 |
デフォルトでCPU MAX SPEEDをONにしました。
src/mz800.c
1 2 3 | //初期値にMAXを設定 //mz800_switch_emulation_speed ( MZ800_EMULATION_SPEED_NORMAL ); mz800_switch_emulation_speed ( MZ800_EMULATION_SPEED_MAX ); |
これで、キー入力は少々もたつきますが、アドベンチャーゲームなら、なんとかプレイできなくもないかなー、ぐらい。
ヘビくんとご対面。(キーボードから「?」が入力できなくて、この後ヘビに食べられた。)