diff options
Diffstat (limited to 'src/mame/drivers/geniusjr.cpp')
-rw-r--r-- | src/mame/drivers/geniusjr.cpp | 95 |
1 files changed, 77 insertions, 18 deletions
diff --git a/src/mame/drivers/geniusjr.cpp b/src/mame/drivers/geniusjr.cpp index 9ae0d031b7b..68bcc3dceb6 100644 --- a/src/mame/drivers/geniusjr.cpp +++ b/src/mame/drivers/geniusjr.cpp @@ -19,23 +19,42 @@ public: geniusjr_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") + , m_rombank(*this, "rombank") { } - void geniusjr(machine_config &config); + void gj4000(machine_config &config); + void gj5000(machine_config &config); + void gjrstar(machine_config &config); void gjmovie(machine_config &config); protected: virtual void machine_start() override; private: - void mem_map(address_map &map); + void gj4000_map(address_map &map); + void gj5000_map(address_map &map); + void gjrstar_map(address_map &map); required_device<m68hc05_device> m_maincpu; + required_memory_bank m_rombank; + + u16 m_bank_size; }; -void geniusjr_state::mem_map(address_map &map) +void geniusjr_state::gj4000_map(address_map &map) +{ + map(0x8000, 0xffff).bankr("rombank"); +} + +void geniusjr_state::gj5000_map(address_map &map) +{ + map(0x4000, 0x7fff).bankr("rombank"); +} + +void geniusjr_state::gjrstar_map(address_map &map) { + map(0x2000, 0x3fff).bankr("rombank"); } @@ -45,57 +64,97 @@ INPUT_PORTS_END void geniusjr_state::machine_start() { + memory_region *extrom = memregion("extrom"); + + m_rombank->configure_entries(0, extrom->bytes() / m_bank_size, extrom->base(), m_bank_size); + m_rombank->set_entry(0); } -void geniusjr_state::geniusjr(machine_config &config) +void geniusjr_state::gj4000(machine_config &config) { - M68HC05C8(config, m_maincpu, 8'000'000); // unknown type and clock - m_maincpu->set_addrmap(AS_PROGRAM, &geniusjr_state::mem_map); + M68HC05L9(config, m_maincpu, 8'000'000); // unknown clock + m_maincpu->set_addrmap(AS_PROGRAM, &geniusjr_state::gj4000_map); + + m_bank_size = 0x8000; +} + +void geniusjr_state::gj5000(machine_config &config) +{ + M68HC05L9(config, m_maincpu, 8'000'000); // unknown clock (type also uncertain) + m_maincpu->set_addrmap(AS_PROGRAM, &geniusjr_state::gj5000_map); + + m_bank_size = 0x4000; +} + +void geniusjr_state::gjrstar(machine_config &config) +{ + M68HC05L9(config, m_maincpu, 8'000'000); // unknown clock (type also uncertain) + m_maincpu->set_addrmap(AS_PROGRAM, &geniusjr_state::gjrstar_map); + + m_bank_size = 0x2000; } void geniusjr_state::gjmovie(machine_config &config) { - geniusjr(config); + gjrstar(config); SOFTWARE_LIST(config, "cart_list").set_original("gjmovie"); } ROM_START( gj4000 ) - ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD( "hc05_internal.bin", 0x0000, 0x1fff, NO_DUMP ) + + ROM_REGION( 0x40000, "extrom", 0 ) ROM_LOAD( "27-05886-000-000.u4", 0x000000, 0x40000, CRC(5f6db95b) SHA1(fe683154e33a82ea38696096616d11e850e0c7a3)) ROM_END ROM_START( gj5000 ) - ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD( "hc05_internal.bin", 0x0000, 0x1fff, NO_DUMP ) + + ROM_REGION( 0x80000, "extrom", 0 ) ROM_LOAD( "27-6019-01.u2", 0x000000, 0x80000, CRC(946e5b7d) SHA1(80963d6ad80d49e54c8996bfc77ac135c4935be5)) ROM_END ROM_START( gjmovie ) - ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD( "hc05_internal.bin", 0x0000, 0x1fff, NO_DUMP ) + + ROM_REGION( 0x40000, "extrom", 0 ) ROM_LOAD( "lh532hlk.bin", 0x000000, 0x40000, CRC(2e64c296) SHA1(604034f902e20851cb9af60964031a508ceef83e)) ROM_END ROM_START( gjrstar ) - ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD( "hc05_internal.bin", 0x0000, 0x1fff, NO_DUMP ) + + ROM_REGION( 0x40000, "extrom", 0 ) ROM_LOAD( "27-5740-00.u1", 0x000000, 0x40000, CRC(ff3dc3bb) SHA1(bc16dfc1e12b0008456c700c431c8df6263b671f)) ROM_END ROM_START( gjrstar2 ) - ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD( "hc05_internal.bin", 0x0000, 0x1fff, NO_DUMP ) + + ROM_REGION( 0x40000, "extrom", 0 ) ROM_LOAD( "27-5740-00.u1", 0x000000, 0x40000, CRC(ff3dc3bb) SHA1(bc16dfc1e12b0008456c700c431c8df6263b671f)) // identical to 'Genius Junior Redstar' ROM_END ROM_START( gjrstar3 ) - ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD( "hc05_internal.bin", 0x0000, 0x1fff, NO_DUMP ) + + ROM_REGION( 0x40000, "extrom", 0 ) ROM_LOAD( "54-06056-000-000.u3", 0x000000, 0x040000, CRC(72522179) SHA1(ede9491713ad018012cf925a519bcafe126f1ad3)) ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1996, gj4000, 0, 0, geniusjr, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior 4000 (Germany)", MACHINE_IS_SKELETON ) +COMP( 1996, gj4000, 0, 0, gj4000, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior 4000 (Germany)", MACHINE_IS_SKELETON ) COMP( 1993, gjmovie, 0, 0, gjmovie, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Movie (Germany)", MACHINE_IS_SKELETON ) -COMP( 1996, gjrstar, 0, 0, geniusjr, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar (Germany)", MACHINE_IS_SKELETON ) -COMP( 1996, gjrstar2, gjrstar, 0, geniusjr, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar 2 (Germany)", MACHINE_IS_SKELETON ) -COMP( 1998, gjrstar3, 0, 0, geniusjr, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar 3 (Germany)", MACHINE_IS_SKELETON ) -COMP( 1998, gj5000, 0, 0, geniusjr, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior 5000 (Germany)", MACHINE_IS_SKELETON ) +COMP( 1996, gjrstar, 0, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar (Germany)", MACHINE_IS_SKELETON ) +COMP( 1996, gjrstar2, gjrstar, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar 2 (Germany)", MACHINE_IS_SKELETON ) +COMP( 1998, gjrstar3, 0, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar 3 (Germany)", MACHINE_IS_SKELETON ) +COMP( 1998, gj5000, 0, 0, gj5000, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior 5000 (Germany)", MACHINE_IS_SKELETON ) |