< ホームへ戻る

Neko Project II (NP2) 改変

PC-9801エミュレータ『ねこープロジェクト2』(Neko Project II, NP2)を改変しました。

2020年06月23日 更新

NP2 0.86 kai

irori氏・eagle0wl氏の、Raspberry Pi・RetroPie向けNP2 を0.86化して改善(悪)したものです。

SDL12-kms-dispmanx は不要ですが、libsdl2-dev・libsdl2-ttf-dev・libsdl2-mixer-dev が必要です。

SimK 氏の、Neko Project 21/W も参考にさせて頂きました。

「Raspberry Piで、PC98をサクッと体験出来ればいいじゃない」という軽い目標でやってますが、
実用的な動作が充実してきて、「え、そこまで動くの?」って逆に引いてます。

Windows版はMSVC2019にてビルド出来ます。バイナリは公開しません。

ソースファイル GitHub

CD-ROM動きます。

np2kai_000

Windows 95 OSR1、98 SE、NT4.0WS、2000 SP4(音無し)動きました。
SimK 氏の的確なアドバイスに多謝。m(_ _m)

np2kai_004

BIOSファイル: bios.rom, font.rom(font.bmp), itf.rom, sound.rom, (d8000.rom or bios9821.rom),
2608_bd.wav, 2608_sd.wav, 2608_top.wav, 2608_hh.wav, 2608_tom.wav, 2608_rim.wav (FONT.ROMとFONT.BMPは大文字、他は小文字)

SDL2ポートは、実行形式ファイル(np2kai or np21kai) と同じディレクトリにBIOSファイルを置いて下さい。

SDL2ポートでは、NP2メニューは、F11キーまたはマウスホイールクリックにて表示されます。
FDD/HDDの交換が可能です。

libretroポートは、BIOS用ディレクトリ(RetroArchにて設定)
に「np2kai」ディレクトリを作って、その中にBIOSファイルを置いて下さい。
np2.cfgは、BIOSと同じ場所に作成されます。

libretroポートでは、キーボード操作はlibretroフロントエンドのショートカットとして利用されるため、settings > input > input hotkey > enable hotkeys を設定しましょう。
当方は、右Windowsキー(right GUI key)を割り当てています。
なので、Retroarchを終了するには、右Windowsキー+ESCキーで行います。
ホットキーを無効にするには、retroarch.cfg にて 「input_enable_hotkey = "nul"」とします。(Thanks hasenbanck)

「FDDを2枚入れて起動したい」「HDドライブとCD−ROMドライブにイメージをセットして起動したい」
そんなときは、テキスト形式で.cmdファイルを作成してみてください。

np2kai image1locate/image1.d88 image2locate/image2.d88
イメージファイルの拡張子でFD/HD/CDを判別してマウントします。
2つめがあれば2番めのデバイスにマウントします。

フロッピーのイメージファイルを.m3uファイルに書いておくと、
libretroのディスク交換インターフェイスが使えます。
FDD1/2の交換をしたい場合は、コアメニューで切り替えておく必要があります。
HDDやCDは.m3uに記述しても使えません。

libretroポートでは、NP2メニューは、F12キーまたはマウスホイールクリックまたはL2ボタンにて表示されます。
FDD/HDDの交換が可能です。
また、F11キーでマウスキャプチャ(カーソルの表示/非表示)が可能です。
右スティックでマウス移動、押し込み(R3)で左クリックです。右クリック必要なら後述のJ2Mで。
ジョイパッドをキーにしたりマウスにしたり。(J2K/J2M機能)

CPUクロックやメモリサイズなどのチューニングは、コアのオプションメニューを使います。

見つけたけど実装出来なかったもの。要検討。

fpemul_dosbox.c を含んでいるので、GPLライセンスとなります。

MAME のコードを含んでいるので、GPLライセンスとなります。

開発メモ:

ビデオフィルタについて

ビデオフィルタを実装してみました。単純なもの、複雑なものいろいろありますです。
中でも、「HSVフィルタについて」紹介します。

HSVフィルタは「周囲の似た色と平均値を出す」という処理です。
黒と白同士はまざらない、大きく違う色とも混ざらない、似た色だけ結合します。

HSVは、H(色相・色合い)を360度の円に見立て、S(彩度)、V(明度)で色を決定します。
なので、Hは近く、Sはまあまあ、Vは遠め、までとしておけば、イイカンジに結合してくれると思います。

論より証拠。半径1.5dot(隣のドット)、サンプル数5=5x5、Hd=30、Sd=30、Vd=90、重みなし、
での出力例です。

cfgファイルには vf1_pn_p0=1,6,15,5,30,30,90,0 と設定します。

filter2.png
fila1.png
fila2.png
fila3.png

RetroPieへの導入

eagle0wl 氏の carbon-mod を使って、こんなカンジで導入出来ると思います。

snapshot0.png
snapshot1.png

NP2 0.86のバグ修正

NP2 0.86にてバグがありましたので報告します。

common.h の LOADINTELWORDマクロ など。
a がUINT8型のポインタでないと、予期せぬ値が生成されてしまいます。
UINT8型のポインタへのキャストが必要です。

(a)
↓修正
((UINT8*)(a))

修正すべきマクロは、以下のものです

fmgen 008のバグ修正

fmgenを搭載しましたが、FM音に雑音が入るケースが多くあったようです。

fmgen.cppの343行目、
*p++ = p[-512] / 2;
↓修正
*p = p[-512] / 2;
p++;

1.式処理
2.インクリメント
と実行されることを期待されているかと思いますが、
1.左辺処理(インクリメント)
2.右辺処理
となってしまう処理系があるようです。

fmgen 008のステートセーブ/ロード追加

fmgenにステートセーブ/ロード用のインターフェイスを追加しました。
OPN/OPNA/OPNB/OPMを搭載したエミュで利用出来ると思います。

XXXX_DataSave() : ステートセーブ、XXXX_DataLoad() : ステートロード、です。

fmgen_xxxxdata_size が、各セーブデータサイズです。

Windows NTの動作

rev.7 にてWindows NT 4.0 WorkStationの動作を確認しました。
インストールや起動の際に、ブートメディアを認識できないので、
NP2kaiのコンフィグファイル(np2.cfg または np2rc)の、「WINNTFIX」を「true」にして下さい。

ただし、NT以外のOSを利用する際は、「WINNTFIX」を「false」にして下さい。

ネットワークの利用(Linux編)

rev.7 にてNICを実装しました。(SimK氏、ソース提供ありがとうございます。)
ホストPCにブリッジを生成し、NP2のTAPに接続することで、ネットワーク通信が出来ます。
NICのスペックは以下の通り。

環境設定 (Ubuntu 16.04)

  1. NP2kaiは、SDL2ポートまたはX11ポートを使用する。
  2. NP2kaiのコンフィグファイル(np2.cfg または np2rc)の、「USELGY98」を「true」にする。
  3. ゲストOS(Win95・98SE・NT4.0WS・2000SP4)をインストールして、NICのドライバを入れて認識させる。
    Windows 2000 SP4 では、CDの、VALUEADD\3RDPARTY\DRIVERS.JPN\NEC98\MELCO\LGY98 にドライバが添付されています。
    その他のOSは、ドライバーダウンロード LGY-98 | BUFFALO バッファロー にて入手できます。
  4. /etc/network/interfaces を編集する。
    $ sudo vi /etc/network/interfaces
    
    変更前
    # interfaces(5) file used by ifup(8) and ifdown(8)
    auto lo
    iface lo inet loopback
    
    変更後
    # interfaces(5) file used by ifup(8) and ifdown(8)
    auto lo
    iface lo inet loopback
    
    auto br0
    iface br0 inet dhcp
    bridge_ports enp0s31f6
    bridge_stp off
    bridge_maxwait 0
    bridge_fd 0
    
    ※「enp0s31f6」は環境によって変化します。実際のNICのデバイス名に書き換えてください。
  5. PCを再起動する。
  6. 以下のバッチファイルを、NP2実行ファイルと同じディレクトリに作成する。
    sudo ./np21 &
    sleep 1s
    sudo brctl addif br0 tap0
    sudo ip link set dev tap0 up
    
  7. バッチファイルを実行する。
  8. NP2kaiが起動してOSが立ち上がる。IEを実行してMSNトップページが表示されればOK。
    net.png
    うまく接続されない場合は、NP2kaiを終了してバッチファイルを再実行する。

ネットワークの利用(Windows編)

多分、こちらを参照の事。
Neko Project 21/WのLAN設定 - Neko Project 21/WでWindowsを動かす

(Win2000) Opera@USB 11.64でHTTPSサイトのブラウズ

Windows 2000 SP4でも、付属のブラウザはIE5なので、HTTPSのサイトは見れません。
なので、YahooもGoogleも見れません。

しかし、Opera@USB 11.64(Operaのインストール不要なポータブル版)を使うと、何とか閲覧できました。
非常に鈍重なので、忍耐よりも、むしろ応援の精神でお試しください。
(H.Kさん、情報ありがとうございます。)

以下の作業は、ゲストOS内で行います。メモリは64MB以上。Opera起動まではIE5を使用します。
(NTFSで環境を作ったので、DiskExplorerが使えない状態。)

こちらのサイトから11.64(12はXP以上)をダウンロードします。
http://www.opera-usb.com/downloadold.htm

すると、きっとZIP圧縮ファイルを解凍することになるので、+Lhacaをこちらからダウンロードしてインストールしましょう。
+Lhaca

OperaのZIPファイルを解凍して、おもむろにOperaを起動します。
証明書について英語で警告のウィンドウが表示されますが、すべて「Accept」ボタン(見切れてたら、右下の一番左のボタン)をクリックします。

日本語化は、左上の「Opera」ボタンが押せるようになったら、
「Settings」 → 「Preference」を選択。
「General」タブの「Language」で、「日本語(ja)」(ja_jpではない)を選択し、
「OK」ボタン(見切れてたら、右下の一番左のボタン)をクリックします。

こんな風に、ブラウズ出来ます。

opera.png

WAB (Window Accelerator Boards)

rev.16にて、NP21/W を参考に、WABを実装しました。
通常は、「PC-9821Xe10,Xa7e,Xb10 built-in」を使用して下さい。

OSごとのドライバの導入など、詳しくは NP21/Wのサイト をご参照下さい。

wab.png

参考

なんかくれkai (Please donate to my researching!)

My wish list (AliExpress)
bitFlyer ビットコインを始めるなら安心・安全な取引所で
--> BTC 39Ti3CTg9wuquTXt2ELH32BF1Qj2NQjsja