Sm broken start location fix (#841)

* - fixed basepatches application order breaking (at least) starting location
This commit is contained in:
lordlou 2022-07-30 12:42:02 -04:00 committed by GitHub
parent 07450bb83d
commit afc9c772be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 5 deletions

View File

@ -271,7 +271,7 @@ class SMWorld(World):
data.append(w1)
return data
def APPatchRom(self, romPatcher):
def APPrePatchRom(self, romPatcher):
# first apply the sm multiworld code patch named 'basepatch' (also has empty tables that we'll overwrite),
# + apply some patches from varia that we want to be always-on.
# basepatch and variapatches are both generated from https://github.com/lordlou/SMBasepatch
@ -279,6 +279,8 @@ class SMWorld(World):
"data", "SMBasepatch_prebuilt", "multiworld-basepatch.ips"))
romPatcher.applyIPSPatch(os.path.join(os.path.dirname(__file__),
"data", "SMBasepatch_prebuilt", "variapatches.ips"))
def APPostPatchRom(self, romPatcher):
symbols = get_sm_symbols(os.path.join(os.path.dirname(__file__),
"data", "SMBasepatch_prebuilt", "sm-basepatch-symbols.json"))
multiWorldLocations = []
@ -504,7 +506,7 @@ class SMWorld(World):
outputFilename = os.path.join(output_directory, f'{outfilebase}{outfilepname}.sfc')
try:
self.variaRando.PatchRom(outputFilename, self.APPatchRom)
self.variaRando.PatchRom(outputFilename, self.APPrePatchRom, self.APPostPatchRom)
self.write_crc(outputFilename)
self.rom_name = self.romName
except:

View File

@ -697,7 +697,7 @@ class VariaRandomizer:
#if args.patchOnly == False:
# randoExec.postProcessItemLocs(itemLocs, args.hideItems)
def PatchRom(self, outputFilename, customPatchApply = None):
def PatchRom(self, outputFilename, customPrePatchApply = None, customPostPatchApply = None):
args = self.args
optErrMsgs = self.optErrMsgs
@ -749,6 +749,9 @@ class VariaRandomizer:
else:
romPatcher = RomPatcher(magic=args.raceMagic)
if customPrePatchApply != None:
customPrePatchApply(romPatcher)
if args.hud == True or args.majorsSplit == "FullWithHUD":
args.patches.append("varia_hud.ips")
if args.patchOnly == False:
@ -767,8 +770,8 @@ class VariaRandomizer:
# don't color randomize custom ships
args.shift_ship_palette = False
if customPatchApply != None:
customPatchApply(romPatcher)
if customPostPatchApply != None:
customPostPatchApply(romPatcher)
# we have to write ips to ROM before doing our direct modifications which will rewrite some parts (like in credits),
# but in web mode we only want to generate a global ips at the end