Version/romnaming refactor
This commit is contained in:
36
Rom.py
36
Rom.py
@@ -34,6 +34,7 @@ from source.overworld.EntranceShuffle2 import exit_ids
|
||||
from OverworldShuffle import default_flute_connections, flute_data
|
||||
from InitialSram import InitialSram
|
||||
from DamageTable import DamageTable
|
||||
from Versions import DRVersion, GKVersion, ORVersion
|
||||
|
||||
from source.classes.SFX import randomize_sfx, randomize_sfxinstruments, randomize_songinstruments
|
||||
from source.item.FillUtil import valid_pot_items
|
||||
@@ -1853,30 +1854,33 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
|
||||
|
||||
# set rom name
|
||||
# 21 bytes
|
||||
from Main import __version__
|
||||
from OverworldShuffle import __version__ as ORVersion
|
||||
if rom_header:
|
||||
if len(rom_header) > 21:
|
||||
raise Exception('ROM header too long. Max 21 bytes, found %d bytes.' % len(rom_header))
|
||||
elif '|' in rom_header:
|
||||
gen, seedstring = rom_header.split('|', 1)
|
||||
gen = f'{gen:<3}'
|
||||
seedstring = f'{int(seedstring):09}' if seedstring.isdigit() else seedstring[:9]
|
||||
rom.name = bytearray(f'OR{gen}_{team+1}_{player}_{seedstring}\0', 'utf8')[:21]
|
||||
elif len(rom_header) <= 9:
|
||||
seedstring = f'{int(rom_header):09}' if rom_header.isdigit() else rom_header
|
||||
rom.name = bytearray(f'OR{__version__.split("-")[0].replace(".","")[0:3]}_{team+1}_{player}_{seedstring}\0', 'utf8')[:21]
|
||||
else:
|
||||
rom.name = bytearray(rom_header, 'utf8')[:21]
|
||||
else:
|
||||
seedstring = f'{world.seed:09}' if isinstance(world.seed, int) else world.seed
|
||||
rom.name = bytearray(f'OR{__version__.split("-")[0].replace(".","")[0:3]}_{team+1}_{player}_{seedstring}\0', 'utf8')[:21]
|
||||
|
||||
if world.players > 1 and world.teams > 1 and len(rom_header) <= 12:
|
||||
rom.name = bytearray(f"GK_{rom_header}_{team + 1}_{player}", 'utf8')
|
||||
elif world.players > 1 and len(rom_header) <= 15:
|
||||
rom.name = bytearray(f"GK_{rom_header}_{player}", 'utf8')
|
||||
elif len(rom_header) <= 18:
|
||||
rom.name = bytearray(f"GK_{rom_header}", 'utf8')
|
||||
else:
|
||||
rom.name = bytearray(rom_header, 'utf8')
|
||||
else:
|
||||
if world.players > 1 and world.teams > 1:
|
||||
rom.name = bytearray(f'GK_{world.seed}_{team + 1}_{player}', 'utf8')
|
||||
elif world.players > 1:
|
||||
rom.name = bytearray(f'GK_{world.seed}_{player}', 'utf8')
|
||||
else:
|
||||
rom.name = bytearray(f'GK_{world.seed}', 'utf8')
|
||||
|
||||
rom.name = rom.name[:21]
|
||||
rom.name.extend([0] * (21 - len(rom.name)))
|
||||
rom.write_bytes(0x7FC0, rom.name)
|
||||
|
||||
rom.write_bytes(0x138010, bytearray(__version__, 'utf8'))
|
||||
rom.write_bytes(0x138010, bytearray(DRVersion, 'utf8'))
|
||||
rom.write_bytes(0x150010, bytearray(ORVersion, 'utf8'))
|
||||
rom.write_bytes(0x1CEEF0, bytearray(GKVersion, 'utf8'))
|
||||
|
||||
# set player names
|
||||
for p in range(1, min(world.players, 255) + 1):
|
||||
|
||||
Reference in New Issue
Block a user