107
static WRITE16_HANDLER( snowbros_irq4_ack_w )
109
cputag_set_input_line(space->machine(), "maincpu", 4, CLEAR_LINE);
112
static WRITE16_HANDLER( snowbros_irq3_ack_w )
114
cputag_set_input_line(space->machine(), "maincpu", 3, CLEAR_LINE);
117
static WRITE16_HANDLER( snowbros_irq2_ack_w )
119
cputag_set_input_line(space->machine(), "maincpu", 2, CLEAR_LINE);
108
WRITE16_MEMBER(snowbros_state::snowbros_irq4_ack_w)
110
cputag_set_input_line(machine(), "maincpu", 4, CLEAR_LINE);
113
WRITE16_MEMBER(snowbros_state::snowbros_irq3_ack_w)
115
cputag_set_input_line(machine(), "maincpu", 3, CLEAR_LINE);
118
WRITE16_MEMBER(snowbros_state::snowbros_irq2_ack_w)
120
cputag_set_input_line(machine(), "maincpu", 2, CLEAR_LINE);
122
123
static TIMER_DEVICE_CALLBACK( snowbros_irq )
173
174
/* Sound Routines */
175
static READ16_HANDLER( snowbros_68000_sound_r )
176
READ16_MEMBER(snowbros_state::snowbros_68000_sound_r)
177
return soundlatch_r(space,offset);
178
return soundlatch_byte_r(space,offset);
181
static WRITE16_HANDLER( snowbros_68000_sound_w )
182
WRITE16_MEMBER(snowbros_state::snowbros_68000_sound_w)
183
184
if (ACCESSING_BITS_0_7)
185
soundlatch_w(space, offset, data & 0xff);
186
cputag_set_input_line(space->machine(), "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
186
soundlatch_byte_w(space, offset, data & 0xff);
187
cputag_set_input_line(machine(), "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
190
static WRITE16_HANDLER( semicom_soundcmd_w )
191
WRITE16_MEMBER(snowbros_state::semicom_soundcmd_w)
192
if (ACCESSING_BITS_0_7) soundlatch_w(space,0,data & 0xff);
193
if (ACCESSING_BITS_0_7) soundlatch_byte_w(space,0,data & 0xff);
195
196
/* Snow Bros Memory Map */
197
static ADDRESS_MAP_START( snowbros_map, AS_PROGRAM, 16 )
198
static ADDRESS_MAP_START( snowbros_map, AS_PROGRAM, 16, snowbros_state )
198
199
AM_RANGE(0x000000, 0x03ffff) AM_ROM
199
200
AM_RANGE(0x100000, 0x103fff) AM_RAM
200
201
AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
203
204
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
204
205
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
205
206
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
206
AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
207
AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", pandora_spriteram_LSB_r, pandora_spriteram_LSB_w)
207
AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
208
AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE_LEGACY("pandora", pandora_spriteram_LSB_r, pandora_spriteram_LSB_w)
208
209
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
209
210
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
210
211
AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
213
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
214
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, snowbros_state )
214
215
AM_RANGE(0x0000, 0x7fff) AM_ROM
215
216
AM_RANGE(0x8000, 0x87ff) AM_RAM
218
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8 )
219
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, snowbros_state )
219
220
ADDRESS_MAP_GLOBAL_MASK(0xff)
220
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
221
AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, soundlatch_w) /* goes back to the main CPU, checked during boot */
221
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE_LEGACY("ymsnd", ym3812_r, ym3812_w)
222
AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_byte_r, soundlatch_byte_w) /* goes back to the main CPU, checked during boot */
226
static READ8_HANDLER( prot_io_r )
227
READ8_MEMBER(snowbros_state::prot_io_r)
269
269
/* Semicom AT89C52 MCU */
270
static ADDRESS_MAP_START( protection_map, AS_PROGRAM, 8 )
270
static ADDRESS_MAP_START( protection_map, AS_PROGRAM, 8, snowbros_state )
271
271
AM_RANGE(0x0000, 0x1fff) AM_ROM
274
static ADDRESS_MAP_START( protection_iomap, AS_IO, 8 )
274
static ADDRESS_MAP_START( protection_iomap, AS_IO, 8, snowbros_state )
275
275
AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READWRITE(prot_io_r,prot_io_w)
278
278
/* Winter Bobble - bootleg GFX chip */
280
static ADDRESS_MAP_START( wintbob_map, AS_PROGRAM, 16 )
280
static ADDRESS_MAP_START( wintbob_map, AS_PROGRAM, 16, snowbros_state )
281
281
AM_RANGE(0x000000, 0x03ffff) AM_ROM
282
282
AM_RANGE(0x100000, 0x103fff) AM_RAM
283
283
AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
307
307
AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW1")
308
308
AM_RANGE(0x900002, 0x900003) AM_READ_PORT("DSW2")
309
309
AM_RANGE(0x900004, 0x900005) AM_READ_PORT("SYSTEM")
310
AM_RANGE(0xa00000, 0xa007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
311
AM_RANGE(0xb00000, 0xb01fff) AM_RAM AM_BASE_SIZE_MEMBER(snowbros_state, m_bootleg_spriteram16, m_spriteram_size)
310
AM_RANGE(0xa00000, 0xa007ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
311
AM_RANGE(0xb00000, 0xb01fff) AM_RAM AM_SHARE("spriteram16b")
314
static ADDRESS_MAP_START( honeydol_sound_map, AS_PROGRAM, 8 )
314
static ADDRESS_MAP_START( honeydol_sound_map, AS_PROGRAM, 8, snowbros_state )
315
315
AM_RANGE(0x0000, 0x7fff) AM_ROM
316
316
AM_RANGE(0x8000, 0x87ff) AM_RAM
317
AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
317
AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_device, read, write)
320
static ADDRESS_MAP_START( honeydol_sound_io_map, AS_IO, 8 )
320
static ADDRESS_MAP_START( honeydol_sound_io_map, AS_IO, 8, snowbros_state )
321
321
ADDRESS_MAP_GLOBAL_MASK(0xff)
322
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w) // not connected?
323
AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, soundlatch_w) /* goes back to the main CPU, checked during boot */
322
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE_LEGACY("ymsnd", ym3812_r, ym3812_w) // not connected?
323
AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_byte_r, soundlatch_byte_w) /* goes back to the main CPU, checked during boot */
326
326
/* Twin Adventure */
328
static WRITE16_HANDLER( twinadv_68000_sound_w )
328
WRITE16_MEMBER(snowbros_state::twinadv_68000_sound_w)
330
330
if (ACCESSING_BITS_0_7)
332
soundlatch_w(space, offset, data & 0xff);
333
cputag_set_input_line(space->machine(), "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
332
soundlatch_byte_w(space, offset, data & 0xff);
333
cputag_set_input_line(machine(), "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
337
static ADDRESS_MAP_START( twinadv_map, AS_PROGRAM, 16 )
337
static ADDRESS_MAP_START( twinadv_map, AS_PROGRAM, 16, snowbros_state )
338
338
AM_RANGE(0x000000, 0x03ffff) AM_ROM
339
339
AM_RANGE(0x100000, 0x10ffff) AM_RAM
340
340
AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
378
static ADDRESS_MAP_START( hyperpac_map, AS_PROGRAM, 16 )
378
static ADDRESS_MAP_START( hyperpac_map, AS_PROGRAM, 16, snowbros_state )
379
379
AM_RANGE(0x000000, 0x0fffff) AM_ROM
380
AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE_MEMBER(snowbros_state, m_hyperpac_ram)
380
AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("hyperpac_ram")
381
381
AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w)
382
382
// AM_RANGE(0x400000, 0x400001) ???
383
383
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
384
384
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
385
385
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
387
AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
388
AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", pandora_spriteram_LSB_r,pandora_spriteram_LSB_w)
387
AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
388
AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE_LEGACY("pandora", pandora_spriteram_LSB_r,pandora_spriteram_LSB_w)
389
389
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
390
390
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
391
391
AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
394
static ADDRESS_MAP_START( hyperpac_sound_map, AS_PROGRAM, 8 )
394
static ADDRESS_MAP_START( hyperpac_sound_map, AS_PROGRAM, 8, snowbros_state )
395
395
AM_RANGE(0x0000, 0xcfff) AM_ROM
396
396
AM_RANGE(0xd000, 0xd7ff) AM_RAM
397
AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_r,ym2151_w)
398
AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
399
AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r)
397
AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w)
398
AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
399
AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_byte_r)
402
402
/* Same volume used for all samples at the Moment, could be right, we have no
403
403
way of knowing .. */
404
static READ16_HANDLER( sb3_sound_r )
404
READ16_MEMBER(snowbros_state::sb3_sound_r)
512
static ADDRESS_MAP_START( snowbros3_map, AS_PROGRAM, 16 )
512
static ADDRESS_MAP_START( snowbros3_map, AS_PROGRAM, 16, snowbros_state )
513
513
AM_RANGE( 0x000000, 0x03ffff) AM_ROM
514
514
AM_RANGE( 0x100000, 0x103fff) AM_RAM
515
515
AM_RANGE( 0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
516
516
AM_RANGE( 0x300000, 0x300001) AM_READ(sb3_sound_r) // ?
517
AM_RANGE( 0x300000, 0x300001) AM_DEVWRITE("oki", sb3_sound_w) // ?
517
AM_RANGE( 0x300000, 0x300001) AM_DEVWRITE_LEGACY("oki", sb3_sound_w) // ?
518
518
AM_RANGE( 0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
519
519
AM_RANGE( 0x500000, 0x500001) AM_READ_PORT("DSW1")
520
520
AM_RANGE( 0x500002, 0x500003) AM_READ_PORT("DSW2")
521
521
AM_RANGE( 0x500004, 0x500005) AM_READ_PORT("SYSTEM")
522
AM_RANGE( 0x600000, 0x6003ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC (paletteram)
523
AM_RANGE( 0x700000, 0x7021ff) AM_RAM AM_BASE_SIZE_MEMBER(snowbros_state, m_bootleg_spriteram16, m_spriteram_size)
522
AM_RANGE( 0x600000, 0x6003ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
523
AM_RANGE( 0x700000, 0x7021ff) AM_RAM AM_SHARE("spriteram16b")
524
524
AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */
525
525
AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */
526
526
AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */
558
558
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
559
559
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
560
560
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
561
PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x00)
562
PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x00)
563
PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x00)
564
PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x01)
561
PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x00)
562
PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x00)
563
PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x00)
564
PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x01)
565
565
PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
566
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x01)
567
PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x01)
566
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x01)
567
PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x01)
568
568
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
569
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x01)
570
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x01)
571
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x01)
572
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x01)
573
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x00)
574
PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x00)
575
PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x00)
576
PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW1", 0x01, PORTCOND_EQUALS, 0x00)
569
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x01)
570
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x01)
571
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x01)
572
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x01)
573
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x00)
574
PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x00)
575
PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x00)
576
PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSW1", 0x01, EQUALS, 0x00)
577
577
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
578
578
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
579
579
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
1111
1111
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1112
1112
INPUT_PORTS_END
1114
static INPUT_PORTS_START( twinkle )
1115
PORT_START("DSW1") /* 500000.w */
1116
PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
1117
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
1118
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1119
PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:2,3,4")
1120
PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) )
1121
PORT_DIPSETTING( 0x0002, DEF_STR( 4C_1C ) )
1122
PORT_DIPSETTING( 0x0004, DEF_STR( 3C_1C ) )
1123
PORT_DIPSETTING( 0x0006, DEF_STR( 2C_1C ) )
1124
PORT_DIPSETTING( 0x000e, DEF_STR( 1C_1C ) )
1125
PORT_DIPSETTING( 0x000a, DEF_STR( 2C_3C ) )
1126
PORT_DIPSETTING( 0x000c, DEF_STR( 1C_2C ) )
1127
PORT_DIPSETTING( 0x0008, DEF_STR( 1C_3C ) )
1128
PORT_DIPNAME( 0x0070, 0x0070, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:5,6,7") // this is what service mode lists, but I don't trust it.
1129
PORT_DIPSETTING( 0x0020, "Level 1" )
1130
PORT_DIPSETTING( 0x0010, "Level 2" )
1131
PORT_DIPSETTING( 0x0000, "Level 3" )
1132
PORT_DIPSETTING( 0x0070, "Level 4" )
1133
PORT_DIPSETTING( 0x0060, "Level 5" )
1134
PORT_DIPSETTING( 0x0050, "Level 6" )
1135
PORT_DIPSETTING( 0x0040, "Level 7" )
1136
PORT_DIPSETTING( 0x0030, "Level 8" )
1137
PORT_SERVICE_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW1:8" )
1138
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
1139
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
1140
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
1141
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
1142
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // jump
1143
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // fire
1144
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // test mode only?
1145
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1147
PORT_START("DSW2") /* 500002.w */
1148
PORT_DIPNAME( 0x0003, 0x0002, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") // unlisted in service mode
1149
PORT_DIPSETTING( 0x0000, "1" )
1150
PORT_DIPSETTING( 0x0003, "2" )
1151
PORT_DIPSETTING( 0x0002, "3" )
1152
PORT_DIPSETTING( 0x0001, "4" )
1153
PORT_DIPUNKNOWN_DIPLOC( 0x0004, 0x0000, "SW2:3" )
1154
PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0000, "SW2:4" )
1155
PORT_DIPNAME( 0x0010, 0x0010, "Pellet Animations" ) PORT_DIPLOCATION("SW2:5") // unlisted in service mode
1156
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
1157
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
1158
PORT_DIPUNKNOWN_DIPLOC( 0x0020, 0x0000, "SW2:6" )
1159
PORT_DIPUNKNOWN_DIPLOC( 0x0040, 0x0000, "SW2:7" )
1160
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:8")
1161
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
1162
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
1163
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
1164
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
1165
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
1166
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
1167
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) // jump
1168
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) // fire
1169
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) // test mode only?
1170
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1172
PORT_START("SYSTEM") /* 500004.w */
1173
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_START1 )
1174
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_START2 )
1175
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_COIN1 )
1176
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 )
1177
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1178
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1179
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1180
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
1114
1183
// don't trust the test mode! <-- Verified via actual game play: Demo Sounds, Coinage & Free Play
1115
1184
static INPUT_PORTS_START( pzlbreak )
1116
1185
PORT_START("DSW1") /* 500000.w */
2268
2337
static DRIVER_INIT( moremorp )
2270
2339
//snowbros_state *state = machine.driver_data<snowbros_state>();
2271
// UINT16 *PROTDATA = (UINT16*)machine.region("user1")->base();
2340
// UINT16 *PROTDATA = (UINT16*)state->memregion("user1")->base();
2274
2343
// for (i = 0;i < 0x200/2;i++)
2275
2344
// state->m_hyperpac_ram[0xf000/2 + i] = PROTDATA[i];
2277
2346
/* explicit check in the code */
2278
machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x200000, 0x200001, FUNC(moremorp_0a_read) );
2347
snowbros_state *state = machine.driver_data<snowbros_state>();
2348
machine.device("maincpu")->memory().space(AS_PROGRAM)->install_read_handler(0x200000, 0x200001, read16_delegate(FUNC(snowbros_state::moremorp_0a_read),state));
2282
2352
static DRIVER_INIT( cookbib2 )
2284
2354
//snowbros_state *state = machine.driver_data<snowbros_state>();
2285
// UINT16 *HCROM = (UINT16*)machine.region("maincpu")->base();
2286
// UINT16 *PROTDATA = (UINT16*)machine.region("user1")->base();
2355
// UINT16 *HCROM = (UINT16*)state->memregion("maincpu")->base();
2356
// UINT16 *PROTDATA = (UINT16*)state->memregion("user1")->base();
2288
2358
// state->m_hyperpac_ram[0xf000/2] = 0x46fc;
2289
2359
// state->m_hyperpac_ram[0xf002/2] = 0x2700;
2740
2813
GAME( 1996, toppyrap, 0, semiprot, toppyrap, 0, ROT0, "SemiCom", "Toppy & Rappy", 0 )
2741
2814
GAME( 1997, cookbib3, 0, semiprot, cookbib3, cookbib3, ROT0, "SemiCom", "Cookie & Bibi 3", 0 )
2742
2815
GAME( 1997, 3in1semi, 0, semiprot, moremore, 3in1semi, ROT0, "SemiCom", "XESS - The New Revolution (SemiCom 3-in-1)", 0 )
2743
GAME( 1997, twinkle, 0, semiprot, moremore, 0, ROT0, "SemiCom", "Twinkle", 0 )
2816
GAME( 1997, twinkle, 0, semiprot, twinkle, 0, ROT0, "SemiCom", "Twinkle", 0 )
2744
2817
GAME( 1997, pzlbreak, 0, semiprot, pzlbreak, pzlbreak, ROT0, "SemiCom", "Puzzle Break", 0 )
2745
2818
GAME( 1999, moremore, 0, semiprot, moremore, moremorp, ROT0, "SemiCom / Exit", "More More", 0 )
2746
2819
GAME( 1999, moremorp, 0, semiprot, moremore, moremorp, ROT0, "SemiCom / Exit", "More More Plus", 0 )