#1GEN日記(2006-01/17) | //www.旧型、PSP開発幼稚園.game.jp/(本館)

#1GEN日記(2006-01/17)

GEN日記2006-01/17

えーと、現状わたしのRINはコンパイル実行動作と確認したけど、実はZIPとPNGが、
うまくいってなく、圧縮ROM(ROMカートリッジ)が読めない状態なんですが。

わたしのDGEN1.00も同じ状態でした。 絵も出なく、圧縮ROM(ROMカートリッジ)も読めないですが、動作します。 実はわたしはRINより、DGENをコンパイルした日付の方がはやく、 タイムスタンプ、2006-01/02の2:42となっています。 えーと、たしかDGENは一応C++で、多分殆どCだとは思いますが、 それでもコンパイラドライバに適当に任せてあるので...、
いーや、RINよりもっと前の(2006-01/02)Makeファイルです。 見ても意味ないかも知れないけど、現状です。
TITLE = "DGEN for PSP Ver1.00" BINARY = dgen.out BINARY_P = dgen.outp MAPFILE = dgen.map ICON0 = ICON0.PNG CC = psp-gcc-4.0.0 #CCC = psp-g++ CCC = psp-gcc-4.0.0 LINKER = psp-gcc-4.0.0 #LINKER = psp-ld STRIP = psp-strip OUTPATCH = ./outpatch.exe ELF2PBP = ./elf2pbp.exe AS_OPT = -mgp32 -mlong32 -msingle-float -mabi=eabi CC_OPT = -O3 -fomit-frame-pointer -fno-exceptions -mgp32 -mlong32 -mabi=eabi -c CCC_OPT = -O3 -fomit-frame-pointer -fno-exceptions -mgp32 -mlong32 -mabi=eabi -c LINK_OPT = -nostartfiles -Wl,-Ttext=0x08900000 #LINK_OPT = -nostartfiles -Ttext=0x08900000 -M DEFINES = -D_PSP10 -D_USE_ZLIB -D_SCE_IO MDCORE = 1 #PCECORE = 1 #GBCORE = 1 OBJECTS = psp/startup.o OBJECTS += psp/psp_main.o OBJECTS += psp/psp_std.o psp/psp_screen.o ifdef MDCORE DEFINES += -D_USE_MD -DCOMPILE_WITH_MUSA OBJECTS += psp/mdcore_main.o psp/emu_core.o\ mdcore/mem.o mdcore/vdp.o mdcore/mdfr.o mdcore/ras.o mdcore/fm.o\ mdcore/musa/m68kcpu.o mdcore/musa/m68kopac.o mdcore/musa/m68kopdm.o\ mdcore/musa/m68kops.o mdcore/musa/m68kopnz.o\ mdcore/sn76496.o mdcore/myfm.o mdcore/zz80.o\ mdcore/graph.o mdcore/romload.o mdcore/save.o mdcore/md-joe.o\ mdcore/md.o endif OBJECTS += psp/psp_menu.o psp/psp_bitmap.o psp/psp_cfg_file.o psp/emu_config.o psp/emu_state.o psp/emu_cheat.o LIBRARY = lib/libz.a lib/libpng.a lib/unziplib.a -lc all: $(BINARY) $(BINARY): $(OBJECTS) $(LINKER) $(OBJECTS) $(LIBRARY) $(LINK_OPT) -o $@ > $(MAPFILE) $(STRIP) $(BINARY) $(OUTPATCH) $(BINARY) $(BINARY_P) "USERPROG" $(ELF2PBP) $(BINARY_P) $(TITLE) $(ICON0) %.o : %.c $(CC) $(CC_OPT) $(DEFINES) $< -o $@ %.o : %.cpp $(CCC) $(CCC_OPT) $(DEFINES) $< -o $@ %.o : %.s $(CC) $(DEFINES) $(AS_OPT) -c $< -o $@ clean: del /s /f *.o
今日は、この辺を少し弄ってみますか(日記なのに予定かい) (またあとで) ああ、いい風呂だった。 で、(管理人の書いた)RINのMake移植して、これは、主に、 OBJとSRCが分離してないと、「検索」する時に致命的に困るので。 あと管理も大変だしさ。生理的に気持ち悪いし。エディターに、間違えてOBJ 突っ込んじゃうし。間違えてSRC消しちゃう事故発生するし。 などなど。とにかく、嫌な訳です。 嫌だったら、嫌だったら、嫌だったら嫌なんだーい。 本当は理屈なんて無いんだーい。
というわけで、ちまちま直してたんですが、どっか間違えたみたいです。 中略 src/psp/emu_state.c:357: warning: incompatible implicit declaration of built-in function 'memcpy' src/psp/emu_state.c: In function 'EmuStateSlot_Load_MSD': src/psp/emu_state.c:401: warning: incompatible implicit declaration of built-in function 'memcpy' src/psp/emu_state.c: In function 'EmuStateSlot_Copy': src/psp/emu_state.c:495: warning: incompatible implicit declaration of built-in function 'memcpy' psp-gcc-4.0.0 -O3 -fomit-frame-pointer -fno-exceptions -mgp32 -mlong32 -mabi=eab i -c -D_PSP10 -D_USE_ZLIB -D_SCE_IO -D_USE_MD -DCOMPILE_WITH_MUSA src/psp/emu_ch eat.c -o obj/psp/emu_cheat.o src/psp/emu_cheat.c: In function 'EmuCheat_Init': src/psp/emu_cheat.c:33: warning: incompatible implicit declaration of built-in f unction 'memset' src/psp/emu_cheat.c: In function 'EmuCheat_CalcGG': src/psp/emu_cheat.c:60: warning: incompatible implicit declaration of built-in f unction 'memcpy' src/psp/emu_cheat.c:69: warning: incompatible implicit declaration of built-in f unction 'strchr' make: *** No rule to make target `src/lib/zlib122/libz.a', needed by `dgen.out'. Stop. rm src/psp/startup.s 作業中なんで、LIBZ.Aが無くて止まるのは、当たり前なんですが、注目はその後の1行。

なんでおまい、ソース勝手に消してんねん。

ひぇーーー。 管理人。昔 -O あたりのオプション書き間違えて、ソースにOBJファイルを 上書きしちゃった経験なら、ありますけど。これは酷い。 (追記2006-02/01:これは、「startup.s」という名前が悪い事が判明しました。「startup.S」にしないと、 中間生成物とみなして、自動消去する仕組みです。そういえば、ずーーーと前にも同じ失敗したなぁ。 進歩がない。大文字と小文字の差は天と地程あります。きおつけましょう。) なにがどおなってるのか、要調査ですが、調査しない(できない、しきれない)かも。 わたしが書いた分だけなら1000回読めば、済む話かもしれませんが、もしかしたら 環境の設定の兼ね合いで、結果的にたまたまそうなるのかもしれないですもん。 っていうかそうの気がする。もしかして、渡す順序が悪いのか? 無条件で消すのは、明らかにOBJと勘違いしてるとしか考えられないもんな。
この後コンパイルとうして、みたんだけど、 PSPに入れたら「ピローン」って鳴って、「真っ暗闇」に 電源スイッチ長押ししか受け付けない。
という訳で、じりじりMakefile直してますが、めんどいならあまり変えないかも。
話は変わりますが、 >えーと、現状わたしのRINはコンパイル実行動作と確認したけど、実はZIPとPNGが、 >うまくいってなく、圧縮ROM(ROMカートリッジ)が読めない状態なんですが。 これって冷静に考えると、 数ヶ月前(2005-05月)なら、すごいデメリットだったかもしんないけど、 現時点なら、たいしたデメリットでもないよ。 だって今なら1Gのメモカ1万円切ってるもん。金さえ出せばさくっと挿して終わりじゃん。 PS2のソフト2枚買うより安いよ。 プログラム的に考えれば、あまりにタコな仕様でも、技術革新が解決してくれた。 だって1Gのメモカって実は4年前に九万円程で存在したらしいぞ。(たぶんDuoではないが) わたし的には、DGENだとして、うーん家にあるカートリッジ、MD用300本ぐらいは あるけど、全部無圧縮でいれても1Gあれば、余るよ。(多分) MDはマッパーがないから吸い出すの超楽なんですよ。実は。 セガチップ入りの「VR」はともかく、「Thor」とかどうしても上手く吸い出せない(プロテクト?) カートリッジもあるんだけどね。 16ビットのROMが吸い出せる自作ハードウェアー作って、前にせこせこ吸い出した奴が あるもんね。オリジナルのカートリッジちゃんと取ってあるもんね。 MDに関してなら精神衛生上よろしくない裏の方法を使わなくても、 表の方法で、合法的に調査ができるもんね。 (大体300本位でみかん箱1箱分くらいです。箱、説明書類、全て除く。 まあMDの場合ソーサリアンとか説明書捨てられないゲームもあるけど) MDは標準的に初期は0.5MBぐらい 後期は4MBくらいです。 (例外はある。0.128MBとか8MBとか)
とにかく、DGENの場合はネックは「スピード」だよな。 「PSP Genesis」に再現度では「多少」勝ってるものの、 (どっちもどっちですが。たとえば「コットン3D」はどっちも遊べない) スピードで負けてるもんな。 「ダライアスⅡ」とかこっちで遊ぼうとは、思わないもんな。 まあ「バーニングフォース」あたりなら、なんとかって所だな。 (パレットバグってるけど、あれは、「ラスターパレットの商品見本」みたいなプログラムだからさ) (管理人、昔DISったから、知ってる。DISると巨大な?パレットテーブルが3つくらい出てきます。)
番外編: MDカートリッジの吸出し。 必要なもの、 ○「ISAバス」が1つはついてる。ふるーーーいPC。(ゴミ) (PenⅡPenⅢあたりでも上手くすればある) ○その「ISAバス」に差す「マルチIOカード」(これも相当ビンテージアイテム)(ゴミ) (定価は¥1000~¥2000くらい)486時代の自作風PC(ゴミ)から引っこ抜いた。 ○「半田ごて」と「半田」と「ラッピングワイヤー」(ただの線材)。新聞紙。 ○MD本体、パッド一個、「+のドライバー(2番)」。 ○畳1畳分程の工作スペースと時間3日グライ。電気のコンセントがとどく場所。 ○25ピンDサブコネクタ(オスとかメスとかいろいろ) ○いらなくなったプリンターケーブル(ゴミ)(コネクタは使わない) ○ちっちゃい万能基盤(¥120)ぐらい。 ○ニッパー、カッターナイフ、ペンチ。 わたしは大昔。以上の材料で作りました。
作り方 1.MD本体を分解。 2.感謝の気持ちをこめてMDのメイン基盤を叩き壊す。カートリッジコネクタ以外はすべてゴミ。 3.パッドも分解。「74LS157」に似た型番の石、たぶん(74AS157)が入ってるので、 それを使う。 それ以外はゴミ...、なんだけどUSBジョイスティックあたりに改造してみるのもいいかも。 4.ふるーーーいPCにふるーーーいカードを差すと、プリンタポートが2つになる。 これがポイント。 BIOSでプリンタポートのモードを設定してうまく使えるようにする。 5.MDの場合アドレスバス(OUT)24本データーバス16本(IN)だよな。 「157」はセレクタなので、データーバス16本を8本に変換させるのに使う。 6.プリンタポートが2つもあるんだから、信号の意味なんてぜーーんぜん考えず、 INとOUTにだけ注意してROM直結のプログラムを 「LSI-Cお験し版」で書いて、吸い出す。
このアホみたいなハードウェアーで吸い出せます。 「157」は相当高速に動作してる筈ですが、なんの問題もない。 プログラムは5回連続して吸い出して、全部同じならOKってな感じになってる。 ハードウェアーはそういう感じで試行錯誤して、 一番信頼性の高かったケーブル長15cmぐらいになってます。
だから、レトロPCが捨てられないんだってば。 管理人ソフトなら判りますが、ハードは判りません。 でも、必要だったからこの程度なら何とでもなりましたよ。