mirror of
https://github.com/holub/mame
synced 2025-05-23 14:19:01 +03:00
Improvements to Sandii' games (snookr10, apple10 & tenballs):
- Reworked the button-lamps matrix system. - Documented both output ports. - Connected coin in, key in and payout counters. - Improved the lamps layout to be more realistic. - Updated technical notes.
This commit is contained in:
parent
86c1be8c70
commit
dfd75d29b8
@ -77,10 +77,10 @@
|
||||
To initialize NVRAM (for all games), keep pressed ESTATISTICA (key '9') + MANAGEMENT (key '0'),
|
||||
then press RESET (key F3), and finally release both (ESTATISTICA + MANAGEMENT) keys.
|
||||
|
||||
Enter ESTATISTICA (key '9'), to enter the stats mode. Press CANCELLA/PLAY (key 'N')
|
||||
Enter ESTATISTICA (key '9'), to enter the stats mode. Press PLAY/CANCELLA (key 'N')
|
||||
for 5 seconds to reset all values to zero. Press START (key '1') to exit the mode.
|
||||
|
||||
Enter MANAGEMENT (key '0'), to enter the management mode. Press CANCELLA/PLAY (key 'N')
|
||||
Enter MANAGEMENT (key '0'), to enter the management mode. Press PLAY/CANCELLA (key 'N')
|
||||
to access the PROGRAMAZZIONE (program mode), where you can change the game parameters.
|
||||
Press START (key '1') to exit both modes.
|
||||
|
||||
@ -267,8 +267,8 @@
|
||||
$4001 - $4001 Input Port 1 ;R
|
||||
$4002 - $4002 Input Port 2 ;R
|
||||
$4003 - $4003 Input Port 3 ;R , DIP switches.
|
||||
$5000 - $5000 Output Port A ;W , lamps.
|
||||
$5001 - $5001 Output Port B ;W , lamps.
|
||||
$5000 - $5000 Output Port 0 ;W , lamps & counters.
|
||||
$5001 - $5001 Output Port 1 ;W , lamps.
|
||||
$6000 - $6FFF Video RAM
|
||||
$7000 - $7FFF Color RAM
|
||||
$8000 - $FFFF ROM Space
|
||||
@ -283,8 +283,8 @@
|
||||
$3002 - $3002 Input Port 2 ;R
|
||||
$3003 - $3003 Input Port 3 ;R , DIP switches.
|
||||
$3004 - $3004 Input Port 4 ;R , bit 7 in parallel with DIP switch 1.
|
||||
$5000 - $5000 Output Port A ;W , lamps.
|
||||
$5001 - $5001 Output Port B ;W , lamps.
|
||||
$5000 - $5000 Output Port 0 ;W , lamps & counters.
|
||||
$5001 - $5001 Output Port 1 ;W , lamps.
|
||||
$6000 - $6FFF Video RAM
|
||||
$7000 - $7FFF Color RAM
|
||||
$8000 - $FFFF ROM Space
|
||||
@ -296,6 +296,13 @@
|
||||
*** Driver Updates ***
|
||||
|
||||
|
||||
[2008/10/09]
|
||||
- Reworked the button-lamps matrix system.
|
||||
- Documented both output ports.
|
||||
- Connected coin in, key in and payout counters.
|
||||
- Improved the lamps layout to be more realistic.
|
||||
- Updated technical notes.
|
||||
|
||||
[2008/06/09]
|
||||
- Fixed the tilemap size.
|
||||
- Fixed the screen size.
|
||||
@ -346,7 +353,7 @@
|
||||
|
||||
*** TO DO ***
|
||||
|
||||
- Fix lamps.
|
||||
- Nothing. :)
|
||||
|
||||
|
||||
***********************************************************************************/
|
||||
@ -368,6 +375,8 @@ VIDEO_START( snookr10 );
|
||||
VIDEO_START( apple10 );
|
||||
VIDEO_UPDATE( snookr10 );
|
||||
|
||||
int outportl, outporth;
|
||||
int bit0, bit1, bit2, bit3, bit4, bit5;
|
||||
|
||||
/**********************
|
||||
* Read/Write Handlers *
|
||||
@ -375,9 +384,11 @@ VIDEO_UPDATE( snookr10 );
|
||||
**********************/
|
||||
|
||||
static READ8_HANDLER( dsw_port_1_r )
|
||||
/*-----------------------------------
|
||||
{
|
||||
/*
|
||||
--------------------------------
|
||||
PORT 0x3004 ;INPUT PORT 4
|
||||
-------------------------------------
|
||||
--------------------------------
|
||||
BIT 0 =
|
||||
BIT 1 =
|
||||
BIT 2 =
|
||||
@ -386,82 +397,105 @@ static READ8_HANDLER( dsw_port_1_r )
|
||||
BIT 5 =
|
||||
BIT 6 =
|
||||
BIT 7 = Complement of DS1, bit 7
|
||||
------------------------------------*/
|
||||
{
|
||||
---------------------------------
|
||||
*/
|
||||
return input_port_read(machine, "SW1");
|
||||
}
|
||||
|
||||
|
||||
/**********************
|
||||
* Read/Write Handlers *
|
||||
* - Output Ports - *
|
||||
**********************/
|
||||
|
||||
/* Lamps are multiplexed using a 5 bit matrix.
|
||||
/* Lamps are multiplexed using a 6 bit matrix.
|
||||
The first 4 bits are from Port A, and the
|
||||
remaining one is from Port B.
|
||||
remaining 2 are from Port B.
|
||||
|
||||
LAMPS components:
|
||||
|
||||
START = bit1 & bit3
|
||||
CANCEL = bit0 & bit3
|
||||
STOP1 = bit1 only
|
||||
STOP2 = bit1 & bit2
|
||||
STOP3 = bit1 only
|
||||
STOP4 = bit1 & bit4
|
||||
STOP5 = bit0 & bit4
|
||||
START = bit5
|
||||
CANCEL = bit2
|
||||
STOP1 = bit0
|
||||
STOP2 = bit1
|
||||
STOP3 = bit0
|
||||
STOP4 = bit3
|
||||
STOP5 = bit4
|
||||
*/
|
||||
|
||||
static WRITE8_HANDLER( output_port_0_w )
|
||||
/*-----------------------------
|
||||
PORT 0x5000 ;OUTPUT PORT A
|
||||
-------------------------------
|
||||
BIT 0 =
|
||||
BIT 1 = Lamps matrix, bit0
|
||||
BIT 2 =
|
||||
BIT 3 = Lamps matrix, bit1
|
||||
BIT 4 =
|
||||
BIT 5 = Lamps matrix, bit2
|
||||
BIT 6 =
|
||||
BIT 7 = Lamps matrix, bit3
|
||||
------------------------------*/
|
||||
{
|
||||
int bit0, bit1, bit2, bit3, bit4;
|
||||
/*
|
||||
----------------------------
|
||||
PORT 0x5000 ;OUTPUT PORT A
|
||||
----------------------------
|
||||
BIT 0 = Coin counter.
|
||||
BIT 1 = Lamps matrix, bit0.
|
||||
BIT 2 = Payout x10.
|
||||
BIT 3 = Lamps matrix, bit1.
|
||||
BIT 4 = Key in.
|
||||
BIT 5 = Lamps matrix, bit2.
|
||||
BIT 6 =
|
||||
BIT 7 = Lamps matrix, bit3.
|
||||
----------------------------
|
||||
*/
|
||||
outportl = data;
|
||||
|
||||
bit0 = (data >> 1) & 1;
|
||||
bit1 = (data >> 3) & 1;
|
||||
bit2 = (data >> 5) & 1;
|
||||
bit3 = (data >> 7) & 1;
|
||||
bit4 = (input_port_read_safe(machine, "IN5", 0) & 1); /* "IN5" has yet to be implemented! */
|
||||
bit4 = outporth & 1;
|
||||
bit5 = (outporth >> 1) & 1;
|
||||
|
||||
output_set_lamp_value(1, (bit1 & bit3)); /* Lamp 1 - START */
|
||||
output_set_lamp_value(2, (bit0 & bit3)); /* Lamp 2 - CANCEL */
|
||||
output_set_lamp_value(3, (bit1 | bit3)); /* Lamp 3 - STOP1 */
|
||||
output_set_lamp_value(4, (bit1 & bit2)); /* Lamp 4 - STOP2 */
|
||||
output_set_lamp_value(5, (bit1 | bit3)); /* Lamp 5 - STOP3 */
|
||||
output_set_lamp_value(0, bit5); /* Lamp 0 - START */
|
||||
output_set_lamp_value(1, bit2); /* Lamp 1 - CANCEL */
|
||||
output_set_lamp_value(2, bit0); /* Lamp 2 - STOP1 */
|
||||
output_set_lamp_value(3, bit1); /* Lamp 3 - STOP2 */
|
||||
output_set_lamp_value(4, bit0); /* Lamp 4 - STOP3 */
|
||||
output_set_lamp_value(5, bit3); /* Lamp 5 - STOP4 */
|
||||
output_set_lamp_value(6, bit4); /* Lamp 6 - STOP5 */
|
||||
|
||||
coin_counter_w(0, data & 0x01); /* Coin in */
|
||||
coin_counter_w(1, data & 0x10); /* Key in */
|
||||
coin_counter_w(2, data & 0x04); /* Payout x10 */
|
||||
|
||||
// logerror("high: %04x - low: %X \n", outporth, outportl);
|
||||
// popmessage("written : %02X", data);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( output_port_1_w )
|
||||
/*-----------------------------
|
||||
{
|
||||
/*
|
||||
----------------------------
|
||||
PORT 0x5001 ;OUTPUT PORT B
|
||||
-------------------------------
|
||||
----------------------------
|
||||
BIT 0 = Lamps matrix, bit4
|
||||
BIT 1 =
|
||||
BIT 1 = Lamps matrix, bit5
|
||||
BIT 2 =
|
||||
BIT 3 =
|
||||
BIT 4 =
|
||||
BIT 5 =
|
||||
BIT 6 =
|
||||
BIT 7 =
|
||||
------------------------------*/
|
||||
{
|
||||
int bit0, bit1, bit4;
|
||||
----------------------------
|
||||
*/
|
||||
outporth = data << 8;
|
||||
|
||||
bit0 = (input_port_read_safe(machine, "IN4", 0) >> 1) & 1; /* "IN4" has yet to be implemented! */
|
||||
bit1 = (input_port_read_safe(machine, "IN4", 0) >> 3) & 1; /* "IN4" has yet to be implemented! */
|
||||
bit4 = (data & 1);
|
||||
bit0 = (outportl >> 1) & 1;
|
||||
bit1 = (outportl >> 3) & 1;
|
||||
bit2 = (outportl >> 5) & 1;
|
||||
bit3 = (outportl >> 7) & 1;
|
||||
bit4 = data & 1;
|
||||
bit5 = (data >> 1) & 1;
|
||||
|
||||
output_set_lamp_value(6, (bit1 & bit4)); /* Lamp 6 - STOP4 */
|
||||
output_set_lamp_value(7, (bit0 & bit4)); /* Lamp 7 - STOP5 */
|
||||
output_set_lamp_value(0, bit5); /* Lamp 0 - START */
|
||||
output_set_lamp_value(1, bit2); /* Lamp 1 - CANCEL */
|
||||
output_set_lamp_value(2, bit0); /* Lamp 2 - STOP1 */
|
||||
output_set_lamp_value(3, bit1); /* Lamp 3 - STOP2 */
|
||||
output_set_lamp_value(4, bit0); /* Lamp 4 - STOP3 */
|
||||
output_set_lamp_value(5, bit3); /* Lamp 5 - STOP4 */
|
||||
output_set_lamp_value(6, bit4); /* Lamp 6 - STOP5 */
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,70 +1,95 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
<element name="L0" defstate="1">
|
||||
<rect>
|
||||
<element name="L0">
|
||||
<rect state="0">
|
||||
<color red="0.3" green="0.3" blue="0.3" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
</rect>
|
||||
<text string="START" state="1">
|
||||
<text string="START">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="L1" defstate="1">
|
||||
<rect>
|
||||
<element name="L1">
|
||||
<rect state="0">
|
||||
<color red="0.3" green="0.3" blue="0.3" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
</rect>
|
||||
<text string="CANCEL" state="1">
|
||||
<text string="PLAY">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.4" />
|
||||
</text>
|
||||
<text string="CANCELLA">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.5" width="1" height="0.4" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="L2">
|
||||
<rect state="0">
|
||||
<color red="0.4" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<text string="STOP1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="L2" defstate="1">
|
||||
<rect>
|
||||
<element name="L3">
|
||||
<rect state="0">
|
||||
<color red="0.4" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<text string="STOP1" state="1">
|
||||
<text string="STOP2">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="L3" defstate="1">
|
||||
<rect>
|
||||
<element name="L4">
|
||||
<rect state="0">
|
||||
<color red="0.4" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<text string="STOP2" state="1">
|
||||
<text string="STOP3">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="L4" defstate="1">
|
||||
<rect>
|
||||
<element name="L5">
|
||||
<rect state="0">
|
||||
<color red="0.4" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<text string="STOP3" state="1">
|
||||
<text string="STOP4">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="L5" defstate="1">
|
||||
<rect>
|
||||
<element name="L6">
|
||||
<rect state="0">
|
||||
<color red="0.4" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<text string="STOP4" state="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="L6" defstate="1">
|
||||
<rect>
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</rect>
|
||||
<text string="STOP5" state="1">
|
||||
<text string="STOP5">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
|
Loading…
Reference in New Issue
Block a user