/*************************************************************************** Snow Brothers (Toaplan) / SemiCom Hardware uses Kaneko's Pandora sprite chip (also used in DJ Boy, Air Buster ..) Snow Bros Nick & Tom Toaplan, 1990 PCB Layout ---------- MIN16-02 |------------------------------------------| | VOL YM3812 6116 4464 4464 | | LA4460 YM3014 4464 4464 | | 458 SBROS-4.29 SBROS1.40 | | 2003 Z80B PANDORA | |J D41101C-1 LS07 LS32 | |A SBROS-3A.5 SBROS-2A.6 LS139 LS174| |M LS245 LS74 LS04 16MHz| |M 6264 6264 F32 LS74 LS74 | |A 68000 LS20 F138 LS04 12MHz| | LS04 LS148 LS251 LS00 | | LS273 LS245 LS245 LS158 LS257 LS257 LS32 | | | | LS273 6116 6116 LS157 DSW2 DSW1 | |------------------------------------------| Notes: 68k clock: 8.000MHz Z80B clock: 6.000MHz YM3812 clock: 3.000MHz VSync: 57.5Hz HSync: 15.68kHz driver by Mike Coates Hyper Pacman addition by David Haywood + some bits by Nicola Salmoria Stephh's notes (hyperpac): - According to the "Language" Dip Switch, this game is a Korean game. (although the Language Dipswitch doesn't affect language, but yes I believe SemiCom to be a Korean Company) - There is no "cocktail mode", nor way to flip the screen. Notes: Cookie & Bibi 3 This game is quite buggy. The test mode is incomplete and displays garbage on the 'Dipswitch settings' screens, and during some of the attract mode scenes the credit counter is not updated when you insert coins until the next scene. Both these bugs are verified as occuring on the original hardware. Honey Doll / Twin Adventure These appear to have clipping problems on the left / right edges, but this may be correct, the sprites which should be drawn there are simply blanked out of the sprite list at that point.. (verify on real hw) ***************************************************************************/ #include "driver.h" #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "sound/2151intf.h" #include "sound/3812intf.h" #include "sound/okim6295.h" #include "video/kan_pand.h" // for the original pandora #include "video/kan_panb.h" // for bootlegs / non-original hw WRITE16_HANDLER( snowbros_flipscreen_w ) { if (ACCESSING_MSB) flip_screen_set(~data & 0x8000); } VIDEO_UPDATE( snowbros ) { /* This clears & redraws the entire screen each pass */ fillbitmap(bitmap,0xf0,&machine->screen[0].visarea); pandora_update(machine,bitmap,cliprect); return 0; } VIDEO_START( snowbros ) { pandora_start(0,0,0); } VIDEO_EOF( snowbros ) { pandora_eof(machine); } static UINT16 *hyperpac_ram; int sb3_music_is_playing; int sb3_music; static INTERRUPT_GEN( snowbros_interrupt ) { cpunum_set_input_line(0, cpu_getiloops() + 2, HOLD_LINE); /* IRQs 4, 3, and 2 */ } static INTERRUPT_GEN( snowbro3_interrupt ) { int status = OKIM6295_status_0_r(0); cpunum_set_input_line(0, cpu_getiloops() + 2, HOLD_LINE); /* IRQs 4, 3, and 2 */ if (sb3_music_is_playing) { if ((status&0x08)==0x00) { OKIM6295_data_0_w(0,0x80|sb3_music); OKIM6295_data_0_w(0,0x00|0x82); } } else { if ((status&0x08)==0x08) { OKIM6295_data_0_w(0,0x40); /* Stop playing music */ } } } /* Sound Routines */ READ16_HANDLER( snowbros_68000_sound_r ) { return soundlatch_r(offset); } static WRITE16_HANDLER( snowbros_68000_sound_w ) { if (ACCESSING_LSB) { soundlatch_w(offset,data & 0xff); cpunum_set_input_line(1,INPUT_LINE_NMI,PULSE_LINE); } } static WRITE16_HANDLER( semicom_soundcmd_w ) { if (ACCESSING_LSB) soundlatch_w(0,data & 0xff); } /* Snow Bros Memory Map */ static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) AM_RANGE(0x300000, 0x300001) AM_READ(snowbros_68000_sound_r) AM_RANGE(0x500000, 0x500001) AM_READ(input_port_0_word_r) AM_RANGE(0x500002, 0x500003) AM_READ(input_port_1_word_r) AM_RANGE(0x500004, 0x500005) AM_READ(input_port_2_word_r) AM_RANGE(0x600000, 0x6001ff) AM_READ(MRA16_RAM) AM_RANGE(0x700000, 0x701fff) AM_READ(pandora_spriteram_LSB_r) ADDRESS_MAP_END static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w) AM_RANGE(0x300000, 0x300001) AM_WRITE(snowbros_68000_sound_w) AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w) AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) AM_RANGE(0x700000, 0x701fff) AM_WRITE(pandora_spriteram_LSB_w) AM_RANGE(0x800000, 0x800001) AM_WRITE(MWA16_NOP) /* IRQ 4 acknowledge? */ AM_RANGE(0x900000, 0x900001) AM_WRITE(MWA16_NOP) /* IRQ 3 acknowledge? */ AM_RANGE(0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* IRQ 2 acknowledge? */ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM) AM_RANGE(0x8000, 0x87ff) AM_READ(MRA8_RAM) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) AM_RANGE(0x8000, 0x87ff) AM_WRITE(MWA8_RAM) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) AM_RANGE(0x02, 0x02) AM_READ(YM3812_status_port_0_r) AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) AM_RANGE(0x02, 0x02) AM_WRITE(YM3812_control_port_0_w) AM_RANGE(0x03, 0x03) AM_WRITE(YM3812_write_port_0_w) AM_RANGE(0x04, 0x04) AM_WRITE(soundlatch_w) /* goes back to the main CPU, checked during boot */ ADDRESS_MAP_END /* Winter Bobble - bootleg GFX chip */ static ADDRESS_MAP_START( wintbob_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) AM_RANGE(0x300000, 0x300001) AM_READ(snowbros_68000_sound_r) AM_RANGE(0x500000, 0x500001) AM_READ(input_port_0_word_r) AM_RANGE(0x500002, 0x500003) AM_READ(input_port_1_word_r) AM_RANGE(0x500004, 0x500005) AM_READ(input_port_2_word_r) AM_RANGE(0x600000, 0x6001ff) AM_READ(MRA16_RAM) AM_RANGE(0x700000, 0x701fff) AM_READ(MRA16_RAM) ADDRESS_MAP_END static ADDRESS_MAP_START( wintbob_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w) AM_RANGE(0x300000, 0x300001) AM_WRITE(snowbros_68000_sound_w) AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w) AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) AM_RANGE(0x700000, 0x701fff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) AM_RANGE(0x800000, 0x800001) AM_WRITE(MWA16_NOP) /* IRQ 4 acknowledge? */ AM_RANGE(0x900000, 0x900001) AM_WRITE(MWA16_NOP) /* IRQ 3 acknowledge? */ AM_RANGE(0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* IRQ 2 acknowledge? */ ADDRESS_MAP_END /* Honey Dolls */ static ADDRESS_MAP_START( honeydol_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) AM_RANGE(0x900000, 0x900001) AM_READ(input_port_0_word_r) AM_RANGE(0x900002, 0x900003) AM_READ(input_port_1_word_r) AM_RANGE(0x900004, 0x900005) AM_READ(input_port_2_word_r) AM_RANGE(0xa00000, 0xa007ff) AM_READ(MRA16_RAM) AM_RANGE(0xb00000, 0xb01fff) AM_READ(MRA16_RAM) ADDRESS_MAP_END static ADDRESS_MAP_START( honeydol_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) AM_BASE(&hyperpac_ram) AM_RANGE(0x200000, 0x200001) AM_WRITE(MWA16_NOP) /* ?*/ AM_RANGE(0x300000, 0x300001) AM_WRITE(snowbros_68000_sound_w) /* ?*/ AM_RANGE(0xa00000, 0xa007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) AM_RANGE(0xb00000, 0xb01fff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) AM_RANGE(0x400000, 0x400001) AM_WRITE(MWA16_NOP) /* IRQ 4 acknowledge? */ AM_RANGE(0x500000, 0x500001) AM_WRITE(MWA16_NOP) /* IRQ 3 acknowledge? */ AM_RANGE(0x600000, 0x600001) AM_WRITE(MWA16_NOP) /* IRQ 2 acknowledge? */ AM_RANGE(0x800000, 0x800001) AM_WRITE(MWA16_NOP) /* ?*/ ADDRESS_MAP_END static ADDRESS_MAP_START( honeydol_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM) AM_RANGE(0x8000, 0x87ff) AM_READ(MRA8_RAM) AM_RANGE(0xe010, 0xe010) AM_READ(OKIM6295_status_0_r) ADDRESS_MAP_END static ADDRESS_MAP_START( honeydol_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) AM_RANGE(0x8000, 0x87ff) AM_WRITE(MWA8_RAM) AM_RANGE(0xe010, 0xe010) AM_WRITE(OKIM6295_data_0_w) ADDRESS_MAP_END static ADDRESS_MAP_START( honeydol_sound_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) AM_RANGE(0x02, 0x02) AM_READ(YM3812_status_port_0_r) // not connected? AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r) ADDRESS_MAP_END static ADDRESS_MAP_START( honeydol_sound_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) AM_RANGE(0x02, 0x02) AM_WRITE(YM3812_control_port_0_w) // not connected? AM_RANGE(0x03, 0x03) AM_WRITE(YM3812_write_port_0_w) // not connected? AM_RANGE(0x04, 0x04) AM_WRITE(soundlatch_w) /* goes back to the main CPU, checked during boot */ ADDRESS_MAP_END /* Twin Adventure */ static WRITE16_HANDLER( twinadv_68000_sound_w ) { if (ACCESSING_LSB) { soundlatch_w(offset,data & 0xff); cpunum_set_input_line(1,INPUT_LINE_NMI,PULSE_LINE); } } static ADDRESS_MAP_START( twinadv_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM) AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) AM_RANGE(0x300000, 0x300001) AM_READ(snowbros_68000_sound_r) AM_RANGE(0x500000, 0x500001) AM_READ(input_port_0_word_r) AM_RANGE(0x500002, 0x500003) AM_READ(input_port_1_word_r) AM_RANGE(0x500004, 0x500005) AM_READ(input_port_2_word_r) AM_RANGE(0x600000, 0x6001ff) AM_READ(MRA16_RAM) AM_RANGE(0x700000, 0x701fff) AM_READ(MRA16_RAM) ADDRESS_MAP_END static ADDRESS_MAP_START( twinadv_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w) AM_RANGE(0x300000, 0x300001) AM_WRITE(twinadv_68000_sound_w) AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w) AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) AM_RANGE(0x700000, 0x701fff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) AM_RANGE(0x800000, 0x800001) AM_WRITE(MWA16_NOP) /* IRQ 4 acknowledge? */ AM_RANGE(0x900000, 0x900001) AM_WRITE(MWA16_NOP) /* IRQ 3 acknowledge? */ AM_RANGE(0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* IRQ 2 acknowledge? */ ADDRESS_MAP_END static ADDRESS_MAP_START( twinadv_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM) AM_RANGE(0x8000, 0x87ff) AM_READ(MRA8_RAM) // AM_RANGE(0xe010, 0xe010) AM_READ(OKIM6295_status_0_r) ADDRESS_MAP_END static ADDRESS_MAP_START( twinadv_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) AM_RANGE(0x8000, 0x87ff) AM_WRITE(MWA8_RAM) // AM_RANGE(0xe010, 0xe010) AM_WRITE(OKIM6295_data_0_w) ADDRESS_MAP_END WRITE8_HANDLER( twinadv_oki_bank_w ) { int bank = (data &0x02)>>1; if (data&0xfd) logerror ("Unused bank bits! %02x\n",data); OKIM6295_set_bank_base(0, bank * 0x40000); } static ADDRESS_MAP_START( twinadv_sound_readport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r) AM_RANGE(0x06, 0x06) AM_READ(OKIM6295_status_0_r) ADDRESS_MAP_END static ADDRESS_MAP_START( twinadv_sound_writeport, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) AM_RANGE(0x02, 0x02) AM_WRITE(soundlatch_w) // back to 68k? AM_RANGE(0x04, 0x04) AM_WRITE(twinadv_oki_bank_w) // oki bank? AM_RANGE(0x06, 0x06) AM_WRITE(OKIM6295_data_0_w) ADDRESS_MAP_END /* SemiCom Memory Map the SemiCom games have slightly more ram and are protected sound hardware is also different */ static ADDRESS_MAP_START( hyperpac_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_READ(MRA16_ROM) AM_RANGE(0x100000, 0x10ffff) AM_READ(MRA16_RAM) AM_RANGE(0x500000, 0x500001) AM_READ(input_port_0_word_r) AM_RANGE(0x500002, 0x500003) AM_READ(input_port_1_word_r) AM_RANGE(0x500004, 0x500005) AM_READ(input_port_2_word_r) AM_RANGE(0x600000, 0x6001ff) AM_READ(MRA16_RAM) AM_RANGE(0x700000, 0x701fff) AM_READ(pandora_spriteram_LSB_r) ADDRESS_MAP_END static ADDRESS_MAP_START( hyperpac_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_WRITE(MWA16_ROM) AM_RANGE(0x100000, 0x10ffff) AM_WRITE(MWA16_RAM) AM_BASE(&hyperpac_ram) AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w) // AM_RANGE(0x400000, 0x400001) ??? AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) AM_RANGE(0x700000, 0x701fff) AM_WRITE(pandora_spriteram_LSB_w) AM_RANGE(0x800000, 0x800001) AM_WRITE(MWA16_NOP) /* IRQ 4 acknowledge? */ AM_RANGE(0x900000, 0x900001) AM_WRITE(MWA16_NOP) /* IRQ 3 acknowledge? */ AM_RANGE(0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* IRQ 2 acknowledge? */ ADDRESS_MAP_END static ADDRESS_MAP_START( hyperpac_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0xcfff) AM_READ(MRA8_ROM) AM_RANGE(0xd000, 0xd7ff) AM_READ(MRA8_RAM) AM_RANGE(0xf001, 0xf001) AM_READ(YM2151_status_port_0_r) AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r) ADDRESS_MAP_END static ADDRESS_MAP_START( hyperpac_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0xcfff) AM_WRITE(MWA8_ROM) AM_RANGE(0xd000, 0xd7ff) AM_WRITE(MWA8_RAM) AM_RANGE(0xf000, 0xf000) AM_WRITE(YM2151_register_port_0_w) AM_RANGE(0xf001, 0xf001) AM_WRITE(YM2151_data_port_0_w) AM_RANGE(0xf002, 0xf002) AM_WRITE(OKIM6295_data_0_w) // AM_RANGE(0xf006, 0xf006) ??? ADDRESS_MAP_END /* Same volume used for all samples at the Moment, could be right, we have no way of knowing .. */ READ16_HANDLER( sb3_sound_r ) { return 0x0003; } void sb3_play_music(int data) { /* sample is actually played in interrupt function so it loops */ sb3_music = data; switch (data) { case 0x23: memcpy(memory_region(REGION_SOUND1)+0x20000, memory_region(REGION_SOUND1)+0x80000, 0x20000); sb3_music_is_playing = 1; break; case 0x24: memcpy(memory_region(REGION_SOUND1)+0x20000, memory_region(REGION_SOUND1)+0x80000+0x20000, 0x20000); sb3_music_is_playing = 1; break; case 0x25: memcpy(memory_region(REGION_SOUND1)+0x20000, memory_region(REGION_SOUND1)+0x80000+0x40000, 0x20000); sb3_music_is_playing = 1; break; case 0x26: memcpy(memory_region(REGION_SOUND1)+0x20000, memory_region(REGION_SOUND1)+0x80000, 0x20000); sb3_music_is_playing = 1; break; case 0x27: case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: memcpy(memory_region(REGION_SOUND1)+0x20000, memory_region(REGION_SOUND1)+0x80000+0x40000, 0x20000); sb3_music_is_playing = 1; break; case 0x2e: sb3_music_is_playing = 0; break; } } void sb3_play_sound (int data) { int status = OKIM6295_status_0_r(0); if ((status&0x01)==0x00) { OKIM6295_data_0_w(0,0x80|data); OKIM6295_data_0_w(0,0x00|0x12); } else if ((status&0x02)==0x00) { OKIM6295_data_0_w(0,0x80|data); OKIM6295_data_0_w(0,0x00|0x22); } else if ((status&0x04)==0x00) { OKIM6295_data_0_w(0,0x80|data); OKIM6295_data_0_w(0,0x00|0x42); } } WRITE16_HANDLER( sb3_sound_w ) { if (data == 0x00fe) { sb3_music_is_playing = 0; OKIM6295_data_0_w(0,0x78); /* Stop sounds */ } else /* the alternating 0x00-0x2f or 0x30-0x5f might be something to do with the channels */ { data = data>>8; if (data <= 0x21) { sb3_play_sound(data); } if (data>=0x22 && data<=0x31) { sb3_play_music(data); } if ((data>=0x30) && (data<=0x51)) { sb3_play_sound(data-0x30); } if (data>=0x52 && data<=0x5f) { sb3_play_music(data-0x30); } } } static ADDRESS_MAP_START( readmem3, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE( 0x000000, 0x03ffff) AM_READ(MRA16_ROM) AM_RANGE( 0x100000, 0x103fff) AM_READ(MRA16_RAM) AM_RANGE( 0x300000, 0x300001) AM_READ(sb3_sound_r) // ? AM_RANGE( 0x500000, 0x500001) AM_READ(input_port_0_word_r) AM_RANGE( 0x500002, 0x500003) AM_READ(input_port_1_word_r) AM_RANGE( 0x500004, 0x500005) AM_READ(input_port_2_word_r) AM_RANGE( 0x600000, 0x6003ff) AM_READ(MRA16_RAM) AM_RANGE( 0x700000, 0x7021ff) AM_READ(MRA16_RAM) ADDRESS_MAP_END static ADDRESS_MAP_START( writemem3, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE( 0x000000, 0x03ffff) AM_WRITE(MWA16_ROM) AM_RANGE( 0x100000, 0x103fff) AM_WRITE(MWA16_RAM) AM_RANGE( 0x200000, 0x200001) AM_WRITE(watchdog_reset16_w) AM_RANGE( 0x300000, 0x300001) AM_WRITE(sb3_sound_w) // ? AM_RANGE( 0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w) AM_RANGE( 0x600000, 0x6003ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE (&paletteram16) AM_RANGE( 0x700000, 0x7021ff) AM_WRITE(MWA16_RAM) AM_BASE( &spriteram16) AM_SIZE( &spriteram_size ) AM_RANGE( 0x800000, 0x800001) AM_WRITE(MWA16_NOP) /* IRQ 4 acknowledge? */ AM_RANGE( 0x900000, 0x900001) AM_WRITE(MWA16_NOP) /* IRQ 3 acknowledge? */ AM_RANGE( 0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* IRQ 2 acknowledge? */ ADDRESS_MAP_END /* Final Tetris */ static ADDRESS_MAP_START( finalttr_readmem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_READ(MRA16_ROM) AM_RANGE(0x100000, 0x103fff) AM_READ(MRA16_RAM) AM_RANGE(0x500000, 0x500001) AM_READ(input_port_0_word_r) AM_RANGE(0x500002, 0x500003) AM_READ(input_port_1_word_r) AM_RANGE(0x500004, 0x500005) AM_READ(input_port_2_word_r) AM_RANGE(0x600000, 0x6001ff) AM_READ(MRA16_RAM) AM_RANGE(0x700000, 0x701fff) AM_READ(pandora_spriteram_LSB_r) ADDRESS_MAP_END static ADDRESS_MAP_START( finalttr_writemem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_WRITE(MWA16_ROM) AM_RANGE(0x100000, 0x103fff) AM_WRITE(MWA16_RAM) AM_BASE(&hyperpac_ram) AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w) // AM_RANGE(0x400000, 0x400001) ??? AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) AM_RANGE(0x700000, 0x701fff) AM_WRITE(pandora_spriteram_LSB_w) AM_RANGE(0x800000, 0x800001) AM_WRITE(MWA16_NOP) /* IRQ 4 acknowledge? */ AM_RANGE(0x900000, 0x900001) AM_WRITE(MWA16_NOP) /* IRQ 3 acknowledge? */ AM_RANGE(0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* IRQ 2 acknowledge? */ ADDRESS_MAP_END INPUT_PORTS_START( snowbros ) PORT_START_TAG("DSW") /* 500001 */ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Region ) ) PORT_DIPSETTING( 0x00, DEF_STR( Europe ) ) PORT_DIPSETTING( 0x01, "America (Romstar license)" ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x00) PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x00) PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x00) PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x01) PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x01) PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x01) PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x01) PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x01) PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x01) PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x01) PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x00) PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x00) PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x00) PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW",0x01,PORTCOND_EQUALS,0x00) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Must be low or game stops! */ /* probably VBlank */ PORT_START /* 500003 */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x03, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) PORT_DIPSETTING( 0x04, "100k and every 200k" ) PORT_DIPSETTING( 0x0c, "100k Only" ) PORT_DIPSETTING( 0x08, "200k Only" ) PORT_DIPSETTING( 0x00, DEF_STR( None ) ) PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x20, "1" ) PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x30, "3" ) PORT_DIPSETTING( 0x10, "4" ) PORT_DIPNAME( 0x40, 0x40, "Invulnerability" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x80, DEF_STR( Yes ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500005 */ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( snowbroj ) PORT_START /* 500001 */ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Must be low or game stops! */ /* probably VBlank */ PORT_START /* 500003 */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x03, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) PORT_DIPSETTING( 0x04, "100k and every 200k" ) PORT_DIPSETTING( 0x0c, "100k Only" ) PORT_DIPSETTING( 0x08, "200k Only" ) PORT_DIPSETTING( 0x00, DEF_STR( None ) ) PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x20, "1" ) PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x30, "3" ) PORT_DIPSETTING( 0x10, "4" ) PORT_DIPNAME( 0x40, 0x40, "Invulnerability" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x80, DEF_STR( Yes ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500005 */ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( honeydol ) PORT_START_TAG("DSW") PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x0000, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x0001, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0003, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x0002, DEF_STR( 1C_2C ) ) PORT_DIPNAME( 0x0004, 0x0004, "Show Girls" ) PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0004, DEF_STR( On ) ) PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0010, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Level_Select ) ) /* Up & Down to set level, then punch to start */ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, "Slide Show On Boot-up" ) /* Joystick to scroll. Seems to happen once at boot up, then the game auto starts */ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_VBLANK ) /* Must be low or game stops! */ PORT_START PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Harder ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) PORT_DIPNAME( 0x000c, 0x000c, "Timer Speed" ) /* Based on Normal Difficulty, Stage 1-1 first try */ PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) ) /* About 40 Seconds */ PORT_DIPSETTING( 0x0008, "Fast" ) /* About 35 Seconds */ PORT_DIPSETTING( 0x0004, "Faster" ) /* About 30 Seconds */ PORT_DIPSETTING( 0x0000, "Fastest" ) /* About 20 Seconds */ PORT_DIPNAME( 0x0030, 0x0020, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x0000, "1" ) PORT_DIPSETTING( 0x0010, "2" ) PORT_DIPSETTING( 0x0020, "3" ) PORT_DIPSETTING( 0x0030, "5" ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, "Max Vs Round" ) PORT_DIPSETTING( 0x0080, "3" ) /* 44 Seconds each */ PORT_DIPSETTING( 0x0000, "1" ) /* 89 Seconds */ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( twinadv ) PORT_START_TAG("DSW") PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x0000, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x0001, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0003, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x0002, DEF_STR( 1C_2C ) ) PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0010, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Level_Select ) ) /* P1 Button 2 to advance, P1 Button 1 to start, starts game with 10 credits */ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_VBLANK ) /* Must be low or game stops! */ PORT_START PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Harder ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x0004, "3" ) PORT_DIPSETTING( 0x0000, "5" ) PORT_DIPNAME( 0x0008, 0x0008, "Ticket Mode #1" ) /* Shows on title screen "EVERY 4 GAMES = 1 TICKET" same as 0x0040 below? */ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, "Ticket Mode #2" ) /* Shows on title screen "EVERY 4 GAMES = 1 TICKET" same as 0x0008 above? */ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Free_Play ) ) /* Always shows 24 credits */ PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( 4in1boot ) PORT_START /* 500001 */ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x06, 0x06, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x04, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x06, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) PORT_DIPNAME( 0x78, 0x78, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x18, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x38, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x10, DEF_STR( 4C_2C ) ) PORT_DIPSETTING( 0x58, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x30, DEF_STR( 3C_2C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 4C_3C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 4C_4C ) ) PORT_DIPSETTING( 0x28, DEF_STR( 3C_3C ) ) PORT_DIPSETTING( 0x50, DEF_STR( 2C_2C ) ) PORT_DIPSETTING( 0x78, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x20, DEF_STR( 3C_4C ) ) PORT_DIPSETTING( 0x48, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x40, DEF_STR( 2C_4C ) ) PORT_DIPSETTING( 0x70, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x68, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x60, DEF_STR( 1C_4C ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Free_Play ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Must be low or game stops! */ /* probably VBlank */ PORT_START /* 500003 */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x02, "1" ) PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_SERVICE( 0x80, IP_ACTIVE_LOW ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500005 */ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( hyperpac ) PORT_START /* 500000.w */ PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Lives ) ) // "Language" in the "test mode" PORT_DIPSETTING( 0x0002, "3" ) // "Korean" PORT_DIPSETTING( 0x0000, "5" ) // "English" PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x0004, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x001c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x0014, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x0018, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0010, DEF_STR( 1C_3C ) ) PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0060, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Hardest ) ) // DEF_STR( Very_Hard ) PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500002.w */ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500004.w */ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( cookbib2 ) PORT_START /* 500000.w */ PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, "Max Vs Round" ) // "Language" in the "test mode" PORT_DIPSETTING( 0x0002, "3" ) PORT_DIPSETTING( 0x0000, "1" ) PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x0004, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x001c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x0014, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x0018, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0010, DEF_STR( 1C_3C ) ) PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0060, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Hardest ) ) // DEF_STR( Very_Hard ) PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500002.w */ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500004.w */ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( cookbib3 ) PORT_START /* 500000.w */ PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x0002, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0004, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x0006, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x000e, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x000a, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x000c, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0008, DEF_STR( 1C_3C ) ) PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0020, "Level 1" ) PORT_DIPSETTING( 0x0010, "Level 2" ) PORT_DIPSETTING( 0x0000, "Level 3" ) PORT_DIPSETTING( 0x0070, "Level 4" ) PORT_DIPSETTING( 0x0060, "Level 5" ) PORT_DIPSETTING( 0x0050, "Level 6" ) PORT_DIPSETTING( 0x0040, "Level 7" ) PORT_DIPSETTING( 0x0030, "Level 8" ) PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500002.w */ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) /* Will go into negative credits and cause graphics issues */ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500004.w */ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( moremore ) PORT_START /* 500000.w */ PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x0002, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0004, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x0006, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x000e, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x000a, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x000c, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0008, DEF_STR( 1C_3C ) ) PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0020, "Level 1" ) PORT_DIPSETTING( 0x0010, "Level 2" ) PORT_DIPSETTING( 0x0000, "Level 3" ) PORT_DIPSETTING( 0x0070, "Level 4" ) PORT_DIPSETTING( 0x0060, "Level 5" ) PORT_DIPSETTING( 0x0050, "Level 6" ) PORT_DIPSETTING( 0x0040, "Level 7" ) PORT_DIPSETTING( 0x0030, "Level 8" ) PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500002.w */ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500004.w */ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( toppyrap ) PORT_START /* 500000.w */ PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x0004, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x001c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x0014, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x0018, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0010, DEF_STR( 1C_3C ) ) PORT_DIPNAME( 0x0060, 0x0060, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0060, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Hardest ) ) PORT_SERVICE( 0x0080, IP_ACTIVE_LOW ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500002.w */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x02, "4" ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPNAME( 0x000c, 0x000c, "Time" ) PORT_DIPSETTING( 0x0004, "40 Seconds" ) PORT_DIPSETTING( 0x0008, "50 Seconds" ) PORT_DIPSETTING( 0x000c, "60 Seconds" ) PORT_DIPSETTING( 0x0000, "70 Seconds" ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, "God Mode" ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, "Internal Test" ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) // jump PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) // fire PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) // test mode only? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500004.w */ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END INPUT_PORTS_START( finalttr ) PORT_START /* 500001 */ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0001, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x0010, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x0030, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) ) /* PORT_DIPSETTING( 0x0018, DEF_STR( 1C_1C ) ) Duplicate setting? */ PORT_DIPSETTING( 0x0020, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x0028, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0008, DEF_STR( 1C_4C ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Must be low or game stops! */ /* probably VBlank */ PORT_START /* 500003 */ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x000c, 0x000c, "Time" ) PORT_DIPSETTING( 0x0000, "60 Seconds" ) PORT_DIPSETTING( 0x000c, "90 Seconds" ) PORT_DIPSETTING( 0x0008, "120 Seconds" ) PORT_DIPSETTING( 0x0004, "150 Seconds" ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START /* 500005 */ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END /* SnowBros */ static const gfx_layout tilelayout = { 16,16, RGN_FRAC(1,1), 4, { 0, 1, 2, 3 }, { STEP8(0,4), STEP8(8*32,4) }, { STEP8(0,32), STEP8(16*32,32) }, 32*32 }; static GFXDECODE_START( snowbros ) GFXDECODE_ENTRY( REGION_GFX1, 0, tilelayout, 0, 16 ) GFXDECODE_END /* Honey Doll */ static const gfx_layout honeydol_tilelayout8bpp = { 16,16, RGN_FRAC(1,2), 8, { 0, 1, 2, 3, RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+1, RGN_FRAC(1,2)+2, RGN_FRAC(1,2)+3}, { STEP8(0,4), STEP8(8*32,4) }, { STEP8(0,32), STEP8(16*32,32) }, 32*32 }; static GFXDECODE_START( honeydol ) GFXDECODE_ENTRY( REGION_GFX1, 0, tilelayout, 0, 64 ) // how does it use 0-15 GFXDECODE_ENTRY( REGION_GFX2, 0, honeydol_tilelayout8bpp, 0, 4 ) GFXDECODE_END static GFXDECODE_START( twinadv ) GFXDECODE_ENTRY( REGION_GFX1, 0, tilelayout, 0, 64 ) GFXDECODE_END /* Winter Bobble */ static const gfx_layout tilelayout_wb = { 16,16, RGN_FRAC(1,1), 4, { 0, 1, 2, 3 }, { STEP4(3*4,-4), STEP4(7*4,-4), STEP4(11*4,-4), STEP4(15*4,-4) }, { STEP16(0,64) }, 16*64 }; static GFXDECODE_START( wb ) GFXDECODE_ENTRY( REGION_GFX1, 0, tilelayout_wb, 0, 16 ) GFXDECODE_END /* SemiCom */ static const gfx_layout hyperpac_tilelayout = { 16,16, RGN_FRAC(1,1), 4, { 0, 1, 2, 3 }, { 4, 0, 8*32+4, 8*32+0, 20,16, 8*32+20, 8*32+16, 12, 8, 8*32+12, 8*32+8, 28, 24, 8*32+28, 8*32+24 }, { 0*32, 2*32, 1*32, 3*32, 16*32+0*32, 16*32+2*32, 16*32+1*32, 16*32+3*32, 4*32, 6*32, 5*32, 7*32, 16*32+4*32, 16*32+6*32, 16*32+5*32, 16*32+7*32 }, 32*32 }; static const gfx_layout sb3_tilebglayout = { 16,16, RGN_FRAC(1,1), 8, {8, 9,10, 11, 0, 1, 2, 3 }, { 0, 4, 16, 20, 32, 36, 48, 52, 512+0,512+4,512+16,512+20,512+32,512+36,512+48,512+52}, { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 1024+0*16,1024+1*64,1024+2*64,1024+3*64,1024+4*64,1024+5*64,1024+6*64,1024+7*64}, 32*64 }; static GFXDECODE_START( sb3 ) GFXDECODE_ENTRY( REGION_GFX1, 0, tilelayout, 0, 16 ) GFXDECODE_ENTRY( REGION_GFX2, 0, sb3_tilebglayout, 0, 2 ) GFXDECODE_END static GFXDECODE_START( hyperpac ) GFXDECODE_ENTRY( REGION_GFX1, 0, hyperpac_tilelayout, 0, 16 ) GFXDECODE_END /* handler called by the 3812/2151 emulator when the internal timers cause an IRQ */ static void irqhandler(int irq) { cpunum_set_input_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE); } /* SnowBros Sound */ static struct YM3812interface ym3812_interface = { irqhandler }; /* SemiCom Sound */ static struct YM2151interface ym2151_interface = { irqhandler }; MACHINE_RESET (semiprot) { UINT16 *PROTDATA = (UINT16*)memory_region(REGION_USER1); int i; for (i = 0;i < 0x200/2;i++) hyperpac_ram[0xf000/2 + i] = PROTDATA[i]; } MACHINE_RESET (finalttr) { UINT16 *PROTDATA = (UINT16*)memory_region(REGION_USER1); int i; for (i = 0;i < 0x200/2;i++) hyperpac_ram[0x2000/2 + i] = PROTDATA[i]; } static MACHINE_DRIVER_START( snowbros ) /* basic machine hardware */ MDRV_CPU_ADD_TAG("main", M68000, 8000000) /* 8 Mhz - confirmed */ MDRV_CPU_PROGRAM_MAP(readmem,writemem) MDRV_CPU_VBLANK_INT(snowbros_interrupt,3) MDRV_CPU_ADD_TAG("sound", Z80, 6000000) /* 6 MHz - confirmed */ /* audio CPU */ MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) MDRV_CPU_IO_MAP(sound_readport,sound_writeport) MDRV_SCREEN_REFRESH_RATE(57.5) /* ~57.5 - confirmed */ MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) /* video hardware */ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) MDRV_SCREEN_SIZE(32*8, 32*8) MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MDRV_GFXDECODE(snowbros) MDRV_PALETTE_LENGTH(256) MDRV_VIDEO_START(snowbros) MDRV_VIDEO_UPDATE(snowbros) MDRV_VIDEO_EOF(snowbros) /* sound hardware */ MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SOUND_ADD_TAG("3812", YM3812, 3000000) MDRV_SOUND_CONFIG(ym3812_interface) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_DRIVER_END static MACHINE_DRIVER_START( wintbob ) /* basic machine hardware */ MDRV_IMPORT_FROM(snowbros) MDRV_CPU_REPLACE("main", M68000, 10000000) /* 10mhz - Confirmed */ MDRV_CPU_PROGRAM_MAP(wintbob_readmem,wintbob_writemem) /* video hardware */ MDRV_GFXDECODE(wb) MDRV_VIDEO_UPDATE(wintbob) MDRV_VIDEO_EOF(NULL) MACHINE_DRIVER_END static MACHINE_DRIVER_START( semicom ) /* basic machine hardware */ MDRV_IMPORT_FROM(snowbros) MDRV_CPU_REPLACE("main", M68000, 16000000) /* 16mhz or 12mhz ? */ MDRV_CPU_PROGRAM_MAP(hyperpac_readmem,hyperpac_writemem) MDRV_CPU_REPLACE("sound", Z80, 4000000) /* 4.0 MHz ??? */ /* audio CPU */ MDRV_CPU_PROGRAM_MAP(hyperpac_sound_readmem,hyperpac_sound_writemem) MDRV_GFXDECODE(hyperpac) /* sound hardware */ MDRV_SOUND_REPLACE("3812", YM2151, 4000000) MDRV_SOUND_CONFIG(ym2151_interface) MDRV_SOUND_ROUTE(0, "mono", 0.10) MDRV_SOUND_ROUTE(1, "mono", 0.10) MDRV_SOUND_ADD_TAG("oki", OKIM6295, 999900) MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) // clock frequency & pin 7 not verified MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_DRIVER_END static MACHINE_DRIVER_START( semiprot ) MDRV_IMPORT_FROM(semicom) MDRV_MACHINE_RESET ( semiprot ) MACHINE_DRIVER_END /* Honey Doll - Barko Corp 1995 Rom Board include a Cypress cy7C382-0JC chip Main Board : CPU : 1 X MC68000P12 1 X Z80B 1 X Oki M6295 2 X Cypress CY7C384A-XJC 2 x quartz - 12Mhz and 16Mhz See included pics */ static MACHINE_DRIVER_START( honeydol ) /* basic machine hardware */ MDRV_CPU_ADD_TAG("main", M68000, 16000000) MDRV_CPU_PROGRAM_MAP(honeydol_readmem,honeydol_writemem) MDRV_CPU_VBLANK_INT(snowbros_interrupt,3) MDRV_CPU_ADD_TAG("sound", Z80, 4000000) /* audio CPU */ MDRV_CPU_PROGRAM_MAP(honeydol_sound_readmem,honeydol_sound_writemem) MDRV_CPU_IO_MAP(honeydol_sound_readport,honeydol_sound_writeport) MDRV_SCREEN_REFRESH_RATE(57.5) MDRV_SCREEN_VBLANK_TIME(DEFAULT_REAL_60HZ_VBLANK_DURATION) /* video hardware */ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) MDRV_SCREEN_SIZE(32*8, 32*8) MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MDRV_GFXDECODE(honeydol) MDRV_PALETTE_LENGTH(0x800/2) MDRV_VIDEO_UPDATE(honeydol) /* sound hardware */ MDRV_SPEAKER_STANDARD_MONO("mono") /* sound hardware */ MDRV_SOUND_ADD_TAG("3812", YM3812, 3000000) MDRV_SOUND_CONFIG(ym3812_interface) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MDRV_SOUND_ADD_TAG("oki", OKIM6295, 999900) /* freq? */ MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_DRIVER_END static MACHINE_DRIVER_START( twinadv ) /* basic machine hardware */ MDRV_CPU_ADD_TAG("main", M68000, 16000000) // or 12 MDRV_CPU_PROGRAM_MAP(twinadv_readmem,twinadv_writemem) MDRV_CPU_VBLANK_INT(snowbros_interrupt,3) MDRV_CPU_ADD_TAG("sound", Z80, 4000000) /* audio CPU */ MDRV_CPU_PROGRAM_MAP(twinadv_sound_readmem,twinadv_sound_writemem) MDRV_CPU_IO_MAP(twinadv_sound_readport,twinadv_sound_writeport) MDRV_CPU_VBLANK_INT(irq0_line_hold,1) MDRV_SCREEN_REFRESH_RATE(57.5) MDRV_SCREEN_VBLANK_TIME(DEFAULT_REAL_60HZ_VBLANK_DURATION) /* video hardware */ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) MDRV_SCREEN_SIZE(32*8, 32*8) MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MDRV_GFXDECODE(twinadv) MDRV_PALETTE_LENGTH(0x100) MDRV_VIDEO_UPDATE(twinadv) /* sound hardware */ MDRV_SPEAKER_STANDARD_MONO("mono") /* sound hardware */ MDRV_SOUND_ADD_TAG("oki", OKIM6295, 12000000/12) /* freq? */ MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_DRIVER_END /* Final Tetris the pcb is korean and probably original even if it's very cheap. osc 12mhz osc 3.579545mhz 68000 z8004b CA5101 (sound chip) OKI M6295 (sound chip) Intel P8752 (mcu) 2x dips banks */ static MACHINE_DRIVER_START( finalttr ) MDRV_IMPORT_FROM(semicom) MDRV_CPU_REPLACE("main", M68000, 12000000) MDRV_CPU_PROGRAM_MAP(finalttr_readmem,finalttr_writemem) MDRV_CPU_REPLACE("sound", Z80, 3578545) MDRV_MACHINE_RESET ( finalttr ) MDRV_SOUND_REPLACE("3812", YM2151, 4000000) MDRV_SOUND_CONFIG(ym2151_interface) MDRV_SOUND_ROUTE(0, "mono", 0.20) MDRV_SOUND_ROUTE(1, "mono", 0.20) MDRV_SOUND_REPLACE("oki", OKIM6295, 999900) MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MACHINE_DRIVER_END static MACHINE_DRIVER_START( _4in1 ) /* basic machine hardware */ MDRV_IMPORT_FROM(semicom) MDRV_GFXDECODE(snowbros) MACHINE_DRIVER_END static MACHINE_DRIVER_START( snowbro3 ) /* basic machine hardware */ MDRV_CPU_ADD(M68000, 16000000) /* 16mhz or 12mhz ? */ MDRV_CPU_PROGRAM_MAP(readmem3,writemem3) MDRV_CPU_VBLANK_INT(snowbro3_interrupt,3) MDRV_SCREEN_REFRESH_RATE(60) MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) /* video hardware */ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) MDRV_SCREEN_SIZE(32*8, 32*8) MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MDRV_GFXDECODE(sb3) MDRV_PALETTE_LENGTH(512) MDRV_VIDEO_UPDATE(snowbro3) /* sound hardware */ MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SOUND_ADD(OKIM6295, 999900) MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) // clock frequency & pin 7 not verified MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_DRIVER_END /*************************************************************************** Game driver(s) ***************************************************************************/ ROM_START( snowbros ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "sn6.bin", 0x00000, 0x20000, CRC(4899ddcf) SHA1(47d750d3022a80e47ffabe47566bb2556cc8d477) ) ROM_LOAD16_BYTE( "sn5.bin", 0x00001, 0x20000, CRC(ad310d3f) SHA1(f39295b38d99087dbb9c5b00bf9cb963337a50e2) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "sbros-4.29", 0x0000, 0x8000, CRC(e6eab4e4) SHA1(d08187d03b21192e188784cb840a37a7bdb5ad32) ) ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "sbros-1.41", 0x00000, 0x80000, CRC(16f06b3a) SHA1(c64d3b2d32f0f0fcf1d8c5f02f8589d59ddfd428) ) /* where were these from, a bootleg? */ // ROM_LOAD( "ch0", 0x00000, 0x20000, CRC(36d84dfe) SHA1(5d45a750220930bc409de30f19282bb143fbf94f) ) // ROM_LOAD( "ch1", 0x20000, 0x20000, CRC(76347256) SHA1(48ec03965905adaba5e50eb3e42a2813f7883bb4) ) // ROM_LOAD( "ch2", 0x40000, 0x20000, CRC(fdaa634c) SHA1(1271c74df7da7596caf67caae3c51b4c163a49f4) ) // ROM_LOAD( "ch3", 0x60000, 0x20000, CRC(34024aef) SHA1(003a9b9ee3aaab3d787894d3d4126d372b19d2a8) ) ROM_END ROM_START( snowbroa ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "sbros-3a.5", 0x00000, 0x20000, CRC(10cb37e1) SHA1(786be4640f8df2c81a32decc189ea7657ace00c6) ) ROM_LOAD16_BYTE( "sbros-2a.6", 0x00001, 0x20000, CRC(ab91cc1e) SHA1(8cff61539dc7d35fcbf110d3e54fc1883e7b8509) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "sbros-4.29", 0x0000, 0x8000, CRC(e6eab4e4) SHA1(d08187d03b21192e188784cb840a37a7bdb5ad32) ) ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "sbros-1.41", 0x00000, 0x80000, CRC(16f06b3a) SHA1(c64d3b2d32f0f0fcf1d8c5f02f8589d59ddfd428) ) ROM_END ROM_START( snowbrob ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "sbros3-a", 0x00000, 0x20000, CRC(301627d6) SHA1(0d1dc70091c87e9c27916d4232ff31b7381a64e1) ) ROM_LOAD16_BYTE( "sbros2-a", 0x00001, 0x20000, CRC(f6689f41) SHA1(e4fd27b930a31479c0d99e0ddd23d5db34044666) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "sbros-4.29", 0x0000, 0x8000, CRC(e6eab4e4) SHA1(d08187d03b21192e188784cb840a37a7bdb5ad32) ) ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "sbros-1.41", 0x00000, 0x80000, CRC(16f06b3a) SHA1(c64d3b2d32f0f0fcf1d8c5f02f8589d59ddfd428) ) ROM_END ROM_START( snowbroc ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "3-a.ic5", 0x00000, 0x20000, CRC(e1bc346b) SHA1(a20c343d9ed2ad4f785d21076499008edad251f9) ) ROM_LOAD16_BYTE( "2-a.ic6", 0x00001, 0x20000, CRC(1be27f9d) SHA1(76dd14480b9274831e51016f7bb57459d7b15cf9) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "sbros-4.29", 0x0000, 0x8000, CRC(e6eab4e4) SHA1(d08187d03b21192e188784cb840a37a7bdb5ad32) ) ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "sbros-1.41", 0x00000, 0x80000, CRC(16f06b3a) SHA1(c64d3b2d32f0f0fcf1d8c5f02f8589d59ddfd428) ) ROM_END ROM_START( snowbroj ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "snowbros.3", 0x00000, 0x20000, CRC(3f504f9e) SHA1(700758b114c3fde6ea8f84222af0850dba13cd3b) ) ROM_LOAD16_BYTE( "snowbros.2", 0x00001, 0x20000, CRC(854b02bc) SHA1(4ad1548eef94dcb95119cb4a7dcdefa037591b5b) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "sbros-4.29", 0x0000, 0x8000, CRC(e6eab4e4) SHA1(d08187d03b21192e188784cb840a37a7bdb5ad32) ) ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) /* The gfx ROM (snowbros.1) was bad, I'm using the ones from the other sets. */ ROM_LOAD( "sbros-1.41", 0x00000, 0x80000, CRC(16f06b3a) SHA1(c64d3b2d32f0f0fcf1d8c5f02f8589d59ddfd428) ) ROM_END ROM_START( wintbob ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "wb3", 0x00000, 0x10000, CRC(b9719767) SHA1(431c97d409f2a5ff7f46116a4d8907e446434431) ) ROM_LOAD16_BYTE( "wb1", 0x00001, 0x10000, CRC(a4488998) SHA1(4e927e31c1b865dbdba2b985c7a819a07e2e81b8) ) /* The wb03.bin below is bad, the set has a different copyright message (IN KOREA is replaced with 1990) but also clearly suffers from bitrot at the following addresses 4FC2, 5F02, 6642, D6C2, D742 in all cases bit 0x20 is incorrectly set in the bad rom */ // ROM_LOAD16_BYTE( "wb03.bin", 0x00000, 0x10000, CRC(df56e168) SHA1(20dbabdd97e6f3d4bf6500bf9e8476942cb48ae3) ) // ROM_LOAD16_BYTE( "wb01.bin", 0x00001, 0x10000, CRC(05722f17) SHA1(9356e2488ea35e0a2978689f2ca6dfa0d57fd2ed) ) ROM_LOAD16_BYTE( "wb04.bin", 0x20000, 0x10000, CRC(53be758d) SHA1(56cf85ba23fe699031d73e8f367a1b8ac837d5f8) ) ROM_LOAD16_BYTE( "wb02.bin", 0x20001, 0x10000, CRC(fc8e292e) SHA1(857cfeb0be121e64e6117120514ae1f2ffeae4d6) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "wb05.bin", 0x0000, 0x10000, CRC(53fe59df) SHA1(a99053e82b9fed76f744fa9f67078294641c6317) ) ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) /* probably identical data to Snow Bros, in a different format */ ROM_LOAD16_BYTE( "wb13.bin", 0x00000, 0x10000, CRC(426921de) SHA1(5107c58e7e08d71895baa67fe260b17ebd61389c) ) ROM_LOAD16_BYTE( "wb06.bin", 0x00001, 0x10000, CRC(68204937) SHA1(fd2ef93df5fd8aa2d36072858dbcfce41157ef3e) ) ROM_LOAD16_BYTE( "wb12.bin", 0x20000, 0x10000, CRC(ef4e04c7) SHA1(17158b61b3c158e0491db9abb2e1a8c20d981d37) ) ROM_LOAD16_BYTE( "wb07.bin", 0x20001, 0x10000, CRC(53f40978) SHA1(058bbf3b7877f0cd320383e0386c5959e0d6589b) ) ROM_LOAD16_BYTE( "wb11.bin", 0x40000, 0x10000, CRC(41cb4563) SHA1(94f1d12d299ac08fc8522139e1927f0cf739be75) ) ROM_LOAD16_BYTE( "wb08.bin", 0x40001, 0x10000, CRC(9497b88c) SHA1(367c6106276f3816528341f11f3a97ae458d25cd) ) ROM_LOAD16_BYTE( "wb10.bin", 0x60000, 0x10000, CRC(5fa22b1e) SHA1(1164003d873e9738a3ca133cce689c7120061e3c) ) ROM_LOAD16_BYTE( "wb09.bin", 0x60001, 0x10000, CRC(9be718ca) SHA1(5c195e4f13efbdb229201d2408d018861bf389cc) ) ROM_END /* Barko */ ROM_START( honeydol ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "d-16.uh12", 0x00001, 0x20000, CRC(cee1a2e3) SHA1(6d1ff5358ec704616b724eea2ab9b60b84709eb1) ) ROM_LOAD16_BYTE( "d-17.ui12", 0x00000, 0x20000, CRC(cac44154) SHA1(2c30dc033001fc9303da7e117e3401bc7af16607) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "d-12.uh15", 0x0000, 0x8000, CRC(386f1b63) SHA1(d719875226cd3d380e2ebec49209590d91b6f07b) ) ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) // 4 bpp gfx ROM_LOAD( "d-13.1", 0x000000, 0x80000, CRC(ff6a57fb) SHA1(2fbf61f4ac2655a60b1fa82bb6d001f0ef8b4654) ) ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "d-14.5", 0x000000, 0x80000, CRC(2178996f) SHA1(04368384cb191b28b23199c8175e93271ab79103) ) ROM_LOAD( "d-15.6", 0x080000, 0x80000, CRC(6629239e) SHA1(5f462c04eb11c2b662236fd65bbf74fa08038eec) ) ROM_LOAD( "d-18.9", 0x100000, 0x80000, CRC(0210507a) SHA1(5b7348bf253b1ae8bfa86cdee2ff80aa2b3faa79) ) ROM_LOAD( "d-19.10", 0x180000, 0x80000, CRC(d27375d5) SHA1(2a39ce9b985e00a290c3ea75be3b1edbc00d39ec) ) ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "d-11.u14", 0x00000, 0x40000, CRC(f3ee4861) SHA1(f24f1f855ae6c96a6d84a4b5e5c196df8f922d0a) ) ROM_END /* +--------------------------------+ | Z80A | |GL324 6116 ua4| |M6295 uh15 HY6264 ua5| |J sra HY6264 ua6| |A srb 84256 | |M 84256 | |M 84256 CY7C384A | |A 84256 | | SWA1 uh12 | | 68000 84256 | | SWA2 ui12 12MHz 16MHz | +--------------------------------+ Produttore: Barko N.revisione: S16K951102 CPU 1x 68000 (main) 1x Z8400B (sound) 1x OKI M6295 (sound) 1x GL324 (sound) 1x CY7C384A 1x oscillator 12.000MHz 1x oscillator 16.000MHz ROMs 1x 27256 (uh15) 2x M27C2001 (sra,srb) 1x AM27C010 (12) 1x D27C010 (13) 1x M27C4001 (14) 1x AT27C040 (15) 1x TMS27C040 (16) 6x HY18CV8S (read protected) */ ROM_START( twinadv ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "13.uh12", 0x00001, 0x20000, CRC(9f70a39b) SHA1(d49823be58b00c4c5a4f6cc4e4371531492aff1e) ) ROM_LOAD16_BYTE( "12.ui12", 0x00000, 0x20000, CRC(d8776495) SHA1(15b93ded80bf9f240faef2d89b6076f33f1f4ece) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "uh15.bin", 0x0000, 0x8000, CRC(3d5acd08) SHA1(c19f686862dfc12d2fa91c2dd3d3b75d9cb410c3) ) ROM_REGION( 0x180000, REGION_GFX1, ROMREGION_DISPOSE ) /* 4bpp gfx */ ROM_LOAD( "16.ua4", 0x000000, 0x80000, CRC(f491e171) SHA1(f31b945b0c4b30d1b3dc6c5928b77aad4e956bc7) ) ROM_LOAD( "15.ua5", 0x080000, 0x80000, CRC(79a08b8d) SHA1(034c0a3b9e27ac174092d265b32fb82d6ee45d47) ) ROM_LOAD( "14.ua6", 0x100000, 0x80000, CRC(79faee0b) SHA1(7421a5fa038d01658ba5ac1f65ea87b97ac25c36) ) ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* Samples - both banks are almost the same */ /* todo, check bank ordering .. */ ROM_LOAD( "sra.bin", 0x00000, 0x40000, CRC(82f452c4) SHA1(95ad6ede87ceafb045ed7df40496baf96190b97f) ) // bank 1 ROM_LOAD( "srb.bin", 0x40000, 0x40000, CRC(109e51e6) SHA1(3344c68d63bbad4a02b47143b2d2f72ce9bcb4bb) ) // bank 2 ROM_END ROM_START( twinadvk ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 6*64k for 68000 code */ ROM_LOAD16_BYTE( "uh12", 0x00001, 0x20000, CRC(e0bcc738) SHA1(7fc6a793fcdd80122c0ac6409ae4cac5597b7b5a) ) ROM_LOAD16_BYTE( "ui12", 0x00000, 0x20000, CRC(a3ee6451) SHA1(9c0b415a2f325513739f2047780c2a56df350aa5) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for z80 sound code */ ROM_LOAD( "uh15.bin", 0x0000, 0x8000, CRC(3d5acd08) SHA1(c19f686862dfc12d2fa91c2dd3d3b75d9cb410c3) ) ROM_REGION( 0x180000, REGION_GFX1, ROMREGION_DISPOSE ) /* 4bpp gfx */ ROM_LOAD( "ua4", 0x000000, 0x80000, CRC(a5aff49b) SHA1(ee162281ba643729ee007f9634c21fadd3c1cb48) ) ROM_LOAD( "ua5", 0x080000, 0x80000, CRC(f83b3b97) SHA1(2e967d49ef411d164a0b6cf32444f60fcd8068a9) ) ROM_LOAD( "ua6", 0x100000, 0x80000, CRC(4dfcffb9) SHA1(c157e031acbb321b9435389f9fc4e1ffebca106d) ) ROM_REGION( 0x080000, REGION_SOUND1, 0 ) /* Samples - both banks are almost the same */ /* todo, check bank ordering .. */ ROM_LOAD( "sra.bin", 0x00000, 0x40000, CRC(82f452c4) SHA1(95ad6ede87ceafb045ed7df40496baf96190b97f) ) // bank 1 ROM_LOAD( "srb.bin", 0x40000, 0x40000, CRC(109e51e6) SHA1(3344c68d63bbad4a02b47143b2d2f72ce9bcb4bb) ) // bank 2 ROM_END /* SemiCom Games */ ROM_START( hyperpac ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "hyperpac.h12", 0x00001, 0x20000, CRC(2cf0531a) SHA1(c4321d728845035507352d0bcf4348d28b92e85e) ) ROM_LOAD16_BYTE( "hyperpac.i12", 0x00000, 0x20000, CRC(9c7d85b8) SHA1(432d5fbe8bef875ce4a9aeb74a7b57dc79c709fd) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "hyperpac.u1", 0x00000, 0x10000 , CRC(03faf88e) SHA1(a8da883d4b765b809452bbffca37ff224edbe86d) ) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "hyperpac.j15", 0x00000, 0x40000, CRC(fb9f468d) SHA1(52857b1a04c64ac853340ebb8e92d98eabea8bc1) ) ROM_REGION( 0x0c0000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "hyperpac.a4", 0x000000, 0x40000, CRC(bd8673da) SHA1(8466355894da4d2c9a54d03a833cc9b4ec0c67eb) ) ROM_LOAD( "hyperpac.a5", 0x040000, 0x40000, CRC(5d90cd82) SHA1(56be68478a81bb4e1011990da83334929a0ac886) ) ROM_LOAD( "hyperpac.a6", 0x080000, 0x40000, CRC(61d86e63) SHA1(974c634607993924fa098eff106b1b288bec1e26) ) ROM_END ROM_START( hyperpcb ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "hpacuh12.bin", 0x00001, 0x20000, CRC(633ab2c6) SHA1(534435fa602adebf651e1d42f7c96b01eb6634ef) ) ROM_LOAD16_BYTE( "hpacui12.bin", 0x00000, 0x20000, CRC(23dc00d1) SHA1(8d4d00f450b94912adcbb24073f9b3b01eab0450) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "hyperpac.u1", 0x00000, 0x10000 , CRC(03faf88e) SHA1(a8da883d4b765b809452bbffca37ff224edbe86d) ) // was missing from this set, using the one from the original ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "hyperpac.j15", 0x00000, 0x40000, CRC(fb9f468d) SHA1(52857b1a04c64ac853340ebb8e92d98eabea8bc1) ) ROM_REGION( 0x0c0000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "hyperpac.a4", 0x000000, 0x40000, CRC(bd8673da) SHA1(8466355894da4d2c9a54d03a833cc9b4ec0c67eb) ) ROM_LOAD( "hyperpac.a5", 0x040000, 0x40000, CRC(5d90cd82) SHA1(56be68478a81bb4e1011990da83334929a0ac886) ) ROM_LOAD( "hyperpac.a6", 0x080000, 0x40000, CRC(61d86e63) SHA1(974c634607993924fa098eff106b1b288bec1e26) ) ROM_END ROM_START( twinkle ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "uh12.bin", 0x00001, 0x20000, CRC(a99626fe) SHA1(489098a2ceb36df97b6b1d59b7b696300deee3ab) ) ROM_LOAD16_BYTE( "ui12.bin", 0x00000, 0x20000, CRC(5af73684) SHA1(9be43e5c71152d515366e422eb077a41dbb3fe62) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "u1.bin", 0x00000, 0x10000 , CRC(e40481da) SHA1(1c1fabcb67693235eaa6ff59ae12a35854b5564a) ) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION16_BE( 0x200, REGION_USER1, 0 ) /* Data from Shared RAM */ /* this is not a real rom but instead the data extracted from shared ram, the MCU puts it there */ ROM_LOAD16_WORD( "protdata.bin", 0x00000, 0x200, CRC(00d3e4b4) SHA1(afa359a8b48605ff034133bad2a0a182429dec71) ) ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "uj15.bin", 0x00000, 0x40000, CRC(0a534b37) SHA1(b7d780eb4668f1f757a60884c022f5bbc424dc97) ) ROM_REGION( 0x080000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "ua4.bin", 0x000000, 0x80000, CRC(6b64bb09) SHA1(547eac1ad931a6b937dff0b922d06af92cc7ab73) ) ROM_END ROM_START( toppyrap ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "uh12.bin", 0x00001, 0x40000, CRC(6f5ad699) SHA1(42f7201d6274ff8338a7d4627af99001f473e841) ) ROM_LOAD16_BYTE( "ui12.bin", 0x00000, 0x40000, CRC(caf5a7e1) SHA1(b521b2f06a804a52dad1b07657db2a29e1411844) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "u1.bin", 0x00000, 0x10000 , CRC(07f50947) SHA1(83740655ab5f677bd009191bb0de60e237aaa11c) ) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION16_BE( 0x200, REGION_USER1, 0 ) /* Data from Shared RAM */ /* this contains the code for 2 of the IRQ functions, but the game only uses one of them, the other is executed from ROM. The version in ROM is slightly patched version so maybe there is an earlier revision which uses the code provided by the MCU instead */ ROM_LOAD16_WORD( "protdata.bin", 0x00000, 0x200, CRC(0704e6c7) SHA1(22387257db569990378c304af9677e6dc1436207) ) ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "uj15.bin", 0x00000, 0x20000, CRC(a3bacfd7) SHA1(d015d8bd26d0189fc13d09fefcb9b8baaaacec8a) ) ROM_REGION( 0x200000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "ua4.bin", 0x000000, 0x80000, CRC(a9577bcf) SHA1(9918d982ebee1c88bd203fa2b3ce2468c160fb95) ) ROM_LOAD( "ua5.bin", 0x080000, 0x80000, CRC(7179d32d) SHA1(dae7126401b5bb7f99689587e05a8bf5033ec06e) ) ROM_LOAD( "ua6.bin", 0x100000, 0x80000, CRC(4834e5b1) SHA1(cd8a4c329b2bfe1a9c2dea9d72ca09b71366c60a) ) ROM_LOAD( "ua7.bin", 0x180000, 0x80000, CRC(663dd099) SHA1(84b52af54ac49e8b4bae23995e3cf94494be2bb3) ) ROM_END ROM_START( moremore ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "u52.bin", 0x00001, 0x40000, CRC(cea4b246) SHA1(5febcb5dda6581caccfe9079b28c2366dfc1db2b) ) ROM_LOAD16_BYTE( "u74.bin", 0x00000, 0x40000, CRC(2acdcb88) SHA1(74d661d07752bbccab7eab151209a414e9bf7675) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "u35.bin", 0x00000, 0x10000 , CRC(92dc95fc) SHA1(f04e63cc680835458246989532faf5657e28db13) ) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION16_BE( 0x200, REGION_USER1, 0 ) /* Data from Shared RAM */ /* this is not a real rom but instead the data extracted from shared ram, the MCU puts it there */ ROM_LOAD16_WORD( "protdata.bin", 0x00000, 0x200 , CRC(782dd2aa) SHA1(2587734271e0c85cb76bcdee171366c4e6fc9f81) ) ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "u14.bin", 0x00000, 0x40000, CRC(90580088) SHA1(c64de2c0db95ab4ce06fc0a29c0cc8b7f3deeb28) ) ROM_REGION( 0x200000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "u75.bin", 0x000000, 0x80000, CRC(d671815c) SHA1(a7e8d3bf688ce51b5d9a2b306cc557974328c322) ) ROM_LOAD( "u76.bin", 0x080000, 0x80000, CRC(e0d479e8) SHA1(454b53949664aca07a86229d3b6c9ce4e9449ea6) ) ROM_LOAD( "u77.bin", 0x100000, 0x80000, CRC(60a281da) SHA1(3f268f8b1cd8efd3e32d0fcdba5483c93122800e) ) ROM_LOAD( "u78.bin", 0x180000, 0x80000, CRC(e2723b4e) SHA1(6b4ba1e2e937b3231d76526af3f5a4a67144e4d5) ) ROM_END ROM_START( moremorp ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "mmp_u52.bin", 0x00001, 0x40000, CRC(66baf9b2) SHA1(f1d383a94ef4313cb02c59ace17b9562eddcfb3c) ) ROM_LOAD16_BYTE( "mmp_u74.bin", 0x00000, 0x40000, CRC(7c6fede5) SHA1(41bc539a6efe9eb2304243701857b972d2170bcf) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "mmp_u35.bin", 0x00000, 0x10000 , CRC(4d098cad) SHA1(a79d417e7525a25dd6697da9f3d1de269e759d2e) ) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION16_BE( 0x200, REGION_USER1, 0 ) /* Data from Shared RAM */ /* this is not a real rom but instead the data extracted from shared ram, the MCU puts it there */ ROM_LOAD16_WORD( "protdata.bin", 0x00000, 0x200 , CRC(782dd2aa) SHA1(2587734271e0c85cb76bcdee171366c4e6fc9f81) ) ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "mmp_u14.bin", 0x00000, 0x40000, CRC(211a2566) SHA1(48138547822a8e76c101dd4189d581f80eee1e24) ) ROM_REGION( 0x200000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "mmp_u75.bin", 0x000000, 0x80000, CRC(af9e824e) SHA1(2b68813bf025a34b8958033108e4f8d39fd618cb) ) ROM_LOAD( "mmp_u76.bin", 0x080000, 0x80000, CRC(c42af064) SHA1(f9d755e7cb52828d8594f7871932daf11443689f) ) ROM_LOAD( "mmp_u77.bin", 0x100000, 0x80000, CRC(1d7396e1) SHA1(bde7e925051408dd2371b5da8235a6a4cae8cf6a) ) ROM_LOAD( "mmp_u78.bin", 0x180000, 0x80000, CRC(5508d80b) SHA1(1b9a70a502b237fa11d1d55dce761e2def18873a) ) ROM_END ROM_START( 3in1semi ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "u52", 0x00001, 0x40000, CRC(b0e4a0f7) SHA1(e1f8b8ef020a85fcd7817814cf6c5d560e9e608d) ) ROM_LOAD16_BYTE( "u74", 0x00000, 0x40000, CRC(266862c4) SHA1(2c5c513fee99bdb6e0ae3e0e644e516bdaddd629) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "u35", 0x00000, 0x10000 , CRC(e40481da) SHA1(1c1fabcb67693235eaa6ff59ae12a35854b5564a) ) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION16_BE( 0x200, REGION_USER1, 0 ) /* Data from Shared RAM */ /* this is not a real rom but instead the data extracted from shared ram, the MCU puts it there */ ROM_LOAD16_WORD( "protdata.bin", 0x00000, 0x200 , CRC(85deba7c) SHA1(44c6d9306b4f8e47182f4740a18971c49a8df8db) ) ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "u14", 0x00000, 0x40000, CRC(c83c11be) SHA1(c05d96d61e5b8245232c85cbbcb7cc1e4e066492) ) ROM_REGION( 0x200000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "u75", 0x000000, 0x80000, CRC(b66a0db6) SHA1(a4e604eb3c0a5b16b4b0bb99219045bf2146287c) ) ROM_LOAD( "u76", 0x080000, 0x80000, CRC(5f4b48ea) SHA1(e9dd1100d55b021b060990988c1e5271ce1ae35b) ) ROM_LOAD( "u77", 0x100000, 0x80000, CRC(d44211e3) SHA1(53af19dec03e76912632450414cdbcbb31cc094c) ) ROM_LOAD( "u78", 0x180000, 0x80000, CRC(af596afc) SHA1(875d7a51ff5c741cae4483d8da33df9cae8de52a) ) ROM_END ROM_START( cookbib2 ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "cookbib2.02", 0x00001, 0x40000, CRC(b2909460) SHA1(2438638af870cfc105631d2b5e5a27a64ab5394d) ) ROM_LOAD16_BYTE( "cookbib2.01", 0x00000, 0x40000, CRC(65aafde2) SHA1(01f9f261527c35182f0445d641d987aa86ad750f) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "cookbib2.07", 0x00000, 0x10000 , CRC(f59f1c9a) SHA1(2830261fd55249e015514fcb4cf8392e83b7fd0d) ) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION( 0x200, REGION_USER1, 0 ) /* Data from Shared RAM */ /* this is not a real rom but instead the data extracted from shared ram, the MCU puts it there */ ROM_LOAD16_WORD_SWAP( "protdata.bin", 0x00000, 0x200 , CRC(ae6d8ed5) SHA1(410cdacb9b90ea345c0e4be85e60a138f45a51f1) ) ROM_REGION( 0x020000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "cookbib2.06", 0x00000, 0x20000, CRC(5e6f76b8) SHA1(725800143dfeaa6093ed5fcc5b9f15678ae9e547) ) ROM_REGION( 0x140000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "cookbib2.05", 0x000000, 0x80000, CRC(89fb38ce) SHA1(1b39dd9c2743916b8d8af590bd92fe4819c2454b) ) ROM_LOAD( "cookbib2.04", 0x080000, 0x80000, CRC(f240111f) SHA1(b2c3b6e3d916fc68e1fd258b1279b6c39e1f0108) ) ROM_LOAD( "cookbib2.03", 0x100000, 0x40000, CRC(e1604821) SHA1(bede6bdd8331128b9f2b229d718133470bf407c9) ) ROM_END ROM_START( cookbib3 ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "u52.bin", 0x00001, 0x40000, CRC(65134893) SHA1(b1f26794d1a85893aedf55adb2195ad244f90132) ) ROM_LOAD16_BYTE( "u74.bin", 0x00000, 0x40000, CRC(c4ab8435) SHA1(7f97d3deafb3eb5412a44308ef20d3317405e94c) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "u35.bin", 0x0c000, 0x4000 , CRC(5dfd2a98) SHA1(193c0cd9272144c25cbc3660967424d34d0da185) ) /* bit strange but verified, not the first time SemiCom have done this, see bcstory.. */ ROM_CONTINUE(0x8000,0x4000) ROM_CONTINUE(0x4000,0x4000) ROM_CONTINUE(0x0000,0x4000) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION16_BE( 0x200, REGION_USER1, 0 ) /* Data from Shared RAM */ /* this is not a real rom but instead the data extracted from shared ram, the MCU puts it there */ ROM_LOAD16_WORD( "protdata.bin", 0x00000, 0x200 , CRC(c819b9a8) SHA1(1d425e8c9940c0e691149e5406dd71808bd73832) ) /* the 'empty' pattern continued after 0x200 but the game doesn't use it or attempt to decrypt it */ ROM_REGION( 0x020000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "u14.bin", 0x00000, 0x20000, CRC(e5bf9288) SHA1(12fb9542f9105fe1a21a74a08cda4d6372b984ee) ) ROM_REGION( 0x180000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "u75.bin", 0x000000, 0x80000, CRC(cbe4d9c8) SHA1(81b043bd2b45ab2a8c9df0ba599c6220ed0c9fbf) ) ROM_LOAD( "u76.bin", 0x080000, 0x80000, CRC(1be17b57) SHA1(57b58cc094d6b47ed6136266f1d34b8bad3f421f) ) ROM_LOAD( "u77.bin", 0x100000, 0x80000, CRC(7823600d) SHA1(90d431f324b71758c49f3a72ee07701ceb76403f) ) ROM_END ROM_START( 4in1boot ) /* snow bros, tetris, hyperman 1, pacman 2 */ ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "u52", 0x00001, 0x80000, CRC(71815878) SHA1(e3868f5687c1d8ec817671c50ade6c56ee83bfa1) ) ROM_LOAD16_BYTE( "u74", 0x00000, 0x80000, CRC(e22d3fa2) SHA1(020ab92d8cbf37a9f8186a81934abb97088c16f9) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "u35", 0x00000, 0x10000 , CRC(c894ac80) SHA1(ee896675b5205ab2dbd0cbb13db16aa145391d06) ) ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "u14", 0x00000, 0x40000, CRC(94b09b0e) SHA1(414de3e36eff85126038e8ff74145b35076e0a43) ) ROM_REGION( 0x200000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "u78", 0x000000, 0x200000, CRC(6c1fbc9c) SHA1(067f32cae89fd4d57b90be659d2d648e557c11df) ) ROM_END ROM_START( snowbro3 ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "ur4", 0x00000, 0x20000, CRC(19c13ffd) SHA1(4f9db70354bd410b7bcafa96be4591de8dc33d90) ) ROM_LOAD16_BYTE( "ur3", 0x00001, 0x20000, CRC(3f32fa15) SHA1(1402c173c1df142ff9dd7b859689c075813a50e5) ) /* is sound cpu code missing or is it driven by the main cpu? */ ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "ua5", 0x000000, 0x80000, CRC(0604e385) SHA1(96acbc65a8db89a7be100f852dc07ba9a0313167) ) /* 16x16 tiles */ ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* 16x16 BG Tiles */ ROM_LOAD( "un7", 0x000000, 0x200000, CRC(4a79da4c) SHA1(59207d116d39b9ee25c51affe520f5fdff34e536) ) ROM_LOAD( "un8", 0x200000, 0x200000, CRC(7a4561a4) SHA1(1dd823369c09368d1f0ec8e1cb85d700f10ff448) ) ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* OKIM6295 samples */ ROM_LOAD( "us5", 0x00000, 0x20000, CRC(7c6368ef) SHA1(53393c570c605f7582b61c630980041e2ed32e2d) ) ROM_CONTINUE(0x80000,0x60000) ROM_END /* Information from Korean arcade gaming magazine name : Final Tetris author : Jeil computer system year : 1993.08.24 */ ROM_START( finalttr ) ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "10.7o", 0x00000, 0x20000, CRC(eecc83e5) SHA1(48088a2fae8852a73a325a9659c24b241515eac3) ) ROM_LOAD16_BYTE( "9.5o", 0x00001, 0x20000, CRC(58d3640e) SHA1(361bc64174a6c7b15a13e0d1f048c7ea270182ca) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */ ROM_LOAD( "12.5r", 0x00000, 0x10000, CRC(4bc21361) SHA1(dab9bea665c0f2fd7cee8ab7f3762e427911bcca) ) ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Intel 87C52 MCU Code */ ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */ ROM_REGION( 0x200, REGION_USER1, 0 ) /* Data from Shared RAM */ /* this is not a real rom but instead the data extracted from shared ram, the MCU puts it there */ ROM_LOAD16_WORD_SWAP( "protdata.bin", 0x00000, 0x200 , CRC(d5bbb006) SHA1(2f9ce6c4f4f5a304a807134da9c85c68a7b49200) ) /* after 0xc7 the data read seems meaningless garbage, it doesn't appear to stop at 0x102200, might be worth going back and checking if its simply random values due to ram not being cleared, or actual data */ ROM_REGION( 0x020000, REGION_SOUND1, 0 ) /* Samples */ ROM_LOAD( "11.7p", 0x00000, 0x20000, CRC(2e331022) SHA1(1e74c66d16eb9c8ae04acecbb4040dea037492cc) ) ROM_REGION( 0x100000, REGION_GFX1, 0 ) /* Sprites */ ROM_LOAD( "5.1d", 0x00000, 0x40000, CRC(64a450f3) SHA1(d0560f68fe1527fda7852269ec39237ace66ab32) ) ROM_LOAD( "6.1f", 0x40000, 0x40000, CRC(7281a3cc) SHA1(3f2ed7893bd7c5ff25ecb6eabce78ab66fe532a7) ) ROM_LOAD( "7.1g", 0x80000, 0x40000, CRC(ec80f442) SHA1(870e44d28490a324f74af554604b9daa8422b86f) ) ROM_LOAD( "9.1h", 0xc0000, 0x40000, CRC(2ebd316d) SHA1(2f1249ebd2a0bb0cc15259f7187201576a365fa6) ) ROM_END READ16_HANDLER ( moremorp_0a_read ) { return 0x000a; } static DRIVER_INIT( moremorp ) { // UINT16 *PROTDATA = (UINT16*)memory_region(REGION_USER1); // int i; // for (i = 0;i < 0x200/2;i++) // hyperpac_ram[0xf000/2 + i] = PROTDATA[i]; /* explicit check in the code */ memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x200000, 0x200001, 0, 0, moremorp_0a_read ); } static DRIVER_INIT( cookbib2 ) { // UINT16 *HCROM = (UINT16*)memory_region(REGION_CPU1); // UINT16 *PROTDATA = (UINT16*)memory_region(REGION_USER1); // int i; // hyperpac_ram[0xf000/2] = 0x46fc; // hyperpac_ram[0xf002/2] = 0x2700; // verified on real hardware, need to move this to a file really // static UINT16 cookbib2_mcu68k[] = // { // // moved to protdata.bin // }; //for (i = 0;i < sizeof(cookbib2_mcu68k)/sizeof(cookbib2_mcu68k[0]);i++) // hyperpac_ram[0xf000/2 + i] = cookbib2_mcu68k[i]; // for (i = 0;i < 0x200/2;i++) // hyperpac_ram[0xf000/2 + i] = PROTDATA[i]; // trojan is actually buggy and gfx flicker like crazy // but we can pause the system after bootup with HALT line of 68k to get the table before // it goes nuts // hyperpac_ram[0xf07a/2] = 0x4e73; // hyperpac_ram[0xf000/2] = 0x4e73; #if 0 /* interrupt wait loop? */ HCROM[0x014942/2] = 0x4eb9; HCROM[0x014944/2] = 0x0004; HCROM[0x014946/2] = 0x8000; HCROM[0x014948/2] = 0x4e71; /* interrupt wait loop? */ HCROM[0x014968/2] = 0x4eb9; HCROM[0x01496a/2] = 0x0004; HCROM[0x01496c/2] = 0x8100; HCROM[0x01496e/2] = 0x4e71; /* interrupt wait loop? */ HCROM[0x014560/2] = 0x4eb9; HCROM[0x014562/2] = 0x0004; HCROM[0x014564/2] = 0x8200; HCROM[0x014566/2] = 0x4e71; /* new code for interrupt wait */ HCROM[0x048000/2] = 0x4a79; HCROM[0x048002/2] = 0x0010; HCROM[0x048004/2] = 0x2462; HCROM[0x048006/2] = 0x66f8; HCROM[0x048008/2] = 0x4eb9; HCROM[0x04800a/2] = 0x0004; HCROM[0x04800c/2] = 0x8300; HCROM[0x04800e/2] = 0x4e75; /* new code for interrupt wait */ HCROM[0x048100/2] = 0x4a79; HCROM[0x048102/2] = 0x0010; HCROM[0x048104/2] = 0x2460; HCROM[0x048106/2] = 0x66f8; HCROM[0x048108/2] = 0x4eb9; HCROM[0x04810a/2] = 0x0004; HCROM[0x04810c/2] = 0x8300; HCROM[0x04810e/2] = 0x4e75; /* new code for interrupt wait */ HCROM[0x048200/2] = 0x4a79; HCROM[0x048202/2] = 0x0010; HCROM[0x048204/2] = 0x2490; HCROM[0x048206/2] = 0x66f8; HCROM[0x048208/2] = 0x4eb9; HCROM[0x04820a/2] = 0x0004; HCROM[0x04820c/2] = 0x8300; HCROM[0x04820e/2] = 0x4e75; /* put registers on stack */ HCROM[0x048300/2] = 0x48e7; HCROM[0x048302/2] = 0xfffe; /* wipe sprite ram (fill with 0x0002) */ /* put the address we want to write TO in A2 */ HCROM[0x048304/2] = 0x45f9; HCROM[0x048306/2] = 0x0070; HCROM[0x048308/2] = 0x0000; /* put the number of words we want to clear into D0 */ HCROM[0x04830a/2] = 0x203c; HCROM[0x04830c/2] = 0x0000; HCROM[0x04830e/2] = 0x1000; /* write 0x0002 to A2 */ HCROM[0x048310/2] = 0x34bc; HCROM[0x048312/2] = 0x0002; /* add 1 to write address a2 */ HCROM[0x048314/2] = 0xd5fc; HCROM[0x048316/2] = 0x0000; HCROM[0x048318/2] = 0x0002; /* decrease counter d0 */ HCROM[0x04831a/2] = 0x5380; /* compare d0 to 0 */ HCROM[0x04831c/2] = 0x0c80; HCROM[0x04831e/2] = 0x0000; HCROM[0x048320/2] = 0x0000; /* if its not 0 then branch back */ HCROM[0x048322/2] = 0x66ec; /* ram has been wiped */ /* put the address we want to read protection data in A2 */ HCROM[0x048324/2] = 0x45f9; HCROM[0x048326/2] = 0x0010; // HCROM[0x048328/2] = 0xf000; // HCROM[0x048328/2] = 0xf000+0xb4; HCROM[0x048328/2] = 0xf000+0xb4+0xb4; /* put the address of spriteram in A0 */ HCROM[0x04832a/2] = 0x41f9; HCROM[0x04832c/2] = 0x0070; HCROM[0x04832e/2] = 0x0000; /* put the number of rows into D3 */ HCROM[0x048330/2] = 0x263c; HCROM[0x048332/2] = 0x0000; HCROM[0x048334/2] = 0x0012; /* put the y co-ordinate of rows into D6 */ HCROM[0x048336/2] = 0x2c3c; HCROM[0x048338/2] = 0x0000; HCROM[0x04833a/2] = 0x0014; /* put the number of bytes per row into D2 */ HCROM[0x04833c/2] = 0x243c; HCROM[0x04833e/2] = 0x0000; HCROM[0x048340/2] = 0x000a; /* put the x co-ordinate of rows into D5 */ HCROM[0x048342/2] = 0x2a3c; HCROM[0x048344/2] = 0x0000; HCROM[0x048346/2] = 0x0010; // move content of a2 to d4 (byte) HCROM[0x048348/2] = 0x1812; HCROM[0x04834a/2] = 0xe84c; // shift d4 right by 4 HCROM[0x04834c/2] = 0x0244; // mask with 0x000f HCROM[0x04834e/2] = 0x000f; // /* jump to character draw to draw first bit */ HCROM[0x048350/2] = 0x4eb9; HCROM[0x048352/2] = 0x0004; HCROM[0x048354/2] = 0x8600; // increase x-cord HCROM[0x048356/2] = 0x0645; HCROM[0x048358/2] = 0x000a; /* add 0x10 to draw address a0 */ HCROM[0x04835a/2] = 0xd1fc; HCROM[0x04835c/2] = 0x0000; HCROM[0x04835e/2] = 0x0010; // move content of a2 to d4 (byte) HCROM[0x048360/2] = 0x1812; HCROM[0x048362/2] = 0x0244; // mask with 0x000f HCROM[0x048364/2] = 0x000f; // /* jump to character draw to draw second bit */ HCROM[0x048366/2] = 0x4eb9; HCROM[0x048368/2] = 0x0004; HCROM[0x04836a/2] = 0x8600; // increase x-cord HCROM[0x04836c/2] = 0x0645; HCROM[0x04836e/2] = 0x000c; /* add 0x10 to draw address a0 */ HCROM[0x048370/2] = 0xd1fc; HCROM[0x048372/2] = 0x0000; HCROM[0x048374/2] = 0x0010; // newcode /* add 1 to read address a2 */ HCROM[0x048376/2] = 0xd5fc; HCROM[0x048378/2] = 0x0000; HCROM[0x04837a/2] = 0x0001; /* decrease counter d2 (row count)*/ HCROM[0x04837c/2] = 0x5382; /* compare d2 to 0 */ HCROM[0x04837e/2] = 0x0c82; HCROM[0x048380/2] = 0x0000; HCROM[0x048382/2] = 0x0000; /* if its not 0 then branch back */ HCROM[0x048384/2] = 0x66c2; // increase y-cord d6 HCROM[0x048386/2] = 0x0646; HCROM[0x048388/2] = 0x000c; /* decrease counter d3 */ HCROM[0x04838a/2] = 0x5383; /* compare d3 to 0 */ HCROM[0x04838c/2] = 0x0c83; HCROM[0x04838e/2] = 0x0000; HCROM[0x048390/2] = 0x0000; /* if its not 0 then branch back */ HCROM[0x048392/2] = 0x66a8; /* get back registers from stack*/ HCROM[0x048394/2] = 0x4cdf; HCROM[0x048396/2] = 0x7fff; /* rts */ HCROM[0x048398/2] = 0x4e75; /* Draw a character! */ /* D6 = y-coordinate D5 = x-coordinate D4 = value to draw A0 = spriteram base */ // 0002 0002 0002 0010 00xx 00yy 00nn 000n // 357c 0020 000c // 337c = a1 // move.w #$20, (#$c, A2) HCROM[0x048600/2] = 0x317c; HCROM[0x048602/2] = 0x0010; HCROM[0x048604/2] = 0x0006; HCROM[0x048606/2] = 0x3145; HCROM[0x048608/2] = 0x0008; HCROM[0x04860a/2] = 0x3146; HCROM[0x04860c/2] = 0x000a; /* get true value */ /* put lookuptable address in A3 */ HCROM[0x04860e/2] = 0x47f9; HCROM[0x048610/2] = 0x0004; HCROM[0x048612/2] = 0x8800; HCROM[0x048614/2] = 0x3004; // d4 -> d0 HCROM[0x048616/2] = 0xe348; HCROM[0x048618/2] = 0x3173; HCROM[0x04861a/2] = 0x0000; HCROM[0x04861c/2] = 0x000c; /* not value */ HCROM[0x04861e/2] = 0x317c; HCROM[0x048620/2] = 0x0000; HCROM[0x048622/2] = 0x000e; /* rts */ HCROM[0x048624/2] = 0x4e75; /* table used for lookup by the draw routine to get real tile numbers */ HCROM[0x048800/2] = 0x0010; HCROM[0x048802/2] = 0x0011; HCROM[0x048804/2] = 0x0012; HCROM[0x048806/2] = 0x0013; HCROM[0x048808/2] = 0x0014; HCROM[0x04880a/2] = 0x0015; HCROM[0x04880c/2] = 0x0016; HCROM[0x04880e/2] = 0x0017; HCROM[0x048810/2] = 0x0018; HCROM[0x048812/2] = 0x0019; HCROM[0x048814/2] = 0x0021; HCROM[0x048816/2] = 0x0022; HCROM[0x048818/2] = 0x0023; HCROM[0x04881a/2] = 0x0024; HCROM[0x04881c/2] = 0x0025; HCROM[0x04881e/2] = 0x0026; /* 10 0 11 1 12 2 13 3 14 4 15 5 16 6 17 7 18 8 19 9 21 a 22 b 23 c 24 d 25 e 26 f */ { FILE *fp; fp=fopen("cookie", "w+b"); if (fp) { fwrite(HCROM, 0x80000, 1, fp); fclose(fp); } } #endif } static DRIVER_INIT( hyperpac ) { /* simulate RAM initialization done by the protection MCU */ /* not verified on real hardware */ hyperpac_ram[0xe000/2] = 0x4ef9; hyperpac_ram[0xe002/2] = 0x0000; hyperpac_ram[0xe004/2] = 0x062c; hyperpac_ram[0xe080/2] = 0xfedc; hyperpac_ram[0xe082/2] = 0xba98; hyperpac_ram[0xe084/2] = 0x7654; hyperpac_ram[0xe086/2] = 0x3210; } READ16_HANDLER ( _4in1_02_read ) { return 0x0202; } static DRIVER_INIT(4in1boot) { UINT8 *buffer; UINT8 *src = memory_region(REGION_CPU1); int len = memory_region_length(REGION_CPU1); /* strange order */ buffer = malloc_or_die(len); { int i; for (i = 0;i < len; i++) if (i&1) buffer[i] = BITSWAP8(src[i],6,7,5,4,3,2,1,0); else buffer[i] = src[i]; memcpy(src,buffer,len); free(buffer); } src = memory_region(REGION_CPU2); len = memory_region_length(REGION_CPU2); /* strange order */ buffer = malloc_or_die(len); { int i; for (i = 0;i < len; i++) buffer[i] = src[i^0x4000]; memcpy(src,buffer,len); free(buffer); } memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x200000, 0x200001, 0, 0, _4in1_02_read ); } static DRIVER_INIT(snowbro3) { UINT8 *buffer; UINT8 *src = memory_region(REGION_CPU1); int len = memory_region_length(REGION_CPU1); /* strange order */ buffer = malloc_or_die(len); { int i; for (i = 0;i < len; i++) buffer[i] = src[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,3,4,1,2,0)]; memcpy(src,buffer,len); free(buffer); } } static READ16_HANDLER( _3in1_read ) { return 0x0a0a; } static DRIVER_INIT( 3in1semi ) { memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x200000, 0x200001, 0, 0, _3in1_read ); } static READ16_HANDLER( cookbib3_read ) { return 0x2a2a; } static DRIVER_INIT( cookbib3 ) { memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x200000, 0x200001, 0, 0, cookbib3_read ); } GAME( 1990, snowbros, 0, snowbros, snowbros, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 1)", 0 ) GAME( 1990, snowbroa, snowbros, snowbros, snowbros, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 2)", 0 ) GAME( 1990, snowbrob, snowbros, snowbros, snowbros, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 3)", 0 ) GAME( 1990, snowbroc, snowbros, snowbros, snowbros, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (set 4)", 0 ) GAME( 1990, snowbroj, snowbros, snowbros, snowbroj, 0, ROT0, "Toaplan", "Snow Bros. - Nick & Tom (Japan)", 0 ) GAME( 1990, wintbob, snowbros, wintbob, snowbros, 0, ROT0, "[Toaplan] (Sakowa Project Korea bootleg)", "The Winter Bobble (bootleg of Snow Bros.)", 0 ) GAME( 1995, honeydol, 0, honeydol, honeydol, 0, ROT0, "Barko Corp.", "Honey Dolls", 0 ) // based on snowbros code.. GAME( 1995, twinadv, 0, twinadv, twinadv, 0, ROT0, "Barko Corp.", "Twin Adventure (World)", 0 ) GAME( 1995, twinadvk, twinadv, twinadv, twinadv, 0, ROT0, "Barko Corp.", "Twin Adventure (Korea)", 0 ) GAME( 1995, hyperpac, 0, semicom, hyperpac, hyperpac, ROT0, "SemiCom", "Hyper Pacman", 0 ) GAME( 1995, hyperpcb, hyperpac, semicom, hyperpac, 0, ROT0, "bootleg", "Hyper Pacman (bootleg)", 0 ) GAME( 1996, cookbib2, 0, semiprot, cookbib2, cookbib2, ROT0, "SemiCom", "Cookie & Bibi 2", 0 ) GAME( 1996, toppyrap, 0, semiprot, toppyrap, 0, ROT0, "SemiCom", "Toppy & Rappy", 0 ) GAME( 1997, cookbib3, 0, semiprot, cookbib3, cookbib3, ROT0, "SemiCom", "Cookie & Bibi 3", 0 ) GAME( 1997, 3in1semi, 0, semiprot, moremore, 3in1semi, ROT0, "SemiCom", "XESS - The New Revolution (SemiCom 3-in-1)", 0 ) GAME( 1997, twinkle, 0, semiprot, moremore, 0, ROT0, "SemiCom", "Twinkle", 0 ) GAME( 1999, moremore, 0, semiprot, moremore, moremorp, ROT0, "SemiCom / Exit", "More More", 0 ) GAME( 1999, moremorp, 0, semiprot, moremore, moremorp, ROT0, "SemiCom / Exit", "More More Plus", 0 ) GAME( 2002, 4in1boot, 0, _4in1, 4in1boot, 4in1boot, ROT0, "K1 Soft", "Puzzle King (includes bootleg of Snow Bros.)" , 0) GAME( 2002, snowbro3, snowbros, snowbro3, snowbroj, snowbro3, ROT0, "Syrmex (bootleg/hack)", "Snow Brothers 3 - Magical Adventure", GAME_IMPERFECT_SOUND ) // its basically snowbros code?... GAME( 1993, finalttr, 0, finalttr, finalttr, 0, ROT0, "Jeil Computer System", "Final Tetris", 0 )