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

« back to all changes in this revision

Viewing changes to src/mame/drivers/simpl156.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:
103
103
        PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
104
104
        PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
105
105
        PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
106
 
        PORT_BIT( 0x00f0, IP_ACTIVE_HIGH, IPT_VBLANK ) // all bits? check..
 
106
        PORT_BIT( 0x00f0, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") // all bits? check..
107
107
        PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) // eeprom?..
108
108
 
109
109
 
127
127
INPUT_PORTS_END
128
128
 
129
129
 
130
 
static READ32_HANDLER( simpl156_inputs_read )
 
130
READ32_MEMBER(simpl156_state::simpl156_inputs_read)
131
131
{
132
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
133
 
        int eep = state->m_eeprom->read_bit();
134
 
        UINT32 returndata = input_port_read(space->machine(), "IN0") ^ 0xffff0000;
 
132
        int eep = m_eeprom->read_bit();
 
133
        UINT32 returndata = ioport("IN0")->read() ^ 0xffff0000;
135
134
 
136
135
        returndata ^= ((eep << 8));
137
136
        return returndata;
138
137
}
139
138
 
140
 
static READ32_HANDLER( simpl156_palette_r )
 
139
READ32_MEMBER(simpl156_state::simpl156_palette_r)
141
140
{
142
 
        return space->machine().generic.paletteram.u16[offset]^0xffff0000;
 
141
        return m_generic_paletteram_16[offset]^0xffff0000;
143
142
}
144
143
 
145
 
static WRITE32_HANDLER( simpl156_palette_w )
 
144
WRITE32_MEMBER(simpl156_state::simpl156_palette_w)
146
145
{
147
146
        UINT16 dat;
148
147
        int color;
150
149
        data &= 0x0000ffff;
151
150
        mem_mask &= 0x0000ffff;
152
151
 
153
 
        COMBINE_DATA(&space->machine().generic.paletteram.u16[offset]);
 
152
        COMBINE_DATA(&m_generic_paletteram_16[offset]);
154
153
        color = offset;
155
154
 
156
 
        dat = space->machine().generic.paletteram.u16[offset] & 0xffff;
157
 
        palette_set_color_rgb(space->machine(),color,pal5bit(dat >> 0),pal5bit(dat >> 5),pal5bit(dat >> 10));
 
155
        dat = m_generic_paletteram_16[offset] & 0xffff;
 
156
        palette_set_color_rgb(machine(),color,pal5bit(dat >> 0),pal5bit(dat >> 5),pal5bit(dat >> 10));
158
157
}
159
158
 
160
159
 
161
 
static READ32_HANDLER(  simpl156_system_r )
 
160
READ32_MEMBER(simpl156_state::simpl156_system_r)
162
161
{
163
162
        UINT32 returndata;
164
163
 
165
 
        returndata = input_port_read(space->machine(), "IN1");
 
164
        returndata = ioport("IN1")->read();
166
165
 
167
166
        return returndata;
168
167
}
169
168
 
170
 
static WRITE32_HANDLER( simpl156_eeprom_w )
 
169
WRITE32_MEMBER(simpl156_state::simpl156_eeprom_w)
171
170
{
172
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
173
171
        //int okibank;
174
172
 
175
173
        //okibank = data & 0x07;
176
174
 
177
 
        state->m_okimusic->set_bank_base(0x40000 * (data & 0x7));
 
175
        m_okimusic->set_bank_base(0x40000 * (data & 0x7));
178
176
 
179
 
        state->m_eeprom->set_clock_line(BIT(data, 5) ? ASSERT_LINE : CLEAR_LINE);
180
 
        state->m_eeprom->write_bit(BIT(data, 4));
181
 
        state->m_eeprom->set_cs_line(BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE);
 
177
        m_eeprom->set_clock_line(BIT(data, 5) ? ASSERT_LINE : CLEAR_LINE);
 
178
        m_eeprom->write_bit(BIT(data, 4));
 
179
        m_eeprom->set_cs_line(BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE);
182
180
}
183
181
 
184
182
 
185
183
/* we need to throw away bits for all ram accesses as the devices are connected as 16-bit */
186
184
 
187
 
static READ32_HANDLER( simpl156_spriteram_r )
188
 
{
189
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
190
 
        return state->m_spriteram[offset] ^ 0xffff0000;
191
 
}
192
 
 
193
 
static WRITE32_HANDLER( simpl156_spriteram_w )
194
 
{
195
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
196
 
        data &= 0x0000ffff;
197
 
        mem_mask &= 0x0000ffff;
198
 
 
199
 
        COMBINE_DATA(&state->m_spriteram[offset]);
200
 
}
201
 
 
202
 
 
203
 
static READ32_HANDLER( simpl156_mainram_r )
204
 
{
205
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
206
 
        return state->m_mainram[offset]^0xffff0000;
207
 
}
208
 
 
209
 
static WRITE32_HANDLER( simpl156_mainram_w )
210
 
{
211
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
212
 
        data &= 0x0000ffff;
213
 
        mem_mask &= 0x0000ffff;
214
 
 
215
 
        COMBINE_DATA(&state->m_mainram[offset]);
216
 
}
217
 
 
218
 
static READ32_HANDLER( simpl156_pf1_rowscroll_r )
219
 
{
220
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
221
 
        return state->m_pf1_rowscroll[offset] ^ 0xffff0000;
222
 
}
223
 
 
224
 
static WRITE32_HANDLER( simpl156_pf1_rowscroll_w )
225
 
{
226
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
227
 
        data &= 0x0000ffff;
228
 
        mem_mask &= 0x0000ffff;
229
 
 
230
 
        COMBINE_DATA(&state->m_pf1_rowscroll[offset]);
231
 
}
232
 
 
233
 
static READ32_HANDLER( simpl156_pf2_rowscroll_r )
234
 
{
235
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
236
 
        return state->m_pf2_rowscroll[offset] ^ 0xffff0000;
237
 
}
238
 
 
239
 
static WRITE32_HANDLER( simpl156_pf2_rowscroll_w )
240
 
{
241
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
242
 
        data &= 0x0000ffff;
243
 
        mem_mask &= 0x0000ffff;
244
 
 
245
 
        COMBINE_DATA(&state->m_pf2_rowscroll[offset]);
 
185
READ32_MEMBER(simpl156_state::simpl156_spriteram_r)
 
186
{
 
187
        return m_spriteram[offset] ^ 0xffff0000;
 
188
}
 
189
 
 
190
WRITE32_MEMBER(simpl156_state::simpl156_spriteram_w)
 
191
{
 
192
        data &= 0x0000ffff;
 
193
        mem_mask &= 0x0000ffff;
 
194
 
 
195
        COMBINE_DATA(&m_spriteram[offset]);
 
196
}
 
197
 
 
198
 
 
199
READ32_MEMBER(simpl156_state::simpl156_mainram_r)
 
200
{
 
201
        return m_mainram[offset]^0xffff0000;
 
202
}
 
203
 
 
204
WRITE32_MEMBER(simpl156_state::simpl156_mainram_w)
 
205
{
 
206
        data &= 0x0000ffff;
 
207
        mem_mask &= 0x0000ffff;
 
208
 
 
209
        COMBINE_DATA(&m_mainram[offset]);
 
210
}
 
211
 
 
212
READ32_MEMBER(simpl156_state::simpl156_pf1_rowscroll_r)
 
213
{
 
214
        return m_pf1_rowscroll[offset] ^ 0xffff0000;
 
215
}
 
216
 
 
217
WRITE32_MEMBER(simpl156_state::simpl156_pf1_rowscroll_w)
 
218
{
 
219
        data &= 0x0000ffff;
 
220
        mem_mask &= 0x0000ffff;
 
221
 
 
222
        COMBINE_DATA(&m_pf1_rowscroll[offset]);
 
223
}
 
224
 
 
225
READ32_MEMBER(simpl156_state::simpl156_pf2_rowscroll_r)
 
226
{
 
227
        return m_pf2_rowscroll[offset] ^ 0xffff0000;
 
228
}
 
229
 
 
230
WRITE32_MEMBER(simpl156_state::simpl156_pf2_rowscroll_w)
 
231
{
 
232
        data &= 0x0000ffff;
 
233
        mem_mask &= 0x0000ffff;
 
234
 
 
235
        COMBINE_DATA(&m_pf2_rowscroll[offset]);
246
236
}
247
237
 
248
238
/* Memory Map controled by PALs */
249
239
 
250
240
/* Joe and Mac Returns */
251
 
static ADDRESS_MAP_START( joemacr_map, AS_PROGRAM, 32 )
 
241
static ADDRESS_MAP_START( joemacr_map, AS_PROGRAM, 32, simpl156_state )
252
242
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
253
 
        AM_RANGE(0x100000, 0x107fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, m_mainram) // main ram
 
243
        AM_RANGE(0x100000, 0x107fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram
254
244
        AM_RANGE(0x110000, 0x111fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
255
245
        AM_RANGE(0x120000, 0x120fff) AM_READWRITE(simpl156_palette_r, simpl156_palette_w)
256
246
        AM_RANGE(0x130000, 0x130003) AM_READWRITE(simpl156_system_r, simpl156_eeprom_w)
257
 
        AM_RANGE(0x140000, 0x14001f) AM_DEVREADWRITE("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
258
 
        AM_RANGE(0x150000, 0x151fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
259
 
        AM_RANGE(0x152000, 0x153fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
260
 
        AM_RANGE(0x154000, 0x155fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
 
247
        AM_RANGE(0x140000, 0x14001f) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
 
248
        AM_RANGE(0x150000, 0x151fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
249
        AM_RANGE(0x152000, 0x153fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
250
        AM_RANGE(0x154000, 0x155fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
261
251
        AM_RANGE(0x160000, 0x161fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
262
252
        AM_RANGE(0x164000, 0x165fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
263
253
        AM_RANGE(0x170000, 0x170003) AM_READONLY AM_WRITENOP // ?
264
 
        AM_RANGE(0x180000, 0x180003) AM_DEVREADWRITE8_MODERN("okisfx", okim6295_device, read, write, 0x000000ff)
265
 
        AM_RANGE(0x1c0000, 0x1c0003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
 
254
        AM_RANGE(0x180000, 0x180003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
 
255
        AM_RANGE(0x1c0000, 0x1c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
266
256
        AM_RANGE(0x200000, 0x200003) AM_READ(simpl156_inputs_read)
267
 
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_BASE_MEMBER(simpl156_state, m_systemram) // work ram (32-bit)
 
257
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
268
258
ADDRESS_MAP_END
269
259
 
270
260
 
271
261
/* Chain Reaction */
272
 
static ADDRESS_MAP_START( chainrec_map, AS_PROGRAM, 32 )
 
262
static ADDRESS_MAP_START( chainrec_map, AS_PROGRAM, 32, simpl156_state )
273
263
        AM_RANGE(0x000000, 0x07ffff) AM_ROM // rom (32-bit)
274
264
        AM_RANGE(0x200000, 0x200003) AM_READ(simpl156_inputs_read)
275
 
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_BASE_MEMBER(simpl156_state, m_systemram) // work ram (32-bit)
276
 
        AM_RANGE(0x3c0000, 0x3c0003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
277
 
        AM_RANGE(0x400000, 0x407fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, m_mainram) // main ram?
 
265
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
 
266
        AM_RANGE(0x3c0000, 0x3c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
 
267
        AM_RANGE(0x400000, 0x407fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram?
278
268
        AM_RANGE(0x410000, 0x411fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
279
269
        AM_RANGE(0x420000, 0x420fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w)
280
270
        AM_RANGE(0x430000, 0x430003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w)
281
 
        AM_RANGE(0x440000, 0x44001f) AM_DEVREADWRITE("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
282
 
        AM_RANGE(0x450000, 0x451fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
283
 
        AM_RANGE(0x452000, 0x453fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
284
 
        AM_RANGE(0x454000, 0x455fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
 
271
        AM_RANGE(0x440000, 0x44001f) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
 
272
        AM_RANGE(0x450000, 0x451fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
273
        AM_RANGE(0x452000, 0x453fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
274
        AM_RANGE(0x454000, 0x455fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
285
275
        AM_RANGE(0x460000, 0x461fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
286
276
        AM_RANGE(0x464000, 0x465fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
287
277
        AM_RANGE(0x470000, 0x470003) AM_READONLY AM_WRITENOP // ??
288
 
        AM_RANGE(0x480000, 0x480003) AM_DEVREADWRITE8_MODERN("okisfx", okim6295_device, read, write, 0x000000ff)
 
278
        AM_RANGE(0x480000, 0x480003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
289
279
ADDRESS_MAP_END
290
280
 
291
281
 
292
282
/* Magical Drop */
293
 
static ADDRESS_MAP_START( magdrop_map, AS_PROGRAM, 32 )
 
283
static ADDRESS_MAP_START( magdrop_map, AS_PROGRAM, 32, simpl156_state )
294
284
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
295
285
        AM_RANGE(0x200000, 0x200003) AM_READ(simpl156_inputs_read)
296
 
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_BASE_MEMBER(simpl156_state, m_systemram) // work ram (32-bit)
297
 
        AM_RANGE(0x340000, 0x340003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
298
 
        AM_RANGE(0x380000, 0x387fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, m_mainram) // main ram?
 
286
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
 
287
        AM_RANGE(0x340000, 0x340003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
 
288
        AM_RANGE(0x380000, 0x387fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram?
299
289
        AM_RANGE(0x390000, 0x391fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
300
290
        AM_RANGE(0x3a0000, 0x3a0fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w)
301
291
        AM_RANGE(0x3b0000, 0x3b0003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w)
302
 
        AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
303
 
        AM_RANGE(0x3d0000, 0x3d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
304
 
        AM_RANGE(0x3d2000, 0x3d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
305
 
        AM_RANGE(0x3d4000, 0x3d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
 
292
        AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
 
293
        AM_RANGE(0x3d0000, 0x3d1fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
294
        AM_RANGE(0x3d2000, 0x3d3fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
295
        AM_RANGE(0x3d4000, 0x3d5fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
306
296
        AM_RANGE(0x3e0000, 0x3e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
307
297
        AM_RANGE(0x3e4000, 0x3e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
308
298
        AM_RANGE(0x3f0000, 0x3f0003) AM_READONLY AM_WRITENOP //?
309
 
        AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8_MODERN("okisfx", okim6295_device, read, write, 0x000000ff)
 
299
        AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
310
300
ADDRESS_MAP_END
311
301
 
312
302
 
313
303
/* Magical Drop Plus 1 */
314
 
static ADDRESS_MAP_START( magdropp_map, AS_PROGRAM, 32 )
 
304
static ADDRESS_MAP_START( magdropp_map, AS_PROGRAM, 32, simpl156_state )
315
305
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
316
306
        AM_RANGE(0x200000, 0x200003) AM_READ(simpl156_inputs_read)
317
 
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_BASE_MEMBER(simpl156_state, m_systemram) // work ram (32-bit)
318
 
        AM_RANGE(0x4c0000, 0x4c0003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
319
 
        AM_RANGE(0x680000, 0x687fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, m_mainram) // main ram?
 
307
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
 
308
        AM_RANGE(0x4c0000, 0x4c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
 
309
        AM_RANGE(0x680000, 0x687fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram?
320
310
        AM_RANGE(0x690000, 0x691fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
321
311
        AM_RANGE(0x6a0000, 0x6a0fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w)
322
312
        AM_RANGE(0x6b0000, 0x6b0003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w)
323
 
        AM_RANGE(0x6c0000, 0x6c001f) AM_DEVREADWRITE("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
324
 
        AM_RANGE(0x6d0000, 0x6d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
325
 
        AM_RANGE(0x6d2000, 0x6d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
326
 
        AM_RANGE(0x6d4000, 0x6d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
 
313
        AM_RANGE(0x6c0000, 0x6c001f) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
 
314
        AM_RANGE(0x6d0000, 0x6d1fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
315
        AM_RANGE(0x6d2000, 0x6d3fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
316
        AM_RANGE(0x6d4000, 0x6d5fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
327
317
        AM_RANGE(0x6e0000, 0x6e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
328
318
        AM_RANGE(0x6e4000, 0x6e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
329
319
        AM_RANGE(0x6f0000, 0x6f0003) AM_READONLY AM_WRITENOP // ?
330
 
        AM_RANGE(0x780000, 0x780003) AM_DEVREADWRITE8_MODERN("okisfx", okim6295_device, read, write, 0x000000ff)
 
320
        AM_RANGE(0x780000, 0x780003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
331
321
ADDRESS_MAP_END
332
322
 
333
323
 
334
324
/* Mitchell MT5601-0 PCB (prtytime, charlien, osman) */
335
 
static ADDRESS_MAP_START( mitchell156_map, AS_PROGRAM, 32 )
 
325
static ADDRESS_MAP_START( mitchell156_map, AS_PROGRAM, 32, simpl156_state )
336
326
        AM_RANGE(0x000000, 0x07ffff) AM_ROM
337
 
        AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8_MODERN("okisfx", okim6295_device, read, write, 0x000000ff)
338
 
        AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8_MODERN("okimusic", okim6295_device, read, write, 0x000000ff)
339
 
        AM_RANGE(0x180000, 0x187fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_BASE_MEMBER(simpl156_state, m_mainram) // main ram
 
327
        AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff)
 
328
        AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff)
 
329
        AM_RANGE(0x180000, 0x187fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram
340
330
        AM_RANGE(0x190000, 0x191fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w)
341
331
        AM_RANGE(0x1a0000, 0x1a0fff) AM_READWRITE(simpl156_palette_r,simpl156_palette_w)
342
332
        AM_RANGE(0x1b0000, 0x1b0003) AM_READWRITE(simpl156_system_r,simpl156_eeprom_w)
343
 
        AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
344
 
        AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
345
 
        AM_RANGE(0x1d2000, 0x1d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
346
 
        AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
 
333
        AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf_control_dword_r, deco16ic_pf_control_dword_w)
 
334
        AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
335
        AM_RANGE(0x1d2000, 0x1d3fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf1_data_dword_r, deco16ic_pf1_data_dword_w)
 
336
        AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE_LEGACY("tilegen1", deco16ic_pf2_data_dword_r, deco16ic_pf2_data_dword_w)
347
337
        AM_RANGE(0x1e0000, 0x1e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w)
348
338
        AM_RANGE(0x1e4000, 0x1e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w)
349
339
        AM_RANGE(0x1f0000, 0x1f0003) AM_READONLY AM_WRITENOP // ?
350
340
        AM_RANGE(0x200000, 0x200003) AM_READ(simpl156_inputs_read)
351
 
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_BASE_MEMBER(simpl156_state, m_systemram) // work ram (32-bit)
 
341
        AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit)
352
342
ADDRESS_MAP_END
353
343
 
354
344
 
1032
1022
 
1033
1023
static DRIVER_INIT( simpl156 )
1034
1024
{
1035
 
        UINT8 *rom = machine.region("okimusic")->base();
1036
 
        int length = machine.region("okimusic")->bytes();
 
1025
        UINT8 *rom = machine.root_device().memregion("okimusic")->base();
 
1026
        int length = machine.root_device().memregion("okimusic")->bytes();
1037
1027
        UINT8 *buf1 = auto_alloc_array(machine, UINT8, length);
1038
1028
 
1039
1029
        UINT32 x;
1062
1052
}
1063
1053
 
1064
1054
/* Everything seems more stable if we run the CPU speed x4 and use Idle skips.. maybe it has an internal multipler? */
1065
 
static READ32_HANDLER( joemacr_speedup_r )
 
1055
READ32_MEMBER(simpl156_state::joemacr_speedup_r)
1066
1056
{
1067
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
1068
 
        if (cpu_get_pc(&space->device()) == 0x284)
1069
 
                device_spin_until_time(&space->device(), attotime::from_usec(400));
1070
 
        return state->m_systemram[0x18/4];
 
1057
        if (cpu_get_pc(&space.device()) == 0x284)
 
1058
                device_spin_until_time(&space.device(), attotime::from_usec(400));
 
1059
        return m_systemram[0x18/4];
1071
1060
}
1072
1061
 
1073
1062
 
1074
1063
static DRIVER_INIT( joemacr )
1075
1064
{
1076
 
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0201018, 0x020101b, FUNC(joemacr_speedup_r) );
 
1065
        simpl156_state *state = machine.driver_data<simpl156_state>();
 
1066
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_read_handler(0x0201018, 0x020101b, read32_delegate(FUNC(simpl156_state::joemacr_speedup_r),state));
1077
1067
        DRIVER_INIT_CALL(simpl156);
1078
1068
}
1079
1069
 
1080
 
static READ32_HANDLER( chainrec_speedup_r )
 
1070
READ32_MEMBER(simpl156_state::chainrec_speedup_r)
1081
1071
{
1082
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
1083
 
        if (cpu_get_pc(&space->device()) == 0x2d4)
1084
 
                device_spin_until_time(&space->device(), attotime::from_usec(400));
1085
 
        return state->m_systemram[0x18/4];
 
1072
        if (cpu_get_pc(&space.device()) == 0x2d4)
 
1073
                device_spin_until_time(&space.device(), attotime::from_usec(400));
 
1074
        return m_systemram[0x18/4];
1086
1075
}
1087
1076
 
1088
1077
static DRIVER_INIT( chainrec )
1089
1078
{
1090
 
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0201018, 0x020101b, FUNC(chainrec_speedup_r) );
 
1079
        simpl156_state *state = machine.driver_data<simpl156_state>();
 
1080
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_read_handler(0x0201018, 0x020101b, read32_delegate(FUNC(simpl156_state::chainrec_speedup_r),state));
1091
1081
        DRIVER_INIT_CALL(simpl156);
1092
1082
}
1093
1083
 
1094
 
static READ32_HANDLER( prtytime_speedup_r )
 
1084
READ32_MEMBER(simpl156_state::prtytime_speedup_r)
1095
1085
{
1096
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
1097
 
        if (cpu_get_pc(&space->device()) == 0x4f0)
1098
 
                device_spin_until_time(&space->device(), attotime::from_usec(400));
1099
 
        return state->m_systemram[0xae0/4];
 
1086
        if (cpu_get_pc(&space.device()) == 0x4f0)
 
1087
                device_spin_until_time(&space.device(), attotime::from_usec(400));
 
1088
        return m_systemram[0xae0/4];
1100
1089
}
1101
1090
 
1102
1091
static DRIVER_INIT( prtytime )
1103
1092
{
1104
 
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0201ae0, 0x0201ae3, FUNC(prtytime_speedup_r) );
 
1093
        simpl156_state *state = machine.driver_data<simpl156_state>();
 
1094
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_read_handler(0x0201ae0, 0x0201ae3, read32_delegate(FUNC(simpl156_state::prtytime_speedup_r),state));
1105
1095
        DRIVER_INIT_CALL(simpl156);
1106
1096
}
1107
1097
 
1108
1098
 
1109
 
static READ32_HANDLER( charlien_speedup_r )
 
1099
READ32_MEMBER(simpl156_state::charlien_speedup_r)
1110
1100
{
1111
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
1112
 
        if (cpu_get_pc(&space->device()) == 0xc8c8)
1113
 
                device_spin_until_time(&space->device(), attotime::from_usec(400));
1114
 
        return state->m_systemram[0x10/4];
 
1101
        if (cpu_get_pc(&space.device()) == 0xc8c8)
 
1102
                device_spin_until_time(&space.device(), attotime::from_usec(400));
 
1103
        return m_systemram[0x10/4];
1115
1104
}
1116
1105
 
1117
1106
static DRIVER_INIT( charlien )
1118
1107
{
1119
 
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0201010, 0x0201013, FUNC(charlien_speedup_r) );
 
1108
        simpl156_state *state = machine.driver_data<simpl156_state>();
 
1109
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_read_handler(0x0201010, 0x0201013, read32_delegate(FUNC(simpl156_state::charlien_speedup_r),state));
1120
1110
        DRIVER_INIT_CALL(simpl156);
1121
1111
}
1122
1112
 
1123
 
static READ32_HANDLER( osman_speedup_r )
 
1113
READ32_MEMBER(simpl156_state::osman_speedup_r)
1124
1114
{
1125
 
        simpl156_state *state = space->machine().driver_data<simpl156_state>();
1126
 
        if (cpu_get_pc(&space->device()) == 0x5974)
1127
 
                device_spin_until_time(&space->device(), attotime::from_usec(400));
1128
 
        return state->m_systemram[0x10/4];
 
1115
        if (cpu_get_pc(&space.device()) == 0x5974)
 
1116
                device_spin_until_time(&space.device(), attotime::from_usec(400));
 
1117
        return m_systemram[0x10/4];
1129
1118
}
1130
1119
 
1131
1120
static DRIVER_INIT( osman )
1132
1121
{
1133
 
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_read_handler(0x0201010, 0x0201013, FUNC(osman_speedup_r) );
 
1122
        simpl156_state *state = machine.driver_data<simpl156_state>();
 
1123
        machine.device("maincpu")->memory().space(AS_PROGRAM)->install_read_handler(0x0201010, 0x0201013, read32_delegate(FUNC(simpl156_state::osman_speedup_r),state));
1134
1124
        DRIVER_INIT_CALL(simpl156);
1135
1125
 
1136
1126
}