#2息抜き第2弾MAMEで行ってみよう。(2006-02/13-B)
この記事の(前半)アメブロ、メンテ中でリンクできないため 
#2息抜き第2弾システムⅠで行ってみよう。(2006-02/13)
<アメブロのせいで次のページに出来ませんが、ここからは次の記事です。(はよ終われ)>
おし、ぜええんぶ。消そう。人生最初っからやり直し。リセットボタンを押してね。ポチっとな。
うぃぃぃぃん、がっしゃーーーん。はい完了。昨日までの記憶はありません。
でもHDDの残りは195MB。悲しい。
そこで、いるもんもいらんもんも削除だ削除。おらー。
うし、277MBに回復。昨日のmoyaとか弄る気がないもんはみーんな消した。
先に進もう。
とにかくMAME069もMAME104もみんな削除。うし、HDDの空き477MBに回復。
まずPSP_MAME04を解凍。次にMAME069Sを解凍。
PSP_MAME04のsistem1.makをMAMEに敬意を表して、namcos1.makに変更。
慎重にSYSTEMⅡのROMを外す。(SWS92はどっちだったっけ?とかマニアでも一部迷うぞ)
一通りチェックしたらエディターのBOX貼り付けで再チェック。
&driver_bakutotu,driver_bakutotu,
&driver_berabohm,driver_berabohm,
&driver_beraboho,driver_beraboho,
&driver_blastoff,driver_blastoff,
&driver_blazer,  driver_blazer,
&driver_boxyboy, driver_boxyboy,
&driver_dangseed,driver_dangseed,
&driver_dspirit, driver_dspirit,
&driver_dspirito,driver_dspirito,
&driver_faceoff, driver_faceoff,
&driver_galag88j,driver_galag88j,
&driver_galaga88,driver_galaga88,
&driver_kyukaidk,driver_kyukaidk,
&driver_kyukaido,driver_kyukaido,
&driver_mmaze,   driver_mmaze,
&driver_pacmania,driver_pacmania,
&driver_pacmanij,driver_pacmanij,
&driver_pistoldm,driver_pistoldm,
&driver_puzlclub,driver_puzlclub,
&driver_quester, driver_quester,
&driver_rompers, driver_rompers,
&driver_romperso,driver_romperso,
&driver_shadowld,driver_shadowld,
&driver_soukobdx,driver_soukobdx,
&driver_splatter,driver_splatter,
&driver_tankfrce,driver_tankfrce,
&driver_tankfrcj,driver_tankfrcj,
&driver_wldcourt,driver_wldcourt,
&driver_ws,      driver_ws,
&driver_ws89,    driver_ws89,
&driver_ws90,    driver_ws90,
&driver_yokaidko,driver_yokaidko,
&driver_youkaidk"driver_youkaidk"
おし、数は合ってるらしいな。すかさず元に戻す。また1行に変換しなおす。(出ないとmakeにならないよ)
出来上がったMakefileは、
# a tiny compile is without Neogeo games
COREDEFS += -DTINY_COMPILE=1
COREDEFS += -DTINY_NAME="driver_bakutotu,driver_berabohm,driver_beraboho,driver_blastoff,driver_blazer,driver_boxyboy,driver_dangseed,driver_dspirit,driver_dspirito,driver_faceoff,driver_galag88j,driver_galaga88,driver_kyukaidk,driver_kyukaido,driver_mmaze,driver_pacmania,driver_pacmanij,driver_pistoldm,driver_puzlclub,driver_quester,driver_rompers,driver_romperso,driver_shadowld,driver_soukobdx,driver_splatter,driver_tankfrce,driver_tankfrcj,driver_wldcourt,driver_ws,driver_ws89,driver_ws90,driver_yokaidko,driver_youkaidk"
COREDEFS += -DTINY_POINTER="&driver_bakutotu,&driver_berabohm,&driver_beraboho,&driver_blastoff,&driver_blazer,&driver_boxyboy,&driver_dangseed,&driver_dspirit,&driver_dspirito,&driver_faceoff,&driver_galag88j,&driver_galaga88,&driver_kyukaidk,&driver_kyukaido,&driver_mmaze,&driver_pacmania,&driver_pacmanij,&driver_pistoldm,&driver_puzlclub,&driver_quester,&driver_rompers,&driver_romperso,&driver_shadowld,&driver_soukobdx,&driver_splatter,&driver_tankfrce,&driver_tankfrcj,&driver_wldcourt,&driver_ws,&driver_ws89,&driver_ws90,&driver_yokaidko,&driver_youkaidk"
# cpuintrf.c cpuintrf.h cheat.c audit.c memory.c info.c sndintrf.c sndintrf.h usrintrf.c psp/fronthlp.c
# uses these CPUs
#CPUS+=HD63705@
#CPUS+=M68000@
CPUS+=M6809@
CPUS+=HD63701@
CPUS+=M6803@
# uses these SOUNDs
#SOUNDS+=C140@
SOUNDS+=DAC@
SOUNDS+=NAMCO@
SOUNDS+=YM2151@
OBJS =\
	$(OBJ)/machine/namcos1.o \
	$(OBJ)/vidhrdw/namcos1.o \
	$(OBJ)/drivers/namcos1.o \
	$(OBJ)/drivers/namcoic.o \
	$(OBJ)/machine/random.o \
# MAME specific core objs
COREOBJS += $(OBJ)/tiny.o $(OBJ)/cheat.o
6803は6800系(註:0の数は合ってます)なので、HD63701の為にいる筈。
C140はシステム2の音源なのでいらない筈。いやいらないな多分。はずしちゃえ。
68000系(註:0の数は合ってます)は見た瞬間に消そう。16ビットに用はない。
HD63705は6800系(註:0の数は合ってます。くどい)で、システムⅡのMCU。こいつも要らん。
あ、用語ね。
CPU=「コントロール」、「プロセッシング」、「ユニット」。の略。後に「セントラル~」と改名された。
MPU=「マイクロ-プロセッサ」、「ユニット」。の略。「P」は違うのよ。
電卓上がりではないという意識から単語が違う。
MCU=「マイクロ-コントローラー」、「ユニット」。確か。
モトローラはCPU等という単語は使わん。あれはインテルの単語だからだ。
世の中、実はそおいう事になってる。
だって、68系に対抗する86系とか、そういう事になってるんだから、仕方がない。
トムもジェリーも仲良くけんかしてくれ。お願い。
モトローラの考え方としては、「マイクロプロセッサ」なのであって、CPUなぞという訳判らん名称を付けられた、
「部品」ではない。これこそが「コンピューター本体」であって、残りは「部品」という考え方。
対するインテルの考え方としては、メモリやバス等を含む総て一式が「コンピューター本体」であって、
CPUは後に「セントラル、以下同じ」と改名された事からも判る様に、「コンピューター本体」を構成する一つの
部品。
これは、思想であって、今でも両社は変わらない。どっちが正しいとか間違いとかいう事はない。
癖みたいなもんだ。一応把握はしておく。
あ、ごはんーーー。にゃーにゃーにゃーにゃーにゃー。(18:26)
19:11分作業再開。とにかくdriver.hがインクルードしてるファイルの詳細なんて、調べるのめんどい。
ぜんぶコピーしちゃえ。どおせいらんもんは、あとで苦労して外せばいいや。
おっともう一度「startup.S」でつっかえた。さっきと同じ作業をする。「rodata→xodata変換」
\src\psp\psp.makも全く同じに直す。
$ make
Assembling src/psp/startup.S...
psp-gcc-4.0.0 -o obj/namcos1psp/psp/startup.o -mabi=eabi -mgp32 -c -xassembler -
O  src/psp/startup.S
make: *** No rule to make target `obj/namcos1psp/machine/namcos1.o', needed by `
EBOOT.PBP'.  Stop.
ふふふ、やっとまともなエラーメッセージ(まともかい?)
この辺のファイルも、さしあたって判る物は移動。現時点でfm.cとかも判るでしょ。
恐らくsrc/namcos1psp/というフォルダを新しく作ってそこに入れろって事だな。
と思い、試してみたら駄目。素直にsrc/machine/namcos1.cならOK。
at-security -Wwrite-strings -Wdisabled-optimization  -Isrc/expat -Isrc/zlib -D_H
UGE=HUGE_VAL -DCLIB_DECL= -c src/machine/namcos1.c -o obj/namcos1psp/machine/nam
cos1.o
In file included from src/driver.h:53,
                 from src/machine/namcos1.c:1:
src/psp/osd_cpu.h:97:1: warning: "isunordered" redefined
In file included from ./src/psp/floatonly.h:1,
                 from :1:
/usr/local/pspdev/psp/lib/gcc/psp/4.0.0/../../../../psp/include/math.h:117:1: wa
rning: this is the location of the previous definition
make: *** [obj/namcos1psp/machine/namcos1.o] Interrupt
"isunordered"の再定義ってなんだろ。
/usr/local/pspdev/psp/lib/gcc/psp/4.0.0/../../../../psp/include/math.hを調べんと判らんのか。
該当する位置にmath.hはない。includeの近くにもない。まあmath.h使う必要がありそうなのは、
プロテクト解除のプログラムの「乱数発生」させてる場所だけだろ。多分。
これはmamerandに変更してもいいし、自前で簡単な乱数ルーチン実装しても良い。
とにかく御託はいいから現状をみてみよ。
このソースはmamerandよりさらに古い形式で、自前で乱数ルーチン実装してるから、
math.hがいる筈がない。でも、vidhrdw/generic.hが要ることが判ったので移動。
/src/psp/osd_cpu.hの最後。
#define isunordered(x, y) __builtin_isunordered(x, y)
とGCCの奴がかち合ってるらしいので、ここはコメントアウト。
///#define isunordered(x, y) __builtin_isunordered(x, y)
って感じ。(3つにしたのは後で判るかな?と思って。一応)
In file included from src/fileio.h:13,
                 from src/mame.h:16,
                 from src/mamedbg.h:4,
                 from src/driver.h:55,
                 from src/machine/namcos1.c:1:
src/osdepend.h:192: error: parse error before 'oscode'
src/osdepend.h:192: warning: function declaration isn't a proto^C
isn't a prototypemake: *** [obj/namcos1psp/machine/namcos1.o] Interrupt
とにかく開発コンピューターがとろいお陰で、エラーメッセージが途中で止められるのは有難い。
速いPCより、遅いPCの方が開発しやすい。(前はもっと速いPCで開発してたから大変だった)
リダイレクトでもエラーメッセージは取れないし、GCCのどっかに設定きっとあるんだろうけど、
どこか判らない。今度調べてみよう。きっとある筈だ。
で、このエラーは、oscode?聞いたことないな。MAME内部のなんかだろ?。一応現状を把握するか。
oscodeで検索。
mame069s/src/inptport.c
が検索に引っかかった。
sys1/src/inptport.c   (今この場所に新しいエミュを作っている)
にはない。
MAMEのVERが違うから移植せねばならない。
ソース見比べたが、(0.69より)もうちっと新しいVERが入らんと、ちと苦しいなあ。
またやり直しかい。しょうがない管理人秘蔵のCDをあさってみるよ0.97に限りなく近いVERだろ?
あーーあ、めんどいなあ。
インターネットMAME0.97で検索しても変なもんばっかしか出てこないからなあ。
もちっと簡単に古いソース入手する方法ないかなあ。最新版のソースなら嫌って程、簡単に手に入るのに、
一個前は厳しくて、半年まえなんて。まず入手不可能だもんな。どっかソースコードアーカイブしてる。
いいページないかな。そっちを探したほうが合理的だな。どおせ検索で出てくる訳がないんだし。
少しWEBを漁ってみるよ。作るのはそれからだ。まだ早い。
この先強引に進めば出来るのは判ってる。何度もトライした経験があるからだ。だが、それをやると
一週間とかかかる。VERが極端に離れてる場合はもっとかかることもある。
そんな下らない事、やってられっか。どっかにあるって判り切ってるのに。
(20:10)
駄目だった。
と迷走してたら、なんだあftpで取ってこれるじゃん(HTTPだが)
まあ、LHAだしかなり怪しいが、DLしてみよう。
ttp://fabportnawak.free.fr/mame/
えーと、ここに上がってるのは、
 mame-0.97.lha           18-Jun-2005 20:08  18.4M  ←これをDL中(現在は2006-02/13、20:35)
 mame-0.97src.lha        25-Jun-2005 02:49   193k  
 mame0.98.lha            28-Jul-2005 03:47  14.7M  
こんだけ、取り敢えずDLしてみる。
いまDL中だが、サイズからしてBINって事はありえないよな。少し不安になってきた。
ええと、半分おわったじぇ。って事は後1、2分だな。早くしろ。
いま66%、転送速度32kB/秒だって。ってことは8倍して、転送速度0.2Mかあ。
込んでる時のLANぐらいは出てるんだな。じゃあがんばれ。こっちは100Mだが、
インターネットで1M超える事なんてありえないくらい稀だぞ。管理人が行く範囲の話だがな。
そんなに速いときは転送速度なんて、見る暇もないし。そんな物があった事
あー終わった終わった。さてどおなってるかな?。
けっ!素直に解凍できないし、できてもBINじゃねえか
(LH0とLH5の二重圧縮、偽装のワレズの可能性もある。開けてないから判らない)
削除さくじょ。
MAME\chdman.ELFだって。
こんな怪しいELFファイル誰が実行するかよ。けっ!
管理人の秘蔵CDからMAME082Sを発見。この頃インターネットなんてやってないんだから、
これは貴重だ。もっと新しいVERも探せばある筈。もちっとがんばって、0.97に近いVERを
探してみるか。ちなみに0.82SをDLしたのはタイムスタンプから推測して、2004年12月27頃。
探せばもっと新しいVERがきっと見つかる筈。
インターネット経由では絶対に(手軽には)持ってこれない事が判明したので、うちのごみ箱をもうちっと
漁ることにするじぇ。
(21:05)
いや、もっと正確な履歴MEMOが見つかった。MAME0.82Sは2004年5月6日にDLしたってメモ発見。
えーと、このMEMOによると、
MAME0.62S-2002-11/13DL
MAME0.65S-2002-12/22DL
MAME0.72S-2003-12/??DL
MAME0.82S-2004-05/06DL
メモ作成:2004-08/24
となっている。2002-11月から2004年5月まで、管理人の弄ったMAMEは上記のVERしかない。
MAME0.69Sは2003-05-23に発表。
いい加減CDに焼くのはめんどくさくなったんで、まだCDに焼いてないもっと新しいVERのMAMEがあったはず。
そしてそいつは絶対にVER1.00以下だった。しょうがないもうちっと探してみる。なければ0.82Sを移植しよう。
いや、ない訳ないぞ。だってリッジレーサーとか弄って遊んだVERがあるはず。
このMEMOによると、M82で、スーパーチェイスとグラⅢとメガドラのC2とシステム32を作ったってかいてある。
(C2→MDコンバート)は意外と最近やったんだな。もうそんな古い話はすっかり忘れていたが。
グラなんてずーーーと前の記憶があるが、ああ。これは作り直したのか。
システム32は確かにこの頃だ。システム16のあれと競争させて本家より軽くなった(通信機能はない)
とかいって作るのあそんでたもんな。
リッジをやってた頃は去年の夏。つまり2005年の7月頃。これなら0.97に限りなく近いVERの筈だ。
この頃PS(基盤)も弄ってた。MAMEの奴はGPUのパケット処理がタコだから、バグるんだよ。
あそこ改善するだけで、GDARIUSのエンディングが見れるぞ。あそこ変えない限りエンディングには
たどり着いても、絶対にバグる筈。そこを変えるだけで嘘のようにエミュが安定するんだがこれは秘密だ。
ほら、ワカンナイってなってるパケット処理だよ。んなもんちょっと考えりゃ判るだろ。実装しとけ。
要するにグーロ、ポイント、とかそういうのもPSのGPUにはあるんだよ。プログラマーが意図的には
そんなアホなもんは、使わんケド、内部のライブラリで自動変換させてたら、最適化の程度により、
そういうもんも出てくるだろ。それが要するにあの、エンディングな訳。元はグーロ面かなんかだった
GPUコマンドが「自動負荷軽減プログラム処理」により自動変換されて、グーロ点とかになって出てくる。
PSのGPUはネイティブで仮にVERが違っても、そおいう変なコマンドがあるんだよ。一般には解析されてるの
かどうか不明だが、少なくともBleemやPS-EMUあたりはちゃんと解析しただろ。だって動いてんだからさ。
まてよ、いやBIOSフックで、その辺は解析要らないのかもしれないな。
なるほど、合点がいったよ。だから初期のPS版「リッジレーサー」は動かないんだ。
「R4」辺りならバリバリ動くのにな。
初期PSリッジが動かないのは、きっとBIOS使ってないからなんだな。知らなかった。
考えてみれば、当たり前の事かもしれん。SCEからNAMCOに開発資料が届いてから開発してたら、
とても12/3日の発売日に間に合わなかったんだ。いやそれ以前のプレプレの店頭用体験版は、
もっとずっと早くにUPする義務があった筈。しっかり間に合ってるもんな。
大体SCEのライブラリがタコで、まじめにSCEのライブラリ使ってたら当時はあんな速度出せない筈だしな。
SCEのライブラリ使わないんだったら、当然GPUコマンド吐くプログラムにならざるえない。そういえば、
ファミ通あたりにも、ちらっと、そんな事くさしてあったな。管理人めちゃくちゃ記憶力がいいから覚えてるぞ。
PS版リッジは「奇跡のプロジェクト」と言われてたもんな。あ、この辺は守秘義務には引っかからないよ。
私は業界関係者ではないし。SCEとそんな契約結んだ覚えはない。それを言うなら、エンターブレインの
ファミ通を発禁にしておくれ。忘れないし、国会図書館に行けば証拠がある筈。
もしかして誰も判らないとか?(っていうか知ってるけど守秘義務で、できないって事か)いやそんな事は
ないだろ。多分。
とにかくその頃に落としたVERがある筈だから、探すよ。がんばって。しくしく。(21:33)
去年の夏ごろ買った(DTP)PCがあって、半年以上無駄に寝かせてたんだが、今初めて触った。
それによると、管理人カスタマイズ版FX1B「これはアーケードPSエミュ」。も、
管理人カスタマイズ版SYS22。「vivanonoは一度も落としてないので、知らない」こいつは
(LGA775)CELERON2.66でリッジ(AC)なら、60fps動作する。レイブは同じSYS22なのに無理だった。
50か55fpsぐらいで届かない。ただし、オーバークロックして3GHz辺り迄上げれば、60fps動作してた。
放熱強化して、すでにパソコンショップには売ってない車用の部品と取り付けて改造したので、コタツより
煩くなった。管理人コタツよりうるさいPCは使う趣味がないので、結局放置してある。
いったいどの辺まであげていいのやら、情報がないので3Gぐらいにしておいた。リッジつけっぱなしにして、
10分ぐらいほおって置いて、温度モニターで監視してたが全然低いレベルで安定してたので、まだまだ
上がる事は確かなんだが。必要もないからやめた。このマザーボードはクロックアップ非対応なんだが。
放熱強化以外は、みんなソフトで出来る時代なんだよ。温度センサーは至る所に配置してあるし、
メーカーがいくら出来ないとか、なんとか言おうがソフト入れちゃえばオーバークロックなんて簡単だし。
あ、また地が出た。無駄口病だな。とにかく去年の夏も部屋が汚くて、結局DLしてある最新MAMEは見つからず
MAME0.82Sでこれらはやった事が判明。(MAMEにはVERSION.C)という便利なファイルがある。どうせ
後で元のVERが解からなくなるのは目に見えていたので、全く不必要だか、改造版MAMEには残すように
してた。それが残ってたから。判明した訳。
オーバークロックが原因ではなく、部屋の掃除をして上記DTP開発PCをあちこち移動させてたら、HDDが、
飛んでしまった。OSは起動しないが、管理人はいつもマルチパーティーション(4つともブートにしOS起動)
なので、ほかの領域から起動し、スキャンディスクで、死んでる(ディレクトリが全然少ない)ことを確認した
ので。スキャンディスクは使わず。復活ソフトでソースをサルベージさせた。ソースは最新ではなくなったが、
復旧に成功し、コンパイルして動作を確認した。
それで、オーバークロックツールとかみんななくなっちゃったし、コタツよりうるさいから放置してた訳。
USBのドライバさえいれれば、ここからHDD抜き出して。USBHDDにして、こいつ(今やってるノートPC)に
簡単につながるんだが、どおしようかな。隣の実験PC(これは又別のPC)にはこの前(去年の九月頃)
実験してOKだったんだけど。
やっぱ、安全の為。隣のPCに繋いで、ワイヤレスLAN経由でアクセスするのが安全かな。どおしよ。
とにかく、悩んでも仕方がない。
も一回全部消して、MAME0.89Sでやってみるよ。まったく同じ事。ここにぐだぐだかかなけりゃ30分で
終るよなあ。(今ねえ、22:55ぐらい)じゃあまたね。
おいアメブロなんとかしろ。ながーーーーーい記事になっちゃったじゃん。
新しい記事アップするとここのブログのシステムじゃリンクしにくいんだよ。わざわざ作るか。いや面倒だ。
もちっと待とう。
そんなことより、なんとかなりそう。さすがにMAME0.89SとMAME0.97Sはエディタで比較できるくらい、
よく似てる。
In file included from src/driver.h:64,
                 from src/drivers/namcos1.c:344:
src/sndintrf.h:66:6: warning: "HAS_C352" is not defined
src/sndintrf.h:128:7: warning: "HAS_C352" is not defined
src/drivers/namcos1.c: In function 'construct_ns1':
src/drivers/namcos1.c:1040: error: 'SOUND_NAMCO_CUS30' undeclared (first use in
this function)
src/drivers/namcos1.c:1040: error: (Each undeclared identifier is reported only
once
src/drivers/namcos1.c:1040: error: for each function it appears in.)
make: *** [obj/namcos1psp/drivers/namcos1.o] Error 1
ここまで、来た。(今ねぇ。23:56だな)
これは、べラボーマン系のPCMのあれかもしくはプロテクトかどっちかだな。
いまからMAME103Sを調べてみる。場所は
/src/sound/namco.c
/src/sound/namco.h
という事が判っているからだ。
MAME102Sが見つかった。去年の暮れには、ぎりぎり手に入ったみたいだな、CDに焼いてあった。
それで、いま調査した結果によると、少なくとも、Makefileのどこかに
SOUNDS+=NAMCO_CUS30@
が要るはず。
これはMAME089SでもMAME102Sいる筈だ。
という事はMAME0.97Sでも要るという事だこれは、かなり開発初期にコンパイルしたOBJと
後でワーニングが出ても無視してコンパイルしたOBJをくっつけてビルトした事を意味する。
要するに、できたー。じゃmake clean↓make↓という作業をしてない。
してたら、ワーニングではなくエラーで止まる筈だからだ。
つまり、急いでたんだな。急いでソースを発表した。もう一度リコンパイルしたら、
エラーで止まった。直す時間はなかった。
SYS1はメモリでNGとかREADMEに書いてあるが、余計動作する可能性が高まったじゃないか。
今日はお昼(夜中の0:00)なのでもう寝る。明日にする。じゃあね。(2006-2/14、00:35)
眠くはないが無理やり寝て生活リズムを治さんといかん。
アメブロ記事が40kbytes以内って変な制限なくせよ。真面目に日記書いたら、
40kbぐらい直ぐに超えちゃうよ。不便だわ。