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が捨てられないんだってば。
管理人ソフトなら判りますが、ハードは判りません。
でも、必要だったからこの程度なら何とでもなりましたよ。