- Added proper inputs to jolyc980.

- Added temporary patch to allow bypass the "code" screen in jolyc980.
 - Updated technical notes.
This commit is contained in:
Roberto Fresca 2008-03-15 15:30:03 +00:00
parent c66bb0adc5
commit caf9dbdef3

View File

@ -184,6 +184,11 @@
get the input codes necessary to allow boot the game. 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) - Magic Card II (Impera)
Impera made 2 graphics sets for this game. One of them is encrypted, and meant for the TAB blue board. 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. - Added minor corrections.
- Updated technical notes. - 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 *** *** TO DO ***
- Figure out the royalcdc, jokercrd and saloon encryption. - Figure out the royalcdc, jokercrd and saloon encryption.
- Fix the imperfect sound in Magic Card II. - 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. - Analyze the unknown writes to $2000/$4000 in some games.
- Check for the reads to the ay8910 output ports in some games. - Check for the reads to the ay8910 output ports in some games.
- Figure out the MCU in monglfir and soccernw. - Figure out the MCU in monglfir and soccernw.
@ -1133,6 +1143,64 @@ static INPUT_PORTS_START( jolycdit )
PORT_DIPSETTING( 0x80, "Manual Payout SW" ) PORT_DIPSETTING( 0x80, "Manual Payout SW" )
INPUT_PORTS_END 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 ) static INPUT_PORTS_START( bigdeal )
PORT_START_TAG("IN0") PORT_START_TAG("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Remote") PORT_CODE(KEYCODE_Q) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Remote") PORT_CODE(KEYCODE_Q)
@ -2202,8 +2270,6 @@ ROM_START( saloon )
ROM_END ROM_END
/************************** /**************************
* Driver Initialization * * Driver Initialization *
**************************/ **************************/
@ -2217,7 +2283,8 @@ static DRIVER_INIT( funworld )
static DRIVER_INIT( tabblue ) static DRIVER_INIT( tabblue )
{ {
/* +----------------------------------------------------------------------+ /*****************************************************************************
+----------------------------------------------------------------------+
| For TAB blue colored PCB with 2 HY18CV85 (electrically-erasable PLD) | | For TAB blue colored PCB with 2 HY18CV85 (electrically-erasable PLD) |
+----------------------------------------------------------------------+ +----------------------------------------------------------------------+
@ -2235,7 +2302,8 @@ static DRIVER_INIT( tabblue )
to get the same result. to get the same result.
Since the table is very short, we will substitute each nibble. Since the table is very short, we will substitute each nibble.
*/
*****************************************************************************/
int x, na, nb, nad, nbd; int x, na, nb, nad, nbd;
UINT8 *src = memory_region( REGION_GFX1 ); UINT8 *src = memory_region( REGION_GFX1 );
@ -2314,6 +2382,32 @@ static DRIVER_INIT( jolycdae )
pia_config(1, &pia1_intf); 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 ) static DRIVER_INIT( soccernw )
{ {
/* temporary patch to avoid hardware errors for debug purposes */ /* 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, 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, 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( 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( 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( 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 ) GAME( 1993, jolyccrb, jollycrd, cuoreuno, jolycdcr, funworld, ROT0, "Soft Design", "Jolly Card (croatian, set 2)", 0 )