PlayLoud!!

Since1997

バトルガレッガ改造 トラブル編

いろいろ調べているうちに分かったこともメモ。

VRAMアドレス
縦40x横30 1文字1ワード
(1文字画面上部にはみ出る)
50004Fh                   500ECFh
	+---------------------+
	|                     |
	|                     |
	|                     |
	|                     |
	〜                    〜
	〜                    〜
	|                     |
	|                     |
	|                     |
	|                     |
	|                     |
	+---------------------+
500000h 500080h500E80h
※画面上部の見えない部分にもアドレスあり
文字コード
ex.)
CC 30
1バイト目が文字色、2バイト目が文字コード?
文字コードは一般的なASCIIコード+α

文字色
数値	パレット	色
C0 		00C4		01C8		02CC		03D0		04D4		05			水色
D8		06			黄色
DC		07			赤紫
E0		08			白黒
E4		09			黄黒
E8		0A			白黒?
EC		?			赤黒
※色は大体の感じ、他にも数値はありそう

ガレッガ入力
 1479      AM_RANGE(0x21c01c, 0x21c01d) AM_WRITE(toaplan2_coin_word_w)
 1480      AM_RANGE(0x21c020, 0x21c021) AM_READ_PORT("IN1")
 1481      AM_RANGE(0x21c024, 0x21c025) AM_READ_PORT("IN2")
 1482      AM_RANGE(0x21c028, 0x21c029) AM_READ_PORT("SYS")
 1483      AM_RANGE(0x21c02c, 0x21c02d) AM_READ_PORT("DSWA")
 1484      AM_RANGE(0x21c030, 0x21c031) AM_READ_PORT("DSWB")
 1485      AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR")
 1486      AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r)

2P START
21C029h 40
※1P STARTが20hでor値

1P Control
21C021h
読み出し部分
001722: 1039 0021 C021             move.b  $21c021.l, D0
001728: 6100 001A                  bsr     $1744
|
001744: 4A39 0010 CA13             tst.b   $10ca13.l
00174A: 6700 FF46                  beq     $1692
00174E: 1200                       move.b  D0, D1
001750: 0240 00F0                  andi.w  #$f0, D0
001754: 0241 000F                  andi.w  #$f, D1
001758: 803B 1004                  or.b    ($4,PC,D1.w), D0
00175C: 4E75                       rts
|
001692: 4E75                       rts

色コード6bit +文字コード 10bit
 oo oo oo xx    xx xx xx xx

 
で、そんなことを調べながらも改造プログラムをROMイメージに書き込んだら、なんと画面がバグだらけ。
バグバグ!バグバグ!

2時間ほど悩んだ挙句、バイナリエディタにプログラムを貼り付けた際に、インサートモードになっていたことが判明。なんだよそれ……

まあ、なんとかROMイメージになったのでROMに焼いて実機でテストです。
アッー!?

なんと文字化け&色化け。

なんということでしょう!なんということでしょう!
エミュ上では正常に動作するもののROMに焼いて基板に乗せるとこんなんなってしまいます。
同時に、2P STARTを押しているフラグがうまく書き込めていないのか、表示ON/OFF切り替えも「スタートボタン押している間だけ表示」と望んでいる動作と違う挙動を示します。
なんかうまくRAMに書き込めていないか、データが化けてる感じ……?
奇数アドレスにアクセスしてる……のは、1バイトずつ書込なら関係ないよね。
深夜までtwitterのすけさんにアドバイスをもらいながらいろいろ試したものの、解決しませんでした。
 
ちょっと難しそうですが、もうちょっと実験してみましょう。