息抜き第2弾MAMEで行ってみよう。(2006-02/13)
一昨日だか折角PSPMAMEのソースを落としてきたんだから、
(註:追記:リンク先のページの何処かにミラーがありんす。本家は落とせないからさ。)
そろそろコンパイルしたくなってきた(このページは、管理人の気分で運営されている)
今11:00、そろそろお昼だけど、リアルタイムで何処まで出来るかやってみよう。
先ずMAME0.97で検索してみた。が、見付らない。仕方がないMAME104をベースにしよう。
ちなみにHDDの空きが357MB空きが100MB切るとまずいからなんか消す作業を始めなければならない。
まだREADを読んでる途中。なになに、
PSPMAME r0.4 source
TMK
中略
・CPSやSYSTEM1等はメモリ不足で動かない。
カーネルのメモリは使えないのかな?
中略
展望:
源平や、ファンタジーゾーン、スペハリ、R-TYPE等が
遊べる位の速度で動かしたい・・
何ぃ。さしあたってシステムⅠで実験しようと思ったのに。
源平は86。この系統のボードの歴史はこんな感じ。(管理人記憶による)
ローリングサンダー→86→システムⅠ(87)
6809が4つぐらいのボードシリーズ。
システムⅡ以降は全く別系統になってる。
どおしようかな。(しばし考えさせてくれ、10分ぐらい)
いまアメブロメンテナンス中とかで、(08;00)に終わる予定の奴が終わってない。
書けないから、ここにメモ:
/entry-10009044182.html
早くメンテナンス終わってね。この日記が荒れるから。今(11:15)
おし、決めた。今回は「taito2.mak」な、NAMCOのNA2あたりにも、
(システムⅡとシステムNAで全く別系統のシステムです)
心引かれたが、まだ本家が成長中だしな。(サウンド関係)
「taito2.mak」っていっても、ガシガシおいしそうな所削除しちゃう予定なので、変な期待はしないように、
まずはナイストかD2辺りが妥当だろう。
driver_contcrcu,driver_contcrua,コンチ
,driver_chasehqj,driver_chasehq,チェイスHQ
river_drius2do,driver_darius2d,2画面版
辺りがあるから、Zシステムはコンパイルは出来そうだ(動くかどうかは別)
MAMEのソースは中でぐちゃぐちゃ繋がってるから、いろいろ無いとそのままではコンパイルすらできん。
とりあえず、今回は
driver_kaiserkn,の系統を外すか(つまり68020)
この系統が客観的に見て一番おいしい所だが涙をのんで外そう。PSP(と管理人)には荷が重過ぎる。
要するにレイフォースやダライアス外伝、その辺はあきらめるって事だよ。
# uses these CPUs
CPUS+=M68000@
CPUS+=M68020@
CPUS+=M68EC020@
CPUS+=M6800@
CPUS+=TMS32025@
CPUS+=Z80@
こうなってる、TMS32025と68EC020を外してしまおう。
# uses these SOUNDs
SOUNDS+=ES5505@
SOUNDS+=MSM5205@
SOUNDS+=OKIM6295@
SOUNDS+=YM2151@
SOUNDS+=YM2203@
SOUNDS+=YM2610@
SOUNDS+=YM2610B@
こいつはES5505に涙を飲んでどいてもらうしかない。
よく判らんがまず初めに「taito2.mak」をコピーして「taitoz.mak」にした。
次に
# a tiny compile is without Neogeo games
COREDEFS += -DTINY_COMPILE=1
COREDEFS += -DTINY_NAME="driver_contcrcu,driver_contcrua,driver_contcirc"
COREDEFS += -DTINY_POINTER="&driver_contcrcu,&driver_contcrua,&driver_contcirc"
# uses these CPUs
CPUS+=M68000@
CPUS+=M68020@
#CPUS+=M68EC020@
CPUS+=M6800@
#CPUS+=TMS32025@
CPUS+=Z80@
# uses these SOUNDs
#SOUNDS+=ES5505@
SOUNDS+=MSM5205@
SOUNDS+=OKIM6295@
SOUNDS+=YM2151@
SOUNDS+=YM2203@
SOUNDS+=YM2610@
SOUNDS+=YM2610B@
SOUNDS+=DAC@
SOUNDS+=UPD7759@
SOUNDS+=YM2413@
SOUNDS+=SN76496@
SOUNDS+=YM3812@
SOUNDS+=YM3438@
SOUNDS+=YM2612@
#SOUNDS+=X1_010@
#SOUNDS+=CUSTOM@
DRVLIBS =
$(OBJ)/shared.a: \
$(OBJ)/machine/segacrpt.o \
$(OBJ)/machine/tmp68301.o \
$(OBJ)/machine/6532riot.o \
$(OBJ)/machine/z80fmly.o \
$(OBJ)/machine/random.o \
$(OBJ)/machine/adc083x.o \
$(OBJ)/vidhrdw/tlc34076.o \
$(OBJ)/vidhrdw/res_net.o
# $(OBJ)/machine/6821pia.o
# $(OBJ)/machine/8255ppi.o
# $(OBJ)/machine/6522via.o
# $(OBJ)/machine/7474.o
# $(OBJ)/machine/idectrl.o
# $(OBJ)/machine/ticket.o
# $(OBJ)/vidhrdw/crtc6845.o
# $(OBJ)/vidhrdw/avgdvg.o
# $(OBJ)/vidhrdw/poly.o
# MAME specific core objs
COREOBJS += $(OBJ)/tiny.o $(OBJ)/cheat.o
直感で辺りにする。どおせチェイスHQのドライバがないだの、コンパイラに
いろいろ怒られるが、覚悟の上だ。
いまsistem1.makっての発見もう遅いよ。てっきり、MAMEだからセガのシステム1だと思って、
開けて見もしなかった。とにかく今日はZで行くぞ。(11:50)今からお昼ごはん。
お昼食べて、訳判らんから、MAME.ZIP(63MB)を全部解凍してしまった。
で、HDDの空きが239MB。140MBしか余裕がない。
PSPMAME04Sの「startup.s」ファイル名が小文字になってるのを発見。
コンパイル中断で問答無用で消去されちゃうので、拡張子を大文字のSに変更。あぶないあぶない。
「startup.s」は駄目。「startup.S」ならOK.念のため。
取り敢えず「rules.mak」てのが無いらしい。取りあえず104Sにはない。名前が変更になってるんだろう。
多分。調べなきゃ。
おかしいな。こいつが無い訳ないのに。こんなのはVERに関係ないじゃろ。適当なほかのVERから、
抜いてこよう。そもそも古いも新しいもないと思うよ。
*.makで検索したら、判った。
rules.makは104Sではcpu.makとsound.makに分割されて、それぞれのディレクトリに配置になったようだ。
これをくっつけて名前をrules.makとしsrcディレクトリに配置すれば、元に戻る。HDDの開きがいつの間にやら
230MBになってるので(仮想メモリ、自動のせい)早めにZ180とかV60とかを消しておこう。
makefileを
# set this to mame, mess or the destination you want to build
# TARGET = mame
# TARGET = mess
# example for a tiny compile
TARGET = taitoz
ifeq ($(TARGET),)
TARGET = mame
endif
と書き換え。
$ make↓
mkdir.exe obj/taitozpsp
mkdir.exe obj/taitozpsp/cpu
mkdir.exe obj/taitozpsp/debug
mkdir.exe obj/taitozpsp/drivers
mkdir.exe obj/taitozpsp/expat
mkdir.exe obj/taitozpsp/machine
mkdir.exe obj/taitozpsp/psp
mkdir.exe obj/taitozpsp/sndhrdw
mkdir.exe obj/taitozpsp/sound
mkdir.exe obj/taitozpsp/vidhrdw
mkdir.exe obj/taitozpsp/zlib
mkdir.exe pbp
mkdir.exe pbp/taitoz
Assembling src/psp/startup.s...
mipsel-elf-gcc -o obj/taitozpsp/psp/startup.o -march=r4000 -g -mabi=eabi -mgp32
-c -xassembler -O src/psp/startup.s
make: mipsel-elf-gcc: Command not found
make: *** [obj/taitozpsp/psp/startup.o] Error 127
ファイル名変えたからエラーだな。
「mipsel-elf-gcc」は何処から出てきたんだ。先ずはこれを「検索」。
あった、src\psp\psp.makだ。
こいつをGCC400用に書き換えよう。startup.Sにもしよう。
AR = psp-gcc-4.0.0
CC = psp-gcc-4.0.0
LD = psp-gcc-4.0.0
ASM = xxxx_mipsel-elf-as
STRIP =psp-strip
アーカイバはライブラリアンを指定しとけば、勝手にやってくれるので、これでよい。
無理にpsp-arなんちゃらなんて書く必要はない。
アセンブラは判らないので、勝手にやられると困るから、エラーを出させよう。(2006-02-13 13:18)
ASMFLAGS = -mabi=eabi -mgp32 -c -O
#-march=r4000 -g -xassembler
こうした。
startup.Sの
.section .rodata.entrytable,"wa",@progbits
__entrytable:
ここはxodataにする。
$ make
Assembling src/psp/startup.S...
psp-gcc-4.0.0 -o obj/taitozpsp/psp/startup.o -mabi=eabi -mgp32 -c -O src/psp/s
tartup.S
make: *** No rule to make target `obj/taitozpsp/artwork.o', needed by `EBOOT.PBP
'. Stop.
アートワークなんて要らないんだけどなあ、管理人がアートワークが要ると思ったゲームは、
ナムコシステムⅡのゴーリーゴーストぐらいなもんだよ。入れたくないが、ソースに密接にくっついてる。
今は外すのめんどくさいからあとにしよ。ダミーの関数2つぐらいで、確か回避できる筈なんだけど。
でもベクター関係のエラーが出たら今すぐ外そう。あ、でもやっぱあとにしよ。104Sじゃあめんどい。
とかいう落ちになるかもしれんしなあ。
artwork.h
artwork.c
を入れただけで訳判らんエラーがバリバリ出てる。rules.makもただ貼り付けただけじゃあ、
画面がうざくてかなわん。これのいらんもん外そう。
DHAS_Z180=0 -DHAS_Z8000=0 -DHAS_CUSTOM=0 -DHAS_SAMPLES=0 -DHAS_DAC=0 -DHAS_DMADA
C=0 -DHAS_CDDA=0 -DHAS_DISCRETE=0 -DHAS_POKEY=0 -DHAS_TIA=0 -DHAS_ASTROCADE=0 -D
HAS_CEM3394=0 -DHAS_BSMT2000=0 -DHAS_ES5505=0 -DHAS_ES5506=0 -DHAS_ES8712=0 -DHA
S_GAELCO_CG1V=0 -DHAS_GAELCO_GAE1=0 -DHAS_AY8910=0 -DHAS_HC55516=0 -DHAS_C6280=0
-DHAS_ICS2115=0 -DHAS_IREMGA20=0 -DHAS_K005289=0 -DHAS_K007232=0 -DHAS_K051649=
0 -DHAS_K053260=0 -DHAS_K054539=0 -DHAS_NAMCO=0 -DHAS_NAMCO_15XX=0 -DHAS_NAMCO_C
US30=0 -DHAS_NAMCO_52XX=0 -DHAS_NAMCO_54XX=0 -DHAS_NAMCO_63701X=0 -DHAS_NAMCONA=
0 -DHAS_C140=0 -DHAS_C352=0 -DHAS_NES=0 -DHAS_UPD7759=0 -DHAS_MSM5205=0 -DHAS_MS
M5232=0 -DHAS_OKIM6295=0 -DHAS_SAA1099=0 -DHAS_QSOUND=0 -DHAS_RF5C68=0 -DHAS_RF5
C400=0 -DHAS_SEGAPCM=0 -DHAS_MULTIPCM=0 -DHAS_SCSP=0 -DHAS_ST0016=0 -DHAS_X1_010
=0 -DHAS_PSXSPU=0 -DHAS_SP0250=0 -DHAS_SN76477=0 -DHAS_SN76496=0 -DHAS_TMS36XX=0
-DHAS_TMS5110=0 -DHAS_TMS5220=0 -DHAS_VLM5030=0 -DHAS_VOTRAX=0 -DHAS_VRENDER0=0
-DHAS_YM2151=0 -DHAS_YM2203=0 -DHAS_YM2413=0 -DHAS_YM2608=0 -DHAS_YM2610=0 -DHA
S_YM2610B=0 -DHAS_YM2612=0 -DHAS_YM3438=0 -DHAS_YM3812=0 -DHAS_YM3526=0 -DHAS_Y8
950=0 -DHAS_YMF262=0 -DHAS_YMF271=0 -DHAS_YMF278B=0 -DHAS_YMZ280B=0 -std=gnu99
-Isrc -Isrc/includes -Isrc/debug -Isrc/psp -Iobj/taitozpsp/cpu/m68000 -Isrc/cpu
/m68000 -DNDEBUG -march=r4000 -mabi=eabi -mgp32 -mlong32 -msingle-float -include
src/psp/floatonly.h -O3 -fomit-frame-pointer -fno-strict-aliasing -Wall -Wno-si
gn-compare -Wunused -Wpointer-arith -Wbad-function-cast -Wcast-align -Wstrict-pr
ototypes -Wundef -Wformat-security -Wwrite-strings -Wdisabled-optimization -Isr
c/expat -Isrc/zlib -D_HUGE=HUGE_VAL -DCLIB_DECL= -c src/artwork.c -o obj/taitozp
sp/artwork.o
47075 [main] make 3887713 fork_parent: child 3864613 died waiting for longjmp
before initialization
make:
げぇ!cygwin死んでる。ほらほら、これが「longjmp」だよ。こういう珍しいメッセージは見といた方がいい。
訳わからんエラーが出たから、ベシって消すだけじゃ。いつまでたっても初心者だぞ。
まあ、このメッセージ自体には意味なんてないが、周辺知識があるのと無いのでは見方が違う。
しかし3887713か。本当なのかな。そんなくだらん事よりも重要な事がある。
SOUNDS+=YM2151@
SOUNDS+=YM2203@
SOUNDS+=YM2610@
SOUNDS+=YM2610B@
とか書いといたのに
-DHAS_YM2151=0 -DHAS_YM2203=0 -DHAS_YM2413=0 -DHAS_YM2608=0 -DHAS_YM2610=0 -DHA
S_YM2610B=0 -DHAS_YM2612=0 -DHAS_YM3438=0 -DHAS_YM3812=0 -DHAS_YM3526=0 -DHAS_Y8
950=0 -DHAS_YMF262=0 -DHAS_YMF271=0 -DHAS_YMF278B=0 -DHAS_YMZ280B=0
ってのは何事。直さなきゃ。(2006-02/13、13:45)
cygwinがwinごと道ずれにして、死に腐ったので、もう一度再起動(linuxでは考えられん)不要なゴミ消してたら、
そうそうZのドライバあったんで、みとこ。
Taito Z System [twin 68K with optional Z80]
-------------------------------------------
くう、しまったな。これじゃあ30fpsでるかどうか怪しい。10fpsとかなら動いても嬉しくないでしょ。
つまり68000+68000+Z80か。対応ゲームは、
GAME( 1987, contcirc, 0, contcirc, contcirc, taitoz, ROT0, "Taito Corporation Japan", "Continental Circus (World)", GAME_IMPERFECT_GRAPHICS )
GAME( 1987, contcrcu, contcirc, contcirc, contcrcu, taitoz, ROT0, "Taito America Corporation", "Continental Circus (US set 1)", GAME_IMPERFECT_GRAPHICS )
GAME( 1987, contcrua, contcirc, contcirc, contcrcu, taitoz, ROT0, "Taito America Corporation", "Continental Circus (US set 2)", GAME_IMPERFECT_GRAPHICS )
GAME( 1988, chasehq, 0, chasehq, chasehq, taitoz, ROT0, "Taito Corporation Japan", "Chase H.Q. (World)", GAME_IMPERFECT_GRAPHICS )
GAME( 1988, chasehqj, chasehq, chasehq, chasehqj, taitoz, ROT0, "Taito Corporation", "Chase H.Q. (Japan)", GAME_IMPERFECT_GRAPHICS )
GAME( 1988, enforce, 0, enforce, enforce, taitoz, ROT0, "Taito Corporation", "Enforce (Japan)", GAME_IMPERFECT_GRAPHICS )
GAME( 1989, bshark, 0, bshark, bshark, bshark, ORIENTATION_FLIP_X, "Taito America Corporation", "Battle Shark (US)", GAME_IMPERFECT_GRAPHICS )
GAME( 1989, bsharkj, bshark, bshark, bsharkj, bshark, ORIENTATION_FLIP_X, "Taito Corporation", "Battle Shark (Japan)", GAME_IMPERFECT_GRAPHICS )
GAME( 1989, sci, 0, sci, sci, taitoz, ROT0, "Taito Corporation Japan", "Special Criminal Investigation (World set 1)", GAME_IMPERFECT_GRAPHICS )
GAME( 1989, scia, sci, sci, sci, taitoz, ROT0, "Taito Corporation Japan", "Special Criminal Investigation (World set 2)", GAME_IMPERFECT_GRAPHICS )
GAME( 1989, sciu, sci, sci, sciu, taitoz, ROT0, "Taito America Corporation", "Special Criminal Investigation (US)", GAME_IMPERFECT_GRAPHICS )
GAME( 1989, nightstr, 0, nightstr, nightstr, taitoz, ROT0, "Taito America Corporation", "Night Striker (US)", GAME_IMPERFECT_GRAPHICS )
GAME( 1990, aquajack, 0, aquajack, aquajack, taitoz, ROT0, "Taito Corporation Japan", "Aqua Jack (World)", GAME_IMPERFECT_GRAPHICS )
GAME( 1990, aquajckj, aquajack, aquajack, aquajckj, taitoz, ROT0, "Taito Corporation", "Aqua Jack (Japan)", GAME_IMPERFECT_GRAPHICS )
GAME( 1990, spacegun, 0, spacegun, spacegun, bshark, ORIENTATION_FLIP_X, "Taito Corporation Japan", "Space Gun (World)", 0 )
GAME( 1991, dblaxle, 0, dblaxle, dblaxle, taitoz, ROT0, "Taito America Corporation", "Double Axle (US)", GAME_IMPERFECT_GRAPHICS )
GAME( 1991, pwheelsj, dblaxle, dblaxle, pwheelsj, taitoz, ROT0, "Taito Corporation", "Power Wheels (Japan)", GAME_IMPERFECT_GRAPHICS )
GAME( 1991, racingb, 0, racingb, dblaxle, taitoz, ROT0, "Taito Corporation Japan", "Racing Beat (World)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
まず入るのがナイスト。チェイスHQ系は(SCIとか)レンダーが別だった記憶がある。
もし、レンダーが別なら、面倒だからはずすかも。
さしあたって、ナイストとコンチとアクアジャックだな。それ以外は入らんかもしれん。
別に管理人、ナイストもコンチもアクアジャックもどうしても遊びたいって訳ではないんだが、
いや、60fps動作するのなら、どうしても遊びたいな。まあ、そんなん(管理人の技術力では)無理だけどさ。
include src/taitoz.mak
include src/rules.mak
にしても、駄目。おかしいなと思って、taitoz.makの初めの方をカットしてrules.makの頭に貼り付けた(どうせここでしか主な所は使わん。)でもだめ。
仕方がないから、ちまちま、直す事にする。
さっきカット&ペーストしたのは即効で元に戻すんだぞ。「とりあえず」を放置しとくと、後で訳わからん事態になるからな。
エディタの戻る機能で簡単に戻れるし。戻して保存。
「ちまちま、直す」ってったって。まさか、一行づつ手打ちで直す訳がない。過去のrules.makと見比べて、
エディタで一括置換だよ。誤解すんなよ。労働力は少なければ少ない方がいいんだから。
で、問題の過去ソース。落としたくないなあHDDの空きがないんだよ。でも我慢して落とすことにする。
これは当然MAME0.69ね。家には何も無いんだから。
2003-05-23 mame069s.zip, 8324 kB これが展開して増えると思うと気が重い。がDL.
残り164MBですな。100MB切ったら何が起こるかわからん。64MBって
極普通のUSBメモリにも負けてないか?
まあいいや、とにかくこいつ(一次解凍の45MBzip)を展開する訳にはいかないので、アーカイブ内操作となる。
まあ必要なのは、その都度、ちょくちょく取ってくればいいんだから、不便はない。
さしあたって要るのがrules.makこれはrules064.makとでも名前を変えておこう。後で絶対わかんなくなる。
#-------------------------------------------------
# GI AY-8910
#-------------------------------------------------
SOUNDDEFS += -DHAS_AY8910=$(if $(filter AY8910,$(SOUNDS)),1,0)
ifneq ($(filter AY8910,$(SOUNDS)),)
SOUNDOBJS += $(OBJ)/sound/ay8910.o
endif
が、
SOUND=$(strip $(findstring AY8910@,$(SOUNDS)))
ifneq ($(SOUND),)
SOUNDDEFS += -DHAS_AY8910=1
SOUNDOBJS += $(OBJ)/sound/ay8910.o
else
SOUNDDEFS += -DHAS_AY8910=0
endif
となる筈だかどおやって置換すればいいんだ?逆なら簡単だが、ここは、めんどいから0.64の奴を
そのまま使おう。万一問題になったら、後で考えればいいや。
今度はまともになってきた。
略
-Wpointer-arith -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wundef -W
format-security -Wwrite-strings -Wdisabled-optimization -Isrc/expat -Isrc/zlib
-D_HUGE=HUGE_VAL -DCLIB_DECL= -c src/artwork.c -o obj/taitozpsp/artwork.o
src/artwork.c:307:20: error: driver.h: No such file or directory
src/artwork.c:308:17: error: png.h: No such file or directory
In file included from src/artwork.c:309:
src/artwork.h:70: error: parse error before '*' token
src/artwork.h:70: warning: function declaration isn't a prototype
src/artwork.h:73: warning: no semicolon at end of struct or union
src/artwork.h:80: error: parse error before 'UINT8'
略
何とか=1とかになってたし、driver.hがないとか、言ってるからOK。
メッセージに従い。
driver.h
driver.c
png.h
png.c
を入れよう。
driver.hは、
#include "mamecore.h"
#include "osdepend.h"
#include "memory.h"
#include "mamedbg.h"
#include "mame.h"
#include "common.h"
#include "drawgfx.h"
#include "palette.h"
#include "cpuintrf.h"
#include "cpuexec.h"
#include "cpuint.h"
#include "sndintrf.h"
#include "input.h"
#include "inptport.h"
#include "usrintrf.h"
#include "cheat.h"
#include "tilemap.h"
#include "profiler.h"
をインクルードしてる。名前を探して対応する「*.h」をいれ、この際「*.c」もついでに入れておこう。
コンパイルしてみるのはそれからだ。コンパイルしてみればやる程作業が速く進むわけではない。
変なエラーに翻弄される事もある。
やる前から簡単に予測出来るエラーメッセージはださんでもよかろ。
(2006-そろそろ15:00休憩にするかな)
アメブロまだメンテ中だって、(15:42)何時終わるんだろ。
管理人の直感で、MAME104Sに無理して追加するより、
MAME069Sでやった方が良い気がしてきた。
VER番号が酷く違うから翻弄されそうだけど。MAME069Sって2003年頃。結構新しい。
DGENだって結局中身は2001年頃の奴だったし、MAME0.97Sとそれ程大きな差があるとは
おもえん。ここは素直にMAME104Sを破棄して、初めからやり直した方が恐らく速い。
という訳で今日11時頃からやった分はすべて破棄。初めからやり直す。
時間が無駄になった訳ではない。ノウハウが貯まったろ?rules.makとか
Zシステムは68000が2個使いだとか、
もう一度Zにするか、システムⅠにするか悩むチャンスがあるって事だ。
READMEにシステムⅠはメモリが足りないから動きませんって書いてあるから、
じゃあやってみようかなって。魅力的なんだけど、
CPU5個もあるしなあ(MCUもCPU並みの負荷を要求する筈)
8ビットx5個対
16ビットx2個+8ビット1個。かあ。
だったら素直にシステムⅡとか(でも16MHzとか高クロック)
システムNAとか(これは確か68000x1個。)
どおしよう。
F3はレンダー負荷が重そうで、現実的でないし。
F2あたりなら動きそうだな。
F2は68000一個(12MHz)とZ80(4MHz)だって。
メガドラは68000一個(7MHz)とZ80(3.5MHz)だから悪くなりそうだけど、
レンダー次第でしょ。
メタルブラックとガンフロンティアかあ。
あれ?システムⅠ、8ビット4個じゃん。2001年を超えたシステムⅠの世界は良く知らんが、
なんか、音楽関連少しデバッグしたみたいだし。このシステムは色々難があって、未だにMAMEで
きちんと動作しないのも知ってる。でも、PSPMAME04で動かなかったみたいだし。
決めた。こいつにしよ。決定。
今までに決めた事。まとめ。
「MAME0.69S」を使う。
「PSPMAME04S」を使う。
わかんなくなったら、「MAME104S」からソース、サルベージ。
ナムコ「システムⅠ」のみの単体エミュ。
フリップ(画面反転機能)は対応しない。(で、レンダーを軽くする)
おし、全部消して初めからやり直しだ。
システムI纏め。
CPUは
6809(1.536MHz)実はまだ誰も判らない。
6809(1.536MHz)実はまだ誰も判らない。
6809(1.536MHz)実はまだ誰も判らない。
6800もどきのMCU(HD63701)(1.536MHz)実はまだ誰も判らない。
だが、実はまだ誰も判らない。(MAMEのも適当)
VSYNCの60.606060は明らかに間違っている。
それ以下の事らしい(オシロで測定したらしく)が、これはそれ以上判らなかったから、
仮にそう書いているだけの事であって現実のシステムⅠは違う。
MAMEのデンジャラスシード(システムⅠの中では軽めのゲーム、プロテクトが軽い)
をMAME系の何のエミュでもいいから、立ち上げてリセットを何度か押そう。ほら画面がバグった。
実はまだ、この程度のレベルなんだよ。まだわからない事が、多いんだ実は。
とにかくCPUが4つもあるとメモリ周りの実装が厳しい。
でもPSPMAMEのREADMEに書いてある。メモリが足りないってのはピント外れ。
足りないんじゃあないんだよ。もっと違う理由。
16ビットがひとつもないからフェチが8ビットにカスタマイズできるのは嬉しい。
もちろん8ビットでの16ビットアクセスはあるだろう。
だが昨今のMAMEのように32ビット、64ビット128ビットのメモリ周りルーチンはすべて取り外せる。
IOポートを使ってるのはMCUだけだ。MCUはCPUをカスタマイズして、MAMEのメモリエンジンからは
IOポート系の実装を削除してしまおう。どうせMCUがやってるのは入力とプロテクトとサンプリングサウンド
(べラボーマン等はここで嵌る)だけだ。
初めてMAMEがシステムⅠを(非公式)対応した時(1998年)はMCUはROMのダンプすらされていなく、
エミュレーターではなくシミュレーターで動いていた。
(それでもドラスピは起動してゲームができた。但し弾に当たるとシステム(MAME)が落ちた。
システム(MAME)が立ち上がるまでに5分くらい、(プロテクト解除の実装の都合で)
(K6-200のマシンで、当時)
しかも弾が見えない。それでもボスまでたどり着いた私って一体...どんなゲーマーや)
おし、一から、出直しや