Byte swapped sample ROMs. This should fix the audio distortion that many users noticed. The differences are particularly noticeable in Scud Race and Daytona 2.

This commit is contained in:
Bart Trzynadlowski 2012-02-23 03:08:57 +00:00
parent 16e4fcab06
commit aba801ebb4
2 changed files with 224 additions and 168 deletions

View file

@ -95,8 +95,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg",false, "epr-20313.21", 0x863A7857, 0x80000, 2, 0, 2, true },
{ "Samples",false, "mpr-20268.22", 0x3631E93E, 0x400000, 2, 0x000000, 2, false },
{ "Samples",false, "mpr-20269.24", 0x105A3181, 0x400000, 2, 0x400000, 2, false },
{ "Samples",false, "mpr-20268.22", 0x3631E93E, 0x400000, 2, 0x000000, 2, true },
{ "Samples",false, "mpr-20269.24", 0x105A3181, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -168,10 +168,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg",false, "epr-20865.21", 0xB70C2699, 0x20000, 2, 0, 2, true },
{ "Samples",false, "mpr-20866.22", 0x91F40C1C, 0x400000, 2, 0x000000, 2, false },
{ "Samples",false, "mpr-20868.24", 0xFA0C7EC0, 0x400000, 2, 0x400000, 2, false },
{ "Samples",false, "mpr-20867.23", 0xA579C884, 0x400000, 2, 0x800000, 2, false },
{ "Samples",false, "mpr-20869.25", 0x1F338832, 0x400000, 2, 0xC00000, 2, false },
{ "Samples",false, "mpr-20866.22", 0x91F40C1C, 0x400000, 2, 0x000000, 2, true },
{ "Samples",false, "mpr-20868.24", 0xFA0C7EC0, 0x400000, 2, 0x400000, 2, true },
{ "Samples",false, "mpr-20867.23", 0xA579C884, 0x400000, 2, 0x800000, 2, true },
{ "Samples",false, "mpr-20869.25", 0x1F338832, 0x400000, 2, 0xC00000, 2, true },
{ "DSBProg",false, "epr-20886.ic2", 0x65B05F98, 0x20000, 2, 0, 2, true },
{ "DSBMPEG",false, "mpr-20887.ic18", 0xA0757684, 0x400000, 2, 0x000000, 2, false },
{ "DSBMPEG",false, "mpr-20888.ic20", 0xB495FE65, 0x400000, 2, 0x400000, 2, false },
@ -251,10 +251,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false,"epr-21325.21", 0x004AD6AD, 0x20000, 2, 0, 2, true },
{ "Samples", false,"mpr-21285.22", 0x7CDCA6AC, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false,"mpr-21287.24", 0x06B66F17, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false,"mpr-21286.23", 0x749DFEF0, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false,"mpr-21288.25", 0x14BEE38E, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false,"mpr-21285.22", 0x7CDCA6AC, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false,"mpr-21287.24", 0x06B66F17, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false,"mpr-21286.23", 0x749DFEF0, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false,"mpr-21288.25", 0x14BEE38E, 0x400000, 2, 0xC00000, 2, true },
{ "DSBProg", false,"epr-20886.ic2", 0x65B05F98, 0x20000, 2, 0, 2, true },
{ "DSBMPEG", false,"mpr-20887.ic18", 0xA0757684, 0x400000, 2, 0x000000, 2, false },
{ "DSBMPEG", false,"mpr-20888.ic20", 0xB495FE65, 0x400000, 2, 0x400000, 2, false },
@ -322,9 +322,9 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false,"epr-21066.21", 0xF7ED2582, 0x80000, 2, 0, 2, true },
{ "Samples", false,"mpr-21031.22", 0x32F6B23A, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false,"mpr-21033.24", 0x253D3C70, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false,"mpr-21032.23", 0x3D3FF407, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false,"mpr-21031.22", 0x32F6B23A, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false,"mpr-21033.24", 0x253D3C70, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false,"mpr-21032.23", 0x3D3FF407, 0x400000, 2, 0x800000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -384,9 +384,9 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false,"epr-21066.21", 0xF7ED2582, 0x80000, 2, 0, 2, true },
{ "Samples", false,"mpr-21031.22", 0x32F6B23A, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false,"mpr-21033.24", 0x253D3C70, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false,"mpr-21032.23", 0x3D3FF407, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false,"mpr-21031.22", 0x32F6B23A, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false,"mpr-21033.24", 0x253D3C70, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false,"mpr-21032.23", 0x3D3FF407, 0x400000, 2, 0x800000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -452,10 +452,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false,"epr22886.21", 0x374EC1C6, 0x80000, 2, 0, 2, true },
{ "Samples", false,"mpr22887.22", 0x7D04A867, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false,"mpr22889.24", 0x4F9BA45D, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false,"mpr22888.23", 0x018FCF22, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false,"mpr22890.25", 0xB638BD7C, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false,"mpr22887.22", 0x7D04A867, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false,"mpr22889.24", 0x4F9BA45D, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false,"mpr22888.23", 0x018FCF22, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false,"mpr22890.25", 0xB638BD7C, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -521,10 +521,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr22886.21", 0x374EC1C6, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr22887.22", 0x7D04A867, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr22889.24", 0x4F9BA45D, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr22888.23", 0x018FCF22, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr22890.25", 0xB638BD7C, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr22887.22", 0x7D04A867, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr22889.24", 0x4F9BA45D, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr22888.23", 0x018FCF22, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr22890.25", 0xB638BD7C, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -596,10 +596,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20600a.21", 0xF0E7DB7E, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20576", 0x1EEB540B, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20578", 0xD222F2D4, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20577", 0x3B236187, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr-20579", 0x08788436, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr-20576", 0x1EEB540B, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20578", 0xD222F2D4, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr-20577", 0x3B236187, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr-20579", 0x08788436, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -665,8 +665,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20313.21", 0x863A7857, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20268.22", 0x3631E93E, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20269.24", 0x105A3181, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20268.22", 0x3631E93E, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20269.24", 0x105A3181, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -732,10 +732,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20397.21", 0x5B20B54A, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20373.22", 0xC684E8A3, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20375.24", 0x906ACE86, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20374.23", 0xFCF6EA21, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr-20376.25", 0xDEEED366, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr-20373.22", 0xC684E8A3, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20375.24", 0x906ACE86, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr-20374.23", 0xFCF6EA21, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr-20376.25", 0xDEEED366, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -801,10 +801,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20397.21", 0x5B20B54A, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20373.22", 0xC684E8A3, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20375.24", 0x906ACE86, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20374.23", 0xFCF6EA21, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr-20376.25", 0xDEEED366, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr-20373.22", 0xC684E8A3, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20375.24", 0x906ACE86, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr-20374.23", 0xFCF6EA21, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr-20376.25", 0xDEEED366, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -870,10 +870,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr21487.21", 0xC2942448, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr21463.22", 0x0E6d6C0E, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr21465.24", 0x1A62D925, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr21464.23", 0x8230C1DE, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr21466.25", 0xCA20359E, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr21463.22", 0x0E6d6C0E, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr21465.24", 0x1A62D925, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr21464.23", 0x8230C1DE, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr21466.25", 0xCA20359E, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -939,8 +939,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-19891.21", 0xC3ECD448, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19869.22", 0xEA1EF1CC, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-19870.24", 0x49C70296, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-19869.22", 0xEA1EF1CC, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-19870.24", 0x49C70296, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -1012,8 +1012,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-19940.21", 0xB06FFE5F, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr19934.22", 0xC7D8E194, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr19935.24", 0x91C1B618, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr19934.22", 0xC7D8E194, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr19935.24", 0x91C1B618, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -1067,10 +1067,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr21438.21", 0x6815AF9E, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr21427.22", 0x884566F6, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr21428.24", 0x162D1E43, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr21431.23", 0x0EF8F7BB, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr21432.25", 0x59C0F6DF, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr21427.22", 0x884566F6, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr21428.24", 0x162D1E43, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr21431.23", 0x0EF8F7BB, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr21432.25", 0x59C0F6DF, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -1136,10 +1136,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr21118.21", 0x598C00F0, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr21094.22", 0xC262B80A, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr21096.24", 0x0A0021A0, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr21095.23", 0x16D27A0A, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr21097.25", 0x0D8033FC, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr21094.22", 0xC262B80A, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr21096.24", 0x0A0021A0, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr21095.23", 0x16D27A0A, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr21097.25", 0x0D8033FC, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -1205,8 +1205,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-19692.21", 0xA94F5521, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19670.22", 0xBD31CC06, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-19671.24", 0x8E8526AB, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-19670.22", 0xBD31CC06, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-19671.24", 0x8E8526AB, 0x400000, 2, 0x400000, 2, true },
{ "DSBProg", false, "epr-19612.2", 0x13978FD4, 0x20000, 2, 0, 2, false },
{ "DSBMPEG", false, "mpr-19603.57", 0xB1B1765F, 0x200000, 2, 0x000000, 2, false },
{ "DSBMPEG", false, "mpr-19604.58", 0x6AC85B49, 0x200000, 2, 0x200000, 2, false },
@ -1354,9 +1354,9 @@ const struct GameInfo g_Model3GameList[] =
{ "VROM", false, "mpr-19587.41", 0xC288C910, 0x200000, 2, 30, 32, false },
// Sound ROMs
{ "SndProg", false, "epr-19611a.21", 0x9D4A34F6, 0x40000, 2, 0, 2, true },
{ "Samples", false, "mpr-19601.22", 0xBA350FCC, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-19602.24", 0xA92231C1, 0x400000, 2, 0x400000, 2, false },
{ "SndProg", false, "epr-19611a.21",0x9D4A34F6, 0x40000, 2, 0, 2, true },
{ "Samples", false, "mpr-19601.22", 0xBA350FCC, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-19602.24", 0xA92231C1, 0x400000, 2, 0x400000, 2, true },
{ "DSBProg", false, "epr-19612.2", 0x13978FD4, 0x20000, 2, 0, 2, false },
{ "DSBMPEG", false, "mpr-19603.57", 0xB1B1765F, 0x200000, 2, 0x000000, 2, false },
{ "DSBMPEG", false, "mpr-19604.58", 0x6AC85B49, 0x200000, 2, 0x200000, 2, false },
@ -1435,9 +1435,9 @@ const struct GameInfo g_Model3GameList[] =
{ "VROM", false, "mpr-19687.41", 0x776CE694, 0x200000, 2, 30, 32, false },
// Sound ROMs
{ "SndProg", false, "epr-20096a.21", 0x0FEF288B, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19670.22", 0xBD31CC06, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20101.24", 0x66D1E31F, 0x400000, 2, 0x400000, 2, false },
{ "SndProg", false, "epr-20096a.21",0x0FEF288B, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19670.22", 0xBD31CC06, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20101.24", 0x66D1E31F, 0x400000, 2, 0x400000, 2, true },
{ "DSBProg", false, "epr-19612.2", 0x13978FD4, 0x20000, 2, 0, 2, false },
{ "DSBMPEG", false, "mpr-19603.57", 0xB1B1765F, 0x200000, 2, 0x000000, 2, false },
{ "DSBMPEG", false, "mpr-19604.58", 0x6AC85B49, 0x200000, 2, 0x200000, 2, false },
@ -1517,8 +1517,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr20356.21", 0x4E4015D0, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr20334.22", 0xDE1D67CD, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr20335.24", 0x7300D0A2, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr20334.22", 0xDE1D67CD, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr20335.24", 0x7300D0A2, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -1590,10 +1590,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr21657.21", 0x7242E8FD, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr21629.22", 0xBC9701C4, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr21630.24", 0x9F2DEADD, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr21631.23", 0x299036C5, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr21632.25", 0xFF162F0D, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr21629.22", 0xBC9701C4, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr21630.24", 0x9F2DEADD, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr21631.23", 0x299036C5, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr21632.25", 0xFF162F0D, 0x400000, 2, 0xC00000, 2, true },
{ "DSBProg", false, "epr21658.ic2", 0x50BAD8CB, 0x20000, 2, 0, 2, true },
{ "DSBMPEG", false, "mpr21649.ic18", 0xDAC87F47, 0x400000, 2, 0x000000, 2, false },
{ "DSBMPEG", false, "mpr21650.ic20", 0x86D90123, 0x400000, 2, 0x400000, 2, false },
@ -1670,10 +1670,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr21218.21", 0x5821001A, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr21150.22", 0x125201CE, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr21152.24", 0x0AFDEE87, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr21151.23", 0x599527B9, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr21153.25", 0x4155F307, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr21150.22", 0x125201CE, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr21152.24", 0x0AFDEE87, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr21151.23", 0x599527B9, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr21153.25", 0x4155F307, 0x400000, 2, 0xC00000, 2, true },
{ "DSBProg", false, "epr21219.ic2", 0x4E042B21, 0x20000, 2, 0, 2, true },
{ "DSBMPEG", false, "mpr21170.ic18", 0xF51F7CE3, 0x400000, 2, 0x000000, 2, false },
{ "DSBMPEG", false, "mpr21171.ic20", 0x8D3BD5B6, 0x400000, 2, 0x400000, 2, false },
@ -1744,8 +1744,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20636.21", 0x7139EBF8, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20614.22", 0xA3930E4A, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20615.24", 0x62E8A94A, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20614.22", 0xA3930E4A, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20615.24", 0x62E8A94A, 0x400000, 2, 0x400000, 2, true },
{ "DSBProg", false, "epr-20641.2", 0xC9B82035, 0x20000, 2, 0, 2, true },
{ "DSBMPEG", false, "mpr-20637.57", 0xD66E8A02, 0x400000, 2, 0x000000, 2, false },
{ "DSBMPEG", false, "mpr-20638.58", 0xD1513382, 0x400000, 2, 0x400000, 2, false },
@ -1819,8 +1819,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20506.21", 0x855AF67B, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20484.22", 0x8AC3FBC4, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20485.24", 0xCFD8C19B, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20484.22", 0x8AC3FBC4, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20485.24", 0xCFD8C19B, 0x400000, 2, 0x400000, 2, true },
// Drive Board ROM
{ "DriveBd", true, "epr-20512.bin", 0xCF64350D, 0x10000, 2, 0, 2, false },
@ -1889,8 +1889,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-21383.21", 0x544D1E28, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-21355.22", 0xC1B2D326, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-21357.24", 0x02703FAB, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-21355.22", 0xC1B2D326, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-21357.24", 0x02703FAB, 0x400000, 2, 0x400000, 2, true },
{ "DSBProg", false, "ep21384.2", 0x12FA4780, 0x20000, 2, 0, 2, true },
{ "DSBMPEG", false, "mp21375.18", 0x735157a9, 0x400000, 2, 0x000000, 2, false },
{ "DSBMPEG", false, "mp21376.20", 0xE635F81E, 0x400000, 2, 0x400000, 2, false },
@ -1961,8 +1961,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-21383.21", 0x544D1E28, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-21355.22", 0xC1B2D326, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-21357.24", 0x02703FAB, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-21355.22", 0xC1B2D326, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-21357.24", 0x02703FAB, 0x400000, 2, 0x400000, 2, true },
{ "DSBProg", false, "ep21384.2", 0x12FA4780, 0x20000, 2, 0, 2, true },
{ "DSBMPEG", false, "mp21375.18", 0x735157a9, 0x400000, 2, 0x000000, 2, false },
{ "DSBMPEG", false, "mp21376.20", 0xE635F81E, 0x400000, 2, 0x400000, 2, false },
@ -2039,8 +2039,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr19231.21", 0xB416FE96, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19209.22", 0x3715E38C, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-19210.24", 0xC03D6502, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-19209.22", 0x3715E38C, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-19210.24", 0xC03D6502, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2112,8 +2112,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr19231.21", 0xB416FE96, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19209.22", 0x3715E38C, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-19210.24", 0xC03D6502, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-19209.22", 0x3715E38C, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-19210.24", 0xC03D6502, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2185,8 +2185,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr19231.21", 0xB416FE96, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19209.22", 0x3715E38C, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-19210.24", 0xC03D6502, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-19209.22", 0x3715E38C, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-19210.24", 0xC03D6502, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2258,10 +2258,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20687.21", 0xFA084DE5, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20663.22", 0x977EB6A4, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20665.24", 0x0EFC0CA8, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20664.23", 0x89220782, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr-20666.25", 0x3ECB2606, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr-20663.22", 0x977EB6A4, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20665.24", 0x0EFC0CA8, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr-20664.23", 0x89220782, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr-20666.25", 0x3ECB2606, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2333,10 +2333,10 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20687.21", 0xFA084DE5, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20663.22", 0x977EB6A4, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20665.24", 0x0EFC0CA8, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20664.23", 0x89220782, 0x400000, 2, 0x800000, 2, false },
{ "Samples", false, "mpr-20666.25", 0x3ECB2606, 0x400000, 2, 0xC00000, 2, false },
{ "Samples", false, "mpr-20663.22", 0x977EB6A4, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20665.24", 0x0EFC0CA8, 0x400000, 2, 0x400000, 2, true },
{ "Samples", false, "mpr-20664.23", 0x89220782, 0x400000, 2, 0x800000, 2, true },
{ "Samples", false, "mpr-20666.25", 0x3ECB2606, 0x400000, 2, 0xC00000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2408,8 +2408,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-19807.21", 0x9641CBAF, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19785.22", 0xE7D190E3, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-19786.24", 0xB08D889B, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-19785.22", 0xE7D190E3, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-19786.24", 0xB08D889B, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2481,8 +2481,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-19807.21", 0x9641CBAF, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-19785.22", 0xE7D190E3, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-19786.24", 0xB08D889B, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-19785.22", 0xE7D190E3, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-19786.24", 0xB08D889B, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2554,8 +2554,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20921.21", 0x30F032A7, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20903.22", 0xE343E131, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20904.24", 0x21A91B84, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20903.22", 0xE343E131, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20904.24", 0x21A91B84, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2627,8 +2627,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-20921.21", 0x30F032A7, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-20903.22", 0xE343E131, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-20904.24", 0x21A91B84, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-20903.22", 0xE343E131, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-20904.24", 0x21A91B84, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2700,8 +2700,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-21539.21", 0xA1D3E00E, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-21513.22", 0xCCA1CC00, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-21514.24", 0x6CEDD292, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-21513.22", 0xCCA1CC00, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-21514.24", 0x6CEDD292, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2773,8 +2773,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-21539.21", 0xA1D3E00E, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-21513.22", 0xCCA1CC00, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-21514.24", 0x6CEDD292, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-21513.22", 0xCCA1CC00, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-21514.24", 0x6CEDD292, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2846,8 +2846,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-21539.21", 0xA1D3E00E, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-21513.22", 0xCCA1CC00, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-21514.24", 0x6CEDD292, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-21513.22", 0xCCA1CC00, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-21514.24", 0x6CEDD292, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}
@ -2919,8 +2919,8 @@ const struct GameInfo g_Model3GameList[] =
// Sound ROMs
{ "SndProg", false, "epr-21539.21", 0xA1D3E00E, 0x80000, 2, 0, 2, true },
{ "Samples", false, "mpr-21513.22", 0xCCA1CC00, 0x400000, 2, 0x000000, 2, false },
{ "Samples", false, "mpr-21514.24", 0x6CEDD292, 0x400000, 2, 0x400000, 2, false },
{ "Samples", false, "mpr-21513.22", 0xCCA1CC00, 0x400000, 2, 0x000000, 2, true },
{ "Samples", false, "mpr-21514.24", 0x6CEDD292, 0x400000, 2, 0x400000, 2, true },
{ NULL, false, NULL, 0, 0, 0, 0, 0, false }
}

View file

@ -629,7 +629,6 @@ UINT32 CModel3::ReadSecurity(unsigned reg)
case 0x00: // Status
return 0;
case 0x1C: // Data
if (!strcmp(Game->id, "spikeout") || !strcmp(Game->id, "spikeofe"))
{
data = (spikeoutSecurity[securityPtr++] << 16);
@ -2643,10 +2642,11 @@ void CModel3::Patch(void)
{
if (!strcmp(Game->id, "vf3") || !strcmp(Game->id, "vf3a"))
{
*(UINT32 *) &crom[0x713C7C] = 0x60000000; // this patch may not be needed anymore (find out why)
// Base offset of program in CROM: 0x710000
//*(UINT32 *) &crom[0x713C7C] = 0x60000000; // this patch may not be needed anymore (find out why)
*(UINT32 *) &crom[0x713E54] = 0x60000000; // affects timing but prevents game from coining up -- investigate this carefully
*(UINT32 *) &crom[0x7125B0] = 0x60000000; // this patch may not be needed anymore (find out why)
*(UINT32 *) &crom[0x7125D0] = 0x60000000; // this patch may not be needed anymore (find out why)
//*(UINT32 *) &crom[0x7125B0] = 0x60000000; // this patch may not be needed anymore (find out why)
//*(UINT32 *) &crom[0x7125D0] = 0x60000000; // this patch may not be needed anymore (find out why)
}
else if (!strcmp(Game->id, "lemans24"))
{
@ -2780,6 +2780,20 @@ void CModel3::Patch(void)
*(UINT32 *) &crom[0xFFF00010-0xFF800000] = (36<<26)|(2<<21)|(1<<16); // stw r2,0(r1)
*(UINT32 *) &crom[0xFFF00014-0xFF800000] = 0x4E800020; // bclr 0x14,0 ; return to RAM code
/* // Security board patch for Andy
*(UINT32 *) &crom[0xFFF01560-0xFF800000] = 0x4BF00006; // ba 0xFFF00004
*(UINT32 *) &crom[0xFFF00004-0xFF800000] = (31<<26)|(316<<1); // xor r0,r0,r0 ; R0 = 0
*(UINT32 *) &crom[0xFFF00008-0xFF800000] = (15<<26)|(2<<21)|0x3860; // addis r2,0,0x3860 ; R2 = "li r3,0xFFFFFFFF"
*(UINT32 *) &crom[0xFFF0000C-0xFF800000] = (24<<26)|(2<<21)|(2<<16)|0xFFFF; // ori r2,r2,0xFFFF
*(UINT32 *) &crom[0xFFF00010-0xFF800000] = (24<<26)|(1<<16)|0x9CF8; // ori r1,r0,0x9CF8 ; [9CF8] <- set return value to "success"
*(UINT32 *) &crom[0xFFF00014-0xFF800000] = (36<<26)|(2<<21)|(1<<16); // stw r2,0(r1)
*(UINT32 *) &crom[0xFFF00018-0xFF800000] = (15<<26)|(2<<21)|0x4800; // addis r2,0,0x4800 ; R2 = "ba 0x9D40"
*(UINT32 *) &crom[0xFFF0001C-0xFF800000] = (24<<26)|(2<<21)|(2<<16)|0x9D42; // ori r2,r2,0xFFFF
*(UINT32 *) &crom[0xFFF00020-0xFF800000] = (24<<26)|(1<<16)|0x9CFC; // ori r1,r0,0x9CFC ; [9CFC] <- jump to end of security board routine
*(UINT32 *) &crom[0xFFF00024-0xFF800000] = (36<<26)|(2<<21)|(1<<16); // stw r2,0(r1)
*(UINT32 *) &crom[0xFFF00028-0xFF800000] = 0x4E800020; // bclr 0x14,0 ; return to RAM code
*/
// NOTE: At 32714, a test is made that determines the message: ONE PROCESSOR DETECTED, TWO "", etc.
}
else if (!strcmp(Game->id, "harley"))
@ -2887,6 +2901,44 @@ static void Reverse32(UINT8 *buf, unsigned size)
}
}
// Reads in CROMs directly (for debugging purposes only)
static void ReadCROMDirectly(UINT8 *crom, char *fileName[4], unsigned combinedSize)
{
FILE *fp[4] = { NULL, NULL, NULL, NULL };
long size[4];
// Open all files
for (int i = 0; i < 4; i++)
{
fp[i] = fopen(fileName[i],"rb");
if (NULL == fp[i])
{
ErrorLog("Unable to open file for reading: %s.", fileName[i]);
goto ReadCleanup;
}
}
// Read and interleave 2 bytes at a time
for (unsigned i = 0; i < combinedSize; i += 8)
{
fread(&crom[i+0], 1, 2, fp[0]);
fread(&crom[i+2], 1, 2, fp[1]);
fread(&crom[i+4], 1, 2, fp[2]);
fread(&crom[i+6], 1, 2, fp[3]);
}
Reverse16(crom, combinedSize); // byte reverse ROMs
// Reverse 32 bit words for Supermodel
Reverse32(crom, combinedSize);
ReadCleanup:
for (int i = 0; i < 4; i++)
{
if (fp[i] != NULL)
fclose(fp[i]);
}
}
// Dumps a memory region to a file for debugging purposes
static void Dump(const char *file, UINT8 *buf, unsigned size, bool reverse32, bool reverse16)
{
@ -2967,7 +3019,7 @@ bool CModel3::LoadROMSet(const struct GameInfo *GameList, const char *zipFile)
// Byte reverse the PowerPC ROMs (convert to little endian words)
Reverse32(crom, 0x800000+0x8000000);
// Byte swap sound board 68K ROMs
// Byte swap sound board 68K ROMs (convert to little endian words)
Reverse16(soundROM, 0x80000);
Reverse16(sampleROM, 0x1000000);
@ -3071,6 +3123,10 @@ bool CModel3::LoadROMSet(const struct GameInfo *GameList, const char *zipFile)
printf(" Extra Hardware: Drive Board\n");
printf("\n");
// Load patched CROM directly (for testing out ROM patches)
//char *fileName[4] = { "epr-20599a.patched.20","epr-20598a.patched.19","epr-20597a.patched.18","epr-20596a.patched.17" };
//ReadCROMDirectly(crom, fileName, 0x800000);
return OKAY;
}
@ -3195,8 +3251,8 @@ CModel3::~CModel3(void)
// Debug: dump some files
#if 0
//Dump("ram", ram, 0x800000, true, false);
Dump("vrom", vrom, 0x4000000, true, false);
//Dump("crom", crom, 0x800000, true, false);
//Dump("vrom", vrom, 0x4000000, true, false);
Dump("crom", crom, 0x800000, true, false);
//Dump("bankedCrom", &crom[0x800000], 0x7000000, true, false);
//Dump("soundROM", soundROM, 0x80000, false, true);
//Dump("sampleROM", sampleROM, 0x800000, false, true);