trunk/src/mess/drivers/elecbowl.c
| r245589 | r245590 | |
| 65 | 65 | UINT8 d = m_r >> 1 & 1; |
| 66 | 66 | m_display_state[5] = (m_r & 1) ? (d << (m_o & 7)) : 0; |
| 67 | 67 | m_display_state[6] = (m_r >> 2 & 1) ? (d << (m_o & 7)) : 0; |
| 68 | | |
| 68 | |
| 69 | 69 | // digit 4 is from u6 Q7 |
| 70 | 70 | m_display_segmask[4] = 6; |
| 71 | 71 | m_display_state[4] = (m_display_state[6] & 0x80) ? 6 : 0; |
| r245589 | r245590 | |
| 104 | 104 | // O0-O6: digit segments A-G |
| 105 | 105 | // O7: N/C |
| 106 | 106 | //if (data & 0x80) printf("%X ",data&0x7f); |
| 107 | | |
| 107 | |
| 108 | 108 | m_o = data & 0x7f; |
| 109 | 109 | prepare_display(); |
| 110 | 110 | } |
| r245589 | r245590 | |
| 169 | 169 | lA+lB+lC, // 7 |
| 170 | 170 | lA+lB+lC+lD+lE+lF+lG, // 8 |
| 171 | 171 | lA+lB+lG+lF+lC+lD, // 9 |
| 172 | | |
| 172 | |
| 173 | 173 | 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, |
| 174 | 174 | 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, |
| 175 | 175 | 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f |
trunk/src/mess/drivers/hh_hmcs40.c
| r245589 | r245590 | |
| 186 | 186 | int state = active_state[y] >> x & 1; |
| 187 | 187 | char buf1[0x10]; // lampyx |
| 188 | 188 | char buf2[0x10]; // y.x |
| 189 | | |
| 189 | |
| 190 | 190 | if (x == m_display_maxx) |
| 191 | 191 | { |
| 192 | 192 | // always-on if selected |
| r245589 | r245590 | |
| 261 | 261 | { |
| 262 | 262 | line = line ? 1 : 0; |
| 263 | 263 | state = state ? 1 : 0; |
| 264 | | |
| 264 | |
| 265 | 265 | if (state != m_int[line]) |
| 266 | 266 | { |
| 267 | 267 | if (machine().phase() >= MACHINE_PHASE_RESET) |
| r245589 | r245590 | |
| 530 | 530 | // R0x-R6x,D0,D1: vfd matrix plate |
| 531 | 531 | int shift = offset * 4; |
| 532 | 532 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 533 | | |
| 533 | |
| 534 | 534 | // update display |
| 535 | 535 | UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7); |
| 536 | 536 | UINT32 plate = BITSWAP32(m_plate,31,30,27,0,1,2,3,4,5,6,7,8,9,10,11,24,25,26,29,28,23,22,21,20,19,18,17,16,15,14,13,12); |
| r245589 | r245590 | |
| 549 | 549 | m_inp_mux = inp_mux; |
| 550 | 550 | update_int0(); |
| 551 | 551 | } |
| 552 | | |
| 552 | |
| 553 | 553 | // D8-D15: vfd matrix grid |
| 554 | 554 | m_grid = data >> 8 & 0xff; |
| 555 | | |
| 555 | |
| 556 | 556 | // D0,D1: plate 12,13 (update display there) |
| 557 | 557 | plate_w(space, 7, data & 3); |
| 558 | 558 | } |
| r245589 | r245590 | |
| 783 | 783 | // R13: speaker on |
| 784 | 784 | if (offset == HMCS40_PORT_R1X && data & 8) |
| 785 | 785 | m_speaker_volume = CDKONG_SPEAKER_MAX; |
| 786 | | |
| 786 | |
| 787 | 787 | // R0x-R6x: vfd matrix plate |
| 788 | 788 | int shift = offset * 4; |
| 789 | 789 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| r245589 | r245590 | |
| 842 | 842 | MCFG_TIMER_DRIVER_ADD_PERIODIC("speaker_decay", cdkong_state, speaker_decay_sim, attotime::from_msec(CDKONG_SPEAKER_DECAY)) |
| 843 | 843 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) |
| 844 | 844 | MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) |
| 845 | | |
| 845 | |
| 846 | 846 | /* no video! */ |
| 847 | 847 | |
| 848 | 848 | /* sound hardware */ |
| r245589 | r245590 | |
| 898 | 898 | { |
| 899 | 899 | // D0: speaker out |
| 900 | 900 | m_speaker->level_w(data & 1); |
| 901 | | |
| 901 | |
| 902 | 902 | // D1: speaker on? |
| 903 | 903 | |
| 904 | 904 | // D2-D15: vfd matrix plate |
| r245589 | r245590 | |
| 911 | 911 | // R10,R11: input mux |
| 912 | 912 | if (offset == HMCS40_PORT_R1X) |
| 913 | 913 | m_inp_mux = data & 3; |
| 914 | | |
| 914 | |
| 915 | 915 | // R1x-R3x: vfd matrix grid |
| 916 | 916 | int shift = (offset - HMCS40_PORT_R1X) * 4; |
| 917 | 917 | m_grid = (m_grid & ~(0xf << shift)) | (data << shift); |
| r245589 | r245590 | |
| 978 | 978 | * board label Coleco 75690 |
| 979 | 979 | * Hitachi HD38820A28/29 MCU |
| 980 | 980 | * cyan/red VFD display Futaba DM-34Z 2A, with color overlay |
| 981 | | |
| 981 | |
| 982 | 982 | known releases: |
| 983 | 983 | - Japan: Super Pack Monster, by Gakken |
| 984 | 984 | - USA: Pac-Man, published by Coleco (name-license from Midway) |
| r245589 | r245590 | |
| 1102 | 1102 | - P1 Left: Ms. Pac-Man (default game) |
| 1103 | 1103 | - P1 Down: Head-to-Head Ms. Pac-Man (2-player mode) |
| 1104 | 1104 | - P1 Up: Demo |
| 1105 | | |
| 1105 | |
| 1106 | 1106 | BTANB note: in demo-mode, she hardly walks to the upper two rows, never |
| 1107 | 1107 | finishing the level. |
| 1108 | 1108 | |
| r245589 | r245590 | |
| 1437 | 1437 | // R0x-R6x,D8: vfd matrix plate |
| 1438 | 1438 | int shift = offset * 4; |
| 1439 | 1439 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 1440 | | |
| 1440 | |
| 1441 | 1441 | // update display |
| 1442 | 1442 | UINT32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23); |
| 1443 | 1443 | display_matrix(30, 8, plate, m_grid); |
| r245589 | r245590 | |
| 1551 | 1551 | m_inp_mux = inp_mux; |
| 1552 | 1552 | update_int0(); |
| 1553 | 1553 | } |
| 1554 | | |
| 1554 | |
| 1555 | 1555 | // D7-D15: vfd matrix grid |
| 1556 | 1556 | m_grid = data >> 7 & 0x1ff; |
| 1557 | | |
| 1557 | |
| 1558 | 1558 | // D0-D4: more plates |
| 1559 | 1559 | m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000); |
| 1560 | 1560 | prepare_display(); |
| r245589 | r245590 | |
| 1672 | 1672 | m_inp_mux = inp_mux; |
| 1673 | 1673 | update_int1(); |
| 1674 | 1674 | } |
| 1675 | | |
| 1675 | |
| 1676 | 1676 | // D6-D15: vfd matrix grid |
| 1677 | 1677 | m_grid = data >> 6 & 0x3ff; |
| 1678 | | |
| 1678 | |
| 1679 | 1679 | // D0-D3,D5: more plates |
| 1680 | 1680 | m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x2f0000); |
| 1681 | 1681 | prepare_display(); |