Some Naomi tweakery.

This commit is contained in:
Angelo Salese 2009-04-04 18:01:13 +00:00
parent 9f14872359
commit b09944610a
2 changed files with 33 additions and 22 deletions

View File

@ -12,25 +12,25 @@ Current Compatibility notes (GD-rom games only)
|----------|-------|-----|------|------|------|--------------------------------|-----------------------------------------------------| |----------|-------|-----|------|------|------|--------------------------------|-----------------------------------------------------|
|romname | Pl(s) | Rot | Test | Boot | Game | Control Type | Notes | |romname | Pl(s) | Rot | Test | Boot | Game | Control Type | Notes |
|----------|-------|-----|------|------|------|--------------------------------|-----------------------------------------------------| |----------|-------|-----|------|------|------|--------------------------------|-----------------------------------------------------|
|gundmgd | 1 | H | Yes | Yes | Yes | twin-joystick with 4+6 buttons | | |gundmgd | 1 | H | Yes | Yes | Yes | joystick with 4 buttons | |
|sfz3ugd | 2 | H | Yes | Yes | No | joystick with 6 buttons | Spurious irq on ARM7 prg / broken timings | |sfz3ugd | 2 | H | Yes | Yes | No | joystick with 6 buttons | Hangs after pressing start |
|cvsgd | 2 | H | Yes | Yes | Yes | joystick with 4 buttons | 2 + 2 extra buttons | |cvsgd | 2 | H | Yes | Yes | Yes | joystick with 4 buttons | 2 + 2 extra buttons |
|gundmxgd | 1 | H | Yes | Yes | Yes | twin-joystick with 4+6 buttons | | |gundmxgd | 1 | H | Yes | Yes | Yes | joystick with 4+6 buttons | |
|cvs2gd | 2 | H | Yes | Yes | Yes | joystick with 6 buttons | | |cvs2gd | 2 | H | Yes | Yes | Yes | joystick with 6 buttons | |
|ikaruga | 2 | V | Yes | Yes | No | joystick with 2 buttons? | Broken i/o / timings | |ikaruga | 2 | V | Yes | Yes | Yes | joystick with 3 buttons? | |
|ggxx | 2 | H | Yes | Yes | Yes | joystick with 5 buttons | | |ggxx | 2 | H | Yes | Yes | Yes | joystick with 5 buttons | |
|moeru | 2 | H | No | No | No | joystick with 3 buttons? | Broken i/o, stuck at the "now loading" msg | |moeru | 2 | H | No | No | No | joystick with 3 buttons? | Broken i/o, stuck at the "now loading" msg |
|chocomk | 2 | H | No? | Yes | Yes? | joystick with 3 buttons? | Broken i/o? | |chocomk | 2 | H | Yes | Yes | Yes | joystick with 3 buttons? | |
|quizqgd | 2 | V | Yes | Yes | Yes | joystick(?) with 4 buttons | | |quizqgd | 2 | V | Yes | Yes | Yes | joystick(?) with 4 buttons | |
|ggxxrl | 2 | H | Yes | Yes | Yes | joystick with 5 buttons | | |ggxxrl | 2 | H | Yes | Yes | Yes | joystick with 5 buttons | |
|tetkiwam | 2 | H | No | No | No | joystick with 3 buttons? | | |tetkiwam | 2 | H | No | No | No | joystick with 3 buttons? | Black screen, tests the SCIF (UART) regs? |
|shikgam2 | 2 | V | Yes | Yes | No | joystick with 3 buttons? | Broken i/o | |shikgam2 | 2 | V | Yes | Yes | No | joystick with 3 buttons? | Broken i/o, crashes on the proper gameplay |
|usagui | 1 | H | Yes | Yes | No | mahjong panel | | |usagui | 1 | H | Yes | Yes | No | mahjong panel | |
|bdrdown | 2 | H | Yes | Yes | No? | joystick with 3 buttons? | Broken i/o in test mode | |bdrdown | 2 | H | Yes | Yes | Yes | joystick with 3 buttons? | |
|psyvar2 | 1 | V | No | No | No | joystick with 3 buttons? | | |psyvar2 | 1 | V | No | No | No | joystick with 3 buttons? | |
|cfield | 1? | H | No? | Yes | No | joystick with 3 buttons? | Broken i/o | |cfield | 1? | H | No? | Yes | No | joystick with 3 buttons? | Broken i/o |
|trizeal | 2 | V | No | No | No | joystick with 3 buttons? | | |trizeal | 2 | V | No | No | No | joystick with 3 buttons? | |
|meltybld | 2 | H | No? | Yes | No? | joystick with 4 buttons? | Crashes in attract with wrong mask | |meltybld | 2 | H | No? | Yes | No? | joystick with 4 buttons? | Crashes in attract/gameplay with wrong mask |
|senko | 2 | H | Yes | Yes | No | joystick with 3 buttons? | Broken i/o | |senko | 2 | H | Yes | Yes | No | joystick with 3 buttons? | Broken i/o |
|senkoo | 2 | H | Yes | Yes | No | joystick with 3 buttons? | Broken i/o | |senkoo | 2 | H | Yes | Yes | No | joystick with 3 buttons? | Broken i/o |
|ss2005 | 1 | H | Yes | Yes | No | joystick with 3 buttons? | Broken i/o | |ss2005 | 1 | H | Yes | Yes | No | joystick with 3 buttons? | Broken i/o |
@ -40,14 +40,14 @@ Current Compatibility notes (GD-rom games only)
|undefeat | 2 | V | No | No | No | joystick with 3 buttons? | Stuck at the "now loading" msg | |undefeat | 2 | V | No | No | No | joystick with 3 buttons? | Stuck at the "now loading" msg |
|trgheart | 1 | V | Yes | Yes | No | joystick with 3 buttons? | Broken i/o | |trgheart | 1 | V | Yes | Yes | No | joystick with 3 buttons? | Broken i/o |
|jingystm | 2 | H | Yes | Yes | No | joystick with 4 buttons? | Broken i/o | |jingystm | 2 | H | Yes | Yes | No | joystick with 4 buttons? | Broken i/o |
|meltyb | 2 | H | No? | Yes | No? | joystick with 4 buttons? | Crashes in attract with wrong mask | |meltyb | 2 | H | No? | Yes | No? | joystick with 4 buttons? | Crashes in attract/gameplay with wrong mask |
|meltyba | 2 | H | No? | Yes | No? | joystick with 4 buttons? | Crashes in attract with wrong mask | |meltyba | 2 | H | No? | Yes | No? | joystick with 4 buttons? | Crashes in attract/gameplay with wrong mask |
|karous | 1 | V | Yes | Yes | No | joystick with 3 buttons? | Broken i/o | |karous | 1 | V | Yes | Yes | No | joystick with 3 buttons? | Broken i/o |
|takoron | 2 | H | Yes | Yes | Yes | joystick with 3 buttons | | |takoron | 2 | H | Yes | Yes | Yes | joystick with 3 buttons | |
-------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------
|confmiss | 2 | H | Yes | Yes | No | lightgun | | |confmiss | 2 | H | Yes | Yes | No | lightgun | |
|sprtjam | 2 | H | Yes | Yes | Yes | joystick with 2 buttons | | |sprtjam | 2 | H | Yes | Yes | Yes | joystick with 2 buttons | |
|slashout | 1 | H | Yes | Yes | Yes | joystick with 4 buttons | Needs to map the extra button | |slashout | 1 | H | Yes | Yes | Yes | joystick with 4 buttons | |
|spkrbtl | 2 | H | Yes | Yes | No | joystick with 4 buttons | Crashes when loading the gameplay | |spkrbtl | 2 | H | Yes | Yes | No | joystick with 4 buttons | Crashes when loading the gameplay |
|monkeyba | 1 | H | Yes | Yes | No | ad stick | Crashes when loading the gameplay | |monkeyba | 1 | H | Yes | Yes | No | ad stick | Crashes when loading the gameplay |
|dygolf | 2 | H | No | No | No | trackball + 4 buttons | Moans about the jvs settings | |dygolf | 2 | H | No | No | No | trackball + 4 buttons | Moans about the jvs settings |
@ -1057,6 +1057,7 @@ ADDRESS_MAP_END
* Input ports * Input ports
*/ */
/* for now we hardwire a joystick + 6 buttons for every game.*/
static INPUT_PORTS_START( naomi ) static INPUT_PORTS_START( naomi )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service")
@ -1070,6 +1071,9 @@ static INPUT_PORTS_START( naomi )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 )
PORT_START("IN2") PORT_START("IN2")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 )
PORT_START("IN3") PORT_START("IN3")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
@ -1080,6 +1084,9 @@ static INPUT_PORTS_START( naomi )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_START("IN4") PORT_START("IN4")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_START("COINS") PORT_START("COINS")

View File

@ -124,6 +124,7 @@ UINT32 dc_coin_counts[2];
static UINT32 maple_regs[0x100/4]; static UINT32 maple_regs[0x100/4];
static UINT32 dc_rtcregister[4]; static UINT32 dc_rtcregister[4];
static UINT32 g1bus_regs[0x100/4]; static UINT32 g1bus_regs[0x100/4];
static UINT32 g2bus_regs[0x100/4];
UINT8 maple0x86data1[0x80]; UINT8 maple0x86data1[0x80];
static UINT8 maple0x86data2[0x400]; static UINT8 maple0x86data2[0x400];
static emu_timer *dc_rtc_timer; static emu_timer *dc_rtc_timer;
@ -805,14 +806,14 @@ WRITE64_HANDLER( dc_g1_ctrl_w )
dat = (UINT32)(data >> shift); dat = (UINT32)(data >> shift);
old = g1bus_regs[reg]; old = g1bus_regs[reg];
g1bus_regs[reg] = dat; // 5f6c00+reg*4=dat g1bus_regs[reg] = dat; // 5f7400+reg*4=dat
mame_printf_verbose("G1CTRL: [%08x=%x] write %llx to %x, mask %llx\n", 0x5f7400+reg*4, dat, data, offset, mem_mask); mame_printf_verbose("G1CTRL: [%08x=%x] write %llx to %x, mask %llx\n", 0x5f7400+reg*4, dat, data, offset, mem_mask);
switch (reg) switch (reg)
{ {
case SB_GDST: case SB_GDST:
if (!(old & 1) && (dat & 1)) // 0 -> 1 if (dat & 1 && g1bus_regs[SB_GDEN] == 1) // 0 -> 1
{ {
if ((g1bus_regs[SB_GDEN] == 0) || (g1bus_regs[SB_GDDIR] == 0)) if (g1bus_regs[SB_GDDIR] == 0)
{ {
mame_printf_verbose("G1CTRL: unsupported transfer\n"); mame_printf_verbose("G1CTRL: unsupported transfer\n");
return; return;
@ -842,14 +843,14 @@ READ64_HANDLER( dc_g2_ctrl_r )
reg = decode_reg32_64(space->machine, offset, mem_mask, &shift); reg = decode_reg32_64(space->machine, offset, mem_mask, &shift);
mame_printf_verbose("G2CTRL: Unmapped read %08x\n", 0x5f7800+reg*4); mame_printf_verbose("G2CTRL: Unmapped read %08x\n", 0x5f7800+reg*4);
return 0; return (UINT64)g2bus_regs[reg] << shift;
} }
WRITE64_HANDLER( dc_g2_ctrl_w ) WRITE64_HANDLER( dc_g2_ctrl_w )
{ {
int reg; int reg;
UINT64 shift; UINT64 shift;
UINT32 dat; UINT32 dat,old;
static struct { static struct {
UINT32 aica_addr; UINT32 aica_addr;
UINT32 root_addr; UINT32 root_addr;
@ -862,6 +863,10 @@ WRITE64_HANDLER( dc_g2_ctrl_w )
reg = decode_reg32_64(space->machine, offset, mem_mask, &shift); reg = decode_reg32_64(space->machine, offset, mem_mask, &shift);
dat = (UINT32)(data >> shift); dat = (UINT32)(data >> shift);
old = g2bus_regs[reg];
g2bus_regs[reg] = dat; // 5f7800+reg*4=dat
switch (reg) switch (reg)
{ {
/*AICA Address register*/ /*AICA Address register*/
@ -921,9 +926,8 @@ WRITE64_HANDLER( dc_g2_ctrl_w )
wave_dma.root_addr = src; wave_dma.root_addr = src;
wave_dma.size = 0; wave_dma.size = 0;
wave_dma.flag = (wave_dma.indirect & 1) ? 1 : 0; wave_dma.flag = (wave_dma.indirect & 1) ? 1 : 0;
wave_dma.start = 0; wave_dma.start = g2bus_regs[SB_ADST] = 0;
dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_AICA;
//TODO: signal irq there
} }
break; break;
} }