2009年2月16日月曜日

パドルコントローラの検証用ソフト作成

koiseya氏の解析情報を元に、某パドルコントローラの検証用ソフトを作成しました。
基本的にはSRAM[0]とSRAM[1]を読むだけでOKの模様。
void paddle_init()
{
// SRAM Access Time = 18 cycles
// ROM 1st Access Time = 18 cycles
// PHI-pin out = 4.19MHz
REG_EXMEMCNT = 0x002F;
}

bool paddle_check()
{
uint16 w1, w2, w3;
w1 = GBA_BUS[0x0059];
w2 = GBA_BUS[0xFFFF];
w3 = GBA_BUS[0x0056];
return w1 == 0xEFFF && w2 == 0xEFFF && w3 == 0xEFFF;
}

uint16 paddle_scan()
{
uint16 sram = 0xFFFF;
if (paddle_check()) {
uint8 sram0 = SRAM[0];
uint8 sram1 = SRAM[1];
sram = sram1 << 8 | sram0;
}
return sram;
}
paddle_init()で初期化後、paddle_scan()を呼べば0~FFFhの値が返る。
パドルコントローラ未装着時はFFFFhが返る。

1 件のコメント:

  1. ソースコード表示がパワーアップしてる!
    こりゃ見やすくていいな

    返信削除