trunk/src/mame/drivers/suna8.c
r244661 | r244662 | |
128 | 128 | return decrypt; |
129 | 129 | } |
130 | 130 | |
131 | | DRIVER_INIT_MEMBER(suna8_state,brickzn) |
| 131 | DRIVER_INIT_MEMBER(suna8_state, brickzn_common) |
132 | 132 | { |
133 | 133 | m_decrypt = brickzn_decrypt(); |
134 | 134 | |
| 135 | // Non-banked opcodes |
| 136 | address_space &space = m_maincpu->space(AS_PROGRAM); |
| 137 | space.set_decrypted_region(0x0000, 0x7fff, m_decrypt); |
| 138 | |
| 139 | // Data banks: 00-0f normal data decryption, 10-1f alternate data decryption: |
| 140 | membank("bank1")->configure_entries(0, 16*2, memregion("maincpu")->base() + 0x10000, 0x4000); |
| 141 | // Opcode banks: 00-1f normal opcode decryption: |
| 142 | membank("bank1")->configure_decrypted_entries(0, 16, m_decrypt + 0x10000, 0x4000); |
| 143 | membank("bank1")->configure_decrypted_entries(16, 16, m_decrypt + 0x10000, 0x4000); |
| 144 | } |
| 145 | |
| 146 | DRIVER_INIT_MEMBER(suna8_state,brickzn) |
| 147 | { |
| 148 | DRIVER_INIT_CALL(brickzn_common); |
135 | 149 | // !!!!!! PATCHES !!!!!! |
| 150 | // To do: ROM banking should be disabled here |
| 151 | m_decrypt[0x11cc] = 0x00; // LD ($C040),A -> NOP |
| 152 | m_decrypt[0x11cd] = 0x00; // LD ($C040),A -> NOP |
| 153 | m_decrypt[0x11ce] = 0x00; // LD ($C040),A -> NOP |
136 | 154 | |
| 155 | m_decrypt[0x335b] = 0xc9; // RET Z -> RET (to avoid: jp $C800) |
| 156 | |
| 157 | // NMI enable / source?? |
| 158 | m_decrypt[0x1442] = 0xc9; // HALT -> RET |
| 159 | m_decrypt[0x24C6] = 0x00; // HALT -> NOP |
| 160 | m_decrypt[0x25A4] = 0x00; // HALT -> NOP |
| 161 | } |
| 162 | |
| 163 | DRIVER_INIT_MEMBER(suna8_state,brickznv5) |
| 164 | { |
| 165 | DRIVER_INIT_CALL(brickzn_common); |
| 166 | |
| 167 | // !!!!!! PATCHES !!!!!! |
137 | 168 | // To do: ROM banking should be disabled here |
138 | 169 | m_decrypt[0x11bb] = 0x00; // LD ($C040),A -> NOP |
139 | 170 | m_decrypt[0x11bc] = 0x00; // LD ($C040),A -> NOP |
r244661 | r244662 | |
145 | 176 | m_decrypt[0x1431] = 0xc9; // HALT -> RET |
146 | 177 | m_decrypt[0x24b5] = 0x00; // HALT -> NOP |
147 | 178 | m_decrypt[0x2593] = 0x00; // HALT -> NOP |
148 | | |
149 | | // Non-banked opcodes |
150 | | address_space &space = m_maincpu->space(AS_PROGRAM); |
151 | | space.set_decrypted_region(0x0000, 0x7fff, m_decrypt); |
152 | | |
153 | | // Data banks: 00-0f normal data decryption, 10-1f alternate data decryption: |
154 | | membank("bank1")->configure_entries(0, 16*2, memregion("maincpu")->base() + 0x10000, 0x4000); |
155 | | // Opcode banks: 00-1f normal opcode decryption: |
156 | | membank("bank1")->configure_decrypted_entries(0, 16, m_decrypt + 0x10000, 0x4000); |
157 | | membank("bank1")->configure_decrypted_entries(16, 16, m_decrypt + 0x10000, 0x4000); |
158 | 179 | } |
159 | 180 | |
160 | 181 | DRIVER_INIT_MEMBER(suna8_state,brickznv4) |
161 | 182 | { |
162 | | m_decrypt = brickzn_decrypt(); |
| 183 | DRIVER_INIT_CALL(brickzn_common); |
| 184 | |
163 | 185 | // !!!!!! PATCHES !!!!!! |
164 | | |
165 | 186 | // To do: ROM banking should be disabled here |
166 | 187 | m_decrypt[0x1190] = 0x00; // LD ($C040),A -> NOP |
167 | 188 | m_decrypt[0x1191] = 0x00; // LD ($C040),A -> NOP |
r244661 | r244662 | |
173 | 194 | m_decrypt[0x1406] = 0xc9; // HALT -> RET |
174 | 195 | m_decrypt[0x2487] = 0x00; // HALT -> NOP |
175 | 196 | m_decrypt[0x256c] = 0x00; // HALT -> NOP |
176 | | |
177 | | // Non-banked opcodes |
178 | | address_space &space = m_maincpu->space(AS_PROGRAM); |
179 | | space.set_decrypted_region(0x0000, 0x7fff, m_decrypt); |
180 | | |
181 | | // Data banks: 00-0f normal data decryption, 10-1f alternate data decryption: |
182 | | membank("bank1")->configure_entries(0, 16*2, memregion("maincpu")->base() + 0x10000, 0x4000); |
183 | | // Opcode banks: 00-1f normal opcode decryption: |
184 | | membank("bank1")->configure_decrypted_entries(0, 16, m_decrypt + 0x10000, 0x4000); |
185 | | membank("bank1")->configure_decrypted_entries(16, 16, m_decrypt + 0x10000, 0x4000); |
186 | 197 | } |
187 | 198 | |
188 | 199 | |
r244661 | r244662 | |
2526 | 2537 | |
2527 | 2538 | ROM_START( brickzn ) |
2528 | 2539 | ROM_REGION( 0x50000 + 0x40000, "maincpu", 0 ) /* Main Z80 Code */ |
| 2540 | ROM_LOAD( "P9.M7", 0x00000, 0x08000, CRC(bd7a3c01) SHA1(05fb2836f1c8d8818847ccb76e7b477f13a9929b) ) |
| 2541 | ROM_LOAD( "P8.K7", 0x10000, 0x20000, CRC(ec3e266d) SHA1(4441a5ae88e51353f6d1eb22c00becb0a7ecea6e) ) |
| 2542 | ROM_LOAD( "P7.I7", 0x30000, 0x20000, CRC(4dd88631) SHA1(0dbcaf3420dad82c3ed94d231948fe69b044b786) ) |
| 2543 | |
| 2544 | ROM_REGION( 0x10000, "audiocpu", 0 ) /* Music Z80 Code */ |
| 2545 | ROM_LOAD( "10.O8", 0x00000, 0x10000, CRC(4eba8178) SHA1(9a214a1acacdc124529bc9dde73a8e884fc70293) ) // BRICK MUSIC XILINX PROGRAM 3020 1991,11,14 MUSIC PROGRAM V 2,0 1990.12.14 |
| 2546 | |
| 2547 | ROM_REGION( 0x10000, "pcm", 0 ) /* PCM Z80 Code */ |
| 2548 | ROM_LOAD( "11.N10", 0x00000, 0x10000, CRC(6c54161a) SHA1(ea216d9f45b441acd56b9fed81a83e3bfe299fbd) ) |
| 2549 | |
| 2550 | ROM_REGION( 0xc0000, "gfx1", ROMREGION_INVERT ) /* Sprites */ |
| 2551 | ROM_LOAD( "P5.M5", 0x00000, 0x20000, CRC(ca59e2f7) SHA1(dbb9f2b316a44f760768f0430798e0c4e9e8f3ff) ) |
| 2552 | ROM_LOAD( "P4.L5", 0x20000, 0x20000, CRC(cc8fb330) SHA1(fd263f65b81acbfc00fe339c461068ab160c04af) ) |
| 2553 | ROM_LOAD( "P3.K5", 0x40000, 0x20000, CRC(2e4f194b) SHA1(86da1a582ea274f2af96d3e3e2ac72bcaf3638cb) ) |
| 2554 | ROM_LOAD( "P2.I5", 0x60000, 0x20000, CRC(592d45ce) SHA1(8ce9236b7deba6cf00999680314ac04eff624a6d) ) |
| 2555 | ROM_LOAD( "P1.H5", 0x80000, 0x20000, CRC(7a6bb583) SHA1(ff7018c07182fce0ff6954bbe3b08fa5105f6be0) ) |
| 2556 | ROM_LOAD( "P6.H7", 0xa0000, 0x20000, CRC(bbf31081) SHA1(1fdbd0e0853082345225e18df340184a7a604b78) ) |
| 2557 | ROM_END |
| 2558 | |
| 2559 | |
| 2560 | ROM_START( brickznv5 ) |
| 2561 | ROM_REGION( 0x50000 + 0x40000, "maincpu", 0 ) /* Main Z80 Code */ |
2529 | 2562 | ROM_LOAD( "brickzon.009", 0x00000, 0x08000, CRC(1ea68dea) SHA1(427152a26b062c5e77089de49c1da69369d4d557) ) // V5.0 1992,3,3 |
2530 | 2563 | ROM_LOAD( "brickzon.008", 0x10000, 0x20000, CRC(c61540ba) SHA1(08c0ede591b229427b910ca6bb904a6146110be8) ) |
2531 | 2564 | ROM_LOAD( "brickzon.007", 0x30000, 0x20000, CRC(ceed12f1) SHA1(9006726b75a65455afb1194298bade8fa2207b4a) ) |
r244661 | r244662 | |
2545 | 2578 | ROM_LOAD( "brickzon.006", 0xa0000, 0x20000, CRC(bbf31081) SHA1(1fdbd0e0853082345225e18df340184a7a604b78) ) |
2546 | 2579 | ROM_END |
2547 | 2580 | |
| 2581 | |
2548 | 2582 | ROM_START( brickznv4 ) |
2549 | 2583 | ROM_REGION( 0x50000 + 0x40000, "maincpu", 0 ) /* Main Z80 Code */ |
2550 | 2584 | ROM_LOAD( "39", 0x00000, 0x08000, CRC(043380bd) SHA1(7eea7cc7d754815df233879b4a9d3d88eac5b28d) ) // V3.0 1992,1,23 |
r244661 | r244662 | |
2846 | 2880 | |
2847 | 2881 | GAME( 1991, hardhea2, 0, hardhea2, hardhea2, suna8_state, hardhea2, ROT0, "SunA", "Hard Head 2 (v2.0)", 0 ) |
2848 | 2882 | |
2849 | | GAME( 1992, brickzn, 0, brickzn, brickzn, suna8_state, brickzn, ROT90, "SunA", "Brick Zone (v5.0, Joystick)", 0 ) |
| 2883 | GAME( 1992, brickzn, 0, brickzn, brickzn, suna8_state, brickzn, ROT90, "SunA", "Brick Zone (v6.0, Joystick)", 0 ) // 'V 60' |
| 2884 | GAME( 1992, brickznv5, brickzn, brickzn, brickzn, suna8_state, brickznv5, ROT90, "SunA", "Brick Zone (v5.0, Joystick)", 0 ) |
2850 | 2885 | GAME( 1992, brickznv4, brickzn, brickzn, brickzn, suna8_state, brickznv4, ROT90, "SunA", "Brick Zone (v4.0, Spinner)", 0 ) |
2851 | 2886 | GAME( 1992, brickzn11, brickzn, brickzn, brickzn, suna8_state, brickzn11, ROT90, "SunA", "Brick Zone (v1.1)", GAME_NOT_WORKING ) |
trunk/src/mess/drivers/hh_tms1k.c
r244661 | r244662 | |
11 | 11 | |
12 | 12 | serial device etc. |
13 | 13 | -------------------------------------------------------------------- |
14 | | @CP0904A TMS0970 1977, Milton Bradley Comp IV |
| 14 | @MP0904A TMS0970 1977, Milton Bradley Comp IV |
15 | 15 | @MP0905B TMS0970 1977, Parker Brothers Codename Sector |
16 | | @MP0914 TMS1000 1978, Entex Baseball 1 |
| 16 | @MP0914 TMS1000 1979, Entex Baseball |
17 | 17 | @MP1030 TMS1100 1980, APF Mathemagician |
18 | 18 | @MP3226 TMS1000 1978, Milton Bradley Simon |
19 | 19 | @MP3403 TMS1100 1978, unknown |
r244661 | r244662 | |
371 | 371 | |
372 | 372 | void hh_tms1k_state::mathmagi_display() |
373 | 373 | { |
| 374 | m_display_maxy = 11; |
374 | 375 | m_display_maxx = 8; |
375 | | m_display_maxy = 11; |
376 | 376 | |
377 | 377 | // R0-R7: 7seg leds |
378 | 378 | for (int y = 0; y < 8; y++) |
r244661 | r244662 | |
535 | 535 | |
536 | 536 | void hh_tms1k_state::amaztron_display() |
537 | 537 | { |
| 538 | m_display_maxy = 3; |
538 | 539 | m_display_maxx = 8; |
539 | | m_display_maxy = 3; |
540 | 540 | |
541 | 541 | // R8,R9: select digit |
542 | 542 | for (int y = 0; y < 2; y++) |
r244661 | r244662 | |
1347 | 1347 | |
1348 | 1348 | WRITE16_MEMBER(hh_tms1k_state::cnsector_write_r) |
1349 | 1349 | { |
| 1350 | m_display_maxy = 7; |
1350 | 1351 | m_display_maxx = 8; |
1351 | | m_display_maxy = 7; |
1352 | 1352 | |
1353 | 1353 | // R0-R5: select digit (right-to-left) |
1354 | 1354 | for (int y = 0; y < 6; y++) |
r244661 | r244662 | |
1555 | 1555 | |
1556 | 1556 | WRITE16_MEMBER(hh_tms1k_state::stopthief_write_r) |
1557 | 1557 | { |
| 1558 | m_display_maxy = 3; |
1558 | 1559 | m_display_maxx = 7; |
1559 | | m_display_maxy = 3; |
1560 | 1560 | |
1561 | 1561 | // R0-R2: select digit |
1562 | 1562 | UINT8 o = BITSWAP8(m_o,3,5,2,1,4,0,6,7) & 0x7f; |
r244661 | r244662 | |
2294 | 2294 | CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", GAME_SUPPORTS_SAVE ) |
2295 | 2295 | CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", GAME_SUPPORTS_SAVE ) |
2296 | 2296 | |
2297 | | CONS( 1978, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball (Entex)", GAME_SUPPORTS_SAVE ) |
| 2297 | CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Baseball (Entex)", GAME_SUPPORTS_SAVE ) |
2298 | 2298 | |
2299 | 2299 | CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", GAME_SUPPORTS_SAVE ) |
2300 | 2300 | |
trunk/src/mess/drivers/hh_ucom4.c
r244661 | r244662 | |
86 | 86 | void tmtennis_set_clock(); |
87 | 87 | DECLARE_INPUT_CHANGED_MEMBER(tmtennis_difficulty_switch); |
88 | 88 | DECLARE_MACHINE_RESET(tmtennis); |
89 | | |
90 | | DECLARE_WRITE8_MEMBER(tmpacman_grid_w); |
91 | | DECLARE_WRITE8_MEMBER(tmpacman_plate_w); |
92 | | DECLARE_WRITE8_MEMBER(tmpacman_port_e_w); |
93 | 89 | |
94 | 90 | DECLARE_READ8_MEMBER(alnchase_input_r); |
95 | 91 | DECLARE_WRITE8_MEMBER(alnchase_display_w); |
r244661 | r244662 | |
236 | 232 | |
237 | 233 | WRITE8_MEMBER(hh_ucom4_state::edracula_grid_w) |
238 | 234 | { |
239 | | // ports C,D: vfd matrix grid |
| 235 | // port C/D: vfd matrix grid |
240 | 236 | int shift = (offset - NEC_UCOM4_PORTC) * 4; |
241 | 237 | m_grid = (m_grid & ~(0xf << shift)) | (data << shift); |
242 | 238 | |
r244661 | r244662 | |
245 | 241 | |
246 | 242 | WRITE8_MEMBER(hh_ucom4_state::edracula_plate_w) |
247 | 243 | { |
248 | | // ports E-H,I01: vfd matrix plate |
| 244 | // port E/F/G/H/I01: vfd matrix plate |
249 | 245 | int shift = (offset - NEC_UCOM4_PORTE) * 4; |
250 | 246 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
251 | 247 | |
r244661 | r244662 | |
262 | 258 | |
263 | 259 | |
264 | 260 | static INPUT_PORTS_START( edracula ) |
265 | | PORT_START("IN.0") // port A |
| 261 | PORT_START("IN.0") |
266 | 262 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) |
267 | 263 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START ) |
268 | 264 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
269 | 265 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
270 | 266 | |
271 | | PORT_START("IN.1") // port B |
| 267 | PORT_START("IN.1") |
272 | 268 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) |
273 | 269 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) |
274 | 270 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) |
r244661 | r244662 | |
325 | 321 | |
326 | 322 | READ8_MEMBER(hh_ucom4_state::tmtennis_input_r) |
327 | 323 | { |
328 | | // ports A,B: buttons |
| 324 | // port A/B: buttons |
329 | 325 | return ~read_inputs(2) >> (offset*4); |
330 | 326 | } |
331 | 327 | |
332 | | WRITE8_MEMBER(hh_ucom4_state::tmtennis_grid_w) |
| 328 | WRITE8_MEMBER(hh_ucom4_state::tmtennis_port_e_w) |
333 | 329 | { |
334 | | // ports G-I: vfd matrix grid |
335 | | int shift = (offset - NEC_UCOM4_PORTG) * 4; |
336 | | m_grid = (m_grid & ~(0xf << shift)) | (data << shift); |
337 | | |
338 | | display_matrix(12, 12, m_plate, m_grid); |
| 330 | // E0/E1: input mux |
| 331 | // E2: speaker out |
| 332 | // E3: N/C |
| 333 | m_inp_mux = data & 3; |
| 334 | m_speaker->level_w(data >> 2 & 1); |
339 | 335 | } |
340 | 336 | |
341 | 337 | WRITE8_MEMBER(hh_ucom4_state::tmtennis_plate_w) |
342 | 338 | { |
343 | | // ports C-F: vfd matrix plate |
| 339 | // port C/D/F: vfd matrix plate |
344 | 340 | if (offset == NEC_UCOM4_PORTF) offset--; |
345 | 341 | int shift = (offset - NEC_UCOM4_PORTC) * 4; |
346 | 342 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
r244661 | r244662 | |
348 | 344 | display_matrix(12, 12, m_plate, m_grid); |
349 | 345 | } |
350 | 346 | |
351 | | WRITE8_MEMBER(hh_ucom4_state::tmtennis_port_e_w) |
| 347 | WRITE8_MEMBER(hh_ucom4_state::tmtennis_grid_w) |
352 | 348 | { |
353 | | // E0,E1: input mux |
354 | | // E2: speaker out |
355 | | // E3: N/C |
356 | | m_inp_mux = data & 3; |
357 | | m_speaker->level_w(data >> 2 & 1); |
| 349 | // port G/H/I: vfd matrix grid |
| 350 | int shift = (offset - NEC_UCOM4_PORTG) * 4; |
| 351 | m_grid = (m_grid & ~(0xf << shift)) | (data << shift); |
| 352 | |
| 353 | display_matrix(12, 12, m_plate, m_grid); |
358 | 354 | } |
359 | 355 | |
360 | 356 | |
| 357 | |
361 | 358 | /* Pro-Tennis physical button layout and labels is like this: |
362 | 359 | |
363 | 360 | [SERVE] [1] [2] [3] [3] [2] [1] [SERVE] |
r244661 | r244662 | |
459 | 456 | |
460 | 457 | ***************************************************************************/ |
461 | 458 | |
462 | | WRITE8_MEMBER(hh_ucom4_state::tmpacman_grid_w) |
463 | | { |
464 | | // ports C,D: vfd matrix grid |
465 | | int shift = (offset - NEC_UCOM4_PORTC) * 4; |
466 | | m_grid = (m_grid & ~(0xf << shift)) | (data << shift); |
467 | | |
468 | | display_matrix(19, 8, m_plate, m_grid); |
469 | | } |
470 | | |
471 | | WRITE8_MEMBER(hh_ucom4_state::tmpacman_plate_w) |
472 | | { |
473 | | // ports E-I: vfd matrix plate |
474 | | int shift = (offset - NEC_UCOM4_PORTE) * 4; |
475 | | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
476 | | |
477 | | display_matrix(19, 8, m_plate, m_grid); |
478 | | } |
479 | | |
480 | | WRITE8_MEMBER(hh_ucom4_state::tmpacman_port_e_w) |
481 | | { |
482 | | // E1: speaker out |
483 | | m_speaker->level_w(data >> 1 & 1); |
484 | | |
485 | | tmpacman_plate_w(space, offset, data); |
486 | | } |
487 | | |
488 | | |
489 | 459 | static INPUT_PORTS_START( tmpacman ) |
490 | | PORT_START("IN.0") // port A |
491 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // 4 separate directional buttons, hence 16way |
492 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY |
493 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY |
494 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY |
495 | | |
496 | | PORT_START("IN.1") // port B |
497 | | PORT_CONFNAME( 0x00, 0x00, DEF_STR( Difficulty ) ) |
498 | | PORT_CONFSETTING( 0x00, "Amateur" ) |
499 | | PORT_CONFSETTING( 0x01, "Professional" ) |
500 | | PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) |
501 | 460 | INPUT_PORTS_END |
502 | 461 | |
503 | 462 | |
r244661 | r244662 | |
505 | 464 | |
506 | 465 | /* basic machine hardware */ |
507 | 466 | MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_430kHz) |
508 | | MCFG_UCOM4_READ_A_CB(IOPORT("IN.0")) |
509 | | MCFG_UCOM4_READ_B_CB(IOPORT("IN.1")) |
510 | | MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, tmpacman_grid_w)) |
511 | | MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, tmpacman_grid_w)) |
512 | | MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, tmpacman_port_e_w)) |
513 | | MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w)) |
514 | | MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w)) |
515 | | MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w)) |
516 | | MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w)) |
517 | 467 | |
518 | | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) |
519 | 468 | MCFG_DEFAULT_LAYOUT(layout_tmpacman) |
520 | 469 | |
521 | 470 | /* no video! */ |
r244661 | r244662 | |
546 | 495 | |
547 | 496 | ***************************************************************************/ |
548 | 497 | |
| 498 | |
| 499 | |
549 | 500 | READ8_MEMBER(hh_ucom4_state::alnchase_input_r) |
550 | 501 | { |
551 | 502 | // port A: buttons |
r244661 | r244662 | |
556 | 507 | { |
557 | 508 | if (offset <= NEC_UCOM4_PORTE) |
558 | 509 | { |
559 | | // ports C,D,E0: vfd matrix grid |
| 510 | // C/D/E0: vfd matrix grid |
560 | 511 | int shift = (offset - NEC_UCOM4_PORTC) * 4; |
561 | 512 | m_grid = (m_grid & ~(0xf << shift)) | (data << shift); |
562 | 513 | |
r244661 | r244662 | |
567 | 518 | |
568 | 519 | if (offset >= NEC_UCOM4_PORTE) |
569 | 520 | { |
570 | | // ports F-I,E23: vfd matrix plate |
| 521 | // E23/F/G/H/I: vfd matrix plate |
571 | 522 | int shift = (offset - NEC_UCOM4_PORTE) * 4; |
572 | 523 | m_plate = ((m_plate << 2 & ~(0xf << shift)) | (data << shift)) >> 2; |
573 | 524 | } |
r244661 | r244662 | |
577 | 528 | |
578 | 529 | WRITE8_MEMBER(hh_ucom4_state::alnchase_port_e_w) |
579 | 530 | { |
| 531 | alnchase_display_w(space, offset, data); |
| 532 | |
580 | 533 | // E1: speaker out |
581 | 534 | m_speaker->level_w(data >> 1 & 1); |
582 | | |
583 | | alnchase_display_w(space, offset, data); |
584 | 535 | } |
585 | 536 | |
586 | 537 | /* physical button layout and labels is like this: |