110
106
0xc8: Raster IRQ turned on (68k IRQ level 4)
111
107
0xd8: Raster IRQ turned on (68k IRQ level 3)
113
logerror("%08x: IRQ write %d %08x\n", cpu_get_pc(&space->device()), offset, data);
114
state->m_irq_mask = data & 0xff;
109
logerror("%08x: IRQ write %d %08x\n", cpu_get_pc(&space.device()), offset, data);
110
m_irq_mask = data & 0xff;
117
113
case 1: /* Raster IRQ scanline position, only valid for values between 1 & 239 (0 and 240-256 do NOT generate IRQ's) */
118
state->m_scanline = data & 0xff;
114
m_scanline = data & 0xff;
120
if (!BIT(state->m_irq_mask, 1) && state->m_scanline > 0 && state->m_scanline < 240)
121
state->m_raster_irq_timer->adjust(space->machine().primary_screen->time_until_pos(state->m_scanline), state->m_scanline);
116
if (!BIT(m_irq_mask, 1) && m_scanline > 0 && m_scanline < 240)
117
m_raster_irq_timer->adjust(machine().primary_screen->time_until_pos(m_scanline), m_scanline);
123
state->m_raster_irq_timer->reset();
119
m_raster_irq_timer->reset();
126
122
case 2: /* VBL irq ack */
130
logerror("%08x: Unmapped IRQ write %d %04x\n", cpu_get_pc(&space->device()), offset, data);
126
logerror("%08x: Unmapped IRQ write %d %04x\n", cpu_get_pc(&space.device()), offset, data);
133
static READ16_HANDLER( robocop2_prot_r )
129
READ16_MEMBER(cninja_state::robocop2_prot_r)
135
131
switch (offset << 1)
137
133
case 0x41a: /* Player 1 & 2 input ports */
138
return input_port_read(space->machine(), "IN0");
134
return ioport("IN0")->read();
139
135
case 0x320: /* Coins */
140
return input_port_read(space->machine(), "IN1");
136
return ioport("IN1")->read();
141
137
case 0x4e6: /* Dip switches */
142
return input_port_read(space->machine(), "DSW");
138
return ioport("DSW")->read();
143
139
case 0x504: /* PC: 6b6. b4, 2c, 36 written before read */
144
logerror("Protection PC %06x: warning - read unmapped memory address %04x\n", cpu_get_pc(&space->device()), offset);
140
logerror("Protection PC %06x: warning - read unmapped memory address %04x\n", cpu_get_pc(&space.device()), offset);
147
logerror("Protection PC %06x: warning - read unmapped memory address %04x\n", cpu_get_pc(&space->device()), offset);
143
logerror("Protection PC %06x: warning - read unmapped memory address %04x\n", cpu_get_pc(&space.device()), offset);
151
147
/**********************************************************************************/
153
static WRITE16_HANDLER( cninja_pf12_control_w )
155
cninja_state *state = space->machine().driver_data<cninja_state>();
156
space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos());
157
deco16ic_pf_control_w(state->m_deco_tilegen1, offset, data, mem_mask);
161
static WRITE16_HANDLER( cninja_pf34_control_w )
163
cninja_state *state = space->machine().driver_data<cninja_state>();
164
space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos());
165
deco16ic_pf_control_w(state->m_deco_tilegen2, offset, data, mem_mask);
169
static ADDRESS_MAP_START( cninja_map, AS_PROGRAM, 16 )
149
WRITE16_MEMBER(cninja_state::cninja_pf12_control_w)
151
machine().primary_screen->update_partial(machine().primary_screen->vpos());
152
deco16ic_pf_control_w(m_deco_tilegen1, offset, data, mem_mask);
156
WRITE16_MEMBER(cninja_state::cninja_pf34_control_w)
158
machine().primary_screen->update_partial(machine().primary_screen->vpos());
159
deco16ic_pf_control_w(m_deco_tilegen2, offset, data, mem_mask);
163
static ADDRESS_MAP_START( cninja_map, AS_PROGRAM, 16, cninja_state )
170
164
AM_RANGE(0x000000, 0x0bffff) AM_ROM
172
166
AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w)
173
AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
174
AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
175
AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_BASE_MEMBER(cninja_state, m_pf1_rowscroll)
176
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf2_rowscroll)
167
AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
168
AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
169
AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll")
170
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll")
178
172
AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w)
179
AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
180
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
181
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf3_rowscroll)
182
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf4_rowscroll)
173
AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
174
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
175
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
176
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
184
AM_RANGE(0x184000, 0x187fff) AM_RAM AM_BASE_MEMBER(cninja_state, m_ram)
178
AM_RANGE(0x184000, 0x187fff) AM_RAM AM_SHARE("ram")
185
179
AM_RANGE(0x190000, 0x190007) AM_READWRITE(cninja_irq_r, cninja_irq_w)
186
AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram)
180
AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE_LEGACY("deco_common", decocomn_nonbuffered_palette_w) AM_SHARE("paletteram")
188
AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */
189
AM_RANGE(0x1b4000, 0x1b4001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */
190
AM_RANGE(0x1bc000, 0x1bc0ff) AM_WRITE(deco16_104_cninja_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */
191
AM_RANGE(0x1bc000, 0x1bcfff) AM_READ(deco16_104_cninja_prot_r) AM_BASE(&deco16_prot_ram) /* Protection device */
182
AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
183
AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
184
AM_RANGE(0x1bc000, 0x1bc0ff) AM_WRITE_LEGACY(deco16_104_cninja_prot_w) AM_BASE_LEGACY(&deco16_prot_ram) /* Protection writes */
185
AM_RANGE(0x1bc000, 0x1bcfff) AM_READ_LEGACY(deco16_104_cninja_prot_r) AM_BASE_LEGACY(&deco16_prot_ram) /* Protection device */
193
187
AM_RANGE(0x308000, 0x308fff) AM_WRITENOP /* Bootleg only */
196
static ADDRESS_MAP_START( cninjabl_map, AS_PROGRAM, 16 )
190
static ADDRESS_MAP_START( cninjabl_map, AS_PROGRAM, 16, cninja_state )
197
191
AM_RANGE(0x000000, 0x0bffff) AM_ROM
199
AM_RANGE(0x138000, 0x1387ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* bootleg sprite-ram (sprites rewritten here in new format) */
193
AM_RANGE(0x138000, 0x1387ff) AM_RAM AM_SHARE("spriteram") /* bootleg sprite-ram (sprites rewritten here in new format) */
201
195
AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w)
202
AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
203
AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
204
AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_BASE_MEMBER(cninja_state, m_pf1_rowscroll)
205
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf2_rowscroll)
196
AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
197
AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
198
AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll")
199
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll")
207
201
AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w) // not used / incorrect on this
208
AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
209
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
210
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf3_rowscroll)
211
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf4_rowscroll)
202
AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
203
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
204
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
205
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
213
207
AM_RANGE(0x17ff22, 0x17ff23) AM_READ_PORT("DSW")
214
208
AM_RANGE(0x17ff28, 0x17ff29) AM_READ_PORT("IN1")
218
212
AM_RANGE(0x180000, 0x187fff) AM_RAM // more ram on bootleg?
220
214
AM_RANGE(0x190000, 0x190007) AM_READWRITE(cninja_irq_r, cninja_irq_w)
221
AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram)
215
AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE_LEGACY("deco_common", decocomn_nonbuffered_palette_w) AM_SHARE("paletteram")
223
AM_RANGE(0x1b4000, 0x1b4001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */
217
AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
226
static ADDRESS_MAP_START( edrandy_map, AS_PROGRAM, 16 )
220
static ADDRESS_MAP_START( edrandy_map, AS_PROGRAM, 16, cninja_state )
227
221
AM_RANGE(0x000000, 0x0fffff) AM_ROM
229
223
AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w)
230
AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
231
AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
232
AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf1_rowscroll)
233
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf2_rowscroll)
224
AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
225
AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
226
AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_SHARE("pf1_rowscroll")
227
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll")
235
229
AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w)
236
AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
237
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
238
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf3_rowscroll)
239
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf4_rowscroll)
230
AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
231
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
232
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
233
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
241
AM_RANGE(0x188000, 0x189fff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram)
242
AM_RANGE(0x194000, 0x197fff) AM_RAM AM_BASE_MEMBER(cninja_state, m_ram) /* Main ram */
243
AM_RANGE(0x198000, 0x1987ff) AM_READWRITE(deco16_60_prot_r, deco16_60_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */
235
AM_RANGE(0x188000, 0x189fff) AM_RAM_DEVWRITE_LEGACY("deco_common", decocomn_nonbuffered_palette_w) AM_SHARE("paletteram")
236
AM_RANGE(0x194000, 0x197fff) AM_RAM AM_SHARE("ram") /* Main ram */
237
AM_RANGE(0x198000, 0x1987ff) AM_READWRITE_LEGACY(deco16_60_prot_r, deco16_60_prot_w) AM_BASE_LEGACY(&deco16_prot_ram) /* Protection device */
244
238
AM_RANGE(0x199550, 0x199551) AM_WRITENOP /* Looks like a bug in game code, a protection write is referenced off a5 instead of a6 and ends up here */
245
239
AM_RANGE(0x199750, 0x199751) AM_WRITENOP /* Looks like a bug in game code, a protection write is referenced off a5 instead of a6 and ends up here */
247
241
AM_RANGE(0x1a4000, 0x1a4007) AM_READWRITE(cninja_irq_r, cninja_irq_w)
248
AM_RANGE(0x1ac000, 0x1ac001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */
249
AM_RANGE(0x1bc000, 0x1bc7ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */
242
AM_RANGE(0x1ac000, 0x1ac001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
243
AM_RANGE(0x1bc000, 0x1bc7ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
250
244
AM_RANGE(0x1bc800, 0x1bcfff) AM_WRITENOP /* Another bug in game code? Sprite list can overrun. Doesn't seem to mirror */
254
static ADDRESS_MAP_START( robocop2_map, AS_PROGRAM, 16 )
248
static ADDRESS_MAP_START( robocop2_map, AS_PROGRAM, 16, cninja_state )
255
249
AM_RANGE(0x000000, 0x0fffff) AM_ROM
257
251
AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w)
258
AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
259
AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
260
AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf1_rowscroll)
261
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf2_rowscroll)
252
AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
253
AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
254
AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_SHARE("pf1_rowscroll")
255
AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll")
263
257
AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w)
264
AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
265
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
266
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf3_rowscroll)
267
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf4_rowscroll)
258
AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
259
AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
260
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
261
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
269
AM_RANGE(0x180000, 0x1807ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
270
// AM_RANGE(0x18c000, 0x18c0ff) AM_WRITE(cninja_loopback_w) /* Protection writes */
263
AM_RANGE(0x180000, 0x1807ff) AM_RAM AM_SHARE("spriteram")
264
// AM_RANGE(0x18c000, 0x18c0ff) AM_WRITE_LEGACY(cninja_loopback_w) /* Protection writes */
271
265
AM_RANGE(0x18c000, 0x18c7ff) AM_READ(robocop2_prot_r) /* Protection device */
272
266
AM_RANGE(0x18c064, 0x18c065) AM_WRITE(cninja_sound_w)
273
AM_RANGE(0x198000, 0x198001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */
274
AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram)
267
AM_RANGE(0x198000, 0x198001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
268
AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE_LEGACY("deco_common", decocomn_nonbuffered_palette_w) AM_SHARE("paletteram")
275
269
AM_RANGE(0x1b0000, 0x1b0007) AM_READWRITE(cninja_irq_r, cninja_irq_w)
276
AM_RANGE(0x1b8000, 0x1bbfff) AM_RAM AM_BASE_MEMBER(cninja_state, m_ram) /* Main ram */
277
AM_RANGE(0x1f0000, 0x1f0001) AM_DEVWRITE("deco_common", decocomn_priority_w)
270
AM_RANGE(0x1b8000, 0x1bbfff) AM_RAM AM_SHARE("ram") /* Main ram */
271
AM_RANGE(0x1f0000, 0x1f0001) AM_DEVWRITE_LEGACY("deco_common", decocomn_priority_w)
278
272
AM_RANGE(0x1f8000, 0x1f8001) AM_READ_PORT("DSW3") /* Dipswitch #3 */
281
static ADDRESS_MAP_START( mutantf_map, AS_PROGRAM, 16 )
275
static ADDRESS_MAP_START( mutantf_map, AS_PROGRAM, 16, cninja_state )
282
276
AM_RANGE(0x000000, 0x07ffff) AM_ROM
283
277
AM_RANGE(0x100000, 0x103fff) AM_RAM
284
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
285
AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2)
286
AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram)
287
AM_RANGE(0x180000, 0x180001) AM_DEVWRITE("deco_common", decocomn_priority_w)
278
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
279
AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram2")
280
AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE_LEGACY("deco_common", decocomn_nonbuffered_palette_w) AM_SHARE("paletteram")
281
AM_RANGE(0x180000, 0x180001) AM_DEVWRITE_LEGACY("deco_common", decocomn_priority_w)
288
282
AM_RANGE(0x180002, 0x180003) AM_WRITENOP /* VBL irq ack */
289
AM_RANGE(0x1a0000, 0x1a07ff) AM_READWRITE(deco16_66_prot_r, deco16_66_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */
290
AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(buffer_spriteram16_w) AM_DEVREAD("deco_common", decocomn_71_r)
291
AM_RANGE(0x1e0000, 0x1e0001) AM_WRITE(buffer_spriteram16_2_w)
283
AM_RANGE(0x1a0000, 0x1a07ff) AM_READWRITE_LEGACY(deco16_66_prot_r, deco16_66_prot_w) AM_BASE_LEGACY(&deco16_prot_ram) /* Protection device */
284
AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) AM_DEVREAD_LEGACY("deco_common", decocomn_71_r)
285
AM_RANGE(0x1e0000, 0x1e0001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write)
293
287
AM_RANGE(0x300000, 0x30000f) AM_WRITE(cninja_pf12_control_w)
294
AM_RANGE(0x304000, 0x305fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
295
AM_RANGE(0x306000, 0x307fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
296
AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf1_rowscroll)
297
AM_RANGE(0x30a000, 0x30a7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf2_rowscroll)
288
AM_RANGE(0x304000, 0x305fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
289
AM_RANGE(0x306000, 0x307fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
290
AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_SHARE("pf1_rowscroll")
291
AM_RANGE(0x30a000, 0x30a7ff) AM_RAM AM_SHARE("pf2_rowscroll")
299
293
AM_RANGE(0x310000, 0x31000f) AM_WRITE(cninja_pf34_control_w)
300
AM_RANGE(0x314000, 0x315fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
301
AM_RANGE(0x316000, 0x317fff) AM_DEVREADWRITE("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
302
AM_RANGE(0x318000, 0x3187ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf3_rowscroll)
303
AM_RANGE(0x31a000, 0x31a7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf4_rowscroll)
294
AM_RANGE(0x314000, 0x315fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf1_data_r, deco16ic_pf1_data_w)
295
AM_RANGE(0x316000, 0x317fff) AM_DEVREADWRITE_LEGACY("tilegen2", deco16ic_pf2_data_r, deco16ic_pf2_data_w)
296
AM_RANGE(0x318000, 0x3187ff) AM_RAM AM_SHARE("pf3_rowscroll")
297
AM_RANGE(0x31a000, 0x31a7ff) AM_RAM AM_SHARE("pf4_rowscroll")
305
299
AM_RANGE(0xad00ac, 0xad00ff) AM_READNOP /* Reads from here seem to be a game code bug */
308
302
/******************************************************************************/
310
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
304
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cninja_state )
311
305
AM_RANGE(0x000000, 0x00ffff) AM_ROM
312
AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
313
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_r, ym2151_w)
314
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE_MODERN("oki1", okim6295_device, read, write)
315
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE_MODERN("oki2", okim6295_device, read, write)
316
AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
306
AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE_LEGACY("ym1", ym2203_r, ym2203_w)
307
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ym2", ym2151_r, ym2151_w)
308
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
309
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
310
AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
317
311
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
318
AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
319
AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
312
AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE_LEGACY(h6280_timer_w)
313
AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE_LEGACY(h6280_irq_status_w)
322
static ADDRESS_MAP_START( sound_map_mutantf, AS_PROGRAM, 8 )
316
static ADDRESS_MAP_START( sound_map_mutantf, AS_PROGRAM, 8, cninja_state )
323
317
AM_RANGE(0x000000, 0x00ffff) AM_ROM
324
318
AM_RANGE(0x100000, 0x100001) AM_READNOP AM_WRITENOP
325
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
326
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE_MODERN("oki1", okim6295_device, read, write)
327
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE_MODERN("oki2", okim6295_device, read, write)
328
AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
319
AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
320
AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
321
AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
322
AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_byte_r)
329
323
AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8")
330
AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
331
AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
324
AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE_LEGACY(h6280_timer_w)
325
AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE_LEGACY(h6280_irq_status_w)
334
static ADDRESS_MAP_START( stoneage_s_map, AS_PROGRAM, 8 )
328
static ADDRESS_MAP_START( stoneage_s_map, AS_PROGRAM, 8, cninja_state )
335
329
AM_RANGE(0x0000, 0x7fff) AM_ROM
336
330
AM_RANGE(0x8000, 0x87ff) AM_RAM
337
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
338
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
339
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE_MODERN("oki1", okim6295_device, read, write)
331
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
332
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
333
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
342
336
/***********************************************************
1353
1348
ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) ) /* Priority Unused */
1351
ROM_START( cninjaa )
1352
ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
1353
ROM_LOAD16_BYTE( "1.1k", 0x00000, 0x20000, CRC(a6c40959) SHA1(01d223b76a7798d5bd8b542b9ce8e3ca203205be) )
1354
ROM_LOAD16_BYTE( "4.3k", 0x00001, 0x20000, CRC(2e01d1fd) SHA1(14ba377c86535c409b7b01deddf6fb5681fa3397) )
1355
ROM_LOAD16_BYTE( "2.2j", 0x40000, 0x20000, CRC(18f0527c) SHA1(17b7ea68909c7c8b819578e2039f5be4a640ea75) )
1356
ROM_LOAD16_BYTE( "5.3j", 0x40001, 0x20000, CRC(ea4b6d53) SHA1(263319750524756319587b6e51dfead0265809cb) )
1357
ROM_LOAD16_BYTE( "gn-00.rom", 0x80000, 0x20000, CRC(0b110b16) SHA1(a967c8aeae3f0cee1f354583cf26ee736636aaf8) )
1358
ROM_LOAD16_BYTE( "gn-03.rom", 0x80001, 0x20000, CRC(1e28e697) SHA1(2313e97f3a34892dfdc338944c0f00538fcae800) )
1360
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
1361
ROM_LOAD( "gl-07.rom", 0x00000, 0x10000, CRC(ca8bef96) SHA1(fcdbd598c85e339a3389a2ef58cf2d5b3a2779af) )
1363
ROM_REGION( 0x020000, "gfx1", 0 )
1364
ROM_LOAD16_BYTE( "gl-08.rom", 0x00001, 0x10000, CRC(33a2b400) SHA1(fdb8de315f33705719c0ac03a61fb56ffbfdf597) ) /* chars */
1365
ROM_LOAD16_BYTE( "gl-09.rom", 0x00000, 0x10000, CRC(5a2d4752) SHA1(617dd10a99b5b55ca64dcdd22a0f133b0d6b770d) )
1367
ROM_REGION( 0x080000, "gfx2", 0 )
1368
ROM_LOAD( "mag-02.rom", 0x000000, 0x80000, CRC(de89c69a) SHA1(b41bdf859854b5541c7eae7cd541b910cea1f839) ) /* tiles 3 */
1370
ROM_REGION( 0x100000, "gfx3", 0 )
1371
ROM_LOAD( "mag-00.rom", 0x000000, 0x40000, CRC(a8f05d33) SHA1(a1330bc9ca4648219403db087622badfc632b47d) ) /* tiles 1 */
1372
ROM_CONTINUE( 0x080000, 0x40000 )
1373
ROM_LOAD( "mag-01.rom", 0x040000, 0x40000, CRC(5b399eed) SHA1(490f8f9c0c557b0ba94c6019e3fe680641a0787e) ) /* tiles 2 */
1374
ROM_CONTINUE( 0x0c0000, 0x40000 )
1376
ROM_REGION( 0x200000, "gfx4", 0 )
1377
ROM_LOAD16_BYTE( "mag-03.rom", 0x000000, 0x80000, CRC(2220eb9f) SHA1(bdf0bd6e6ba375f0770b9d08a7efa32201cbb6ef) ) /* sprites */
1378
ROM_LOAD16_BYTE( "mag-05.rom", 0x000001, 0x80000, CRC(56a53254) SHA1(10940cfdc6fbe9013865107de3394ca7f782d9c7) )
1379
ROM_LOAD16_BYTE( "mag-04.rom", 0x100000, 0x80000, CRC(144b94cc) SHA1(d982508608942a714b428a2b721bf24e1627cbb6) )
1380
ROM_LOAD16_BYTE( "mag-06.rom", 0x100001, 0x80000, CRC(82d44749) SHA1(c471fa573e00c2f8ae44068439ba6d849a124c68) )
1382
ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */
1383
ROM_LOAD( "gl-06.rom", 0x00000, 0x20000, CRC(d92e519d) SHA1(08238f12bf7058a3965ab6348b468e3d35d4cd23) )
1385
ROM_REGION( 0x80000, "oki2", 0 ) /* Extra Oki samples */
1386
ROM_LOAD( "mag-07.rom", 0x00000, 0x80000, CRC(08eb5264) SHA1(3e33085f00b758acfc78034dc9a75fd6921fc3fe) ) /* banked */
1388
ROM_REGION( 1024, "proms", 0 )
1389
ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) ) /* Priority Unused */
1356
1392
ROM_START( joemac ) /* Japan ver 1 */
1357
1393
ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
1358
1394
ROM_LOAD16_BYTE( "gl-02-2.1k", 0x00000, 0x20000, CRC(80da12e2) SHA1(1037ed56c15dbe1eb8bb8b70f0bc3affc1119782) )
1466
1502
ROM_LOAD( "joe mac 6.samples", 0x00000, 0x80000, CRC(dbecad83) SHA1(de34653606f12d2c606ff7d1cbce993521772884) ) // 1ST AND 2ND HALF IDENTICAL
1505
ROM_START( cninjabl2 )
1506
ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 code */
1507
ROM_LOAD16_BYTE( "6.bin", 0x00001, 0x40000, CRC(a86ccfb7) SHA1(c4ac331d5750a35cd48e5d75f0247758b892b034) )
1508
ROM_LOAD16_BYTE( "4.bin", 0x00000, 0x40000, CRC(88c7043a) SHA1(9981d10f6c88556ceda083158d9835fdeb191511) )
1509
ROM_LOAD16_BYTE( "gn-00.rom", 0x80000, 0x20000, CRC(0b110b16) SHA1(a967c8aeae3f0cee1f354583cf26ee736636aaf8) )
1510
ROM_LOAD16_BYTE( "gn-03.rom", 0x80001, 0x20000, CRC(1e28e697) SHA1(2313e97f3a34892dfdc338944c0f00538fcae800) )
1512
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
1513
ROM_LOAD( "audio-prg.3", 0x00000, 0x10000, CRC(3eb65b6d) SHA1(e6d94223a7b98d33470ad4e387d6ce399b76ea4a) )
1515
ROM_REGION( 0x020000, "gfx1", 0 )
1516
ROM_LOAD16_BYTE( "gl-08.rom", 0x00001, 0x10000, CRC(33a2b400) SHA1(fdb8de315f33705719c0ac03a61fb56ffbfdf597) ) /* chars */
1517
ROM_LOAD16_BYTE( "gl-09.rom", 0x00000, 0x10000, CRC(5a2d4752) SHA1(617dd10a99b5b55ca64dcdd22a0f133b0d6b770d) )
1519
ROM_REGION( 0x080000, "gfx2", 0 )
1520
ROM_LOAD( "mag-02.rom", 0x000000, 0x80000, CRC(de89c69a) SHA1(b41bdf859854b5541c7eae7cd541b910cea1f839) ) /* tiles 3 */
1522
ROM_REGION( 0x100000, "gfx3", 0 )
1523
ROM_LOAD( "mag-00.rom", 0x000000, 0x40000, CRC(a8f05d33) SHA1(a1330bc9ca4648219403db087622badfc632b47d) ) /* tiles 1 */
1524
ROM_CONTINUE( 0x080000, 0x40000 )
1525
ROM_LOAD( "mag-01.rom", 0x040000, 0x40000, CRC(5b399eed) SHA1(490f8f9c0c557b0ba94c6019e3fe680641a0787e) ) /* tiles 2 */
1526
ROM_CONTINUE( 0x0c0000, 0x40000 )
1528
ROM_REGION( 0x200000, "gfx4", 0 )
1529
ROM_LOAD16_BYTE( "mag-03.rom", 0x000000, 0x80000, CRC(2220eb9f) SHA1(bdf0bd6e6ba375f0770b9d08a7efa32201cbb6ef) ) /* sprites */
1530
ROM_LOAD16_BYTE( "mag-05.rom", 0x000001, 0x80000, CRC(56a53254) SHA1(10940cfdc6fbe9013865107de3394ca7f782d9c7) )
1531
ROM_LOAD16_BYTE( "mag-04.rom", 0x100000, 0x80000, CRC(144b94cc) SHA1(d982508608942a714b428a2b721bf24e1627cbb6) )
1532
ROM_LOAD16_BYTE( "mag-06.rom", 0x100001, 0x80000, CRC(82d44749) SHA1(c471fa573e00c2f8ae44068439ba6d849a124c68) )
1534
ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */
1535
ROM_LOAD( "audio-samp.2", 0x00000, 0x20000, CRC(c6638568) SHA1(b5e38d807146b033d1a0b5fb013ac755cd4a2699) )
1536
ROM_LOAD( "audio-samp.1", 0x00000, 0x10000, CRC(7815e6ab) SHA1(3112b4e8a4008b519f73e6f2d1393ef1e620a0c5) )
1538
ROM_REGION( 0x80000, "oki2", 0 ) /* Extra Oki samples */
1539
ROM_LOAD( "audio-samp.18", 0x00000, 0x80000, CRC(06f1bc18) SHA1(fe551d78466dc5b098263520f0ab00200d651593) ) /* banked */
1541
ROM_REGION( 1024, "proms", 0 )
1542
ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) ) /* Priority Unused */
1470
1545
ROM_START( edrandy ) /* World ver 3 */
1471
1546
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
2052
2129
GAME( 1990, edrandyj, edrandy, edrandy, edrandc, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (Japan ver 3)", GAME_SUPPORTS_SAVE )
2053
2130
GAME( 1991, cninja, 0, cninja, cninja, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", GAME_SUPPORTS_SAVE )
2054
2131
GAME( 1991, cninja1, cninja, cninja, cninja, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", GAME_SUPPORTS_SAVE )
2132
GAME( 1991, cninjaa, cninja, cninja, cninja, cninja, ROT0, "Data East Corporation", "Caveman Ninja (alternate)", GAME_SUPPORTS_SAVE )
2055
2133
GAME( 1991, cninjau, cninja, cninja, cninjau, cninja, ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", GAME_SUPPORTS_SAVE )
2056
2134
GAME( 1991, joemac, cninja, cninja, cninja, cninja, ROT0, "Data East Corporation", "Tatakae Genshizin Joe & Mac (Japan ver 1)", GAME_SUPPORTS_SAVE )
2057
2135
GAME( 1991, stoneage, cninja, stoneage, cninja, stoneage, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", GAME_SUPPORTS_SAVE )
2058
2136
GAME( 1991, cninjabl, cninja, cninjabl, cninja, 0, ROT0, "bootleg", "Caveman Ninja (bootleg)", GAME_SUPPORTS_SAVE )
2137
GAME( 1991, cninjabl2,cninja, cninjabl, cninja, 0, ROT0, "bootleg", "Caveman Ninja (bootleg, alt)", GAME_NOT_WORKING )
2059
2138
GAME( 1991, robocop2, 0, robocop2, robocop2,0, ROT0, "Data East Corporation", "Robocop 2 (Euro/Asia v0.10)", GAME_SUPPORTS_SAVE )
2060
2139
GAME( 1991, robocop2u,robocop2,robocop2, robocop2,0, ROT0, "Data East Corporation", "Robocop 2 (US v0.05)", GAME_SUPPORTS_SAVE )
2061
2140
GAME( 1991, robocop2j,robocop2,robocop2, robocop2,0, ROT0, "Data East Corporation", "Robocop 2 (Japan v0.11)", GAME_SUPPORTS_SAVE )