summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--hash/singingstarkaraoke_cart.xml41
-rw-r--r--src/devices/machine/generalplus_gpl16250soc.cpp4
-rw-r--r--src/mame/drivers/gba.cpp88
-rw-r--r--src/mame/drivers/generalplus_gpl16250_nand.cpp13
-rw-r--r--src/mame/drivers/nes_vt09.cpp7
-rw-r--r--src/mame/drivers/spg110.cpp77
-rw-r--r--src/mame/includes/gba.h58
-rw-r--r--src/mame/mame.lst5
8 files changed, 254 insertions, 39 deletions
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 @@
+<?xml version="1.0"?>
+<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
+<!--
+license:CC0
+-->
+<softwarelist name="singingstarkaraoke_cart" description="Taikee Singing Star Karaoke cartridges">
+
+ <software name="karaokd1" supported="no">
+ <description>Karao Kids Songs 1 (Spain)</description>
+ <year>200?</year>
+ <publisher>Taikee / Imaginarium / ItsMagical</publisher>
+ <part name="cart" interface="singingstarkaraoke_cart">
+ <dataarea name="rom" size="0x200000">
+ <rom name="karaokidssongs1.bin" size="0x200000" crc="7fe29b9f" sha1="6cba45ff2f57c92f978d4bba51ab0f7e59d4c450" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="karaokd2" supported="no">
+ <description>Karao Kids Songs 2 (Spain)</description>
+ <year>200?</year>
+ <publisher>Taikee / Imaginarium / ItsMagical</publisher>
+ <part name="cart" interface="singingstarkaraoke_cart">
+ <dataarea name="rom" size="0x200000">
+ <rom name="karaokidssongs2.bin" size="0x200000" crc="7a1f455c" sha1="13bb5949629df64f5940923b224d930a4adf23ff" />
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="origkara" supported="no">
+ <description>Original Karaoke</description>
+ <year>200?</year>
+ <publisher>Taikee</publisher>
+ <part name="cart" interface="singingstarkaraoke_cart">
+ <dataarea name="rom" size="0x200000">
+ <rom name="originalkaraokeredo.bin" size="0x200000" crc="59129a14" sha1="e45f212e0f6a2e6e8b573b4e62752c9173def056" />
+ </dataarea>
+ </part>
+ </software>
+
+</softwarelist>
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<generic_slot_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<cpu_device> m_maincpu;
+
+ void gba_map(address_map &map);
+
+private:
required_device<dac_byte_interface> m_ldaca;
required_device<dac_byte_interface> m_rdaca;
required_device<dac_byte_interface> m_ldacb;
required_device<dac_byte_interface> m_rdacb;
required_device<gameboy_sound_device> m_gbsound;
- required_device<gba_cart_slot_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<uint32_t> m_region_maincpu;
- required_ioport m_io_inputs;
+ required_device<gba_cart_slot_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 //