Skip to content

ROM hacks with the same header as NTSC 1.0 generate bad ZOOTDEC #2548

@flagrama

Description

@flagrama

In the following case it was probably a spanish or portuguese hack that didn't bother changing the header, or that changes were outside of the 1MB area the header CRC is based on checking. This resulted in the ZOOTDEC being created with the hack contents. It seems like the user still got an error at some point from that base ROM so went on to eventually try a real NTSC 1.0 ROM but ended up with the other language again because that was the data still in the ZOOTDEC file.
https://discord.com/channels/274180765816848384/476723801032491008/1489406923810803874

OoT-Randomizer/Rom.py

Lines 91 to 95 in b1245d9

valid_crc = [
[0xEC, 0x70, 0x11, 0xB7, 0x76, 0x16, 0xD7, 0x2B], # Compressed
[0x70, 0xEC, 0xB7, 0x11, 0x16, 0x76, 0x2B, 0xD7], # Byteswap compressed
[0x93, 0x52, 0x2E, 0x7B, 0xE5, 0x06, 0xD4, 0x27], # Decompressed
]

It might make sense, at least in non-web versions of randomizer, to manually do the CRC check on the ROM. I'm still not sure this would have caught this particular issue, but expecting the header to not lie is just wishful thinking.

Also, the ZOOTDEC itself should have some kind of verification to ensure it is what we expect so we can delete it/never create it if it isn't.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions