diff --git a/hash/snotec.xml b/hash/snotec.xml index 081120f515c31..127c5a87dbdc6 100644 --- a/hash/snotec.xml +++ b/hash/snotec.xml @@ -2,62 +2,90 @@ - - Detective Conan 2 - 1996 + + Angel Mail Town + 1999 Bandai + Cartridge includes an unemulated LCD-Game + + - - + + - + + + + + Ochame na PetMate + 1995 + Bandai + + + + + - - Tamagotchi - 1997 + + Challenge Audition Mezase Idol + 1998 Bandai + + - + - - - Angel Mail Town - 1999 + + Detective Conan + 1996 Bandai + + - - + + - - Ochame na PetMate - 1995 + + Detective Conan Episode 2 + 1996 Bandai + + - + + + - Detective Conan 3 + Detective Conan Episode 3 1999 Bandai + + @@ -65,10 +93,42 @@ license:CC0-1.0 + + Gokinjo Monogatari + 1996 + Bandai + + + + + + + + + + + + + 7-tsu no Uranai de Mirai ga Mieru! Magical Future + 1996 + Bandai + + + + + + + + + + + Nakayoshi Diary 1995 Bandai + + @@ -76,52 +136,72 @@ license:CC0-1.0 - - Challenge Audition - 1998 + + Nakayoshi Diary (1999) + 1999 Bandai + + - - - - + + - - Detective Conan - 1996 + + Nakayoshi PetMate + 1999 Bandai + Cartridge includes an unemulated LCD-Game. + + - - + + - - Magical Fortune - 1996 + + Ochame na PetMate 2 + 1997 Bandai + + + - + - + + + + + Primo Puel + 2000 + Bandai + Cartridge includes an unemulated LCD-Game. Graphics glitches. + + + + + - - Gokinjo Monogatari - 1996 + + Super Note de Hakken!! Tamagotchi + 1997 Bandai + + - + - + @@ -130,6 +210,8 @@ license:CC0-1.0 Tare Panda 2000 Bandai + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index fac7a5ce18b7e..74d37b80ef14e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -47375,6 +47375,7 @@ snotec snotecex snotecu snotecug +snotecut @source:vtech/primusex.cpp primusex diff --git a/src/mame/vtech/prestige.cpp b/src/mame/vtech/prestige.cpp index 0245131de4fae..ed476403d1302 100644 --- a/src/mame/vtech/prestige.cpp +++ b/src/mame/vtech/prestige.cpp @@ -137,8 +137,14 @@ class prestige_state : public driver_device void gl7007sl(machine_config &config); protected: + uint32_t m_extra_program_offset; + uint16_t m_num_rom_entries; + uint16_t m_rom_bank_mask; + virtual void machine_start() override ATTR_COLD; + virtual void setup_extra_program_offset(); + private: required_device m_maincpu; required_device m_ram; @@ -203,21 +209,21 @@ void prestige_state::bankswitch_w(offs_t offset, uint8_t data) switch (offset) { case 0: - m_bank1->set_entry(data & 0x3f); + m_bank1->set_entry(data & m_rom_bank_mask); break; case 1: if (!(m_bank[5] & 0x01) && (m_bank[5] & 0x02) && (m_cart_type->read() == 0x02 || m_cart->exists())) - m_bank2->set_entry(0x40 + (data & 0x1f)); + m_bank2->set_entry(m_num_rom_entries + (data & 0x1f)); else - m_bank2->set_entry(data & 0x3f); + m_bank2->set_entry(data & m_rom_bank_mask); break; case 2: if (!(m_bank[5] & 0x01) && (m_bank[5] & 0x04) && (m_cart_type->read() == 0x02 || m_cart->exists())) - m_bank3->set_entry(0x40 + (data & 0x1f)); + m_bank3->set_entry(m_num_rom_entries + (data & 0x1f)); else - m_bank3->set_entry(data & 0x3f); + m_bank3->set_entry(data & m_rom_bank_mask); break; case 3: @@ -664,6 +670,10 @@ IRQ_CALLBACK_MEMBER(prestige_state::prestige_int_ack) void prestige_state::machine_start() { + setup_extra_program_offset(); + m_num_rom_entries = memregion("maincpu")->bytes() / 0x4000; + m_rom_bank_mask = m_num_rom_entries - 1; + std::string region_tag; m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); @@ -675,19 +685,28 @@ void prestige_state::machine_start() } else { - cart = rom + 0x40000; // internal ROM also includes extra contents that are activated by a cartridge that works as a jumper + /* + Each internal ROM also includes an extra program, activated by a + blank cartridge that works as a jumper (pins 14 and 18 are shorted): + + - [snotec] Lucky Check Fortune Telling (ラッキーチェックうらない) + - [snotecex] Super Cassette: Guessing Card Game / Jungle Cruise (スーパーカセット あてっこ カードゲーム / ジャングル クルーズ) + - [snotecu, snotecug] Super AquaMate (スーパーアクアメイト) + - [snotecut] Little Sorcery (リトルソーサリー) + */ + cart = rom + m_extra_program_offset; } uint8_t *ram = m_ram->pointer(); memset(ram, 0x00, m_ram->size()); - m_bank1->configure_entries(0, 64, rom, 0x4000); - m_bank1->configure_entries(64,32, cart, 0x4000); - m_bank2->configure_entries(0, 64, rom, 0x4000); - m_bank2->configure_entries(64,32, cart, 0x4000); - m_bank3->configure_entries(0, 64, rom, 0x4000); - m_bank3->configure_entries(64,32, cart, 0x4000); - m_bank4->configure_entries(0, 4, ram, 0x2000); - m_bank5->configure_entries(0, 4, ram, 0x2000); + m_bank1->configure_entries(0, m_num_rom_entries, rom, 0x4000); + m_bank1->configure_entries(m_num_rom_entries, 32, cart, 0x4000); + m_bank2->configure_entries(0, m_num_rom_entries, rom, 0x4000); + m_bank2->configure_entries(m_num_rom_entries, 32, cart, 0x4000); + m_bank3->configure_entries(0, m_num_rom_entries, rom, 0x4000); + m_bank3->configure_entries(m_num_rom_entries, 32, cart, 0x4000); + m_bank4->configure_entries(0, 4, ram, 0x2000); + m_bank5->configure_entries(0, 4, ram, 0x2000); m_bank1->set_entry(0); m_bank2->set_entry(0); @@ -708,6 +727,11 @@ void prestige_state::machine_start() m_vram = ram; } +void prestige_state::setup_extra_program_offset() +{ + m_extra_program_offset = 0x40000; +} + void prestige_state::prestige_palette(palette_device &palette) const { palette.set_pen_color(0, rgb_t(39, 108, 51)); @@ -859,6 +883,21 @@ void prestige_state::gl7007sl(machine_config &config) SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx"); } +class snotecut_state : public prestige_state +{ +public: + snotecut_state(const machine_config &mconfig, device_type type, const char *tag) + : prestige_state(mconfig, type, tag) + { } + +protected: + virtual void setup_extra_program_offset() override; +}; + +void snotecut_state::setup_extra_program_offset() +{ + m_extra_program_offset = 0x100000; +} /* ROM definition */ ROM_START( gl6000sl ) @@ -911,12 +950,17 @@ ROM_END ROM_START( snotecu ) ROM_REGION( 0x100000, "maincpu", 0 ) - ROM_LOAD("27-6100-00.u1", 0x00000, 0x100000, CRC(b2f979d5) SHA1(d2a76e99351971d1fb4cf4df9fe5741a606eb844)) + ROM_LOAD( "27-6100-00.u1", 0x00000, 0x100000, CRC(b2f979d5) SHA1(d2a76e99351971d1fb4cf4df9fe5741a606eb844) ) ROM_END ROM_START( snotecug ) ROM_REGION( 0x100000, "maincpu", 0 ) - ROM_LOAD("27-6100-02.u1", 0x00000, 0x100000, CRC(1e14e6ea) SHA1(3e3b8dbea5f559ff98f525e3c7029b9d55e5515b)) + ROM_LOAD( "27-6100-02.u1", 0x00000, 0x100000, CRC(1e14e6ea) SHA1(3e3b8dbea5f559ff98f525e3c7029b9d55e5515b) ) +ROM_END + +ROM_START( snotecut ) + ROM_REGION( 0x200000, "maincpu", 0 ) + ROM_LOAD( "27-6429-00.u1", 0x00000, 0x200000, CRC(16b1a0d6) SHA1(72f467e2f3bef4995d0eadb8387a88b0d9fa2893) ) ROM_END ROM_START( glmcolor ) @@ -938,17 +982,18 @@ ROM_END /* Driver */ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1994, glcolor, 0, 0, glcolor, glcolor, prestige_state, empty_init, "VTech", "Genius Leader Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1994, glscolor, glcolor, 0, glcolor, glcolor, prestige_state, empty_init, "VTech", "Genius Leader Super Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1994, pcscolor, 0, 0, glcolor, glcolor, prestige_state, empty_init, "VTech", "PC Super Color (Spain)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1995, snotec, 0, 0, snotec, glcolor, prestige_state, empty_init, "Bandai", "Super Note Club (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1996, snotecex, 0, 0, snotec, glcolor, prestige_state, empty_init, "Bandai", "Super Note Club EX (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1996, glmcolor, 0, 0, glmcolor, glmcolor, prestige_state, empty_init, "VTech", "Genius Leader Magic Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1997, gl6000sl, 0, 0, gl6000sl, prestige, prestige_state, empty_init, "VTech", "Genius Leader 6000SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1998, snotecu, 0, 0, snotec, glcolor, prestige_state, empty_init, "Bandai", u8"Super Note Club µ (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1999, snotecug, snotecu, 0, snotec, glcolor, prestige_state, empty_init, "Bandai", u8"Super Note Club µ girlish (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1998, gl7007sl, 0, 0, gl7007sl, prestige, prestige_state, empty_init, "VTech", "Genius Leader 7007SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1998, prestige, 0, 0, prestige, prestige, prestige_state, empty_init, "VTech", "PreComputer Prestige Elite", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 1999, gwnf, 0, 0, prestige, prestige, prestige_state, empty_init, "VTech", "Genius Winner Notebook Fun (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -COMP( 199?, gmmc, 0, 0, prestige, prestige, prestige_state, empty_init, "VTech", "Genius Master Mega Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1994, glcolor, 0, 0, glcolor, glcolor, prestige_state, empty_init, "VTech", "Genius Leader Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1994, glscolor, glcolor, 0, glcolor, glcolor, prestige_state, empty_init, "VTech", "Genius Leader Super Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1994, pcscolor, 0, 0, glcolor, glcolor, prestige_state, empty_init, "VTech", "PC Super Color (Spain)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1995, snotec, 0, 0, snotec, glcolor, prestige_state, empty_init, "Bandai", "Super Note Club (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1996, snotecex, 0, 0, snotec, glcolor, prestige_state, empty_init, "Bandai", "Super Note Club EX (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1996, glmcolor, 0, 0, glmcolor, glmcolor, prestige_state, empty_init, "VTech", "Genius Leader Magic Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1997, gl6000sl, 0, 0, gl6000sl, prestige, prestige_state, empty_init, "VTech", "Genius Leader 6000SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1998, snotecu, 0, 0, snotec, glcolor, prestige_state, empty_init, "Bandai", u8"Super Note Club µ (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1999, snotecug, snotecu, 0, snotec, glcolor, prestige_state, empty_init, "Bandai", u8"Super Note Club µ girlish (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1999, snotecut, snotecu, 0, snotec, glcolor, snotecut_state, empty_init, "Bandai", u8"Super Note Club µ teen's time (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1998, gl7007sl, 0, 0, gl7007sl, prestige, prestige_state, empty_init, "VTech", "Genius Leader 7007SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1998, prestige, 0, 0, prestige, prestige, prestige_state, empty_init, "VTech", "PreComputer Prestige Elite", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1999, gwnf, 0, 0, prestige, prestige, prestige_state, empty_init, "VTech", "Genius Winner Notebook Fun (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 199?, gmmc, 0, 0, prestige, prestige, prestige_state, empty_init, "VTech", "Genius Master Mega Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )