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
|
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.
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
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.