mirror of
https://github.com/holub/mame
synced 2025-07-01 00:09:18 +03:00
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:
parent
e91eb4007c
commit
baad7a6f45
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -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
|
||||
|
@ -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
285
src/mame/drivers/snookr10.c
Normal 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 )
|
@ -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 \
|
||||
|
@ -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 */
|
||||
|
@ -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
99
src/mame/video/snookr10.c
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user