- --
Viewing Issue Advanced Details
ID | Category [?] | Severity [?] | Reproducibility | Date Submitted | Last Update |
---|---|---|---|---|---|
02960 | Graphics | Critical (emulation) | Always | Feb 24, 2009, 14:13 | Feb 19, 2010, 13:27 |
Tester | incog | View Status | Public | Platform | MAME (Official Binary) |
Assigned To | Mamesick | Resolution | Fixed | OS | Windows XP/Vista 32-bit |
Status [?] | Resolved | Driver | |||
Version | 0.129 | Fixed in Version | 0.136u4 | Build | Normal |
Fixed in Git Commit | Github Pull Request # | ||||
Summary | 02960: speglsht: Regression in Super Eagle Shot, looping broken attract mode | ||||
Description |
Looping broken attract mode, shows checksum error and shows an error on inserting a coin. Works in 0.128, Broken in 0.129 |
||||
Steps To Reproduce | |||||
Additional Information | |||||
Github Commit | |||||
Flags | |||||
Regression Version | 0.128u4 | ||||
Affected Sets / Systems | speglsht | ||||
Attached Files
|
speglsht.diff (1,054 bytes) Feb 7, 2010, 14:25 [Show Content] [Hide Content]diff -Nru old/src/mame/drivers/speglsht.c new/src/mame/drivers/speglsht.c --- old/src/mame/drivers/speglsht.c 2010-01-28 13:14:18.000000000 +0100 +++ new/src/mame/drivers/speglsht.c 2010-02-07 15:01:44.000000000 +0100 @@ -104,6 +104,7 @@ */ #include "emu.h" +#include "deprecat.h" #include "cpu/z80/z80.h" #include "cpu/mips/r3000.h" #include "sound/st0016.h" @@ -301,9 +302,12 @@ &st0016_charram }; - static INTERRUPT_GEN( irq4_gen ) +static INTERRUPT_GEN( irq4_gen ) { - cpu_set_input_line(device, R3000_IRQ4, ASSERT_LINE); + if(cpu_getiloops(device) == 0) + cpu_set_input_line(device, R3000_IRQ4, ASSERT_LINE); + else + cpu_set_input_line(device, R3000_IRQ4, CLEAR_LINE); } static const r3000_cpu_core config = @@ -329,7 +333,8 @@ MDRV_CPU_ADD("sub", R3000LE, 25000000) MDRV_CPU_CONFIG(config) MDRV_CPU_PROGRAM_MAP(speglsht_mem) - MDRV_CPU_VBLANK_INT("screen", irq4_gen) + //256???K?? + MDRV_CPU_VBLANK_INT_HACK(irq4_gen, 256) MDRV_QUANTUM_TIME(HZ(6000)) MDRV_MACHINE_RESET(speglsht) | ||||
real_fix.diff (1,580 bytes) Feb 8, 2010, 17:05 [Show Content] [Hide Content]diff -Nru sourceold/src/mame/drivers/speglsht.c source/src/mame/drivers/speglsht.c --- sourceold/src/mame/drivers/speglsht.c 2010-01-16 09:13:14.000000000 +0100 +++ source/src/mame/drivers/speglsht.c 2010-02-08 17:50:34.000000000 +0100 @@ -202,6 +202,12 @@ return 0; } +static READ32_HANDLER(irq_ack_clear) +{ + cputag_set_input_line(space->machine, "sub", R3000_IRQ4, CLEAR_LINE); + return 0; +} + static ADDRESS_MAP_START( speglsht_mem, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_RANGE(0x01000000, 0x01007fff) AM_RAM //tested - STATIC RAM @@ -214,7 +220,7 @@ AM_RANGE(0x01c00000, 0x01dfffff) AM_ROM AM_REGION("user2", 0) AM_RANGE(0x0a000000, 0x0a003fff) AM_READWRITE(shared_r, shared_w) AM_RANGE(0x1eff0000, 0x1eff001f) AM_RAM - AM_RANGE(0x1eff003c, 0x1eff003f) AM_READNOP //interrupt related + AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear) AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("user1", 0) AM_RANGE(0x2fc00000, 0x2fdfffff) AM_ROM AM_REGION("user1", 0) // mirror for interrupts ADDRESS_MAP_END @@ -301,11 +307,6 @@ &st0016_charram }; - static INTERRUPT_GEN( irq4_gen ) -{ - cpu_set_input_line(device, R3000_IRQ4, ASSERT_LINE); -} - static const r3000_cpu_core config = { 0, @@ -329,7 +330,7 @@ MDRV_CPU_ADD("sub", R3000LE, 25000000) MDRV_CPU_CONFIG(config) MDRV_CPU_PROGRAM_MAP(speglsht_mem) - MDRV_CPU_VBLANK_INT("screen", irq4_gen) + MDRV_CPU_VBLANK_INT("screen", irq4_line_hold) MDRV_QUANTUM_TIME(HZ(6000)) MDRV_MACHINE_RESET(speglsht) | |||||
Relationships
There are no relationship linked to this issue. |
Notes
5
No.03817
Phil Bennett Developer
Feb 24, 2009, 18:56
|
Reducing the MDRV_QUANTUM_TIME frequency fixes it. This suggests to me that there's a missing CPU sync mechanism. |
---|---|
No.05647
M.A.S.H. Senior Tester
Feb 7, 2010, 14:25
|
I fixed the regression in Super Eagle Shot. INTERRUPT_GEN( irq4_gen ) was changed in drivers\speglsht.c from cpunum_set_input_line(machine, 1, R3000_IRQ4, ASSERT_LINE); to cpu_set_input_line(device, R3000_IRQ4, ASSERT_LINE); The same changes was also made for srmp5 and this game has the same problems since MAME 0.129u2, in this version it was fixed. I used the fixes also for Super Eagle Shot and it works! Use attached DIFF file. |
No.05648
Haze Senior Tester
Feb 7, 2010, 14:35
|
Both those lines should do the same thing. the R3000 is CPU1. irq4_gen is called by CPU1 (the R3000) so I don't understand why the behavior is different. |
No.05653
Haze Senior Tester
Feb 7, 2010, 18:33
edited on: Feb 7, 2010, 18:36 |
actually, I see what's happened. Your description doesn't match your DIFF! The 'fix' you've posted allows it to clear the IRQ line, so that it isn't always ASSERTED. This is very different to the one line change you suggest is responsible in the report. Your fix is hacky tho, really, there should probably be an IRQ ack, or the line should be cleared after a certain period, or possibly when the interrupt is taken, automatically. |
No.05663
Mamesick Senior Tester
Feb 8, 2010, 17:07
|
Fixed. Easier than I expected. I'll submit for next release. Note that same mechanism applies to srmp5.c too, where I removed the hack and implemented correct IRQ ack. |