Standing Items initial commit

This commit is contained in:
aerinon
2021-12-16 16:02:11 -07:00
parent c651d1d584
commit b2f2565271
26 changed files with 618 additions and 469 deletions

View File

@@ -584,10 +584,11 @@ def extract_data_from_jp_rom(rom):
with open(rom, 'rb') as stream:
rom_data = bytearray(stream.read())
rooms = [0x1c, 0x1d, 0x4e]
rooms = range(0, 0x128)
# rooms = [0x7b, 0x7c, 0x7d, 0x8b, 0x8c, 0x8d, 0x9b, 0x9c, 0x9d]
# rooms = [0x1a, 0x2a, 0xd1]
for room in rooms:
# print(f'Room {room:02x}')
b2idx = room*2
b3idx = room*3
headerptr = 0x271e2 + b2idx
@@ -604,6 +605,7 @@ def extract_data_from_jp_rom(rom):
stop, idx = False, 0
ffcnt = 0
mode = 0
secret_cnt = 0
# first two bytes
b1 = rom_data[objectloc+idx]
b2 = rom_data[objectloc+idx+1]
@@ -625,9 +627,20 @@ def extract_data_from_jp_rom(rom):
idx += 2
elif not mode and ffcnt < 3:
objectdata.append(b3)
if b3 == 0xFA and ((b2 & 0x3) << 2) | (b1 & 0x3) in [0xf, 0xc]:
# potcalc
vram = ((b1 & 0xFC) >> 1) | ((b2 & 0xFC) << 5)
low = vram & 0xFF
high = (vram & 0xFF00) >> 8
if ffcnt == 1:
high |= 0x20
print(f'db {", ".join([f"${low:02x}", f"${high:02x}"])}')
secret_cnt += 1
idx += 3
else:
idx += 2
if secret_cnt:
print(f'Room {room:02x} {secret_cnt}')
spriteptr = 0x4d62e + b2idx
spriteloc = rom_data[spriteptr] + rom_data[spriteptr+1]*0x100 + 0x40000
secretptr = 0xdb67 + b2idx
@@ -651,23 +664,23 @@ def extract_data_from_jp_rom(rom):
else:
secretdata.append(b3)
idx += 3
print(f'Room {room:02x}')
print(f'HeaderPtr {headerptr:06x}')
print(f'HeaderLoc {headerloc:06x}')
print(f'db {",".join([f"${x:02x}" for x in header])}')
print(f'Obj Length: {len(objectdata)}')
print(f'ObjectPtr {objectptr:06x}')
print(f'ObjectLoc {objectloc:06x}')
for i in range(0, len(objectdata)//16 + 1):
slice = objectdata[i*16:i*16+16]
print(f'db {",".join([f"${x:02x}" for x in slice])}')
print(f'SpritePtr {spriteptr:06x}')
print(f'SpriteLoc {spriteloc:06x}')
print_data_block(spritedata)
print(f'SecretPtr {secretptr:06x}')
print(f'SecretLoc {secretloc:06x}')
print_data_block(secretdata)
print()
# print(f'Room {room:02x}')
# print(f'HeaderPtr {headerptr:06x}')
# print(f'HeaderLoc {headerloc:06x}')
# print(f'db {",".join([f"${x:02x}" for x in header])}')
# print(f'Obj Length: {len(objectdata)}')
# print(f'ObjectPtr {objectptr:06x}')
# print(f'ObjectLoc {objectloc:06x}')
# for i in range(0, len(objectdata)//16 + 1):
# slice = objectdata[i*16:i*16+16]
# print(f'db {",".join([f"${x:02x}" for x in slice])}')
# print(f'SpritePtr {spriteptr:06x}')
# print(f'SpriteLoc {spriteloc:06x}')
# print_data_block(spritedata)
# print(f'SecretPtr {secretptr:06x}')
# print(f'SecretLoc {secretloc:06x}')
# print_data_block(secretdata)
# print()
if __name__ == '__main__':