summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2022-06-29 23:54:58 -0400
committer AJR <ajrhacker@users.noreply.github.com>2022-06-29 23:54:58 -0400
commit7e123ca663943617d3d3169582964b8fee3d39ec (patch)
tree95896700dab2f27e9905bd78f3f2f1bd8ecbccb4
parent1e4da89a5a6363fbe66d1d106b5a56788d9ffd8c (diff)
megatrix: Switch to correct CPU type
* sparc: Fix debugger crash
-rw-r--r--src/devices/cpu/sparc/sparc.cpp9
-rw-r--r--src/mame/skeleton/ct909e_segadvd.cpp17
2 files changed, 15 insertions, 11 deletions
diff --git a/src/devices/cpu/sparc/sparc.cpp b/src/devices/cpu/sparc/sparc.cpp
index 137f953433f..2c4ef019be1 100644
--- a/src/devices/cpu/sparc/sparc.cpp
+++ b/src/devices/cpu/sparc/sparc.cpp
@@ -1178,21 +1178,24 @@ void sparc_base_device::state_string_export(const device_state_entry &entry, std
std::unique_ptr<util::disasm_interface> sparc_base_device::create_disassembler()
{
auto dasm = std::make_unique<sparc_disassembler>(static_cast<sparc_disassembler::config const *>(this), sparc_disassembler::v7);
- m_asi_desc_adder(dasm.get());
+ if (m_asi_desc_adder)
+ m_asi_desc_adder(dasm.get());
return std::move(dasm);
}
std::unique_ptr<util::disasm_interface> sparcv8_device::create_disassembler()
{
auto dasm = std::make_unique<sparc_disassembler>(static_cast<sparc_disassembler::config const *>(this), sparc_disassembler::v8);
- m_asi_desc_adder(dasm.get());
+ if (m_asi_desc_adder)
+ m_asi_desc_adder(dasm.get());
return std::move(dasm);
}
std::unique_ptr<util::disasm_interface> mb86930_device::create_disassembler()
{
auto dasm = std::make_unique<sparc_disassembler>(static_cast<sparc_disassembler::config const *>(this), sparc_disassembler::sparclite);
- m_asi_desc_adder(dasm.get());
+ if (m_asi_desc_adder)
+ m_asi_desc_adder(dasm.get());
return std::move(dasm);
}
diff --git a/src/mame/skeleton/ct909e_segadvd.cpp b/src/mame/skeleton/ct909e_segadvd.cpp
index 3e477022075..6ae67c1d3a1 100644
--- a/src/mame/skeleton/ct909e_segadvd.cpp
+++ b/src/mame/skeleton/ct909e_segadvd.cpp
@@ -8,15 +8,15 @@
has AT Games strings in ROM
sold in Spain as MeGaTrix
- uses a Cheertek CT909E-LF System on a Chip ** unknown CPU core **
+ uses a Cheertek CT909E-LF System on a Chip
+ CPU core is likely LEON, a VHDL implementation of SPARC v8
*****************************************************************************/
#include "emu.h"
-#include "cpu/arm7/arm7.h"
-#include "cpu/arm7/arm7core.h"
+#include "cpu/sparc/sparc.h"
#include "screen.h"
#include "speaker.h"
@@ -36,7 +36,7 @@ protected:
virtual void machine_start() override;
virtual void machine_reset() override;
- void arm_map(address_map &map);
+ void mem_map(address_map &map);
required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
@@ -47,9 +47,9 @@ private:
};
-void ct909e_megatrix_state::arm_map(address_map &map)
+void ct909e_megatrix_state::mem_map(address_map &map)
{
- map(0x00000000, 0x003fffff).rom();
+ map(0x00000000, 0x003fffff).rom().region("maincpu", 0);
}
uint32_t ct909e_megatrix_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
@@ -70,8 +70,9 @@ INPUT_PORTS_END
void ct909e_megatrix_state::megatrix(machine_config &config)
{
- ARM9(config, m_maincpu, 100'000'000); // unknown core / frequency, maybe not ARM
- m_maincpu->set_addrmap(AS_PROGRAM, &ct909e_megatrix_state::arm_map);
+ SPARCV8(config, m_maincpu, 100'000'000); // unknown frequency
+ m_maincpu->set_addrmap(0, &ct909e_megatrix_state::mem_map);
+ m_maincpu->set_addrmap(0x19, &ct909e_megatrix_state::mem_map);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);