Naomi: lr backport

This commit is contained in:
Flyinghead 2018-12-11 23:20:30 +01:00
parent 5ac99d3ad5
commit 9c556007fb
8 changed files with 130 additions and 75 deletions

View File

@ -91,6 +91,10 @@ void asic_RaiseInterrupt(HollyInterruptID inter)
u32 Read_SB_ISTNRM(u32 addr)
{
/* Note that the two highest bits indicate
* the OR'ed result of all the bits in
* SB_ISTEXT and SB_ISTERR, respectively,
* and writes to these two bits are ignored. */
u32 tmp = SB_ISTNRM & 0x3FFFFFFF;
if (SB_ISTEXT)
@ -104,6 +108,7 @@ u32 Read_SB_ISTNRM(u32 addr)
void Write_SB_ISTNRM(u32 addr, u32 data)
{
/* writing a 1 clears the interrupt */
SB_ISTNRM &= ~data;
asic_RL2Pending();

View File

@ -1989,7 +1989,6 @@ struct maple_naomi_jamma : maple_sega_controller
case MDC_JVSUploadFirmware:
{
static u8 *ram;
static XXH32_state_t* state;
if (ram == NULL)
ram = (u8 *)calloc(0x10000, 1);

View File

@ -36,6 +36,7 @@ enum NAOMI_KEYS
NAOMI_BTN5_KEY = 1 << 4,
NAOMI_BTN6_KEY = 1 << 3,
NAOMI_BTN7_KEY = 1 << 2,
NAOMI_BTN8_KEY = 1 << 16,
NAOMI_TEST_KEY = 1 << 1,

View File

@ -373,8 +373,7 @@ static bool naomi_cart_LoadZip(char *filename)
CurrentCartridge->SetKey(game->key);
naomi_game_inputs = game->inputs;
int romid = 0;
while (game->blobs[romid].filename != NULL)
for (int romid = 0; game->blobs[romid].filename != NULL; romid++)
{
u32 len = game->blobs[romid].length;
@ -394,7 +393,11 @@ static bool naomi_cart_LoadZip(char *filename)
file = parent_archive->OpenFile(game->blobs[romid].filename);
if (!file) {
printf("%s: Cannot open %s\n", filename, game->blobs[romid].filename);
if (game->blobs[romid].blob_type != Eeprom)
// Default eeprom file is optional
goto error;
else
continue;
}
if (game->blobs[romid].blob_type == Normal)
{
@ -448,7 +451,6 @@ static bool naomi_cart_LoadZip(char *filename)
die("Unknown blob type\n");
delete file;
}
romid++;
}
if (archive != NULL)
delete archive;

View File

@ -72,7 +72,7 @@ public:
virtual void Serialize(void** data, unsigned int* total_size) override;
virtual void Unserialize(void** data, unsigned int* total_size) override;
virtual void* GetDmaPtr(u32& size) override;
virtual std::string GetGameId();
virtual std::string GetGameId() override;
private:
u8 naomi_cart_ram[64 * 1024];
@ -89,6 +89,7 @@ struct ButtonDescriptor
{
u32 mask;
const char *name;
u32 p2_mask;
};
enum AxisType {
@ -104,7 +105,7 @@ struct AxisDescriptor
struct InputDescriptors
{
ButtonDescriptor buttons[16];
ButtonDescriptor buttons[18];
AxisDescriptor axes[8];
};

View File

@ -472,7 +472,7 @@ Games[] =
0x9dbde9cd,
NULL,
M1,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "rom0.ic22", 0x0000000, 0x400000 },
{ "rom1.ic1s", 0x0800000, 0x800000 },
@ -492,7 +492,7 @@ Games[] =
0x2f6f0f8d,
NULL,
M1,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-23071.ic11", 0x0000000, 0x0200000 },
{ "epr-23071.ic11", 0x0200000, 0x0200000 }, // reload
@ -977,7 +977,7 @@ Games[] =
0x28428247,
NULL,
M2,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-23674.ic22", 0x0000000, 0x400000 },
{ "rom1.ic1s", 0x0800000, 0x800000 },
@ -1467,7 +1467,7 @@ Games[] =
0x280e6ae1,
NULL,
M2,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-21575.ic22", 0x0000000, 0x0200000 },
{ "epr-21575.ic22", 0x0200000, 0x0200000 }, // reload
@ -2015,7 +2015,9 @@ Games[] =
{ "mpr-22824.ic7", 0x3800000, 0x800000 },
{ "mpr-22825.ic8", 0x4000000, 0x800000 },
{ NULL, 0, 0 },
}
},
NULL,
&jambo_inputs
},
// Mars TV (JPN)
{
@ -2025,7 +2027,7 @@ Games[] =
0x280b8ef5,
NULL,
M2,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-22993.ic22", 0x0000000, 0x200000 },
{ "epr-22993.ic22", 0x0200000, 0x200000 }, // reload
@ -2118,7 +2120,7 @@ Games[] =
0xffffffff, // not populated
NULL,
M2,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-24286.ic22", 0x0000000, 0x0400000 },
{ "mpr-24276.ic1", 0x0800000, 0x1000000 },
@ -2470,7 +2472,7 @@ Games[] =
0x000acd40,
NULL,
M2,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-22206.ic22", 0x0000000, 0x400000 },
{ "mpr-22186.ic1", 0x0800000, 0x800000 },
@ -2610,7 +2612,7 @@ Games[] =
0x281702cf,
NULL,
M2,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-23600.ic22", 0x00000000, 0x0400000 },
{ "mpr-23589.ic1", 0x00800000, 0x1000000 },
@ -3035,7 +3037,7 @@ Games[] =
0x000368e1,
NULL,
M2,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-21979.ic22", 0x0000000, 0x0200000 },
{ "epr-21979.ic22", 0x0200000, 0x0200000 }, // reload
@ -3338,7 +3340,9 @@ Games[] =
{ "mpr-23193.ic12s", 0x6000000, 0x800000 },
{ "mpr-23194.ic13s", 0x6800000, 0x800000 },
{ NULL, 0, 0 },
}
},
NULL,
&vonot_inputs
},
// Virtua Striker 2 Ver. 2000 (JPN, USA, EXP, KOR, AUS) (Rev C)
{
@ -3619,7 +3623,7 @@ Games[] =
0x0007c010,
NULL,
M2,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "epr-23689.ic22", 0x0000000, 0x0400000 },
{ "mpr-23684.ic1", 0x0800000, 0x1000000 },
@ -3724,7 +3728,7 @@ Games[] =
0x5504,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_EXPORT,
{
{ "fpr-24382.ic8", 0x0000000, 0x4000000 },
{ "fpr-24383.ic9", 0x4000000, 0x4000000 },
@ -3742,15 +3746,13 @@ Games[] =
0x5504,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_EXPORT,
{
{ "fpr-24382.ic8", 0x0000000, 0x4000000 },
{ "fpr-24383.ic9", 0x4000000, 0x4000000 },
{ "fpr-24384.ic10", 0x8000000, 0x4000000 },
{ "fpr-24385.ic11", 0xc000000, 0x4000000 },
//ROM_REGION( 0x800, "pic_readout", 0 )
//ROM_LOAD( "317-0495-com.ic3", 0, 0x800, CRC(c229a59b) SHA1(497dcc1e4e52eb044a8b709edbd00126cef212b1) )
{ "317-0495-com.ic3", 0, 0x800, Key },
{ NULL, 0, 0 },
}
@ -3763,7 +3765,7 @@ Games[] =
0x5504,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "fpr-24437.ic8", 0x0000000, 0x4000000 },
{ "fpr-24438.ic9", 0x4000000, 0x4000000 },
@ -3780,7 +3782,7 @@ Games[] =
0x5505,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_EXPORT,
{
{ "fpr-24408.ic8", 0x00000000, 0x4000000 },
{ "fpr-24372.ic9", 0x04000000, 0x4000000 },
@ -3806,7 +3808,7 @@ Games[] =
0x5504,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "ic8.bin", 0x0000000, 0x4000000 },
{ "ic9.bin", 0x4000000, 0x4000000 },
@ -3823,7 +3825,7 @@ Games[] =
0x5586,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "ic8.bin", 0x00000000, 0x4000000 },
{ "epr-24455.ic7", 0x00000000, 0x0400000 }, // EPR mode, overwrite FPR data
@ -3844,7 +3846,7 @@ Games[] =
0x5506,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "ic8.bin", 0x00000000, 0x4000000 },
{ "ic9.bin", 0x04000000, 0x4000000 },
@ -3864,14 +3866,11 @@ Games[] =
0x5502,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_EXPORT,
{
{ "fpr-24333.ic8", 0x0000000, 0x4000000 },
{ "fpr-24334.ic9", 0x4000000, 0x4000000 },
//ROM_REGION( 0x800, "pic_readout", 0 )
//ROM_LOAD( "317-0437-com.ic3", 0, 0x800, CRC(3b6fcee8) SHA1(65fbdd3b8c61a4b5ccb6389b25483a7ecdc0794d) )
{ "317-0437-com.ic3", 0, 0x800, Key },
{ NULL, 0, 0 },
}
},
@ -3883,7 +3882,7 @@ Games[] =
0x5582,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_EXPORT,
{
{ "fpr-24333.ic8", 0x0000000, 0x4000000 },
{ "epr-24357.ic7", 0x0000000, 0x0400000 },
@ -3905,7 +3904,7 @@ Games[] =
0x5502,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_EXPORT,
{
{ "fpr-24417.ic8", 0x0000000, 0x4000000 },
{ "fpr-24418.ic9", 0x4000000, 0x4000000 },
@ -3925,7 +3924,7 @@ Games[] =
0x5505,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "fpr-24365.ic8", 0x00000000, 0x4000000 },
{ "fpr-24366.ic9", 0x04000000, 0x4000000 },
@ -3951,7 +3950,7 @@ Games[] =
0x5504,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "ic8.bin", 0x0000000, 0x4000000 },
{ "ic9.bin", 0x4000000, 0x4000000 },
@ -3967,7 +3966,7 @@ Games[] =
0x5504,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "fpr-24423.ic8", 0x00000000, 0x4000000 },
{ "fpr-24424.ic9", 0x04000000, 0x4000000 },
@ -3985,7 +3984,7 @@ Games[] =
0x5504,
NULL, // requires epr-21576g.ic27
M4,
REGION_AUSTRALIA, // not a real M4, rom header decrypted
REGION_EXPORT, // not a real M4, rom header decrypted
{
{ "fpr-24413.ic8", 0x0000000, 0x4000000 },
{ "fpr-24414.ic9", 0x4000000, 0x4000000 },
@ -4003,7 +4002,7 @@ Games[] =
0x5502,
"naomi",
M4,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "fpr-24338.ic8", 0x0000000, 0x4000000 },
{ "fpr-24339.ic9", 0x4000000, 0x4000000 },
@ -4056,7 +4055,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5102-com.pic", 0, 0x4000 },
{ "cfield-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4117,7 +4116,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5076-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4270,7 +4269,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5092-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4285,7 +4284,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5092-jpn.pic" , 0, 0x4000 },
{ NULL, 0, 0 },
@ -4300,7 +4299,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5111-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4362,7 +4361,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5122-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4377,7 +4376,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5125-com.pic", 0, 0x4000 },
{ "karous-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4409,7 +4408,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5115-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4454,7 +4453,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5124-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4469,7 +4468,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5104-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4484,7 +4483,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5104-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4499,7 +4498,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5124-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4514,7 +4513,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5084-jpn.pic", 0, 0x4000 },
{ "moeru-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4592,7 +4591,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-0375-com.pic", 0, 0x4000 },
{ "puyofev-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4624,7 +4623,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5110-jpn.pic", 0, 0x4000 },
{ "radirgy-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4640,7 +4639,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5110-jpn.pic", 0, 0x4000 },
{ "radirgy-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4656,7 +4655,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5107-jpn.pic", 0, 0x4000 },
{ "senko-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4672,7 +4671,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5107-jpn.pic", 0, 0x4000 },
{ "senkoo-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4688,7 +4687,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN, // one of the few exceptions that doesn't work with USA bios while they work with Export bios, so it's safer to restrict it to Japan bios
{
{ "317-5123-com.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4825,7 +4824,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5108-jpn.pic", 0, 0x4000 },
{ "ss2005-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4841,7 +4840,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5108-jpn.pic", 0, 0x4000 },
{ "ss2005-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4872,7 +4871,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5127-jpn.pic", 0, 0x4000 },
{ NULL, 0, 0 },
@ -4887,7 +4886,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5093-jpn.pic", 0, 0x4000 },
{ "tetkiwam-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4903,7 +4902,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5121-jpn.pic", 0, 0x4000 },
{ "trgheart-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4919,7 +4918,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5121-jpn.pic", 0, 0x4000 },
{ "trgheart-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4935,7 +4934,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5103-jpn.pic", 0, 0x4000 },
{ "trizeal-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4951,7 +4950,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5117-jpn.pic", 0, 0x4000 },
{ "undefeat-default-eeprom.bin", 0, 0x80, Eeprom },
@ -4967,7 +4966,7 @@ Games[] =
0,
"naomi",
GD,
REGION_AUSTRALIA,
REGION_JAPAN,
{
{ "317-5096-jpn.pic", 0, 0x4000 },
{ "usagiym-default-eeprom.bin", 0, 0x80, Eeprom },

View File

@ -37,8 +37,9 @@ InputDescriptors _18wheelr_inputs = {
{
{ NAOMI_BTN0_KEY, "HORN" },
{ NAOMI_DOWN_KEY, "VIEW" },
//{ NAOMI_DOWN_KEY, "SHIFT L" }, // This button uses P2 inputs for P1
{ NAOMI_UP_KEY, "SHIFT H" }, // This button uses P2 inputs for P1
{ NAOMI_BTN1_KEY, "SHIFT L", NAOMI_DOWN_KEY }, // This button uses P2 inputs for P1
{ NAOMI_BTN2_KEY, "SHIFT H", NAOMI_UP_KEY }, // This button uses P2 inputs for P1
{ NAOMI_BTN3_KEY, "SHIFT R", NAOMI_LEFT_KEY }, // This button uses P2 inputs for P1
NAO_START_DESC
NAO_BASE_BTN_DESC
{ 0 },
@ -153,6 +154,22 @@ InputDescriptors gunsur2_inputs = {
},
};
InputDescriptors jambo_inputs = {
{
{ NAOMI_UP_KEY, "LEVER UP", NAOMI_DOWN_KEY }, // This button uses P2 inputs for P1
{ NAOMI_DOWN_KEY, "LEVER DOWN", NAOMI_UP_KEY }, // This button uses P2 inputs for P1
NAO_START_DESC
NAO_BASE_BTN_DESC
{ 0 },
},
{
{ "HANDLE", Full },
{ "ACCEL", Half },
{ "BRAKE", Half },
{ NULL },
},
};
InputDescriptors mvsc2_inputs = {
{
{ NAOMI_BTN0_KEY, "SHOT1" },
@ -191,6 +208,32 @@ InputDescriptors ninjaslt_inputs = {
},
};
InputDescriptors vonot_inputs = {
{
{ NAOMI_UP_KEY, "L UP" },
{ NAOMI_DOWN_KEY, "L DOWN" },
{ NAOMI_LEFT_KEY, "L LEFT" },
{ NAOMI_RIGHT_KEY, "L RIGHT" },
{ NAOMI_BTN0_KEY, "L TRIGGER" },
{ NAOMI_BTN1_KEY, "L TURBO" },
{ NAOMI_BTN2_KEY, "QM" },
// These buttons use P2 inputs for P1
{ NAOMI_BTN3_KEY, "R TRIGGER", NAOMI_BTN0_KEY },
{ NAOMI_BTN4_KEY, "R TURBO", NAOMI_BTN1_KEY },
{ NAOMI_BTN5_KEY, "R UP", NAOMI_UP_KEY },
{ NAOMI_BTN6_KEY, "R DOWN", NAOMI_DOWN_KEY },
{ NAOMI_BTN7_KEY, "R LEFT", NAOMI_LEFT_KEY },
{ NAOMI_BTN8_KEY, "R RIGHT", NAOMI_RIGHT_KEY },
NAO_START_DESC
NAO_BASE_BTN_DESC
{ 0 },
},
{
{ NULL },
},
};
InputDescriptors vtenis2c_inputs = {
{
{ NAOMI_BTN0_KEY, "SHOT1" },

View File

@ -210,7 +210,7 @@ void LoadSpecialSettings()
if (!strncmp("MK-51182", reios_product_number, 8))
{
printf("Enabling Extra depth scaling for game %s\n", reios_product_number);
settings.rend.ExtraDepthScale = 1000;
settings.rend.ExtraDepthScale = 10000;
}
#elif DC_PLATFORM == DC_PLATFORM_NAOMI || DC_PLATFORM == DC_PLATFORM_ATOMISWAVE
if (!strcmp("METAL SLUG 6", naomi_game_id) || !strcmp("WAVE RUNNER GP", naomi_game_id))
@ -254,6 +254,11 @@ void LoadSpecialSettings()
printf("Enabling specific JVS setup for game %s\n", naomi_game_id);
settings.input.JammaSetup = 5;
}
else if (!strcmp(" BIOHAZARD GUN SURVIVOR2", naomi_game_id))
{
printf("Enabling specific JVS setup for game %s\n", naomi_game_id);
settings.input.JammaSetup = 7;
}
if (!strcmp("COSMIC SMASH IN JAPAN", naomi_game_id))
{
printf("Enabling translucent depth multipass for game %s\n", naomi_game_id);