CheatMaker 论坛

注册

 

发新话题 回复该主题

VBA系模擬器的GB與GBC基址研究 [复制链接]

1#
不囉嗦先上圖(這邊以VBA-M 2.0.0 beta2示例)

圖中紅色框的部分,每4字節為單位的數值
分別以0x1000為單位指向了GB與GBC內存地址的0x0000至0xFFFF
例如地址0x0085BA40的數值指向的地址是GB與GBC內存地址的0x0000
0x0085BA44則是0x1000,依此類推
不過很不巧的,我發現並不能以紅色框內的地址段作為基址
GB與GBC遊戲的內存有bank這回事
當bank值發生變化時,紅色框內地址段的數據也會發生變化
說句真的,除非從某些地址的數據指向的地址來判斷
否則也不曉得自己有沒有定位到正確的實際內存地址
至於"某些地址"指的是哪些地址呢?
分別是0x0085BA80(ROM/0x0000),0x0085BA2C(SRAM/0xA000)
0x0085BA30(WRAM/0xC000)以及0x0085BA28(WRAM/0xD000/僅GBC遊戲使用)
(其實還有0x0085BA38,不過那是VRAM且一樣僅GBC遊戲使用,一般較少修改會使用到這段內存)
我自己是用以上地址作為基址使用,不過幾個地址的數據還要加上偏移才會指向到實際內存地址
0x0085BA30的數據要加上偏移0xC000,0x0085BA28則是0x1000
用這幾個地址當基址我覺得最穩定,紅色框中地址段的數據指向的地址只能當作參考
而我使用的地址數據基本在遊戲運行時不會變化(除非重置或切換遊戲),用來當基址是最合適的
如果要以CM的基址形式來說,我會照以下圖片設置


以上如果有誤請小力點鞭
最后编辑Blader 最后编辑于 2017-09-19 14:40:18
分享 转发
TOP
发新话题 回复该主题