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:
Roberto Fresca 2008-10-09 09:35:46 +00:00
parent 86c1be8c70
commit dfd75d29b8
2 changed files with 137 additions and 78 deletions

View File

@ -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 */
}

View File

@ -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>