fMSX98 のパッチ集です。
自己差分プログラムを実行します。
fmsx98 のソースを展開したディレクトリで patch コマンドを実行してパッチをあてます。
例)patch<fmsx.pat
ver1.2k のソースアーカイブには、fmsx\src\pcat\pcatsvga.asm が存在しません。その為に、ダミーのファイルを用意します。と言う訳で、-wide を指定しても画面には何も表示されません。
ソースにパッチをあてただけでは動きませんので、各コンパイルオプションを指定してコンパイルしましょう。
コンパイルオプションを書く場所は、各 makefile の CFLAGS
です。すべての makefile に追加したいパッチのオプションを書けば確実にパッチが有効になりますが、そんなの面倒だって人は、以下の表を参考にして記述してください。○のある makefile にオプションを指定してください。
パッチ | 指定するオプション | ./makefile | ./pc98/makefile | ./pcat/makefile |
---|---|---|---|---|
DEBUG キー入力修正パッチ | -DDEBUG_KEY_PATCH | × | × | ○ |
DEBUG NEG 表示修正パッチ | -DDEBUG_NEG_PATCH | × | ○ | ○ |
interlace 修正パッチ | -DINTERLACE_PATCH | ○ | × | × |
screen3 修正パッチ | -DSCR3_PATCH | × | ○ | ○ |
PCM パッチ | -DPCM_PATCH | ○ | △ | ○ |
SPRITE修正パッチ | -DSPRITE_PATCH | ○ | × | × |
OPL3 修正パッチ | -DOPL3_PATCH | × | × | ○ |
PAC パッチ | -DPAC_PATCH | ○ | × | × |
ADLIB パッチ | -DADLIB_PATCH | × | × | ○ |
MODEX もどき パッチ | -DMODEX_PATCH | × | × | ○ |
このページ上にあるパッチの動作の保証は誰もしてくれません。パッチ後の異常な動作について、オリジナルの作者等に質問等などは行わないようにしてください。
パッチを当てた後、コンパイラのオプションに -DDEBUG_KEY_PATCH
を指定してコンパイルしてください。
DEBUG の g コマンド等でステップ毎に DEBUG 画面に落ちてしまう現象を修正。
常に、F9,F10 キーが押されている状態になっていたため。
パッチを当てた後、コンパイラのオプションに -DDEBUG_NEG_PATCH
を指定してコンパイルしてください。
DEBUG の逆アセンブラで NEG の表示をできるようにします。
名称定義をしていなかった
パッチを当てた後、コンパイラのオプションに -DINTERLACE_PATCH
を指定してコンパイルしてください。
screen5 や 8 で interlace が正常に動作しない点を修正したつもり(pcatsvga.asm が無いので確認してません。98起動するの面倒だし(^^;;)。
アドレス計算のミス
パッチを当てた後、コンパイラのオプションに -DSCR3_PATCH
を指定してコンパイルしてください。
screen3 でパターンジェネレータテーブルを切り換えるプログラムへ対応。
画面関連テーブルの SCREEN3/VDP R#4 のマスクが 00h だったのでパターンジェネレータテーブルアドレスを常に 0000h と認識していたため、正常に表示できない場合があった。
パッチを当てた後、コンパイラのオプションに -DSPRITE_PATCH
を指定してコンパイルしてください。
上方向のクリッピング異常は、line=0; が抜けていた為に起こる現象。横方向のクリッピングは、クリッピングできるようにプログラムされていません(高速化の為?)
パッチを当てた後、コンパイラのオプションに -DPCM_PATCH
を指定してコンパイルしてください。
turboR 互換の PCM に対応します。 AT互換機 + SB Pro な環境のみ対応しています。98 + SB Pro にも対応できるはずですが、DSP の port address が不明なので・・・。 PCM タイミング用のカウンタは適当なので、サンプリングレートは狂います(一応 iperiod を基準にした 15.75kHz のインクリメント値にしてみましたが・・・)。98ならタイムスタンパを使えば正確に出来そう。 2+以下じゃ BIOS も対応していないので、使えない機能ですね(笑)
パッチを当てた後、コンパイラのオプションに -DOPL3_PATCH
を指定してコンパイルしてください。
時々音程が外れる現象を改善します。
OPLL Reg.10h〜18hで指定された F-Number をシフトして溢れた値を OPL3 Reg.B0h〜に設定しているだけ。
パッチを当てた後、コンパイラのオプションに -DPAC_PATCH
を指定してコンパイルしてください。
ダミーの PAC.ROM を用意してください。
起動時に通常のカートリッジの指定と同じ方法で PAC.ROM を読み込むように指定すると、PAC が認識されるはずです。 fMSX98 を終了時に指定された PAC の ROM IMAGE FILE の拡張子を .PAC にしたファイル名で SRAM の内容が保存されます。
バイナリエディタで中を見るとわかりますが、プログラムは何も書かれていません。 PAC を認識させる為の ROM カートリッジのヘッダを記述しているだけです。fMSX98 のプログラム上では、ヘッダが 4Ah,42h('JB') である物を PAC と認識します。 そのうちに、自作のデータ管理プログラムを PAC.ROM に載せる予定はあります(予定は未定です)。
FM-PAC のみ対応している物は 4018h〜 の PAC2 を PAC2OPLL にすると SRAM を使用できるようになる場合があります(英雄伝説等)。プログラムが FM-PAC と認識して何もないエントリをコールする可能性が大きいのでお勧めできませんが・・・。 FM-PAC の ROM IMAGE のヘッダを 4Ah,42h にすると、FM-PAC として使える可能性があります(ってバンク切り換えしなきゃ無理っぽいけど)。 ソースファイル msx.c の FMBIOS.ROM の読み込み部分を変更し、FMBIOS.OBJ の APRLOPLL を PAC2OPLL に変更すると、FM-PAC 相当品(データ管理プログラムは当然ありません)になる可能性があります。
PC110 に載っている音源は SB Pro 互換ではないので fMSX98-AT で音が出ません。
パッチを当てた後、コンパイラのオプションに -DADLIB_PATCH
を指定してコンパイルしてください。
-adlib
と -adlibfixed
と言うオプションが追加されます。-adlib
又は -adlibfixed
を指定して起動すると、音が出るはずです。
-adlibfixed
を指定すると、チャンネル振り分けを固定します。逆に -adlib
を指定した場合は、空いているチャンネルを動的使用します。
SCC を使用するゲームの場合に -adlibfixed
を使えば、(理論上では)パフォーマンスが上がるはずです。
ADLIB チャンネル | MSX 音声 | ||
---|---|---|---|
1 | SCC 1 | OPLL 1 | |
2 | SCC 2 | OPLL 2 | |
3 | SCC 3 | OPLL 3 | |
4 | SCC 4 | OPLL 4 | |
5 | SCC 5 | OPLL 5 | |
6 | PSG 1 | OPLL 6 | |
7 | PSG 2 | OPLL 7 | RHYTHM |
8 | PSG 3 | OPLL 8 | |
9 | PSG NOISE | OPLL 9 |
たとえば、SCC 1 と OPLL 1 は同時に発音できません。先に発音した方が有効になります。
PC110 では fMSX98-AT の SVGA モードがまともに動きません(泣) 320x200dot モードでは、MSX の画面が全部表示できません(泣)
Mode13h に変更後、CRTC レジスタを操作して横のドット数を 272dot、縦のドット数を 240dot に設定しているだけです。横幅を 272dot(256dot+左右ボーダー16dot) に設定したので 1 画面分の VRAM が 64Kbyte 以内に収まり、イメージ転送ルーチンの変更が簡単でした。
パッチを当てた後、コンパイラのオプションに -DMODEX_PATCH
を指定してコンパイルしてください。
-modex
オプションが追加されます。-modex
を指定して起動すると、240line 使用します。左側へよってしまうのは仕様って事にしておいてください(操作方法募集中)。