summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/bmc/popobear.cpp3
-rw-r--r--src/mame/unico/goori.cpp49
2 files changed, 25 insertions, 27 deletions
diff --git a/src/mame/bmc/popobear.cpp b/src/mame/bmc/popobear.cpp
index 59fc9345a54..33104f7a4ca 100644
--- a/src/mame/bmc/popobear.cpp
+++ b/src/mame/bmc/popobear.cpp
@@ -442,6 +442,7 @@ void popobear_state::main_map(address_map &map)
map(0x280000, 0x2fffff).ram().share("spriteram"); // unknown boundaries
map(0x300000, 0x3fffff).ram().w(FUNC(popobear_state::vram_w)).share("vram"); // tile definitions + tilemaps
+ // TODO: is the 48xxxx block entirely from AIA90423?
map(0x480000, 0x48001f).ram().share("vregs");
map(0x480031, 0x480031).w(FUNC(popobear_state::irq_ack_w));
map(0x480034, 0x480035).nopr(); // uses bset/bclr to write, which causes a read (ignored)
@@ -455,7 +456,7 @@ void popobear_state::main_map(address_map &map)
NAME([this] (offs_t offset) -> u16 {
// TODO: absolute guess, controls title screen faces animation
// Most likely Free Running Timer
- // - PC=039532 latches in $2100b5-b2 at with $48003a / $480022 (upper bytes)
+ // - PC=039532 latches in $2100b5-b2 with $48003a / $480022 (upper bytes)
// - PC=039f4a Reads $48003a (word), writes contents of $480022 (word),
// ANDs with 0xf for title screen anim.
const u8 frame_count = (m_maincpu->total_cycles() >> 8) & 0xf;
diff --git a/src/mame/unico/goori.cpp b/src/mame/unico/goori.cpp
index 0130ec4c2c2..f051803b2c4 100644
--- a/src/mame/unico/goori.cpp
+++ b/src/mame/unico/goori.cpp
@@ -4,10 +4,9 @@
Goori Goori (c) Unico 1999
- hardware is loosely derived from snowbros / Kaneko Pandora
+ hardware is loosely derived from kaneko/snowbros.cpp / Kaneko Pandora
ToDo:
- background image is visible briefly at the start of level, is this correct?
is more than one button used?
Goori Goori PCB layout:
@@ -89,9 +88,6 @@ protected:
private:
void goori_map(address_map& map);
- void goori_300008_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void goori_30000e_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
-
void bg_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
@@ -111,6 +107,8 @@ private:
// video related
tilemap_t* m_bg_tilemap = nullptr;
+
+ bool m_display_enable = false;
};
@@ -137,7 +135,11 @@ void goori_state::video_start()
uint32_t goori_state::screen_update(screen_device& screen, bitmap_ind16& bitmap, const rectangle& cliprect)
{
- //bitmap.fill(0, cliprect);
+ bitmap.fill(0, cliprect);
+
+ if (!m_display_enable)
+ return 0;
+
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
gfx_element *gfx = m_gfxdecode->gfx(0);
@@ -173,24 +175,6 @@ uint32_t goori_state::screen_update(screen_device& screen, bitmap_ind16& bitmap,
return 0;
}
-void goori_state::goori_300008_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- //popmessage("goori_300008_w %04x %04x\n", data, mem_mask); // possibly display disable?
-}
-
-void goori_state::goori_30000e_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- // eeprom writes?
- logerror("%06x goori_30000e_w %04x %04x\n", machine().describe_context(), data, mem_mask); // startup only?
-
- if (mem_mask & 0x00ff)
- {
- m_eeprom->di_write(BIT(data, 2));
- m_eeprom->cs_write(BIT(data, 0));
- m_eeprom->clk_write(BIT(data, 1));
- }
-}
-
void goori_state::goori_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
@@ -199,9 +183,15 @@ void goori_state::goori_map(address_map &map)
map(0x300000, 0x300003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0xff00);
map(0x300004, 0x300004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x300008, 0x300009).w(FUNC(goori_state::goori_300008_w));
+ map(0x300008, 0x300008).lw8(
+ NAME([this] (offs_t offset, u8 data) {
+ if (data & 0xef)
+ logerror("$300008: write %02x\n", data);
+ m_display_enable = bool(BIT(data, 4));
+ })
+ );
- map(0x30000e, 0x30000f).w(FUNC(goori_state::goori_30000e_w));
+ map(0x30000e, 0x30000f).portw("EEPROM");
map(0x400000, 0x400fff).ram().w(FUNC(goori_state::bg_videoram_w)).share(m_bg_videoram); // 8-bit?
@@ -216,6 +206,12 @@ void goori_state::goori_map(address_map &map)
}
static INPUT_PORTS_START( goori )
+ PORT_START("EEPROM")
+ PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
+ PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
+ PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
+ PORT_BIT( 0xfff8, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+
PORT_START("DSW1") /* 500001 */
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) // no dips on this PCB
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
@@ -268,6 +264,7 @@ GFXDECODE_END
void goori_state::machine_start()
{
+ save_item(NAME(m_display_enable));
}
void goori_state::goori(machine_config &config)