86
86
static READ8_HANDLER( topgunbl_rotary_r )
88
return (1 << input_port_read_safe(space->machine, offset ? "DIAL1" : "DIAL0", 0x00)) ^ 0xff;
88
return (1 << input_port_read_safe(space->machine(), offset ? "DIAL1" : "DIAL0", 0x00)) ^ 0xff;
91
91
static WRITE8_HANDLER( jackal_flipscreen_w )
93
jackal_state *state = space->machine->driver_data<jackal_state>();
94
state->irq_enable = data & 0x02;
95
flip_screen_set(space->machine, data & 0x08);
93
jackal_state *state = space->machine().driver_data<jackal_state>();
94
state->m_irq_enable = data & 0x02;
95
flip_screen_set(space->machine(), data & 0x08);
98
98
static READ8_HANDLER( jackal_zram_r )
100
jackal_state *state = space->machine->driver_data<jackal_state>();
101
return state->rambank[0x0020 + offset];
100
jackal_state *state = space->machine().driver_data<jackal_state>();
101
return state->m_rambank[0x0020 + offset];
105
105
static READ8_HANDLER( jackal_voram_r )
107
jackal_state *state = space->machine->driver_data<jackal_state>();
108
return state->rambank[0x2000 + offset];
107
jackal_state *state = space->machine().driver_data<jackal_state>();
108
return state->m_rambank[0x2000 + offset];
112
112
static READ8_HANDLER( jackal_spriteram_r )
114
jackal_state *state = space->machine->driver_data<jackal_state>();
115
return state->spritebank[0x3000 + offset];
114
jackal_state *state = space->machine().driver_data<jackal_state>();
115
return state->m_spritebank[0x3000 + offset];
119
119
static WRITE8_HANDLER( jackal_rambank_w )
121
jackal_state *state = space->machine->driver_data<jackal_state>();
122
UINT8 *rgn = space->machine->region("master")->base();
121
jackal_state *state = space->machine().driver_data<jackal_state>();
122
UINT8 *rgn = space->machine().region("master")->base();
125
125
popmessage("jackal_rambank_w %02x", data);
127
coin_counter_w(space->machine, 0, data & 0x01);
128
coin_counter_w(space->machine, 1, data & 0x02);
127
coin_counter_w(space->machine(), 0, data & 0x01);
128
coin_counter_w(space->machine(), 1, data & 0x02);
130
state->spritebank = &rgn[((data & 0x08) << 13)];
131
state->rambank = &rgn[((data & 0x10) << 12)];
132
memory_set_bank(space->machine, "bank1", (data & 0x20) ? 1 : 0);
130
state->m_spritebank = &rgn[((data & 0x08) << 13)];
131
state->m_rambank = &rgn[((data & 0x10) << 12)];
132
memory_set_bank(space->machine(), "bank1", (data & 0x20) ? 1 : 0);
136
136
static WRITE8_HANDLER( jackal_zram_w )
138
jackal_state *state = space->machine->driver_data<jackal_state>();
139
state->rambank[0x0020 + offset] = data;
138
jackal_state *state = space->machine().driver_data<jackal_state>();
139
state->m_rambank[0x0020 + offset] = data;
143
143
static WRITE8_HANDLER( jackal_voram_w )
145
jackal_state *state = space->machine->driver_data<jackal_state>();
145
jackal_state *state = space->machine().driver_data<jackal_state>();
147
147
if ((offset & 0xf800) == 0)
148
jackal_mark_tile_dirty(space->machine, offset & 0x3ff);
148
jackal_mark_tile_dirty(space->machine(), offset & 0x3ff);
150
state->rambank[0x2000 + offset] = data;
150
state->m_rambank[0x2000 + offset] = data;
154
154
static WRITE8_HANDLER( jackal_spriteram_w )
156
jackal_state *state = space->machine->driver_data<jackal_state>();
157
state->spritebank[0x3000 + offset] = data;
156
jackal_state *state = space->machine().driver_data<jackal_state>();
157
state->m_spritebank[0x3000 + offset] = data;
160
160
/*************************************
164
164
*************************************/
166
static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 8 )
167
AM_RANGE(0x0000, 0x0003) AM_RAM AM_BASE_MEMBER(jackal_state, videoctrl) // scroll + other things
166
static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8 )
167
AM_RANGE(0x0000, 0x0003) AM_RAM AM_BASE_MEMBER(jackal_state, m_videoctrl) // scroll + other things
168
168
AM_RANGE(0x0004, 0x0004) AM_WRITE(jackal_flipscreen_w)
169
169
AM_RANGE(0x0010, 0x0010) AM_READ_PORT("DSW1")
170
170
AM_RANGE(0x0011, 0x0011) AM_READ_PORT("IN1")
182
182
AM_RANGE(0xc000, 0xffff) AM_ROM
185
static ADDRESS_MAP_START( slave_map, ADDRESS_SPACE_PROGRAM, 8 )
185
static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8 )
186
186
AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
187
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(jackal_state, paletteram) // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff
187
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(jackal_state, m_paletteram) // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff
188
188
AM_RANGE(0x6000, 0x605f) AM_RAM // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff)
189
189
AM_RANGE(0x6060, 0x7fff) AM_RAM AM_SHARE("share1")
190
190
AM_RANGE(0x8000, 0xffff) AM_ROM
336
336
static MACHINE_START( jackal )
338
jackal_state *state = machine->driver_data<jackal_state>();
339
UINT8 *ROM = machine->region("master")->base();
338
jackal_state *state = machine.driver_data<jackal_state>();
339
UINT8 *ROM = machine.region("master")->base();
341
341
memory_configure_bank(machine, "bank1", 0, 1, &ROM[0x04000], 0x8000);
342
342
memory_configure_bank(machine, "bank1", 1, 1, &ROM[0x14000], 0x8000);
343
343
memory_set_bank(machine, "bank1", 0);
345
state->mastercpu = machine->device("master");
346
state->slavecpu = machine->device("slave");
345
state->m_mastercpu = machine.device("master");
346
state->m_slavecpu = machine.device("slave");
348
state_save_register_global(machine, state->irq_enable);
348
state->save_item(NAME(state->m_irq_enable));
351
351
static MACHINE_RESET( jackal )
353
jackal_state *state = machine->driver_data<jackal_state>();
354
UINT8 *rgn = machine->region("master")->base();
353
jackal_state *state = machine.driver_data<jackal_state>();
354
UINT8 *rgn = machine.region("master")->base();
356
356
// HACK: running at the nominal clock rate, music stops working
357
357
// at the beginning of the game. This fixes it.
358
machine->device("slave")->set_clock_scale(1.2f);
360
state->rambank = rgn;
361
state->spritebank = rgn;
363
state->irq_enable = 0;
358
machine.device("slave")->set_clock_scale(1.2f);
360
state->m_rambank = rgn;
361
state->m_spritebank = rgn;
363
state->m_irq_enable = 0;
366
366
static MACHINE_CONFIG_START( jackal, jackal_state )