150
149
data &= 0x0000ffff;
151
150
mem_mask &= 0x0000ffff;
153
COMBINE_DATA(&space->machine().generic.paletteram.u16[offset]);
152
COMBINE_DATA(&m_generic_paletteram_16[offset]);
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));
161
static READ32_HANDLER( simpl156_system_r )
160
READ32_MEMBER(simpl156_state::simpl156_system_r)
163
162
UINT32 returndata;
165
returndata = input_port_read(space->machine(), "IN1");
164
returndata = ioport("IN1")->read();
167
166
return returndata;
170
static WRITE32_HANDLER( simpl156_eeprom_w )
169
WRITE32_MEMBER(simpl156_state::simpl156_eeprom_w)
172
simpl156_state *state = space->machine().driver_data<simpl156_state>();
175
173
//okibank = data & 0x07;
177
state->m_okimusic->set_bank_base(0x40000 * (data & 0x7));
175
m_okimusic->set_bank_base(0x40000 * (data & 0x7));
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);
185
183
/* we need to throw away bits for all ram accesses as the devices are connected as 16-bit */
187
static READ32_HANDLER( simpl156_spriteram_r )
189
simpl156_state *state = space->machine().driver_data<simpl156_state>();
190
return state->m_spriteram[offset] ^ 0xffff0000;
193
static WRITE32_HANDLER( simpl156_spriteram_w )
195
simpl156_state *state = space->machine().driver_data<simpl156_state>();
197
mem_mask &= 0x0000ffff;
199
COMBINE_DATA(&state->m_spriteram[offset]);
203
static READ32_HANDLER( simpl156_mainram_r )
205
simpl156_state *state = space->machine().driver_data<simpl156_state>();
206
return state->m_mainram[offset]^0xffff0000;
209
static WRITE32_HANDLER( simpl156_mainram_w )
211
simpl156_state *state = space->machine().driver_data<simpl156_state>();
213
mem_mask &= 0x0000ffff;
215
COMBINE_DATA(&state->m_mainram[offset]);
218
static READ32_HANDLER( simpl156_pf1_rowscroll_r )
220
simpl156_state *state = space->machine().driver_data<simpl156_state>();
221
return state->m_pf1_rowscroll[offset] ^ 0xffff0000;
224
static WRITE32_HANDLER( simpl156_pf1_rowscroll_w )
226
simpl156_state *state = space->machine().driver_data<simpl156_state>();
228
mem_mask &= 0x0000ffff;
230
COMBINE_DATA(&state->m_pf1_rowscroll[offset]);
233
static READ32_HANDLER( simpl156_pf2_rowscroll_r )
235
simpl156_state *state = space->machine().driver_data<simpl156_state>();
236
return state->m_pf2_rowscroll[offset] ^ 0xffff0000;
239
static WRITE32_HANDLER( simpl156_pf2_rowscroll_w )
241
simpl156_state *state = space->machine().driver_data<simpl156_state>();
243
mem_mask &= 0x0000ffff;
245
COMBINE_DATA(&state->m_pf2_rowscroll[offset]);
185
READ32_MEMBER(simpl156_state::simpl156_spriteram_r)
187
return m_spriteram[offset] ^ 0xffff0000;
190
WRITE32_MEMBER(simpl156_state::simpl156_spriteram_w)
193
mem_mask &= 0x0000ffff;
195
COMBINE_DATA(&m_spriteram[offset]);
199
READ32_MEMBER(simpl156_state::simpl156_mainram_r)
201
return m_mainram[offset]^0xffff0000;
204
WRITE32_MEMBER(simpl156_state::simpl156_mainram_w)
207
mem_mask &= 0x0000ffff;
209
COMBINE_DATA(&m_mainram[offset]);
212
READ32_MEMBER(simpl156_state::simpl156_pf1_rowscroll_r)
214
return m_pf1_rowscroll[offset] ^ 0xffff0000;
217
WRITE32_MEMBER(simpl156_state::simpl156_pf1_rowscroll_w)
220
mem_mask &= 0x0000ffff;
222
COMBINE_DATA(&m_pf1_rowscroll[offset]);
225
READ32_MEMBER(simpl156_state::simpl156_pf2_rowscroll_r)
227
return m_pf2_rowscroll[offset] ^ 0xffff0000;
230
WRITE32_MEMBER(simpl156_state::simpl156_pf2_rowscroll_w)
233
mem_mask &= 0x0000ffff;
235
COMBINE_DATA(&m_pf2_rowscroll[offset]);
248
238
/* Memory Map controled by PALs */
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)
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)
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)
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)
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)
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)
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];
1074
1063
static DRIVER_INIT( joemacr )
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);
1080
static READ32_HANDLER( chainrec_speedup_r )
1070
READ32_MEMBER(simpl156_state::chainrec_speedup_r)
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];
1088
1077
static DRIVER_INIT( chainrec )
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);
1094
static READ32_HANDLER( prtytime_speedup_r )
1084
READ32_MEMBER(simpl156_state::prtytime_speedup_r)
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];
1102
1091
static DRIVER_INIT( prtytime )
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);
1109
static READ32_HANDLER( charlien_speedup_r )
1099
READ32_MEMBER(simpl156_state::charlien_speedup_r)
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];
1117
1106
static DRIVER_INIT( charlien )
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);
1123
static READ32_HANDLER( osman_speedup_r )
1113
READ32_MEMBER(simpl156_state::osman_speedup_r)
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];
1131
1120
static DRIVER_INIT( osman )
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);