trunk/src/mame/layout/g627.lay
| r17866 | r17867 | |
| 18 | 18 | </element> |
| 19 | 19 | <element name="P0"><text string="Balls"><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 | | <element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 22 | | <element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 23 | | <element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 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> |
| 21 | <element name="P3"><text string="East"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 22 | <element name="P4"><text string="North"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 23 | <element name="P5"><text string="West"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 24 | <element name="P6"><text string="South"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 26 | 25 | |
| 27 | 26 | <view name="Default Layout"> |
| 28 | 27 | |
| r17866 | r17867 | |
| 35 | 34 | |
| 36 | 35 | <!-- Player 1 Score --> |
| 37 | 36 | |
| 38 | | <bezel name="digit5" element="digit"> |
| 37 | <bezel name="digit0" element="digit"> |
| 39 | 38 | <bounds left="10" top="45" right="44" bottom="84" /> |
| 40 | 39 | </bezel> |
| 41 | | <bezel name="digit4" element="digit"> |
| 40 | <bezel name="digit1" element="digit"> |
| 42 | 41 | <bounds left="54" top="45" right="88" bottom="84" /> |
| 43 | 42 | </bezel> |
| 44 | | <bezel name="digit3" element="digit"> |
| 43 | <bezel name="digit2" element="digit"> |
| 45 | 44 | <bounds left="98" top="45" right="132" bottom="84" /> |
| 46 | 45 | </bezel> |
| 47 | | <bezel name="digit2" element="digit"> |
| 46 | <bezel name="digit3" element="digit"> |
| 48 | 47 | <bounds left="142" top="45" right="176" bottom="84" /> |
| 49 | 48 | </bezel> |
| 50 | | <bezel name="digit1" element="digit"> |
| 49 | <bezel name="digit4" element="digit"> |
| 51 | 50 | <bounds left="186" top="45" right="220" bottom="84" /> |
| 52 | 51 | </bezel> |
| 53 | | <bezel name="digit0" element="digit"> |
| 52 | <bezel name="digit5" element="digit"> |
| 54 | 53 | <bounds left="230" top="45" right="264" bottom="84" /> |
| 55 | 54 | </bezel> |
| 56 | 55 | |
| 57 | 56 | <!-- Player 2 Score --> |
| 58 | | <bezel name="digit15" element="digit"> |
| 57 | <bezel name="digit10" element="digit"> |
| 59 | 58 | <bounds left="10" top="105" right="44" bottom="144" /> |
| 60 | 59 | </bezel> |
| 61 | | <bezel name="digit14" element="digit"> |
| 60 | <bezel name="digit11" element="digit"> |
| 62 | 61 | <bounds left="54" top="105" right="88" bottom="144" /> |
| 63 | 62 | </bezel> |
| 64 | | <bezel name="digit13" element="digit"> |
| 63 | <bezel name="digit12" element="digit"> |
| 65 | 64 | <bounds left="98" top="105" right="132" bottom="144" /> |
| 66 | 65 | </bezel> |
| 67 | | <bezel name="digit12" element="digit"> |
| 66 | <bezel name="digit13" element="digit"> |
| 68 | 67 | <bounds left="142" top="105" right="176" bottom="144" /> |
| 69 | 68 | </bezel> |
| 70 | | <bezel name="digit11" element="digit"> |
| 69 | <bezel name="digit14" element="digit"> |
| 71 | 70 | <bounds left="186" top="105" right="220" bottom="144" /> |
| 72 | 71 | </bezel> |
| 73 | | <bezel name="digit10" element="digit"> |
| 72 | <bezel name="digit15" element="digit"> |
| 74 | 73 | <bounds left="230" top="105" right="264" bottom="144" /> |
| 75 | 74 | </bezel> |
| 76 | 75 | |
| 77 | 76 | <!-- Player 3 Score --> |
| 78 | | <bezel name="digit25" element="digit"> |
| 77 | <bezel name="digit20" element="digit"> |
| 79 | 78 | <bounds left="10" top="165" right="44" bottom="204" /> |
| 80 | 79 | </bezel> |
| 81 | | <bezel name="digit24" element="digit"> |
| 80 | <bezel name="digit21" element="digit"> |
| 82 | 81 | <bounds left="54" top="165" right="88" bottom="204" /> |
| 83 | 82 | </bezel> |
| 84 | | <bezel name="digit23" element="digit"> |
| 83 | <bezel name="digit22" element="digit"> |
| 85 | 84 | <bounds left="98" top="165" right="132" bottom="204" /> |
| 86 | 85 | </bezel> |
| 87 | | <bezel name="digit22" element="digit"> |
| 86 | <bezel name="digit23" element="digit"> |
| 88 | 87 | <bounds left="142" top="165" right="176" bottom="204" /> |
| 89 | 88 | </bezel> |
| 90 | | <bezel name="digit21" element="digit"> |
| 89 | <bezel name="digit24" element="digit"> |
| 91 | 90 | <bounds left="186" top="165" right="220" bottom="204" /> |
| 92 | 91 | </bezel> |
| 93 | | <bezel name="digit20" element="digit"> |
| 92 | <bezel name="digit25" element="digit"> |
| 94 | 93 | <bounds left="230" top="165" right="264" bottom="204" /> |
| 95 | 94 | </bezel> |
| 96 | 95 | |
| 97 | 96 | <!-- Player 4 Score --> |
| 98 | | <bezel name="digit35" element="digit"> |
| 97 | <bezel name="digit30" element="digit"> |
| 99 | 98 | <bounds left="10" top="225" right="44" bottom="264" /> |
| 100 | 99 | </bezel> |
| 101 | | <bezel name="digit34" element="digit"> |
| 100 | <bezel name="digit31" element="digit"> |
| 102 | 101 | <bounds left="54" top="225" right="88" bottom="264" /> |
| 103 | 102 | </bezel> |
| 104 | | <bezel name="digit33" element="digit"> |
| 103 | <bezel name="digit32" element="digit"> |
| 105 | 104 | <bounds left="98" top="225" right="132" bottom="264" /> |
| 106 | 105 | </bezel> |
| 107 | | <bezel name="digit32" element="digit"> |
| 106 | <bezel name="digit33" element="digit"> |
| 108 | 107 | <bounds left="142" top="225" right="176" bottom="264" /> |
| 109 | 108 | </bezel> |
| 110 | | <bezel name="digit31" element="digit"> |
| 109 | <bezel name="digit34" element="digit"> |
| 111 | 110 | <bounds left="186" top="225" right="220" bottom="264" /> |
| 112 | 111 | </bezel> |
| 113 | | <bezel name="digit30" element="digit"> |
| 112 | <bezel name="digit35" element="digit"> |
| 114 | 113 | <bounds left="230" top="225" right="264" bottom="264" /> |
| 115 | 114 | </bezel> |
| 116 | 115 | |
| 117 | | <!-- High Score --> |
| 118 | | <bezel name="digit45" element="digit"> |
| 119 | | <bounds left="10" top="285" right="44" bottom="324" /> |
| 120 | | </bezel> |
| 121 | | <bezel name="digit44" element="digit"> |
| 122 | | <bounds left="54" top="285" right="88" bottom="324" /> |
| 123 | | </bezel> |
| 124 | | <bezel name="digit43" element="digit"> |
| 125 | | <bounds left="98" top="285" right="132" bottom="324" /> |
| 126 | | </bezel> |
| 127 | | <bezel name="digit42" element="digit"> |
| 128 | | <bounds left="142" top="285" right="176" bottom="324" /> |
| 129 | | </bezel> |
| 130 | | <bezel name="digit41" element="digit"> |
| 131 | | <bounds left="186" top="285" right="220" bottom="324" /> |
| 132 | | </bezel> |
| 133 | | <bezel name="digit40" element="digit"> |
| 134 | | <bounds left="230" top="285" right="264" bottom="324" /> |
| 135 | | </bezel> |
| 136 | | |
| 137 | | <!-- Credits --> |
| 138 | | <bezel name="digit55" element="digit"> |
| 116 | <!-- Credits and Balls --> |
| 117 | <bezel name="digit50" element="digit"> |
| 139 | 118 | <bounds left="10" top="345" right="44" bottom="384" /> |
| 140 | 119 | </bezel> |
| 141 | | <bezel name="digit54" element="digit"> |
| 120 | <bezel name="digit51" element="digit"> |
| 142 | 121 | <bounds left="54" top="345" right="88" bottom="384" /> |
| 143 | 122 | </bezel> |
| 144 | | <bezel name="digit53" element="digit"> |
| 123 | <bezel name="digit52" element="digit"> |
| 145 | 124 | <bounds left="98" top="345" right="132" bottom="384" /> |
| 146 | 125 | </bezel> |
| 147 | | <bezel name="digit52" element="digit"> |
| 126 | <bezel name="digit53" element="digit"> |
| 148 | 127 | <bounds left="142" top="345" right="176" bottom="384" /> |
| 149 | 128 | </bezel> |
| 150 | | |
| 151 | | <!-- Match / Balls Left --> |
| 152 | | <bezel name="digit51" element="digit"> |
| 129 | <bezel name="digit54" element="digit"> |
| 153 | 130 | <bounds left="186" top="345" right="220" bottom="384" /> |
| 154 | 131 | </bezel> |
| 155 | | <bezel name="digit50" element="digit"> |
| 132 | <bezel name="digit55" element="digit"> |
| 156 | 133 | <bounds left="230" top="345" right="264" bottom="384" /> |
| 157 | 134 | </bezel> |
| 158 | 135 | <bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel> |
| r17866 | r17867 | |
| 161 | 138 | <bezel element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel> |
| 162 | 139 | <bezel element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel> |
| 163 | 140 | <bezel element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel> |
| 164 | | <bezel element="P7"><bounds left="100" right="180" top="270" bottom="282" /></bezel> |
| 165 | 141 | </view> |
| 166 | 142 | </mamelayout> |
trunk/src/mame/drivers/g627.c
| r17866 | r17867 | |
| 15 | 15 | |
| 16 | 16 | Schematic and PinMAME used as references |
| 17 | 17 | |
| 18 | Machine Operation: |
| 19 | 1. Press num-enter then END then .(period key) (the displays will flash 400000) |
| 20 | 2. Press num-enter |
| 21 | 3. Insert a coin, credit will be registered |
| 22 | 4. Hold X and start game. When 00 is flashing, release X |
| 23 | 5. Press any of QWERYUIOASDFGHJKLZ-='; to simulate scoring shots (T will tilt) |
| 24 | 6. Press and hold X to simulate losing the ball |
| 25 | 7. When score starts flashing, release X and go to step 5 to play next ball |
| 26 | |
| 27 | Notes: Do not play more than one player because the machine will try to |
| 28 | rotate the table, and the motor circuits are not emulated due to lack of info. |
| 29 | This means that the score labels of East, West and South are not verified. |
| 30 | |
| 31 | The manual explains the tests available, and also how to set number of balls, |
| 32 | high score, etc., with the diagnostic keyboard. |
| 33 | |
| 18 | 34 | ToDo: |
| 19 | 35 | - Battery backup |
| 20 | 36 | - Outputs |
| 21 | | - Displays / Layout to fix |
| 37 | - Simulate motor circuitry and sensor feedback |
| 38 | - Verify labels of East, West and South on the display panel |
| 22 | 39 | - Possibility of a rom missing (most likely it is optional) |
| 23 | 40 | |
| 24 | 41 | *******************************************************************************/ |
| r17866 | r17867 | |
| 43 | 60 | DECLARE_READ8_MEMBER(portb_r); |
| 44 | 61 | DECLARE_WRITE8_MEMBER(portc_w); |
| 45 | 62 | DECLARE_WRITE8_MEMBER(disp_w); |
| 63 | DECLARE_WRITE8_MEMBER(lamp_w); |
| 46 | 64 | |
| 47 | 65 | protected: |
| 48 | 66 | |
| r17866 | r17867 | |
| 66 | 84 | static ADDRESS_MAP_START( g627_io, AS_IO, 8, g627_state ) |
| 67 | 85 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 68 | 86 | AM_RANGE(0x00, 0x02) AM_WRITE(disp_w) |
| 69 | | //AM_RANGE(0x03, 0x07) AM_WRITE(port_0x_w) |
| 87 | AM_RANGE(0x03, 0x07) AM_WRITE(lamp_w) |
| 70 | 88 | AM_RANGE(0x10, 0x17) AM_DEVWRITE_LEGACY("astrocade", astrocade_sound_w) |
| 71 | 89 | AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("i8156", i8155_device, io_r, io_w) |
| 72 | 90 | ADDRESS_MAP_END |
| 73 | 91 | |
| 74 | 92 | static INPUT_PORTS_START( g627 ) |
| 75 | 93 | PORT_START("X0") |
| 94 | PORT_BIT(0x03, IP_ACTIVE_LOW, IPT_UNUSED) // force 3 here so game can start |
| 76 | 95 | //bits 0,1 : optical encoder for precise table alignment. Correct position = 3. |
| 77 | 96 | //bit2-7 : position of table as it turns, using Gray code. |
| 97 | // code to convert a number to a Gray Code: { return (input >> 1)^input; } |
| 78 | 98 | PORT_START("X1") |
| 79 | 99 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Centre TB") PORT_CODE(KEYCODE_Q) |
| 80 | 100 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Bank Shot Outlane") PORT_CODE(KEYCODE_W) |
| r17866 | r17867 | |
| 92 | 112 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("North Slam") |
| 93 | 113 | PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("North Test") PORT_CODE(KEYCODE_9) |
| 94 | 114 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("North Coin") |
| 95 | | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("North Tilt") PORT_CODE(KEYCODE_T) |
| 115 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_TILT) PORT_NAME("North Tilt") |
| 96 | 116 | PORT_START("X3") |
| 97 | 117 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Top Slingshot") PORT_CODE(KEYCODE_O) |
| 98 | 118 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Bank Shot Advance") PORT_CODE(KEYCODE_A) |
| r17866 | r17867 | |
| 181 | 201 | return 0; |
| 182 | 202 | } |
| 183 | 203 | |
| 184 | | // write the 6 digits of 1 display panel |
| 204 | // write 6 digits |
| 185 | 205 | WRITE8_MEMBER( g627_state::portc_w ) |
| 186 | 206 | { |
| 187 | 207 | m_portc = data; |
| 188 | | if (data < 7) |
| 189 | | for (int i = 0; i < 6; i++) |
| 190 | | output_set_digit_value(data * 10 + i, m_seg[i]); |
| 208 | if (data < 6) |
| 209 | { |
| 210 | output_set_digit_value(data, m_seg[0]); |
| 211 | output_set_digit_value(10 + data, m_seg[1]); |
| 212 | output_set_digit_value(20 + data, m_seg[2]); |
| 213 | output_set_digit_value(30 + data, m_seg[3]); |
| 214 | output_set_digit_value(50 + data, m_seg[5]); |
| 215 | } |
| 191 | 216 | } |
| 192 | 217 | |
| 193 | 218 | // save segments until we can write the digits |
| r17866 | r17867 | |
| 199 | 224 | m_seg[++offset] = patterns[data&15]; |
| 200 | 225 | } |
| 201 | 226 | |
| 227 | // lamps and solenoids |
| 228 | WRITE8_MEMBER( g627_state::lamp_w ) |
| 229 | { |
| 230 | } |
| 231 | |
| 202 | 232 | static I8156_INTERFACE(i8156_intf) |
| 203 | 233 | { |
| 204 | 234 | DEVCB_DRIVER_MEMBER(g627_state,porta_r), // Port A in |
| r17866 | r17867 | |
| 235 | 265 | ROM_END |
| 236 | 266 | |
| 237 | 267 | |
| 238 | | GAME(1978, rotation, 0, g627, g627, driver_device, 0, ROT0, "Midway", "Rotation VIII", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD) |
| 268 | GAME(1978, rotation, 0, g627, g627, driver_device, 0, ROT0, "Midway", "Rotation VIII", GAME_MECHANICAL ) |