Crystals Colours improvements: [Roberto Fresca]

- Decrypted the tile matrix / video RAM.
 - Wrote proper memory map and inputs from the scratch.
 - Bypassed the program data channels protection.
 - Decrypted the colors / color RAM.
 - Added button-lamps support.
 - Created a default NVRAM.
 - Promoted to working state.
 - Added technical and encryption notes...

Snooker 10 improvements: [Roberto Fresca]

 - Fixed NVRAM size.
 - Added default NVRAM.

Apple 10 improvements: [Roberto Fresca]

 - Fixed NVRAM size.
 - Added default NVRAM.

Ten Balls improvements: [Roberto Fresca]

 - Fixed NVRAM size.
 - Added default NVRAM.


New games added or promoted from NOT_WORKING status
---------------------------------------------------
Crystals Colours (Ver 1.01) [Roberto Fresca, Any]
This commit is contained in:
Roberto Fresca 2013-05-13 18:52:10 +00:00
parent b3bae5a204
commit 2541335959
3 changed files with 526 additions and 95 deletions

View File

@ -11,7 +11,7 @@
* Snooker 10 (Ver 1.11), Sandii', 1998. * Snooker 10 (Ver 1.11), Sandii', 1998.
* Apple 10 (Ver 1.21), Sandii', 1998. * Apple 10 (Ver 1.21), Sandii', 1998.
* Ten Balls (Ver 1.05), unknown, 1997. * Ten Balls (Ver 1.05), unknown, 1997.
* Crystals Colors (Ver 1.01), unknown, 199?. * Crystals Colours (Ver 1.01), JCD srl, 1998.
*********************************************************************************** ***********************************************************************************
@ -26,8 +26,9 @@
1x LM358N 1x LM358N
1x TDA2003 1x TDA2003
HD-PLD: 2x AMD MACH231-15-JC/1-18JI/1 HD-PLD: 2x AMD MACH231-15-JC/1-18JI/1 or...
(2x Lattice ispLSI1024-60LJ for earlier revisions) 2x XILINX XC9572 - PO100ASJ9745 or...
2x Lattice ispLSI1024-60LJ for earlier revisions
RAM: 1x 76C88AL-15, SRAM 8Kx8 RAM: 1x 76C88AL-15, SRAM 8Kx8
NVRAM: 1x 76C88AL-15, SRAM 8Kx8 (battery backed) NVRAM: 1x 76C88AL-15, SRAM 8Kx8 (battery backed)
@ -40,7 +41,7 @@
Clock: 1x Crystal: 16MHz. Clock: 1x Crystal: 16MHz.
Other: 1x 28x2 edge connector. Other: 1x 28x2 edge connector.
1x 15 legs connector. 1x 15-pins connector.
1x trimmer (volume). 1x trimmer (volume).
1x 8 DIP switches. 1x 8 DIP switches.
1x 3.5 Volt, 55-80 mAh battery. 1x 3.5 Volt, 55-80 mAh battery.
@ -116,15 +117,15 @@
*************************************************************************************** ***************************************************************************************
Issues / Protection Encryption schemes...
------------------- ---------------------
* Apple 10 * Apple 10
- Tile matrix and color palette are totally encrypted/scrambled. - Tile matrix and color data (video & color RAM) are totally encrypted/scrambled.
You can see the following table, where 'Normal tile #' is the tile number called to be drawn, and You can see the following table, where 'Normal tile #' is the tile number called
'Scrambled tile #' is the phisical tile position in the matrix: to be drawn, and 'Scrambled tile #' is the phisical tile position in the matrix:
Normal | Scrambled Normal | Scrambled
tile # | tile # tile # | tile #
@ -207,7 +208,7 @@
To properly decrypt the thing 'on the fly' as the hardware does, I applied a bitswap into TILE_GET_INFO. To properly decrypt the thing 'on the fly' as the hardware does, I applied a bitswap into TILE_GET_INFO.
This method rearrange the tile number for each tile called to be drawn. This method rearrange the tile number for each tile called to be drawn.
The final algorithm: The final algorithm is:
digit #3 digit #3
+-------+ swapped digits 1 & 2 +-------+ swapped digits 1 & 2
| | +-------+------+ | | +-------+------+
@ -220,7 +221,7 @@
Normal | Scrambled Normal | Scrambled
offset | offset offset | offset
------------+------------ ----------+-----------
0x00-0x0F | 0x00-0x0F 0x00-0x0F | 0x00-0x0F
0x10-0x1F | 0x80-0x8F 0x10-0x1F | 0x80-0x8F
0x20-0x2F | 0x40-0x4F 0x20-0x2F | 0x40-0x4F
@ -229,7 +230,7 @@
0x50-0x5F | 0xA0-0xAF 0x50-0x5F | 0xA0-0xAF
0x60-0x6F | 0x60-0x6F 0x60-0x6F | 0x60-0x6F
0x70-0x7F | 0xE0-0xEF 0x70-0x7F | 0xE0-0xEF
------------+------------ ----------+-----------
0x80-0x8F | 0x10-0x1F 0x80-0x8F | 0x10-0x1F
0x90-0x9F | 0x90-0x9F 0x90-0x9F | 0x90-0x9F
0xA0-0xAF | 0x50-0x5F 0xA0-0xAF | 0x50-0x5F
@ -251,7 +252,202 @@
2nd nibble 2nd nibble
swappeed pairs swappeed pairs
Scary, huh?... ;) Scary, huh?... ;-)
-----------------------------------------------------------------------------------
* Crystals Color
- Tile matrix and color data (video & color RAM) are totally encrypted/scrambled.
You can see the following table, where 'Normal tile #' is the tile number called
to be drawn, and 'Scrambled tile #' is the phisical tile position in the matrix:
Normal | Scrambled
tile # | tile #
-------+-----------
0x00 | 0x000 \
0x01 | 0x800 |
0x02 | 0x100 | Big "0"
0x03 | 0x900 |
0x04 | 0x004 |
0x05 | 0x804 /
-------+-----------
0x06 | 0x104 \
0x07 | 0x904 |
0x08 | 0x008 | Big "1"
0x09 | 0x808 |
0x0A | 0x108 |
0x0B | 0x908 /
-------+-----------
0x0C | 0x00C \
0x0D | 0x80C |
0x0E | 0x10C | Big "2"
0x0F | 0x90C |
0x10 | 0x010 |
0x11 | 0x810 /
-------+-----------
0x12 | 0x110 \
0x13 | 0x910 |
0x14 | 0x014 | Big "3"
0x15 | 0x814 |
0x16 | 0x114 |
0x17 | 0x914 /
-------+-----------
0x18 | 0x018 \
0x19 | 0x818 |
0x1A | 0x118 | Big "4"
0x1B | 0x918 |
0x1C | 0x01C |
0x1D | 0x81C /
-------+-----------
0x1E | 0x11C \
0x1F | 0x91C |
0x20 | 0x200 | Big "5"
0x21 | 0xA00 |
0x22 | 0x300 |
0x23 | 0xB00 /
-------+-----------
0x24 | 0x204 \
0x25 | 0xA04 |
0x26 | 0x304 | Big "6"
0x27 | 0xB04 |
0x28 | 0x208 |
0x29 | 0xA08 /
-------+-----------
0x2A | 0x308 \
0x2B | 0xB08 |
0x2C | 0x20C | Big "7"
0x2D | 0xA0C |
0x2E | 0x30C |
0x2F | 0xB0C /
-------+-----------
Will see some binary patterns...
TILE NORMAL POS SCRAMBLED POS
-----+---------------+---------------
00: 0000 0000 0000 : 0000 0000 0000
01: 0000 0000 0001 : 1000 0000 0000
02: 0000 0000 0010 : 0001 0000 0000
03: 0000 0000 0011 : 1001 0000 0000
04: 0000 0000 0100 : 0000 0000 0100
05: 0000 0000 0101 : 1000 0000 0100
06: 0000 0000 0110 : 0001 0000 0100
07: 0000 0000 0111 : 1001 0000 0100
08: 0000 0000 1000 : 0000 0000 1000
09: 0000 0000 1001 : 1000 0000 1000
0A: 0000 0000 1010 : 0001 0000 1000
0B: 0000 0000 1011 : 1001 0000 1000
0C: 0000 0000 1100 : 0000 0000 1100
0D: 0000 0000 1101 : 1000 0000 1100
0E: 0000 0000 1110 : 0001 0000 1100
0F: 0000 0000 1111 : 1001 0000 1100
10: 0000 0001 0000 : 0000 0001 0000
11: 0000 0001 0001 : 1000 0001 0000
12: 0000 0001 0010 : 0001 0001 0000
13: 0000 0001 0011 : 1001 0001 0000
14: 0000 0001 0100 : 0000 0001 0100
15: 0000 0001 0101 : 1000 0001 0100
16: 0000 0001 0110 : 0001 0001 0100
17: 0000 0001 0111 : 1001 0001 0100
18: 0000 0001 1000 : 0000 0001 1000
19: 0000 0001 1001 : 1000 0001 1000
1A: 0000 0001 1010 : 0001 0001 1000
1B: 0000 0001 1011 : 1001 0001 1000
1C: 0000 0001 1100 : 0000 0001 1100
1D: 0000 0001 1101 : 1000 0001 1100
1E: 0000 0001 1110 : 0001 0001 1100
1F: 0000 0001 1111 : 1001 0001 1100
20: 0000 0010 0000 : 0010 0000 0000
21: 0000 0010 0001 : 1010 0000 0000
22: 0000 0010 0010 : 0011 0000 0000
23: 0000 0010 0011 : 1011 0000 0000
24: 0000 0010 0100 : 0010 0000 0100
25: 0000 0010 0101 : 1010 0000 0100
26: 0000 0010 0110 : 0011 0000 0100
27: 0000 0010 0111 : 1011 0000 0100
28: 0000 0010 1000 : 0010 0000 1000
29: 0000 0010 1001 : 1010 0000 1000
2A: 0000 0010 1010 : 0011 0000 1000
2B: 0000 0010 1011 : 1011 0000 1000
2C: 0000 0010 1100 : 0010 0000 1100
2D: 0000 0010 1101 : 1010 0000 1100
2E: 0000 0010 1110 : 0011 0000 1100
2F: 0000 0010 1111 : 1011 0000 1100
40: 0000 0100 0000 : 0000 0100 0000
80: 0000 1000 0000 : 0000 1000 0000
C0: 0000 1100 0000 : 0000 1100 0000
100: 0001 0000 0000 : 0000 0000 0010
We have enough data to arrange the following bitswap:
FEDCBA9876543210 -> normal tile index.
||||||||||||
|||||||||||+--> B -
||||||||||+---> 8 \
|||||||||+----> 2 |
||||||||+-----> 3 |
|||||||+------> 4 |
||||||+-------> 9 |> FEDC0A517694328B -> encrypted tile index.
|||||+--------> 6 |
||||+---------> 7 |
|||+----------> 1 |
||+-----------> 5 |
|+------------> A /
+-------------> 0 -
- Color RAM: Colors are scrambled in the following way:
Normal | Scrambled
offset | offset
----------+-----------
0x00-0x1F | 0x00-0x1F
0x20-0x3F | 0x40-0x5F
0x40-0x5F | 0x20-0x3F
0x60-0x7F | 0x60-0x7F
----------+-----------
0x80-0x9F | 0x80-0x9F
0xA0-0xBF | 0xC0-0xDF
0xC0-0xDF | 0xA0-0xBF
0xE0-0xFF | 0xE0-0xFF
The color codes are swapped in blocks of 32 bytes. 0x20<->0x40 and 0xA0<->0xC0,
giving us the following binary representation:
Normal | Scrambled
offset | offset
---------------+-----------
00: 0000 0000 : 0000 0000
20: 0010 0000 : 0100 0000 <-- changed
40: 0100 0000 : 0010 0000 <-- changed
60: 0110 0000 : 0110 0000
80: 1000 0000 : 1000 0000
A0: 1010 0000 : 1100 0000 <-- changed
C0: 1100 0000 : 1010 0000 <-- changed
E0: 1110 0000 : 1110 0000
So, the algorithm to properly decrypt the color codes is the following one:
color_index = BITSWAP8(color_index,7,5,6,4,3,2,1,0)
| |
swapped
Happy end here :)
*********************************************************************************** ***********************************************************************************
@ -262,14 +458,14 @@
(Old hardware) (Old hardware)
$0000 - $0FFF NVRAM ;R/W, all registers and settings. $0000 - $07FF NVRAM (battery backed 6116) ;R/W, all registers and settings.
$1000 - $1000 OKI6295 ;R/W, sound. $1000 - $1000 OKI6295 ;R/W, sound.
$4000 - $4000 Input Port 0 ;R $4000 - $4000 Input Port 0 ;R
$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 0 ;W , lamps & counters. $5000 - $5000 Output Port 0 ; W, lamps & counters.
$5001 - $5001 Output Port 1 ;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
@ -277,15 +473,31 @@
(New hardware) (New hardware)
$0000 - $0FFF NVRAM ;R/W, all registers and settings. $0000 - $07FF NVRAM (battery backed 6116) ;R/W, all registers and settings.
$1000 - $1000 OKI6295 ;R/W, sound. $1000 - $1000 OKI6295 ;R/W, sound.
$3000 - $3000 Input Port 0 ;R $3000 - $3000 Input Port 0 ;R
$3001 - $3001 Input Port 1 ;R $3001 - $3001 Input Port 1 ;R
$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 0 ;W , lamps & counters. $5000 - $5000 Output Port 0 ; W, lamps & counters.
$5001 - $5001 Output Port 1 ;W , lamps. $5001 - $5001 Output Port 1 ; W, lamps.
$6000 - $6FFF Video RAM
$7000 - $7FFF Color RAM
$8000 - $FFFF ROM Space
(Crystals hardware)
$0000 - $07FF NVRAM (battery backed 6116) ;R/W, all registers and settings.
$1000 - $1000 Output Port 0 ; W, lamps & counters.
$1001 - $1001 Output Port 1 ; W, lamps.
$2000 - $2008 Special Input ;R , special ports meant for data channels...
$3000 - $3000 Input Port 0 ;R
$3001 - $3001 Input Port 1 ;R
$3002 - $3002 Input Port 2 ;R
$3003 - $3003 Input Port 3 ;R , DIP switches.
$5000 - $5000 OKI6295 ;R/W, sound.
$6000 - $6FFF Video RAM $6000 - $6FFF Video RAM
$7000 - $7FFF Color RAM $7000 - $7FFF Color RAM
$8000 - $FFFF ROM Space $8000 - $FFFF ROM Space
@ -297,19 +509,54 @@
*** Driver Updates *** *** Driver Updates ***
[2013/05/12]
Crystals Colours:
- Decrypted the tile matrix / video RAM.
- Wrote proper memory map and inputs from the scratch.
- Bypassed the program data channels protection.
- Decrypted the colors / color RAM.
- Added button-lamps support.
- Created a default NVRAM.
- Promoted to working state.
- Added technical and encryption notes...
Snooker 10:
- Fixed NVRAM size.
- Added default NVRAM.
Apple 10:
- Fixed NVRAM size.
- Added default NVRAM.
Ten Balls:
- Fixed NVRAM size.
- Added default NVRAM.
[2013/05/04]
- Added Crystals Colours (Ver 1.01).
[2008/10/09] [2008/10/09]
- Reworked the button-lamps matrix system. - Reworked the button-lamps matrix system.
- Documented both output ports. - Documented both output ports.
- Connected coin in, key in and payout counters. - Connected coin in, key in and payout counters.
- Improved the lamps layout to be more realistic. - Improved the lamps layout to be more realistic.
- Updated technical notes. - 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.
- Updated technical notes. - Updated technical notes.
[2008/05/29] [2008/05/29]
- Switched the color system to RESNET calculations. - Switched the color system to RESNET calculations.
- Hooked the infamous bit7 of Input Port 0x3004 in parallel to DIP switch 1. - Hooked the infamous bit7 of Input Port 0x3004 in parallel to DIP switch 1.
This allow to use the PAYOUT button to trigger the Super Game instead of STOP 5. This allow to use the PAYOUT button to trigger the Super Game instead of STOP 5.
@ -317,7 +564,9 @@
- Added lamps support, but is still imperfect. - Added lamps support, but is still imperfect.
- Updated technical notes. - Updated technical notes.
[2008/05/22] [2008/05/22]
- Confirmed the CPU clock after some PCB measurements. - Confirmed the CPU clock after some PCB measurements.
- Changed the SND clock to 1MHz to match the PCB measurement. - Changed the SND clock to 1MHz to match the PCB measurement.
- Corrected the internal OKI6295 frequency turning the pin 7 state to HIGH. - Corrected the internal OKI6295 frequency turning the pin 7 state to HIGH.
@ -325,7 +574,9 @@
Affected buttons have a rattled sound in the real thing too. Affected buttons have a rattled sound in the real thing too.
- Updated technical notes. - Updated technical notes.
[2008/04/28] [2008/04/28]
- Created a new machine driver for tenballs due to different memory map. - Created a new machine driver for tenballs due to different memory map.
- Worked all the input ports from the scratch. - Worked all the input ports from the scratch.
- Fixed the sound ROM_REGION. - Fixed the sound ROM_REGION.
@ -341,23 +592,24 @@
- Added game instructions & notes. - Added game instructions & notes.
- Updated encryption & technical notes. - Updated encryption & technical notes.
[2008/04/24] [2008/04/24]
- Decrypted the apple10 tile matrix. - Decrypted the apple10 tile matrix.
- Partially decrypted the apple10 color codes. - Partially decrypted the apple10 color codes.
- Added encryption notes. - Added encryption notes.
- Updated technical notes. - Updated technical notes.
[2008/04/18] [2008/04/18]
- Initial release. Support for snookr10, apple10 and tenballs. - Initial release. Support for snookr10, apple10 and tenballs.
- Added technical/general notes. - Added technical/general notes.
[2013/05/04]
- Added Crystals Colors (Ver 1.01).
*** TO DO *** *** TO DO ***
- Decrypt Crystals Colors... - Nothing... :)
***********************************************************************************/ ***********************************************************************************/
@ -494,12 +746,23 @@ WRITE8_MEMBER(snookr10_state::output_port_1_w)
} }
READ8_MEMBER(snookr10_state::port2000_8_r)
{
/*
Ports 2000-2008 expect data, otherwise the program trigger
a sort of service-text mode, sets 300000 points and starts
to decrease the amount one by one, triggering a sound each
time the amount is decremented.
*/
return 0xff;
}
/************************* /*************************
* Memory map information * * Memory map information *
*************************/ *************************/
static ADDRESS_MAP_START( snookr10_map, AS_PROGRAM, 8, snookr10_state ) static ADDRESS_MAP_START( snookr10_map, AS_PROGRAM, 8, snookr10_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */
AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") /* IN0 */ AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") /* IN0 */
AM_RANGE(0x3001, 0x3001) AM_READ_PORT("IN1") /* IN1 */ AM_RANGE(0x3001, 0x3001) AM_READ_PORT("IN1") /* IN1 */
@ -514,7 +777,7 @@ static ADDRESS_MAP_START( snookr10_map, AS_PROGRAM, 8, snookr10_state )
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( tenballs_map, AS_PROGRAM, 8, snookr10_state ) static ADDRESS_MAP_START( tenballs_map, AS_PROGRAM, 8, snookr10_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */
AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("IN0") /* IN0 */ AM_RANGE(0x4000, 0x4000) AM_READ_PORT("IN0") /* IN0 */
AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1") /* IN1 */ AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1") /* IN1 */
@ -527,6 +790,21 @@ static ADDRESS_MAP_START( tenballs_map, AS_PROGRAM, 8, snookr10_state )
AM_RANGE(0x8000, 0xffff) AM_ROM AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( crystalc_map, AS_PROGRAM, 8, snookr10_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */
AM_RANGE(0x1000, 0x1000) AM_WRITE(output_port_0_w) /* OUT0 */
AM_RANGE(0x1001, 0x1001) AM_WRITE(output_port_1_w) /* OUT1 */
AM_RANGE(0x2000, 0x2008) AM_READ(port2000_8_r) /* unknown... protection or data channels? */
AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") /* IN0 */
AM_RANGE(0x3001, 0x3001) AM_READ_PORT("IN1") /* IN1 */
AM_RANGE(0x3002, 0x3002) AM_READ_PORT("IN2") /* IN2 */
AM_RANGE(0x3003, 0x3003) AM_READ_PORT("SW1") /* DS1 */
AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(snookr10_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(snookr10_colorram_w) AM_SHARE("colorram")
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
/************************* /*************************
* Input ports * * Input ports *
@ -659,6 +937,62 @@ static INPUT_PORTS_START( tenballs )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( crystalc )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Remote x100") PORT_CODE(KEYCODE_Q)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Stop 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancella (Cancel) / Play / Bet")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start (Deal) / Raddoppio (Double-Up)")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Stop 5 / Risk (Half Gamble) / Super Game")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Statistica (Stats)")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Management")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Stop 4 / Alta (High)")
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Stop 2 / Bassa (Low)")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Stop 3")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Ticket") PORT_CODE(KEYCODE_T)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper") PORT_CODE(KEYCODE_H)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Scarica (Payout)")
PORT_START("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // SG vs real value in paytable.
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SW1")
PORT_DIPNAME( 0x03, 0x00, "Pool Value" ) PORT_DIPLOCATION("SW1:7,8")
PORT_DIPSETTING( 0x03, "100" )
PORT_DIPSETTING( 0x02, "200" )
PORT_DIPSETTING( 0x01, "500" )
PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x60, 0x60, "Payment Type" ) PORT_DIPLOCATION("SW1:3,2")
PORT_DIPSETTING( 0x00, "Ticket + Coins" )
PORT_DIPSETTING( 0x20, "Ticket only" )
PORT_DIPSETTING( 0x40, "Coins only" )
PORT_DIPSETTING( 0x60, "Ticket + Coins" )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
/************************* /*************************
* Graphics Layouts * * Graphics Layouts *
@ -708,7 +1042,6 @@ static MACHINE_CONFIG_START( snookr10, snookr10_state )
MCFG_SCREEN_UPDATE_DRIVER(snookr10_state, screen_update_snookr10) MCFG_SCREEN_UPDATE_DRIVER(snookr10_state, screen_update_snookr10)
MCFG_GFXDECODE(snookr10) MCFG_GFXDECODE(snookr10)
MCFG_PALETTE_LENGTH(256) MCFG_PALETTE_LENGTH(256)
/* sound hardware */ /* sound hardware */
@ -724,8 +1057,8 @@ static MACHINE_CONFIG_DERIVED( apple10, snookr10 )
MCFG_CPU_MODIFY("maincpu") MCFG_CPU_MODIFY("maincpu")
/* video hardware */ /* video hardware */
MCFG_PALETTE_INIT_OVERRIDE(snookr10_state,apple10) MCFG_PALETTE_INIT_OVERRIDE(snookr10_state, apple10)
MCFG_VIDEO_START_OVERRIDE(snookr10_state,apple10) MCFG_VIDEO_START_OVERRIDE(snookr10_state, apple10)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -737,6 +1070,17 @@ static MACHINE_CONFIG_DERIVED( tenballs, snookr10 )
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( crystalc, snookr10 )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(crystalc_map)
MCFG_PALETTE_INIT_OVERRIDE(snookr10_state, crystalc)
MCFG_VIDEO_START_OVERRIDE(snookr10_state, crystalc)
MACHINE_CONFIG_END
/************************* /*************************
* Rom Load * * Rom Load *
@ -751,7 +1095,10 @@ ROM_START( snookr10 )
ROM_LOAD( "3.u25", 0x8000, 0x8000, CRC(3009faaa) SHA1(d1cda455b270cb9afa65b9701735a3a1f2a48df2) ) ROM_LOAD( "3.u25", 0x8000, 0x8000, CRC(3009faaa) SHA1(d1cda455b270cb9afa65b9701735a3a1f2a48df2) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "4.u18", 0x00000, 0x40000 , CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) ) ROM_LOAD( "4.u18", 0x00000, 0x40000, CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) )
ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
ROM_LOAD( "snooker_10_nvram.bin", 0x0000, 0x0800, CRC(d383363b) SHA1(88f0d9e53b0bd276d01cefd817f0edcd753322dc) )
/* this should be changed because the palette is stored in a normal ROM instead of a color PROM */ /* this should be changed because the palette is stored in a normal ROM instead of a color PROM */
ROM_REGION( 0x8000, "proms", 0 ) ROM_REGION( 0x8000, "proms", 0 )
@ -767,7 +1114,10 @@ ROM_START( apple10 )
ROM_LOAD( "3.u25", 0x8000, 0x8000, CRC(afc535dc) SHA1(ed2d65f3154c6d80b7b22bfef1f30232e4496128) ) ROM_LOAD( "3.u25", 0x8000, 0x8000, CRC(afc535dc) SHA1(ed2d65f3154c6d80b7b22bfef1f30232e4496128) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "4.u18", 0x00000, 0x40000 , CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) ) ROM_LOAD( "4.u18", 0x00000, 0x40000, CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) )
ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
ROM_LOAD( "apple_10_nvram.bin", 0x0000, 0x0800, CRC(00069b55) SHA1(378ca25dc3173252548bc27e80909e1b2b4d58db) )
/* this should be changed because the palette is stored in a normal ROM instead of a color PROM */ /* this should be changed because the palette is stored in a normal ROM instead of a color PROM */
ROM_REGION( 0x8000, "proms", 0 ) ROM_REGION( 0x8000, "proms", 0 )
@ -783,7 +1133,10 @@ ROM_START( tenballs )
ROM_LOAD( "2.u15", 0x8000, 0x8000, CRC(a5091583) SHA1(c0775d9b77cb634d3702b6c08cdf73c867b6169a) ) ROM_LOAD( "2.u15", 0x8000, 0x8000, CRC(a5091583) SHA1(c0775d9b77cb634d3702b6c08cdf73c867b6169a) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "1.u28", 0x00000, 0x40000 , CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) ) ROM_LOAD( "1.u28", 0x00000, 0x40000, CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) )
ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
ROM_LOAD( "ten_balls_nvram.bin", 0x0000, 0x0800, CRC(42a5803f) SHA1(2c8c9ec0f26a947cf9cfa2e91e9127725becdef5) )
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "82s147.u17", 0x0000, 0x0200, CRC(20234dcc) SHA1(197937bbec0201888467e250bdba49e39aa4204a) ) ROM_LOAD( "82s147.u17", 0x0000, 0x0200, CRC(20234dcc) SHA1(197937bbec0201888467e250bdba49e39aa4204a) )
@ -791,17 +1144,20 @@ ROM_END
ROM_START( crystalc ) ROM_START( crystalc )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "crystals-colours1.u2", 0x8000, 0x8000, CRC(ee7a6f62) SHA1(bb3f438ca563eeb4b365d344066b10b9aedb77bb) ) ROM_LOAD( "crystals_colours_1.u2", 0x8000, 0x8000, CRC(ee7a6f62) SHA1(bb3f438ca563eeb4b365d344066b10b9aedb77bb) )
ROM_REGION( 0x10000, "gfx1", 0 ) ROM_REGION( 0x10000, "gfx1", 0 )
ROM_LOAD( "crystals-colours2.u16", 0x0000, 0x8000, CRC(527c07f6) SHA1(53ceb1d0267e1d76fa1a9325c9a1d2e8e034958d) ) ROM_LOAD( "crystals_colours_2.u16", 0x0000, 0x8000, CRC(527c07f6) SHA1(53ceb1d0267e1d76fa1a9325c9a1d2e8e034958d) )
ROM_LOAD( "crystals-colours3.u15", 0x8000, 0x8000, CRC(e1003ab7) SHA1(a78bb2e1dc9d578d6a38072e2087f382cffa9f99) ) ROM_LOAD( "crystals_colours_3.u15", 0x8000, 0x8000, CRC(e1003ab7) SHA1(a78bb2e1dc9d578d6a38072e2087f382cffa9f99) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "crystals-colours4.u28", 0x00000, 0x40000 , CRC(ecc6b575) SHA1(f6032e89b30aebeab9ad721608277430084256bc) ) ROM_LOAD( "crystals_colours_4.u28", 0x00000, 0x40000, CRC(ecc6b575) SHA1(f6032e89b30aebeab9ad721608277430084256bc) )
ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
ROM_LOAD( "crystals_colours_nvram.bin", 0x0000, 0x0800, CRC(907d8828) SHA1(ffd302996bee81277c2280fc212d910e0801d81d) )
ROM_REGION( 0x0200, "proms", 0 ) ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "27s29.u17", 0x0000, 0x0200, CRC(1af53eab) SHA1(1cac837aed75a77a0b93a294b07f2a8de6fcffef) ) ROM_LOAD( "am27s29pc.u17", 0x0000, 0x0200, CRC(1af53eab) SHA1(1cac837aed75a77a0b93a294b07f2a8de6fcffef) )
ROM_END ROM_END
@ -813,4 +1169,4 @@ ROM_END
GAMEL( 1998, snookr10, 0, snookr10, snookr10, driver_device, 0, ROT0, "Sandii'", "Snooker 10 (Ver 1.11)", 0, layout_snookr10 ) GAMEL( 1998, snookr10, 0, snookr10, snookr10, driver_device, 0, ROT0, "Sandii'", "Snooker 10 (Ver 1.11)", 0, layout_snookr10 )
GAMEL( 1998, apple10, 0, apple10, apple10, driver_device, 0, ROT0, "Sandii'", "Apple 10 (Ver 1.21)", 0, layout_snookr10 ) GAMEL( 1998, apple10, 0, apple10, apple10, driver_device, 0, ROT0, "Sandii'", "Apple 10 (Ver 1.21)", 0, layout_snookr10 )
GAMEL( 1997, tenballs, snookr10, tenballs, tenballs, driver_device, 0, ROT0, "<unknown>", "Ten Balls (Ver 1.05)", 0, layout_snookr10 ) GAMEL( 1997, tenballs, snookr10, tenballs, tenballs, driver_device, 0, ROT0, "<unknown>", "Ten Balls (Ver 1.05)", 0, layout_snookr10 )
GAME( 199?, crystalc, 0, snookr10, snookr10, driver_device, 0, ROT0, "<unknown>", "Crystals Colors (Ver 1.01)", GAME_NOT_WORKING ) GAMEL( 1998, crystalc, 0, crystalc, crystalc, driver_device, 0, ROT0, "JCD srl", "Crystals Colours (Ver 1.01)", 0, layout_snookr10 )

View File

@ -19,16 +19,20 @@ public:
required_shared_ptr<UINT8> m_colorram; required_shared_ptr<UINT8> m_colorram;
tilemap_t *m_bg_tilemap; tilemap_t *m_bg_tilemap;
DECLARE_READ8_MEMBER(dsw_port_1_r); DECLARE_READ8_MEMBER(dsw_port_1_r);
DECLARE_READ8_MEMBER(port2000_8_r);
DECLARE_WRITE8_MEMBER(output_port_0_w); DECLARE_WRITE8_MEMBER(output_port_0_w);
DECLARE_WRITE8_MEMBER(output_port_1_w); DECLARE_WRITE8_MEMBER(output_port_1_w);
DECLARE_WRITE8_MEMBER(snookr10_videoram_w); DECLARE_WRITE8_MEMBER(snookr10_videoram_w);
DECLARE_WRITE8_MEMBER(snookr10_colorram_w); DECLARE_WRITE8_MEMBER(snookr10_colorram_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(apple10_get_bg_tile_info); TILE_GET_INFO_MEMBER(apple10_get_bg_tile_info);
TILE_GET_INFO_MEMBER(crystalc_get_bg_tile_info);
virtual void video_start(); virtual void video_start();
virtual void palette_init(); virtual void palette_init();
DECLARE_VIDEO_START(apple10); DECLARE_VIDEO_START(apple10);
DECLARE_VIDEO_START(crystalc);
DECLARE_PALETTE_INIT(apple10); DECLARE_PALETTE_INIT(apple10);
DECLARE_PALETTE_INIT(crystalc);
UINT32 screen_update_snookr10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_snookr10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
}; };

View File

@ -1,26 +1,17 @@
/********************************************************************************** /**********************************************************************************
SNOOKER 10 / SANDII' SNOOKER 10 / SANDII'
Driver by Roberto Fresca. Video Hardware.
Written by Roberto Fresca.
Games running on this hardware:
* Snooker 10 (Ver 1.11), Sandii', 1998.
* Apple 10 (Ver 1.21), Sandii', 1998.
* Ten Balls (Ver 1.05), unknown, 1997.
*********************************************************************************** ***********************************************************************************
Resistor Network for all PCBs: Resistor Network for all PCBs:
74LS373 74LS373
+-------+ .-------.
| 02|--> 1 KOhms resistor --> \ | 02|--> 1 KOhms resistor --> \
| 05|--> 470 Ohms resistor --> > 100 Ohms pull-down resistor --> RED | 05|--> 470 Ohms resistor --> > 100 Ohms pull-down resistor --> RED
| 06|--> 220 Ohms resistor --> / | 06|--> 220 Ohms resistor --> /
@ -31,12 +22,10 @@
| | | |
| 16|--> 470 Ohms resistor --> \ 100 Ohms pull-down resistor --> GREEN | 16|--> 470 Ohms resistor --> \ 100 Ohms pull-down resistor --> GREEN
| 19|--> 220 Ohms resistor --> / | 19|--> 220 Ohms resistor --> /
+-------+ '-------'
**********************************************************************************/ **********************************************************************************/
#include "emu.h" #include "emu.h"
#include "video/resnet.h" #include "video/resnet.h"
#include "includes/snookr10.h" #include "includes/snookr10.h"
@ -80,11 +69,13 @@ void snookr10_state::palette_init()
bit1 = (color_prom[i] >> 1) & 0x01; bit1 = (color_prom[i] >> 1) & 0x01;
bit2 = (color_prom[i] >> 2) & 0x01; bit2 = (color_prom[i] >> 2) & 0x01;
r = combine_3_weights(weights_r, bit0, bit1, bit2); r = combine_3_weights(weights_r, bit0, bit1, bit2);
/* blue component */ /* blue component */
bit0 = (color_prom[i] >> 3) & 0x01; bit0 = (color_prom[i] >> 3) & 0x01;
bit1 = (color_prom[i] >> 4) & 0x01; bit1 = (color_prom[i] >> 4) & 0x01;
bit2 = (color_prom[i] >> 5) & 0x01; bit2 = (color_prom[i] >> 5) & 0x01;
b = combine_3_weights(weights_b, bit0, bit1, bit2); b = combine_3_weights(weights_b, bit0, bit1, bit2);
/* green component */ /* green component */
bit0 = (color_prom[i] >> 6) & 0x01; bit0 = (color_prom[i] >> 6) & 0x01;
bit1 = (color_prom[i] >> 7) & 0x01; bit1 = (color_prom[i] >> 7) & 0x01;
@ -111,11 +102,15 @@ TILE_GET_INFO_MEMBER(snookr10_state::get_bg_tile_info)
/********************************************************** /**********************************************************
* Apple10 colors and tile matrix are encrypted/scrambled. *
* For more information, see the driver notes. * Apple 10 palette and tile matrix / video RAM
are encrypted/scrambled.
For more information, see the driver notes.
**********************************************************/ **********************************************************/
PALETTE_INIT_MEMBER(snookr10_state,apple10) PALETTE_INIT_MEMBER(snookr10_state, apple10)
{ {
const UINT8 *color_prom = memregion("proms")->base(); const UINT8 *color_prom = memregion("proms")->base();
/* GGBBBRRR */ /* GGBBBRRR */
@ -140,11 +135,13 @@ PALETTE_INIT_MEMBER(snookr10_state,apple10)
bit1 = (color_prom[i] >> 1) & 0x01; bit1 = (color_prom[i] >> 1) & 0x01;
bit2 = (color_prom[i] >> 2) & 0x01; bit2 = (color_prom[i] >> 2) & 0x01;
r = combine_3_weights(weights_r, bit0, bit1, bit2); r = combine_3_weights(weights_r, bit0, bit1, bit2);
/* blue component */ /* blue component */
bit0 = (color_prom[i] >> 3) & 0x01; bit0 = (color_prom[i] >> 3) & 0x01;
bit1 = (color_prom[i] >> 4) & 0x01; bit1 = (color_prom[i] >> 4) & 0x01;
bit2 = (color_prom[i] >> 5) & 0x01; bit2 = (color_prom[i] >> 5) & 0x01;
b = combine_3_weights(weights_b, bit0, bit1, bit2); b = combine_3_weights(weights_b, bit0, bit1, bit2);
/* green component */ /* green component */
bit0 = (color_prom[i] >> 6) & 0x01; bit0 = (color_prom[i] >> 6) & 0x01;
bit1 = (color_prom[i] >> 7) & 0x01; bit1 = (color_prom[i] >> 7) & 0x01;
@ -173,16 +170,90 @@ TILE_GET_INFO_MEMBER(snookr10_state::apple10_get_bg_tile_info)
} }
/**********************************************************
Crystals Colours palette and tile matrix / video RAM
are encrypted/scrambled.
For more information, see the driver notes.
**********************************************************/
PALETTE_INIT_MEMBER(snookr10_state, crystalc)
{
const UINT8 *color_prom = memregion("proms")->base();
/* GGBBBRRR */
int i, cn;
static const int resistances_rb[3] = { 1000, 470, 220 };
static const int resistances_g [2] = { 470, 220 };
double weights_r[3], weights_b[3], weights_g[2];
compute_resistor_weights(0, 255, -1.0,
3, resistances_rb, weights_r, 100, 0,
3, resistances_rb, weights_b, 100, 0,
2, resistances_g, weights_g, 100, 0);
for (i = 0; i < machine().total_colors(); i++)
{
int bit0, bit1, bit2, r, g, b;
/* red component */
bit0 = (color_prom[i] >> 0) & 0x01;
bit1 = (color_prom[i] >> 1) & 0x01;
bit2 = (color_prom[i] >> 2) & 0x01;
r = combine_3_weights(weights_r, bit0, bit1, bit2);
/* blue component */
bit0 = (color_prom[i] >> 3) & 0x01;
bit1 = (color_prom[i] >> 4) & 0x01;
bit2 = (color_prom[i] >> 5) & 0x01;
b = combine_3_weights(weights_b, bit0, bit1, bit2);
/* green component */
bit0 = (color_prom[i] >> 6) & 0x01;
bit1 = (color_prom[i] >> 7) & 0x01;
g = combine_2_weights(weights_g, bit0, bit1);
/* encrypted color matrix */
cn = BITSWAP8(i,7,5,6,4,3,2,1,0);
palette_set_color(machine(), cn, MAKE_RGB(r,g,b));
}
}
TILE_GET_INFO_MEMBER(snookr10_state::crystalc_get_bg_tile_info)
{
/* - bits -
7654 3210
xxxx ---- tiles color.
---- xxxx seems unused.
*/
int offs = tile_index;
int attr = m_videoram[offs] + (m_colorram[offs] << 8);
int code = BITSWAP16((attr & 0xfff),15,14,13,12,0,10,5,1,7,6,9,4,3,2,8,11); /* encrypted tile matrix */
int color = m_colorram[offs] >> 4;
SET_TILE_INFO_MEMBER(0, code, color, 0);
}
void snookr10_state::video_start() void snookr10_state::video_start()
{ {
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(snookr10_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 128, 30); m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(snookr10_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 128, 30);
} }
VIDEO_START_MEMBER(snookr10_state,apple10) VIDEO_START_MEMBER(snookr10_state, apple10)
{ {
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(snookr10_state::apple10_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 128, 30); m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(snookr10_state::apple10_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 128, 30);
} }
VIDEO_START_MEMBER(snookr10_state, crystalc)
{
m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(snookr10_state::crystalc_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 128, 30);
}
UINT32 snookr10_state::screen_update_snookr10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) UINT32 snookr10_state::screen_update_snookr10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
m_bg_tilemap->draw(bitmap, cliprect, 0, 0); m_bg_tilemap->draw(bitmap, cliprect, 0, 0);