trunk/src/mame/layout/rowamet.lay
| r17921 | r17922 | |
| 16 | 16 | <color red="0.0" green="0.0" blue="0.0" /> |
| 17 | 17 | </rect> |
| 18 | 18 | </element> |
| 19 | | <element name="P0"><text string="Balls"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 19 | <element name="P0"><text string="Ball"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 20 | 20 | <element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 21 | 21 | <element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 22 | 22 | <element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 23 | 23 | <element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 24 | 24 | <element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 25 | | <element name="P7"><text string="High Score"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 25 | <element name="P7"><text string="Match"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 26 | <element name="P8"><text string="Player"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 26 | 27 | |
| 27 | 28 | <view name="Default Layout"> |
| 28 | 29 | |
| r17921 | r17922 | |
| 114 | 115 | <bounds left="230" top="225" right="264" bottom="264" /> |
| 115 | 116 | </bezel> |
| 116 | 117 | |
| 117 | | <!-- High Score --> |
| 118 | | <bezel name="digit24" element="digit"> |
| 118 | <!-- Player --> |
| 119 | <bezel name="digit27" element="digit"> |
| 119 | 120 | <bounds left="10" top="285" right="44" bottom="324" /> |
| 120 | 121 | </bezel> |
| 121 | | <bezel name="digit25" element="digit"> |
| 122 | | <bounds left="54" top="285" right="88" bottom="324" /> |
| 123 | | </bezel> |
| 122 | |
| 123 | <!-- Match --> |
| 124 | 124 | <bezel name="digit26" element="digit"> |
| 125 | | <bounds left="98" top="285" right="132" bottom="324" /> |
| 126 | | </bezel> |
| 127 | | <bezel name="digit27" element="digit"> |
| 128 | | <bounds left="142" top="285" right="176" bottom="324" /> |
| 129 | | </bezel> |
| 130 | | <bezel name="digit28" element="digit"> |
| 131 | | <bounds left="186" top="285" right="220" bottom="324" /> |
| 132 | | </bezel> |
| 133 | | <bezel name="digit29" element="digit"> |
| 134 | 125 | <bounds left="230" top="285" right="264" bottom="324" /> |
| 135 | 126 | </bezel> |
| 136 | 127 | |
| 137 | 128 | <!-- Credits --> |
| 138 | | <bezel name="digit30" element="digit"> |
| 129 | <bezel name="digit25" element="digit"> |
| 139 | 130 | <bounds left="10" top="345" right="44" bottom="384" /> |
| 140 | 131 | </bezel> |
| 141 | | <bezel name="digit31" element="digit"> |
| 142 | | <bounds left="54" top="345" right="88" bottom="384" /> |
| 143 | | </bezel> |
| 144 | 132 | |
| 145 | | <!-- Match / Balls Left --> |
| 146 | | <bezel name="digit32" element="digit"> |
| 147 | | <bounds left="186" top="345" right="220" bottom="384" /> |
| 148 | | </bezel> |
| 149 | | <bezel name="digit33" element="digit"> |
| 133 | <!-- Ball --> |
| 134 | <bezel name="digit24" element="digit"> |
| 150 | 135 | <bounds left="230" top="345" right="264" bottom="384" /> |
| 151 | 136 | </bezel> |
| 152 | 137 | <bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel> |
| r17921 | r17922 | |
| 155 | 140 | <bezel element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel> |
| 156 | 141 | <bezel element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel> |
| 157 | 142 | <bezel element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel> |
| 158 | | <bezel element="P7"><bounds left="100" right="180" top="270" bottom="282" /></bezel> |
| 143 | <bezel element="P7"><bounds left="200" right="258" top="270" bottom="282" /></bezel> |
| 144 | <bezel element="P8"><bounds left="30" right="88" top="270" bottom="282" /></bezel> |
| 159 | 145 | </view> |
| 160 | 146 | </mamelayout> |
trunk/src/mame/drivers/rowamet.c
| r17921 | r17922 | |
| 5 | 5 | |
| 6 | 6 | PinMAME used as reference (couldn't find a manual) |
| 7 | 7 | |
| 8 | ToDO: |
| 9 | - Inputs |
| 10 | - Outputs |
| 11 | - Fix display |
| 12 | - Doesn't boot properly |
| 8 | 13 | |
| 9 | 14 | *************************************************************************************/ |
| 10 | 15 | |
| r17921 | r17922 | |
| 26 | 31 | DECLARE_READ8_MEMBER(sound_r); |
| 27 | 32 | DECLARE_READ8_MEMBER(switch_r); |
| 28 | 33 | DECLARE_WRITE8_MEMBER(mute_w); |
| 34 | DECLARE_READ8_MEMBER(io_r); |
| 35 | DECLARE_WRITE8_MEMBER(io_w); |
| 29 | 36 | UINT8 m_out_offs; |
| 37 | UINT8 m_sndcmd; |
| 38 | UINT8 m_io[16]; |
| 30 | 39 | required_device<cpu_device> m_maincpu; |
| 31 | 40 | required_device<cpu_device> m_cpu2; |
| 32 | 41 | required_shared_ptr<UINT8> m_p_ram; |
| r17921 | r17922 | |
| 46 | 55 | static ADDRESS_MAP_START( rowamet_map, AS_PROGRAM, 8, rowamet_state ) |
| 47 | 56 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 48 | 57 | AM_RANGE(0x2800, 0x2808) AM_READ(switch_r) |
| 49 | | AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("ram") |
| 58 | AM_RANGE(0x4000, 0x407f) AM_RAM |
| 59 | AM_RANGE(0x4080, 0x408f) AM_RAM AM_SHARE("ram") |
| 60 | AM_RANGE(0x4090, 0x409f) AM_READWRITE(io_r,io_w) |
| 61 | AM_RANGE(0x40a0, 0x40ff) AM_RAM |
| 50 | 62 | ADDRESS_MAP_END |
| 51 | 63 | |
| 52 | 64 | static ADDRESS_MAP_START( rowamet_sub_map, AS_PROGRAM, 8, rowamet_state ) |
| r17921 | r17922 | |
| 66 | 78 | |
| 67 | 79 | READ8_MEMBER( rowamet_state::sound_r ) |
| 68 | 80 | { |
| 69 | | return (m_p_ram[0x92] >> 4) | (m_p_ram[0x93] & 0xf0); |
| 81 | return m_sndcmd; |
| 70 | 82 | } |
| 71 | 83 | |
| 72 | 84 | READ8_MEMBER( rowamet_state::switch_r ) |
| r17921 | r17922 | |
| 77 | 89 | WRITE8_MEMBER( rowamet_state::mute_w ) |
| 78 | 90 | { |
| 79 | 91 | machine().sound().system_enable(~data); |
| 80 | | printf("%X ",data); |
| 81 | 92 | } |
| 82 | 93 | |
| 83 | | //m_cpu2->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 94 | READ8_MEMBER( rowamet_state::io_r ) |
| 95 | { |
| 96 | return m_io[offset]; |
| 97 | } |
| 98 | |
| 99 | WRITE8_MEMBER( rowamet_state::io_w ) |
| 100 | { |
| 101 | m_io[offset] = data; |
| 102 | |
| 103 | if (offset == 2) |
| 104 | { |
| 105 | UINT8 cmd = (m_io[2]>>4) | (m_io[3] & 0xf0); |
| 106 | if (cmd != m_sndcmd) |
| 107 | { |
| 108 | m_sndcmd = cmd; |
| 109 | machine().device("cpu2")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 110 | } |
| 111 | } |
| 112 | } |
| 113 | |
| 84 | 114 | void rowamet_state::machine_reset() |
| 85 | 115 | { |
| 86 | 116 | } |
| r17921 | r17922 | |
| 93 | 123 | { |
| 94 | 124 | static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0, 0, 0, 0, 0, 0 }; |
| 95 | 125 | rowamet_state *state = timer.machine().driver_data<rowamet_state>(); |
| 96 | | state->m_out_offs++; |
| 97 | | if (state->m_out_offs > 0x9f) |
| 98 | | state->m_out_offs = 0x80; |
| 126 | state->m_out_offs &= 15; |
| 99 | 127 | |
| 100 | | if (state->m_out_offs < 0x90) |
| 101 | | { |
| 102 | | UINT8 digit = state->m_out_offs << 1; |
| 103 | | output_set_digit_value(digit, patterns[state->m_p_ram[state->m_out_offs]>>4]); |
| 104 | | output_set_digit_value(++digit, patterns[state->m_p_ram[state->m_out_offs]&15]); |
| 105 | | } |
| 106 | | //else |
| 107 | | //if (state->m_out_offs == 0x90) |
| 108 | | // timer.machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE); |
| 109 | | //else |
| 110 | | //if (state->m_out_offs == 0x9f) |
| 111 | | // timer.machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE); |
| 128 | UINT8 digit = state->m_out_offs << 1; |
| 129 | output_set_digit_value(digit, patterns[state->m_p_ram[state->m_out_offs]>>4]); |
| 130 | output_set_digit_value(++digit, patterns[state->m_p_ram[state->m_out_offs++]&15]); |
| 112 | 131 | } |
| 113 | 132 | |
| 114 | 133 | static MACHINE_CONFIG_START( rowamet, rowamet_state ) |