New driver for Sandii' hardware. Support for snookr10, apple10 and tenballs. Added technical/general notes.

Funworld updates:
- Removed the temporary hack to jolyc980.
- Updated technical notes regarding Magic Card II & Jolly Card Professional 2.0.
- Moved snookr10 to its own driver.
- Minor clean-up.


New games marked as GAME_NOT_WORKING
------------------------------------
Apple 10 (Ver 1.21) [Roberto Fresca]
Ten Balls (Ver 1.05) [Roberto Fresca]
This commit is contained in:
Roberto Fresca 2008-04-20 04:16:47 +00:00
parent e91eb4007c
commit baad7a6f45
7 changed files with 614 additions and 217 deletions

2
.gitattributes vendored
View File

@ -1891,6 +1891,7 @@ src/mame/drivers/sliver.c svneol=native#text/plain
src/mame/drivers/smstrv.c svneol=native#text/plain
src/mame/drivers/snk.c svneol=native#text/plain
src/mame/drivers/snk68.c svneol=native#text/plain
src/mame/drivers/snookr10.c svneol=native#text/plain
src/mame/drivers/snowbros.c svneol=native#text/plain
src/mame/drivers/solomon.c svneol=native#text/plain
src/mame/drivers/sonson.c svneol=native#text/plain
@ -3118,6 +3119,7 @@ src/mame/video/slapshot.c svneol=native#text/plain
src/mame/video/snes.c svneol=native#text/plain
src/mame/video/snk.c svneol=native#text/plain
src/mame/video/snk68.c svneol=native#text/plain
src/mame/video/snookr10.c svneol=native#text/plain
src/mame/video/solomon.c svneol=native#text/plain
src/mame/video/sonson.c svneol=native#text/plain
src/mame/video/spacefb.c svneol=native#text/plain

View File

@ -46,7 +46,6 @@
* Joker Card (Ver.A267BC, encrypted), Vesely Svet, 1993.
* Mongolfier New (italian), bootleg, 199?.
* Soccer New (italian), bootleg, 199?.
* Snooker 10 (Ver 1.11), Sandii', 1998.
* Saloon (french, encrypted), unknown, 199?.
@ -145,11 +144,11 @@
NOTES BY GAME/SET:
- Pool 10
- Cuore 1
- Elephant Family
- Tortuga Family
- Pot Game
* Pool 10
* Cuore 1
* Elephant Family
* Tortuga Family
* Pot Game
In Italy many people became addicted to videopokers. They put so much money on them,
and they had to sell the house. Also some engineers modified videopokers to do less
@ -174,31 +173,60 @@
the supported set is the program rom that is double sized, having identical halves.
- Jolly Card (austrian, Funworld, bootleg)
* Jolly Card (austrian, Funworld, bootleg)
This one seems to have normal RAM instead of NVRAM.
Going through the code, there's not any NVRAM initialization routine through service 1 & 2.
- Jolly Card Professional 2.0 (Spale-Soft)
* Jolly Card Professional 2.0 (Spale-Soft)
Each 1st boot, this game show a generated code. You must enter this code in a DOS program to
get the input codes necessary to allow boot the game.
This set is one of the most wanted for customers because is a real SCAM.
The program has 2 hidden menues that allow change parameters without knowledge of the players.
- Jolly Card (croatian sets) and Jolly Card Professional 2.0
* Jolly Card (croatian sets) and Jolly Card Professional 2.0
These games don't operate with regular coins/tokens. Only remote credits are allowed.
- Magic Card II (Impera)
* Magic Card II (Impera)
Impera made 2 graphics sets for this game. One of them is encrypted, and meant for the TAB blue board.
This board has two HY18CV85 (electrically-erasable PLD) that handle the encryption.
In another hand, the sound has some weird things, but is confirmed that happen in the real thing.
The game resolution seems to change 'on the fly' when entering the input test mode.
There aren't any writes to the m6845 registers to manage these changes.
- Jolly Joker (Impera, 50bet)
Regarding the CPU, it seems to be a custom one, or a daughterboard with a 65c02 + PLDs/TTLs.
Some CPU instructions seems to be changed. The following piece of code at $C1A8 is very clear:
C1A8: A0 00 ldy #$00 ; clear Y register to use as counter.
C1AA: B9 9D C1 lda $C19D,y ; load PIA port address
C1AD: 85 06 sta $06 ; into $06-$07 ZP vector.
C1AF: B9 92 C1 lda $C192,y ;
C1B2: 85 07 sta $07 ;
C1B4: C0 0B cpy #$0B
C1B6: B0 0C bcs $C1C4
... load values to store into Accumulator...
...
C1C6: 91 06 sta ($06),y ; store value in PIA port, indexed (Y).
C1C8: C8 iny ; increment Y
C1C9: C0 0C cpy #$0C ; finish?
C1CB: D0 DD bne $C1AA ; if not, branch to load a new PIA adress.
In this example, as soon as Y register increments, the indexed writes go out of range.
To get this piece of code working and initialize the PIAs properly, the instruction 0x91 should be
"sta ($ZP)" instead of Y indexed. (like instruction 0x92 in stock 65c02's).
* Jolly Joker (Impera, 50bet)
To boot this game for 1st time, DSW should be in the following position:
1=ON 2=OFF 3=ON 4=OFF 5=OFF 6=ON 7=ON 8=OFF
@ -207,8 +235,8 @@
When numbers start to fill the screen, press RESET (key F3) again to start the game.
- Mongolfier New
- Soccer New
* Mongolfier New
* Soccer New
These games are based in Royal Card. They are running in a heavely modified Royal Card
hardware with a microcontroller as an extra (protection?) component and a TDA2003 as
@ -224,19 +252,7 @@
about them and start to implement the missing pieces for an accurate emulation.
- Snooker 10
This game is running in a complete different hardware.
2x MACH231-15, an AD-65 (equivalent to OKI6295), no AY-8910, no NVRAM, no PIAs, no CRTC,
different memory map, and an unknown DIP40 IC, that could be an extra CPU or MCU.
Tiles are flipped in X-axis respect to the normal funworld games, so need it's own GFX decode.
Also palette is stored in a normal 27C256 ROM, repeated 64 times.
This game should be moved to a new driver in a near future, as soon as we know a bit more
about it and start to implement the missing pieces for an accurate emulation.
- Saloon
* Saloon
This game is totally encrypted. No PIAs to drive I/O. The PCB has printed "LEOPARDO 5", so we
can expect a game called the same way to appear.
@ -628,27 +644,6 @@
- 1x green led
Snooker 10 (Ver 1.11)
---------------------
- 1x Unknown DIP40 (main)
- 1x AD-65 (equivalent to OKI6295)
- 1x LM358N (sound)
- 1x TDA2003 (sound)
- 2x MACH231-15-JC/1-18JI/1
- 1x oscillator 16.00MHz
- 2x TMS27C256 (1,2)
- 2x M27C256 (3,5)
- 1x M27C2001 (4)
- 1x JAMMA edge connector
- 1x 15 legs connector
- 1x trimmer (volume)
- 1x 8 DIP switches
- 1x battery
Saloon (France, encrypted)
--------------------------
@ -829,6 +824,12 @@
- Added new game: Pot Game (italian).
- Updated technical notes.
2008/04/18
- Removed the temporary hack to jolyc980.
- Updated technical notes regarding Magic Card II & Jolly Card Professional 2.0.
- Moved snookr10 to its own driver.
- Minor clean-up.
*** TO DO ***
@ -859,7 +860,6 @@ WRITE8_HANDLER( funworld_colorram_w );
PALETTE_INIT( funworld );
VIDEO_START( funworld );
VIDEO_START( magiccrd );
VIDEO_START( snookr10 );
VIDEO_UPDATE( funworld );
@ -869,22 +869,22 @@ VIDEO_UPDATE( funworld );
static WRITE8_HANDLER(funworld_lamp_a_w)
{
coin_counter_w(0, data & 0x01); // credit in counter
coin_counter_w(0, data & 0x01); /* credit in counter */
output_set_lamp_value(0, 1-((data >> 1) & 1)); // button hold1 and
output_set_lamp_value(2, 1-((data >> 1) & 1)); // hold3 (see pinouts)
output_set_lamp_value(0, 1-((data >> 1) & 1)); /* button hold1 and */
output_set_lamp_value(2, 1-((data >> 1) & 1)); /* hold3 (see pinouts) */
coin_counter_w(7, data & 0x04); // credit out counter, mapped as coin 8
coin_counter_w(7, data & 0x04); /* credit out counter, mapped as coin 8 */
output_set_lamp_value(1, 1-((data >> 3) & 1)); // button hold2/low
output_set_lamp_value(5, 1-((data >> 5) & 1)); // button 6 (collect/cancel)
output_set_lamp_value(3, (data >> 7) & 1); // button hold4/high
output_set_lamp_value(1, 1-((data >> 3) & 1)); /* button hold2/low */
output_set_lamp_value(5, 1-((data >> 5) & 1)); /* button 6 (collect/cancel) */
output_set_lamp_value(3, (data >> 7) & 1); /* button hold4/high */
}
static WRITE8_HANDLER(funworld_lamp_b_w)
{
output_set_lamp_value(4, (data >> 0) & 1); // button hold5/bet
output_set_lamp_value(6, (data >> 1) & 1); // button 7 (start/play)
output_set_lamp_value(4, (data >> 0) & 1); /* button hold5/bet */
output_set_lamp_value(6, (data >> 1) & 1); /* button 7 (start/play) */
}
@ -915,7 +915,9 @@ static ADDRESS_MAP_START( magiccrd_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0c01, 0x0c01) AM_WRITE(AY8910_write_port_0_w)
AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x3600, 0x36ff) AM_RAM // some games use $3603-05 range for protection.
AM_RANGE(0x2c00, 0x2cff) AM_RAM /* range for protection */
AM_RANGE(0x3600, 0x36ff) AM_RAM /* some games use $3603-05 range for protection */
AM_RANGE(0x3c00, 0x3cff) AM_RAM /* range for protection */
AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(funworld_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x5000, 0x5fff) AM_RAM AM_WRITE(funworld_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x6000, 0xffff) AM_ROM
@ -929,8 +931,8 @@ static ADDRESS_MAP_START( cuoreuno_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0c01, 0x0c01) AM_WRITE(AY8910_write_port_0_w)
AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0x2000, 0x2000) AM_READNOP // some unknown reads
AM_RANGE(0x3e00, 0x3fff) AM_RAM // some games use $3e03-05 range for protection.
AM_RANGE(0x2000, 0x2000) AM_READNOP /* some unknown reads */
AM_RANGE(0x3e00, 0x3fff) AM_RAM /* some games use $3e03-05 range for protection */
AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x7000, 0x7fff) AM_RAM AM_WRITE(funworld_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x8000, 0xffff) AM_ROM
@ -949,16 +951,6 @@ static ADDRESS_MAP_START( royalmcu_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x6000, 0xffff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( snookr10_map, ADDRESS_SPACE_PROGRAM, 8 ) // RAM 64K (8K x 8),
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1000) AM_READNOP // input port?
AM_RANGE(0x3000, 0x3004) AM_READNOP // input port?
AM_RANGE(0x5000, 0x5001) AM_READNOP // input port?
AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x7000, 0x7fff) AM_RAM AM_WRITE(funworld_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
/*************************
* Input ports *
@ -983,7 +975,7 @@ static INPUT_PORTS_START( funworld )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hoppersch") PORT_CODE(KEYCODE_W)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Abschreib (Payout)") PORT_CODE(KEYCODE_M) // Payout? Need to check with hopper filled.
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Abschreib (Payout)") PORT_CODE(KEYCODE_M)
PORT_START_TAG("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
@ -1012,7 +1004,7 @@ static INPUT_PORTS_START( funworld )
PORT_DIPSETTING( 0x00, "Dattl Insert" )
PORT_DIPSETTING( 0x10, "TAB Insert" )
PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, "With Joker" ) // also enable Five of a Kind.
PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */
PORT_DIPSETTING( 0x20, "Without Joker" )
PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x00, "Auto Hold" )
@ -1045,7 +1037,7 @@ static INPUT_PORTS_START( jolycdcr )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Vratiti Nazad (Payout)") PORT_CODE(KEYCODE_M) // Payout? Need to check with hopper filled.
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Vratiti Nazad (Payout)") PORT_CODE(KEYCODE_M)
PORT_START_TAG("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1074,7 +1066,7 @@ static INPUT_PORTS_START( jolycdcr )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, "With Joker" ) // also enable Five of a Kind.
PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */
PORT_DIPSETTING( 0x20, "Without Joker" )
PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x00, "Auto Hold" )
@ -1135,7 +1127,7 @@ static INPUT_PORTS_START( jolycdit )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, "With Joker" ) // also enable Five of a Kind.
PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */
PORT_DIPSETTING( 0x20, "Without Joker" )
PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x00, "Auto Hold" )
@ -1168,7 +1160,7 @@ static INPUT_PORTS_START( jolyc980 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Vratiti Nazad (Payout)") PORT_CODE(KEYCODE_M) // Payout? Need to check with hopper filled.
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Vratiti Nazad (Payout)") PORT_CODE(KEYCODE_M)
PORT_START_TAG("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1197,7 +1189,7 @@ static INPUT_PORTS_START( jolyc980 )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, "With Joker" ) // also enable Five of a Kind.
PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */
PORT_DIPSETTING( 0x20, "Without Joker" )
PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x00, "Auto Hold" )
@ -1305,7 +1297,7 @@ static INPUT_PORTS_START( magiccrd )
PORT_DIPNAME( 0x01, 0x01, "State" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, "Keyboard Test" )
PORT_DIPSETTING( 0x01, "Play" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7") // remote credits settings are always 10 Points/Pulse.
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7") /* remote credits settings are always 10 points/pulse */
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:6")
@ -1351,7 +1343,7 @@ static INPUT_PORTS_START( royalcrd )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hoppersch") PORT_CODE(KEYCODE_W)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Abschreib (Payout)") PORT_CODE(KEYCODE_M) // Payout? Need to check with hopper filled.
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Abschreib (Payout)") PORT_CODE(KEYCODE_M)
PORT_START_TAG("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
@ -1367,7 +1359,7 @@ static INPUT_PORTS_START( royalcrd )
PORT_DIPNAME( 0x01, 0x01, "State" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, "Keyboard Test" )
PORT_DIPSETTING( 0x01, "Play" )
PORT_DIPNAME( 0x02, 0x00, "Remote" ) PORT_DIPLOCATION("SW1:7") // in some sources is listed as 'Coin-C'
PORT_DIPNAME( 0x02, 0x00, "Remote" ) PORT_DIPLOCATION("SW1:7") /* listed as 'Coin-C' in some sources */
PORT_DIPSETTING( 0x00, "10 Points/Pulse" )
PORT_DIPSETTING( 0x02, "50 Points/Pulse" )
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:6")
@ -1380,7 +1372,7 @@ static INPUT_PORTS_START( royalcrd )
PORT_DIPSETTING( 0x00, "Dattl Insert" )
PORT_DIPSETTING( 0x10, "TAB Insert" )
PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, "With Joker" ) // also enable Five of a Kind.
PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */
PORT_DIPSETTING( 0x20, "Without Joker" )
PORT_DIPNAME( 0x40, 0x00, "Hold" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x00, "Auto Hold" )
@ -1413,7 +1405,7 @@ static INPUT_PORTS_START( cuoreuno )
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_BUTTON7 ) PORT_NAME("Payout") PORT_CODE(KEYCODE_M) // Payout? Need to check with hopper filled.
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Payout") PORT_CODE(KEYCODE_M)
PORT_START_TAG("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
@ -1475,7 +1467,7 @@ static INPUT_PORTS_START( jolyjkra )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Hoppersch") PORT_CODE(KEYCODE_W)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Abschreib (Payout)") PORT_CODE(KEYCODE_M) // Payout? Need to check with hopper filled.
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Abschreib (Payout)") PORT_CODE(KEYCODE_M)
PORT_START_TAG("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
@ -1504,7 +1496,7 @@ static INPUT_PORTS_START( jolyjkra )
PORT_DIPSETTING( 0x00, "disabled" )
PORT_DIPSETTING( 0x10, "enabled" )
PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, "With Joker" ) // also enable Five of a Kind.
PORT_DIPSETTING( 0x00, "With Joker" ) /* also enable Five of a Kind */
PORT_DIPSETTING( 0x20, "Without Joker" )
PORT_DIPNAME( 0x40, 0x40, "Hold" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x00, "Auto Hold" )
@ -1518,9 +1510,6 @@ static INPUT_PORTS_START( jolyjkra )
PORT_DIPSETTING( 0x80, "Manual Payout SW" )
INPUT_PORTS_END
static INPUT_PORTS_START( snookr10 )
INPUT_PORTS_END
/*************************
* Graphics Layouts *
@ -1543,17 +1532,6 @@ static const gfx_layout charlayout =
8*4*2
};
static const gfx_layout sn10_charlayout =
{
4,8,
RGN_FRAC(1,2),
4,
{ RGN_FRAC(0,2), RGN_FRAC(0,2) + 4, RGN_FRAC(1,2), RGN_FRAC(1,2) + 4 },
{ 0, 1, 2, 3 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*4*2
};
/******************************
* Graphics Decode Information *
@ -1563,10 +1541,6 @@ static GFXDECODE_START( funworld )
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 16 )
GFXDECODE_END
static GFXDECODE_START( sn10 )
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, sn10_charlayout, 0, 16 )
GFXDECODE_END
/***********************
* PIA Interfaces *
@ -1603,10 +1577,10 @@ static const pia6821_interface pia1_intf =
static const struct AY8910interface ay8910_intf =
{
0, // portA in
0, // portB in
funworld_lamp_a_w, // portA out
funworld_lamp_b_w // portB out
0, /* portA in */
0, /* portB in */
funworld_lamp_a_w, /* portA out */
funworld_lamp_b_w /* portB out */
};
@ -1615,21 +1589,21 @@ static const struct AY8910interface ay8910_intf =
**************************/
static MACHINE_DRIVER_START( funworld )
// basic machine hardware
MDRV_CPU_ADD_TAG("main", M65SC02, MASTER_CLOCK/8) // 2MHz
/* basic machine hardware */
MDRV_CPU_ADD_TAG("main", M65SC02, MASTER_CLOCK/8) /* 2MHz */
MDRV_CPU_PROGRAM_MAP(funworld_map, 0)
MDRV_CPU_VBLANK_INT("main", nmi_line_pulse)
MDRV_NVRAM_HANDLER(generic_0fill)
// video hardware
/* video hardware */
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE((124+1)*4, (30+1)*8) // Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1).
MDRV_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1) // Taken from MC6845 init, registers 01 & 06.
MDRV_SCREEN_SIZE((124+1)*4, (30+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
MDRV_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1) /* Taken from MC6845 init, registers 01 & 06 */
MDRV_GFXDECODE(funworld)
@ -1642,89 +1616,62 @@ static MACHINE_DRIVER_START( funworld )
MDRV_DEVICE_ADD("crtc", MC6845)
// sound hardware
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD_TAG("ay8910", AY8910, MASTER_CLOCK/8) // 2MHz
MDRV_SOUND_ADD_TAG("ay8910", AY8910, MASTER_CLOCK/8) /* 2MHz */
MDRV_SOUND_CONFIG(ay8910_intf)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 8.0) // analyzed to avoid clips.
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 8.0) /* analyzed to avoid clips */
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( bigdeal )
MDRV_IMPORT_FROM(funworld)
MDRV_SOUND_REPLACE("ay8910", AY8910, MASTER_CLOCK/8) // 2MHz
MDRV_SOUND_REPLACE("ay8910", AY8910, MASTER_CLOCK/8) /* 2MHz */
MDRV_SOUND_CONFIG(ay8910_intf)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 5.0) // analyzed to avoid clips.
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 5.0) /* analyzed to avoid clips */
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( magiccrd )
MDRV_IMPORT_FROM(funworld)
MDRV_CPU_REPLACE("main", M65C02, MASTER_CLOCK/8) // 2MHz
MDRV_CPU_REPLACE("main", M65C02, MASTER_CLOCK/8) /* 2MHz */
MDRV_CPU_PROGRAM_MAP(magiccrd_map, 0)
MDRV_SCREEN_MODIFY("main")
MDRV_SCREEN_SIZE((123+1)*4, (36+1)*8) // Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1).
// MDRV_SCREEN_VISIBLE_AREA(0*4, 112*4-1, 0*8, 34*8-1) // Taken from MC6845 init, registers 01 & 06.
MDRV_SCREEN_VISIBLE_AREA(0*4, 98*4-1, 0*8, 32*8-1) // adjusted to screen for testing purposes.
MDRV_SCREEN_SIZE((123+1)*4, (36+1)*8) /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */
// MDRV_SCREEN_VISIBLE_AREA(0*4, 112*4-1, 0*8, 34*8-1) /* Taken from MC6845 init, registers 01 & 06 */
MDRV_SCREEN_VISIBLE_AREA(0*4, 98*4-1, 0*8, 32*8-1) /* adjusted to screen for testing purposes */
MDRV_GFXDECODE(funworld)
MDRV_VIDEO_START(magiccrd)
MDRV_SOUND_REPLACE("ay8910", AY8910, MASTER_CLOCK/8) // 2MHz
MDRV_SOUND_REPLACE("ay8910", AY8910, MASTER_CLOCK/8) /* 2MHz */
MDRV_SOUND_CONFIG(ay8910_intf)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6) // analyzed to avoid clips.
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6) /* analyzed to avoid clips */
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( royalcrd )
MDRV_IMPORT_FROM(funworld)
MDRV_CPU_REPLACE("main", M65C02, MASTER_CLOCK/8) // original cpu = R65C02P2 (2MHz)
MDRV_CPU_REPLACE("main", M65C02, MASTER_CLOCK/8) /* 2MHz */
MDRV_CPU_PROGRAM_MAP(magiccrd_map, 0)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( cuoreuno )
MDRV_IMPORT_FROM(funworld)
MDRV_CPU_REPLACE("main", M65C02, MASTER_CLOCK/8) // original cpu = R65C02P2 (2MHz)
MDRV_CPU_REPLACE("main", M65C02, MASTER_CLOCK/8) /* 2MHz */
MDRV_CPU_PROGRAM_MAP(cuoreuno_map, 0)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( royalmcu )
MDRV_IMPORT_FROM(funworld)
MDRV_CPU_REPLACE("main", M65SC02, MASTER_CLOCK/8) // original cpu = R65C02P2 (2MHz)
MDRV_CPU_REPLACE("main", M65SC02, MASTER_CLOCK/8) /* 2MHz */
MDRV_CPU_PROGRAM_MAP(royalmcu_map, 0)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( snookr10 )
MDRV_CPU_ADD_TAG("main", M65SC02, MASTER_CLOCK/8) // 2MHz
MDRV_CPU_PROGRAM_MAP(snookr10_map, 0)
MDRV_CPU_VBLANK_INT("main", nmi_line_pulse)
// video hardware
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE((128+1)*4, (30+1)*8)
MDRV_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 30*8-1)
// MDRV_SCREEN_SIZE((124+1)*4, (30+1)*8)
// MDRV_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 29*8-1)
// MDRV_DEVICE_ADD("crtc", MC6845)
MDRV_GFXDECODE(sn10)
// MDRV_DEFAULT_LAYOUT(layout_funworld)
MDRV_PALETTE_LENGTH(0x200)
MDRV_PALETTE_INIT(funworld)
MDRV_VIDEO_START(snookr10)
MDRV_VIDEO_UPDATE(funworld)
MACHINE_DRIVER_END
/*************************
* Rom Load *
@ -1742,14 +1689,14 @@ ROM_START( jollycrd )
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) )
ROM_END
ROM_START( jolycdae ) // encrypted roms...
ROM_START( jolycdae ) /* encrypted roms...*/
ROM_REGION( 0x18000, REGION_CPU1, 0 )
ROM_LOAD( "pokeru0.bin", 0x8000, 0x10000, CRC(7732f177) SHA1(b75fca596a7315d1379fa5bcf07c449ec32c90f5) )
ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "pokeru1.bin", 0x00000, 0x10000, CRC(878d695b) SHA1(0e1ea455e991e591316a340c56b23fa26764988d) )
ROM_LOAD( "pokeru2.bin", 0x10000, 0x10000, CRC(b7b2946a) SHA1(25b15296b32bf88db6d60991105bba667f7940cc) )
ROM_COPY( REGION_GFX1, 0x10000, 0x00000, 0x8000 ) // rgn,srcoffset,offset,length.
ROM_COPY( REGION_GFX1, 0x10000, 0x00000, 0x8000 ) /* rgn, srcoffset, offset, length */
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) )
@ -1818,7 +1765,7 @@ ROM_START( jolyccrb ) /* Jolly Card (croatian, set 2) */
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) )
ROM_END
ROM_START( jolycdit ) // encrypted graphics.
ROM_START( jolycdit ) /* encrypted graphics */
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "jn.bin", 0x8000, 0x8000, CRC(6ae00ed0) SHA1(5921c2882aeb5eadd0e04a477fa505ad35e9d98c) )
@ -1849,7 +1796,7 @@ ROM_START( sjcd2kx3 ) /* Super Joly 2000 3x */
ROM_END
ROM_START( jolycdab )
ROM_REGION( 0x10000, REGION_CPU1, 0 ) // program is testing/writting RAM in offset $8800-$BFFF (ROM)...??
ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* program is testing/writting RAM in offset $8800-$BFFF (ROM)...?? */
ROM_LOAD( "ig1poker.run", 0x8000, 0x8000, CRC(c96e6542) SHA1(ed6c0cf9fe8597dba9149b2225320d8d9c39219a) )
// ROM_RELOAD( 0x4000, 0x4000 )
@ -1869,8 +1816,8 @@ ROM_START( bigdeal )
ROM_LOAD( "poker4.003", 0x0000, 0x8000, CRC(8c33a15f) SHA1(a1c8451c99a23eeffaedb21d1a1b69f54629f8ab) )
ROM_LOAD( "poker4.002", 0x8000, 0x8000, CRC(5f4e12d8) SHA1(014b2364879faaf4922cdb82ee07692389f20c2d) )
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) // jollycrd palette till a dump appear.
ROM_REGION( 0x0200, REGION_PROMS, 0 ) /* using jollycrd palette till a correct dump appear */
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) )
ROM_END
ROM_START( bigdealb )
@ -1881,11 +1828,11 @@ ROM_START( bigdealb )
ROM_LOAD( "poker4.003", 0x0000, 0x8000, CRC(8c33a15f) SHA1(a1c8451c99a23eeffaedb21d1a1b69f54629f8ab) )
ROM_LOAD( "poker4.002", 0x8000, 0x8000, CRC(5f4e12d8) SHA1(014b2364879faaf4922cdb82ee07692389f20c2d) )
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) // jollycrd palette till a dump appear.
ROM_REGION( 0x0200, REGION_PROMS, 0 ) /* using jollycrd palette till a correct dump appear */
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) )
ROM_END
ROM_START( jolycdat ) // there are unused pieces of code that compare or jumps within $4000-$5000 range.
ROM_START( jolycdat ) /* there are unused pieces of code that compare or jumps within $4000-$5000 range */
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "bonucard.cpu", 0x8000, 0x4000, CRC(da342100) SHA1(451fa6074aad19e9efd148c3d18115a20a3d344a) )
ROM_CONTINUE( 0xc000, 0x4000 )
@ -1894,8 +1841,8 @@ ROM_START( jolycdat ) // there are unused pieces of code that compare or jumps w
ROM_LOAD( "jolycard.ch2", 0x0000, 0x8000, CRC(c512b103) SHA1(1f4e78e97855afaf0332fb75e1b5571aafd01c29) )
ROM_LOAD( "jolycard.ch1", 0x8000, 0x8000, CRC(0f24f39d) SHA1(ac1f6a8a4a2a37cbc0d45c15187b33c25371bffb) )
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) ) // jollycrd palette till a dump appear.
ROM_REGION( 0x0200, REGION_PROMS, 0 ) /* using jollycrd palette till a correct dump appear */
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(5ebc5659) SHA1(8d59011a181399682ab6e8ed14f83101e9bfa0c6) )
ROM_END
ROM_START( cuoreuno )
@ -1922,7 +1869,7 @@ ROM_START( elephfam )
ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "eleph_c.u22", 0x00000, 0x10000, CRC(4b909bf3) SHA1(a822b12126bc58af6d3f999ab2117370015a039b) )
ROM_LOAD( "eleph_b.u21", 0x10000, 0x10000, CRC(e3612670) SHA1(beb65f7d2bd6d7bc68cfd876af51910cf6417bd0) )
ROM_COPY( REGION_GFX1, 0x10000, 0x00000, 0x8000 ) // rgn,srcoffset,offset,length.
ROM_COPY( REGION_GFX1, 0x10000, 0x00000, 0x8000 ) /* rgn, srcoffset, offset, length */
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "am27s29_ef.u25", 0x0000, 0x0200, CRC(bca8b82a) SHA1(4aa19f5ecd9953bf8792dceb075a746f77c01cfc) )
@ -1975,7 +1922,7 @@ ROM_START( pool10b )
ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "u20.bin", 0x00000, 0x10000, CRC(3bdf1106) SHA1(fa21cbd49bb27ea4a784cf4e4b3fbd52650a285b) )
ROM_LOAD( "u21.bin", 0x10000, 0x10000, CRC(581c4878) SHA1(5ae61af090feea1745e22f46b33b2c01e6013fbe) )
ROM_COPY( REGION_GFX1, 0x10000, 0x00000, 0x8000 ) // rgn,srcoffset,offset,length.
ROM_COPY( REGION_GFX1, 0x10000, 0x00000, 0x8000 ) /* rgn, srcoffset, offset, length */
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "n82s147an_p10.u25", 0x0000, 0x0200, CRC(1de03d14) SHA1(d8eda20865c1d885a428931f4380032e103b252c) )
@ -2037,15 +1984,15 @@ ROM_START( royalcrd )
ROM_LOAD( "2-peel18cv8.bin", 0x0400, 0x0155, CRC(8fdafd55) SHA1(fbb187ba682111648ea1586f400990cb81a3077a) )
ROM_END
ROM_START( royalcdb ) // both halves have different program. we're using the 2nd one.
ROM_REGION( 0x20000, REGION_CPU1, 0 ) // 1st half prg is testing RAM in offset $8600-$BF00...??
ROM_START( royalcdb ) /* both halves have different programs. we're using the 2nd one */
ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 1st half prg is testing RAM in offset $8600-$BF00...?? */
ROM_LOAD( "rc.bin", 0x10000, 0x10000, CRC(8a9a6dd6) SHA1(04c3f9f17d5404ac1414c51ef8f930df54530e72) )
ROM_COPY( REGION_CPU1, 0x18000, 0x8000, 0x8000 )
ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "1a.bin", 0x0000, 0x10000, CRC(8a66f22c) SHA1(67d6e8f8f5a0fd979dc498ba2cc67cf707ccdf95) )
ROM_LOAD( "2a.bin", 0x10000, 0x10000, CRC(3af71cf8) SHA1(3a0ce0d0abebf386573c5936545dada1d3558e55) )
ROM_COPY( REGION_GFX1, 0x10000, 0x00000, 0x8000 ) // rgn,srcoffset,offset,length.
ROM_COPY( REGION_GFX1, 0x10000, 0x00000, 0x8000 ) /* rgn, srcoffset, offset, length */
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "n82s147.bin", 0x0000, 0x0200, CRC(8bc86f48) SHA1(4c677ab9314a1f571e35104b22659e6811aeb194) )
@ -2054,7 +2001,7 @@ ROM_START( royalcdb ) // both halves have different program. we're using the 2nd
ROM_LOAD( "palce16v8h-4.bin", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */
ROM_END
ROM_START( royalcdc ) // encrypted program rom.
ROM_START( royalcdc ) /* encrypted program rom */
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "rc_1.bin", 0x8000, 0x8000, CRC(8cdcc978) SHA1(489b58760a7c8646399c8cdfb86ec4341823e7dd) )
@ -2066,9 +2013,9 @@ ROM_START( royalcdc ) // encrypted program rom.
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(44dbf086) SHA1(43a2d615c00605db75a4fd4d57d9e056c0356f10) )
ROM_REGION( 0x0600, REGION_PLDS, 0 )
ROM_LOAD( "palce16v8.bin", 0x0000, 0x0117, NO_DUMP ) // not present in the set.
ROM_LOAD( "1-peel18cv8p.bin", 0x0200, 0x0155, NO_DUMP ) // not present in the set.
ROM_LOAD( "2-peel18cv8p.bin", 0x0400, 0x0155, NO_DUMP ) // not present in the set.
ROM_LOAD( "palce16v8.bin", 0x0000, 0x0117, NO_DUMP ) /* not present in the set */
ROM_LOAD( "1-peel18cv8p.bin", 0x0200, 0x0155, NO_DUMP ) /* not present in the set */
ROM_LOAD( "2-peel18cv8p.bin", 0x0400, 0x0155, NO_DUMP ) /* not present in the set */
ROM_END
ROM_START( lluck3x3 )
@ -2097,8 +2044,8 @@ ROM_END
ROM_START( magiccrd ) /* Impera */
ROM_REGION( 0x18000, REGION_CPU1, 0 )
ROM_LOAD( "magicard.004", 0x0000, 0x8000, CRC(f6e948b8) SHA1(7d5983015a508ab135ccbf69b7f3c526c229e3ef) ) // only last 16kbyte visible?
ROM_LOAD( "magicard.01", 0x8000, 0x10000, CRC(c94767d4) SHA1(171ac946bdf2575f9e4a31e534a8e641597af519) ) // 1ST AND 2ND HALF IDENTICAL
ROM_LOAD( "magicard.004", 0x0000, 0x8000, CRC(f6e948b8) SHA1(7d5983015a508ab135ccbf69b7f3c526c229e3ef) ) /* only last 16kbyte visible? */
ROM_LOAD( "magicard.01", 0x8000, 0x10000, CRC(c94767d4) SHA1(171ac946bdf2575f9e4a31e534a8e641597af519) ) /* 1st and 2nd half identical */
ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "mc2gr2.bin", 0x0000, 0x8000, CRC(733da697) SHA1(45122c64d5a371ec91cecc67b7faf179078e714d) )
@ -2209,13 +2156,13 @@ ROM_START( jokercrd )
Seems to be a Big Deal clone.
*/
ROM_REGION( 0x18000, REGION_CPU1, 0 )
ROM_LOAD( "ic41.bin", 0x8000, 0x8000, CRC(d36188b3) SHA1(3fb848fabbbde9fbb70875b3dfef62bfb3a8cbcb) ) // only last 16kbyte visible?
ROM_LOAD( "ic37.bin", 0x10000, 0x8000, CRC(8e0d70c4) SHA1(018f92631acbe98e5826a41698f0e07b4b46cd71) ) // 1ST AND 2ND HALF IDENTICAL
ROM_COPY( REGION_CPU1, 0x10000, 0xc000, 0x4000 ) // rgn,srcoffset,offset,length.
ROM_LOAD( "ic41.bin", 0x8000, 0x8000, CRC(d36188b3) SHA1(3fb848fabbbde9fbb70875b3dfef62bfb3a8cbcb) ) /* only last 16kbyte visible? */
ROM_LOAD( "ic37.bin", 0x10000, 0x8000, CRC(8e0d70c4) SHA1(018f92631acbe98e5826a41698f0e07b4b46cd71) ) /* 1st and 2nd half identical */
ROM_COPY( REGION_CPU1, 0x10000, 0xc000, 0x4000 ) /* rgn, srcoffset, offset, length */
ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "ic10.bin", 0x0000, 0x8000, CRC(2bbd27ad) SHA1(37d37899398d95beac5f3cbffc4277c97aca1a23) )
ROM_LOAD( "ic11.bin", 0x8000, 0x8000, CRC(21d05a57) SHA1(156c18ec31b08e4c4af6f73b49cb5d5c68d1670f) ) // bad dump?, or sprite plane
ROM_LOAD( "ic11.bin", 0x8000, 0x8000, CRC(21d05a57) SHA1(156c18ec31b08e4c4af6f73b49cb5d5c68d1670f) ) /* bad dump?, or sprite plane */
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "ic13.bin", 0x0000, 0x0200, CRC(e59fc06e) SHA1(88a3bb89f020fe2b20f768ca010a082e0b974831) )
@ -2232,7 +2179,7 @@ ROM_START( mongolnw )
ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "mong.rc.b2.u3", 0x00000, 0x10000, CRC(5e019b73) SHA1(63a544dccb9589e5a6b938e604c09d4d8fc060fc) )
ROM_LOAD( "mong.rc.c1.u2", 0x10000, 0x10000, CRC(e3fc24c4) SHA1(ea4e67ace63b55a76365f7e11a67c7d420a52dd7) )
ROM_COPY( REGION_GFX1, 0x10000, 0x8000, 0x8000 ) // rgn,srcoffset,offset,length.
ROM_COPY( REGION_GFX1, 0x10000, 0x8000, 0x8000 ) /* rgn, srcoffset, offset, length */
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "am27s29pc_mf.u24", 0x0000, 0x0200, CRC(da9181af) SHA1(1b30d992f3b2a4b3bd81e3f99632311988e2e8d1) )
@ -2252,7 +2199,7 @@ ROM_START( soccernw )
ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "soccer2.u3", 0x00000, 0x10000, CRC(db09b5bb) SHA1(a12bf2938f5482ea5ebc0db6fd6594e1beb97017) )
ROM_LOAD( "soccer1.u2", 0x10000, 0x10000, CRC(564cc467) SHA1(8f90c4bacd97484623666b25dae77e628908e243) )
ROM_COPY( REGION_GFX1, 0x10000, 0x8000, 0x8000 ) // rgn,srcoffset,offset,length.
ROM_COPY( REGION_GFX1, 0x10000, 0x8000, 0x8000 ) /* rgn, srcoffset, offset, length */
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "am27s29pc_sn.u24", 0x0000, 0x0200, CRC(d02894fc) SHA1(adcdc912cc0b7a7f67b122fa94fca921c957b282) )
@ -2261,24 +2208,6 @@ ROM_START( soccernw )
ROM_LOAD( "palce16v8h_sn.u5", 0x0000, 0x0117, NO_DUMP ) /* PAL is read protected */
ROM_END
ROM_START( snookr10 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "1.u2", 0x8000, 0x8000, CRC(216ccb2d) SHA1(d86270cd03a08f6fd3e7b327b8173f66da28e5e8) )
/* the first 256 bytes looks as a color palette.
unknown code starting at 0x0400 */
ROM_REGION( 0x40000, REGION_CPU2, 0 )
ROM_LOAD( "4.u18", 0x00000, 0x40000 , CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) )
ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "2.u22", 0x0000, 0x8000, CRC(a70d9c48) SHA1(3fa90190323526553866662afda4dbe1c94abeff) )
ROM_LOAD( "3.u25", 0x8000, 0x8000, CRC(3009faaa) SHA1(d1cda455b270cb9afa65b9701735a3a1f2a48df2) )
/* This should be changed because the palette is stored in a normal ROM instead of a color PROM */
ROM_REGION( 0x8000, REGION_PROMS, 0 )
ROM_LOAD( "5.u27", 0x0000, 0x8000, CRC(f3d7d640) SHA1(f78060f4603e316fa3c2ec4ba6d7edf261cf6d8a) )
ROM_END
ROM_START( saloon )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "1s.bin", 0x8000, 0x8000, CRC(66938330) SHA1(09118d607eff7121472db7d2cc24079e063dc7cf) )
@ -2333,8 +2262,8 @@ static DRIVER_INIT( tabblue )
for (x=0x0000;x<0x10000;x++)
{
na = src[x] & 0xf0; // nibble a
nb = src[x] & 0x0f; // nibble b
na = src[x] & 0xf0; /* nibble a */
nb = src[x] & 0x0f; /* nibble b */
switch (na)
{
@ -2374,7 +2303,7 @@ static DRIVER_INIT( tabblue )
default: nbd = nb; break;
}
src[x] = nad + nbd; // decrypted value.
src[x] = nad + nbd; /* decrypted value */
}
/* Initializing PIAs... */
@ -2384,7 +2313,7 @@ static DRIVER_INIT( tabblue )
static DRIVER_INIT( jolycdae )
{
/* decrypting roms... */
/* Decrypting roms... */
int x;
UINT8 *srcp = memory_region( REGION_CPU1 );
@ -2392,12 +2321,12 @@ static DRIVER_INIT( jolycdae )
for (x=0x8000;x<0x18000;x++)
{
srcp[x] = srcp[x] ^ 0x56; // simple XOR with 0x56
srcp[x] = srcp[x] ^ 0x56; /* simple XOR with 0x56 */
}
for (x=0x0000;x<0x20000;x++)
{
srcg[x] = srcg[x] ^ 0x56; // simple XOR with 0x56
srcg[x] = srcg[x] ^ 0x56; /* simple XOR with 0x56 */
}
/* Initializing PIAs... */
@ -2420,11 +2349,95 @@ static DRIVER_INIT( jolyc980 )
*************************************************************************************************/
// UINT8 *ROM = memory_region(REGION_CPU1);
// ROM[0xc1fc] = 0x4c;
// ROM[0xc1fd] = 0x1c;
// ROM[0xc1fe] = 0x80;
/* Initializing PIAs... */
pia_config(0, &pia0_intf);
pia_config(1, &pia1_intf);
}
static DRIVER_INIT( magiccda )
/*****************************************************************
For a serie of Mexican Rockwell's 65c02
seems that opcode 0x91 is STA ($zp) instead of STA ($zp),y
...or is patched with the correct opcode (0x92) by PLDs...
In offset $C1C4, the code is trying to initialize both PIAs
putting value 0x34 in $0800-$0803 & $0A00-$0A03.
The code use STA ($zp),y (opcode 0x91). As soon as register 'y'
increments, almost all writes goes out of range.
******************************************************************/
{
UINT8 *ROM = memory_region(REGION_CPU1);
ROM[0xc1fc] = 0x4c;
ROM[0xc1fd] = 0x1c;
ROM[0xc1fe] = 0x80;
ROM[0xc1c6] = 0x92;
/* Initializing PIAs... */
pia_config(0, &pia0_intf);
pia_config(1, &pia1_intf);
}
static DRIVER_INIT( magiccdb )
/*** same as blue TAB pcb, with the magiccda patch ***/
{
int x, na, nb, nad, nbd;
UINT8 *src = memory_region( REGION_GFX1 );
UINT8 *ROM = memory_region( REGION_CPU1 );
for (x=0x0000;x<0x10000;x++)
{
na = src[x] & 0xf0; /* nibble a */
nb = src[x] & 0x0f; /* nibble b */
switch (na)
{
case 0x10: nad = 0x30; break;
case 0x20: nad = 0x60; break;
case 0x30: nad = 0x50; break;
case 0x40: nad = 0xc0; break;
case 0x50: nad = 0xf0; break;
case 0x60: nad = 0xa0; break;
case 0x70: nad = 0x90; break;
case 0x90: nad = 0xb0; break;
case 0xa0: nad = 0xe0; break;
case 0xb0: nad = 0xd0; break;
case 0xc0: nad = 0x40; break;
case 0xd0: nad = 0x70; break;
case 0xe0: nad = 0x20; break;
case 0xf0: nad = 0x10; break;
default: nad = na; break;
}
switch (nb)
{
case 0x01: nbd = 0x03; break;
case 0x02: nbd = 0x06; break;
case 0x03: nbd = 0x05; break;
case 0x04: nbd = 0x0c; break;
case 0x05: nbd = 0x0f; break;
case 0x06: nbd = 0x0a; break;
case 0x07: nbd = 0x09; break;
case 0x09: nbd = 0x0b; break;
case 0x0a: nbd = 0x0e; break;
case 0x0b: nbd = 0x0d; break;
case 0x0c: nbd = 0x04; break;
case 0x0d: nbd = 0x07; break;
case 0x0e: nbd = 0x02; break;
case 0x0f: nbd = 0x01; break;
default: nbd = nb; break;
}
src[x] = nad + nbd; /* decrypted value */
}
ROM[0xc1c6] = 0x92;
/* Initializing PIAs... */
pia_config(0, &pia0_intf);
@ -2483,8 +2496,8 @@ GAME( 1991, royalcdc, royalcrd, royalcrd, royalcrd, funworld, ROT0, "Evona Elect
GAME( 1991, lluck3x3, royalcrd, cuoreuno, royalcrd, funworld, ROT0, "TAB-Austria", "Lucky Lady (3x3 deal)", 0 )
GAME( 1991, lluck4x1, royalcrd, royalcrd, royalcrd, funworld, ROT0, "TAB-Austria", "Lucky Lady (4x1 aces)", 0 )
GAME( 1996, magiccrd, 0, magiccrd, magiccrd, funworld, ROT0, "Impera", "Magic Card II (bulgarian)", GAME_IMPERFECT_SOUND )
GAME( 1996, magiccda, magiccrd, magiccrd, magiccrd, funworld, ROT0, "Impera", "Magic Card II (green TAB or Impera board)", GAME_NOT_WORKING )
GAME( 1996, magiccdb, magiccrd, magiccrd, magiccrd, tabblue, ROT0, "Impera", "Magic Card II (blue TAB board, encrypted)", GAME_NOT_WORKING )
GAME( 1996, magiccda, magiccrd, magiccrd, magiccrd, magiccda, ROT0, "Impera", "Magic Card II (green TAB or Impera board)", GAME_NOT_WORKING )
GAME( 1996, magiccdb, magiccrd, magiccrd, magiccrd, magiccdb, ROT0, "Impera", "Magic Card II (blue TAB board, encrypted)", GAME_NOT_WORKING )
GAME( 1993, vegasslw, 0, funworld, funworld, funworld, ROT0, "Funworld", "Royal Vegas Joker Card (slow deal)", 0 )
GAME( 1993, vegasfst, vegasslw, funworld, funworld, funworld, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal)", 0 )
GAME( 1993, vegasfte, vegasslw, funworld, funworld, funworld, ROT0, "Soft Design", "Royal Vegas Joker Card (fast deal, english gfx)", 0 )
@ -2493,5 +2506,4 @@ GAME( 198?, jolyjkra, jolyjokr, funworld, jolyjkra, funworld, ROT0, "Impera",
GAME( 1993, jokercrd, 0, funworld, funworld, funworld, ROT0, "Vesely Svet", "Joker Card (Ver.A267BC, encrypted)", GAME_WRONG_COLORS | GAME_NOT_WORKING )
GAME( 199?, mongolnw, 0, royalmcu, royalcrd, funworld, ROT0, "bootleg", "Mongolfier New (italian)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 199?, soccernw, 0, royalcrd, royalcrd, soccernw, ROT0, "bootleg", "Soccer New (italian)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1998, snookr10, 0, snookr10, snookr10, 0, ROT0, "Sandii'", "Snooker 10 (Ver 1.11)", GAME_NO_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 198?, saloon, 0, funworld, funworld, funworld, ROT0, "Unknown", "Saloon (french, encrypted)", GAME_NO_SOUND | GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )

285
src/mame/drivers/snookr10.c Normal file
View File

@ -0,0 +1,285 @@
/**********************************************************************************
SNOOKER 10 / SANDII'
Driver 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.
***********************************************************************************
The hardware is generally composed by:
CPU: 1x 65SC02 at 2MHz.
Sound: 1x OKI6295
1x LM358N
1x TDA2003
HD-PLD: 2x AMD MACH231-15-JC/1-18JI/1
(2x Lattice ispLSI1024-60LJ for earlier revisions)
RAM: 1x 76C88AL-15, SRAM 8Kx8
NVRAM: 1x 76C88AL-15, SRAM 8Kx8 (battery backed)
ROMs: 4x 27C256
(3x 27C256 for earlier revisions)
1x 27C020
PROMs: 1x 82S147 or similar. (512 bytes)
Clock: 1x Crystal: 16MHz.
Other: 1x 28x2 edge connector.
1x 15 legs connector.
1x trimmer (volume).
1x 8 DIP switches.
1x 3.5 Volt, 55-80 mAh battery.
***************************************************************************************
All the supported games have been coded using some Funworld games as point to start,
changing hardware accesses, program logics, graphics, plus protection and some I/O
through the 2x high density PLDs.
Color palettes are normally stored in format RRRBBBGG inside a bipolar color PROM
(old hardware), or repeated 64 times inside a regular 27c256 ROM (new hardware).
- bits -
7654 3210
---- -xxx Red component.
--xx x--- Blue component.
xx-- ---- Green component.
Same as Funworld video hardware, this one was designed to manage 4096 tiles with a
size of 8x4 pixels each. Also support 4bpp graphics and the palette limitation is
8 bits for color codes (256 x 16 colors). It means the hardware was designed for more
elaborated graphics than these games...
Color PROMs from current games are 512 bytes lenght, but they only use the first 256 bytes.
Normal hardware capabilities:
- bits -
7654 3210
xxxx xx-- tiles color (game tiles) ;codes 0x00-0xdc
xxx- x-xx tiles color (title). :codes 0xe9-0xeb
xxxx -xxx tiles color (background). ;codes 0xf1-0xf7
--- Issues / Protection ---
* Apple 10
- Tiles and color palette are totally scrambled.
***********************************************************************************
Memory Map
----------
$0000 - $0FFF NVRAM ;All registers and settings.
$1000 - $1000 ??? ;R/W
$3000 - $3004 Input Ports ;Reads
$5000 - $5001 ??? ;Writes
$6000 - $6FFF VideoRAM
$7000 - $7FFF ColorRAM
$8000 - $FFFF ROM Space
***********************************************************************************
*** Driver Updates ***
[2008/04/18]
- Initial release. Support for snookr10, apple10 and tenballs.
- Added technical/general notes.
*** TO DO ***
- Inputs.
- Figure out the high-density PLDs, or get a dump of them.
- Figure out the sound.
***********************************************************************************/
#define MASTER_CLOCK XTAL_16MHz
#include "driver.h"
/* from video */
WRITE8_HANDLER( snookr10_videoram_w );
WRITE8_HANDLER( snookr10_colorram_w );
PALETTE_INIT( snookr10 );
VIDEO_START( snookr10 );
VIDEO_UPDATE( snookr10 );
/*************************
* Memory map information *
*************************/
static ADDRESS_MAP_START( snookr10_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
// AM_RANGE(0x1000, 0x1000) AM_READNOP /* R/W */
// AM_RANGE(0x3000, 0x3004) AM_READNOP /* reads (input port) */
// AM_RANGE(0x5000, 0x5001) AM_READNOP /* writes */
AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(snookr10_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x7000, 0x7fff) AM_RAM AM_WRITE(snookr10_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
/*************************
* Input ports *
*************************/
static INPUT_PORTS_START( snookr10 )
INPUT_PORTS_END
/*************************
* Graphics Layouts *
*************************/
static const gfx_layout charlayout =
{
4,8,
RGN_FRAC(1,2),
4,
{ RGN_FRAC(0,2), RGN_FRAC(0,2) + 4, RGN_FRAC(1,2), RGN_FRAC(1,2) + 4 },
{ 0, 1, 2, 3 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*4*2
};
/******************************
* Graphics Decode Information *
******************************/
static GFXDECODE_START( snookr10 )
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 16 )
GFXDECODE_END
/**************************
* Machine Drivers *
**************************/
static MACHINE_DRIVER_START( snookr10 )
/* basic machine hardware */
MDRV_CPU_ADD_TAG("main", M65SC02, MASTER_CLOCK/8) /* 2MHz */
MDRV_CPU_PROGRAM_MAP(snookr10_map, 0)
MDRV_CPU_VBLANK_INT("main", nmi_line_pulse)
MDRV_NVRAM_HANDLER(generic_0fill)
/* video hardware */
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE((128+1)*4, (30+1)*8)
MDRV_SCREEN_VISIBLE_AREA(0*4, 96*4-1, 0*8, 30*8-1)
MDRV_GFXDECODE(snookr10)
MDRV_PALETTE_LENGTH(0x200)
MDRV_PALETTE_INIT(snookr10)
MDRV_VIDEO_START(snookr10)
MDRV_VIDEO_UPDATE(snookr10)
MACHINE_DRIVER_END
/*************************
* Rom Load *
*************************/
ROM_START( snookr10 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "1.u2", 0x8000, 0x8000, CRC(216ccb2d) SHA1(d86270cd03a08f6fd3e7b327b8173f66da28e5e8) )
/* the first 256 bytes looks as a samples table */
ROM_REGION( 0x40000, REGION_CPU2, 0 )
ROM_LOAD( "4.u18", 0x00000, 0x40000 , CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) )
ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "2.u22", 0x0000, 0x8000, CRC(a70d9c48) SHA1(3fa90190323526553866662afda4dbe1c94abeff) )
ROM_LOAD( "3.u25", 0x8000, 0x8000, CRC(3009faaa) SHA1(d1cda455b270cb9afa65b9701735a3a1f2a48df2) )
/* this should be changed because the palette is stored in a normal ROM instead of a color PROM */
ROM_REGION( 0x8000, REGION_PROMS, 0 )
ROM_LOAD( "5.u27", 0x0000, 0x8000, CRC(f3d7d640) SHA1(f78060f4603e316fa3c2ec4ba6d7edf261cf6d8a) )
ROM_END
ROM_START( apple10 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "1.u2", 0x8000, 0x8000, CRC(7d538566) SHA1(2e805157010c366ab1f2313a2bedb071c1dde733) )
/* the first 256 bytes looks as a samples table */
ROM_REGION( 0x40000, REGION_CPU2, 0 )
ROM_LOAD( "4.u18", 0x00000, 0x40000 , CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) )
ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "2.u22", 0x0000, 0x8000, CRC(42b016f4) SHA1(59d1b77f8cb706a3878813111c6a71514c413784) )
ROM_LOAD( "3.u25", 0x8000, 0x8000, CRC(afc535dc) SHA1(ed2d65f3154c6d80b7b22bfef1f30232e4496128) )
/* this should be changed because the palette is stored in a normal ROM instead of a color PROM */
ROM_REGION( 0x8000, REGION_PROMS, 0 )
ROM_LOAD( "5.u27", 0x0000, 0x8000, CRC(3510d705) SHA1(2190c8199d29bf89e3007eb771cc6b0e2b58f6cd) )
ROM_END
ROM_START( tenballs )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "4.u2", 0x8000, 0x8000, CRC(2f334862) SHA1(61d57995451b6bc7de23900c460c3e073993899c) )
/* the first 256 bytes looks as a samples table */
ROM_REGION( 0x40000, REGION_CPU2, 0 )
ROM_LOAD( "1.u28", 0x00000, 0x40000 , CRC(17090d56) SHA1(3a4c247f96c80f8cf4c1389b273880c5ea6fc39d) )
ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "3.u16", 0x0000, 0x8000, CRC(9eb88a08) SHA1(ab52924103e2b14c598a21c3d77b053da37a0212) )
ROM_LOAD( "2.u15", 0x8000, 0x8000, CRC(a5091583) SHA1(c0775d9b77cb634d3702b6c08cdf73c867b6169a) )
ROM_REGION( 0x0200, REGION_PROMS, 0 )
ROM_LOAD( "82s147.u17", 0x0000, 0x0200, CRC(20234dcc) SHA1(197937bbec0201888467e250bdba49e39aa4204a) )
ROM_END
/*************************
* Game Drivers *
*************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
GAME( 1998, snookr10, 0, snookr10, snookr10, 0, ROT0, "Sandii'", "Snooker 10 (Ver 1.11)", GAME_NO_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
GAME( 1998, apple10, 0, snookr10, snookr10, 0, ROT0, "Sandii'", "Apple 10 (Ver 1.21)", GAME_NO_SOUND | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_NOT_WORKING )
GAME( 1997, tenballs, 0, snookr10, snookr10, 0, ROT0, "unknown", "Ten Balls (Ver 1.05)", GAME_NO_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )

View File

@ -1603,6 +1603,7 @@ $(MAMEOBJ)/misc.a: \
$(DRIVERS)/skylncr.o \
$(DRIVERS)/sliver.o \
$(DRIVERS)/smstrv.o \
$(DRIVERS)/snookr10.o $(VIDEO)/snookr10.o \
$(DRIVERS)/sprcros2.o $(VIDEO)/sprcros2.o \
$(DRIVERS)/ssfindo.o \
$(DRIVERS)/ssingles.o \

View File

@ -7868,9 +7868,13 @@ Other Sun games
DRIVER( jokercrd ) /* (c) 1993 Vesely Svet */
DRIVER( mongolnw ) /* 199? bootleg */
DRIVER( soccernw ) /* 199? bootleg */
DRIVER( snookr10 ) /* (c) 1998 Sandiy */
DRIVER( saloon ) /* 199? unknown */
/* Sandii' */
DRIVER( snookr10 ) /* (c) 1998 Sandii' */
DRIVER( apple10 ) /* (c) 1998 Sandii' */
DRIVER( tenballs ) /* 1997 unknown */
DRIVER( vroulet ) /* (c) 1989 World Game */
DRIVER( rcasino ) /* (c) 1984 Dyna Electronics */
DRIVER( cmv801 ) /* (c) 198? Corsica */

View File

@ -46,7 +46,6 @@
* Joker Card (Ver.A267BC, encrypted), Vesely Svet, 1993.
* Mongolfier New (italian), bootleg, 199?.
* Soccer New (italian), bootleg, 199?.
* Snooker 10 (Ver 1.11), Sandii', 1998.
* Saloon (french, encrypted), unknown, 199?.
@ -157,11 +156,6 @@ VIDEO_START(magiccrd)
bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_rows, 4, 8, 112, 34);
}
VIDEO_START(snookr10)
{
bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_rows, 4, 8, 128, 32);
}
VIDEO_UPDATE(funworld)
{
tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);

99
src/mame/video/snookr10.c Normal file
View File

@ -0,0 +1,99 @@
/**********************************************************************************
SNOOKER 10 / SANDII'
Driver 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.
**********************************************************************************/
#include "driver.h"
#include "video/resnet.h"
static tilemap *bg_tilemap;
PALETTE_INIT( snookr10 )
{
int i;
/* RRRBBBGG */
if (color_prom == 0) return;
for (i = 0;i < machine->config->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 = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* blue component */
bit0 = (color_prom[i] >> 3) & 0x01;
bit1 = (color_prom[i] >> 4) & 0x01;
bit2 = (color_prom[i] >> 5) & 0x01;
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
/* green component */
bit0 = 0;
bit1 = (color_prom[i] >> 6) & 0x01;
bit2 = (color_prom[i] >> 7) & 0x01;
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
palette_set_color(machine,i,MAKE_RGB(r,g,b));
}
}
WRITE8_HANDLER( snookr10_videoram_w )
{
videoram[offset] = data;
tilemap_mark_tile_dirty(bg_tilemap, offset);
}
WRITE8_HANDLER( snookr10_colorram_w )
{
colorram[offset] = data;
tilemap_mark_tile_dirty(bg_tilemap, offset);
}
/**** normal hardware limit ****
- bits -
7654 3210
xxxx xx-- tiles color.
xxx- x-xx tiles color (title).
xxxx -xxx tiles color (background).
*/
static TILE_GET_INFO( get_bg_tile_info )
{
/* - bits -
7654 3210
xxxx ---- tiles color.
---- xxxx unused.
*/
int offs = tile_index;
int attr = videoram[offs] + (colorram[offs] << 8);
int code = attr & 0xfff;
int color = colorram[offs] >> 4; /* 4 bits for color */
SET_TILE_INFO(0, code, color, 0);
}
VIDEO_START( snookr10 )
{
bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_rows, 4, 8, 128, 32);
}
VIDEO_UPDATE( snookr10 )
{
tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
return 0;
}