~ubuntu-branches/debian/sid/mame/sid

« back to all changes in this revision

Viewing changes to src/mame/drivers/cninja.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Emmanuel Kasper, Jordi Mallach
  • Date: 2012-06-05 20:02:23 UTC
  • mfrom: (0.3.1) (0.1.4)
  • Revision ID: package-import@ubuntu.com-20120605200223-gnlpogjrg6oqe9md
Tags: 0.146-1
[ Emmanuel Kasper ]
* New upstream release
* Drop patch to fix man pages section and patches to link with flac 
  and jpeg system lib: all this has been pushed upstream by Cesare Falco
* Add DM-Upload-Allowed: yes field.

[ Jordi Mallach ]
* Create a "gnu" TARGETOS stanza that defines NO_AFFINITY_NP.
* Stop setting TARGETOS to "unix" in d/rules. It should be autodetected,
  and set to the appropriate value.
* mame_manpage_section.patch: Change mame's manpage section to 6 (games),
  in the TH declaration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
#include "video/decospr.h"
55
55
#include "video/decocomn.h"
56
56
 
57
 
static WRITE16_HANDLER( cninja_sound_w )
 
57
WRITE16_MEMBER(cninja_state::cninja_sound_w)
58
58
{
59
 
        cninja_state *state = space->machine().driver_data<cninja_state>();
60
59
 
61
 
        soundlatch_w(space, 0, data & 0xff);
62
 
        device_set_input_line(state->m_audiocpu, 0, HOLD_LINE);
 
60
        soundlatch_byte_w(space, 0, data & 0xff);
 
61
        device_set_input_line(m_audiocpu, 0, HOLD_LINE);
63
62
}
64
63
 
65
 
static WRITE16_HANDLER( stoneage_sound_w )
 
64
WRITE16_MEMBER(cninja_state::stoneage_sound_w)
66
65
{
67
 
        cninja_state *state = space->machine().driver_data<cninja_state>();
68
66
 
69
 
        soundlatch_w(space, 0, data & 0xff);
70
 
        device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, PULSE_LINE);
 
67
        soundlatch_byte_w(space, 0, data & 0xff);
 
68
        device_set_input_line(m_audiocpu, INPUT_LINE_NMI, PULSE_LINE);
71
69
}
72
70
 
73
71
static TIMER_DEVICE_CALLBACK( interrupt_gen )
78
76
        state->m_raster_irq_timer->reset();
79
77
}
80
78
 
81
 
static READ16_HANDLER( cninja_irq_r )
 
79
READ16_MEMBER(cninja_state::cninja_irq_r)
82
80
{
83
 
        cninja_state *state = space->machine().driver_data<cninja_state>();
84
81
 
85
82
        switch (offset)
86
83
        {
87
84
 
88
85
        case 1: /* Raster IRQ scanline position */
89
 
                return state->m_scanline;
 
86
                return m_scanline;
90
87
 
91
88
        case 2: /* Raster IRQ ACK - value read is not used */
92
 
                device_set_input_line(state->m_maincpu, 3, CLEAR_LINE);
93
 
                device_set_input_line(state->m_maincpu, 4, CLEAR_LINE);
 
89
                device_set_input_line(m_maincpu, 3, CLEAR_LINE);
 
90
                device_set_input_line(m_maincpu, 4, CLEAR_LINE);
94
91
                return 0;
95
92
        }
96
93
 
97
 
        logerror("%08x:  Unmapped IRQ read %d\n", cpu_get_pc(&space->device()), offset);
 
94
        logerror("%08x:  Unmapped IRQ read %d\n", cpu_get_pc(&space.device()), offset);
98
95
        return 0;
99
96
}
100
97
 
101
 
static WRITE16_HANDLER( cninja_irq_w )
 
98
WRITE16_MEMBER(cninja_state::cninja_irq_w)
102
99
{
103
 
        cninja_state *state = space->machine().driver_data<cninja_state>();
104
100
 
105
101
        switch (offset)
106
102
        {
110
106
            0xc8:   Raster IRQ turned on (68k IRQ level 4)
111
107
            0xd8:   Raster IRQ turned on (68k IRQ level 3)
112
108
        */
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;
115
111
                return;
116
112
 
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;
119
115
 
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);
122
118
                else
123
 
                        state->m_raster_irq_timer->reset();
 
119
                        m_raster_irq_timer->reset();
124
120
                return;
125
121
 
126
122
        case 2: /* VBL irq ack */
127
123
                return;
128
124
        }
129
125
 
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);
131
127
}
132
128
 
133
 
static READ16_HANDLER( robocop2_prot_r )
 
129
READ16_MEMBER(cninja_state::robocop2_prot_r)
134
130
{
135
131
        switch (offset << 1)
136
132
        {
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);
145
141
                        return 0x84;
146
142
        }
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);
148
144
        return 0;
149
145
}
150
146
 
151
147
/**********************************************************************************/
152
148
 
153
 
static WRITE16_HANDLER( cninja_pf12_control_w )
154
 
{
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);
158
 
}
159
 
 
160
 
 
161
 
static WRITE16_HANDLER( cninja_pf34_control_w )
162
 
{
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);
166
 
}
167
 
 
168
 
 
169
 
static ADDRESS_MAP_START( cninja_map, AS_PROGRAM, 16 )
 
149
WRITE16_MEMBER(cninja_state::cninja_pf12_control_w)
 
150
{
 
151
        machine().primary_screen->update_partial(machine().primary_screen->vpos());
 
152
        deco16ic_pf_control_w(m_deco_tilegen1, offset, data, mem_mask);
 
153
}
 
154
 
 
155
 
 
156
WRITE16_MEMBER(cninja_state::cninja_pf34_control_w)
 
157
{
 
158
        machine().primary_screen->update_partial(machine().primary_screen->vpos());
 
159
        deco16ic_pf_control_w(m_deco_tilegen2, offset, data, mem_mask);
 
160
}
 
161
 
 
162
 
 
163
static ADDRESS_MAP_START( cninja_map, AS_PROGRAM, 16, cninja_state )
170
164
        AM_RANGE(0x000000, 0x0bffff) AM_ROM
171
165
 
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")
177
171
 
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")
183
177
 
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")
187
181
 
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 */
192
186
 
193
187
        AM_RANGE(0x308000, 0x308fff) AM_WRITENOP /* Bootleg only */
194
188
ADDRESS_MAP_END
195
189
 
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
198
192
 
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) */
200
194
 
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")
206
200
 
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")
212
206
 
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?
219
213
 
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")
222
216
 
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 */
224
218
ADDRESS_MAP_END
225
219
 
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
228
222
 
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")
234
228
 
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")
240
234
 
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 */
246
240
 
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 */
251
245
ADDRESS_MAP_END
252
246
 
253
247
 
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
256
250
 
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")
262
256
 
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")
268
262
 
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 */
279
273
ADDRESS_MAP_END
280
274
 
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)
292
286
 
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")
298
292
 
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")
304
298
 
305
299
        AM_RANGE(0xad00ac, 0xad00ff) AM_READNOP /* Reads from here seem to be a game code bug */
306
300
ADDRESS_MAP_END
307
301
 
308
302
/******************************************************************************/
309
303
 
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)
320
314
ADDRESS_MAP_END
321
315
 
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)
332
326
ADDRESS_MAP_END
333
327
 
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)
340
334
ADDRESS_MAP_END
341
335
 
342
336
/***********************************************************
392
386
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
393
387
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
394
388
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
395
 
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
 
389
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
396
390
 
397
391
        PORT_START("DSW")
398
392
        DATAEAST_COINAGE
446
440
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
447
441
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
448
442
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
449
 
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
 
443
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
450
444
 
451
445
        PORT_START("DSW")       /* Dip switch bank 1 */
452
446
 
515
509
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
516
510
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
517
511
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
518
 
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
 
512
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
519
513
 
520
514
        PORT_START("DSW")       /* Dip switch bank 1 */
521
515
 
583
577
        PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
584
578
        PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
585
579
        PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
586
 
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK )
 
580
        PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
587
581
 
588
582
        PORT_START("DSW")       /* Dip switch bank 1 */
589
583
 
737
731
 
738
732
static const ym2151_interface ym2151_config =
739
733
{
740
 
        sound_irq,
741
 
        sound_bankswitch_w
 
734
        DEVCB_LINE(sound_irq),
 
735
        DEVCB_HANDLER(sound_bankswitch_w)
742
736
};
743
737
 
744
738
static const ym2151_interface ym2151_interface2 =
745
739
{
746
 
        sound_irq2
 
740
        DEVCB_LINE(sound_irq2)
747
741
};
748
742
 
749
743
/**********************************************************************************/
924
918
        MCFG_TIMER_ADD("raster_timer", interrupt_gen)
925
919
 
926
920
        /* video hardware */
927
 
        MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
928
 
 
929
921
        MCFG_SCREEN_ADD("screen", RASTER)
930
922
        MCFG_SCREEN_REFRESH_RATE(58)
931
923
        MCFG_SCREEN_SIZE(32*8, 32*8)
935
927
        MCFG_GFXDECODE(cninja)
936
928
        MCFG_PALETTE_LENGTH(2048)
937
929
 
 
930
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
 
931
 
938
932
        MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf)
939
933
 
940
934
        MCFG_DECO16IC_ADD("tilegen1", cninja_deco16ic_tilegen1_intf)
978
972
        MCFG_TIMER_ADD("raster_timer", interrupt_gen)
979
973
 
980
974
        /* video hardware */
981
 
        MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
982
 
 
983
975
        MCFG_SCREEN_ADD("screen", RASTER)
984
976
        MCFG_SCREEN_REFRESH_RATE(58)
985
977
        MCFG_SCREEN_SIZE(32*8, 32*8)
991
983
 
992
984
        MCFG_VIDEO_START(stoneage)
993
985
 
 
986
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
 
987
 
994
988
        MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf)
995
989
 
996
990
        MCFG_DECO16IC_ADD("tilegen1", cninja_deco16ic_tilegen1_intf)
1032
1026
        MCFG_TIMER_ADD("raster_timer", interrupt_gen)
1033
1027
 
1034
1028
        /* video hardware */
1035
 
        MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
1036
 
 
1037
1029
        MCFG_SCREEN_ADD("screen", RASTER)
1038
1030
        MCFG_SCREEN_REFRESH_RATE(58)
1039
1031
        MCFG_SCREEN_SIZE(32*8, 32*8)
1043
1035
        MCFG_GFXDECODE(cninjabl)
1044
1036
        MCFG_PALETTE_LENGTH(2048)
1045
1037
 
 
1038
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
 
1039
 
1046
1040
        MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf)
1047
1041
 
1048
1042
        MCFG_DECO16IC_ADD("tilegen1", cninja_deco16ic_tilegen1_intf)
1077
1071
        MCFG_TIMER_ADD("raster_timer", interrupt_gen)
1078
1072
 
1079
1073
        /* video hardware */
1080
 
        MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
1081
 
 
1082
1074
        MCFG_SCREEN_ADD("screen", RASTER)
1083
1075
        MCFG_SCREEN_REFRESH_RATE(58)
1084
1076
        MCFG_SCREEN_SIZE(32*8, 32*8)
1088
1080
        MCFG_GFXDECODE(cninja)
1089
1081
        MCFG_PALETTE_LENGTH(2048)
1090
1082
 
 
1083
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
 
1084
 
1091
1085
        MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf)
1092
1086
 
1093
1087
        MCFG_DECO16IC_ADD("tilegen1", edrandy_deco16ic_tilegen1_intf)
1131
1125
        MCFG_TIMER_ADD("raster_timer", interrupt_gen)
1132
1126
 
1133
1127
        /* video hardware */
1134
 
        MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
1135
 
 
1136
1128
        MCFG_SCREEN_ADD("screen", RASTER)
1137
1129
        MCFG_SCREEN_REFRESH_RATE(60)
1138
1130
        MCFG_SCREEN_SIZE(40*8, 32*8)
1142
1134
        MCFG_GFXDECODE(robocop2)
1143
1135
        MCFG_PALETTE_LENGTH(2048)
1144
1136
 
 
1137
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
 
1138
 
1145
1139
        MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf)
1146
1140
 
1147
1141
        MCFG_DECO16IC_ADD("tilegen1", robocop2_deco16ic_tilegen1_intf)
1186
1180
        MCFG_MACHINE_RESET(cninja)
1187
1181
 
1188
1182
        /* video hardware */
1189
 
        MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM )
1190
 
 
1191
1183
        MCFG_SCREEN_ADD("screen", RASTER)
1192
1184
        MCFG_SCREEN_REFRESH_RATE(60)
1193
1185
        MCFG_SCREEN_SIZE(40*8, 32*8)
1199
1191
        MCFG_GFXDECODE(mutantf)
1200
1192
        MCFG_PALETTE_LENGTH(2048)
1201
1193
 
 
1194
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
 
1195
        MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
 
1196
 
1202
1197
        MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf)
1203
1198
 
1204
1199
        MCFG_DECO16IC_ADD("tilegen1", mutantf_deco16ic_tilegen1_intf)
1353
1348
        ROM_LOAD( "mb7122h.7v", 0x00000,  0x400,  CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )        /* Priority  Unused */
1354
1349
ROM_END
1355
1350
 
 
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) )
 
1359
 
 
1360
        ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
 
1361
        ROM_LOAD( "gl-07.rom",  0x00000,  0x10000,  CRC(ca8bef96) SHA1(fcdbd598c85e339a3389a2ef58cf2d5b3a2779af) )
 
1362
 
 
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) )
 
1366
 
 
1367
        ROM_REGION( 0x080000, "gfx2", 0 )
 
1368
        ROM_LOAD( "mag-02.rom", 0x000000, 0x80000,  CRC(de89c69a) SHA1(b41bdf859854b5541c7eae7cd541b910cea1f839) )      /* tiles 3 */
 
1369
 
 
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 )
 
1375
 
 
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) )
 
1381
 
 
1382
        ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */
 
1383
        ROM_LOAD( "gl-06.rom",  0x00000,  0x20000,  CRC(d92e519d) SHA1(08238f12bf7058a3965ab6348b468e3d35d4cd23) )
 
1384
 
 
1385
        ROM_REGION( 0x80000, "oki2", 0 ) /* Extra Oki samples */
 
1386
        ROM_LOAD( "mag-07.rom", 0x00000,  0x80000,  CRC(08eb5264) SHA1(3e33085f00b758acfc78034dc9a75fd6921fc3fe) )      /* banked */
 
1387
 
 
1388
        ROM_REGION( 1024, "proms", 0 )
 
1389
        ROM_LOAD( "mb7122h.7v", 0x00000,  0x400,  CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )        /* Priority  Unused */
 
1390
ROM_END
 
1391
 
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
1467
1503
ROM_END
1468
1504
 
 
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) )
 
1511
 
 
1512
    ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
 
1513
    ROM_LOAD( "audio-prg.3",  0x00000,  0x10000,  CRC(3eb65b6d) SHA1(e6d94223a7b98d33470ad4e387d6ce399b76ea4a) )
 
1514
 
 
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) )
 
1518
 
 
1519
    ROM_REGION( 0x080000, "gfx2", 0 )
 
1520
    ROM_LOAD( "mag-02.rom", 0x000000, 0x80000,  CRC(de89c69a) SHA1(b41bdf859854b5541c7eae7cd541b910cea1f839) )      /* tiles 3 */
 
1521
 
 
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 )
 
1527
 
 
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) )
 
1533
 
 
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) )
 
1537
 
 
1538
    ROM_REGION( 0x80000, "oki2", 0 ) /* Extra Oki samples */
 
1539
    ROM_LOAD( "audio-samp.18", 0x00000,  0x80000,  CRC(06f1bc18) SHA1(fe551d78466dc5b098263520f0ab00200d651593) )   /* banked */
 
1540
 
 
1541
    ROM_REGION( 1024, "proms", 0 )
 
1542
    ROM_LOAD( "mb7122h.7v", 0x00000,  0x400,  CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) )        /* Priority  Unused */
 
1543
ROM_END
1469
1544
 
1470
1545
ROM_START( edrandy ) /* World ver 3 */
1471
1546
        ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
1993
2068
 
1994
2069
static void cninja_patch( running_machine &machine )
1995
2070
{
1996
 
        UINT16 *RAM = (UINT16 *)machine.region("maincpu")->base();
 
2071
        UINT16 *RAM = (UINT16 *)machine.root_device().memregion("maincpu")->base();
1997
2072
        int i;
1998
2073
 
1999
2074
        for (i = 0; i < 0x80000 / 2; i++)
2021
2096
 
2022
2097
static DRIVER_INIT( cninja )
2023
2098
{
2024
 
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0x1bc0a8, 0x1bc0a9, FUNC(cninja_sound_w));
 
2099
        cninja_state *state = machine.driver_data<cninja_state>();
 
2100
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_write_handler(0x1bc0a8, 0x1bc0a9, write16_delegate(FUNC(cninja_state::cninja_sound_w),state));
2025
2101
        cninja_patch(machine);
2026
2102
}
2027
2103
 
2028
2104
static DRIVER_INIT( stoneage )
2029
2105
{
2030
 
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0x1bc0a8, 0x1bc0a9, FUNC(stoneage_sound_w));
 
2106
        cninja_state *state = machine.driver_data<cninja_state>();
 
2107
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_write_handler(0x1bc0a8, 0x1bc0a9, write16_delegate(FUNC(cninja_state::stoneage_sound_w),state));
2031
2108
}
2032
2109
 
2033
2110
static DRIVER_INIT( mutantf )
2034
2111
{
2035
 
        const UINT8 *src = machine.region("gfx2")->base();
2036
 
        UINT8 *dst = machine.region("gfx1")->base();
 
2112
        const UINT8 *src = machine.root_device().memregion("gfx2")->base();
 
2113
        UINT8 *dst = machine.root_device().memregion("gfx1")->base();
2037
2114
 
2038
2115
        /* The 16x16 graphic has some 8x8 chars in it - decode them in GFX1 */
2039
2116
        memcpy(dst + 0x50000, dst + 0x10000, 0x10000);
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 )