177
177
static WRITE16_HANDLER( io_w )
179
armedf_state *state = space->machine->driver_data<armedf_state>();
179
armedf_state *state = space->machine().driver_data<armedf_state>();
181
COMBINE_DATA(&state->vreg);
181
COMBINE_DATA(&state->m_vreg);
182
182
/* bits 0 and 1 of armedf_vreg are coin counters */
183
183
/* bit 12 seems to handle screen flipping */
184
flip_screen_set(space->machine, state->vreg & 0x1000);
184
flip_screen_set(space->machine(), state->m_vreg & 0x1000);
187
187
static WRITE16_HANDLER( terraf_io_w )
189
armedf_state *state = space->machine->driver_data<armedf_state>();
189
armedf_state *state = space->machine().driver_data<armedf_state>();
191
COMBINE_DATA(&state->vreg);
191
COMBINE_DATA(&state->m_vreg);
192
192
/* bits 0 and 1 of armedf_vreg are coin counters */
193
193
/* bit 12 seems to handle screen flipping */
194
flip_screen_set(space->machine, state->vreg & 0x1000);
194
flip_screen_set(space->machine(), state->m_vreg & 0x1000);
196
if ((state->vreg & 0x4000) && !(state->vreg & 0x0100))
196
if ((state->m_vreg & 0x4000) && !(state->m_vreg & 0x0100))
199
199
for (i = 0x10; i < 0x1000; i++)
201
state->text_videoram[i] = 0x20;
201
state->m_text_videoram[i] = 0x20;
203
tilemap_mark_all_tiles_dirty(state->tx_tilemap);
203
tilemap_mark_all_tiles_dirty(state->m_tx_tilemap);
204
204
//logerror("vreg WIPE TX\n");
206
//logerror("VReg = %04x\n", state->vreg);
206
//logerror("VReg = %04x\n", state->m_vreg);
210
210
static WRITE16_HANDLER( kodure_io_w )
212
armedf_state *state = space->machine->driver_data<armedf_state>();
212
armedf_state *state = space->machine().driver_data<armedf_state>();
214
COMBINE_DATA(&state->vreg);
214
COMBINE_DATA(&state->m_vreg);
215
215
/* bits 0 and 1 of armedf_vreg are coin counters */
216
216
/* bit 12 seems to handle screen flipping */
217
flip_screen_set(space->machine, state->vreg & 0x1000);
217
flip_screen_set(space->machine(), state->m_vreg & 0x1000);
219
219
/* This is a temporary condition specification. */
220
if (!(state->vreg & 0x0080))
220
if (!(state->m_vreg & 0x0080))
223
223
for (i = 0; i < 0x1000; i++)
233
233
soundlatch_w(space, 0, ((data & 0x7f) << 1) | 1);
236
static READ8_HANDLER( soundlatch_clear_r )
238
soundlatch_clear_w(space, 0, 0);
236
242
#ifdef UNUSED_FUNCTION
237
243
static WRITE16_HANDLER( legion_command_c )
239
armedf_state *state = space->machine->driver_data<armedf_state>();
245
armedf_state *state = space->machine().driver_data<armedf_state>();
241
COMBINE_DATA(&state->legion_cmd[offset]);
247
COMBINE_DATA(&state->m_legion_cmd[offset]);
242
248
//logerror("Legion CMD %04x=%04x", offset, data);
252
258
*************************************/
254
static ADDRESS_MAP_START( terraf_map, ADDRESS_SPACE_PROGRAM, 16 )
260
static ADDRESS_MAP_START( terraf_map, AS_PROGRAM, 16 )
255
261
AM_RANGE(0x000000, 0x04ffff) AM_ROM
256
262
AM_RANGE(0x060000, 0x0603ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
257
263
AM_RANGE(0x060400, 0x063fff) AM_RAM
258
264
AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram)
259
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, text_videoram)
265
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, m_text_videoram)
260
266
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
261
267
AM_RANGE(0x06c000, 0x06c9ff) AM_RAM
262
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, fg_videoram)
263
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, bg_videoram)
268
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram)
269
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram)
264
270
AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
265
271
AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
266
272
AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
279
285
/* the same for now */
280
static ADDRESS_MAP_START( terrafb_map, ADDRESS_SPACE_PROGRAM, 16 )
286
static ADDRESS_MAP_START( terrafb_map, AS_PROGRAM, 16 )
281
287
AM_RANGE(0x000000, 0x04ffff) AM_ROM
282
288
AM_RANGE(0x060000, 0x0603ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
283
289
AM_RANGE(0x060400, 0x063fff) AM_RAM
284
290
AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram)
285
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, text_videoram)
291
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, m_text_videoram)
286
292
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
287
293
AM_RANGE(0x06c000, 0x06c9ff) AM_RAM
288
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, fg_videoram)
289
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, bg_videoram)
294
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram)
295
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram)
290
296
AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
291
297
AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
292
298
AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
302
308
AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(terraf_fg_scroll_msb_arm_w) /* written between two consecutive writes to 7c008 */
305
static ADDRESS_MAP_START( kodure_map, ADDRESS_SPACE_PROGRAM, 16 )
311
static ADDRESS_MAP_START( kodure_map, AS_PROGRAM, 16 )
306
312
AM_RANGE(0x000000, 0x05ffff) AM_ROM
307
313
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
308
314
AM_RANGE(0x061000, 0x063fff) AM_RAM
309
315
AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram)
310
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, text_videoram)
316
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, m_text_videoram)
311
317
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
312
318
AM_RANGE(0x06c000, 0x06c9ff) AM_RAM
313
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, fg_videoram)
314
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, bg_videoram)
319
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram)
320
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram)
315
321
AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
316
322
AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
317
323
AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
324
330
AM_RANGE(0xffd000, 0xffd001) AM_WRITENOP /* ? */
327
static ADDRESS_MAP_START( cclimbr2_map, ADDRESS_SPACE_PROGRAM, 16 )
333
static ADDRESS_MAP_START( cclimbr2_map, AS_PROGRAM, 16 )
328
334
AM_RANGE(0x000000, 0x05ffff) AM_ROM
329
335
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
330
336
AM_RANGE(0x061000, 0x063fff) AM_RAM
331
337
AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram)
332
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, text_videoram)
338
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, m_text_videoram)
333
339
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
334
340
AM_RANGE(0x06c000, 0x06c9ff) AM_RAM
335
341
AM_RANGE(0x06ca00, 0x06cbff) AM_WRITEONLY
336
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, fg_videoram)
337
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, bg_videoram)
342
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram)
343
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram)
338
344
AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
339
345
AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
340
346
AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
347
353
AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
350
static ADDRESS_MAP_START( legion_map, ADDRESS_SPACE_PROGRAM, 16 )
356
static ADDRESS_MAP_START( legion_map, AS_PROGRAM, 16 )
351
357
AM_RANGE(0x000000, 0x05ffff) AM_ROM
352
358
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
353
359
AM_RANGE(0x061000, 0x063fff) AM_RAM
354
360
AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram)
355
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, text_videoram)
361
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, m_text_videoram)
356
362
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
357
363
AM_RANGE(0x06c000, 0x06c9ff) AM_RAM
358
364
AM_RANGE(0x06ca00, 0x06cbff) AM_WRITEONLY
359
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, fg_videoram)
360
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, bg_videoram)
365
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram)
366
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram)
361
367
AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
362
368
AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
363
369
AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
370
376
AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
373
static ADDRESS_MAP_START( legiono_map, ADDRESS_SPACE_PROGRAM, 16 )
379
static ADDRESS_MAP_START( legiono_map, AS_PROGRAM, 16 )
374
380
AM_RANGE(0x000000, 0x03ffff) AM_ROM
375
AM_RANGE(0x040000, 0x04003f) AM_WRITEONLY AM_BASE_MEMBER(armedf_state, legion_cmd)
381
AM_RANGE(0x040000, 0x04003f) AM_WRITEONLY AM_BASE_MEMBER(armedf_state, m_legion_cmd)
376
382
AM_RANGE(0x040040, 0x05ffff) AM_ROM
377
383
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
378
384
AM_RANGE(0x061000, 0x063fff) AM_RAM
379
385
AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram)
380
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, text_videoram)
386
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, m_text_videoram)
381
387
AM_RANGE(0x06a000, 0x06a9ff) AM_RAM
382
388
AM_RANGE(0x06c000, 0x06c9ff) AM_RAM
383
389
AM_RANGE(0x06ca00, 0x06cbff) AM_WRITEONLY
384
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, fg_videoram)
385
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, bg_videoram)
390
AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram)
391
AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram)
386
392
AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1")
387
393
AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2")
388
394
AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1")
395
401
//AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */
398
static ADDRESS_MAP_START( armedf_map, ADDRESS_SPACE_PROGRAM, 16 )
404
static ADDRESS_MAP_START( armedf_map, AS_PROGRAM, 16 )
399
405
AM_RANGE(0x000000, 0x05ffff) AM_ROM
400
406
AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
401
407
AM_RANGE(0x061000, 0x065fff) AM_RAM
402
AM_RANGE(0x066000, 0x066fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, bg_videoram)
403
AM_RANGE(0x067000, 0x067fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, fg_videoram)
404
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, text_videoram)
408
AM_RANGE(0x066000, 0x066fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram)
409
AM_RANGE(0x067000, 0x067fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram)
410
AM_RANGE(0x068000, 0x069fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, m_text_videoram)
405
411
AM_RANGE(0x06a000, 0x06afff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram)
406
412
AM_RANGE(0x06b000, 0x06bfff) AM_RAM
407
413
AM_RANGE(0x06c000, 0x06c001) AM_READ_PORT("P1")
421
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
427
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
422
428
AM_RANGE(0x0000, 0xf7ff) AM_ROM
423
429
AM_RANGE(0xf800, 0xffff) AM_RAM
426
static ADDRESS_MAP_START( cclimbr2_soundmap, ADDRESS_SPACE_PROGRAM, 8 )
432
static ADDRESS_MAP_START( cclimbr2_soundmap, AS_PROGRAM, 8 )
427
433
AM_RANGE(0x0000, 0xbfff) AM_ROM
428
434
AM_RANGE(0xc000, 0xffff) AM_RAM
432
static ADDRESS_MAP_START( terrafb_extraz80_map, ADDRESS_SPACE_PROGRAM, 8 )
438
static ADDRESS_MAP_START( terrafb_extraz80_map, AS_PROGRAM, 8 )
433
439
AM_RANGE(0x0000, 0x3fff) AM_ROM
436
static ADDRESS_MAP_START( terrafb_extraz80_portmap, ADDRESS_SPACE_IO, 8 )
442
static ADDRESS_MAP_START( terrafb_extraz80_portmap, AS_IO, 8 )
437
443
ADDRESS_MAP_GLOBAL_MASK(0xff)
441
static READ8_HANDLER( soundlatch_clear_r )
443
soundlatch_clear_w(space, 0, 0);
447
static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
446
static ADDRESS_MAP_START( sound_portmap, AS_IO, 8 )
448
447
ADDRESS_MAP_GLOBAL_MASK(0xff)
449
448
AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3812_w)
450
449
AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_signed_w)
763
762
static MACHINE_START( armedf )
765
armedf_state *state = machine->driver_data<armedf_state>();
764
armedf_state *state = machine.driver_data<armedf_state>();
767
state_save_register_global(machine, state->mcu_mode);
768
state_save_register_global(machine, state->old_mcu_mode);
769
state_save_register_global(machine, state->scroll_msb);
770
state_save_register_global(machine, state->waiting_msb);
771
state_save_register_global(machine, state->vreg);
772
state_save_register_global(machine, state->fg_scrollx);
773
state_save_register_global(machine, state->fg_scrolly);
774
state_save_register_global(machine, state->bg_scrollx);
775
state_save_register_global(machine, state->bg_scrolly);
766
state->save_item(NAME(state->m_mcu_mode));
767
state->save_item(NAME(state->m_old_mcu_mode));
768
state->save_item(NAME(state->m_scroll_msb));
769
state->save_item(NAME(state->m_waiting_msb));
770
state->save_item(NAME(state->m_vreg));
771
state->save_item(NAME(state->m_fg_scrollx));
772
state->save_item(NAME(state->m_fg_scrolly));
773
state->save_item(NAME(state->m_bg_scrollx));
774
state->save_item(NAME(state->m_bg_scrolly));
778
777
static MACHINE_RESET( armedf )
780
armedf_state *state = machine->driver_data<armedf_state>();
779
armedf_state *state = machine.driver_data<armedf_state>();
783
state->old_mcu_mode = 0;
784
state->scroll_msb = 0;
785
state->waiting_msb = 0;
787
state->fg_scrollx = 0;
788
state->fg_scrolly = 0;
789
state->bg_scrollx = 0;
790
state->bg_scrolly = 0;
781
state->m_mcu_mode = 0;
782
state->m_old_mcu_mode = 0;
783
state->m_scroll_msb = 0;
784
state->m_waiting_msb = 0;
786
state->m_fg_scrollx = 0;
787
state->m_fg_scrolly = 0;
788
state->m_bg_scrollx = 0;
789
state->m_bg_scrolly = 0;
794
793
static MACHINE_CONFIG_START( terraf, armedf_state )
796
795
/* basic machine hardware */
797
MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz?? */
796
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz?
798
797
MCFG_CPU_PROGRAM_MAP(terraf_map)
799
798
MCFG_CPU_VBLANK_INT("screen", irq1_line_hold)
801
MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz???? */
800
MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz?
802
801
MCFG_CPU_PROGRAM_MAP(sound_map)
803
802
MCFG_CPU_IO_MAP(sound_portmap)
804
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,128)
803
MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ?
806
805
MCFG_MACHINE_START(armedf)
807
806
MCFG_MACHINE_RESET(armedf)
815
814
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
816
815
MCFG_SCREEN_SIZE(64*8, 32*8)
817
816
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
817
MCFG_SCREEN_UPDATE(armedf)
818
MCFG_SCREEN_EOF(armedf)
818
820
MCFG_GFXDECODE(armedf)
819
822
MCFG_PALETTE_LENGTH(2048)
821
MCFG_VIDEO_EOF(armedf)
822
824
MCFG_VIDEO_START(armedf)
823
MCFG_VIDEO_UPDATE(armedf)
825
826
/* sound hardware */
826
827
MCFG_SPEAKER_STANDARD_MONO("mono")
828
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
829
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2)
829
830
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
831
832
MCFG_SOUND_ADD("dac1", DAC, 0)
832
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
833
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
834
835
MCFG_SOUND_ADD("dac2", DAC, 0)
835
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
836
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
836
837
MACHINE_CONFIG_END
838
839
static MACHINE_CONFIG_START( terrafb, armedf_state )
840
841
/* basic machine hardware */
841
MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz?? */
842
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz?
842
843
MCFG_CPU_PROGRAM_MAP(terrafb_map)
843
844
MCFG_CPU_VBLANK_INT("screen", irq1_line_hold)
845
MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz???? */
846
MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz?
846
847
MCFG_CPU_PROGRAM_MAP(sound_map)
847
848
MCFG_CPU_IO_MAP(sound_portmap)
848
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,128)
849
MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ?
850
MCFG_CPU_ADD("extra", Z80, 3072000) /* 3.072 MHz???? */
851
MCFG_CPU_ADD("extra", Z80, XTAL_8MHz/2) // 4mhz?
851
852
MCFG_CPU_PROGRAM_MAP(terrafb_extraz80_map)
852
853
MCFG_CPU_IO_MAP(terrafb_extraz80_portmap)
853
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,128)
854
MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ?
855
856
MCFG_MACHINE_START(armedf)
856
857
MCFG_MACHINE_RESET(armedf)
864
865
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
865
866
MCFG_SCREEN_SIZE(64*8, 32*8)
866
867
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
868
MCFG_SCREEN_UPDATE(armedf)
869
MCFG_SCREEN_EOF(armedf)
867
871
MCFG_GFXDECODE(armedf)
868
872
MCFG_PALETTE_LENGTH(2048)
870
MCFG_VIDEO_EOF(armedf)
871
874
MCFG_VIDEO_START(armedf)
872
MCFG_VIDEO_UPDATE(armedf)
874
876
/* sound hardware */
875
877
MCFG_SPEAKER_STANDARD_MONO("mono")
877
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
879
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2)
878
880
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
880
882
MCFG_SOUND_ADD("dac1", DAC, 0)
881
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
883
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
883
885
MCFG_SOUND_ADD("dac2", DAC, 0)
884
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
886
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
885
887
MACHINE_CONFIG_END
887
889
static MACHINE_CONFIG_START( kodure, armedf_state )
889
891
/* basic machine hardware */
890
MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz?? */
892
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz?
891
893
MCFG_CPU_PROGRAM_MAP(kodure_map)
892
894
MCFG_CPU_VBLANK_INT("screen", irq1_line_hold)
894
MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz???? */
896
MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz?
895
897
MCFG_CPU_PROGRAM_MAP(sound_map)
896
898
MCFG_CPU_IO_MAP(sound_portmap)
897
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,128)
899
MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ?
899
901
MCFG_MACHINE_START(armedf)
900
902
MCFG_MACHINE_RESET(armedf)
908
910
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
909
911
MCFG_SCREEN_SIZE(64*8, 32*8)
910
912
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
913
MCFG_SCREEN_UPDATE(armedf)
914
MCFG_SCREEN_EOF(armedf)
911
916
MCFG_GFXDECODE(armedf)
912
917
MCFG_PALETTE_LENGTH(2048)
914
MCFG_VIDEO_EOF(armedf)
915
919
MCFG_VIDEO_START(armedf)
916
MCFG_VIDEO_UPDATE(armedf)
918
921
/* sound hardware */
919
922
MCFG_SPEAKER_STANDARD_MONO("mono")
921
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
924
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2)
922
925
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
924
927
MCFG_SOUND_ADD("dac1", DAC, 0)
931
934
static MACHINE_CONFIG_START( armedf, armedf_state )
933
936
/* basic machine hardware */
934
MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz?? */
937
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz?
935
938
MCFG_CPU_PROGRAM_MAP(armedf_map)
936
939
MCFG_CPU_VBLANK_INT("screen", irq1_line_hold)
938
MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz???? */
941
MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz?
939
942
MCFG_CPU_PROGRAM_MAP(sound_map)
940
943
MCFG_CPU_IO_MAP(sound_portmap)
941
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,128)
944
MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ?
943
946
MCFG_MACHINE_START(armedf)
944
947
MCFG_MACHINE_RESET(armedf)
952
955
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
953
956
MCFG_SCREEN_SIZE(64*8, 32*8)
954
957
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 )
958
MCFG_SCREEN_UPDATE(armedf)
959
MCFG_SCREEN_EOF(armedf)
955
961
MCFG_GFXDECODE(armedf)
956
962
MCFG_PALETTE_LENGTH(2048)
958
MCFG_VIDEO_EOF(armedf)
959
964
MCFG_VIDEO_START(armedf)
960
MCFG_VIDEO_UPDATE(armedf)
962
966
/* sound hardware */
963
967
MCFG_SPEAKER_STANDARD_MONO("mono")
965
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
969
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2)
966
970
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
968
972
MCFG_SOUND_ADD("dac1", DAC, 0)
969
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
973
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
971
975
MCFG_SOUND_ADD("dac2", DAC, 0)
972
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
976
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
973
977
MACHINE_CONFIG_END
975
979
static MACHINE_CONFIG_START( cclimbr2, armedf_state )
977
981
/* basic machine hardware */
978
MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz?? */
982
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz?
979
983
MCFG_CPU_PROGRAM_MAP(cclimbr2_map)
980
984
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
982
MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz???? */
986
MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz?
983
987
MCFG_CPU_PROGRAM_MAP(cclimbr2_soundmap)
984
988
MCFG_CPU_IO_MAP(sound_portmap)
985
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,128)
989
MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ?
987
991
MCFG_MACHINE_START(armedf)
988
992
MCFG_MACHINE_RESET(armedf)
996
1000
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
997
1001
MCFG_SCREEN_SIZE(64*8, 32*8)
998
1002
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
1003
MCFG_SCREEN_UPDATE(armedf)
1004
MCFG_SCREEN_EOF(armedf)
999
1006
MCFG_GFXDECODE(armedf)
1000
1007
MCFG_PALETTE_LENGTH(2048)
1002
MCFG_VIDEO_EOF(armedf)
1003
1009
MCFG_VIDEO_START(armedf)
1004
MCFG_VIDEO_UPDATE(armedf)
1006
1011
/* sound hardware */
1007
1012
MCFG_SPEAKER_STANDARD_MONO("mono")
1009
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
1014
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2)
1010
1015
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
1012
1017
MCFG_SOUND_ADD("dac1", DAC, 0)
1019
1024
static MACHINE_CONFIG_START( legion, armedf_state )
1021
1026
/* basic machine hardware */
1022
MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz?? */
1027
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz?
1023
1028
MCFG_CPU_PROGRAM_MAP(legion_map)
1024
1029
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
1026
MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz???? */
1031
MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz?
1027
1032
MCFG_CPU_PROGRAM_MAP(cclimbr2_soundmap)
1028
1033
MCFG_CPU_IO_MAP(sound_portmap)
1029
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,128)
1034
MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ?
1031
1036
MCFG_MACHINE_START(armedf)
1032
1037
MCFG_MACHINE_RESET(armedf)
1040
1045
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
1041
1046
MCFG_SCREEN_SIZE(64*8, 32*8)
1042
1047
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
1048
MCFG_SCREEN_UPDATE(armedf)
1049
MCFG_SCREEN_EOF(armedf)
1043
1051
MCFG_GFXDECODE(armedf)
1044
1052
MCFG_PALETTE_LENGTH(2048)
1046
MCFG_VIDEO_EOF(armedf)
1047
1054
MCFG_VIDEO_START(armedf)
1048
MCFG_VIDEO_UPDATE(armedf)
1050
1056
/* sound hardware */
1051
1057
MCFG_SPEAKER_STANDARD_MONO("mono")
1053
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
1059
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2)
1054
1060
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
1056
1062
MCFG_SOUND_ADD("dac1", DAC, 0)
1063
1069
static MACHINE_CONFIG_START( legiono, armedf_state )
1065
1071
/* basic machine hardware */
1066
MCFG_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz?? */
1072
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz?
1067
1073
MCFG_CPU_PROGRAM_MAP(legiono_map)
1068
1074
MCFG_CPU_VBLANK_INT("screen", irq2_line_hold)
1070
MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz???? */
1076
MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz?
1071
1077
MCFG_CPU_PROGRAM_MAP(cclimbr2_soundmap)
1072
1078
MCFG_CPU_IO_MAP(sound_portmap)
1073
MCFG_CPU_VBLANK_INT_HACK(irq0_line_hold,128)
1079
MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ?
1075
1081
MCFG_MACHINE_START(armedf)
1076
1082
MCFG_MACHINE_RESET(armedf)
1084
1090
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
1085
1091
MCFG_SCREEN_SIZE(64*8, 32*8)
1086
1092
MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
1093
MCFG_SCREEN_UPDATE(armedf)
1094
MCFG_SCREEN_EOF(armedf)
1087
1096
MCFG_GFXDECODE(armedf)
1088
1097
MCFG_PALETTE_LENGTH(2048)
1090
MCFG_VIDEO_EOF(armedf)
1091
1099
MCFG_VIDEO_START(armedf)
1092
MCFG_VIDEO_UPDATE(armedf)
1094
1101
/* sound hardware */
1095
1102
MCFG_SPEAKER_STANDARD_MONO("mono")
1097
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000)
1104
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2)
1098
1105
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
1100
1107
MCFG_SOUND_ADD("dac1", DAC, 0)
1502
1509
static DRIVER_INIT( terraf )
1504
armedf_state *state = machine->driver_data<armedf_state>();
1505
state->scroll_type = 0;
1511
armedf_state *state = machine.driver_data<armedf_state>();
1512
state->m_scroll_type = 0;
1508
1515
static DRIVER_INIT( terrafu )
1510
armedf_state *state = machine->driver_data<armedf_state>();
1511
state->scroll_type = 5;
1517
armedf_state *state = machine.driver_data<armedf_state>();
1518
state->m_scroll_type = 5;
1514
1521
static DRIVER_INIT( armedf )
1516
armedf_state *state = machine->driver_data<armedf_state>();
1517
state->scroll_type = 1;
1523
armedf_state *state = machine.driver_data<armedf_state>();
1524
state->m_scroll_type = 1;
1521
1528
static DRIVER_INIT( kodure )
1523
armedf_state *state = machine->driver_data<armedf_state>();
1524
state->scroll_type = 2;
1530
armedf_state *state = machine.driver_data<armedf_state>();
1531
state->m_scroll_type = 2;
1527
1534
static DRIVER_INIT( legion )
1529
armedf_state *state = machine->driver_data<armedf_state>();
1536
armedf_state *state = machine.driver_data<armedf_state>();
1530
1537
#if LEGION_HACK
1531
1538
/* This is a hack to allow you to use the extra features
1532
1539
of 3 of the "Unused" Dip Switches (see notes above). */
1533
UINT16 *RAM = (UINT16 *)machine->region("maincpu")->base();
1540
UINT16 *RAM = (UINT16 *)machine.region("maincpu")->base();
1534
1541
RAM[0x0001d6 / 2] = 0x0001;
1535
1542
/* To avoid checksum error */
1536
1543
RAM[0x000488 / 2] = 0x4e71;
1539
state->scroll_type = 3;
1546
state->m_scroll_type = 3;
1542
1549
static DRIVER_INIT( legiono )
1544
armedf_state *state = machine->driver_data<armedf_state>();
1551
armedf_state *state = machine.driver_data<armedf_state>();
1545
1552
#if LEGION_HACK
1546
1553
/* This is a hack to allow you to use the extra features
1547
1554
of 3 of the "Unused" Dip Switches (see notes above). */
1548
UINT16 *RAM = (UINT16 *)machine->region("maincpu")->base();
1555
UINT16 *RAM = (UINT16 *)machine.region("maincpu")->base();
1549
1556
RAM[0x0001d6/2] = 0x0001;
1550
1557
/* No need to patch the checksum routine (see notes) ! */
1553
state->scroll_type = 6;
1560
state->m_scroll_type = 6;
1556
1563
static DRIVER_INIT( cclimbr2 )
1558
armedf_state *state = machine->driver_data<armedf_state>();
1559
state->scroll_type = 4;
1565
armedf_state *state = machine.driver_data<armedf_state>();
1566
state->m_scroll_type = 4;