CPUやサウンド等、他を弄りたいのをぐっと我慢。
1.まずは、デバッグメニュー
2.次に画面モード
最低それくらいは、実装しないと。
あーーこんなくだらない事。誰かやってくれないかなぁ。ってのが本心。
こんなのめんどくさいのは誰だって一緒。
そりゃ、生まれて初めてやるんなら嬉々として、好奇心からやるかも知れないけど、
何度もにたような事やるし、所詮土木作業だとすぐに気が付くしね。
で、昔作ったソースの一部カット&ペーストで、チョビット手を加えた。
1.の、デバッグメニュー取り合えず。フレームスキップ0~5まで、の機能を加えた。
現状のデバッグメニューの実装方法ではパフォーマンスに影響が出る可能性があるから、
もちっと何とかするが、取り敢えず動作する。ZIPファイルにREADME00.TXTを書いて入れといたが、
再掲する。
ゲーム中操作
方向≡方向
  スタート
  |  
  △  
□   ○
| ×  
| | |
A B C
Lキー:ミニメニュー切り替え。
Rキー:ミニメニューの値変更。
[start]キー:無効
[select]キー:ファイラーへ戻る。
ファイラー中操作
  終了(プログラムを終了してPSPメニューに戻る)
  |  
  △  
□   ○
  ×  
  | |
  | 決定/ロード(下のフォルダへ移動/カートリッジ読み込み)
  |   
  上のフォルダへ移動
ミニメニュー説明
■FLAME SKIPS:
 何コマ飛ばして誤魔化すか。
 0:誤魔化さない。(最大60fps)書書書書書書書書書書書書書書書書書書書書書
 1:一コマ飛ばし。(最大30fps)書 書 書 書 書 書 書 書 書 書 書
 2:二コマ飛ばし。(最大20fps)書  書  書  書  書  書  書  
 3:三コマ飛ばし。(最大15fps)書   書   書   書   書   書
 4:四コマ飛ばし。(最大12fps)書    書    書    書    書
 5:五コマ飛ばし。(最大10fps)書     書     書     書  
■V-SYNC:
 まだ作ってません。常に無効。
■SCREEN MODE:
 まだ作ってません。常に無効。
フレームスキップというのは、こういう意味だ。
DEGN100で、フレームスキップ1に設定しゲームが60fpsと表示された場合と、
MD022A01で、フレームスキップ1に設定しゲームが30fpsと表示された場合は、
全く同じ速度で動いたという事。
MD022A01は強制的にVSYNCなしなので、DGEN100もVSYNCなしに設定すること。
画面モードもチッチャイのに変更しYMとDACもOFFにする。
フレームスキップには色々我流があるようだが、
これは、MAMEと全く同じ方式の「フレームスキップ」だ。覚えておくと良い。
ただ、パフォマンス表示に関しては、実時間ベースで表示させる為には割り算が入るので、
(MAMEは素直に割り算で表示)割り算嫌いな、管理人は入れたくないだけである。
どうせ後で、拡張するに決まってるんだから、土木工事を進めなくては、いけない。
現状MENU.C==ファイラー
現状MAIN.C==ゲーム中(この辺に無理やり追加。速度無視)
なってるのを、
MENU.C==ファイラー/デバッグメニュー(速度いらん)
MAIN.C==ゲーム中のみ(速度いる)
に分離しなければ、いけない。
そろそろ、御託は飽きてきたんで、作業するか。
そうそう、画面モードも早めになんとかしなくちゃ。
これはSTARTUP.SとPG.Cととにかくその辺もろもろ弄るはずだよな。
メニューなんて、やってもつまんないから、(でも必要なんす)先にそっち進めて、気をまぎらわそ、
どうせ基本的にDGEN100からカット&ペーストで抜いてくるだけだし。(13:37)
で、STARTUP.Sその他もろもろ弄ってコンパイル→実行。
起動に失敗しました。
(80020001)
うふふ。初めて見た、このメッセージ。まあ何とかしなくちゃな。(14:45)
(15:14)どおおおおおしても判らん。xmainを呼ぶまえに、ごちゃごちゃやってるし、
まあちがう所呼んでるあたりも含めて、移植したんだが、どっかでエンバグしたか、
遠くなってしまうと駄目なのかも。悩んでも仕方なさそうなので、13:37時点のソースに
戻る事にした。(はい、管理人の負けでし)(15:18)
全部消してコンパイル→実行。
ふう戻った。嬉しい。なーんか久しぶりにPSPの画面見た気がする。
10年前なら、「500円玉。どぶに落っことして、(500円くらい内心はたいして欲しくないんだけど、
それでも怒られるから)5分ぐらい苦労して、探して、あったー、って感覚」で説明がついた。
んだけど、今の子供にゃ解からん感覚だろな。1万ぐらいなくしても、屁とも思ってない節がある。
まあ子供によりけりだけどさ。怖い人も多いし、さり気に物騒な世の中だよな。あ。いかんいかん、
また無駄口病の発作がぁ。
もう今日寒いから、(キーボード触ると手が凍る)
作業やんなっちゃったよ。
昨日の「MD022A01」と
今日の「MD022A01」と違うものだから、
別館から落として「遅せー」とか言って遊んでてよ。
じゃあね。(15:46)
■終了でハマル。
一体何の事やら、解からない人が多いと思うし。ここから先は多分理解しなくても良い。
「MD022A01」には「△ボタンで終了」って機能があるじゃない。
これのコーディングは結構「めんどくさい」。
最近のPSP関係のプログラムには、「終了機能」はなくて、
[home]キーを押せば、終了可能だ。
何も、めんどい「終了機能」を実装せんでも、システムの終了機能を使えば済む話だ。
しかし管理人ここに気がつかなかった。「MD022A01」つまりお魚さんの奴は古い方式で、
懇切丁寧に終了方法を実装してある。
STARTUP.Sから
初めのスタックに退避させてるレジスタは間違ってるにしても、
pgmainを呼び、初期設定後に、xmain。
これが終わったらPG関係の後始末をして、
またSTARTUP.Sに戻って、
さらに終了処理。
真面目に終了させたいのなら、少しは簡略化出来る所があるが、
殆どこれと同じ事をしなければならない。
一方最近の方式は、「どうせ[home]終了があるから終了は実装しない。」という方針になっていて、
(スレッドの開放に関しては、どおなってるのか知らないが、システムがやってくれるんだろう。多分(?))
STARTUP.Sからxmainを呼ぶだけ。という方式に変わっている。
xmainから無理に戻ろうとしても、死ぬ。
なぜなら、STARTUP.Sに、戻っても終了処理がない。
戻るべき場所にはすでに、プログラムがなく、
データー(スレッド名を区別するラベル"USER_MAIN")が書いてある。
ちゃんちゃん。
大人しく、最近の方式に移行するよ。サイズも小さくて済むしさ。(19:46)