#2お魚さんにデバッグ機能をつけなくちゃ。 | //www.旧型、PSP開発幼稚園.game.jp/(本館)

#2お魚さんにデバッグ機能をつけなくちゃ。

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)