From 9dcc870967a6a4667d2b6349ab5551aa86a1f0dd Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 20 Jun 2023 18:00:28 +0200 Subject: misc/chsuper.cpp: descrambled GFX for lstislnd. Renamed to losttrea since ot shows a Lost Treasure title. --- src/mame/mame.lst | 2 +- src/mame/misc/chsuper.cpp | 81 ++++++++++++++++++++++++++++++++++--------- src/mame/nintendo/snesb51.cpp | 4 +-- 3 files changed, 67 insertions(+), 20 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index bad6ba7e829..ad15c26978b 100755 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -28657,7 +28657,7 @@ chmpnum // 1999, unknown chmpnuma // 1999, unknown chsuper2 // 1999, unknown chsuper3 // 1999, unknown -lstislnd // 1999, unknown +losttrea // 1999, unknown @source:misc/cleartone.cpp bnstlkr // diff --git a/src/mame/misc/chsuper.cpp b/src/mame/misc/chsuper.cpp index 00479aba411..d087104af2b 100644 --- a/src/mame/misc/chsuper.cpp +++ b/src/mame/misc/chsuper.cpp @@ -9,15 +9,15 @@ Additional work by Roberto Fresca. Notes: - - To init chsuper3, chmpnum & chmpnuma, just keep pressed both service keys (9 & 0), - and do a soft-reset (F3). + - To init chsuper3, chmpnum & chmpnuma, losttrea, just keep pressed both service keys + (9 & 0), and do a soft-reset (F3). TODO: - sound. - ticket dispenser. - Trace the hold3 lamp line on the pcb, for a proper implementation. - - proper GFX decode / descramble for lstislnd (game seems to run after init above). + - Verify losttrea inputs and promote to working if they are ok. *******************************************************************************************/ @@ -50,11 +50,12 @@ public: { } void chsuper(machine_config &config); + void losttrea(machine_config &config); void init_chsuper3(); void init_chmpnum(); void init_chsuper2(); - void init_lstislnd(); + void init_losttrea(); protected: virtual void machine_start() override { m_lamps.resolve(); } @@ -77,6 +78,7 @@ private: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void losttrea_portmap(address_map &map); void portmap(address_map &map); void prg_map(address_map &map); void ramdac_map(address_map &map); @@ -227,12 +229,11 @@ void chsuper_state::prg_map(address_map &map) map(0xfb000, 0xfbfff).ram().share("nvram"); } -void chsuper_state::portmap(address_map &map) +void chsuper_state::losttrea_portmap(address_map &map) { map(0x0000, 0x003f).ram(); // Z180 internal regs map(0x00e8, 0x00e8).portr("IN0"); map(0x00e9, 0x00e9).portr("IN1"); - map(0x00ea, 0x00ea).portr("DSW"); map(0x00ed, 0x00ed).nopw(); // mirror of EFh, but with bit0 active... map(0x00ee, 0x00ee).w(FUNC(chsuper_state::outporta_w)); map(0x00ef, 0x00ef).w(FUNC(chsuper_state::outportb_w)); @@ -243,6 +244,13 @@ void chsuper_state::portmap(address_map &map) map(0xff20, 0xff3f).w("dac", FUNC(dac_byte_interface::data_w)); // unk writes } +void chsuper_state::portmap(address_map &map) +{ + losttrea_portmap(map); + + map(0x00ea, 0x00ea).portr("DSW"); +} + void chsuper_state::ramdac_map(address_map &map) { map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); @@ -342,9 +350,41 @@ static INPUT_PORTS_START( chsuper ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - INPUT_PORTS_END +static INPUT_PORTS_START( losttrea ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) PORT_NAME("IN0-1") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1 / Black (Nero) / Bet Max") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Cancel All / Take (Ritira)") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Double (Radoppio)") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / Red (Rosso) / Double (Radoppio)") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service 2 - Statistica Parziale") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service 1 - Management") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / High (Alta)") + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Low (Bassa)") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) PORT_NAME("IN1-3") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) PORT_NAME("IN1-4") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) PORT_NAME("IN1-5") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // ticket-in in chmpnum + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_T) PORT_NAME("IN1-7") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // ticket out / payout in chsuper2 + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_NAME("IN2-2") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_NAME("IN2-3") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) PORT_NAME("IN2-4") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) PORT_NAME("IN2-5") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) PORT_NAME("IN2-6") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) PORT_NAME("IN2-7") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) PORT_NAME("IN2-8") + + // no dips on PCB +INPUT_PORTS_END /***************************** * Graphics Decode Routines * @@ -401,6 +441,13 @@ void chsuper_state::chsuper(machine_config &config) DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // 74HC273 latch + R2R network (unknown values) } +void chsuper_state::losttrea(machine_config &config) +{ + chsuper(config); + + m_maincpu->set_addrmap(AS_IO, &chsuper_state::losttrea_portmap); +} + /*************************** * ROM Regions definition * @@ -481,7 +528,7 @@ ROM_START( chmpnuma ) ROM_COPY( "maincpu", 0x10000, 0x00000, 0x70000 ) ROM_END -ROM_START( lstislnd ) // on a slightly newer PCB with more GFX ROM space +ROM_START( losttrea ) // on a slightly newer PCB with more GFX ROM space. Labels are Lost Island, there's still Lost Island GFX in ROMs but title screen is Lost Treasure ROM_REGION( 0x80000, "maincpu", 0 ) // code + samples ROM_LOAD( "lost_island_1.ic10", 0x00000, 0x80000, CRC(4444cf61) SHA1(d3d84a05042e3cf66c53648148f5e78035800cb9) ) @@ -559,12 +606,12 @@ void chsuper_state::init_chmpnum() memcpy(rom, buffer.get(), 0x100000); } -void chsuper_state::init_lstislnd() +void chsuper_state::init_losttrea() { std::unique_ptr buffer; uint8_t *rom = memregion("chars")->base(); - m_tilexor = 0x1500; // TODO + m_tilexor = 0x1900; buffer = std::make_unique(0x200000); @@ -572,7 +619,7 @@ void chsuper_state::init_lstislnd() { int j = i ^ (m_tilexor << 5); - j = bitswap<24>(j , 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); // TODO + j = bitswap<24>(j , 23, 22, 21, 20, 19, 18, 17, 15, 13, 14, 16, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); buffer[j] = rom[i]; } @@ -587,9 +634,9 @@ void chsuper_state::init_lstislnd() * Game Drivers * *************************/ -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT -GAMEL( 1999, chsuper3, 0, chsuper, chsuper, chsuper_state, init_chsuper3, ROT0, "", "Champion Super 3 (V0.35)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chsuper ) //24/02/99 -GAMEL( 1999, chsuper2, chsuper3, chsuper, chsuper, chsuper_state, init_chsuper2, ROT0, "", "Champion Super 2 (V0.13)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chsuper ) //26/01/99 -GAME( 1999, chmpnum, chsuper3, chsuper, chsuper, chsuper_state, init_chmpnum, ROT0, "", "Champion Number (V0.74)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //10/11/99 -GAME( 1999, chmpnuma, chsuper3, chsuper, chsuper, chsuper_state, init_chmpnum, ROT0, "", "Champion Number (V0.67)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //21/10/99 -GAME( 2001, lstislnd, 0, chsuper, chsuper, chsuper_state, init_lstislnd, ROT0, "", "Lost Island (V1.03)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //04/05/01, there's also a Lost Treasure string +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT +GAMEL( 1999, chsuper3, 0, chsuper, chsuper, chsuper_state, init_chsuper3, ROT0, "", "Champion Super 3 (V0.35)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chsuper ) //24/02/99 +GAMEL( 1999, chsuper2, chsuper3, chsuper, chsuper, chsuper_state, init_chsuper2, ROT0, "", "Champion Super 2 (V0.13)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chsuper ) //26/01/99 +GAME( 1999, chmpnum, chsuper3, chsuper, chsuper, chsuper_state, init_chmpnum, ROT0, "", "Champion Number (V0.74)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //10/11/99 +GAME( 1999, chmpnuma, chsuper3, chsuper, chsuper, chsuper_state, init_chmpnum, ROT0, "", "Champion Number (V0.67)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //21/10/99 +GAME( 2001, losttrea, 0, losttrea, losttrea, chsuper_state, init_losttrea, ROT0, "", "Lost Treasure (V1.03)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) //04/05/01, there's also a Lost Island string diff --git a/src/mame/nintendo/snesb51.cpp b/src/mame/nintendo/snesb51.cpp index 6fa07f6a16b..640938da6c0 100644 --- a/src/mame/nintendo/snesb51.cpp +++ b/src/mame/nintendo/snesb51.cpp @@ -344,14 +344,14 @@ ROM_START( snes4sl ) ROM_REGION(0x400000, "user3", ROMREGION_ERASEFF) ROM_REGION(0x8000, "mcu", 0) - ROM_SYSTEM_BIOS(0, "930601", "94-06-01") // Found on PCB with Intel P80C31BH, has 'SISTEME FRANCE' string in ROM + ROM_SYSTEM_BIOS(0, "940601", "94-06-01") // Found on PCB with Intel P80C31BH, has 'SISTEME FRANCE' string in ROM ROMX_LOAD("27c256_06_01.u43", 0x0000, 0x8000, CRC(d0f4849f) SHA1(971743c9b5a2c0ba267dd8a1ce9ff3821759b4fe), ROM_BIOS(0)) ROM_SYSTEM_BIOS(1, "931207", "93-12-07") // Found on PCB with Siemens SAB 8051A-P (4KBytes internal ROM undumped) ROMX_LOAD("27c256_12-07.bin", 0x0000, 0x8000, CRC(0922314d) SHA1(04f1265ddc753111e6fcd56162a917ae1791c164), ROM_BIOS(1)) ROM_SYSTEM_BIOS(2, "931103", "93-11-03") // Found on PCB with WD1016D-PL ROMX_LOAD("27c256_11-03.bin", 0x0000, 0x8000, CRC(4e471581) SHA1(0f23ad065d448097f56ab45c3850d53cf85f3670), ROM_BIOS(2)) - ROM_DEFAULT_BIOS("930601") + ROM_DEFAULT_BIOS("940601") ROM_END ROM_START( snes4sln ) -- cgit v1.2.3