diff options
author | Roberto Fresca <robertof@mamedev.org> | 2008-03-15 15:30:03 +0000 |
---|---|---|
committer | Roberto Fresca <robertof@mamedev.org> | 2008-03-15 15:30:03 +0000 |
commit | caf9dbdef3bcaa96a57fcdedf8581df4057c6262 (patch) | |
tree | 33154ed093f7c8a113070930b1c2274de68b0d87 /src/mame/drivers/funworld.c | |
parent | c66bb0adc5299d017d26100dadc61627621337dd (diff) |
- Added proper inputs to jolyc980.
- Added temporary patch to allow bypass the "code" screen in jolyc980.
- Updated technical notes.
Diffstat (limited to 'src/mame/drivers/funworld.c')
-rw-r--r-- | src/mame/drivers/funworld.c | 106 |
1 files changed, 100 insertions, 6 deletions
diff --git a/src/mame/drivers/funworld.c b/src/mame/drivers/funworld.c index b3d57491457..60eb0f87542 100644 --- a/src/mame/drivers/funworld.c +++ b/src/mame/drivers/funworld.c @@ -184,6 +184,11 @@ get the input codes necessary to allow boot the game. + - 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) Impera made 2 graphics sets for this game. One of them is encrypted, and meant for the TAB blue board. @@ -813,12 +818,17 @@ - Added minor corrections. - Updated technical notes. + 2008/03/14 + - Added proper inputs to jolyc980. + - Added temporary patch to allow bypass the "code" screen in jolyc980. + - Updated technical notes. + *** TO DO *** - Figure out the royalcdc, jokercrd and saloon encryption. - Fix the imperfect sound in Magic Card II. - - Reverse-engineering the boot code of Jolly Card Professional 2.0 to get the proper input codes to boot. + - Reverse-engineering the boot code of Jolly Card Professional 2.0 to get the proper codes to boot. - Analyze the unknown writes to $2000/$4000 in some games. - Check for the reads to the ay8910 output ports in some games. - Figure out the MCU in monglfir and soccernw. @@ -1133,6 +1143,64 @@ static INPUT_PORTS_START( jolycdit ) PORT_DIPSETTING( 0x80, "Manual Payout SW" ) INPUT_PORTS_END +static INPUT_PORTS_START( jolyc980 ) + PORT_START_TAG("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Navijanje (Remote)") PORT_CODE(KEYCODE_Q) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Stop (Hold) 1") PORT_CODE(KEYCODE_Z) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Ponistavange (Cancel) / Kasiranje (Take) / Autohold") PORT_CODE(KEYCODE_N) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Djelenje (Start) / Gamble (Play)") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Stop (Hold) 5 / Ulog (Bet) / Half Gamble") PORT_CODE(KEYCODE_B) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Konobar (Service1)") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Namjestit (Service2)") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Stop (Hold) 4 / Veca (High)") PORT_CODE(KEYCODE_V) + + PORT_START_TAG("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Stop (Hold) 2 / Manja (Low)") PORT_CODE(KEYCODE_X) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Stop (Hold) 3") PORT_CODE(KEYCODE_C) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + 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_START_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("DSW") + PORT_DIPNAME( 0x01, 0x01, "State" ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x01, "Play" ) + PORT_DIPSETTING( 0x00, "Keyboard Test" ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7") + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6") + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5") + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4") + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x00, "Joker" ) PORT_DIPLOCATION("SW1:3") + 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" ) + PORT_DIPSETTING( 0x40, "No Auto Hold" ) + PORT_DIPNAME( 0x80, 0x80, "Payout" ) PORT_DIPLOCATION("SW1:1") + PORT_DIPSETTING( 0x00, "Hopper" ) + PORT_DIPSETTING( 0x80, "Manual Payout SW" ) +INPUT_PORTS_END + static INPUT_PORTS_START( bigdeal ) PORT_START_TAG("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Remote") PORT_CODE(KEYCODE_Q) @@ -2202,8 +2270,6 @@ ROM_START( saloon ) ROM_END - - /************************** * Driver Initialization * **************************/ @@ -2217,7 +2283,8 @@ static DRIVER_INIT( funworld ) static DRIVER_INIT( tabblue ) { -/* +----------------------------------------------------------------------+ +/***************************************************************************** + +----------------------------------------------------------------------+ | For TAB blue colored PCB with 2 HY18CV85 (electrically-erasable PLD) | +----------------------------------------------------------------------+ @@ -2235,7 +2302,8 @@ static DRIVER_INIT( tabblue ) to get the same result. Since the table is very short, we will substitute each nibble. -*/ + +*****************************************************************************/ int x, na, nb, nad, nbd; UINT8 *src = memory_region( REGION_GFX1 ); @@ -2314,6 +2382,32 @@ static DRIVER_INIT( jolycdae ) pia_config(1, &pia1_intf); } +static DRIVER_INIT( jolyc980 ) +{ +/************************************************************************************************ + + The game need the vector $07F0/$07F1 pointing to $801C to proper boot. + + Vector $07F0/$07F1 is copied to $0006/$0007 (multipurpose) + and then accessed through indirect JMP ($0006). + + This is a temporary patch to allow boot the game since vector $07F0/$07F1 is normally empty, + pointing to $0000 and therefore jumping to $C210 constantly where starts producing unexpected + things, like stack overflow. + +*************************************************************************************************/ + + 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( soccernw ) { /* temporary patch to avoid hardware errors for debug purposes */ @@ -2343,7 +2437,7 @@ static DRIVER_INIT( soccernw ) GAME( 1985, jollycrd, 0, funworld, funworld, funworld, ROT0, "TAB-Austria", "Jolly Card (austrian)", 0 ) GAME( 1985, jolycdae, jollycrd, funworld, funworld, jolycdae, ROT0, "TAB-Austria", "Jolly Card (austrian, encrypted)", 0 ) GAME( 1985, jolyc3x3, jollycrd, funworld, funworld, funworld, ROT0, "TAB-Austria", "Jolly Card (3x3 deal)", 0 ) -GAME( 2000, jolyc980, jollycrd, cuoreuno, funworld, funworld, ROT0, "Spale-Soft", "Jolly Card Professional 2.0", 0 ) +GAME( 2000, jolyc980, jollycrd, cuoreuno, jolyc980, jolyc980, ROT0, "Spale-Soft", "Jolly Card Professional 2.0", 0 ) GAME( 1998, jolycdev, jollycrd, funworld, funworld, funworld, ROT0, "TAB/Evona", "Jolly Card (Evona Electronic)", 0 ) GAME( 1985, jolyccra, jollycrd, cuoreuno, jolycdcr, funworld, ROT0, "TAB-Austria", "Jolly Card (croatian, set 1)", 0 ) GAME( 1993, jolyccrb, jollycrd, cuoreuno, jolycdcr, funworld, ROT0, "Soft Design", "Jolly Card (croatian, set 2)", 0 ) |