diff options
Diffstat (limited to 'src/mame/drivers/marvins.c')
-rw-r--r-- | src/mame/drivers/marvins.c | 784 |
1 files changed, 0 insertions, 784 deletions
diff --git a/src/mame/drivers/marvins.c b/src/mame/drivers/marvins.c deleted file mode 100644 index cbc866d6cba..00000000000 --- a/src/mame/drivers/marvins.c +++ /dev/null @@ -1,784 +0,0 @@ -/* -various early SNK games (1983-1985) -- Marvin's Maze -- Vanguard II -- Mad Crasher - -driver by Phil Stroffolino - -Known Issues: - Mad Crasher fails the ROM test, but ROMs are verified to be good (reason's unknown) - Mad Crasher sound effects aren't being played (fixed) - - -Change Log ----------- - -AT08XX03: - - added shadows - - fixed Mad Crasher bad background, sound effects and foreground priority. - (great now I can fall under the skyway like I did at Chuck'n Cheese;) - - fixed Vanguard2 scroll offsets - - tuned music tempo and wavegen frequency - -2008.04.04: Small note regarding DipSwitches. Locations and values have been -verified with the manual for both Marvin's Maze and Mad Crasher. Vanguard II -DIPs have been checked against jammaboards diplist, no manual available ATM. -DSW2:7 in madcrash is listed as Difficulty, but it's not clear how it affects -the gameplay difficulty - -*/ - -#include "driver.h" -#include "deprecat.h" -#include "cpu/z80/z80.h" -#include "snk.h" -#include "sound/ay8910.h" -#include "sound/namco.h" - -#define CREDITS "Phil Stroffolino\nTim Lindquist\nCarlos A. Lozano" - -extern int marvins_gamegroup; - -// FIXME this is definitely wrong, schematics clearly show that vblank triggers interrupt -// on both CPU at the same time. -static int snk_irq_delay = 1500; - -// see IRQ notes in drivers\marvins.c -static TIMER_CALLBACK( irq_trigger_callback ) { cpunum_set_input_line(machine, param, 0, HOLD_LINE); } - -static INTERRUPT_GEN( snk_irq_BA ) -{ - cpunum_set_input_line(machine, 1, 0, HOLD_LINE); - timer_set(ATTOTIME_IN_USEC(snk_irq_delay), NULL, 0, irq_trigger_callback); -} - - -/*************************************************************************** -** -** CPUA and CPUB communicate through shared RAM. -** -***************************************************************************/ - -extern WRITE8_HANDLER( marvins_background_ram_w ); -extern WRITE8_HANDLER( marvins_foreground_ram_w ); -extern WRITE8_HANDLER( marvins_text_ram_w ); -extern WRITE8_HANDLER( marvins_spriteram_w ); - - -/*************************************************************************** -** -** Video Driver -** -***************************************************************************/ - -extern VIDEO_START( marvins ); -extern VIDEO_UPDATE( marvins ); -extern VIDEO_UPDATE( madcrash ); - -extern WRITE8_HANDLER( marvins_palette_bank_w ); - - -/*************************************************************************** -** -** Interrupt Handling -** -** CPUA can trigger an interrupt on CPUB, and CPUB can trigger an interrupt -** on CPUA. Each CPU must re-enable interrupts on itself. -** -***************************************************************************/ - -// see drivers\snk.c - - -/*************************************************************************** -** -** Sound System -** -** The sound CPU is a slave, with communication. -** -** Sound Chips: PSGX2 + "Wave Generater" -** -** The Custom Wave Generator is controlled by 6 bytes -** -** The first pair of registers (0x8002, 0x8003) appear to define frequency -** as a fraction: RAM[0x8003]/RAM[0x8002]. -** -** (0x8004, 0x8005, 0x8006, 0x8007) are currently unmapped. Probably they -** control the shape of the wave being played. -** -** snkwave_interface is currently implemented with the "namco" sound component. -** -***************************************************************************/ - -static int sound_cpu_busy; - -static const namco_interface snkwave_interface = -{ - 1, /* number of voices */ - 0 /* stereo */ -}; - -static WRITE8_HANDLER( sound_command_w ) -{ - sound_cpu_busy = 0x01; - soundlatch_w(machine, 0, data); - cpunum_set_input_line(machine, 2, 0, HOLD_LINE); -} - -static READ8_HANDLER( sound_command_r ) -{ - sound_cpu_busy = 0; - return(soundlatch_r(machine,0)); -} - -static READ8_HANDLER( sound_nmi_ack_r ) -{ - cpunum_set_input_line(machine, 2, INPUT_LINE_NMI, CLEAR_LINE); - return 0; -} - -static CUSTOM_INPUT( sound_status_r ) -{ - return sound_cpu_busy; -} - -static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_BASE(&namco_wavedata) /* silly hack - this shouldn't be here */ - AM_RANGE(0x4000, 0x4000) AM_READ(sound_command_r) - AM_RANGE(0x8000, 0x8000) AM_WRITE(ay8910_control_port_0_w) - AM_RANGE(0x8001, 0x8001) AM_WRITE(ay8910_write_port_0_w) - AM_RANGE(0x8002, 0x8007) AM_WRITE(snkwave_w) - AM_RANGE(0x8008, 0x8008) AM_WRITE(ay8910_control_port_1_w) - AM_RANGE(0x8009, 0x8009) AM_WRITE(ay8910_write_port_1_w) - AM_RANGE(0xa000, 0xa000) AM_READ(sound_nmi_ack_r) - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READNOP -ADDRESS_MAP_END - - -/*************************************************************************** -** -** Memory Maps for CPUA, CPUB -** -** Shared RAM is shuffled in Mad Crasher/Vanguard II compared to -** Marvin's Maze. -** -** A few ports are mapped differently for each game. -** -***************************************************************************/ - -static ADDRESS_MAP_START( marvins_cpuA_map, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_WRITE(marvins_palette_bank_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("SYSTEM") - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("P1") - AM_RANGE(0x8200, 0x8200) AM_READ_PORT("P2") - AM_RANGE(0x8300, 0x8300) AM_WRITE(sound_command_w) - AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1") - AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2") - AM_RANGE(0x8600, 0x8600) AM_RAM /* video attribute */ - AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_BASE(&spriteram) AM_SHARE(1) - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(marvins_background_ram_w) AM_SHARE(2) AM_BASE(&spriteram_3) - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(marvins_foreground_ram_w) AM_SHARE(3) AM_BASE(&spriteram_2) - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(marvins_text_ram_w) AM_SHARE(4) AM_BASE(&videoram) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( marvins_cpuB_map, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE(1) - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(marvins_background_ram_w) AM_SHARE(2) - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(marvins_foreground_ram_w) AM_SHARE(3) - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(marvins_text_ram_w) AM_SHARE(4) -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( madcrash_cpuA_map, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("SYSTEM") - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("P1") - AM_RANGE(0x8200, 0x8200) AM_READ_PORT("P2") - AM_RANGE(0x8300, 0x8300) AM_WRITE(sound_command_w) - AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1") - AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2") - AM_RANGE(0x8600, 0x86ff) AM_RAM /* video attribute */ - AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) -// AM_RANGE(0xc800, 0xc800) AM_WRITE(marvins_palette_bank_w) // palette bank switch (c8f1 for Vanguard) - AM_RANGE(0xc800, 0xc8ff) AM_RAM - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_BASE(&spriteram) AM_SHARE(1) - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(marvins_background_ram_w) AM_SHARE(2) AM_BASE(&spriteram_3) - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(marvins_foreground_ram_w) AM_SHARE(3) AM_BASE(&spriteram_2) - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(marvins_text_ram_w) AM_SHARE(4) AM_BASE(&videoram) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( madcrash_cpuB_map, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x8700, 0x8700) AM_WRITE(snk_cpuB_nmi_ack_w) /* Vangaurd II */ - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(snk_cpuB_nmi_ack_w) /* Mad Crasher */ - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(marvins_foreground_ram_w) AM_SHARE(3) - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(marvins_text_ram_w) AM_SHARE(4) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(1) - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(marvins_background_ram_w) AM_SHARE(2) -ADDRESS_MAP_END - - -static INPUT_PORTS_START( marvins ) - PORT_START("SYSTEM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(sound_status_r, NULL) /* sound CPU status */ - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") - PORT_DIPSETTING( 0x00, "1" ) - PORT_DIPSETTING( 0x01, "2" ) - PORT_DIPSETTING( 0x02, "3" ) - PORT_DIPSETTING( 0x03, "5" ) - PORT_DIPNAME(0x04, 0x04, "Infinite Lives (Cheat)") PORT_DIPLOCATION("SW1:3") - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x38, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:4,5,6") - PORT_DIPSETTING( 0x38, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x30, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x28, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x18, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x20, DEF_STR( 1C_6C ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW1:8") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x07, 0x00, "1st Bonus Life" ) PORT_DIPLOCATION("SW2:1,2,3") - PORT_DIPSETTING( 0x00, "10000" ) - PORT_DIPSETTING( 0x01, "20000" ) - PORT_DIPSETTING( 0x02, "30000" ) - PORT_DIPSETTING( 0x03, "40000" ) - PORT_DIPSETTING( 0x04, "50000" ) - PORT_DIPSETTING( 0x05, "60000" ) - PORT_DIPSETTING( 0x06, "70000" ) - PORT_DIPSETTING( 0x07, "80000" ) - PORT_DIPNAME( 0x18, 0x08, "2nd Bonus Life" ) PORT_DIPLOCATION("SW2:4,5") - PORT_DIPSETTING( 0x08, "1st bonus*2" ) - PORT_DIPSETTING( 0x10, "1st bonus*3" ) - PORT_DIPSETTING( 0x18, "1st bonus*4" ) - PORT_DIPSETTING( 0x00, DEF_STR( None ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:6") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:7") - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - - -static INPUT_PORTS_START( vangrd2 ) - PORT_START("SYSTEM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(sound_status_r, NULL) /* sound CPU status */ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3") - PORT_DIPSETTING( 0x00, DEF_STR( 6C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ) ) - PORT_DIPNAME( 0x38, 0x38, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4,5,6") - PORT_DIPSETTING( 0x38, "30000" ) - PORT_DIPSETTING( 0x30, "40000" ) - PORT_DIPSETTING( 0x28, "50000" ) - PORT_DIPSETTING( 0x20, "60000" ) - PORT_DIPSETTING( 0x18, "70000" ) - PORT_DIPSETTING( 0x10, "80000" ) - PORT_DIPSETTING( 0x08, "90000" ) - PORT_DIPSETTING( 0x00, "100000" ) - PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:7,8") - PORT_DIPSETTING( 0x00, "1" ) - PORT_DIPSETTING( 0x40, "2" ) - PORT_DIPSETTING( 0x80, "3" ) - PORT_DIPSETTING( 0xc0, "5" ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, "Freeze" ) PORT_DIPLOCATION("SW2:2") - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:3") - PORT_DIPSETTING( 0x04, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Language ) ) PORT_DIPLOCATION("SW2:4") - PORT_DIPSETTING( 0x08, DEF_STR( English ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Japanese ) ) - PORT_DIPNAME( 0x10, 0x00, "Bonus Life Occurence" ) PORT_DIPLOCATION("SW2:5") - PORT_DIPSETTING( 0x00, "Every bonus" ) - PORT_DIPSETTING( 0x10, "Bonus only" ) - PORT_DIPNAME( 0x20, 0x20, "Infinite Lives (Cheat)") PORT_DIPLOCATION("SW2:6") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - - -static INPUT_PORTS_START( madcrash ) - PORT_START("SYSTEM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(sound_status_r, NULL) /* sound CPU status */ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_SERVICE( 0x80, IP_ACTIVE_LOW ) - - PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("P2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("DSW1") - PORT_DIPUNUSED_DIPLOC(0x01, IP_ACTIVE_LOW, "SW1:1") /* Listed as Unused */ - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:2") - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:3") - PORT_DIPSETTING( 0x04, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:4,5,6") -// PORT_DIPSETTING( 0x08, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:7,8") - PORT_DIPSETTING( 0xc0, "20000 60000" ) - PORT_DIPSETTING( 0x80, "40000 90000" ) - PORT_DIPSETTING( 0x40, "50000 120000" ) - PORT_DIPSETTING( 0x00, DEF_STR( None ) ) - - PORT_START("DSW2") - PORT_DIPNAME( 0x01, 0x00, "Bonus Life Occurence" ) PORT_DIPLOCATION("SW2:1") - PORT_DIPSETTING( 0x01, "1st, 2nd, then every 2nd" ) /* Check the "Non Bugs" page */ - PORT_DIPSETTING( 0x00, "1st and 2nd only" ) - PORT_DIPNAME( 0x06, 0x04, "Scroll Speed" ) PORT_DIPLOCATION("SW2:2,3") - PORT_DIPSETTING( 0x06, "Slow" )//DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x02, "Fast" )//DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, "Faster" ) - PORT_DIPNAME( 0x18, 0x10, "Game mode" ) PORT_DIPLOCATION("SW2:4,5") - PORT_DIPSETTING( 0x18, "Demo Sounds Off" ) - PORT_DIPSETTING( 0x10, "Demo Sounds On" ) - PORT_DIPSETTING( 0x08, "Infinite Lives (Cheat)") - PORT_DIPSETTING( 0x00, "Freeze" ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:6") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) /* Check the "Non Bugs" page */ - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7") - PORT_DIPSETTING( 0x40, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) - PORT_DIPUNKNOWN_DIPLOC(0x80, IP_ACTIVE_LOW, "SW2:8") /* Listed as Unused, it is actually tested in many places */ -INPUT_PORTS_END - - -/*************************************************************************** -** -** Graphics Layout -** -***************************************************************************/ - -static const gfx_layout sprite_layout = -{ - 16,16, - 0x100, - 3, - { 0,0x2000*8,0x4000*8 }, - { - 7,6,5,4,3,2,1,0, - 15,14,13,12,11,10,9,8 - }, - { - 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, - 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 - }, - 256 -}; - -static const gfx_layout tile_layout = -{ - 8,8, - 0x100, - 4, - { 0, 1, 2, 3 }, - { 4, 0, 12, 8, 20, 16, 28, 24}, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, - 256 -}; - -static GFXDECODE_START( marvins ) - GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 0x080, 8 ) /* text layer */ - GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0x110, 1 ) /* background */ - GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 0x100, 1 ) /* foreground */ - GFXDECODE_ENTRY( "gfx4", 0, sprite_layout, 0x000, 16 ) /* sprites */ -GFXDECODE_END - - -/*************************************************************************** -** -** Machine Driver -** -***************************************************************************/ - -static MACHINE_DRIVER_START( marvins ) - - /* basic machine hardware */ - MDRV_CPU_ADD("main", Z80, 3360000) /* 3.36 MHz */ - MDRV_CPU_PROGRAM_MAP(marvins_cpuA_map,0) - MDRV_CPU_VBLANK_INT("main", irq0_line_hold) - - MDRV_CPU_ADD("sub", Z80, 3360000) /* 3.36 MHz */ - MDRV_CPU_PROGRAM_MAP(marvins_cpuB_map,0) - MDRV_CPU_VBLANK_INT("main", irq0_line_hold) - - MDRV_CPU_ADD("audio", Z80, 4000000) /* 4.0 MHz */ - MDRV_CPU_PROGRAM_MAP(sound_map,0) - MDRV_CPU_IO_MAP(sound_portmap,0) - MDRV_CPU_PERIODIC_INT(nmi_line_assert, 244) // schematics show a separate 244Hz timer - - MDRV_INTERLEAVE(100) - - /* video hardware */ - MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) - - MDRV_SCREEN_ADD("main", RASTER) - MDRV_SCREEN_REFRESH_RATE(60.606060) - MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) - MDRV_SCREEN_SIZE(256+32, 224) - MDRV_SCREEN_VISIBLE_AREA(0, 255+32,0, 223) - - MDRV_GFXDECODE(marvins) - MDRV_PALETTE_LENGTH((16+2)*16) - - MDRV_VIDEO_START(marvins) - MDRV_VIDEO_UPDATE(marvins) - - /* sound hardware */ - MDRV_SPEAKER_STANDARD_MONO("mono") - - MDRV_SOUND_ADD("ay1", AY8910, 2000000) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - - MDRV_SOUND_ADD("ay2", AY8910, 2000000) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - - MDRV_SOUND_ADD("namco", NAMCO, 8000000/256) - MDRV_SOUND_CONFIG(snkwave_interface) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_DRIVER_END - - -static MACHINE_DRIVER_START( vangrd2 ) - - /* basic machine hardware */ - MDRV_CPU_ADD("main", Z80, 3360000) /* 3.36 MHz */ - MDRV_CPU_PROGRAM_MAP(madcrash_cpuA_map,0) - MDRV_CPU_VBLANK_INT("main", irq0_line_hold) - - MDRV_CPU_ADD("sub", Z80, 3360000) /* 3.36 MHz */ - MDRV_CPU_PROGRAM_MAP(madcrash_cpuB_map,0) - MDRV_CPU_VBLANK_INT("main", irq0_line_hold) - - MDRV_CPU_ADD("audio", Z80, 4000000) /* 4.0 MHz */ - MDRV_CPU_PROGRAM_MAP(sound_map,0) - MDRV_CPU_IO_MAP(sound_portmap,0) - MDRV_CPU_PERIODIC_INT(nmi_line_assert, 244) - - MDRV_INTERLEAVE(100) - - /* video hardware */ - MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) - - MDRV_SCREEN_ADD("main", RASTER) - MDRV_SCREEN_REFRESH_RATE(60.606060) - MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) - MDRV_SCREEN_SIZE(256+32, 224) - MDRV_SCREEN_VISIBLE_AREA(0, 255+32,0, 223) - - MDRV_GFXDECODE(marvins) - MDRV_PALETTE_LENGTH((16+2)*16) - - MDRV_VIDEO_START(marvins) - MDRV_VIDEO_UPDATE(madcrash) - - /* sound hardware */ - MDRV_SPEAKER_STANDARD_MONO("mono") - - MDRV_SOUND_ADD("ay1", AY8910, 2000000) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - - MDRV_SOUND_ADD("ay2", AY8910, 2000000) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - - MDRV_SOUND_ADD("namco", NAMCO, 8000000/256) - MDRV_SOUND_CONFIG(snkwave_interface) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_DRIVER_END - - -static MACHINE_DRIVER_START( madcrash ) - - /* basic machine hardware */ - MDRV_IMPORT_FROM( vangrd2 ) - - MDRV_CPU_MODIFY("main") - MDRV_CPU_VBLANK_INT_HACK(0, 0) - - MDRV_CPU_MODIFY("sub") - MDRV_CPU_VBLANK_INT("main", snk_irq_BA) - - MDRV_INTERLEAVE(300) - - /* video hardware */ - MDRV_SCREEN_MODIFY("main") - MDRV_SCREEN_VISIBLE_AREA(16, 16+256-1, 0, 0+216-1) -MACHINE_DRIVER_END - - -/*************************************************************************** -** -** ROM Loading -** -** note: -** Mad Crasher doesn't pass its internal checksum -** Also, some of the background graphics look to be incorrect. -** -***************************************************************************/ - -ROM_START( marvins ) - ROM_REGION( 0x10000, "main", 0 ) /* 64k for CPUA code */ - ROM_LOAD( "pa1", 0x0000, 0x2000, CRC(0008d791) SHA1(6ffb174b2d680314f74efeef83da9f3ee3e0c753) ) - ROM_LOAD( "pa2", 0x2000, 0x2000, CRC(9457003c) SHA1(05ecd5c638a12163e2a65bdfcc09875618f792e1) ) - ROM_LOAD( "pa3", 0x4000, 0x2000, CRC(54c33ecb) SHA1(cfbf9ffc125fbc51f2abef180f36781f9e748bbd) ) - - ROM_REGION( 0x10000, "sub", 0 ) /* 64k for CPUB code */ - ROM_LOAD( "pb1", 0x0000, 0x2000, CRC(3b6941a5) SHA1(9c29870196eaed87f34456fdb06bf7b69c8f489d) ) - - ROM_REGION( 0x10000, "audio", 0 ) /* 64k for sound code */ - ROM_LOAD( "m1", 0x0000, 0x2000, CRC(2314c696) SHA1(1b84a0c82a4dcff648752f53aa1f0abf5357c5d1) ) - ROM_LOAD( "m2", 0x2000, 0x2000, CRC(74ba5799) SHA1(c278b0e5c4134f6077d4ae7b51e3c5cba28af1a8) ) - - ROM_REGION( 0x2000, "gfx1", ROMREGION_DISPOSE ) - ROM_LOAD( "s1", 0x0000, 0x2000, CRC(327f70f3) SHA1(078dcc6b4697617d4d833ccd59c6a543b2a88d9e) ) /* characters */ - - ROM_REGION( 0x2000, "gfx2", ROMREGION_DISPOSE ) - ROM_LOAD( "b1", 0x0000, 0x2000, CRC(e528bc60) SHA1(3365ac7cbc57739054bc11e68831be87c0c1a97a) ) /* background tiles */ - - ROM_REGION( 0x2000, "gfx3", ROMREGION_DISPOSE ) - ROM_LOAD( "b2", 0x0000, 0x2000, CRC(e528bc60) SHA1(3365ac7cbc57739054bc11e68831be87c0c1a97a) ) /* foreground tiles */ - - ROM_REGION( 0x6000, "gfx4", ROMREGION_DISPOSE ) - ROM_LOAD( "f3", 0x0000, 0x2000, CRC(e55c9b83) SHA1(04b0d99955e4b11820015b7721ac6399a3d5a829) ) /* sprites */ - ROM_LOAD( "f2", 0x2000, 0x2000, CRC(8fc2b081) SHA1(fb345965375cb62ec1b947d6c6d071380dc0f395) ) - ROM_LOAD( "f1", 0x4000, 0x2000, CRC(0bd6b4e5) SHA1(c56747ff2135db734f1b5f6c2906de5ac8f53bbc) ) - - ROM_REGION( 0x0c00, "proms", 0 ) - ROM_LOAD( "marvmaze.j1", 0x000, 0x400, CRC(92f5b06d) SHA1(97979ffb6fb065d9c99da43173180fefb2de1886) ) - ROM_LOAD( "marvmaze.j2", 0x400, 0x400, CRC(d2b25665) SHA1(b913b8b9c5ee0a29b5a115b2432c5706979059cf) ) - ROM_LOAD( "marvmaze.j3", 0x800, 0x400, CRC(df9e6005) SHA1(8f633f664c3f8e4f6ca94bee74a68c8fda8873e3) ) -ROM_END - -ROM_START( madcrash ) - ROM_REGION( 0x10000, "main", 0 ) /* 64k for CPUA code */ - ROM_LOAD( "p8", 0x0000, 0x2000, CRC(ecb2fdc9) SHA1(7dd79fbbe286a9f18ed2cae45b1bfab765e549a1) ) - ROM_LOAD( "p9", 0x2000, 0x2000, CRC(0a87df26) SHA1(327710452bdc5dbb931abc853957225814f224c5) ) - ROM_LOAD( "p10", 0x4000, 0x2000, CRC(6eb8a87c) SHA1(375377df22b331175aaf1f9eb8d8ad83e8e146f6) ) - - ROM_REGION( 0x10000, "sub", 0 ) /* 64k for CPUB code */ - ROM_LOAD( "p4", 0x0000, 0x2000, CRC(5664d699) SHA1(5bfa57a0f8d718d522003da6513a70d7ca3a87a3) ) - ROM_LOAD( "p5", 0x2000, 0x2000, CRC(dea2865a) SHA1(0807281e35159ee29fbe2d1aa087b57804f1a14f) ) - ROM_LOAD( "p6", 0x4000, 0x2000, CRC(e25a9b9c) SHA1(26853611e3898907239e15f1a00f62290889f89b) ) - ROM_LOAD( "p7", 0x6000, 0x2000, CRC(55b14a36) SHA1(7d5566a6ba285af92ddf560efda60a79f1da84c2) ) - ROM_LOAD( "p3", 0x8000, 0x2000, CRC(e3c8c2cb) SHA1(b3e39eacd2609ff0fa0f511bff0fc83e6b3970d4) ) - - ROM_REGION( 0x10000, "audio", 0 ) /* 64k for sound code */ - ROM_LOAD( "p1", 0x0000, 0x2000, CRC(2dcd036d) SHA1(4da42ab1e502fff57f5d5787df406289538fa484) ) - ROM_LOAD( "p2", 0x2000, 0x2000, CRC(cc30ae8b) SHA1(ffedc747b9e0b616a163ff8bb1def318e522585b) ) - - ROM_REGION( 0x2000, "gfx1", ROMREGION_DISPOSE ) - ROM_LOAD( "p13", 0x0000, 0x2000, CRC(48c4ade0) SHA1(3628abb4f425b8c9d8659c8e4082735168b0f3e9) ) /* characters */ - - ROM_REGION( 0x2000, "gfx2", ROMREGION_DISPOSE ) - ROM_LOAD( "p11", 0x0000, 0x2000, CRC(67174956) SHA1(65a921176294212971c748932a9010f45e1fb499) ) /* background tiles */ - - ROM_REGION( 0x2000, "gfx3", ROMREGION_DISPOSE ) - ROM_LOAD( "p12", 0x0000, 0x2000, CRC(085094c1) SHA1(5c5599d1ed7f8a717ada54bbd28383a22e09a8fe) ) /* foreground tiles */ - - ROM_REGION( 0x6000, "gfx4", ROMREGION_DISPOSE ) - ROM_LOAD( "p14", 0x0000, 0x2000, CRC(07e807bc) SHA1(f651d3a5394ced8e0a1b2be3aa52b3e5a5d84c37) ) /* sprites */ - ROM_LOAD( "p15", 0x2000, 0x2000, CRC(a74149d4) SHA1(e8011a8d4d1a98a0ffe67fc28ea9fa192ca80321) ) - ROM_LOAD( "p16", 0x4000, 0x2000, CRC(6153611a) SHA1(b352f92b233761122f74830e46913cc4df800259) ) - - ROM_REGION( 0x0c00, "proms", 0 ) - ROM_LOAD( "m3-prom.j3", 0x000, 0x400, CRC(d19e8a91) SHA1(b21fbdb8ed8d0b27c3ec78cf2e115624f69c67e0) ) - ROM_LOAD( "m2-prom.j4", 0x400, 0x400, CRC(9fc325af) SHA1(a180662f168ba001376f25f5d9205cb119c1ffee) ) - ROM_LOAD( "m1-prom.j5", 0x800, 0x400, CRC(07678443) SHA1(267951886d8b031dd633dc4823d9bd862a585437) ) -ROM_END - -ROM_START( vangrd2 ) - ROM_REGION( 0x10000, "main", 0 ) - ROM_LOAD( "p1.9a", 0x0000, 0x2000, CRC(bc9eeca5) SHA1(5a737e0f0aa1a3a5296d1e1fec13b34aee970609) ) - ROM_LOAD( "p3.11a", 0x2000, 0x2000, CRC(3970f69d) SHA1(b0ef7494888804ab5b4002730fb0232a7fd6797b) ) - ROM_LOAD( "p2.12a", 0x4000, 0x2000, CRC(58b08b58) SHA1(eccc85191d678a0115a113002a43203afd857a5b) ) - ROM_LOAD( "p4.14a", 0x6000, 0x2000, CRC(a95f11ea) SHA1(8007efb4ad948c8768e474fc77134f3ce52da1d2) ) - - ROM_REGION( 0x10000, "sub", 0 ) - ROM_LOAD( "p5.4a", 0x0000, 0x2000, CRC(e4dfd0ba) SHA1(12d45ff147f3ea9c9e898c3831874cd7c1a071b7) ) - ROM_LOAD( "p6.6a", 0x2000, 0x2000, CRC(894ff00d) SHA1(1c66f327d8e94dc6ac386e11fcc5eb17c9081434) ) - ROM_LOAD( "p7.7a", 0x4000, 0x2000, CRC(40b4d069) SHA1(56c464bd055125ffc2da02d70137aa5efe5cd8f6) ) - - ROM_REGION( 0x10000, "audio", 0 ) /* 64k for sound code */ - ROM_LOAD( "p8.6a", 0x0000, 0x2000, CRC(a3daa438) SHA1(4e659ac7e3ebaf85bc3ce5c9946fcf0af23083b4) ) - ROM_LOAD( "p9.8a", 0x2000, 0x2000, CRC(9345101a) SHA1(b99ad1c2a79df50b0a60fdd43ca466f6cb38445b) ) - - ROM_REGION( 0x2000, "gfx1", ROMREGION_DISPOSE ) - ROM_LOAD( "p15.1e", 0x0000, 0x2000, CRC(85718a41) SHA1(4c9aa1f8b229410414cd67bac8cb10a14bea12f4) ) /* characters */ - - ROM_REGION( 0x2000, "gfx2", ROMREGION_DISPOSE ) - ROM_LOAD( "p13.1a", 0x0000, 0x2000, CRC(912f22c6) SHA1(5042edc80b58f77b3576b5e6eb8c6460c8a35494) ) /* background tiles */ - - ROM_REGION( 0x2000, "gfx3", ROMREGION_DISPOSE ) - ROM_LOAD( "p9", 0x0000, 0x2000, CRC(7aa0b684) SHA1(d52670ec50b1a07d6c2c537f67922063deacdeea) ) /* foreground tiles */ - - ROM_REGION( 0x6000, "gfx4", ROMREGION_DISPOSE ) - ROM_LOAD( "p12.1kl", 0x0000, 0x2000, CRC(8658ea6c) SHA1(d5ea9be2c1776b11abc77c944a653eeb73b27fc8) ) /* sprites */ - ROM_LOAD( "p11.3kl", 0x2000, 0x2000, CRC(620cd4ec) SHA1(a2fcc3d24d0d3c7cc601620ae7a709f46b613c0f) ) - ROM_LOAD( "p10.4kl", 0x4000, 0x2000, CRC(5bfc04c0) SHA1(4eb152fdf39cb0024f71d5bdf1bfc79c2b8c2329) ) - - ROM_REGION( 0x0c00, "proms", 0 ) - ROM_LOAD( "mb7054.3j", 0x000, 0x400, CRC(506f659a) SHA1(766f1a0dd462eba64546c514004e6542e200d7c3) ) - ROM_LOAD( "mb7054.4j", 0x400, 0x400, CRC(222133ce) SHA1(109a63c8c44608a8ad9183e7b5d269765cc5f067) ) - ROM_LOAD( "mb7054.5j", 0x800, 0x400, CRC(2e21a79b) SHA1(1956377c799e0bbd127bf4fae016adc148efe007) ) -ROM_END - - -/*******************************************************************************************/ - -static DRIVER_INIT( marvins ) -{ - sound_cpu_busy = 0; - marvins_gamegroup = 0; -} - -static DRIVER_INIT( madcrash ) -{ -/* - The following lines patch out the ROM test (which fails - probably - because of bit rot, so the rest of the test mode (what little there - is) can be explored. - - UINT8 *mem = memory_region(machine, "main"); - mem[0x3a5d] = 0; mem[0x3a5e] = 0; mem[0x3a5f] = 0; -*/ - sound_cpu_busy = 0; - marvins_gamegroup = 1; - snk_irq_delay = 1700; -} - -static DRIVER_INIT( vangrd2 ) -{ - sound_cpu_busy = 0; - marvins_gamegroup = 2; -} - - -GAME( 1983, marvins, 0, marvins, marvins, marvins, ROT270, "SNK", "Marvin's Maze", 0 ) -GAME( 1984, madcrash, 0, madcrash, madcrash, madcrash, ROT0, "SNK", "Mad Crasher", GAME_IMPERFECT_GRAPHICS ) -GAME( 1984, vangrd2, 0, vangrd2, vangrd2, vangrd2, ROT270, "SNK", "Vanguard II", 0 ) |