Created
August 12, 2018 15:59
-
-
Save taotao54321/adb96c2bca71bf8158cedebc5be197b2 to your computer and use it in GitHub Desktop.
ドクターマリオ (FC) NMI戻りアドレス表示 & 色すり替えバグ支援
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--[[ | |
ドクターマリオ (FC) NMI戻りアドレス表示 (for FCEUX) | |
色すり替えが可能な場合、戻りアドレスが緑色で表示し、さらに該当マスを緑 | |
色で囲って表示する。 | |
※色すり替えが可能かどうかの判定は割とアバウトなので、できない場合もあ | |
りうる。厳密に知りたければ頑張ってアセンブリを読んでください>< | |
--]] | |
local function carry_is_set() | |
return bit.band(memory.getregister("p"),1) == 1 | |
end | |
local function get_rti_addr() | |
local sp = memory.getregister("s") | |
return 0x100*memory.readbyte(0x100+sp+3) + memory.readbyte(0x100+sp+2) | |
end | |
local function changeable_h(rti_addr) | |
return 0x921A <= rti_addr and rti_addr <= 0x923B | |
end | |
local function changeable_v(rti_addr) | |
return 0x947B <= rti_addr and rti_addr <= 0x94A1 | |
end | |
local function main() | |
local idx = 0 | |
local rti_addr = 0 | |
memory.registerexec(0x8005, function() | |
idx = memory.readbyte(0x59) | |
rti_addr = get_rti_addr() | |
end) | |
emu.registerafter(function() | |
local text_color = "white" | |
if changeable_h(rti_addr) or changeable_v(rti_addr) then | |
text_color = "green" | |
local r = math.floor(idx / 8) | |
local c = idx % 8 | |
local x = 96 + 8*c | |
local y = 80 + 8*r | |
gui.rect(x, y, x+8, y+8, nil, "green") | |
end | |
gui.text(192, 16, string.format("0x%04X", rti_addr), text_color) | |
end) | |
end | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment