summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tomy_princ.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tomy_princ.cpp')
-rw-r--r--src/mame/drivers/tomy_princ.cpp56
1 files changed, 54 insertions, 2 deletions
diff --git a/src/mame/drivers/tomy_princ.cpp b/src/mame/drivers/tomy_princ.cpp
index cf2e22b4ae2..6754bbff471 100644
--- a/src/mame/drivers/tomy_princ.cpp
+++ b/src/mame/drivers/tomy_princ.cpp
@@ -5,11 +5,51 @@
Prin-C use a Fujitsu MB90611A MCU (F2MC-16L)
+[:maincpu] ':maincpu' (FFC431): unmapped program memory write to 0000A1 = 00 & FF CKSCR
+[:maincpu] ':maincpu' (FFC437): unmapped program memory write to 000048 = 04 & FF CS control 0 (Enable out, region is 1 MByte @ F00000)
+[:maincpu] ':maincpu' (FFC43D): unmapped program memory write to 000049 = 04 & FF CS control 1 (Enable out, region is 1 MByte @ E00000)
+[:maincpu] ':maincpu' (FFC443): unmapped program memory write to 00004A = 07 & FF CS control 2 (Enable out, region is 128 byte @ 68FF80)
+[:maincpu] ':maincpu' (FFC449): unmapped program memory write to 00004B = 00 & FF CS control 3 (No out, region is reserved)
+[:maincpu] ':maincpu' (FFC44F): unmapped program memory write to 0000A5 = D3 & FF ARSR (3 cycle wait state from addrs 002000 to 7FFFFF, 3 waits from C0 to FF, 1 cycle wait on addresses > 800000)
+[:maincpu] ':maincpu' (FFC455): unmapped program memory write to 0000A6 = 00 & FF HACR ()
+[:maincpu] ':maincpu' (FFC45B): unmapped program memory write to 0000A7 = 7F & FF ECSR
+[:maincpu] ':maincpu' (FFC461): unmapped program memory write to 000011 = 00 & FF Port 1 DDR
+[:maincpu] ':maincpu' (FFC467): unmapped program memory write to 000012 = FF & FF 2
+[:maincpu] ':maincpu' (FFC46D): unmapped program memory write to 000013 = FF & FF 3
+[:maincpu] ':maincpu' (FFC473): unmapped program memory write to 000014 = FF & FF 4
+[:maincpu] ':maincpu' (FFC479): unmapped program memory write to 000015 = 01 & FF 5
+[:maincpu] ':maincpu' (FFC47F): unmapped program memory write to 000016 = 1F & FF Analog input enable
+[:maincpu] ':maincpu' (FFC485): unmapped program memory write to 000016 = E0 & FF 7
+[:maincpu] ':maincpu' (FFC48B): unmapped program memory write to 000017 = 30 & FF 8
+[:maincpu] ':maincpu' (FFC491): unmapped program memory write to 000018 = 0C & FF 9
+[:maincpu] ':maincpu' (FFC497): unmapped program memory write to 00001A = FF & FF A
+[:maincpu] ':maincpu' (FFC189): unmapped program memory write to 00000A = 00 & FF port A
+[:maincpu] ':maincpu' (FFC257): unmapped program memory write to 00000A = 80 & FF port A
+[:maincpu] ':maincpu' (FE2C08): unmapped program memory write to 0000A9 = 96 & FF TBTC - IRQ enabled, 16.384 ms timebase
+[:maincpu] ':maincpu' (FE2C11): unmapped program memory write to 0000BB = 06 & FF ICR11 - level 6 interrupt, no intelligent I/O
+[:maincpu] ':maincpu' (FE2959): unmapped program memory write to 000017 = 30 & FF port 7 DDR
+[:maincpu] ':maincpu' (FE2963): unmapped program memory write to 0000A9 = 96 & FF TBTC
+[:maincpu] ':maincpu' (FE296C): unmapped program memory write to 0000BB = 06 & FF ICR11
+[:maincpu] ':maincpu' (FE29CC): unmapped program memory write to 000007 = 00 & FF port 7 out
+[:maincpu] ':maincpu' (FE2A69): unmapped program memory write to 0000A9 = 96 & FF TBTC
+[:maincpu] ':maincpu' (FE2A72): unmapped program memory write to 0000BB = 06 & FF ICR11
+[:maincpu] ':maincpu' (FC2AD5): unmapped program memory write to 000018 = 0C & FF port 8 DDR
+[:maincpu] ':maincpu' (FC2ADE): unmapped program memory write to 000039 = 0C & FF TMCSR0 (clock = phase 16 MHz / 2^1, trigger input, rising edge)
+[:maincpu] ':maincpu' (FC2AE8): unmapped program memory write to 000038 = F0 & FF TMCSR0 (toggle output, H Level at start, no count or interrupt enable)
+[:maincpu] ':maincpu' (FC2AF1): unmapped program memory write to 00003D = 0C & FF TMCSR1
+[:maincpu] ':maincpu' (FC2AFB): unmapped program memory write to 00003C = F0 & FF TMCSR1
+[:maincpu] ':maincpu' (FE2B89): unmapped program memory write to 000007 = 00 & FF port 7 out
+[:maincpu] ':maincpu' (FCE68D): unmapped program memory write to 000007 = 10 & FF port 7 out
+[:maincpu] ':maincpu' (FCE6BA): unmapped program memory write to 000034 = 73 & FF PRL0 (PPG0 reload)
+[:maincpu] ':maincpu' (FCE6D3): unmapped program memory write to 000036 = 0D & FF PRL1 (PPG1 reload)
+[:maincpu] ':maincpu' (FCE6DE): unmapped program memory write to 000030 = 85 & FF PPG0C0 (PPG0 control) (PPG Enabled, 16 MHz / 16, no interrupts)
+
************************************************************************/
#include "emu.h"
#include "screen.h"
#include "speaker.h"
+#include "machine/timer.h"
#include "cpu/f2mc16/mb9061x.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
@@ -22,6 +62,7 @@ public:
, m_cart(*this, "cartslot")
, m_screen(*this, "screen")
, m_maincpu(*this, "maincpu")
+ , m_scantimer(*this, "scantimer")
{ }
void tomy_princ(machine_config &config);
@@ -31,13 +72,21 @@ protected:
private:
required_device<generic_slot_device> m_cart;
required_device<screen_device> m_screen;
- required_device<f2mc16_device> m_maincpu;
+ required_device<mb90611_device> m_maincpu;
+ required_device<timer_device> m_scantimer;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(scan_interrupt);
void princ_map(address_map &map);
uint32_t screen_update_tomy_princ(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
+TIMER_DEVICE_CALLBACK_MEMBER(tomy_princ_state::scan_interrupt)
+{
+ m_maincpu->tin0_w(ASSERT_LINE);
+ m_maincpu->tin0_w(CLEAR_LINE);
+}
uint32_t tomy_princ_state::screen_update_tomy_princ(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
@@ -46,7 +95,7 @@ uint32_t tomy_princ_state::screen_update_tomy_princ(screen_device &screen, bitma
void tomy_princ_state::princ_map(address_map &map)
{
- map(0x68ff44, 0x68ff44).lr8("free0", [this]() -> u8 { return m_screen->vblank() ? 1 : 0; });
+ map(0x68ff44, 0x68ff44).lr8("free0", [this]() -> u8 { return m_screen->vblank() ? 0x11 : 0x10; });
map(0xe00000, 0xe07fff).ram(); // stacks are placed here
map(0xf00000, 0xffffff).rom().region("maincpu", 0x00000);
}
@@ -67,6 +116,9 @@ void tomy_princ_state::tomy_princ(machine_config &config)
m_screen->set_size(256, 256);
m_screen->set_visarea(0, 256-1, 0, 256-1);
+ TIMER(config, m_scantimer, 0);
+ m_scantimer->configure_scanline(FUNC(tomy_princ_state::scan_interrupt), "screen", 0, 1);
+
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "princ_cart");
SOFTWARE_LIST(config, "cart_list").set_original("princ");
}