mirror of
https://github.com/holub/mame
synced 2025-05-24 14:56:21 +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'),
|
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.
|
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.
|
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.
|
to access the PROGRAMAZZIONE (program mode), where you can change the game parameters.
|
||||||
Press START (key '1') to exit both modes.
|
Press START (key '1') to exit both modes.
|
||||||
|
|
||||||
@ -267,8 +267,8 @@
|
|||||||
$4001 - $4001 Input Port 1 ;R
|
$4001 - $4001 Input Port 1 ;R
|
||||||
$4002 - $4002 Input Port 2 ;R
|
$4002 - $4002 Input Port 2 ;R
|
||||||
$4003 - $4003 Input Port 3 ;R , DIP switches.
|
$4003 - $4003 Input Port 3 ;R , DIP switches.
|
||||||
$5000 - $5000 Output Port A ;W , lamps.
|
$5000 - $5000 Output Port 0 ;W , lamps & counters.
|
||||||
$5001 - $5001 Output Port B ;W , lamps.
|
$5001 - $5001 Output Port 1 ;W , lamps.
|
||||||
$6000 - $6FFF Video RAM
|
$6000 - $6FFF Video RAM
|
||||||
$7000 - $7FFF Color RAM
|
$7000 - $7FFF Color RAM
|
||||||
$8000 - $FFFF ROM Space
|
$8000 - $FFFF ROM Space
|
||||||
@ -283,8 +283,8 @@
|
|||||||
$3002 - $3002 Input Port 2 ;R
|
$3002 - $3002 Input Port 2 ;R
|
||||||
$3003 - $3003 Input Port 3 ;R , DIP switches.
|
$3003 - $3003 Input Port 3 ;R , DIP switches.
|
||||||
$3004 - $3004 Input Port 4 ;R , bit 7 in parallel with DIP switch 1.
|
$3004 - $3004 Input Port 4 ;R , bit 7 in parallel with DIP switch 1.
|
||||||
$5000 - $5000 Output Port A ;W , lamps.
|
$5000 - $5000 Output Port 0 ;W , lamps & counters.
|
||||||
$5001 - $5001 Output Port B ;W , lamps.
|
$5001 - $5001 Output Port 1 ;W , lamps.
|
||||||
$6000 - $6FFF Video RAM
|
$6000 - $6FFF Video RAM
|
||||||
$7000 - $7FFF Color RAM
|
$7000 - $7FFF Color RAM
|
||||||
$8000 - $FFFF ROM Space
|
$8000 - $FFFF ROM Space
|
||||||
@ -296,6 +296,13 @@
|
|||||||
*** Driver Updates ***
|
*** 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]
|
[2008/06/09]
|
||||||
- Fixed the tilemap size.
|
- Fixed the tilemap size.
|
||||||
- Fixed the screen size.
|
- Fixed the screen size.
|
||||||
@ -346,7 +353,7 @@
|
|||||||
|
|
||||||
*** TO DO ***
|
*** TO DO ***
|
||||||
|
|
||||||
- Fix lamps.
|
- Nothing. :)
|
||||||
|
|
||||||
|
|
||||||
***********************************************************************************/
|
***********************************************************************************/
|
||||||
@ -368,6 +375,8 @@ VIDEO_START( snookr10 );
|
|||||||
VIDEO_START( apple10 );
|
VIDEO_START( apple10 );
|
||||||
VIDEO_UPDATE( snookr10 );
|
VIDEO_UPDATE( snookr10 );
|
||||||
|
|
||||||
|
int outportl, outporth;
|
||||||
|
int bit0, bit1, bit2, bit3, bit4, bit5;
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* Read/Write Handlers *
|
* Read/Write Handlers *
|
||||||
@ -375,9 +384,11 @@ VIDEO_UPDATE( snookr10 );
|
|||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
static READ8_HANDLER( dsw_port_1_r )
|
static READ8_HANDLER( dsw_port_1_r )
|
||||||
/*-----------------------------------
|
{
|
||||||
|
/*
|
||||||
|
--------------------------------
|
||||||
PORT 0x3004 ;INPUT PORT 4
|
PORT 0x3004 ;INPUT PORT 4
|
||||||
-------------------------------------
|
--------------------------------
|
||||||
BIT 0 =
|
BIT 0 =
|
||||||
BIT 1 =
|
BIT 1 =
|
||||||
BIT 2 =
|
BIT 2 =
|
||||||
@ -386,82 +397,105 @@ static READ8_HANDLER( dsw_port_1_r )
|
|||||||
BIT 5 =
|
BIT 5 =
|
||||||
BIT 6 =
|
BIT 6 =
|
||||||
BIT 7 = Complement of DS1, bit 7
|
BIT 7 = Complement of DS1, bit 7
|
||||||
------------------------------------*/
|
---------------------------------
|
||||||
{
|
*/
|
||||||
return input_port_read(machine, "SW1");
|
return input_port_read(machine, "SW1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* Read/Write Handlers *
|
* Read/Write Handlers *
|
||||||
* - Output Ports - *
|
* - 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
|
The first 4 bits are from Port A, and the
|
||||||
remaining one is from Port B.
|
remaining 2 are from Port B.
|
||||||
|
|
||||||
LAMPS components:
|
LAMPS components:
|
||||||
|
|
||||||
START = bit1 & bit3
|
START = bit5
|
||||||
CANCEL = bit0 & bit3
|
CANCEL = bit2
|
||||||
STOP1 = bit1 only
|
STOP1 = bit0
|
||||||
STOP2 = bit1 & bit2
|
STOP2 = bit1
|
||||||
STOP3 = bit1 only
|
STOP3 = bit0
|
||||||
STOP4 = bit1 & bit4
|
STOP4 = bit3
|
||||||
STOP5 = bit0 & bit4
|
STOP5 = bit4
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static WRITE8_HANDLER( output_port_0_w )
|
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;
|
bit0 = (data >> 1) & 1;
|
||||||
bit1 = (data >> 3) & 1;
|
bit1 = (data >> 3) & 1;
|
||||||
bit2 = (data >> 5) & 1;
|
bit2 = (data >> 5) & 1;
|
||||||
bit3 = (data >> 7) & 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(0, bit5); /* Lamp 0 - START */
|
||||||
output_set_lamp_value(2, (bit0 & bit3)); /* Lamp 2 - CANCEL */
|
output_set_lamp_value(1, bit2); /* Lamp 1 - CANCEL */
|
||||||
output_set_lamp_value(3, (bit1 | bit3)); /* Lamp 3 - STOP1 */
|
output_set_lamp_value(2, bit0); /* Lamp 2 - STOP1 */
|
||||||
output_set_lamp_value(4, (bit1 & bit2)); /* Lamp 4 - STOP2 */
|
output_set_lamp_value(3, bit1); /* Lamp 3 - STOP2 */
|
||||||
output_set_lamp_value(5, (bit1 | bit3)); /* Lamp 5 - STOP3 */
|
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 )
|
static WRITE8_HANDLER( output_port_1_w )
|
||||||
/*-----------------------------
|
{
|
||||||
|
/*
|
||||||
|
----------------------------
|
||||||
PORT 0x5001 ;OUTPUT PORT B
|
PORT 0x5001 ;OUTPUT PORT B
|
||||||
-------------------------------
|
----------------------------
|
||||||
BIT 0 = Lamps matrix, bit4
|
BIT 0 = Lamps matrix, bit4
|
||||||
BIT 1 =
|
BIT 1 = Lamps matrix, bit5
|
||||||
BIT 2 =
|
BIT 2 =
|
||||||
BIT 3 =
|
BIT 3 =
|
||||||
BIT 4 =
|
BIT 4 =
|
||||||
BIT 5 =
|
BIT 5 =
|
||||||
BIT 6 =
|
BIT 6 =
|
||||||
BIT 7 =
|
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! */
|
bit0 = (outportl >> 1) & 1;
|
||||||
bit1 = (input_port_read_safe(machine, "IN4", 0) >> 3) & 1; /* "IN4" has yet to be implemented! */
|
bit1 = (outportl >> 3) & 1;
|
||||||
bit4 = (data & 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(0, bit5); /* Lamp 0 - START */
|
||||||
output_set_lamp_value(7, (bit0 & bit4)); /* Lamp 7 - STOP5 */
|
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"?>
|
<?xml version="1.0"?>
|
||||||
<mamelayout version="2">
|
<mamelayout version="2">
|
||||||
<element name="L0" defstate="1">
|
<element name="L0">
|
||||||
<rect>
|
<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" />
|
<color red="1.0" green="1.0" blue="1.0" />
|
||||||
</rect>
|
</rect>
|
||||||
<text string="START" state="1">
|
<text string="START">
|
||||||
<color red="0.0" green="0.0" blue="0.0" />
|
<color red="0.0" green="0.0" blue="0.0" />
|
||||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||||
</text>
|
</text>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
<element name="L1" defstate="1">
|
<element name="L1">
|
||||||
<rect>
|
<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" />
|
<color red="1.0" green="1.0" blue="1.0" />
|
||||||
</rect>
|
</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" />
|
<color red="0.0" green="0.0" blue="0.0" />
|
||||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||||
</text>
|
</text>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
<element name="L2" defstate="1">
|
<element name="L3">
|
||||||
<rect>
|
<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" />
|
<color red="1.0" green="0.0" blue="0.0" />
|
||||||
</rect>
|
</rect>
|
||||||
<text string="STOP1" state="1">
|
<text string="STOP2">
|
||||||
<color red="0.0" green="0.0" blue="0.0" />
|
<color red="0.0" green="0.0" blue="0.0" />
|
||||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||||
</text>
|
</text>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
<element name="L3" defstate="1">
|
<element name="L4">
|
||||||
<rect>
|
<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" />
|
<color red="1.0" green="0.0" blue="0.0" />
|
||||||
</rect>
|
</rect>
|
||||||
<text string="STOP2" state="1">
|
<text string="STOP3">
|
||||||
<color red="0.0" green="0.0" blue="0.0" />
|
<color red="0.0" green="0.0" blue="0.0" />
|
||||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||||
</text>
|
</text>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
<element name="L4" defstate="1">
|
<element name="L5">
|
||||||
<rect>
|
<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" />
|
<color red="1.0" green="0.0" blue="0.0" />
|
||||||
</rect>
|
</rect>
|
||||||
<text string="STOP3" state="1">
|
<text string="STOP4">
|
||||||
<color red="0.0" green="0.0" blue="0.0" />
|
<color red="0.0" green="0.0" blue="0.0" />
|
||||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||||
</text>
|
</text>
|
||||||
</element>
|
</element>
|
||||||
|
|
||||||
<element name="L5" defstate="1">
|
<element name="L6">
|
||||||
<rect>
|
<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" />
|
<color red="1.0" green="0.0" blue="0.0" />
|
||||||
</rect>
|
</rect>
|
||||||
<text string="STOP4" 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>
|
|
||||||
</element>
|
|
||||||
|
|
||||||
<element name="L6" defstate="1">
|
|
||||||
<rect>
|
|
||||||
<color red="1.0" green="0.0" blue="0.0" />
|
|
||||||
</rect>
|
|
||||||
<text string="STOP5" state="1">
|
|
||||||
<color red="0.0" green="0.0" blue="0.0" />
|
<color red="0.0" green="0.0" blue="0.0" />
|
||||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||||
</text>
|
</text>
|
||||||
|
Loading…
Reference in New Issue
Block a user