From 3bc38ce450cd4cd6b3bfb2ed16e556fd318c3033 Mon Sep 17 00:00:00 2001 From: David Haywood <28625134+DavidHaywood@users.noreply.github.com> Date: Mon, 5 Apr 2021 19:32:59 +0100 Subject: new NOT WORKING machines (plug+play - JAKKS Pacific etc.) [Sean Riddle] (#7892) new machines marked as NOT WORKING ------ Hannah Montana Pop Tour - Guitar Video Game (JAKKS Pacific TV Game) (May 16 2008) [Sean Riddle] Robotech [Sean Riddle] Rainbow Brite (mini-arcade) [Sean Riddle] new NOT WORKING software list entries ------ karaokd_cart.xml: [Sean Riddle, ClawGrip] karaokd1 - Karao Kids Songs 1 (Spain) karaokd2 - Karao Kids Songs 2 (Spain) origkara - Original Karaoke * karaokd2: remove ROM, rename set karaokd, change to use softlist --- hash/singingstarkaraoke_cart.xml | 41 ++++++++++++ src/devices/machine/generalplus_gpl16250soc.cpp | 4 ++ src/mame/drivers/gba.cpp | 88 +++++++++++++++++++------ src/mame/drivers/generalplus_gpl16250_nand.cpp | 13 +++- src/mame/drivers/nes_vt09.cpp | 7 ++ src/mame/drivers/spg110.cpp | 77 ++++++++++++++++++++-- src/mame/includes/gba.h | 58 ++++++++++++---- src/mame/mame.lst | 5 +- 8 files changed, 254 insertions(+), 39 deletions(-) create mode 100644 hash/singingstarkaraoke_cart.xml diff --git a/hash/singingstarkaraoke_cart.xml b/hash/singingstarkaraoke_cart.xml new file mode 100644 index 00000000000..16c41d8721d --- /dev/null +++ b/hash/singingstarkaraoke_cart.xml @@ -0,0 +1,41 @@ + + + + + + + Karao Kids Songs 1 (Spain) + 200? + Taikee / Imaginarium / ItsMagical + + + + + + + + + Karao Kids Songs 2 (Spain) + 200? + Taikee / Imaginarium / ItsMagical + + + + + + + + + Original Karaoke + 200? + Taikee + + + + + + + + diff --git a/src/devices/machine/generalplus_gpl16250soc.cpp b/src/devices/machine/generalplus_gpl16250soc.cpp index c4b6a49cc73..1deceda4ce8 100644 --- a/src/devices/machine/generalplus_gpl16250soc.cpp +++ b/src/devices/machine/generalplus_gpl16250soc.cpp @@ -253,6 +253,10 @@ void sunplus_gcm394_base_device::trigger_systemm_dma(int channel) if (mem.read_word(0x4abe7) == 0x4840) mem.write_word(0x4abe7, 0x4841); // camp rock IRQ? wait hack + //if (mem.read_word(0x37244) == 0x4845) + // mem.write_word(0x37244, 0x4840); // hannah montana guitar force service mode + + // clear params after operation diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp index e2fc3927e64..6cd14367537 100644 --- a/src/mame/drivers/gba.cpp +++ b/src/mame/drivers/gba.cpp @@ -1156,7 +1156,7 @@ void gba_state::gba_io_w(offs_t offset, uint32_t data, uint32_t mem_mask) } } -uint32_t gba_state::gba_bios_r(offs_t offset, uint32_t mem_mask) +uint32_t gba_cons_state::gba_bios_r(offs_t offset, uint32_t mem_mask) { uint32_t *rom = m_region_maincpu; if (m_bios_hack->read()) @@ -1239,7 +1239,6 @@ WRITE_LINE_MEMBER(gba_state::dma_vblank_callback) void gba_state::gba_map(address_map &map) { map.unmap_value_high(); // for "Fruit Mura no Doubutsu Tachi" and "Classic NES Series" - map(0x00000000, 0x00003fff).rom().mirror(0x01ffc000).r(FUNC(gba_state::gba_bios_r)); map(0x02000000, 0x0203ffff).ram().mirror(0xfc0000); map(0x03000000, 0x03007fff).ram().mirror(0xff8000); map(0x04000000, 0x0400005f).rw("lcd", FUNC(gba_lcd_device::video_r), FUNC(gba_lcd_device::video_w)); @@ -1249,10 +1248,26 @@ void gba_state::gba_map(address_map &map) map(0x06000000, 0x06017fff).mirror(0x00fe0000).rw("lcd", FUNC(gba_lcd_device::gba_vram_r), FUNC(gba_lcd_device::gba_vram_w)); // VRAM map(0x06018000, 0x0601ffff).mirror(0x00fe0000).rw("lcd", FUNC(gba_lcd_device::gba_vram_r), FUNC(gba_lcd_device::gba_vram_w)); // VRAM map(0x07000000, 0x070003ff).mirror(0x00fffc00).rw("lcd", FUNC(gba_lcd_device::gba_oam_r), FUNC(gba_lcd_device::gba_oam_w)); // OAM - //map(0x08000000, 0x0cffffff) // cart ROM + mirrors, mapped here at machine_start if a cart is present + map(0x10000000, 0xffffffff).r(FUNC(gba_state::gba_10000000_r)); // for "Justice League Chronicles" (game bug) } +void gba_cons_state::gba_cons_map(address_map &map) +{ + gba_map(map); + + map(0x00000000, 0x00003fff).rom().mirror(0x01ffc000).r(FUNC(gba_cons_state::gba_bios_r)); + //map(0x08000000, 0x0cffffff) // cart ROM + mirrors, mapped here at machine_start if a cart is present +} + +void gba_robotech_state::gba_robotech_map(address_map &map) +{ + gba_map(map); + + map(0x00000000, 0x007fffff).rom().region("maincpu", 0x00000000); // first part of the ROM is a BIOS replacement? + map(0x08000000, 0x087fffff).rom().region("maincpu", 0x00800000); // second part is the game? +} + static INPUT_PORTS_START( gbadv ) PORT_START("INPUTS") PORT_BIT( 0xfc00, IP_ACTIVE_HIGH, IPT_UNUSED) @@ -1266,6 +1281,10 @@ static INPUT_PORTS_START( gbadv ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SELECT ) PORT_PLAYER(1) // SELECT PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("B") PORT_PLAYER(1) // B PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("A") PORT_PLAYER(1) // A +INPUT_PORTS_END + +static INPUT_PORTS_START( gbadv_cons ) + PORT_INCLUDE( gbadv ) PORT_START("SKIP_CHECK") PORT_CONFNAME( 0x01, 0x00, "[HACK] Skip BIOS Logo check" ) @@ -1328,6 +1347,26 @@ void gba_state::machine_start() m_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gba_state::handle_irq),this)); m_irq_timer->adjust(attotime::never); + save_item(NAME(m_regs)); + save_item(NAME(m_dma_src)); + save_item(NAME(m_dma_dst)); + save_item(NAME(m_dma_cnt)); + save_item(NAME(m_timer_regs)); + save_item(NAME(m_timer_reload)); + save_item(NAME(m_timer_recalc)); + save_item(NAME(m_timer_hz)); + save_item(NAME(m_fifo_a_ptr)); + save_item(NAME(m_fifo_b_ptr)); + save_item(NAME(m_fifo_a_in)); + save_item(NAME(m_fifo_b_in)); + save_item(NAME(m_fifo_a)); + save_item(NAME(m_fifo_b)); +} + +void gba_cons_state::machine_start() +{ + gba_state::machine_start(); + // install the cart ROM & SRAM into the address map, if present if (m_cart->exists()) { @@ -1388,24 +1427,8 @@ void gba_state::machine_start() } } - - save_item(NAME(m_regs)); - save_item(NAME(m_dma_src)); - save_item(NAME(m_dma_dst)); - save_item(NAME(m_dma_cnt)); - save_item(NAME(m_timer_regs)); - save_item(NAME(m_timer_reload)); - save_item(NAME(m_timer_recalc)); - save_item(NAME(m_timer_hz)); - save_item(NAME(m_fifo_a_ptr)); - save_item(NAME(m_fifo_b_ptr)); - save_item(NAME(m_fifo_a_in)); - save_item(NAME(m_fifo_b_in)); - save_item(NAME(m_fifo_a)); - save_item(NAME(m_fifo_b)); } - static void gba_cart(device_slot_interface &device) { device.option_add_internal("gba_rom", GBA_ROM_STD); @@ -1449,16 +1472,39 @@ void gba_state::gbadv(machine_config &config) DAC_8BIT_R2R_TWOS_COMPLEMENT(config, m_ldacb, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5); // unknown DAC DAC_8BIT_R2R_TWOS_COMPLEMENT(config, m_rdacb, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC +} + +void gba_cons_state::gbadv_cons(machine_config &config) +{ + gbadv(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &gba_cons_state::gba_cons_map); + GBA_CART_SLOT(config, m_cart, gba_cart, nullptr); SOFTWARE_LIST(config, "cart_list").set_original("gba"); } +void gba_robotech_state::gbadv_robotech(machine_config &config) +{ + gbadv(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &gba_robotech_state::gba_robotech_map); +} ROM_START( gba ) ROM_REGION( 0x4000, "maincpu", 0 ) ROM_LOAD( "gba.bin", 0x000000, 0x004000, CRC(81977335) SHA1(300c20df6731a33952ded8c436f7f186d25d3492) ) ROM_END +ROM_START( robotech ) + ROM_REGION( 0x1000100, "maincpu", 0 ) + ROM_LOAD( "coleco_robotech_mx29gl128elt21_00c22273.bin", 0x0000000, 0x1000100, CRC(04beee9c) SHA1(acf07d51c525b055679186cc07c6ac2cd8f45eac) ) +ROM_END + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +CONS(2001, gba, 0, 0, gbadv_cons, gbadv_cons, gba_cons_state, empty_init, "Nintendo", "Game Boy Advance", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -CONS(2001, gba, 0, 0, gbadv, gbadv, gba_state, empty_init, "Nintendo", "Game Boy Advance", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND) +// this is a single game reissue of "Robotech - The Macross Saga (Euro, USA)" on the GBA but with double +// sized ROM (BIOS replacement in first half?) and other mods. It is unclear how compatible this is with +// standard hardware. +CONS(2018, robotech, 0, 0, gbadv_robotech, gbadv, gba_robotech_state, empty_init, "Coleco", "Robotech", MACHINE_NOT_WORKING) diff --git a/src/mame/drivers/generalplus_gpl16250_nand.cpp b/src/mame/drivers/generalplus_gpl16250_nand.cpp index 4ea55f3a56a..22ab9726fb5 100644 --- a/src/mame/drivers/generalplus_gpl16250_nand.cpp +++ b/src/mame/drivers/generalplus_gpl16250_nand.cpp @@ -562,6 +562,13 @@ ROM_START( jak_camp ) ROM_LOAD( "camprockguitar1_sandisk11352-256b_45da.bin", 0x0000, 0x10800000, CRC(f52a4289) SHA1(d027ae274cd4ac97924d2344df1a96456e8e7c55) ) ROM_END +ROM_START( jak_hmpt ) + ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only + + ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 ) + ROM_LOAD( "hmsecretstar_sandisk11270_9876.bin", 0x0000, 0x10800000, CRC(fbe09633) SHA1(169a1546072f53c2da19ce97396cacd25412c5f2) ) +ROM_END ROM_START( jak_hsmg2 ) ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) @@ -916,7 +923,11 @@ CONS(2008, jak_hsmg2, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gp CONS(2008, jak_hmhsm, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Hannah Montana G2 Deluxe / High School Musical G2 Deluxe - Two in One (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // Sep 12 2008 18:48:14 (Menu/HM) / Sep 12 2008 18:50:45 (HSM) CONS(2008, jak_umdf, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / Handheld Games", "Ultimotion - Disney Fairies Sleeping Beauty & TinkerBell (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // Ultimotion Swing Zone is SPG29xx instead -CONS(2008, jak_camp, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Camp Rock Guitar Video Game (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +CONS(2008, jak_camp, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Camp Rock - Guitar Video Game (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) + +// 2 blocks fail the hidden ROM test in jak_hmpt set below, however this seems to be an error in the test mode, not the dump +// a different set, https://www.youtube.com/watch?v=XiEMtLzcTFw showing a date of May 14 2008 10:05:22 shows exactly the same failures +CONS(2008, jak_hmpt, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Hannah Montana Pop Tour - Guitar Video Game (JAKKS Pacific TV Game) (May 16 2008)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // May 16 2008 10:36:59 // There were 1 player and 2 player versions for several of the JAKKS guns. The 2nd gun appears to be simply a controller (no AV connectors) but as they were separate products with the 2 player versions being released up to a year after the original, the code could differ. // If they differ, it is currently uncertain which versions these ROMs are from diff --git a/src/mame/drivers/nes_vt09.cpp b/src/mame/drivers/nes_vt09.cpp index 70dd95d1004..8667705dcef 100644 --- a/src/mame/drivers/nes_vt09.cpp +++ b/src/mame/drivers/nes_vt09.cpp @@ -450,6 +450,11 @@ ROM_START( joypad65 ) ROM_LOAD( "joypad65.bin", 0x00000, 0x800000, CRC(b7f81c5f) SHA1(8579d9bc866415e0049979b7c3427d8dd0a60813) ) ROM_END +ROM_START( rbbrite ) + ROM_REGION( 0x100000, "mainrom", 0 ) + ROM_LOAD( "coleco_rainbowbrite_29dl800ba_000422cb.bin", 0x00000, 0x100000, CRC(d2ad0d7d) SHA1(4423a5aa2eda20b3621ab46e951ac08dc2d24789) ) +ROM_END + // MSI Entertainment games (MSI previously operated as Majesco Entertainment) // There are meant to be multiple revisions of this software, some with theme tunes for the new wrestlers, some without. This one appears to lack them. @@ -491,3 +496,5 @@ CONS( 2006, vgtablet, 0, 0, nes_vt09_4mb_rasterhack, nes_vt09, nes_vt09_state CONS( 200?, jl2050, 0, 0, nes_vt09_16mb,nes_vt09, nes_vt09_state, empty_init, "LexiBook / JungleTac / NiceCode", "Cyber Console Center 200-in-1 (JL2050)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +// might be VT369 based, if so, move +CONS( 2018, rbbrite, 0, 0, nes_vt09_1mb, nes_vt09, nes_vt09_state, empty_init, "Coleco", "Rainbow Brite (mini-arcade)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/spg110.cpp b/src/mame/drivers/spg110.cpp index 27847ba4268..f67fe1e9d14 100644 --- a/src/mame/drivers/spg110.cpp +++ b/src/mame/drivers/spg110.cpp @@ -23,9 +23,13 @@ #include "emu.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" + #include "cpu/unsp/unsp.h" #include "machine/spg110.h" #include "screen.h" +#include "softlist.h" #include "speaker.h" class spg110_game_state : public driver_device @@ -49,6 +53,28 @@ protected: virtual void mem_map(address_map &map); }; +class spg110_sstarkar_game_state : public spg110_game_state +{ +public: + spg110_sstarkar_game_state(const machine_config &mconfig, device_type type, const char *tag) : + spg110_game_state(mconfig, type, tag), + m_cart(*this, "cartslot"), + m_cartrom(*this, "cartrom") + { } +public: + void sstarkar(machine_config &config); + +protected: + virtual void machine_start() override; + +private: + required_device m_cart; + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); + optional_memory_bank m_cartrom; + + void mem_map_cart(address_map &map); +}; + /************************* * Machine Hardware * *************************/ @@ -58,6 +84,12 @@ void spg110_game_state::mem_map(address_map &map) map(0x004000, 0x3fffff).rom().region("maincpu", 0x8000); } +void spg110_sstarkar_game_state::mem_map_cart(address_map &map) +{ + map(0x004000, 0x0fffff).bankr("cartrom"); +} + + static INPUT_PORTS_START( jak_capb ) PORT_START("PA") PORT_DIPNAME( 0x0001, 0x0000, "PA" ) @@ -515,6 +547,43 @@ void spg110_game_state::spg110_spdmo(machine_config& config) m_maincpu->set_video_irq_spidman(true); } + +void spg110_sstarkar_game_state::machine_start() +{ + // if there's a cart, override the standard mapping + if (m_cart && m_cart->exists()) + { + m_cartrom->configure_entries(0, 1, m_cart->get_rom_base()+0x8000, 0x200000-0x8000); + m_cartrom->set_entry(0); + } +} + +DEVICE_IMAGE_LOAD_MEMBER(spg110_sstarkar_game_state::cart_load) +{ + uint32_t size = m_cart->common_get_size("rom"); + + m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); + + return image_init_result::PASS; +} + + +void spg110_sstarkar_game_state::sstarkar(machine_config &config) +{ + spg110_game_state::spg110_base(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &spg110_sstarkar_game_state::mem_map_cart); + + GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "singingstarkaraoke_cart"); + m_cart->set_width(GENERIC_ROM16_WIDTH); + m_cart->set_device_load(FUNC(spg110_sstarkar_game_state::cart_load)); + m_cart->set_must_be_loaded(true); + + SOFTWARE_LIST(config, "cart_list").set_original("singingstarkaraoke_cart"); +} + + ROM_START( jak_capb ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD16_WORD_SWAP( "classicarcadepinball.bin", 0x000000, 0x200000, CRC(b643dab0) SHA1(f57d546758ba442e28b5f0f48b3819b2fc2eb7f7) ) @@ -552,10 +621,9 @@ ROM_START( conyfght ) // MCU (I/O?) read protected TODO: add NO_DUMP ROM_END -// TODO: move this to a Softlist once Vol 1 is dumped -ROM_START( karaokd2 ) +ROM_START( sstarkar ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) - ROM_LOAD16_WORD_SWAP( "karaokidssongs2.bin", 0x000000, 0x200000, CRC(7a1f455c) SHA1(13bb5949629df64f5940923b224d930a4adf23ff) ) + // no internal BIOS ROM_END @@ -575,4 +643,5 @@ CONS( 2003, conyping, 0, 0, spg110_base, conyteni, spg110_game_state, e // Also sold by SDW Games as both TV Virtual Fighter and TV Kickboxing (unit still has TV Virtual Fighter stickers even when box is TV Kickboxing - possibly just box changed due to Sega?) CONS( 200?, conyfght, 0, 0, spg110_base, conyteni, spg110_game_state, empty_init, "Conny / Big Ben", "TV Virtual Fighter / Free Fight Kung Fu (Conny / Big Ben)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) -CONS( 200?, karaokd2, 0, 0, spg110_base, conyteni, spg110_game_state, empty_init, "Imaginarium / ItsMagical", "Karao Kids Songs 2 (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // "ItsMagical" brand from Imaginarium +// The unit contains no BIOS ROM, was sold by Taikee as Singing Star Karaoke, but also by Imaginarium / ItsMagical in Spain as Karao Kids. Cartridges are compatible. +CONS( 200?, sstarkar, 0, 0, sstarkar, conyteni, spg110_sstarkar_game_state, empty_init, "Taikee", "Singing Star Karaoke (World) / Karao Kids (Spain)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // "ItsMagical" brand from Imaginarium diff --git a/src/mame/includes/gba.h b/src/mame/includes/gba.h index e36279f0693..b34a3941aba 100644 --- a/src/mame/includes/gba.h +++ b/src/mame/includes/gba.h @@ -22,24 +22,25 @@ public: m_ldacb(*this, "ldacb"), m_rdacb(*this, "rdacb"), m_gbsound(*this, "custom"), - m_cart(*this, "cartslot"), - m_region_maincpu(*this, "maincpu"), - m_io_inputs(*this, "INPUTS"), - m_bios_hack(*this, "SKIP_CHECK") + m_io_inputs(*this, "INPUTS") { } void gbadv(machine_config &config); - void init_gbadv(); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; -private: required_device m_maincpu; + + void gba_map(address_map &map); + +private: required_device m_ldaca; required_device m_rdaca; required_device m_ldacb; required_device m_rdacb; required_device m_gbsound; - required_device m_cart; void request_irq(uint32_t int_type); @@ -71,24 +72,57 @@ private: uint32_t gba_io_r(offs_t offset, uint32_t mem_mask = ~0); void gba_io_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); - uint32_t gba_bios_r(offs_t offset, uint32_t mem_mask = ~0); uint32_t gba_10000000_r(offs_t offset, uint32_t mem_mask = ~0); DECLARE_WRITE_LINE_MEMBER(int_hblank_callback); DECLARE_WRITE_LINE_MEMBER(int_vblank_callback); DECLARE_WRITE_LINE_MEMBER(int_vcount_callback); DECLARE_WRITE_LINE_MEMBER(dma_hblank_callback); DECLARE_WRITE_LINE_MEMBER(dma_vblank_callback); - virtual void machine_start() override; - virtual void machine_reset() override; TIMER_CALLBACK_MEMBER(dma_complete); TIMER_CALLBACK_MEMBER(timer_expire); TIMER_CALLBACK_MEMBER(handle_irq); - void gba_map(address_map &map); + required_ioport m_io_inputs; +}; + +class gba_cons_state : public gba_state +{ +public: + gba_cons_state(const machine_config &mconfig, device_type type, const char *tag) + : gba_state(mconfig, type, tag), + m_region_maincpu(*this, "maincpu"), + m_cart(*this, "cartslot"), + m_bios_hack(*this, "SKIP_CHECK") + { } + + void gbadv_cons(machine_config &config); + +protected: + virtual void machine_start() override; + + void gba_cons_map(address_map &map); + + uint32_t gba_bios_r(offs_t offset, uint32_t mem_mask = ~0); required_region_ptr m_region_maincpu; - required_ioport m_io_inputs; + required_device m_cart; required_ioport m_bios_hack; }; + +class gba_robotech_state : public gba_state +{ +public: + gba_robotech_state(const machine_config &mconfig, device_type type, const char *tag) + : gba_state(mconfig, type, tag) + { } + + void gbadv_robotech(machine_config &config); + +protected: + + void gba_robotech_map(address_map &map); +}; + + #endif diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 14bf1786671..f8889be46a8 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14890,6 +14890,7 @@ mduckspa // Mega Duck / Super Quique (Spain) @source:gba.cpp gba // Nintendo Game Boy Advance Handheld +robotech // Coleco @source:gberet.cpp gberet // GX577 (c) 1985 @@ -14984,6 +14985,7 @@ jak_gtg jak_sspop jak_hmhsm jak_hmg2 +jak_hmpt jak_hsmg2 jak_umdf jak_duck @@ -32594,6 +32596,7 @@ msimm2 msinamco msisinv msifrog +rbbrite rcapnp senario25 ventur25 @@ -38562,7 +38565,7 @@ jak_spdmoa conyteni // conyping // conyfght -karaokd2 +sstarkar @source:spg29x.cpp hyprscan // -- cgit v1.2.3