I've been working on a resync of
[3216] GBA Castlevania: Aria of Sorrow "all souls" by Fz-Last, klmz & Pike in 17:06.41 in BizHawk (developer build 2018-10-11-214506, but endrift verified that the mGBA core is the same as in 2.3.0). It got as far as frame 20621 of the VBM movie before the RNG values went out of sync permanently. You can find the latest WIP
here. Note that the input can be extended until around VBM frame 21350, but the Student Witch doesn't spawn the soul at VBM frame 21276, so that ends the resync attempt. I'm not sure how to proceed from here. Any thoughts?
EDIT:
Following are the scripts I've been using to dump the addresses to text files. VBA version:
Language: Lua
local addr_game_frame = 0x020000AC
local addr_rng = 0x02000008
local addr_camera_x = 0x0200A09A
local addr_camera_y = 0x0200A09E
local addr_x_pos = 0x02000524
local addr_y_pos = 0x02000528
local addr_x_speed = 0x0200052C
local addr_y_speed = 0x02000530
local frame_counter = 0
local frames_to_run = 0x80
local dump_file = "C:\\DledStuf\\todelete\\CVAoS_dump_VBM.txt"
local dump_file_handle = io.open(dump_file, "w")
if not dump_file_handle then
vba.print("Error opening dump file.")
else
while frame_counter < frames_to_run do
local curr_data = {}
table.insert(curr_data, string.format("%.8X", memory.readdwordunsigned(addr_game_frame)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.readdwordunsigned(addr_rng)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.4X", memory.readwordunsigned(addr_camera_x)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.4X", memory.readwordunsigned(addr_camera_y)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.readdwordunsigned(addr_x_pos)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.readdwordunsigned(addr_y_pos)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.readdwordunsigned(addr_x_speed)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.readdwordunsigned(addr_y_speed)))
table.insert(curr_data, "\n")
local curr_data_combined = table.concat(curr_data)
dump_file_handle:write(curr_data_combined)
frame_counter = frame_counter + 1
vba.frameadvance()
end
end
dump_file_handle:close()
vba.print("Done.")
vba.pause()
BizHawk version:
Language: lua
memory.usememorydomain('EWRAM')
local addr_game_frame = 0x00AC
local addr_rng = 0x0008
local addr_camera_x = 0xA09A
local addr_camera_y = 0xA09E
local addr_x_pos = 0x0524
local addr_y_pos = 0x0528
local addr_x_speed = 0x052C
local addr_y_speed = 0x0530
local frame_counter = 0
local frames_to_run = 0x80
local dump_file = "C:\\DledStuf\\todelete\\CVAoS_dump_BK2.txt"
local dump_file_handle = io.open(dump_file, "w")
if not dump_file_handle then
console.writeline("Error opening dump file.")
else
while frame_counter < frames_to_run do
local curr_data = {}
table.insert(curr_data, string.format("%.8X", memory.read_u32_le(addr_game_frame)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.read_u32_le(addr_rng)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.4X", memory.read_u16_le(addr_camera_x)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.4X", memory.read_u16_le(addr_camera_y)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.read_u32_le(addr_x_pos)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.read_u32_le(addr_y_pos)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.read_u32_le(addr_x_speed)))
table.insert(curr_data, " ")
table.insert(curr_data, string.format("%.8X", memory.read_u32_le(addr_y_speed)))
table.insert(curr_data, "\r\n")
local curr_data_combined = table.concat(curr_data)
dump_file_handle:write(curr_data_combined)
frame_counter = frame_counter + 1
emu.frameadvance()
end
end
dump_file_handle:close()
console.writeline("Done.")
client.pause()
Then I've been comparing the files using
fc /l CVAoS_dump_VBM.txt CVAoS_dump_BK2.txt
on the Windows command prompt to find where the differences are and work from there. I've also got memory watch files with those addresses in each emulator.