44
44
blitz68k_state(const machine_config &mconfig, device_type type, const char *tag)
45
45
: driver_device(mconfig, type, tag),
46
m_nvram(*this, "nvram") { }
46
m_nvram(*this, "nvram"),
47
m_frame_buffer(*this, "frame_buffer"),
48
m_blit_romaddr(*this, "blit_romaddr"),
49
m_blit_attr1_ram(*this, "blit_attr1_ram"),
50
m_blit_dst_ram_loword(*this, "blitram_loword"),
51
m_blit_attr2_ram(*this, "blit_attr2_ram"),
52
m_blit_dst_ram_hiword(*this, "blitram_hiword"),
53
m_blit_vregs(*this, "blit_vregs"),
54
m_blit_transpen(*this, "blit_transpen"),
55
m_leds0(*this, "leds0"),
56
m_leds1(*this, "leds1"),
57
m_leds2(*this, "leds2") { }
48
59
optional_shared_ptr<UINT16> m_nvram;
49
60
UINT8 *m_blit_buffer;
50
UINT16 *m_frame_buffer;
51
UINT16 *m_blit_romaddr;
52
UINT16 *m_blit_attr1_ram;
53
UINT16 *m_blit_dst_ram_loword;
54
UINT16 *m_blit_attr2_ram;
55
UINT16 *m_blit_dst_ram_hiword;
57
UINT16 *m_blit_transpen;
61
optional_shared_ptr<UINT16> m_frame_buffer;
62
optional_shared_ptr<UINT16> m_blit_romaddr;
63
optional_shared_ptr<UINT16> m_blit_attr1_ram;
64
optional_shared_ptr<UINT16> m_blit_dst_ram_loword;
65
optional_shared_ptr<UINT16> m_blit_attr2_ram;
66
optional_shared_ptr<UINT16> m_blit_dst_ram_hiword;
67
optional_shared_ptr<UINT16> m_blit_vregs;
68
optional_shared_ptr<UINT16> m_blit_transpen;
69
optional_shared_ptr<UINT16> m_leds0;
70
optional_shared_ptr<UINT16> m_leds1;
71
optional_shared_ptr<UINT16> m_leds2;
72
DECLARE_WRITE16_MEMBER(blit_copy_w);
73
DECLARE_READ8_MEMBER(blit_status_r);
74
DECLARE_WRITE8_MEMBER(blit_x_w);
75
DECLARE_WRITE8_MEMBER(blit_y_w);
76
DECLARE_WRITE8_MEMBER(blit_xy_w);
77
DECLARE_WRITE8_MEMBER(blit_w_w);
78
DECLARE_WRITE8_MEMBER(blit_h_w);
79
DECLARE_WRITE8_MEMBER(blit_wh_w);
80
DECLARE_WRITE8_MEMBER(blit_addr0_w);
81
DECLARE_WRITE8_MEMBER(blit_addr1_w);
82
DECLARE_WRITE8_MEMBER(blit_addr01_w);
83
DECLARE_WRITE8_MEMBER(blit_addr2_w);
84
DECLARE_WRITE8_MEMBER(blit_pens_w);
85
DECLARE_WRITE8_MEMBER(blit_pen0_w);
86
DECLARE_WRITE8_MEMBER(blit_pen1_w);
87
DECLARE_WRITE8_MEMBER(blit_pen2_w);
88
DECLARE_WRITE8_MEMBER(blit_pen3_w);
89
DECLARE_WRITE8_MEMBER(blit_flag0_w);
90
DECLARE_WRITE8_MEMBER(blit_flag1_w);
91
DECLARE_WRITE8_MEMBER(blit_flipx_w);
92
DECLARE_WRITE8_MEMBER(blit_flipy_w);
93
DECLARE_WRITE8_MEMBER(blit_solid_w);
94
DECLARE_WRITE8_MEMBER(blit_trans_w);
95
DECLARE_WRITE8_MEMBER(blit_flag6_w);
96
DECLARE_WRITE8_MEMBER(blit_flag7_w);
97
DECLARE_WRITE8_MEMBER(blit_flags_w);
98
DECLARE_WRITE8_MEMBER(blit_draw_w);
99
DECLARE_WRITE8_MEMBER(blit_hwyxa_draw_w);
100
DECLARE_READ16_MEMBER(blitter_status_r);
101
DECLARE_WRITE16_MEMBER(lamps_w);
102
DECLARE_READ16_MEMBER(test_r);
103
DECLARE_WRITE16_MEMBER(irq_callback_w);
104
DECLARE_WRITE16_MEMBER(sound_write_w);
105
DECLARE_READ8_MEMBER(bankrob_mcu1_r);
106
DECLARE_READ8_MEMBER(bankrob_mcu2_r);
107
DECLARE_READ8_MEMBER(bankrob_mcu_status_read_r);
108
DECLARE_READ8_MEMBER(bankrob_mcu_status_write_r);
109
DECLARE_WRITE8_MEMBER(bankrob_mcu1_w);
110
DECLARE_WRITE8_MEMBER(bankrob_mcu2_w);
111
DECLARE_READ8_MEMBER(bankroba_mcu1_r);
112
DECLARE_READ8_MEMBER(bankroba_mcu2_r);
113
DECLARE_READ8_MEMBER(bankroba_mcu1_status_write_r);
114
DECLARE_READ8_MEMBER(bankroba_mcu2_status_write_r);
115
DECLARE_WRITE8_MEMBER(bankroba_mcu1_w);
116
DECLARE_WRITE8_MEMBER(bankroba_mcu2_w);
117
DECLARE_WRITE16_MEMBER(cjffruit_leds1_w);
118
DECLARE_WRITE16_MEMBER(cjffruit_leds2_w);
119
DECLARE_WRITE16_MEMBER(cjffruit_leds3_w);
120
DECLARE_READ8_MEMBER(crtc_r);
121
DECLARE_WRITE8_MEMBER(crtc_w);
122
DECLARE_READ16_MEMBER(cjffruit_mcu_r);
123
DECLARE_WRITE16_MEMBER(cjffruit_mcu_w);
124
DECLARE_READ16_MEMBER(deucesw2_mcu_r);
125
DECLARE_WRITE16_MEMBER(deucesw2_mcu_w);
126
DECLARE_WRITE16_MEMBER(deucesw2_leds1_w);
127
DECLARE_WRITE16_MEMBER(deucesw2_leds2_w);
128
DECLARE_WRITE16_MEMBER(deucesw2_leds3_w);
129
DECLARE_READ8_MEMBER(dualgame_mcu1_r);
130
DECLARE_READ8_MEMBER(dualgame_mcu2_r);
131
DECLARE_READ8_MEMBER(dualgame_mcu_status_read_r);
132
DECLARE_READ8_MEMBER(dualgame_mcu_status_write_r);
133
DECLARE_WRITE8_MEMBER(dualgame_mcu1_w);
134
DECLARE_WRITE8_MEMBER(dualgame_mcu2_w);
135
DECLARE_READ16_MEMBER(hermit_mcu_r);
136
DECLARE_WRITE16_MEMBER(hermit_mcu_w);
137
DECLARE_WRITE16_MEMBER(hermit_leds1_w);
138
DECLARE_WRITE16_MEMBER(hermit_leds2_w);
139
DECLARE_READ16_MEMBER(hermit_track_r);
140
DECLARE_READ8_MEMBER(maxidbl_mcu1_r);
141
DECLARE_READ8_MEMBER(maxidbl_mcu2_r);
142
DECLARE_READ8_MEMBER(maxidbl_mcu_status_read_r);
143
DECLARE_READ8_MEMBER(maxidbl_mcu_status_write_r);
144
DECLARE_WRITE8_MEMBER(maxidbl_mcu1_w);
145
DECLARE_WRITE8_MEMBER(maxidbl_mcu2_w);
61
150
/*************************************************************************************************************
151
240
*************************************************************************************************************/
154
static WRITE16_HANDLER( blit_copy_w )
243
WRITE16_MEMBER(blitz68k_state::blit_copy_w)
156
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
157
UINT8 *blit_rom = space->machine().region("blitter")->base();
245
UINT8 *blit_rom = memregion("blitter")->base();
158
246
UINT32 blit_dst_xpos;
159
247
UINT32 blit_dst_ypos;
160
248
int x,y,x_size,y_size;
163
logerror("blit copy %04x %04x %04x %04x %04x\n", state->m_blit_romaddr[0], state->m_blit_attr1_ram[0], state->m_blit_dst_ram_loword[0], state->m_blit_attr2_ram[0], state->m_blit_dst_ram_hiword[0] );
164
logerror("blit vregs %04x %04x %04x %04x\n",state->m_blit_vregs[0/2],state->m_blit_vregs[2/2],state->m_blit_vregs[4/2],state->m_blit_vregs[6/2]);
165
logerror("blit transpen %04x %04x %04x %04x %04x %04x %04x %04x\n",state->m_blit_transpen[0/2],state->m_blit_transpen[2/2],state->m_blit_transpen[4/2],state->m_blit_transpen[6/2],
166
state->m_blit_transpen[8/2],state->m_blit_transpen[10/2],state->m_blit_transpen[12/2],state->m_blit_transpen[14/2]);
168
blit_dst_xpos = (state->m_blit_dst_ram_loword[0] & 0x00ff)*2;
169
blit_dst_ypos = ((state->m_blit_dst_ram_loword[0] & 0xff00)>>8);
171
y_size = (0x100-((state->m_blit_attr2_ram[0] & 0xff00)>>8));
172
x_size = (state->m_blit_attr2_ram[0] & 0x00ff)*2;
251
logerror("blit copy %04x %04x %04x %04x %04x\n", m_blit_romaddr[0], m_blit_attr1_ram[0], m_blit_dst_ram_loword[0], m_blit_attr2_ram[0], m_blit_dst_ram_hiword[0] );
252
logerror("blit vregs %04x %04x %04x %04x\n",m_blit_vregs[0/2],m_blit_vregs[2/2],m_blit_vregs[4/2],m_blit_vregs[6/2]);
253
logerror("blit transpen %04x %04x %04x %04x %04x %04x %04x %04x\n",m_blit_transpen[0/2],m_blit_transpen[2/2],m_blit_transpen[4/2],m_blit_transpen[6/2],
254
m_blit_transpen[8/2],m_blit_transpen[10/2],m_blit_transpen[12/2],m_blit_transpen[14/2]);
256
blit_dst_xpos = (m_blit_dst_ram_loword[0] & 0x00ff)*2;
257
blit_dst_ypos = ((m_blit_dst_ram_loword[0] & 0xff00)>>8);
259
y_size = (0x100-((m_blit_attr2_ram[0] & 0xff00)>>8));
260
x_size = (m_blit_attr2_ram[0] & 0x00ff)*2;
174
262
/* rounding around for 0 size */
175
263
if(x_size == 0) { x_size = 0x200; }
256
static WRITE8_HANDLER( blit_addr0_w )
344
WRITE8_MEMBER(blitz68k_state::blit_addr0_w)
258
346
blit.addr[0] = data;
260
static WRITE8_HANDLER( blit_addr1_w )
348
WRITE8_MEMBER(blitz68k_state::blit_addr1_w)
262
350
blit.addr[1] = data;
264
static WRITE8_HANDLER( blit_addr01_w )
352
WRITE8_MEMBER(blitz68k_state::blit_addr01_w)
267
355
blit_addr0_w(space, offset, data);
269
357
blit_addr1_w(space, offset, data);
271
static WRITE8_HANDLER( blit_addr2_w )
359
WRITE8_MEMBER(blitz68k_state::blit_addr2_w)
273
361
blit.addr[2] = data;
277
static WRITE8_HANDLER( blit_pens_w )
365
WRITE8_MEMBER(blitz68k_state::blit_pens_w)
279
367
blit.pen[offset] = data;
281
static WRITE8_HANDLER( blit_pen0_w )
369
WRITE8_MEMBER(blitz68k_state::blit_pen0_w)
283
371
blit.pen[0] = data;
285
static WRITE8_HANDLER( blit_pen1_w )
373
WRITE8_MEMBER(blitz68k_state::blit_pen1_w)
287
375
blit.pen[1] = data;
289
static WRITE8_HANDLER( blit_pen2_w )
377
WRITE8_MEMBER(blitz68k_state::blit_pen2_w)
291
379
blit.pen[2] = data;
293
static WRITE8_HANDLER( blit_pen3_w )
381
WRITE8_MEMBER(blitz68k_state::blit_pen3_w)
295
383
blit.pen[3] = data;
299
static WRITE8_HANDLER( blit_flag0_w )
387
WRITE8_MEMBER(blitz68k_state::blit_flag0_w)
301
389
blit.flag[0] = data;
303
static WRITE8_HANDLER( blit_flag1_w )
391
WRITE8_MEMBER(blitz68k_state::blit_flag1_w)
305
393
blit.flag[1] = data;
307
static WRITE8_HANDLER( blit_flipx_w )
395
WRITE8_MEMBER(blitz68k_state::blit_flipx_w)
309
397
blit.flipx = data;
311
static WRITE8_HANDLER( blit_flipy_w )
399
WRITE8_MEMBER(blitz68k_state::blit_flipy_w)
313
401
blit.flipy = data;
315
static WRITE8_HANDLER( blit_solid_w )
403
WRITE8_MEMBER(blitz68k_state::blit_solid_w)
317
405
blit.solid = data;
319
static WRITE8_HANDLER( blit_trans_w )
407
WRITE8_MEMBER(blitz68k_state::blit_trans_w)
321
409
blit.trans = data;
323
static WRITE8_HANDLER( blit_flag6_w )
411
WRITE8_MEMBER(blitz68k_state::blit_flag6_w)
325
413
blit.flag[6] = data;
327
static WRITE8_HANDLER( blit_flag7_w )
415
WRITE8_MEMBER(blitz68k_state::blit_flag7_w)
329
417
blit.flag[7] = data;
332
static WRITE8_HANDLER( blit_flags_w )
420
WRITE8_MEMBER(blitz68k_state::blit_flags_w)
448
535
*************************************************************************************************************/
450
537
/*bit 0 is the blitter busy flag*/
451
static READ16_HANDLER( blitter_status_r )
538
READ16_MEMBER(blitz68k_state::blitter_status_r)
457
static WRITE16_HANDLER( lamps_w )
544
WRITE16_MEMBER(blitz68k_state::lamps_w)
459
546
// popmessage("%02x",data);
462
static READ16_HANDLER( test_r )
549
READ16_MEMBER(blitz68k_state::test_r)
464
return 0xffff;//space->machine().rand();
551
return 0xffff;//machine().rand();
468
static WRITE16_HANDLER( irq_callback_w )
555
WRITE16_MEMBER(blitz68k_state::irq_callback_w)
470
557
// popmessage("%02x",data);
471
cputag_set_input_line(space->machine(), "maincpu", 3, HOLD_LINE );
558
cputag_set_input_line(machine(), "maincpu", 3, HOLD_LINE );
474
static WRITE16_HANDLER( sound_write_w )
561
WRITE16_MEMBER(blitz68k_state::sound_write_w)
476
563
popmessage("%02x",data);
477
564
dac_data_w(0, data & 0x0f); /* Sound DAC? */
481
static ADDRESS_MAP_START( ilpag_map, AS_PROGRAM, 16 )
568
static ADDRESS_MAP_START( ilpag_map, AS_PROGRAM, 16, blitz68k_state )
482
569
AM_RANGE(0x000000, 0x0fffff) AM_ROM
483
570
AM_RANGE(0x100000, 0x1fffff) AM_ROM AM_REGION("blitter", 0)
484
571
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram")
486
573
// AM_RANGE(0x800000, 0x800001) AM_READ(test_r)
487
574
// AM_RANGE(0x880000, 0x880001) AM_READ(test_r)
489
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
490
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0xff00 )
491
AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
492
AM_RANGE(0x980000, 0x98000f) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_transpen) //video registers for the blitter write
493
AM_RANGE(0x990000, 0x990007) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_vregs) //pens
494
AM_RANGE(0x998000, 0x998001) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_romaddr)
495
AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_attr1_ram)
496
AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_dst_ram_loword)
497
AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_attr2_ram)
498
AM_RANGE(0x9b8000, 0x9b8001) AM_RAM_WRITE( blit_copy_w ) AM_BASE_MEMBER(blitz68k_state, m_blit_dst_ram_hiword)
576
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
577
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
578
AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
579
AM_RANGE(0x980000, 0x98000f) AM_RAM AM_SHARE("blit_transpen") //video registers for the blitter write
580
AM_RANGE(0x990000, 0x990007) AM_RAM AM_SHARE("blit_vregs") //pens
581
AM_RANGE(0x998000, 0x998001) AM_RAM AM_SHARE("blit_romaddr")
582
AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_SHARE("blit_attr1_ram")
583
AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_SHARE("blitram_loword")
584
AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_SHARE("blit_attr2_ram")
585
AM_RANGE(0x9b8000, 0x9b8001) AM_RAM_WRITE(blit_copy_w ) AM_SHARE("blitram_hiword")
499
586
AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r)
501
588
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(lamps_w)
515
602
AM_RANGE(0x880000, 0x880001) AM_READ(test_r)
516
603
// AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE(sound_write_w)
518
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
519
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0xff00 )
520
AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
605
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
606
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
607
AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
521
608
AM_RANGE(0x940000, 0x940001) AM_WRITENOP //? Seems a dword write for some read, written consecutively
522
AM_RANGE(0x980000, 0x98000f) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_transpen)//probably transparency pens
523
AM_RANGE(0x990000, 0x990005) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_vregs)
524
AM_RANGE(0x998000, 0x998001) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_romaddr)
525
AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_attr1_ram)
526
AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_dst_ram_loword)
527
AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_blit_attr2_ram)
528
AM_RANGE(0x9b8000, 0x9b8001) AM_RAM_WRITE( blit_copy_w ) AM_BASE_MEMBER(blitz68k_state, m_blit_dst_ram_hiword)
609
AM_RANGE(0x980000, 0x98000f) AM_RAM AM_SHARE("blit_transpen")//probably transparency pens
610
AM_RANGE(0x990000, 0x990005) AM_RAM AM_SHARE("blit_vregs")
611
AM_RANGE(0x998000, 0x998001) AM_RAM AM_SHARE("blit_romaddr")
612
AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_SHARE("blit_attr1_ram")
613
AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_SHARE("blitram_loword")
614
AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_SHARE("blit_attr2_ram")
615
AM_RANGE(0x9b8000, 0x9b8001) AM_RAM_WRITE(blit_copy_w ) AM_SHARE("blitram_hiword")
529
616
AM_RANGE(0x9c0002, 0x9c0003) AM_READNOP //pen control?
530
617
AM_RANGE(0x9d0000, 0x9d0001) AM_READNOP //?
531
618
AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r)
543
630
*************************************************************************************************************/
545
632
// MCU simulation (to be done)
546
static READ8_HANDLER( bankrob_mcu1_r )
548
UINT8 ret = 0; // space->machine().rand() gives "interesting" results
549
logerror("%s: mcu1 reads %02x\n", space->machine().describe_context(), ret);
552
static READ8_HANDLER( bankrob_mcu2_r )
554
UINT8 ret = 0; // space->machine().rand() gives "interesting" results
555
logerror("%s: mcu2 reads %02x\n", space->machine().describe_context(), ret);
559
static READ8_HANDLER( bankrob_mcu_status_read_r )
561
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
564
static READ8_HANDLER( bankrob_mcu_status_write_r )
566
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
569
static WRITE8_HANDLER( bankrob_mcu1_w )
571
logerror("%s: mcu1 written with %02x\n", space->machine().describe_context(), data);
573
static WRITE8_HANDLER( bankrob_mcu2_w )
575
logerror("%s: mcu2 written with %02x\n", space->machine().describe_context(), data);
578
static ADDRESS_MAP_START( bankrob_map, AS_PROGRAM, 16 )
633
READ8_MEMBER(blitz68k_state::bankrob_mcu1_r)
635
UINT8 ret = 0; // machine().rand() gives "interesting" results
636
logerror("%s: mcu1 reads %02x\n", machine().describe_context(), ret);
639
READ8_MEMBER(blitz68k_state::bankrob_mcu2_r)
641
UINT8 ret = 0; // machine().rand() gives "interesting" results
642
logerror("%s: mcu2 reads %02x\n", machine().describe_context(), ret);
646
READ8_MEMBER(blitz68k_state::bankrob_mcu_status_read_r)
648
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
651
READ8_MEMBER(blitz68k_state::bankrob_mcu_status_write_r)
653
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
656
WRITE8_MEMBER(blitz68k_state::bankrob_mcu1_w)
658
logerror("%s: mcu1 written with %02x\n", machine().describe_context(), data);
660
WRITE8_MEMBER(blitz68k_state::bankrob_mcu2_w)
662
logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data);
665
static ADDRESS_MAP_START( bankrob_map, AS_PROGRAM, 16, blitz68k_state )
579
666
AM_RANGE(0x000000, 0x03ffff) AM_ROM
580
667
AM_RANGE(0x100000, 0x10ffff) AM_RAM
582
AM_RANGE(0x220000, 0x220001) AM_DEVREAD8_MODERN("ramdac",ramdac_device, index_r, 0xff00 )
583
AM_RANGE(0x220002, 0x220003) AM_DEVREAD8_MODERN("ramdac",ramdac_device, pal_r, 0xff00 )
669
AM_RANGE(0x220000, 0x220001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
670
AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0xff00 )
585
672
AM_RANGE(0x240000, 0x240001) AM_WRITE8(blit_addr0_w, 0xff00)
586
673
AM_RANGE(0x240002, 0x240003) AM_WRITE8(blit_addr1_w, 0xff00)
612
699
AM_RANGE(0x2e000c, 0x2e000d) AM_WRITE8(blit_flag6_w, 0xff00)
613
700
AM_RANGE(0x2e000e, 0x2e000f) AM_WRITE8(blit_flag7_w, 0xff00)
615
AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
616
AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0xff00 )
617
AM_RANGE(0x300004, 0x300005) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
702
AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
703
AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
704
AM_RANGE(0x300004, 0x300005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
619
706
AM_RANGE(0x400000, 0x400001) AM_READ8(bankrob_mcu_status_write_r, 0x00ff)
620
707
AM_RANGE(0x400002, 0x400003) AM_READ8(bankrob_mcu_status_read_r, 0x00ff)
622
709
AM_RANGE(0x400004, 0x400005) AM_READWRITE8(bankrob_mcu1_r, bankrob_mcu1_w, 0x00ff)
623
710
AM_RANGE(0x400006, 0x400007) AM_READWRITE8(bankrob_mcu2_r, bankrob_mcu2_w, 0xff00)
625
AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8_MODERN("crtc", mc6845_device, status_r, address_w, 0xff00) // triggered by MCU?
626
AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8_MODERN("crtc", mc6845_device, register_r, register_w, 0xff00)
712
AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00) // triggered by MCU?
713
AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00)
631
718
// MCU simulation (to be done)
632
static READ8_HANDLER( bankroba_mcu1_r )
719
READ8_MEMBER(blitz68k_state::bankroba_mcu1_r)
634
UINT8 ret = space->machine().rand(); // space->machine().rand() gives "interesting" results
635
logerror("%s: mcu1 reads %02x\n", space->machine().describe_context(), ret);
721
UINT8 ret = machine().rand(); // machine().rand() gives "interesting" results
722
logerror("%s: mcu1 reads %02x\n", machine().describe_context(), ret);
638
static READ8_HANDLER( bankroba_mcu2_r )
725
READ8_MEMBER(blitz68k_state::bankroba_mcu2_r)
640
UINT8 ret = space->machine().rand(); // space->machine().rand() gives "interesting" results
641
logerror("%s: mcu2 reads %02x\n", space->machine().describe_context(), ret);
727
UINT8 ret = machine().rand(); // machine().rand() gives "interesting" results
728
logerror("%s: mcu2 reads %02x\n", machine().describe_context(), ret);
645
static READ8_HANDLER( bankroba_mcu1_status_write_r )
732
READ8_MEMBER(blitz68k_state::bankroba_mcu1_status_write_r)
647
734
return 0x00; // bit 0 = MCU1. Active low.
649
static READ8_HANDLER( bankroba_mcu2_status_write_r )
736
READ8_MEMBER(blitz68k_state::bankroba_mcu2_status_write_r)
651
738
return 0x01; // bit 0 = MCU2. Active high.
654
static WRITE8_HANDLER( bankroba_mcu1_w )
741
WRITE8_MEMBER(blitz68k_state::bankroba_mcu1_w)
656
logerror("%s: mcu1 written with %02x\n", space->machine().describe_context(), data);
743
logerror("%s: mcu1 written with %02x\n", machine().describe_context(), data);
658
static WRITE8_HANDLER( bankroba_mcu2_w )
745
WRITE8_MEMBER(blitz68k_state::bankroba_mcu2_w)
660
logerror("%s: mcu2 written with %02x\n", space->machine().describe_context(), data);
747
logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data);
663
static ADDRESS_MAP_START( bankroba_map, AS_PROGRAM, 16 )
750
static ADDRESS_MAP_START( bankroba_map, AS_PROGRAM, 16, blitz68k_state )
664
751
AM_RANGE(0x000000, 0x03ffff) AM_ROM
665
752
AM_RANGE(0x200000, 0x20ffff) AM_RAM
667
AM_RANGE(0x800000, 0x800001) AM_WRITE8(bankroba_mcu1_r, 0x00ff) // lev 4
754
AM_RANGE(0x800000, 0x800001) AM_READ8(bankroba_mcu1_r, 0x00ff) // lev 4
668
755
AM_RANGE(0x840000, 0x840001) AM_WRITE8(bankroba_mcu1_w, 0x00ff)
670
AM_RANGE(0x880000, 0x880001) AM_WRITE8(bankroba_mcu2_r, 0x00ff) // lev 3
757
AM_RANGE(0x880000, 0x880001) AM_READ8(bankroba_mcu2_r, 0x00ff) // lev 3
671
758
AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE8(bankroba_mcu2_w, 0x00ff)
673
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
674
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0xff00 )
675
AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
760
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
761
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
762
AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
677
764
// AM_RANGE(0x940000, 0x940001) AM_WRITE // lev 6
718
805
*************************************************************************************************************/
720
static WRITE16_HANDLER( cjffruit_leds1_w )
807
WRITE16_MEMBER(blitz68k_state::cjffruit_leds1_w)
722
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
723
data = COMBINE_DATA(state->m_leds[0]);
809
data = COMBINE_DATA(m_leds0);
724
810
if (ACCESSING_BITS_8_15)
726
coin_counter_w(space->machine(), 0, data & 0x0100); // coin in
727
set_led_status(space->machine(), 0, data & 0x0200); // win???
812
coin_counter_w(machine(), 0, data & 0x0100); // coin in
813
set_led_status(machine(), 0, data & 0x0200); // win???
728
814
// 1 data & 0x0400 // win???
729
set_led_status(space->machine(), 2, data & 0x0800); // small
730
set_led_status(space->machine(), 3, data & 0x1000); // big
731
set_led_status(space->machine(), 4, data & 0x2000); // take
732
set_led_status(space->machine(), 5, data & 0x4000); // double up
733
set_led_status(space->machine(), 6, data & 0x8000); // cancel
738
static WRITE16_HANDLER( cjffruit_leds2_w )
740
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
741
data = COMBINE_DATA(state->m_leds[1]);
742
if (ACCESSING_BITS_8_15)
744
set_led_status(space->machine(), 7, data & 0x0100); // start
745
set_led_status(space->machine(), 8, data & 0x0200); // bet
746
set_led_status(space->machine(), 9, data & 0x0400); // hold 5
747
set_led_status(space->machine(), 10, data & 0x0800); // hold 4
748
set_led_status(space->machine(), 11, data & 0x1000); // hold 3
749
set_led_status(space->machine(), 12, data & 0x2000); // hold 2
750
set_led_status(space->machine(), 13, data & 0x4000); // collect
751
set_led_status(space->machine(), 14, data & 0x8000); // call attendant
756
static WRITE16_HANDLER( cjffruit_leds3_w )
758
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
759
data = COMBINE_DATA(state->m_leds[2]);
760
if (ACCESSING_BITS_8_15)
762
set_led_status(space->machine(), 15, data & 0x0100); // hopper coins?
763
set_led_status(space->machine(), 16, data & 0x0400); // coin out?
815
set_led_status(machine(), 2, data & 0x0800); // small
816
set_led_status(machine(), 3, data & 0x1000); // big
817
set_led_status(machine(), 4, data & 0x2000); // take
818
set_led_status(machine(), 5, data & 0x4000); // double up
819
set_led_status(machine(), 6, data & 0x8000); // cancel
824
WRITE16_MEMBER(blitz68k_state::cjffruit_leds2_w)
826
data = COMBINE_DATA(m_leds1);
827
if (ACCESSING_BITS_8_15)
829
set_led_status(machine(), 7, data & 0x0100); // start
830
set_led_status(machine(), 8, data & 0x0200); // bet
831
set_led_status(machine(), 9, data & 0x0400); // hold 5
832
set_led_status(machine(), 10, data & 0x0800); // hold 4
833
set_led_status(machine(), 11, data & 0x1000); // hold 3
834
set_led_status(machine(), 12, data & 0x2000); // hold 2
835
set_led_status(machine(), 13, data & 0x4000); // collect
836
set_led_status(machine(), 14, data & 0x8000); // call attendant
841
WRITE16_MEMBER(blitz68k_state::cjffruit_leds3_w)
843
data = COMBINE_DATA(m_leds2);
844
if (ACCESSING_BITS_8_15)
846
set_led_status(machine(), 15, data & 0x0100); // hopper coins?
847
set_led_status(machine(), 16, data & 0x0400); // coin out?
769
static READ8_HANDLER( crtc_r )
853
READ8_MEMBER(blitz68k_state::crtc_r)
771
mc6845_device *mc6845 = space->machine().device<mc6845_device>("crtc");
855
mc6845_device *mc6845 = machine().device<mc6845_device>("crtc");
773
return mc6845->register_r(*space, 0);
857
return mc6845->register_r(space, 0);
775
return mc6845->status_r(*space, 0);
859
return mc6845->status_r(space, 0);
778
static WRITE8_HANDLER( crtc_w )
862
WRITE8_MEMBER(blitz68k_state::crtc_w)
780
mc6845_device *mc6845 = space->machine().device<mc6845_device>("crtc");
864
mc6845_device *mc6845 = machine().device<mc6845_device>("crtc");
782
mc6845->register_w(*space, 0, data);
866
mc6845->register_w(space, 0, data);
784
mc6845->address_w(*space, 0, data);
868
mc6845->address_w(space, 0, data);
787
871
static WRITE16_DEVICE_HANDLER( crtc_lpen_w )
795
879
// MCU simulation (to be done)
796
static READ16_HANDLER( cjffruit_mcu_r )
880
READ16_MEMBER(blitz68k_state::cjffruit_mcu_r)
798
UINT8 ret = 0x00; // space->machine().rand() gives "interesting" results
799
logerror("%s: mcu reads %02x\n", space->machine().describe_context(), ret);
882
UINT8 ret = 0x00; // machine().rand() gives "interesting" results
883
logerror("%s: mcu reads %02x\n", machine().describe_context(), ret);
803
static WRITE16_HANDLER( cjffruit_mcu_w )
887
WRITE16_MEMBER(blitz68k_state::cjffruit_mcu_w)
805
logerror("%s: mcu written with %02x\n", space->machine().describe_context(),data >> 8);
889
logerror("%s: mcu written with %02x\n", machine().describe_context(),data >> 8);
808
static ADDRESS_MAP_START( cjffruit_map, AS_PROGRAM, 16 )
892
static ADDRESS_MAP_START( cjffruit_map, AS_PROGRAM, 16, blitz68k_state )
809
893
AM_RANGE(0x000000, 0x07ffff) AM_ROM
810
894
AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram")
811
895
AM_RANGE(0x480000, 0x4807ff) AM_RAM
813
897
AM_RANGE(0x820000, 0x820007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
815
AM_RANGE(0x850000, 0x850001) AM_READ( cjffruit_mcu_r )
899
AM_RANGE(0x850000, 0x850001) AM_READ(cjffruit_mcu_r )
817
901
AM_RANGE(0x870000, 0x870001) AM_READ_PORT("IN0")
818
902
AM_RANGE(0x872000, 0x872001) AM_READ_PORT("IN1")
819
903
AM_RANGE(0x874000, 0x874001) AM_READ_PORT("IN2")
820
904
AM_RANGE(0x876000, 0x876001) AM_READ_PORT("DSW")
822
AM_RANGE(0x880000, 0x880001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
823
AM_RANGE(0x880000, 0x880001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0x00ff )
824
AM_RANGE(0x880002, 0x880003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
825
AM_RANGE(0x880000, 0x880001) AM_DEVREAD8_MODERN("ramdac",ramdac_device, index_r, 0xff00 )
826
AM_RANGE(0x880000, 0x880001) AM_DEVREAD8_MODERN("ramdac",ramdac_device, pal_r, 0x00ff )
906
AM_RANGE(0x880000, 0x880001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
907
AM_RANGE(0x880000, 0x880001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
908
AM_RANGE(0x880002, 0x880003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
909
AM_RANGE(0x880000, 0x880001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
910
AM_RANGE(0x880000, 0x880001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff )
828
912
AM_RANGE(0x8a0000, 0x8a0007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
830
914
AM_RANGE(0x8b0000, 0x8b0003) AM_WRITE8(blit_pens_w, 0xffff)
832
AM_RANGE(0x8e0000, 0x8e0001) AM_WRITE( cjffruit_mcu_w )
916
AM_RANGE(0x8e0000, 0x8e0001) AM_WRITE(cjffruit_mcu_w )
834
AM_RANGE(0x8f8000, 0x8f8001) AM_WRITE(cjffruit_leds1_w) AM_BASE_MEMBER(blitz68k_state, m_leds[0])
835
AM_RANGE(0x8fa000, 0x8fa001) AM_WRITE(cjffruit_leds2_w) AM_BASE_MEMBER(blitz68k_state, m_leds[1])
836
AM_RANGE(0x8fc000, 0x8fc001) AM_WRITE(cjffruit_leds3_w) AM_BASE_MEMBER(blitz68k_state, m_leds[2])
918
AM_RANGE(0x8f8000, 0x8f8001) AM_WRITE(cjffruit_leds1_w) AM_SHARE("leds0")
919
AM_RANGE(0x8fa000, 0x8fa001) AM_WRITE(cjffruit_leds2_w) AM_SHARE("leds1")
920
AM_RANGE(0x8fc000, 0x8fc001) AM_WRITE(cjffruit_leds3_w) AM_SHARE("leds2")
838
922
AM_RANGE(0x8fe000, 0x8fe003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans
839
923
AM_RANGE(0x8fe004, 0x8fe005) AM_WRITEONLY
840
AM_RANGE(0x8fe006, 0x8fe007) AM_DEVWRITE("crtc", crtc_lpen_w) // 0x8fe006: 0->1, 0x8fe007: 1->0
924
AM_RANGE(0x8fe006, 0x8fe007) AM_DEVWRITE_LEGACY("crtc", crtc_lpen_w) // 0x8fe006: 0->1, 0x8fe007: 1->0
842
926
AM_RANGE(0xc40000, 0xc40001) AM_READWRITE8(crtc_r, crtc_w, 0xffff)
847
931
*************************************************************************************************************/
849
933
// MCU simulation (to be done)
850
static READ16_HANDLER( deucesw2_mcu_r )
934
READ16_MEMBER(blitz68k_state::deucesw2_mcu_r)
852
UINT8 ret = 0x00; // space->machine().rand() gives "interesting" results
853
logerror("%s: mcu reads %02x\n", space->machine().describe_context(), ret);
936
UINT8 ret = 0x00; // machine().rand() gives "interesting" results
937
logerror("%s: mcu reads %02x\n", machine().describe_context(), ret);
857
static WRITE16_HANDLER( deucesw2_mcu_w )
941
WRITE16_MEMBER(blitz68k_state::deucesw2_mcu_w)
859
logerror("%s: mcu written with %02x\n", space->machine().describe_context(),data >> 8);
943
logerror("%s: mcu written with %02x\n", machine().describe_context(),data >> 8);
862
static WRITE16_HANDLER( deucesw2_leds1_w )
946
WRITE16_MEMBER(blitz68k_state::deucesw2_leds1_w)
864
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
865
data = COMBINE_DATA(state->m_leds[0]);
948
data = COMBINE_DATA(m_leds0);
866
949
if (ACCESSING_BITS_8_15)
868
coin_counter_w(space->machine(), 0, data & 0x0100); // coin in
869
set_led_status(space->machine(), 0, data & 0x0200); // win???
951
coin_counter_w(machine(), 0, data & 0x0100); // coin in
952
set_led_status(machine(), 0, data & 0x0200); // win???
870
953
// 1 data & 0x0400 // win???
871
set_led_status(space->machine(), 2, data & 0x0800); // small
872
set_led_status(space->machine(), 3, data & 0x1000); // big
873
set_led_status(space->machine(), 4, data & 0x2000); // take
874
set_led_status(space->machine(), 5, data & 0x4000); // double up
875
set_led_status(space->machine(), 6, data & 0x8000); // cancel
880
static WRITE16_HANDLER( deucesw2_leds2_w )
882
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
883
data = COMBINE_DATA(state->m_leds[1]);
884
if (ACCESSING_BITS_8_15)
886
set_led_status(space->machine(), 7, data & 0x0100); // start
887
set_led_status(space->machine(), 8, data & 0x0200); // bet
888
set_led_status(space->machine(), 9, data & 0x0400); // hold 5
889
set_led_status(space->machine(), 10, data & 0x0800); // hold 4
890
set_led_status(space->machine(), 11, data & 0x1000); // hold 3
891
set_led_status(space->machine(), 12, data & 0x2000); // hold 2
892
set_led_status(space->machine(), 13, data & 0x4000); // hold 1
893
set_led_status(space->machine(), 14, data & 0x8000); // call attendant
898
static WRITE16_HANDLER( deucesw2_leds3_w )
900
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
901
data = COMBINE_DATA(state->m_leds[2]);
902
if (ACCESSING_BITS_8_15)
904
set_led_status(space->machine(), 15, data & 0x0100); // hopper coins?
905
set_led_status(space->machine(), 16, data & 0x0400); // coin out?
910
static ADDRESS_MAP_START( deucesw2_map, AS_PROGRAM, 16 )
954
set_led_status(machine(), 2, data & 0x0800); // small
955
set_led_status(machine(), 3, data & 0x1000); // big
956
set_led_status(machine(), 4, data & 0x2000); // take
957
set_led_status(machine(), 5, data & 0x4000); // double up
958
set_led_status(machine(), 6, data & 0x8000); // cancel
963
WRITE16_MEMBER(blitz68k_state::deucesw2_leds2_w)
965
data = COMBINE_DATA(m_leds1);
966
if (ACCESSING_BITS_8_15)
968
set_led_status(machine(), 7, data & 0x0100); // start
969
set_led_status(machine(), 8, data & 0x0200); // bet
970
set_led_status(machine(), 9, data & 0x0400); // hold 5
971
set_led_status(machine(), 10, data & 0x0800); // hold 4
972
set_led_status(machine(), 11, data & 0x1000); // hold 3
973
set_led_status(machine(), 12, data & 0x2000); // hold 2
974
set_led_status(machine(), 13, data & 0x4000); // hold 1
975
set_led_status(machine(), 14, data & 0x8000); // call attendant
980
WRITE16_MEMBER(blitz68k_state::deucesw2_leds3_w)
982
data = COMBINE_DATA(m_leds2);
983
if (ACCESSING_BITS_8_15)
985
set_led_status(machine(), 15, data & 0x0100); // hopper coins?
986
set_led_status(machine(), 16, data & 0x0400); // coin out?
991
static ADDRESS_MAP_START( deucesw2_map, AS_PROGRAM, 16, blitz68k_state )
911
992
AM_RANGE(0x000000, 0x03ffff) AM_ROM
912
993
AM_RANGE(0x400000, 0x41ffff) AM_RAM
914
995
AM_RANGE(0x800000, 0x800007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
916
AM_RANGE(0x812000, 0x812001) AM_DEVREAD8_MODERN("ramdac",ramdac_device, index_r, 0xff00 )
917
AM_RANGE(0x812000, 0x812001) AM_DEVREAD8_MODERN("ramdac",ramdac_device, pal_r, 0x00ff )
997
AM_RANGE(0x812000, 0x812001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
998
AM_RANGE(0x812000, 0x812001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff )
919
AM_RANGE(0x830000, 0x830001) AM_READ( deucesw2_mcu_r )
1000
AM_RANGE(0x830000, 0x830001) AM_READ(deucesw2_mcu_r )
921
1002
AM_RANGE(0x840000, 0x840001) AM_READ_PORT("IN0")
922
1003
AM_RANGE(0x850000, 0x850001) AM_READ_PORT("IN1")
926
1007
AM_RANGE(0x880000, 0x880007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff)
928
AM_RANGE(0x890000, 0x890001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
929
AM_RANGE(0x890000, 0x890001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0x00ff )
930
AM_RANGE(0x890002, 0x890003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
1009
AM_RANGE(0x890000, 0x890001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
1010
AM_RANGE(0x890000, 0x890001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
1011
AM_RANGE(0x890002, 0x890003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
932
1013
AM_RANGE(0x894000, 0x894003) AM_WRITE8(blit_pens_w, 0xffff)
934
AM_RANGE(0x896000, 0x896001) AM_WRITE( deucesw2_mcu_w )
1015
AM_RANGE(0x896000, 0x896001) AM_WRITE(deucesw2_mcu_w )
936
AM_RANGE(0x898000, 0x898001) AM_WRITE(deucesw2_leds1_w) AM_BASE_MEMBER(blitz68k_state, m_leds[0])
937
AM_RANGE(0x89a000, 0x89a001) AM_WRITE(deucesw2_leds2_w) AM_BASE_MEMBER(blitz68k_state, m_leds[1])
938
AM_RANGE(0x89c000, 0x89c001) AM_WRITE(deucesw2_leds3_w) AM_BASE_MEMBER(blitz68k_state, m_leds[2])
1017
AM_RANGE(0x898000, 0x898001) AM_WRITE(deucesw2_leds1_w) AM_SHARE("leds0")
1018
AM_RANGE(0x89a000, 0x89a001) AM_WRITE(deucesw2_leds2_w) AM_SHARE("leds1")
1019
AM_RANGE(0x89c000, 0x89c001) AM_WRITE(deucesw2_leds3_w) AM_SHARE("leds2")
940
1021
AM_RANGE(0x89e000, 0x89e003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans
941
1022
AM_RANGE(0x89e004, 0x89e005) AM_WRITEONLY
942
AM_RANGE(0x89e006, 0x89e007) AM_DEVWRITE("crtc", crtc_lpen_w) // 0x89e006: 0->1, 0x89e007: 1->0
1023
AM_RANGE(0x89e006, 0x89e007) AM_DEVWRITE_LEGACY("crtc", crtc_lpen_w) // 0x89e006: 0->1, 0x89e007: 1->0
944
1025
AM_RANGE(0xc00000, 0xc00001) AM_READWRITE8(crtc_r, crtc_w, 0xffff)
949
1030
*************************************************************************************************************/
951
1032
// MCU simulation (to be done)
952
static READ8_HANDLER( dualgame_mcu1_r )
954
UINT8 ret = 0; // space->machine().rand() gives "interesting" results
955
logerror("%s: mcu1 reads %02x\n", space->machine().describe_context(), ret);
958
static READ8_HANDLER( dualgame_mcu2_r )
960
UINT8 ret = 0; // space->machine().rand() gives "interesting" results
961
logerror("%s: mcu2 reads %02x\n", space->machine().describe_context(), ret);
965
static READ8_HANDLER( dualgame_mcu_status_read_r )
967
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
970
static READ8_HANDLER( dualgame_mcu_status_write_r )
972
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
975
static WRITE8_HANDLER( dualgame_mcu1_w )
977
logerror("%s: mcu1 written with %02x\n", space->machine().describe_context(), data);
979
static WRITE8_HANDLER( dualgame_mcu2_w )
981
logerror("%s: mcu2 written with %02x\n", space->machine().describe_context(), data);
984
static ADDRESS_MAP_START( dualgame_map, AS_PROGRAM, 16 )
1033
READ8_MEMBER(blitz68k_state::dualgame_mcu1_r)
1035
UINT8 ret = 0; // machine().rand() gives "interesting" results
1036
logerror("%s: mcu1 reads %02x\n", machine().describe_context(), ret);
1039
READ8_MEMBER(blitz68k_state::dualgame_mcu2_r)
1041
UINT8 ret = 0; // machine().rand() gives "interesting" results
1042
logerror("%s: mcu2 reads %02x\n", machine().describe_context(), ret);
1046
READ8_MEMBER(blitz68k_state::dualgame_mcu_status_read_r)
1048
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
1051
READ8_MEMBER(blitz68k_state::dualgame_mcu_status_write_r)
1053
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
1056
WRITE8_MEMBER(blitz68k_state::dualgame_mcu1_w)
1058
logerror("%s: mcu1 written with %02x\n", machine().describe_context(), data);
1060
WRITE8_MEMBER(blitz68k_state::dualgame_mcu2_w)
1062
logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data);
1065
static ADDRESS_MAP_START( dualgame_map, AS_PROGRAM, 16, blitz68k_state )
985
1066
AM_RANGE(0x000000, 0x03ffff) AM_ROM
986
1067
AM_RANGE(0x100000, 0x10ffff) AM_RAM
988
AM_RANGE(0x220002, 0x220003) AM_DEVREAD8_MODERN("ramdac",ramdac_device, index_r, 0xff00 )
989
AM_RANGE(0x220002, 0x220003) AM_DEVREAD8_MODERN("ramdac",ramdac_device, pal_r, 0x00ff )
1069
AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
1070
AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff )
991
1072
AM_RANGE(0x240000, 0x240001) AM_WRITE8(blit_addr0_w, 0xff00)
992
1073
AM_RANGE(0x240002, 0x240003) AM_WRITE8(blit_addr1_w, 0xff00)
1021
1102
AM_RANGE(0x2e000c, 0x2e000d) AM_WRITE8(blit_flag6_w, 0xff00)
1022
1103
AM_RANGE(0x2e000e, 0x2e000f) AM_WRITE8(blit_flag7_w, 0xff00)
1024
AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
1025
AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0xff00 )
1026
AM_RANGE(0x300004, 0x300005) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
1105
AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
1106
AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 )
1107
AM_RANGE(0x300004, 0x300005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
1028
1109
AM_RANGE(0x400000, 0x400001) AM_READ8(dualgame_mcu_status_write_r, 0x00ff)
1029
1110
AM_RANGE(0x400002, 0x400003) AM_READ8(dualgame_mcu_status_read_r, 0x00ff)
1040
1121
*************************************************************************************************************/
1042
1123
// MCU simulation (to be done)
1043
static READ16_HANDLER( hermit_mcu_r )
1124
READ16_MEMBER(blitz68k_state::hermit_mcu_r)
1045
UINT8 ret = 0x00; // space->machine().rand() gives "interesting" results
1046
logerror("%s: mcu reads %02x\n", space->machine().describe_context(), ret);
1126
UINT8 ret = 0x00; // machine().rand() gives "interesting" results
1127
logerror("%s: mcu reads %02x\n", machine().describe_context(), ret);
1047
1128
return ret << 8;
1050
static WRITE16_HANDLER( hermit_mcu_w )
1052
logerror("%s: mcu written with %02x\n", space->machine().describe_context(),data >> 8);
1055
static WRITE16_HANDLER( hermit_leds1_w )
1057
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
1058
data = COMBINE_DATA(state->m_leds[0]);
1059
if (ACCESSING_BITS_8_15)
1061
coin_counter_w(space->machine(), 0, data & 0x0100); // coin in
1066
static WRITE16_HANDLER( hermit_leds2_w )
1068
blitz68k_state *state = space->machine().driver_data<blitz68k_state>();
1069
data = COMBINE_DATA(state->m_leds[1]);
1070
if (ACCESSING_BITS_8_15)
1072
set_led_status(space->machine(), 7, data & 0x0100); // button
1077
static READ16_HANDLER( hermit_track_r )
1131
WRITE16_MEMBER(blitz68k_state::hermit_mcu_w)
1133
logerror("%s: mcu written with %02x\n", machine().describe_context(),data >> 8);
1136
WRITE16_MEMBER(blitz68k_state::hermit_leds1_w)
1138
data = COMBINE_DATA(m_leds0);
1139
if (ACCESSING_BITS_8_15)
1141
coin_counter_w(machine(), 0, data & 0x0100); // coin in
1146
WRITE16_MEMBER(blitz68k_state::hermit_leds2_w)
1148
data = COMBINE_DATA(m_leds1);
1149
if (ACCESSING_BITS_8_15)
1151
set_led_status(machine(), 7, data & 0x0100); // button
1156
READ16_MEMBER(blitz68k_state::hermit_track_r)
1079
1158
#ifdef MAME_DEBUG
1080
// popmessage("track %02x %02x", input_port_read(space->machine(), "TRACK_X"), input_port_read(space->machine(), "TRACK_Y"));
1159
// popmessage("track %02x %02x", ioport("TRACK_X")->read(), ioport("TRACK_Y")->read());
1084
((0xf - ((input_port_read(space->machine(), "TRACK_Y") + 0x7) & 0xf)) << 12) |
1085
((0xf - ((input_port_read(space->machine(), "TRACK_X") + 0x7) & 0xf)) << 8) ;
1163
((0xf - ((ioport("TRACK_Y")->read() + 0x7) & 0xf)) << 12) |
1164
((0xf - ((ioport("TRACK_X")->read() + 0x7) & 0xf)) << 8) ;
1088
static ADDRESS_MAP_START( hermit_map, AS_PROGRAM, 16 )
1167
static ADDRESS_MAP_START( hermit_map, AS_PROGRAM, 16, blitz68k_state )
1089
1168
AM_RANGE(0x000000, 0x03ffff) AM_ROM
1090
1169
AM_RANGE(0x200000, 0x20ffff) AM_RAM
1091
1170
AM_RANGE(0x400000, 0x41ffff) AM_RAM
1093
AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
1094
AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0x00ff )
1095
AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
1096
AM_RANGE(0x840000, 0x840001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, index_w, 0xff00 )
1097
AM_RANGE(0x840000, 0x840001) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, pal_w, 0x00ff )
1098
AM_RANGE(0x840002, 0x840003) AM_DEVWRITE8_MODERN("ramdac",ramdac_device, mask_w, 0xff00 )
1099
AM_RANGE(0x840000, 0x840001) AM_DEVREAD8_MODERN("ramdac",ramdac_device, index_r, 0xff00 )
1100
AM_RANGE(0x840000, 0x840001) AM_DEVREAD8_MODERN("ramdac",ramdac_device, pal_r, 0x00ff )
1103
AM_RANGE(0x8c0000, 0x8c0003) AM_WRITE8( blit_pens_w, 0xffff )
1105
AM_RANGE(0x940000, 0x940001) AM_READ( hermit_mcu_r )
1106
AM_RANGE(0x980000, 0x980001) AM_WRITE( hermit_mcu_w )
1172
AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
1173
AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
1174
AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
1175
AM_RANGE(0x840000, 0x840001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 )
1176
AM_RANGE(0x840000, 0x840001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff )
1177
AM_RANGE(0x840002, 0x840003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 )
1178
AM_RANGE(0x840000, 0x840001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 )
1179
AM_RANGE(0x840000, 0x840001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff )
1182
AM_RANGE(0x8c0000, 0x8c0003) AM_WRITE8(blit_pens_w, 0xffff )
1184
AM_RANGE(0x940000, 0x940001) AM_READ(hermit_mcu_r )
1185
AM_RANGE(0x980000, 0x980001) AM_WRITE(hermit_mcu_w )
1108
1187
AM_RANGE(0x9c0000, 0x9c0001) AM_READ_PORT("IN0")
1109
AM_RANGE(0x9c8000, 0x9c8001) AM_READ( hermit_track_r )
1188
AM_RANGE(0x9c8000, 0x9c8001) AM_READ(hermit_track_r )
1110
1189
AM_RANGE(0x9d0000, 0x9d0001) AM_READ_PORT("IN2")
1111
1190
AM_RANGE(0x9d8000, 0x9d8001) AM_READ_PORT("DSW")
1113
AM_RANGE(0x9e0000, 0x9e0001) AM_WRITE(hermit_leds1_w) AM_BASE_MEMBER(blitz68k_state, m_leds[0])
1114
AM_RANGE(0x9e8000, 0x9e8001) AM_WRITE(hermit_leds2_w) AM_BASE_MEMBER(blitz68k_state, m_leds[1])
1192
AM_RANGE(0x9e0000, 0x9e0001) AM_WRITE(hermit_leds1_w) AM_SHARE("leds0")
1193
AM_RANGE(0x9e8000, 0x9e8001) AM_WRITE(hermit_leds2_w) AM_SHARE("leds1")
1116
1195
AM_RANGE(0x9f0000, 0x9f0003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans
1117
1196
AM_RANGE(0x9f0004, 0x9f0005) AM_WRITEONLY
1118
AM_RANGE(0x9f0006, 0x9f0007) AM_DEVWRITE("crtc", crtc_lpen_w) // 0x9f0006: 0->1, 0x9f0007: 1->0
1197
AM_RANGE(0x9f0006, 0x9f0007) AM_DEVWRITE_LEGACY("crtc", crtc_lpen_w) // 0x9f0006: 0->1, 0x9f0007: 1->0
1120
1199
AM_RANGE(0xb00000, 0xb00001) AM_READWRITE8(crtc_r, crtc_w, 0xffff) // triggered by MCU?
1127
1206
*************************************************************************************************************/
1129
1208
// MCU simulation (to be done)
1130
static READ8_HANDLER( maxidbl_mcu1_r )
1132
UINT8 ret = 0; // space->machine().rand() gives "interesting" results
1133
logerror("%s: mcu1 reads %02x\n", space->machine().describe_context(), ret);
1136
static READ8_HANDLER( maxidbl_mcu2_r )
1138
UINT8 ret = 0; // space->machine().rand() gives "interesting" results
1139
logerror("%s: mcu2 reads %02x\n", space->machine().describe_context(), ret);
1143
static READ8_HANDLER( maxidbl_mcu_status_read_r )
1145
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
1148
static READ8_HANDLER( maxidbl_mcu_status_write_r )
1150
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
1153
static WRITE8_HANDLER( maxidbl_mcu1_w )
1155
logerror("%s: mcu1 written with %02x\n", space->machine().describe_context(), data);
1157
static WRITE8_HANDLER( maxidbl_mcu2_w )
1159
logerror("%s: mcu2 written with %02x\n", space->machine().describe_context(), data);
1162
static ADDRESS_MAP_START( maxidbl_map, AS_PROGRAM, 16 )
1209
READ8_MEMBER(blitz68k_state::maxidbl_mcu1_r)
1211
UINT8 ret = 0; // machine().rand() gives "interesting" results
1212
logerror("%s: mcu1 reads %02x\n", machine().describe_context(), ret);
1215
READ8_MEMBER(blitz68k_state::maxidbl_mcu2_r)
1217
UINT8 ret = 0; // machine().rand() gives "interesting" results
1218
logerror("%s: mcu2 reads %02x\n", machine().describe_context(), ret);
1222
READ8_MEMBER(blitz68k_state::maxidbl_mcu_status_read_r)
1224
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
1227
READ8_MEMBER(blitz68k_state::maxidbl_mcu_status_write_r)
1229
return 0x03; // bit 0 = MCU1, bit 1 = MCU2. Active high.
1232
WRITE8_MEMBER(blitz68k_state::maxidbl_mcu1_w)
1234
logerror("%s: mcu1 written with %02x\n", machine().describe_context(), data);
1236
WRITE8_MEMBER(blitz68k_state::maxidbl_mcu2_w)
1238
logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data);
1241
static ADDRESS_MAP_START( maxidbl_map, AS_PROGRAM, 16, blitz68k_state )
1163
1242
AM_RANGE(0x000000, 0x03ffff) AM_ROM
1164
1243
AM_RANGE(0x200000, 0x20ffff) AM_RAM
1166
AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_BASE_MEMBER(blitz68k_state, m_frame_buffer)
1245
AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("frame_buffer")
1168
1247
AM_RANGE(0x30000c, 0x30000d) AM_WRITENOP // 0->1 (IRQ3 ack.?)
1169
1248
AM_RANGE(0x30000e, 0x30000f) AM_WRITENOP // 1->0 (MCU related?)
1658
1737
// for(i=0;i<8;i+=2)
1659
1738
// state->m_nvram[((0x8a0)+i)/2] = 0;
1660
1739
/*finally, read the inputs*/
1661
state->m_nvram[0x89e/2] = input_port_read(timer.machine(), "MENU") & 0xffff;
1662
state->m_nvram[0x8a0/2] = input_port_read(timer.machine(), "STAT") & 0xffff;
1663
state->m_nvram[0x8a2/2] = input_port_read(timer.machine(), "BET_DEAL") & 0xffff;
1664
state->m_nvram[0x8a4/2] = input_port_read(timer.machine(), "TAKE_DOUBLE") & 0xffff;
1665
state->m_nvram[0x8a6/2] = input_port_read(timer.machine(), "SMALL_BIG") & 0xffff;
1666
state->m_nvram[0x8a8/2] = input_port_read(timer.machine(), "CANCEL_HOLD1") & 0xffff;
1667
state->m_nvram[0x8aa/2] = input_port_read(timer.machine(), "HOLD2_HOLD3") & 0xffff;
1668
state->m_nvram[0x8ac/2] = input_port_read(timer.machine(), "HOLD4_HOLD5") & 0xffff;
1740
state->m_nvram[0x89e/2] = timer.machine().root_device().ioport("MENU")->read() & 0xffff;
1741
state->m_nvram[0x8a0/2] = timer.machine().root_device().ioport("STAT")->read() & 0xffff;
1742
state->m_nvram[0x8a2/2] = timer.machine().root_device().ioport("BET_DEAL")->read() & 0xffff;
1743
state->m_nvram[0x8a4/2] = timer.machine().root_device().ioport("TAKE_DOUBLE")->read() & 0xffff;
1744
state->m_nvram[0x8a6/2] = timer.machine().root_device().ioport("SMALL_BIG")->read() & 0xffff;
1745
state->m_nvram[0x8a8/2] = timer.machine().root_device().ioport("CANCEL_HOLD1")->read() & 0xffff;
1746
state->m_nvram[0x8aa/2] = timer.machine().root_device().ioport("HOLD2_HOLD3")->read() & 0xffff;
1747
state->m_nvram[0x8ac/2] = timer.machine().root_device().ioport("HOLD4_HOLD5")->read() & 0xffff;