PlayLoud!!

Since1997

バトルガレッガ改造 テキストVRAMのトラブル

タイトルにバージョン表示を入れてみました。

なぜか、画面左端にゴミが表示されます。
なんと起動したときのWARNING画面にも。

実はこれもエミュ上では起きないのに、実機では起きてしまうトラブル。
Twitterではこれまたよくお世話になってるid:EXCEEDさんに「Vblankを無視すると誤動作を起こす可能性がある」ということを示唆していただきました。
http://twitter.com/#!/mc68060rc75/status/45530310967963648
早速ガレッガのソースを見て文字描画の場所を読んでみたのですが……

00257A: 1618                       move.b  (A0)+, D3
00257C: 6700 F90C                  beq     $1e8a
002580: 3283                       move.w  D3, (A1)
002582: 43E9 0080                  lea     ($80,A1), A1
002586: 60F2                       bra     $257a

実機でも別にVblankを待っているような処理はなく、単にVRAM上にデータ転送しちゃってるんですよね……。
うーん、これは難しい。
 
実は、バージョン表示を入れるのに、画面上のVRAMを読み出してデモ画面の判定をしているのですが、VRAMを勝手にREAD用途で使うなってことでしょうか……?
また実験してみます。