#6すでにSYS1専用へ | //www.旧型、PSP開発幼稚園.game.jp/(本館)

#6すでにSYS1専用へ

今日は9:30に起きた。もう10:00だがそれは無線LANのトラブルがあって接続できなかった。
今日は7:30頃寝たんだがそれでも起床時間は9:30なんだろうか良く解からん。
とにかく寝たら頭がすっきりした。(少し風邪気味で頭が重いのは別問題)
だから、方針が決まった。

へんな色気を出さず専用にしちまえ。管理人、正しいやり方だが一ヶ月後に動く奴と、ぜんぜん投げやり
なやりかただが23日中に動くんだったら、後者の方がいい。だって、そんなに付き合ったら飽きちゃうもんね。

たとえ、そのやり方が「リンカへ渡すオプション2文字」だったとしても、わからんもんは解からない。
レベルが低いちう事で勘弁。

じゃあ、早速ソースをダイエットして専用に仕立て上げよう。 まずF2なぞ女々しい(男女差別ではない、単なる単語)事は考えず。68000も含めて要らんCPUを削除。 基本的に6809と6800しかいらん筈。6800の中にHD63701は含まれているからだ。(つまり6800系) ちなみにSYS2の場合はMCUがHD63705で6805の中に含まれる。(つまり6805系) いまHDDの容量が(WEBのキャッシュ消したから)238MBな、ぜえんぶ消したら253MB。 こんな予備知識なくてもOBJはもう出来てるんだから、OBJ見て削除すれば良いわけか、ただし、ヘッダを インクルードしてたりFM.Cは要るとか、いろいろ複雑なんだけどな。SYS1の場合はNAMCOICがSYS2 と共用だろ。該当部分(SYS2の部分)を削除せなあかん。いろいろめんどいけど進めるか。 とりあえずOBJのDRIVERSディレクトリには、NAMCOIC.OとNAMCOS1.Oしかない。 ここも大量に削除が可能そうだから、この2つのOBJを削除して、該当位置のソースを移動させ、 OBJができるまでソースを移動しよう。多分3つか4つぐらいしかソースはいらんだろうから。 ではOBJ削除。ソース移動。元のソース位置にフォルダ作成。さしあたり、namcos1.cとnamcoic.cで、 コンパイル
うし、エラーメッセージから判断するにここはこの2つ以上必要ない。後でSYS2をはずすために少し 覚書「NAMCOIC.C」では「NAMCOS2.H」と「NAMCOIC.H」をインクルードしてる。っと。 いま「NAMCOS2.H」を見て、これは基本的にいらんし、「NAMCOIC.H」もほぼいらんな、 今のうちに「NAMCOIC.C」から該当部分を削除する作業をしとくか、まず名前にROZが付くもの。 これはMAME用語で、(Rotate&Zoom)MAMEのソース弄った事ある人なら常識だが。一般人には 全く解からん謎の用語だろな。SYS1にはCHRの(これはナムコ用語。MAME用語ではTILEMAP。 一般用語ではBG)回転機能も拡大縮小機能もないから。 これ即ち関係ないから削除せよ。って事。本当はここよりも「drawgfx.c」(OBJ)や「tilemap.c」(CHR)の方が 効果が高いんだが。(OBJはナムコ用語の場合。一般用語ではスプライト、MAME用語でも同じだっけ?) /* C169 ROZ Layer Emulation */これはSYS2用 /* C45 Land (Road) Emulation */これはファイナルラップ用 /* Namco System II Sprite Rendering */ここは名前から露骨に消せるだろ。 void namcos2_draw_sprites( struct mame_bitmap *bitmap, const struct rectangle *cliprect, int pri, int control ); void namcos2_draw_sprites_metalhawk( struct mame_bitmap *bitmap, const struct rectangle *cliprect, int pri ); メタルホークのチップはまだ完全にVDPが解明されてないため、OBJ描画はROMのOBJ番号で処理を 分けるという、少し頭の悪い方法になっている。いずれにせよOBJ情報のビットレベルでの 互換性が(SYS2とは)ないから(あれはSYS2ではなくて「デュアルシステムⅡ」と呼ばれていた。)別関数に なるのは仕方がないんだが。ああ、また無駄知識がぁ。あれぇいつの間に解明されてる。 すげぇな誰がやったんだろ。(ちゃんとvidhrdw/namco2.c/VIDEO_UPDATE( metlhawk )を見た )やるなあ MAMEすごいぜ。(マニアにしかわからんだろな)(おい、SYS1の話はどこへ行ったんだよ) メタルホークならさあ。こうPSPを縦に持って。Lボタン側を下にして脇を絞めてGBみたいに持つ。 右手が操縦桿。(本物と同じ)。左手がスロットル(方向キー、ちと無理があるが)。Lボタンが(ここが重要) 機銃って事で。(指でなくて手のひらで押す。これが無いとゲームにならん)って妄想してみたり。 (だからSYS1先に進めろよ)
はいはい、SYS1ね。とにかく、NAMCOIC.Cの該当行は全部削除さくじょ。 C355はSYS2専用OBJなのかな。(NB2とFLでもつかってるが)SYS1は関係ないのかな。 そりゃSYS1はC355でない事ぐらいは知ってても、MAMEでは似たチップの場合互換部分をやたら 吸収するからな。(生まれた時からの癖。パックマンとペンゴがくっついてたりさ。あれはそおいう時代 だったのだけれど)油断ならない。が、削除しちゃえ。後で困ったらまたMAME0.89Sから抜いてこよう。 念のためVIDHRRDWのNAMCOS1.Cを見たけどOBJの処理は少なくともここだけでしてるし、 RAMも「STATIC」で確保してさ。CHRのRAMさえ「STATIC」だ。きっとぜんぜん要りそうにない。 OBJに関しては、STATIC(私的)なdraw_sprites()って関数があり、(CPPで言えばクラス内部のpublicやflendでない秘密の関数) その中で、pdrawgfx()しか使ってない。(プライオリティーつきのMAMEのOBJ描画ルーチン) 「drawgfx.c」(OBJ)はこれしか要らなくなって(MAMEのメニュー等もこいつでやらせれば)殆ど ダイエットし346KB→14KBとかになるに違いない(14KBは気分)。 結論から言ってC355はいらんし、困ってあとでMAME0.89Sから抜いてくる事もないじゃろ。
SYS1のどらいば「drivers/namcos1.c」でVIDEO関係のコールルーチンは、 MDRV_VIDEO_START(namcos1) MDRV_VIDEO_UPDATE(namcos1) MDRV_VIDEO_EOF(namcos1) の3つしかなく、 VIDEO_INIT()は無いようだ。この3つは全て「vidhrdw/namcos1.c」にあるので、これだけ見れば良い。 だから、「namcoic.c」内のグローバル関数。int namco_tilemap_init()はいかにも呼ばれそうな名前だが、 呼んでない以上呼ばれる事はない。これはSYS2系用でSYS1は関係がないという事だ。 ばっさり削除してしまえ。get_tile_infoも当然いらない。 同様にnamco_tilemap_draw()もいらん。 そもそもnamco_tilemapvideoramとかついてるHANDLERは全部いらんな。SYS1は「STATIC」で確保 してるから別のOBJファイルから、HANDLERでアクセスできる訳がない。 やはり、NAMCOIC.Cはほとんど全部SYS2系用でいらないっぽい。 ちょっとメモ「drivers/namcos1.c」にあるSYS1の全ハンドラ(つまりメモリマップ)を抜き出してみる。
これがMAIN_MPUの6809コメントアウトしてある所は、実機はどうだか知らないが、 使ってるゲームが無い為に不明なんじゃろ。システム基盤なので、ハードがあっても使うゲームが ひとつもないという事態は日常茶飯事だ。アーケード業界は進歩の流れが速いからな。プレステの パラレルポートみたいなもん。ソニーからは結局公式に活用したハードウェアーが出ず。 後期のVERではコネクタ代(結構高い)が無駄だし削除された。PARがつながらんって大騒ぎしてたな。 一般人は。 static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_RAMBANK(1) AM_RANGE(0x2000, 0x3fff) AM_RAMBANK(2) AM_RANGE(0x4000, 0x5fff) AM_RAMBANK(3) AM_RANGE(0x6000, 0x7fff) AM_RAMBANK(4) AM_RANGE(0x8000, 0x9fff) AM_RAMBANK(5) AM_RANGE(0xa000, 0xbfff) AM_RAMBANK(6) AM_RANGE(0xc000, 0xdfff) AM_RAMBANK(7) AM_RANGE(0xe000, 0xefff) AM_WRITE(namcos1_bankswitch_w) AM_RANGE(0xf000, 0xf000) AM_WRITE(namcos1_cpu_control_w) AM_RANGE(0xf200, 0xf200) AM_WRITE(namcos1_watchdog_w) // AM_RANGE(0xf400, 0xf400) AM_WRITE(MWA8_NOP) // unknown AM_RANGE(0xf600, 0xf600) AM_WRITE(irq_ack_w) AM_RANGE(0xf800, 0xf800) AM_WRITE(firq_ack_w) AM_RANGE(0xfa00, 0xfa00) AM_WRITE(namcos1_sub_firq_w) // asserts FIRQ on CPU1 AM_RANGE(0xfc00, 0xfc01) AM_WRITE(namcos1_subcpu_bank_w) AM_RANGE(0xe000, 0xffff) AM_ROMBANK(8) ADDRESS_MAP_END メイン一個じゃ処理が追いつかん場合にサブというものがある。 static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_RAMBANK(9) AM_RANGE(0x2000, 0x3fff) AM_RAMBANK(10) AM_RANGE(0x4000, 0x5fff) AM_RAMBANK(11) AM_RANGE(0x6000, 0x7fff) AM_RAMBANK(12) AM_RANGE(0x8000, 0x9fff) AM_RAMBANK(13) AM_RANGE(0xa000, 0xbfff) AM_RAMBANK(14) AM_RANGE(0xc000, 0xdfff) AM_RAMBANK(15) AM_RANGE(0xe000, 0xefff) AM_WRITE(namcos1_bankswitch_w) // AM_RANGE(0xf000, 0xf000) AM_WRITE(MWA8_NOP) // IO Chip AM_RANGE(0xf200, 0xf200) AM_WRITE(namcos1_watchdog_w) // AM_RANGE(0xf400, 0xf400) AM_WRITE(MWA8_NOP) // ? AM_RANGE(0xf600, 0xf600) AM_WRITE(irq_ack_w) AM_RANGE(0xf800, 0xf800) AM_WRITE(firq_ack_w) AM_RANGE(0xe000, 0xffff) AM_ROMBANK(16) ADDRESS_MAP_END さらに音楽/効果音用にサウンドがあり static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(17) /* Banked ROMs */ AM_RANGE(0x4000, 0x4001) AM_READ(YM2151_status_port_0_r) AM_RANGE(0x4000, 0x4000) AM_WRITE(YM2151_register_port_0_w) AM_RANGE(0x4001, 0x4001) AM_WRITE(YM2151_data_port_0_w) AM_RANGE(0x5000, 0x53ff) AM_READWRITE(namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) AM_BASE(&namco_wavedata) /* PSG ( Shared ) */ AM_RANGE(0x7000, 0x77ff) AM_RAMBANK(18) /* TRIRAM (shared) */ AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */ AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos1_sound_bankswitch_w) /* ROM bank selector */ AM_RANGE(0xd001, 0xd001) AM_WRITE(namcos1_watchdog_w) AM_RANGE(0xe000, 0xe000) AM_WRITE(irq_ack_w) AM_RANGE(0xc000, 0xffff) AM_ROM ADDRESS_MAP_END IOポート用にMCUがある。 static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_internal_registers_r, hd63701_internal_registers_w) AM_RANGE(0x0080, 0x00ff) AM_RAM /* built in RAM */ AM_RANGE(0x1000, 0x1003) AM_READ(dsw_r) AM_RANGE(0x1400, 0x1400) AM_READ(port_tag_to_handler8("CONTROL0")) AM_RANGE(0x1401, 0x1401) AM_READ(port_tag_to_handler8("CONTROL1")) AM_RANGE(0x4000, 0xbfff) AM_ROMBANK(20) /* banked ROM */ AM_RANGE(0xc000, 0xc000) AM_WRITE(namcos1_mcu_patch_w) /* kludge! see notes */ AM_RANGE(0xc000, 0xc7ff) AM_RAMBANK(19) /* TRIRAM (shared) */ AM_RANGE(0xc800, 0xcfff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* EEPROM */ AM_RANGE(0xd000, 0xd000) AM_WRITE(namcos1_dac0_w) AM_RANGE(0xd400, 0xd400) AM_WRITE(namcos1_dac1_w) AM_RANGE(0xd800, 0xd800) AM_WRITE(namcos1_mcu_bankswitch_w) /* ROM bank selector */ AM_RANGE(0xf000, 0xf000) AM_WRITE(irq_ack_w) AM_RANGE(0xf000, 0xffff) AM_ROM ADDRESS_MAP_END MCUのI/Oポート(I/Oポートはここしかない(6809にI/Oポートなぞない)ので、 MCU内で処理するように(MCUを)改造すれば、MAMEシステムのI/Oポートルーチンは、 全部いらなくなる。ちょうどTYLがNEOGEOBIOSを考えて68000のAラインフックをやっていたのと 全く同じ考えかただ。IO命令がきたらこのポートかどうか調べフックしてしまえばすむ話。 多分ここは2バイトだし。ポート1がコインってのはずーっと前から判ってた。PORT2はいまいち 不明だったがDAC_GAIN以外にもなんかあるんだろな。べラボーマンはここではまってたからな。) static ADDRESS_MAP_START( mcu_port_map, ADDRESS_SPACE_IO, 8 ) AM_RANGE(HD63701_PORT1, HD63701_PORT1) AM_READWRITE(port_tag_to_handler8("COIN"), namcos1_coin_w) AM_RANGE(HD63701_PORT2, HD63701_PORT2) AM_READWRITE(MRA8_NOP, namcos1_dac_gain_w) ADDRESS_MAP_END
これで全部。殆どのHANDLERはnamcos1_で名前が始まり殆ど他所へは行ってない。IRQとか NVRAM(これが設定保存システム)とか少しの例外はあるが。 これだけCPUが沢山あると、本物の割り込み調停は一体全体どんなシステムになっていたのか 想像するしかない。MAMEでクロックを1.53にせっかく合わせても、6809は割り込みで幾らでも クロックが引き伸ばせるので、(インテルとは違うのだよ。CPU0MHzというのも冗談ではなくて可能だ) 本当の実動作周波数は、割り込みシステムの詳細が解明されるまで、誰にも判らない。 これはちと、MAMEシステムには荷が重い話ではないかな。 その辺の事を考えて、私が前作ったSYS1エミュでは特定のMPUに(マスター/スレーブ関係があるに 違いないと想像し)5%グライウェイトをかけていた。その方がゲームの再現度は高かった。 (MAMEより高かった)だがそれでも、一部のゲーム(ブラストオフの最終面のひとつ前の面の終了デモ)は 再現できなかった。他のゲームの再現性はどれも問題ない様だったが、(べラボーマンは爆田硬すぎで エンディングチェックはつらい、あとデンジャラスシードのエンディングチェック、 最終面ボスは死にそうになった、コンティニューなんて軟弱なものはない。)レイフォースはクリアしたが、 それでも泣きが入った。昔のゲーマーはずげぇなあ。
あ〆お・ヒ・RU!(12:44)
えーと、どこまでやったんだっけ(13:48)ああ、VIDHRDWの分離かぁ。念のためさっき退かしたその他の ファイル群に「namcos1」で検索をかけます。SYS10とSYS11とSYS12が引っかかるのは仕方がないですが、「pacland.c」「baraduke.c」「skykid.c」「namcos86.c(昔はrthunder.c)」「tceptor.c」ですね。 サンダーセプターは68000とか乗ってちと毛が多いですが、いずれも似たハードウェアーで、 これら共通部分は要するにCUS30をSYS1の奴使ってるってだけです。 CUS30は「machine/namcos1.c」でエミュレートしてますので、これらのエミュを作りたい場合は、 「machine/namcos1.c」が必須ですが、今回はSYS1ですので、もうあるもんね。3Dグラス対応ルーチン とかそんなんは別に残しといてもよかろ。(パフォーマンスに影響はなさそう) そんなん取るのはずーーーと後の話です。(一生残ってる可能性あり) さてそおいう訳でVIDHRDWの残りは全部安心して削除できますな。こいつは29MBだそうな。 HDD残り247MB→289MBになりました。(42MB減)別にHDD容量よりも、 削除するとソースの検索が速くなるのが嬉しい。 あれ、てっきりVIDHRWの整理かと思ったら、DRIVERの整理じゃないですか。まあ似たようなもんですけど、 ちっとOBJ消してMAKEがとおるかチェックしてみます。(これはコンパイルのチェックじゃないよ。 コンパイルはとうるに決まってるんだから、 MAKEFILE自体が訳わからんから、MAKEFILE自体のチェックの為にこんな変なことをしている)
うし、とうったな。必要なものは何も削除してないと断定できます。 次は同じようにVIDHRDWもやりましょうか。GENERIC.Cはめんどくさいからとりあえず残すとして、 必要なファイルが何かOBJからしらべよう。え?なんでnamcos1.makから調べないのかって? それだとgeneric.cとか出てこないでしょ?片手落ちな訳です。 えーとOBJは、 AVGDVG.O   なんだか忘れたがいらん筈。(ベクタースキャン描画のルーチンだって、要らん) GENERIC.O   VRAMとか基本的なものを提供する。が、SYS1はほぼ使ってない。 MATRIX3D.O  3次元の計算しまくりライブラリ NAMCOS1.O    ナムコシステムⅠ(これはいるのよ) POLY.O      ポリゴン描画ライブラリ TLC34076.O   なんだか忘れたがいらん筈。(なんのゲームで使ってるのか知らんがパレットチップだって、要らん) VECTOR.O    ベクタースキャンディスプレイ(高速船とか)のゲーム用(ぜんぜん要らん) 本当に要るのはNAMCOS1.Oだけです。あとめんどくさいという観点から GENERIC.OとVECTOR.Oもいる。 ベクターは全然要らんのですがMAMEのシステムに深く根を下ろしていて、削除する個所が非常に多いので 今回(1STコンパイル時)は見送りましょう。盲腸として残すって事です。先にすすみましょう。 結局いるのは3つだけですね。3っつを残してソースを移動させ、MAKEFILEも上を見ながら外します。 あとで、インクルードファイルがねぇとかエラーが出た場合は上のリスト(3つ以外)のインクルードファイルは 無条件で外して良い事になります。その為のメモです。
うし、VIDHRWは、「namcos1.c」「generic.c」「generic.h」「vector.c」「vector.h」を残して総て削除です。 念のため残りに「namcos1」で検索かけたけどヒットしませんね。まあ気休めですけど。 とりあえず削除してしまいます。7MBってとこです。 HDD残り281MB→305MBですな。(24MB減)
さてMAKEFILEの書き換えです。まずOBJ¥VIDHRDW¥*.Oを削除し、「make↓」でチェックさせましょ。
src/memory.h:1060: warning: cast increases required alignment of target type make: *** No rule to make target `obj/namcos1psp2/vidhrdw/avgdvg.o', needed by ` EBOOT.PBP'. Stop.
ほら、こんな感じ、memory.hでインクルードしてるってのは、検索でも、もちろん見つけられますけど、 makeにやらせた方が、安全確実で速い。プログラマーが良く使う手です。一般人は、こういう変なmakeの 使い方はしないでしょ?makeの本一生懸命、読んだってこういう実際的な使い方は出てこんのですよ。 プログラムなんて、一度ですんなり出来る訳がなく(年季が入るとできたりしますが)困ったときにどういう ツールに頼れば良いのか。方法論の方が大事だったりします。速くてうまい。(安くておいしい)方法を、 人には(聞かれないし)わざわざ説明したりしないけど。プログラマーならば、他にも色々技がありますね。 コーディングとか。納期内に終わらせるにはちょっとしたコツがあるのです。(真面目にやってたって終わり ませんよ。仕様をころころ変えられて、自分が苦しむだけなのが落ちです。真面目な人は自殺しちゃったり、 するしね。あんたが悪いんじゃあないのにさ)
ああああまた無駄口の発作がぁ。不治の病なので仕方がない。 えーと、memory.hでしたっけ。失礼。早がてんで、memory.hはぜんぜん関係がないじゃあないかあ。 ええと「src\core.mak」ですね。 ついでに色々要らない物が多いので外してしまいましょう。 $(OBJ)/sound/votrax.o \ $(OBJ)/machine/tmp68301.o \ $(OBJ)/machine/6532riot.o \ $(OBJ)/machine/z80fmly.o $(OBJ)/machine/6821pia.o \ $(OBJ)/machine/8255ppi.o $(OBJ)/machine/7474.o \ $(OBJ)/machine/74123.o $(OBJ)/machine/74153.o \ $(OBJ)/machine/74148.o \ $(OBJ)/machine/ticket.o $(OBJ)/machine/6522via.o $(OBJ)/machine/mb87078.o \ $(OBJ)/vidhrdw/avgdvg.o $(OBJ)/machine/mathbox.o \ $(OBJ)/vidhrdw/poly.o $(OBJ)/vidhrdw/matrix3d.o \ $(OBJ)/vidhrdw/tlc34076.o \ 5秒見た限りではこの辺は要らないな、まだ下のほうにCDROMだのHARDDISKだのSHA1やMD5だの (CRCあればいらないって)訳わからんもんありますがこれらもいろいろMAMEシステムに根ざしてる部分が あるから5秒で判断はつらいですね。 $(OBJ)/machine/eeprom.o \ はパット見て判らなかったから残しましたがいらないかもしれない。
うし、とおったど。それじゃあ次はmachineでまた同じ事をやりましょ。(15:09、おさんじにしよっ)
さてと昼風呂から上がってさっぱりしたぞ(16:44) えーとmachineね。
いらん 6522VIA.O 6532RIOT.O 6821PIA.O 74123.O 74148.O 74153.O 7474.O 8255PPI.O MATHBOX.O MB87078.O TMP68301.O Z80FMLY.O
わからん TICKET.O EEPROM.O IDECTRL.O RANDOM.O NAMCOS1.O
わからんもんはみんな入れときましょ。っていうかいるのNAMCOS1.Cだけだと思うが、 プロテクト処理にMAMERNDを使ってたらRANDOM.Cがいるし、ほかは要らんけど外すのが めんどいかもしれないからな。ちうわけで、えーと。 EEPROM.H EEPROM.C IDECTRL.H IDECTRL.C NAMCOS1.C RANDOM.H RANDOM.C TICKET.H TICKET.C になりましたな。このブログに、何でこんなに速くファイル名を貼り付けられるかというとだな。 仕掛けがありまして、まずDOSプロンプト立ち上げるじゃろ。 「dir /o:n > aaa」↓ と打つじゃろ。すると、名前でソートされたテキストファイル「aaa」が出来てるから、エディタで開いて、 大文字に変換して、ボックス編集でカット。いる部分だけ編集しできたら、カット&ペースト。判ったかな?
とにかく「machine」のOBJ消してコンパイルしてみますね。(16:56) うし、コンパイルとおったじぇ。 NAMCOIO.C、NAMCOIO.Hってのも完全にゴミな訳だ。サイズは2.21MB HDD残り316MB→323MB(実質7MB)お、今までみたいに差が沢山はないな。それでも3倍以上か。 今「home/xxxx/sys1/src/」の下が8.68MBしかないよ。 次はsoundとsndhrdwをやろうか、ついでに、いっぺんにincludesもやろ。だんだん手馴れてきたでしょ? じゃあ、3つ、いっぺんにやります。 えっと、includesについては良く解からんからmakeに教えてもらいましょ?でもnamcoic.hは要りそうだから、 とりあえずそれだけいれとく、さっきいろいろファイル開けた時、#inclide"namcos2.h"とかいう行はコメントに しちゃったんだわ。どれだか忘れたけどまあいいや。めんどいからnamcos2.hも入れとくね。少しぐらい盲腸 があっても、ええじゃろ。 次はsoundね。 2151INTF.O DAC.O FILTER.O FM.O MIXER.O NAMCO.O STREAMS.O VOTRAX.O WAVWRITE.O YM2151.O かあ、
2151INTF.H 2151INTF.C DAC.H DAC.C FILTER.H FILTER.C FM.C FM.H MIXER.C MIXER.H NAMCO.C NAMCO.H STREAMS.H STREAMS.C WAVWRITE.H WAVWRITE.C YM2151.C YM2151.H
ってとこですかね。VOTRAX以外はみんな入れちまいましょ。ところで、PSP_MAME04では、 ナムコ「54」で苦労したらしく。SYS1に「54」は全く関係ないもののせっかくですからsound_siryouとでも ディレクトリ掘ってそこ(makeの見えない所)にいれときます。先人の知恵は参考になるかも知れないですから、 「54」はゼビウス、ギャラガ、ボスコニアン、ポールポジション、だそうです、関係ないけど「52」も入れとくか、 ちょっと読んだら消せばいいし、YM2151.TXTも読み物だな。これは読んでも意味判らんでしょ。普通。 ちっと重要なのは途中式ぐらいなものでさして意味のある資料って訳でもないけどさ。まあ、そのとーりで、 ごぜーますなお代官さまってな感じの、データーシート丸写しって感じの資料なんすけど。2151のデーター シートは見たこと無いけど、外部クロックとか、テストレジスタとか、くだらん事に紙面割いてて、肝心な事が 何一つ書いてない。(例えばさ、0.5倍マルチとかDT2レジスタとかLFOの詳細動作とか、マニアが知りたい と思われる事について何一つ書いてないから、こりゃ纏めた人には悪いけど、単なるゴミだわ) 他のFM音源(特に2203、OPN)と2151(OPM)の差について全然書いてないって事す。これはゴミ。 まあ、知ってるからいいけどさ。(あ、夕食かな?今日はやけに早いな、17:44)
ふう夕食終わったじぇ(今な、18:23)ちょくちょく休憩はいるから、何処まですすんだんやっけ。 そうそう3つまとめて消すところな。 今回は消してからコンパイルするつもりじゃなくて。移動して集めてコンパイル後に消すつもりだからな。 インクルードファイルに関しては、簡単な定数だけ使ってたり、インクルードファイルがインクルードしてる ファイルをインクルードする事(つまり孫インクルードファイル)が重要だったりして、今までとは少し話が 違うから注意せえよ。 ええとな。includeはmakeにやらせる。って方針でsoundはやったんやな。あとはsndhrdwか、それが終わったら、 「make clean」↓ で、makeに必要なincludeファイルを見つけてもらう。と、作業手順はそんなんやでぇ。そんじゃ、sndhrdwな。
あり、sndhrdwなんもないんか。そやろな。それに当たる部分が、みいんなsound/namcos1.cにはいっとる もんな。まあ、MAMEにしては稀な例やが、こういう事もあるっちう事で。
んじゃ、 「make clean」↓ それから 「make」↓ あとはPSPであそんどれば良いじゃろ。(18:37) ふうやっと待望のエラーがでた(18:50)管理人のメガドラROMは自分で改造してあって、 残機は一機か九機か選択式になってる。今回はぱっと遊んですぐ止めるつもりだったんだが、 一機設定でもう三面やないか。FSKIP0、11025で遊んでたんだけど。「A16B」 やっぱ遅くてもFSKIP0だよな。こいつがちらつくのはたぶんGeなのにフレームスワップをしてるからだよ。 VRAM直描きの場合は当然SWAPしなけりゃちらつくが、Geの仕組みは別なんだから、そんな事せんでも、 ちらつく訳ないっての。お魚さん式のやり方でいいんだよ。コツはGeのすぐ後でSCEのライブラリコールする所な。ここは順序変える訳にはいかんでしょ?でないとちらつくよ多分。お魚さんと「A17」の方式ならちらつかんって。解からない人はDirectXのExecutesBufferを勉強せえや。 どうでも、ええねん。「A16B」は76496がバグってる。から早いうちにFIXせなあかんなあ。76496の効果音。 基音が周波数下げると半分づつになるバグがはいってるねん。11025だと本物の1/4やから2オクターブも 低くなって、殆ど効果音が低すぎて聞きとれん。「A17は無茶してるしなぁ」 マルチボムを使うのが異常に難しいで、メガドラ時間で使うと何時も上の方に投げてしまって、当たらない。 エミュ遅すぎ。もちっと速くせんと、FSKIP0では遊べん。なんとかせえや→管理人。
あ、エラーしゅね。なんだか疲れてやる気がせえへんので、もう何でもいいからバンバンいれときまひょ。 src/info.c:4:27: error: sound/samples.h: No such file or directory make: *** [obj/namcos1psp2/info.o] Error 1 このファイルもいらんと思われるが、エラーが出たらincludesに戻すちう事でお願い。 戻し、戻し、もどそ。 うーん、これが出るなら、いらんと思うが念のため、samples.cも一緒に戻しとこ。 「samples.h」「samples.c」→戻す「src/sound/」 それから 「make」↓ じゃまた遊ぶか(17:12) ちいともコンパイル終わらんから(PenMMX233マシン)ちと雑談。さっき3面って書いたけど2-3だった。 変な所でポーズかけたから(一機設定だから)うっかり死んでしまったやないか。で、2-3のボスは メガドラ版は出来が悪く、アーケード版遊んだ人でないと、意味すら解からない。あれは戦闘機なんですよ。 SYS2では回転機能で回転してるから、なんだか判ったけど、メガドラ版はコマ割が少なすぎて、どんなボス かすらよく判らん。せめて中間にあと一コマ絵があったらずーーーと良くなったのに。 こいつもマルチが当たらんから、マルチの無駄遣いをしてしまって、3-1に突入。でた、セガのスペハリの ウイウイジャンボの真似。ここは普通なら、さっきのマルチが残ってるからマルチ一発で、倒した記憶もなく 通り過ぎるが、死んでるのでWIDEもなく。非常に時間がかかる。(管理人が勝手に改造した、残機なし設定 なので、弾に当たる訳にはいかない)やっと倒せた。こんなに苦労したのは始めてだ。 おっエラー出てる。なになに、
src/sound/fm.c:117:20: error: ay8910.h: No such file or directory make: *** [obj/namcos1psp2/sound/fm.o] Error 1 ふ~ん、2151だから本質的に要らんがいれとこ。(OPN=4OPで3声=2203はSSG3声=PSG=AY-3-8910が3声いるが、OPM=4OPで8声=2151は本質的にPSGが付いてないのでこいつはいらない。 SYS1はOPMとナムコ音源とDAC) いまねえ、19:35だよ。 うし、コンパイルとおったな、えーとね。(19:48)だね。 残りは全部消してええよ。3つまとめて1.57MBしかない。 HDD残り320MB→330MB(10MB減)実質は10MBだったんだな。小さいファイルが多いと良くある事だ。 でもこのPCはFAT16なんだけどな(そういうフォーマットにした。)プログラム開発用PCはFAT32ではなくて、 敢えてFAT16領域を用意して、そこで作業する事がある。これはDOSの古いプログラムを使いたい。 という事ではなく。プログラム開発は2Gあれば十分な事、1番目の領域をFAT16にすれば、HDDの一番 速い部分を使えるのでFAT32やNTFSより速い事。HDDに傷(スキャンディスクにて)がついた場合に、 復旧率が一番高い事。等が理由だ。たとえ管理人は300GBのハードディスクを使うとしても、プログラム 開発に使用するのなら、1~3の領域をFAT16とし、残りをFAT32、あるいはNTFSにすると思うよ。 もちろん全領域ブートだ。(ソフトに1円も金かけなくても、できるんだよ。) あるいは金かけて素直にRAID導入する。でもNOTEPCでRAIDって聞いた事ないな。HDD2つ乗るんかな。 まあ一般人は知らんでええ、知識やけどな。もちろん全領域ブートに決まっとるがな。ちなみにこのNOTEPCは4GBのHDDがついてたから、FAT32なぞつかわず、FAT16x2でフォーマットし、片方が今使ってる。 インターネット兼PSP開発用。もう片方がCD焼き専用となってる。ゴミが溜まったらCDに焼く。CD焼きに 失敗したらお金が(33円)もったいないので、必ずイメージを作成して、USB-CDRの2倍速で焼いてる。 この領域は完全にCD焼き用にカスタマイズされていて、一度も焼きに失敗したことはない。ソフトを練りこむ チェックはすべてCDRWで行ったからだ。BENQの50枚入りxMITUMIのCDRWだが、今、40何枚目。 40何試合中・40何勝、そろそろ。パーフェクトKOの日は近い。(ただし焼いたCDの中身の価値については 聞かないでくれ、全部ZIP圧縮してあるから量だけはあるが、中身はダブりが多いぞ。ゴミだぞ) いまねえ(20:15)ってこと。