mirror of
https://github.com/holub/mame
synced 2025-06-07 05:13:46 +03:00
Rotation: fixed displays, fixed sensors so that the game is now playable. [Robbbert]
This commit is contained in:
parent
0af1f7acdc
commit
057c457352
@ -15,10 +15,27 @@
|
||||
|
||||
Schematic and PinMAME used as references
|
||||
|
||||
Machine Operation:
|
||||
1. Press num-enter then END then .(period key) (the displays will flash 400000)
|
||||
2. Press num-enter
|
||||
3. Insert a coin, credit will be registered
|
||||
4. Hold X and start game. When 00 is flashing, release X
|
||||
5. Press any of QWERYUIOASDFGHJKLZ-='; to simulate scoring shots (T will tilt)
|
||||
6. Press and hold X to simulate losing the ball
|
||||
7. When score starts flashing, release X and go to step 5 to play next ball
|
||||
|
||||
Notes: Do not play more than one player because the machine will try to
|
||||
rotate the table, and the motor circuits are not emulated due to lack of info.
|
||||
This means that the score labels of East, West and South are not verified.
|
||||
|
||||
The manual explains the tests available, and also how to set number of balls,
|
||||
high score, etc., with the diagnostic keyboard.
|
||||
|
||||
ToDo:
|
||||
- Battery backup
|
||||
- Outputs
|
||||
- Displays / Layout to fix
|
||||
- Simulate motor circuitry and sensor feedback
|
||||
- Verify labels of East, West and South on the display panel
|
||||
- Possibility of a rom missing (most likely it is optional)
|
||||
|
||||
*******************************************************************************/
|
||||
@ -43,6 +60,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(portb_r);
|
||||
DECLARE_WRITE8_MEMBER(portc_w);
|
||||
DECLARE_WRITE8_MEMBER(disp_w);
|
||||
DECLARE_WRITE8_MEMBER(lamp_w);
|
||||
|
||||
protected:
|
||||
|
||||
@ -66,15 +84,17 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( g627_io, AS_IO, 8, g627_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x02) AM_WRITE(disp_w)
|
||||
//AM_RANGE(0x03, 0x07) AM_WRITE(port_0x_w)
|
||||
AM_RANGE(0x03, 0x07) AM_WRITE(lamp_w)
|
||||
AM_RANGE(0x10, 0x17) AM_DEVWRITE_LEGACY("astrocade", astrocade_sound_w)
|
||||
AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("i8156", i8155_device, io_r, io_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( g627 )
|
||||
PORT_START("X0")
|
||||
PORT_BIT(0x03, IP_ACTIVE_LOW, IPT_UNUSED) // force 3 here so game can start
|
||||
//bits 0,1 : optical encoder for precise table alignment. Correct position = 3.
|
||||
//bit2-7 : position of table as it turns, using Gray code.
|
||||
// code to convert a number to a Gray Code: { return (input >> 1)^input; }
|
||||
PORT_START("X1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Centre TB") PORT_CODE(KEYCODE_Q)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Bank Shot Outlane") PORT_CODE(KEYCODE_W)
|
||||
@ -92,7 +112,7 @@ static INPUT_PORTS_START( g627 )
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("North Slam")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("North Test") PORT_CODE(KEYCODE_9)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("North Coin")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("North Tilt") PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_TILT) PORT_NAME("North Tilt")
|
||||
PORT_START("X3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Top Slingshot") PORT_CODE(KEYCODE_O)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Bank Shot Advance") PORT_CODE(KEYCODE_A)
|
||||
@ -181,13 +201,18 @@ READ8_MEMBER( g627_state::portb_r )
|
||||
return 0;
|
||||
}
|
||||
|
||||
// write the 6 digits of 1 display panel
|
||||
// write 6 digits
|
||||
WRITE8_MEMBER( g627_state::portc_w )
|
||||
{
|
||||
m_portc = data;
|
||||
if (data < 7)
|
||||
for (int i = 0; i < 6; i++)
|
||||
output_set_digit_value(data * 10 + i, m_seg[i]);
|
||||
if (data < 6)
|
||||
{
|
||||
output_set_digit_value(data, m_seg[0]);
|
||||
output_set_digit_value(10 + data, m_seg[1]);
|
||||
output_set_digit_value(20 + data, m_seg[2]);
|
||||
output_set_digit_value(30 + data, m_seg[3]);
|
||||
output_set_digit_value(50 + data, m_seg[5]);
|
||||
}
|
||||
}
|
||||
|
||||
// save segments until we can write the digits
|
||||
@ -199,6 +224,11 @@ WRITE8_MEMBER( g627_state::disp_w )
|
||||
m_seg[++offset] = patterns[data&15];
|
||||
}
|
||||
|
||||
// lamps and solenoids
|
||||
WRITE8_MEMBER( g627_state::lamp_w )
|
||||
{
|
||||
}
|
||||
|
||||
static I8156_INTERFACE(i8156_intf)
|
||||
{
|
||||
DEVCB_DRIVER_MEMBER(g627_state,porta_r), // Port A in
|
||||
@ -235,4 +265,4 @@ ROM_START(rotation)
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME(1978, rotation, 0, g627, g627, driver_device, 0, ROT0, "Midway", "Rotation VIII", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD)
|
||||
GAME(1978, rotation, 0, g627, g627, driver_device, 0, ROT0, "Midway", "Rotation VIII", GAME_MECHANICAL )
|
||||
|
@ -18,11 +18,10 @@
|
||||
</element>
|
||||
<element name="P0"><text string="Balls"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P7"><text string="High Score"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P3"><text string="East"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P4"><text string="North"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P5"><text string="West"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
<element name="P6"><text string="South"><color red="1.0" green="1.0" blue="1.0" /></text></element>
|
||||
|
||||
<view name="Default Layout">
|
||||
|
||||
@ -35,124 +34,102 @@
|
||||
|
||||
<!-- Player 1 Score -->
|
||||
|
||||
<bezel name="digit5" element="digit">
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds left="10" top="45" right="44" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit4" element="digit">
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds left="54" top="45" right="88" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit3" element="digit">
|
||||
<bezel name="digit2" element="digit">
|
||||
<bounds left="98" top="45" right="132" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit2" element="digit">
|
||||
<bezel name="digit3" element="digit">
|
||||
<bounds left="142" top="45" right="176" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bezel name="digit4" element="digit">
|
||||
<bounds left="186" top="45" right="220" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit0" element="digit">
|
||||
<bezel name="digit5" element="digit">
|
||||
<bounds left="230" top="45" right="264" bottom="84" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 2 Score -->
|
||||
<bezel name="digit15" element="digit">
|
||||
<bezel name="digit10" element="digit">
|
||||
<bounds left="10" top="105" right="44" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit14" element="digit">
|
||||
<bezel name="digit11" element="digit">
|
||||
<bounds left="54" top="105" right="88" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit13" element="digit">
|
||||
<bezel name="digit12" element="digit">
|
||||
<bounds left="98" top="105" right="132" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit12" element="digit">
|
||||
<bezel name="digit13" element="digit">
|
||||
<bounds left="142" top="105" right="176" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit11" element="digit">
|
||||
<bezel name="digit14" element="digit">
|
||||
<bounds left="186" top="105" right="220" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit10" element="digit">
|
||||
<bezel name="digit15" element="digit">
|
||||
<bounds left="230" top="105" right="264" bottom="144" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 3 Score -->
|
||||
<bezel name="digit25" element="digit">
|
||||
<bezel name="digit20" element="digit">
|
||||
<bounds left="10" top="165" right="44" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit24" element="digit">
|
||||
<bezel name="digit21" element="digit">
|
||||
<bounds left="54" top="165" right="88" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit23" element="digit">
|
||||
<bezel name="digit22" element="digit">
|
||||
<bounds left="98" top="165" right="132" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit22" element="digit">
|
||||
<bezel name="digit23" element="digit">
|
||||
<bounds left="142" top="165" right="176" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit21" element="digit">
|
||||
<bezel name="digit24" element="digit">
|
||||
<bounds left="186" top="165" right="220" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit20" element="digit">
|
||||
<bezel name="digit25" element="digit">
|
||||
<bounds left="230" top="165" right="264" bottom="204" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 4 Score -->
|
||||
<bezel name="digit35" element="digit">
|
||||
<bezel name="digit30" element="digit">
|
||||
<bounds left="10" top="225" right="44" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit34" element="digit">
|
||||
<bezel name="digit31" element="digit">
|
||||
<bounds left="54" top="225" right="88" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit33" element="digit">
|
||||
<bezel name="digit32" element="digit">
|
||||
<bounds left="98" top="225" right="132" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit32" element="digit">
|
||||
<bezel name="digit33" element="digit">
|
||||
<bounds left="142" top="225" right="176" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit31" element="digit">
|
||||
<bezel name="digit34" element="digit">
|
||||
<bounds left="186" top="225" right="220" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit30" element="digit">
|
||||
<bezel name="digit35" element="digit">
|
||||
<bounds left="230" top="225" right="264" bottom="264" />
|
||||
</bezel>
|
||||
|
||||
<!-- High Score -->
|
||||
<bezel name="digit45" element="digit">
|
||||
<bounds left="10" top="285" right="44" bottom="324" />
|
||||
</bezel>
|
||||
<bezel name="digit44" element="digit">
|
||||
<bounds left="54" top="285" right="88" bottom="324" />
|
||||
</bezel>
|
||||
<bezel name="digit43" element="digit">
|
||||
<bounds left="98" top="285" right="132" bottom="324" />
|
||||
</bezel>
|
||||
<bezel name="digit42" element="digit">
|
||||
<bounds left="142" top="285" right="176" bottom="324" />
|
||||
</bezel>
|
||||
<bezel name="digit41" element="digit">
|
||||
<bounds left="186" top="285" right="220" bottom="324" />
|
||||
</bezel>
|
||||
<bezel name="digit40" element="digit">
|
||||
<bounds left="230" top="285" right="264" bottom="324" />
|
||||
</bezel>
|
||||
|
||||
<!-- Credits -->
|
||||
<bezel name="digit55" element="digit">
|
||||
<!-- Credits and Balls -->
|
||||
<bezel name="digit50" element="digit">
|
||||
<bounds left="10" top="345" right="44" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit54" element="digit">
|
||||
<bezel name="digit51" element="digit">
|
||||
<bounds left="54" top="345" right="88" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit53" element="digit">
|
||||
<bezel name="digit52" element="digit">
|
||||
<bounds left="98" top="345" right="132" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit52" element="digit">
|
||||
<bezel name="digit53" element="digit">
|
||||
<bounds left="142" top="345" right="176" bottom="384" />
|
||||
</bezel>
|
||||
|
||||
<!-- Match / Balls Left -->
|
||||
<bezel name="digit51" element="digit">
|
||||
<bezel name="digit54" element="digit">
|
||||
<bounds left="186" top="345" right="220" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit50" element="digit">
|
||||
<bezel name="digit55" element="digit">
|
||||
<bounds left="230" top="345" right="264" bottom="384" />
|
||||
</bezel>
|
||||
<bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
|
||||
@ -161,6 +138,5 @@
|
||||
<bezel element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
|
||||
<bezel element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
|
||||
<bezel element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel>
|
||||
<bezel element="P7"><bounds left="100" right="180" top="270" bottom="282" /></bezel>
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
Loading…
Reference in New Issue
Block a user