Neko Project 21/Wとその他色々を公開しています。
Neko Project 21/Wは本家Neko Project 21をベースとしてPC-98中期~末期(1993年頃~)のエミュレーションも出来るように色々と機能追加したでものです。
このエミュレータはWindows2000(SP4 SRP1v2必須)以降のホストでのみ実行できます。Linux等では実行できません。非Windows環境の場合はAZO氏のNeko Project II (NP2) 改変を使うとほぼ同等の機能が使えます。
※ステートセーブ・レジュームの互換性はバージョンアップの際に無くなる場合がありますのでご注意ください
※初めて使用される場合はページ下部の注意事項もご覧下さい
エミュレータだけでなく実機でも使えます。
N88-BASICで高速フーリエ変換をするプログラムです。 そんなに速くない代わりに機械語なしで動きます。
ほぼ下記のC言語ソースの移植ですので、私は権利主張いたしません。制限無く自由に使って頂いて構いません。
とは言え、今更BASICで何かすることもないと思いますが・・・
移植元→FFT (高速フーリエ・コサイン・サイン変換) の概略と設計法
SL9821にNeko Project 21/WのLGY-98とCL-GD5430を無理やりくっつけてみた試作品です。
バージョンがかなり古いので注意。
本家Neko Project IIと同じく、Neko Project 21/WもBIOSがなくてもそれなりに動くように作られています。
BIOSがない場合の制限事項は以下の通りです。逆に言えばこれ以外の制限はほぼありません。
なお、ITF.ROMは必要ありません(使用しません)。他、IDE.ROM等は非推奨のため用意する必要はありません。
機種依存系のフラグは全てNeko Project 21/Wが修正しますので、よほど特殊でない限りはどんな機種から取ってきても問題ないはずです。
Neko Project 21/Wのメモリマップはやや特殊ですので、UMBの設定の際はご注意下さい。 実機でチューニングしたものを持ってきてもそのままでは動かないと思います。
手動で設定するのが面倒な場合はHIMEM+EMM386やLEMMにしておけば自動でそれなりに設定してくれます。
使用機器 | アドレス | 備考 |
---|---|---|
SASI | D0000h~D0FFFh | SASI互換HDDをIDE#0, IDE#1に接続した場合のみ使用されます |
SCSI | D2000h~D5FFFh | SCSIを使用していない場合は空きになります |
IDE | D8000h~DBFFFh | rev69以降のエミュレーションIDE BIOSでは使用されません(実機IDE BIOS使用時のみ占有)。非公開機能で変更可能(付属ヘルプ参照のこと) |
NVL.DLLを用意するとNeko Project 21/Wで追加のディスクイメージが読めるようになります。NVL.DLLについては「Neko Project 21/W(np21w, ねこープロジェクト21/W)用のVirtualPC等イメージ使用ライブラリ」で検索してください(ディスクイメージエディタのNDと同じサイトです)。ページにはビルド手順が書かれていますが、現在のバージョンでは既に取り込まれていますので変更用ファイルの中のNVL.DLLだけを用意すればOKです。
追加サポートされる主要なイメージ形式は以下の通りです。
Neko Project 21/Wの大半のコードは修正BSDライセンスですが、以下のファイルは移植のためライセンスが異なっています。これらを含めてコンパイルすると全体としてのライセンスが変わりますのでご注意ください。
ファイル | ライセンス | 除外方法 |
---|---|---|
cirrus_vga*.* lgy98*.* | MIT | SUPPORT_CL_GD5430とSUPPORT_LGY98をプリプロセッサ定義から削除する |
fpemul_dosbox.c fpemul_dosbox2.c | GPL | fpemul_dosbox.c, fpemul_dosbox2.cをコンパイルから除外する |
fpemul_softfloat.c | 修正BSD | SUPPORT_FPU_SOFTFLOATをプリプロセッサ定義から削除し、fpemul_softfloat.cとsoftfloat/*.*を除外する |
fpu/softfloat/*.* | Readme参照 修正BSD風味 | SUPPORT_FPU_SOFTFLOATをプリプロセッサ定義から削除し、fpemul_softfloat.cとsoftfloat/*.*を除外する |
/sound/fmgen/*.* | Readme参照 | SUPPORT_FMGENをプリプロセッサ定義から削除し、/sound/fmgen/*.*を除外する |
/sound/mame/*.* | GPLv2 | USE_MAMEをプリプロセッサ定義から削除し、/sound/mame/*.*を除外する |
ファイル | ライセンス | 除外方法 |
---|---|---|
cirrus_vga*.* lgy98*.* | MIT | SUPPORT_CL_GD5430とSUPPORT_LGY98をプリプロセッサ定義から削除する |
fpemul_dosbox.c fpemul_dosbox2.c fpemul_softfloat.c | GPL | fpemul_dosbox.c, fpemul_dosbox2.c, fpemul_softfloat.cをコンパイルから除外する(Berkeley SoftFloatは本来別のライセンスですがfpemul_softfloat.cだけはDOSBox由来のコードを含むためGPLです) |
fpu/softfloat/*.* | Readme参照 | SUPPORT_FPU_SOFTFLOATをプリプロセッサ定義から削除し、softfloat/*.*を除外する |
/sound/fmgen/*.* | Readme参照 | SUPPORT_FMGENをプリプロセッサ定義から削除し、/sound/fmgen/*.*を除外する |
/sound/mame/*.* | GPLv2 | USE_MAMEをプリプロセッサ定義から削除し、/sound/mame/*.*を除外する |
Visual Studio プロジェクトはwin9x\np2vs2010.slnとwin9x\np2vs2019.slnしかメンテナンスされていません。 また、最近のバージョンではDebugビルドもちゃんと通るようにしたつもりですが、保証はしません。 基本的にReleaseビルドのみ可です。Debugで通したい場合はReleaseの設定値を適当に移植してください。
Releaseビルドではデバッガで変数の中身を覗くことはできませんが、変数を覗きたいファイルの最適化を無効にすれば覗けるようになります。 面倒な人はプロジェクト全体で最適化を無効にしても構いませんが、かなりパフォーマンスが落ちるので注意してください。
コードにSetWindowsHookExを使ったグローバルキーフックが含まれているため、デバッガで停止中にキー入力をすると数秒フリーズします。 これを避けたい場合はHOOK_SYSKEYをプリプロセッサ定義から削除してください。
INIファイルの[NekoProject21](または[NekoProjectII])セクションにUSETHOOK=trueを追記すると、テキストフック用の機能が有効になります。 パフォーマンスに悪影響があるので使わない時は無効にしてください。
具体的には、2バイト文字を読み取る際にlstrlenW, lstrlenA, CharNextAをコールし、フックプログラムがこれをキャプチャできるようにします。 ただし、これらの関数がコールされる場所は他にもあります。正しいフック対象の関数は実際に文字列を表示させて探してください。
Textractorというソフトウェアを使用する場合は、H-codeなるものを使用しなければならないかも知れません。
/HS4@0:kernel32.dll:lstrlenA
/HQ4@0:kernel32.dll:lstrlenW