#01 PG お馬さん。立たない。(2006-03/05) | //www.旧型、PSP開発幼稚園.game.jp/(本館)

#01 PG お馬さん。立たない。(2006-03/05)

#01 PG お馬さん。立たない。(ちなみに第2回目)(2006-03/05)

■管理人。コツコツ、コツコツ、コツコツ、コツコツ、ゲームもしながら、コツコツ、コツコツ、コツコツ、
お馬ちゃんの世話も、暇したらしてた。

サンダーフォースⅢは、ザリガニがつおいし、サンダーフォースⅣはMD022でFSKIP1で、
スタートボタン一回押しで、ゆっくりだけど、まったりなら、遊べん事も、ある。(かも?)

そうそう「アウトラン」遊んでくれた?やっぱあれぐらいの速度がなくちゃMDらしさが出ない。 DGEN100A19でFSKIP2、5512の事。 そうそう、お馬さん。殺しに殺しまくって、ついにEBOOT.PBPになった。 サイズは1781[kB]。さっそくPSPに持ってって、実行。 ながーーーーながメモカ読んでたから、「これはもしかして」と期待させたけど。 起動に失敗しました。 (80020001) だって。
また地道に世話するよ。 (お腹減った。おひる。11:59)
■お馬さんSTARTUP.Sを整理してみた。使わない関数をSTUBしないでコメントアウトするだけの作業だ。 EBOOT.PBPが、1781[kB]→1765[kB]になった。 PSPにもってって実行。 さっきと、動作が違う。 さっきは、 A. 長々メモカ読む(DGEN100A19の立ち上がり時間より少し長い)(点滅) B. 少し休む(DGEN100A19の立ち上がり時間の2/3グライの時間)(消える) C. 長々メモカ読む(A.)と同じグライの時間。(点滅) D. 起動に失敗しました。(80020001)→Xボタンでメニューに戻れる。(消える) だったのに。今回は、 A. 少しメモカ読む。(点滅) B. 微妙にメモカ読む。(長く光る) C. そのままおやすみなさい。)→電源スイッチ長押しの強制終了しか受け付けない。([HOME]終了など出来ない)(消える) となった。うーん、もすこし弄ってみるか。(17:34)
■上記のSTARTUP.Sは少しSTUBの位置を間違えたりして、エンバグしてた部分があった。 だがこれを修正しても、起動しない。 DGENのSTARTUP.Sをリンクさせたり、いろいろやってみたが駄目。 管理人の考えなのだが、思うに「起動に失敗しました。(80020001)」が出る動作より、 「電源スイッチ長押しの強制終了しか受け付けない」動作の方が、 起動する為には、「正常動作」に近いんじゃないか? と思う。 使いもしない余計な関数を大量にSTUBすると、EBOOT.PBPがでかいサイズのプログラムは、 それだけで起動しない(「起動に失敗しました。(80020001)」が出る)んじゃないか? しかし、使わない関数はすべてSTUBしない方針では、別種の問題が発生する。 sceのライブラリ関数の中には、(多分Power系の)特定の関数は、他の関数がSTUBされていることが、 前提でSTUBしても良い。というものがあるみたいだ。つまり「その」関数は、ユーザープログラムが、 直接コールはしないが、sceのライブラリ関数が間接的にコールして使う。その時に、間接的に コールして使いたい関数がユーザープログラムでSTUBされていないと、動作がおかしくなるみたい。 だから、削りすぎも良くない。バッテリー関係の関数が特に良く判らん。他の系統も 「何処が踏み石なのか判らん」から、結局、試行錯誤に頼っているのが現状だ。 だからDGE100A20とMD022A08のSTARTUP.Sは違うんだよ。いづれ同じになると思うが。
これはこれで(ハングる方)良し。として、先にxmainを見直した方が良いかも知れない。 xmainは無限ループでダミーとし、[HOME]終了出来なければそもそも、根本的におかしいのだから。 まず第一に[HOME]終了のみ出来る様に、改造しなければいけない。 これがきちんと出来なければ、何も出来ない。しかしサイズの問題で、既にここが厳しいのかも知れん。 とにかくやってみよう。(19:28)
■ int xmain(int argc, char *argv) { pgInit(); //画面やオーディオの初期化。 SetupCallbacks(); //ここで[HOME]終了の関数を登録。 while(1){ ;} // HOLD UP(手は上げなくていいんだよ) return 0; //dummyこれはintって書いてあるから、なんか書かないとWARNINGになるため。本当はvoid } //int xmain(int argc, char *argv[]) int z_xmain(int argc, char *argv)//本来のxmainはリンクさせておきたい(実験だから) {
こういう風にして、実験してみた。C言語の常識として、ここは int xmain(int argc, char *argv[]) の方が正しいと思うし、恐らく本当は、 int xmain(int argc, char **argv) だろう。だが、DGENも、MDPもこれで動いているし、取り敢えず踏襲した。 決して知らない訳ではないので、お間違えなく。 さて、これでも動かない。 少し、HOME終了するだけの別のプログラムを作って、比較検討してみよう。 (19:54)
■上記と同じxmainを実際に小さなプログラムでPSPで実行し動かしてみた。 [HOME]でメニューがでるが、「しばらくお待ちください」で終了できない。そこで、 int xmain(void)//さすがになんでもいいだろ。 { pgInit(); //画面やオーディオの初期化。 SetupCallbacks(); //ここで[HOME]終了の関数を登録。 for(;;) { pgScreenFlipV(); //VSYNC取らないとOSが割り込めない。(多分ね) } return 0; // でも、dummy } と、してみた。これはOKだった。きちんと[HOME]終了出来る。やはりサイズがデカイと駄目なのかな。 何処かエンバグしてないか詳細に検討してみよう。(20:52)


■上で「アウトラン」書いたから、本当かいなと思い直して(記憶だけで書いたから)も一回実験してみた。 (サンダーフォースⅢで、シールド出なくて迷走した件も、過去にあるしね) そしたら、三面の頭で、ギャラクシーフォースの自機(TRY-Z)に追い抜かれた! (そこまではノーミス、全部右コース) 知らなかった。こんな裏技、あったんだ。やるなシムス。 (MD版アウトランはシムス開発、セガ販売。いわゆる一つの外注って奴だね。 DC版VF3が、元気開発なのグライは知ってるでしょ?) ■現状、管理人版DGEN100A19はタイマーとかおかしい。その為、実機に比べてゲームが簡単である。 多分バグなんじゃないかと思うが、特に「ターボアウトラン」は、実機では物凄く難しく、100回トライして、 初めのパーツセレクト画面に一回辿り着くかどうかってぐらいの難しさである。(これは日本のメガドラ向けに 開発しなかったから、多分時間が変わっちゃったんだと思う)しかもOPTIONにEASYとかある癖に、 NORMALよりEASYの方が難しい。 ■一方エミュレーター。めちゃくちゃ簡単。タイム余りまくり。バカバカぶつかってるのに、初めのパーツセレクト画面で、 8.5秒とかタイム余りまくる。実機ではここに来るの異常に辛いんだぞ。AC版の1000倍は難しい。 実機ではぶつかるなんて論外。ブツカッテ構わないのは一面のドラム缶だけ、夕日の面のターボを掛ける 位置が微妙にずれるだけで、そこまでパーフェクトプレイでも、初めのパーツセレクト画面に辿れつけない 厳しさだ。実機はここまでたどり着けば、(もちろんハイレベルのゲームプレイなら)後はずっと先まで進むん だけどな。 (実機の奴を遊びこむには、ターボをかける位置を詳細に練り込む必要がある。当然いつも同じプレイになる) ■そうそうMD版の「ターボアウトラン」を知らない方へ。このゲームは「絵が駄目」「音も駄目」「ゲームもしょぼい」 と3拍子そろった。駄目ゲームだ。ゲーム画面は、まるで「マーク3用?」と思うくらいのしょぼさ。 「なら、クソゲーなんでしょ?」と思うでしょ?確かにそうかも知れないが、不思議と遊べる。「3拍子そろって駄目」 なのは絶対に確かな事実。なのに何故か不思議とACの適当さ加減の匂いがする。ゲームは音でも絵でも 速度でもプログラム技術でもない。不思議なゲーム。一生知らなければ知らないでも、何の支障もないゲーム。
■「DGE100A18」と「DGE100A19」で、11025と5512の動作がだいぶ変わって、 ゲームによっては、「前の方がまし」とか思うだろう。残念ながらまだ76496は対策中だ。 それはともかく、エミュのコアの音質は、変わってる。 「スーパーファンタジーゾーン」のサウンドテストで、44100、FSKIP1(万が一、曲によってうまくいかない場合は、 FSKIP5に落とす。でも、このゲームの場合はFSKIP1で大丈夫そう)、で音質をチェックしてみてくれ(暇なら) そうそうこのテストの場合だけ、「VSYNCはON」な。滅多に使う事ないから、忘れてただろ? 終わったら、戻しとかないと、「なんでゲームがゆっくりナンダー」って悩むよ。タブン。 「DGE100A18」より 「DGE100A19」の方が良くなってるだろ? 「DGE100A18」は偽者っぽいが、 「DGE100A19」は処理落ちで「ワウフラッター」がかかってるものの、 「実機の音をハイパスフィルター」で加工して、76をちょっと弱くした。ぐらいの感じだろ。 まあ、まだおかしい所、あるかも知れんが、PSPのスピーカーは「ツーイーター」の小さいのみたいな奴で、 端から低音など出るわけないし。(っていうか出たら近所迷惑)低音が一体どんな音質なのやら、聞こえない んだからわかる訳ないけど。 「04:WATER MELODY」は終わった話だから、どおでもいいけど。 「03:MANGO!」のFMと76とのミキシングレベルとか聞き比べてくれ。 やはり、76の特性をある程度合わせないと、この音はだせんだろ。 似た傾向の問題の曲で「08:FLESH MELON」とかな。 ■あと聞き所は全体的な「76のハイハット系のノイズ」だな。音質変わってるよな。同じ44100なのに、違うだろ。 「12:YA-DA-NE」の冒頭のノイズは実機の方がもっと「じゅうじゅう」した感じなんだが、 これが、エミュ音源コアのバグのせいなのか、PSPのスピーカーの特性なのか判断がつかない。 多分PSPスピーカーの特性のせいでローパスフィルターになって変な音になってるんだとは思うケド。 絶対そうとは言い切れない。 まだまだ、おかしい所もあるかもしれん。だが、44100がまともに出なけりゃ。他は絶対にまともに出る訳がない。 まだまだ音源道は厳しいな。
■「スーパーファンタジーゾーン」の音楽じゃ訳判らんという向きには、 旧作の「ファンタジーゾーン」の音楽が入ってるだろ。 コアなマニアなら、ACの基盤の音とは、違いが判るんだか、それでもこの旧作の音楽(音色)は非常に良く 出来てる(多少原作を強調しすぎてる部分もある)レコードかなんかになってるエフェクタバリバリ版なら、 有名だから、どっかで聴いた事あるよな。 とにかく聞いてくれ。 現在のレベルはこのレベル。ほぼ完成形だが、その「ほぼ」が厳しい。こだわるときりがない。 (15:05)
■今度は「サンダーフォースⅢ」のサウンドテストでチェックしてみた。 FSKIP2、VSYNC-ON、44100 ここでひとつはっきりした事がある。やはり高音が抜けないのは、PSPのスピーカーのせいだ。 FM音源の部分は、基本的に管理人はアルゴリズムレベル(考え方レベル)では弄っていない。 コーディングを少し見直しただけである。アルゴリズムレベルではかなりオタクなレベルまで完成されて いるので、ほぼ弄る所なんてない。セイゼイ見るところはSYNZさんが高速化の為に展開したテーブルの 妥当性程度のものである。(だがこのテーブル、一部は逆効果の気もする。検証してみないとなんとも 言えないが) で、TF3のサウンドテスト。入り方は、A押しながらスタート。(つまり、□押しながら△) 00:ミキシングの難しい曲だが多分大丈夫。 02:判らん。 04:実機のハットはもっと上まで伸びる為、PSPのスピーカーの貧弱さがばれてしまう。ううう、中低音が 出ないばかりか高音も抜けないのか。純粋にスピーカーのせいではなくて、恐らく内蔵のローパスフォルター のコンデンサ容量のせい。だってPSP無音でも変な音でてるもん。この変な音を押さえ込む為に。 ローパスフォルターの設定値少しキツメにしたに違いない。ううう分解して(多分チップ)コンデンサ付け替えた いなぁ。 これは明らかにプログラムのせいではないぞ。測定した訳ではないが、管理人の耳デビルイヤーなので、 何も機材がなくても判る。これじゃあ十数kHzまでしか伸びてないよ。20kまで届いてない。 ところでこのヘッドホン端子って一度も使ってないけど、ここに2.5ジャックの端子繋がるのかな? おお、初めて聞いたPSPの低音。ヘッドホンに繋いでみたよ。でも明らかに狭い音域だ。 なんだかとても不自然な音なんだけど。 このヘッドホンはきちんと高域まで出る奴。物凄くローパスフォルターがキツイからめちゃくちゃ聞き疲れする。 あと重低音補正して(足しまくって)るな。うるさいよ。きちんと出せよ。誤魔化してるのバレバレじゃないか。
PSPの重低音加算補正の為、頭痛くなって外した。 これは頑張っても五分も我慢出来ない。外部に繋ぐなら、イコライザー必須だな。 カラオケボックスじゃないんだから、あんな変な音に加工する事ないじゃんか。
PSPは、内臓スピーカーの方がまだましだった。衝撃の事実。 えーん。 少しヘッドホンを外して冷静になる。重低音に変な音足してるのなら、引けば良い。 卓上スピーカーなんてどおだ?スピーカーの径が小さくてインピーダンスが低い奴。思いっきり安物。 そおいうのがPSPには合ってるな。もしくは間にアンプを噛ませればインピーダンスは何でも良い。 そおだよな。イヤホンジャックだもん。ヘッドホンは繋いだら駄目なんだ。設計思想から、イヤホン専用。 ヘッドホン禁止な訳ね。 いづれにしろ2.5ジャックが繋がるのは、ありがたい。今は夜中だから試せないが、普通のアンプと、 イコライザーに繋いで、音を加工して、チェックしてみよう。もう内臓スピーカーじゃ。プログラムが悪いんだか どおだかワカンナイもんな。でも加工すると高音消えちゃうんだよな。うちの機材じゃ。結局訳がワカラナイで、 終わるかも知れんが、明日試してみよう。 結論:PSPは内臓スピーカーの方がまし。ただしイヤホンならいい感じになるのかも。イヤホンはその辺に ないから試せない。残念。 (03/06、02:16) うううまだ頭が痛いな。耳もおかしくなってる。今日は寝ないと駄目だな。どおしようもない。すぐ上にあらぬ事 書いてあるけど別にイヤホンがあったってどおなるもんでもないだろうに。意味ないって。 (03/06、02:29)