NesterJ NES Emulator for PSP

■ 概要
ファミコンエミュレータです。NNNesterJのソースをメインに、Nesterコード、
NesterJのコードも参考にして作成しました。NNNの特殊な機能は殆どDROPして
いますが、NNNesterJからの修正コードはそのままにしています。当然ですが、
ターゲットはPSPのファームウェアVer1.00のみです。


■ 使用方法
メモリースティックに /PSP/GAME/NesterJ という形のフォルダを作り、
同封の EBOOT.PBP と famicom.dat を置いてください。次に、実行させたいROM
イメージを好きなフォルダに一つ以上コピーしてください。
ディスクシステムのゲームをするにはDISKSYS.ROMというディスクシステムのBIOS
ファイルが別途必要です。それをEBOOT.PBPと同じ場所においてファイル選択する
と動くはずです。DISKSYS.ROMが認識しているかどうかを確認するにはメニューの
PREFERENCESのCHECK FDS BIOSを選んで「FDS BIOS is correct」と出れば認識
しています。


■ メニュー説明
QUICK SLOT
　　現在のQUICK SLOT番号です。KEY CONFIGのQUICK LOAD/SAVEの保存先番号です。

STATE SAVE
　　現在のエミュレーション状態を保存します。保存スロットは0〜9の10個です。

STATE LOAD
　　保存したエミュレーション状態を呼び出します。現在の状態は破棄されます。

DISK CHANGE
  ディスクシステムのディスクを入れ替えます。(ディスクシステムROM使用時のみ)

PREFERENCES CONFIG
  NesterJの全体的な動作に関する設定を行います。
  ・EXTERNAL ROM DATABASE
    外部ROMデータベースの参照をする(ENABLE)かしない(DISABLE)か設定します。
    通常はENABLEで問題ありません。(設定後、次回ROMロード時より有効)
　・SAVE STATE THUMBNAIL
　　ステートセーブ時にスクリーンショットのサムネイル画像も保存するかどうか
　　を設定します。
  ・SKIP DISK ACCESS
    ディスクシステムのデータアクセス中は画面更新を行わないかどうかの設定を
　　します。
  ・TV MODE
    テレビのモードを設定します。NTSC(59.94FPS)かPAL(49.95FPS)です。通常はAUTO
    で問題ありません。(設定後、次回ROMロード時より有効)
　・RAPID MODE
　　連射回数の設定をします。60FPS動作として、30回/秒、20回/秒、15回/秒、10回/秒
　　の4つを選択できます。
  ・SPEED MODE 1
    SPEED MODE 1 有効時の動作スピードを設定します。単位はFPS。初期値は40FPS
  ・SPEED MODE 2
    SPEED MODE 2 有効時の動作スピードを設定します。単位はFPS。初期値は80FPS
  ・CPU FREQUENCY
　　CPUの動作スピードを設定します。222MHz(標準)から333Mhz(仕様上最大)まで1Mhz単位
　　で設定できます。
  ・SHOW FPS
　　ENABLEにすると画面左上に現在のフレームレートを表示します。
  ・CHECK FDS BIOS
    ディスクシステムのBIOSファイルを検証します。正常(correct)か異常(Incorrect)
    かファイルなし(FILE NOT FOUND)が返ります。

GRAPHIC CONFIG
  NesterJの画像処理に関する設定を行います。
  ・EXTEND SPRITES MODE
    ファミコンのライン上に8スプライト以上処理出来ない制限を無くし、全て描画
    します。有効にすると若干重くなります。
    ファミコン世代の人はDISABLE推奨。自機スプライト見えなくて死んだ懐かしい
    記憶を思い出すことが出来ます。トラウマになってるひとはENABLEで。
  ・BLACK AND WHITE MODE
    画面をモノクロにします。目が疲れている時用？ｗ
　・SCREEN SIZE
　　画面のサイズを選択します。
  ・WAIT VBLANK(VSYNC)
    画面を表示する際にVBRANKを待ってから行うかを設定します。ENABLEにすると
    画面を更新しているところが見えなくなりますがVBRANKを待つ分遅くなります。

SOUND CONFIG
  NesterJのサウンドに関する設定を行います。
  ・SOUND
    サウンドの出力の有無を設定します。OFFにすると若干全体の動作スピードが
    軽くなります。
  ・RECTANGLE 1
    矩形波1出力の有無を設定します。
  ・RECTANGLE 2
    矩形波2出力の有無を設定します。
  ・TRIANGLE
    三角波出力の有無を設定します。
  ・NOISE
    ノイズ出力の有無を設定します。
  ・DPCM
    DPCM出力の有無を設定します。
  ・EXTRA CHANNEL
    拡張音源出力の有無を設定します。ディスクシステムのソフトの
　　一部や、ROMカセットの一部で使用している拡張音源には再現させる
　　のにすごく処理の重いものがあります。動作が遅い場合はこれを
　　DISABLEにすると良いでしょう。
　・SAMPLING RATE
　　音声のサンプリング出力を設定します。44100、22050、11025の3種
　　類選択可能です。数字が多いほど音質は良くなりますがサウンド処理
　　に時間が掛かります。

MENU COLOR CONFIG
  メニューの色や背景に関しての設定を行います。詳細説明は省略します。

KEY CONFIG
  ゲーム中のキーの割り当てを行います。
  ・A BUTTON
    Aボタンに相当するボタン操作を設定します。デフォルトは○ボタン
  ・B BUTTON
    Bボタンに相当するボタン操作を設定します。デフォルトは×ボタン
  ・A BUTTON(RAPID)
    Aボタンの連射に相当するボタン操作を設定します。デフォルトは△ボタン
    連射間隔はフレーム毎に切り替えているだけですので、フレームスキップ
    しまくってると連射にならないです。
  ・B BUTTON(RAPID)
    Bボタンの連射に相当するボタン操作を設定します。デフォルトは□ボタン
    連射間隔はフレーム毎に切り替えているだけですので、フレームスキップ
    しまくってると連射にならないです。
  ・SELECT BUTTON
    セレクトボタンに相当するボタン操作を設定します。デフォルトはSELECT
  ・START BUTTON
    スタートボタンに相当するボタン操作を設定します。デフォルトはSTART
  ・MENU BUTTON
    NesterJメニュー呼び出しに相当するボタン操作を設定します。デフォルトはL
　・PLAYER2 MIC
　　2コントローラのマイク相当するボタン操作を設定します。デフォルトは未定義
  ・SPEED MODE 1
    PREFERENCES CONFIGで設定したFPSで動作します。デフォルトは未定義
  ・SPEED MODE 2
    PREFERENCES CONFIGで設定したFPSで動作します。デフォルトは未定義
  ・SOUND ON/OFF
    サウンドのON/OFFの切り替えに相当するボタン操作を設定します。
    デフォルトは未定義
  ・SCREEN SIZE
　　表示する画面のサイズを変更します。デフォルトは未定義
　・QUICK SAVE
　　STATE SLOTで設定したスロットにセーブするボタン操作を設定します。
　　デフォルトは未定義
　・QUICK LOAD
　　STATE SLOTで設定したスロットにロードするボタン操作を設定します。
　　デフォルトは未定義
　・STATE SLOT
　　QUICK SAVE/LOADで使用するスロットを設定するボタン操作を設定します。
　　デフォルトは未定義
  ・AnalogPad to D-Pad
    アナログパッドの操作をデジタルパッドの操作に置き換えるのか設定します。
    デフォルトはON


  RINと内部コード的にもほぼ同じメニューなので、MENU.BMPを同じフォルダに
置くと背景画像がつきます。標準画像添付済


■バグ報告方法
まず、NNNesterJで動かないものはこちらでも動きません(当然ですが)。
機能を削ってるので、特殊なコントローラが必要なものは対応できません。
NNNesterJ で動いて NesterJ for PSP で動かないものがありましたら、以下の情報を
つけて報告していただけると原因を突き止めやすいです。
逆にいうと以下の情報がないと調査が出来ずに途方に暮れます…

※現状は必ず設定をデフォルト状態での確認をお願いいたします。デフォルトに戻す
  には NESTERJ.CFG を削除すると初期状態に戻ります。

・タイトル
・マッパー番号、CRC等のデータ(NNNesterJのメニュー [Help]->[ROMinfo] で出た内容)
・どのように違うのか
  (例：背景がおかしくなる。キャラがおかしい。○○のところでPSP版が止まる(PSP操作不能)、
  ○○のところでPSP版が止まる(メニュー表示やROM切り替えはできる)等)
・他なにか気になる事
  些細なことでも構いません。それが解決の糸口になる可能性がありますので。

報告は http://jbbs.livedoor.jp/game/22862/ の NesterJ for PSP のデバッグ報告専用
スレ内で受け付けております。
-----------報告テンプレ-----------------------------------------------------
タイトル：たけしの挑戦状
ROM情報：Mapper [ x ], PROM xxKB, CROM xxKB, FLAG xxxx, PROM CRC 0xXXXXXXXXX, ROM CRC 0xXXXXXXXX
違い：PSP版だと社長を殴った時にキャラの表示がバグります。ゲーム自体は動いてます。
その他：PSP版だと背景も一部表示がバグってます。伝説のクソゲーですが調査ヨロシク
----------------------------------------------------------------------------
尚、報告をした方は改善された時も一言宜しくお願いします。報告のみだと直ったのか
分からないので不安になります^^;。
また、追跡調査も歓迎です。サウンドをDISABLEにしたら動いた等も原因の切り分けに
なるので宜しくお願いいたします。

NNNesterJの入手先はこちらです。 http://www.emulation9.com/nnnesterj/


■ 免責
自己責任で使用してください。配布自由。


■ 謝辞
NNNesterJ、NesterJ、uoNester、そして本家のNesterの開発チーム。バグ報告者の
方々、RINの開発者のみらきちさん、RIN開発有志の方々、コード参考になりました。
その他の大勢の方々、ありがとうございます。
開発のエナジーはゲームセンターCXから戴いています。
(http://www.fujitv.co.jp/cs/gamecenter/index2.html)最高の番組だぁ！


■ フォントについて
このアプリには http://hp.vector.co.jp/authors/VA013391/fonts/
で配布されているビットマップフォントである「ナガ10」が組み込まれています。


履歴
2005/07/02 v1.07 ファイル選択時に条件によりハングアップする問題修正
		 "WAIT VBRANK START"から "WAIT VBRANK(VSYNC)"に名称変更

2005/06/28 v1.06 チートGame Genieに対応(メニュー項目に追加)使い方は直感で^^;
		 キー入力関連の問題を修正
		 サウンド処理を調整しサウンド処理を均等化になるように変更
		 (この変更により拡張音源を使ってないROMの殆どが333MHz動作時で
		  VBrank有効、サウンド44.1K、フルスクリーンで60FPS動作します)

2005/06/24 v1.05 Sound処理を擬似MonoからMonoに変更 adviced by "e"
		 Key入力、VBrankの処理変更による速度改善
		 SPEED MODEトグル処理を選択可能にした(Preferences部)
		 キーアサインによるバッテリー表示 by smiths

2005/06/20 v1.04 ファイル選択のソート処理改善
		 SPEED MODEを少し押すとトグルになるように変更 by Mario
		 ファイルI/O、メニューの細かい修正

2005/06/18 v1.03 PPUの処理改善(２〜４割高速化)
		 SCREEN SIZE にx1.5 [4:2.9166] (cropped)を追加 by YASIT
		 "x1.5(filtered)" の名称を "x1.5 [4:2.833]"に変更

2005/06/15 v1.02 PPU(画像処理チップエミュ)の処理改善(１〜２割高速化)
		 SCREEN SIZE にx1.5(filtered)を追加 by YASIT

2005/06/13 v1.01 CPUの周波数設定追加。222〜333Mhzまで自由設定(Preferences部)
		 最後に選択したROMのあったフォルダを記憶するように変更
		 メニューの改善

2005/06/12 v1.00 QUICK SAVE時に稀に操作続行不能になる問題修正
		 QUICK SAVE/LOAD時の操作改善
		 画面サイズを前よりマシな設定に改善(Scanlineは目が痛くなるので廃止)
		 アセンブラ使用による描画速度向上(NesterJ初のasm導入ｗ)
		 FPS表示設定追加(Preferences部)

2005/06/12 v0.97 エミュレーション精度を128倍向上
		 メニューのQUICK SLOT周り改善

2005/06/11 v0.96 QUICK SAVE時エミュレーションを一時停止するよう修正
		 メニューの操作性向上修正
		 サウンド周波数変更時EXTRA SOUNDの周波数が異常になる問題修正
		 連射速度の設定(30,20,15,10の4種)追加(Preferences部)

2005/06/10 v0.95 パレット管理方法変更による速度改善
		 どこでもセーブ＆ロード機能実装(各0〜9の10個)
		 どこでもセーブ＆ロードのサムネイル機能実装(PSPオリジナル機能)
		 サムネイル保存可否設定実装(Preferences部)
		 画面サイズ変更の口実装(現在テキトーな設定がある)
		 サウンド周波数変更機能実装
		 PLAYER2 マイクボタン実装
		 KEY CONFIGの未実装部実装
		 連射処理の改善(NTSCで秒間30連射します)

2005/06/08 v0.84 マッパー5,34修正
		 マッパー9PPU処理部変更
		 (PSP&APU側)サウンド部コード改善(若干速度アップ)
		 目安としてFPS表示

2005/06/06 v0.83 ディスクシステムBIOSチェック機能追加
		 稀にディスクシステムが動かない問題修正
		 特定のソフトでハングアップする問題修正

2005/06/05 v0.82 ディスクシステムディスク入れ替え機能実装
		 稀にROM読み込みに失敗してしまう問題修正
		 設定ロード関連のバグ修正
		 CONFIGメニュー周りの操作向上の修正
		 MENU.BMP標準添付
		 デバッグ表示を左端に移動

2005/06/05 v0.81 サウンド初期化周り修正
		 PPU(画像処理チップエミュ)のPSPでは不要な処理カット
		 終了時の処理に問題のあるパスがあったので修正
		 VBRANK WAIT選択メニュー追加(Graphics部)

2005/06/04 v0.80 マッパー5,9,10修正
		 バッテリーバックアップROMのセーブ/ロード対応
		 Unzip新バージョンに差し替え
		 外部ROMDB参照設定実装
		 ディスクアクセススキップ設定実装
		 TVモード設定実装
		 スピードモード(2種)実装
		 拡張スプライト設定実装
		 白黒モード実装
		 サウンドON/OFF機能実装(各パート毎のON/OFF対応)
		 連射機能実装
		 設定の保存(するの忘れてました^^; )

2005/06/03 v0.71 一部マッパー不具合修正
		 ROMによって動作スピードがおかしくなる問題修正
		 外部データベース参照の実装

2005/06/01 v0.70 音関連の修正
		 自動速度調整
		 ディスクシステムの調整
		 Unzip対応

2005/05/31 v0.50 音対応(不完全だけど...)
		 ディスクシステム対応(要BIOS、コード上で確認したのみ)
		 CPUメモリ間の若干の高速化
		 メニューからのリセット対応

2005/05/30  v0.01 とりあえずPSP上で動いたので公開

------------------------------
 ruka
http://rukapsp.hp.infoseek.co.jp/
------------------------------
