diff options
Diffstat (limited to 'src/mame/drivers/deco32.cpp')
-rw-r--r-- | src/mame/drivers/deco32.cpp | 223 |
1 files changed, 54 insertions, 169 deletions
diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp index fcb88205ab1..88404a9805f 100644 --- a/src/mame/drivers/deco32.cpp +++ b/src/mame/drivers/deco32.cpp @@ -372,94 +372,15 @@ NOTE: There are several unpopulated locations (denoted by *) for additional rom #include "cpu/z80/z80.h" #include "machine/decocrpt.h" #include "machine/deco156.h" +#include "machine/input_merger.h" #include "speaker.h" /**********************************************************************************/ -void deco32_state::update_irq_state(uint8_t irq_cause, bool assert_state) -{ - if(assert_state == true) - m_irq_cause |= irq_cause; - else - m_irq_cause &= ~irq_cause; - - m_maincpu->set_input_line(ARM_IRQ_LINE, (m_irq_cause != 0) ? ASSERT_LINE : CLEAR_LINE); -} - -INTERRUPT_GEN_MEMBER(deco32_state::vblank_irq_gen) -{ - update_irq_state(VBLANK_IRQ,true); -} - -TIMER_DEVICE_CALLBACK_MEMBER(deco32_state::raster_irq_gen) -{ - update_irq_state(RASTER_IRQ,true); -} - -READ32_MEMBER(deco32_state::irq_controller_r) -{ - switch (offset) - { - case 2: /* Raster IRQ ACK - value read is not used */ - update_irq_state(RASTER_IRQ,false); - return 0; - - /* Irq controller - - Bit 0: 1 = Vblank active - Bit 1: ? (Hblank active? Captain America raster IRQ waits for this to go low) - Bit 2: - Bit 3: - Bit 4: VBL Irq - Bit 5: Raster IRQ - Bit 6: Lightgun IRQ (on Lock N Load only) - Bit 7: - */ - case 3: - { - /* ZV03082007 - video_screen_get_vblank() doesn't work for Captain America, as it expects - that this bit is NOT set in rows 0-7. */ - bool const hvblank(m_screen->vblank() && m_screen->hblank()); - return 0xffffff80 | (hvblank ? 1 : 0) | (m_screen->vblank() ? 2 : 0) | m_irq_cause; - } - } - - logerror("%08x: Unmapped IRQ read %08x (%08x)\n",space.device().safe_pc(),offset,mem_mask); - return 0xffffffff; -} - -WRITE32_MEMBER(deco32_state::irq_controller_w) -{ - int scanline; - - switch (offset) { - case 0: /* IRQ enable - probably an irq mask, but only values used are 0xc8 and 0xca */ -// logerror("%08x: IRQ write %d %08x\n",space.device().safe_pc(),offset,data); - m_raster_enable=(data&0xff)==0xc8; /* 0xca seems to be off */ - break; - - case 1: /* Raster IRQ scanline position, only valid for values between 1 & 239 (0 and 240-256 do NOT generate IRQ's) */ - { - scanline=(data&0xff); - - - //printf("%d\n",scanline); - if (m_raster_enable && scanline != 0) - m_raster_irq_timer->adjust(m_screen->time_until_pos(scanline-1, 0)); - else - m_raster_irq_timer->reset(); - break; - } - case 2: /* VBL irq ack */ - update_irq_state(VBLANK_IRQ,false); - break; - } -} - // TODO: probably clears both player 1 and player 2 WRITE32_MEMBER(dragngun_state::gun_irq_ack_w) { - update_irq_state(LIGHTGUN_IRQ,false); + m_deco_irq->lightgun_irq_ack_w(data); } WRITE32_MEMBER(deco32_state::sound_w) @@ -825,7 +746,7 @@ static ADDRESS_MAP_START( captaven_map, AS_PROGRAM, 32, deco32_state ) AM_RANGE(0x128000, 0x12ffff) AM_READWRITE16(dg_protection_region_0_146_r, dg_protection_region_0_146_w, 0x0000ffff) AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(nonbuffered_palette_w) AM_SHARE("paletteram") /* Palette RAM */ - AM_RANGE(0x148000, 0x14800f) AM_READWRITE(irq_controller_r, irq_controller_w) + AM_RANGE(0x148000, 0x14800f) AM_DEVREADWRITE8("irq", deco_irq_device, read, write, 0x000000ff) AM_RANGE(0x160000, 0x167fff) AM_RAM /* Extra work RAM */ AM_RANGE(0x168000, 0x168003) AM_READ(captaven_soundcpu_r) @@ -881,6 +802,10 @@ WRITE32_MEMBER( deco32_state::fghthist_protection_region_0_146_w ) } } +WRITE32_MEMBER( deco32_state::vblank_ack_w ) +{ + m_maincpu->set_input_line(ARM_IRQ_LINE, CLEAR_LINE); +} static ADDRESS_MAP_START( fghthist_map, AS_PROGRAM, 32, deco32_state ) // AM_RANGE(0x000000, 0x001fff) AM_ROM AM_WRITE(pf1_data_w) // wtf?? @@ -890,7 +815,7 @@ static ADDRESS_MAP_START( fghthist_map, AS_PROGRAM, 32, deco32_state ) AM_RANGE(0x12002c, 0x12002f) AM_WRITE(fghthist_eeprom_w) AM_RANGE(0x1201fc, 0x1201ff) AM_WRITE(sound_w) - AM_RANGE(0x140000, 0x140003) AM_WRITENOP /* VBL irq ack */ + AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w) AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram") AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(palette_dma_w) @@ -920,7 +845,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( fghthsta_memmap, AS_PROGRAM, 32, deco32_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x140000, 0x140003) AM_WRITENOP /* VBL irq ack */ + AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w) AM_RANGE(0x150000, 0x150003) AM_WRITE(fghthist_eeprom_w) /* Volume port/Eprom */ AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram") @@ -978,7 +903,7 @@ static ADDRESS_MAP_START( dragngun_map, AS_PROGRAM, 32, dragngun_state ) AM_RANGE(0x0120000, 0x0127fff) AM_READWRITE16(dg_protection_region_0_146_r, dg_protection_region_0_146_w, 0x0000ffff) // AM_RANGE(0x01204c0, 0x01204c3) AM_WRITE(sound_w) - AM_RANGE(0x0128000, 0x012800f) AM_READWRITE(irq_controller_r, irq_controller_w) + AM_RANGE(0x0128000, 0x012800f) AM_DEVREADWRITE8("irq", deco_irq_device, read, write, 0x000000ff) AM_RANGE(0x0130000, 0x0131fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram") AM_RANGE(0x0138000, 0x0138003) AM_NOP /* Palette dma complete in bit 0x8? ack? return 0 else tight loop */ AM_RANGE(0x0138008, 0x013800b) AM_WRITE(palette_dma_w) @@ -1040,7 +965,7 @@ static ADDRESS_MAP_START( lockload_map, AS_PROGRAM, 32, dragngun_state ) // AM_RANGE(0x1204c0, 0x1204c3) AM_WRITE(sound_w) AM_RANGE(0x120000, 0x127fff) AM_READWRITE16(dg_protection_region_0_146_r, dg_protection_region_0_146_w, 0x0000ffff) - AM_RANGE(0x128000, 0x12800f) AM_READWRITE(irq_controller_r, irq_controller_w) + AM_RANGE(0x128000, 0x12800f) AM_DEVREADWRITE8("irq", deco_irq_device, read, write, 0x000000ff) AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram") AM_RANGE(0x138000, 0x138003) AM_READONLY AM_WRITENOP //palette dma complete in bit 0x8? ack? return 0 else tight loop @@ -1089,7 +1014,7 @@ static ADDRESS_MAP_START( tattass_map, AS_PROGRAM, 32, deco32_state ) AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram") AM_RANGE(0x120000, 0x120003) AM_NOP /* ACIA (unused) */ AM_RANGE(0x130000, 0x130003) AM_WRITENOP /* Coin port (unused?) */ - AM_RANGE(0x140000, 0x140003) AM_WRITENOP /* Vblank ack */ + AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w) AM_RANGE(0x150000, 0x150003) AM_WRITE(tattass_control_w) /* Volume port/Eprom/Priority */ AM_RANGE(0x162000, 0x162fff) AM_RAM /* 'Jack' RAM!? */ @@ -1155,7 +1080,7 @@ static ADDRESS_MAP_START( nslasher_map, AS_PROGRAM, 32, deco32_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram") AM_RANGE(0x120000, 0x1200ff) AM_NOP /* ACIA (unused) */ - AM_RANGE(0x140000, 0x140003) AM_WRITENOP /* Vblank ack */ + AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w) AM_RANGE(0x150000, 0x150003) AM_WRITE(nslasher_eeprom_w) /* Volume port/Eprom/Priority */ AM_RANGE(0x163000, 0x16309f) AM_RAM_WRITE(ace_ram_w) AM_SHARE("ace_ram") /* 'Ace' RAM!? */ @@ -1493,15 +1418,10 @@ INPUT_PORTS_END INPUT_CHANGED_MEMBER(dragngun_state::lockload_gun_trigger) { - uint8_t player_side = (uint8_t)(uintptr_t)param; - const char *player_input = player_side == 1 ? "LIGHT1_Y" : "LIGHT0_Y"; - - if(!newval) + switch ((uint8_t)(uintptr_t)param) { - int gun_line = ioport(player_input)->read(); - - if(gun_line >= vblankout && gun_line <= vblankin) - m_gun_latch = gun_line/2; + case 0: m_deco_irq->lightgun1_trigger_w(!newval); break; + case 1: m_deco_irq->lightgun2_trigger_w(!newval); break; } } @@ -1815,11 +1735,6 @@ WRITE8_MEMBER(deco32_state::sound_bankswitch_w) /**********************************************************************************/ -MACHINE_RESET_MEMBER(deco32_state,deco32) -{ - m_raster_irq_timer = machine().device<timer_device>("int_timer"); -} - DECOSPR_PRIORITY_CB_MEMBER(deco32_state::captaven_pri_callback) { @@ -1854,20 +1769,19 @@ static MACHINE_CONFIG_START( captaven ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, XTAL_28MHz/4) /* verified on pcb (Data East 101 custom)*/ MCFG_CPU_PROGRAM_MAP(captaven_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, vblank_irq_gen) MCFG_CPU_ADD("audiocpu", H6280, XTAL_32_22MHz/4/3) /* pin 10 is 32mhz/4, pin 14 is High so internal divisor is 3 (verified on pcb) */ MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_MACHINE_RESET_OVERRIDE(deco32_state,deco32) + MCFG_INPUT_MERGER_ANY_HIGH("irq_merger") + MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE)) - MCFG_TIMER_DRIVER_ADD("int_timer", deco32_state, raster_irq_gen) + MCFG_DECO_IRQ_ADD("irq", "screen") + MCFG_DECO_IRQ_RASTER2_IRQ_CB(DEVWRITELINE("irq_merger", input_merger_any_high_device, in_w<0>)) + MCFG_DECO_IRQ_VBLANK_IRQ_CB(DEVWRITELINE("irq_merger", input_merger_any_high_device, in_w<1>)) MCFG_SCREEN_ADD("screen", RASTER) -// MCFG_SCREEN_REFRESH_RATE(60) -// MCFG_SCREEN_SIZE(42*8, 32*8) -// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4,442,0,40*8,274,8,31*8) + MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248) MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_captaven) MCFG_SCREEN_PALETTE("palette") @@ -1947,9 +1861,9 @@ DECO16IC_BANK_CB_MEMBER(deco32_state::fghthist_bank_callback) static MACHINE_CONFIG_START( fghthist ) /* DE-0380-2 PCB */ /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", ARM, 28000000/4) + MCFG_CPU_ADD("maincpu", ARM, XTAL_28MHz / 4) MCFG_CPU_PROGRAM_MAP(fghthist_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, vblank_irq_gen) + MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert) MCFG_CPU_ADD("audiocpu", H6280, 32220000/8) MCFG_CPU_PROGRAM_MAP(sound_map) @@ -1957,10 +1871,7 @@ static MACHINE_CONFIG_START( fghthist ) /* DE-0380-2 PCB */ MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) -// MCFG_SCREEN_REFRESH_RATE(60) -// MCFG_SCREEN_SIZE(42*8, 32*8) -// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4,442,0,40*8,274,8,31*8) + MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248) MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_fghthist) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fghthist) @@ -2033,9 +1944,9 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( fghthsta ) /* DE-0395-1 PCB */ /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", ARM, 28000000/4) + MCFG_CPU_ADD("maincpu", ARM, XTAL_28MHz / 4) MCFG_CPU_PROGRAM_MAP(fghthsta_memmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, vblank_irq_gen) + MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert) MCFG_CPU_ADD("audiocpu", H6280, 32220000/8) MCFG_CPU_PROGRAM_MAP(sound_map) @@ -2043,10 +1954,7 @@ static MACHINE_CONFIG_START( fghthsta ) /* DE-0395-1 PCB */ MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) -// MCFG_SCREEN_REFRESH_RATE(60) -// MCFG_SCREEN_SIZE(42*8, 32*8) -// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4,442,0,40*8,274,8,31*8) + MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248) MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_fghthist) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fghthist) @@ -2157,24 +2065,24 @@ DECO16IC_BANK_CB_MEMBER(dragngun_state::bank_2_callback) static MACHINE_CONFIG_START( dragngun ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", ARM, 28000000/4) + MCFG_CPU_ADD("maincpu", ARM, XTAL_28MHz / 4) MCFG_CPU_PROGRAM_MAP(dragngun_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, vblank_irq_gen) MCFG_CPU_ADD("audiocpu", H6280, 32220000/8) MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_MACHINE_RESET_OVERRIDE(deco32_state,deco32) - MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_INPUT_MERGER_ANY_HIGH("irq_merger") + MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE)) + + MCFG_DECO_IRQ_ADD("irq", "screen") + MCFG_DECO_IRQ_RASTER2_IRQ_CB(DEVWRITELINE("irq_merger", input_merger_any_high_device, in_w<0>)) + MCFG_DECO_IRQ_VBLANK_IRQ_CB(DEVWRITELINE("irq_merger", input_merger_any_high_device, in_w<1>)) - MCFG_TIMER_DRIVER_ADD("int_timer", deco32_state, raster_irq_gen) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) -// MCFG_SCREEN_REFRESH_RATE(60) -// MCFG_SCREEN_SIZE(42*8, 32*8) -// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4,442,0,40*8,274,8,31*8) + MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248) MCFG_SCREEN_UPDATE_DRIVER(dragngun_state, screen_update_dragngun) //MCFG_SCREEN_PALETTE("palette") @@ -2250,43 +2158,33 @@ static MACHINE_CONFIG_START( dragngun ) MACHINE_CONFIG_END -TIMER_DEVICE_CALLBACK_MEMBER(dragngun_state::lockload_vblank_irq_gen) -{ - int scanline = param; - - if(scanline == 31*8) - update_irq_state(VBLANK_IRQ,true); - - // TODO: this occurs at lightgun Y positions, also needs cleaning up. - if(scanline == m_gun_latch) - update_irq_state(LIGHTGUN_IRQ,true); -} - - static MACHINE_CONFIG_START( lockload ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", ARM, 28000000/4) + MCFG_CPU_ADD("maincpu", ARM, XTAL_28MHz / 4) MCFG_CPU_PROGRAM_MAP(lockload_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dragngun_state, lockload_vblank_irq_gen, "screen", 0, 1) MCFG_CPU_ADD("audiocpu", Z80, 32220000/8) MCFG_CPU_PROGRAM_MAP(nslasher_sound) MCFG_CPU_IO_MAP(nslasher_io_sound) + MCFG_INPUT_MERGER_ANY_HIGH("irq_merger") + MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", ARM_IRQ_LINE)) + + MCFG_DECO_IRQ_ADD("irq", "screen") + MCFG_DECO_IRQ_LIGHTGUN1_CB(IOPORT("LIGHT0_Y")) + MCFG_DECO_IRQ_LIGHTGUN2_CB(IOPORT("LIGHT1_Y")) + MCFG_DECO_IRQ_RASTER2_IRQ_CB(DEVWRITELINE("irq_merger", input_merger_any_high_device, in_w<0>)) + MCFG_DECO_IRQ_VBLANK_IRQ_CB(DEVWRITELINE("irq_merger", input_merger_any_high_device, in_w<1>)) + MCFG_DECO_IRQ_LIGHTGUN_IRQ_CB(DEVWRITELINE("irq_merger", input_merger_any_high_device, in_w<2>)) + MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* to improve main<->audio comms */ - MCFG_MACHINE_RESET_OVERRIDE(deco32_state,deco32) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") - MCFG_TIMER_DRIVER_ADD("int_timer", deco32_state, raster_irq_gen) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) -// MCFG_SCREEN_REFRESH_RATE(60) -// MCFG_SCREEN_SIZE(42*8, 32*8+22) -// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4,442,0,40*8,274,8,31*8) + MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248) MCFG_SCREEN_UPDATE_DRIVER(dragngun_state, screen_update_dragngun) MCFG_BUFFERED_SPRITERAM32_ADD("spriteram") @@ -2377,15 +2275,12 @@ static MACHINE_CONFIG_START( tattass ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", ARM, 28000000/4) // unconfirmed MCFG_CPU_PROGRAM_MAP(tattass_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, vblank_irq_gen) + MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert) MCFG_EEPROM_SERIAL_93C76_8BIT_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) -// MCFG_SCREEN_REFRESH_RATE(60) -// MCFG_SCREEN_SIZE(42*8, 32*8) -// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4,442,0,40*8,274,8,31*8) + MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz / 4, 442, 0, 320, 274, 8, 248) MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_nslasher) MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0) @@ -2445,9 +2340,9 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( nslasher ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", ARM, 28322000/4) + MCFG_CPU_ADD("maincpu", ARM, XTAL_28_322MHz / 4) MCFG_CPU_PROGRAM_MAP(nslasher_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, vblank_irq_gen) + MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, irq0_line_assert) MCFG_CPU_ADD("audiocpu", Z80, 32220000/9) MCFG_CPU_PROGRAM_MAP(nslasher_sound) @@ -2458,10 +2353,7 @@ static MACHINE_CONFIG_START( nslasher ) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) -// MCFG_SCREEN_REFRESH_RATE(60) -// MCFG_SCREEN_SIZE(42*8, 32*8) -// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) - MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4,442,0,40*8,274,8,31*8) + MCFG_SCREEN_RAW_PARAMS(XTAL_28_322MHz / 4, 442, 0, 320, 274, 8, 248) MCFG_SCREEN_UPDATE_DRIVER(deco32_state, screen_update_nslasher) MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0) @@ -3997,9 +3889,7 @@ DRIVER_INIT_MEMBER(deco32_state,captaven) deco56_decrypt_gfx(machine(), "gfx1"); deco56_decrypt_gfx(machine(), "gfx2"); - save_item(NAME(m_raster_enable)); save_item(NAME(m_nslasher_sound_irq)); - save_item(NAME(m_irq_cause)); } extern void process_dvi_data(device_t *device,uint8_t* dvi_data, int offset, int regionsize); @@ -4033,9 +3923,6 @@ void dragngun_state::dragngun_init_common() #endif save_item(NAME(m_lightgun_port)); - save_item(NAME(m_raster_enable)); - save_item(NAME(m_irq_cause)); - save_item(NAME(m_gun_latch)); // there are DVI headers at 0x000000, 0x580000, 0x800000, 0xB10000, 0xB80000 // process_dvi_data(this,memregion("dvi")->base(),0x000000, 0x1000000); @@ -4079,9 +3966,7 @@ DRIVER_INIT_MEMBER(dragngun_state,lockload) memcpy(RAM+0x300000,RAM+0x100000,0x100000); memset(RAM+0x100000,0,0x100000); - save_item(NAME(m_raster_enable)); save_item(NAME(m_nslasher_sound_irq)); - save_item(NAME(m_irq_cause)); // ROM[0x3fe3c0/4]=0xe1a00000;// NOP test switch lock // ROM[0x3fe3cc/4]=0xe1a00000;// NOP test switch lock |