#3 不思議ちゃん2の謎(Gens編)(SEGADRIVE)
なんとなく、管理人のHDDにGens212があったので、ソース読んで遊んでた。
で、Gensのメモリ周りはアッセンブラなんね。まあ、合理的っちゃあ合理的だな。
噂の「68000から見て、0xC00005番地」を調べて見たつ。
/*Gens*/
//unsigned short Read_VDP_Status(void)
unsigned md::vdp_ctrl_r(void){
unsigned short i;
unsigned short temp;
i=coo5; //注記:A20はcoo5ですが、現在のA21ではcoo5じゃ訳ワカンナイので、「vdp_status」に変えました。
temp=i;
i ^= 0xFF00; /* xor */
i &= 0xFF9F;
if( (i & 0x0008) ) {
i &= 0xFF1F;
}
//In_VBlank:
coo5=i;
// test byte [VDP_Reg.Set_2], 0x40
coo5=temp;
// jz short .Display_OFF
if( 0x40==(vdpreg[1]&0xff)){/*Display_OFF:*/ temp|=8; } //多分こう
return(temp);
}
<資料>
struct Reg_VDP_Type {
/* 0 */ unsigned int Set1;
/* 1 */ unsigned int Set2; //←これ!!
/* 2 */ unsigned int Pat_ScrA_Adr;
/* 3 */ unsigned int Pat_Win_Adr;
/* 4 */ unsigned int Pat_ScrB_Adr;
/* 5 */ unsigned int Spr_Att_Adr;
以下略
ほい、Gensたんは、こんな感じ。VDPのレジスタ見て消えてるときはビット変えてたけど、
そこは移植してないつ。(あ、ナイツだ!)(移植済み)
ええとX86のアセンブラ昔はやったんだけど、もうすっかり忘れたけど、たぶんOKでしょ。(自信はない)
で、早速PSPに持ってって実行してみたつ。
対応ソフトは、変わんなかったつ。
ところで、このルーチン何ヤッテルの?なんて聞かれたって、知るもんか。
丁度、外国語の短い文章、訳してよって頼まれて、訳してやったら、納得されて感謝されたけど、
訳した本人は、ぜーーーんぜんさっぱり意味が不明だったりする。ありがちな、あの現象と同じつ。
深く考えても意味はない。
よくワカンナイからGensの真似しよ。
つー訳で、ここはこれでOK(VDPなんたらも後で付ける予定つ)(やったけど、変わらない)
不思議ちゃんの謎は、まだまだ残つたのだつた。
<次回へつづく>