From ffb7bb2b8df6be36f4be06df24125e7a771964b9 Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 23 May 2019 18:28:59 +0900 Subject: [PATCH] momoko.cpp : Updates Simplify handlers, Reduce runtime tag lookups, Unnecessary lines, Fix namings, Spacings, Use shorter / correct type values --- src/mame/drivers/momoko.cpp | 84 +++++++++++----------- src/mame/includes/momoko.h | 68 +++++++++++------- src/mame/video/momoko.cpp | 136 +++++++++++++++++------------------- 3 files changed, 145 insertions(+), 143 deletions(-) diff --git a/src/mame/drivers/momoko.cpp b/src/mame/drivers/momoko.cpp index ec0d9096651..f4d8c2545f0 100644 --- a/src/mame/drivers/momoko.cpp +++ b/src/mame/drivers/momoko.cpp @@ -56,9 +56,9 @@ Stephh's notes (based on the game Z80 code and some tests) : #include "speaker.h" -WRITE8_MEMBER(momoko_state::momoko_bg_read_bank_w) +void momoko_state::bg_read_bank_w(u8 data) { - membank("bank1")->set_entry(data & 0x1f); + m_bgbank->set_entry(data & 0x1f); } /****************************************************************************/ @@ -69,23 +69,23 @@ void momoko_state::momoko_map(address_map &map) map(0xc000, 0xcfff).ram(); map(0xd064, 0xd0ff).ram().share("spriteram"); map(0xd400, 0xd400).portr("IN0").nopw(); /* interrupt ack? */ - map(0xd402, 0xd402).portr("IN1").w(FUNC(momoko_state::momoko_flipscreen_w)); + map(0xd402, 0xd402).portr("IN1").w(FUNC(momoko_state::flipscreen_w)); map(0xd404, 0xd404).w("watchdog", FUNC(watchdog_timer_device::reset_w)); map(0xd406, 0xd406).portr("DSW0").w("soundlatch", FUNC(generic_latch_8_device::write)); map(0xd407, 0xd407).portr("DSW1"); map(0xd800, 0xdbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - map(0xdc00, 0xdc00).w(FUNC(momoko_state::momoko_fg_scrolly_w)); - map(0xdc01, 0xdc01).w(FUNC(momoko_state::momoko_fg_scrollx_w)); - map(0xdc02, 0xdc02).w(FUNC(momoko_state::momoko_fg_select_w)); + map(0xdc00, 0xdc00).w(FUNC(momoko_state::fg_scrolly_w)); + map(0xdc01, 0xdc01).w(FUNC(momoko_state::fg_scrollx_w)); + map(0xdc02, 0xdc02).w(FUNC(momoko_state::fg_select_w)); map(0xe000, 0xe3ff).ram().share("videoram"); - map(0xe800, 0xe800).w(FUNC(momoko_state::momoko_text_scrolly_w)); - map(0xe801, 0xe801).w(FUNC(momoko_state::momoko_text_mode_w)); - map(0xf000, 0xffff).bankr("bank1"); - map(0xf000, 0xf001).w(FUNC(momoko_state::momoko_bg_scrolly_w)).share("bg_scrolly"); - map(0xf002, 0xf003).w(FUNC(momoko_state::momoko_bg_scrollx_w)).share("bg_scrollx"); - map(0xf004, 0xf004).w(FUNC(momoko_state::momoko_bg_read_bank_w)); - map(0xf006, 0xf006).w(FUNC(momoko_state::momoko_bg_select_w)); - map(0xf007, 0xf007).w(FUNC(momoko_state::momoko_bg_priority_w)); + map(0xe800, 0xe800).w(FUNC(momoko_state::text_scrolly_w)); + map(0xe801, 0xe801).w(FUNC(momoko_state::text_mode_w)); + map(0xf000, 0xffff).bankr("bgbank"); + map(0xf000, 0xf001).w(FUNC(momoko_state::bg_scrolly_w)).share("bg_scrolly"); + map(0xf002, 0xf003).w(FUNC(momoko_state::bg_scrollx_w)).share("bg_scrollx"); + map(0xf004, 0xf004).w(FUNC(momoko_state::bg_read_bank_w)); + map(0xf006, 0xf006).w(FUNC(momoko_state::bg_select_w)); + map(0xf007, 0xf007).w(FUNC(momoko_state::bg_priority_w)); } void momoko_state::momoko_sound_map(address_map &map) @@ -215,19 +215,17 @@ static const gfx_layout charlayout1 = }; static GFXDECODE_START( gfx_momoko ) - GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout1, 0, 24 ) /* TEXT */ - GFXDECODE_ENTRY( "gfx2", 0x0000, tilelayout, 256, 16 ) /* BG */ - GFXDECODE_ENTRY( "gfx3", 0x0000, charlayout, 0, 1 ) /* FG */ - GFXDECODE_ENTRY( "gfx4", 0x0000, spritelayout, 128, 8 ) /* sprite */ + GFXDECODE_ENTRY( "text", 0x0000, charlayout1, 0, 24 ) /* TEXT */ + GFXDECODE_ENTRY( "bg_gfx", 0x0000, tilelayout, 256, 16 ) /* BG */ + GFXDECODE_ENTRY( "fg_gfx", 0x0000, charlayout, 0, 1 ) /* FG */ + GFXDECODE_ENTRY( "spr_gfx", 0x0000, spritelayout, 128, 8 ) /* sprite */ GFXDECODE_END /****************************************************************************/ void momoko_state::machine_start() { - uint8_t *BG_MAP = memregion("user1")->base(); - - membank("bank1")->configure_entries(0, 32, &BG_MAP[0x0000], 0x1000); + m_bgbank->configure_entries(0, 32, &m_bg_map[0x0000], 0x1000); save_item(NAME(m_fg_scrollx)); save_item(NAME(m_fg_scrolly)); @@ -273,7 +271,7 @@ void momoko_state::momoko(machine_config &config) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); screen.set_size(32*8, 32*8); screen.set_visarea(1*8, 31*8-1, 2*8, 29*8-1); - screen.set_screen_update(FUNC(momoko_state::screen_update_momoko)); + screen.set_screen_update(FUNC(momoko_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_momoko); @@ -309,32 +307,32 @@ ROM_START( momoko ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound CPU */ ROM_LOAD( "momoko01.u4", 0x0000, 0x8000, CRC(e8a6673c) SHA1(f8984b063929305c9058801202405e6d45254b5b) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* text */ + ROM_REGION( 0x2000, "text", 0 ) /* text */ ROM_LOAD( "momoko13.u4", 0x0000, 0x2000, CRC(2745cf5a) SHA1(3db7c6319cac63df1620ef25508c5c45eaa4b141) ) // On the FP-8631 PCB - ROM_REGION( 0x2000, "gfx3", 0 ) /* FG */ + ROM_REGION( 0x2000, "fg_gfx", 0 ) /* FG */ ROM_LOAD( "momoko14.p2", 0x0000, 0x2000, CRC(cfccca05) SHA1(4ecff488a37ac76ecb9ecf8980bea30dcc9c9951) ) - ROM_REGION( 0x10000, "gfx4", 0 ) /* sprite */ + ROM_REGION( 0x10000, "spr_gfx", 0 ) /* sprite */ ROM_LOAD16_BYTE( "momoko16.e5", 0x0000, 0x8000, CRC(fc6876fc) SHA1(b2d06bc01ef9f4db9bf8902d67f31ccbb0fea61a) ) // On the FP-8631 PCB ROM_LOAD16_BYTE( "momoko17.e6", 0x0001, 0x8000, CRC(45dc0247) SHA1(1b2bd4197ab7d237966e037c249b5bd623646c0b) ) // On the FP-8631 PCB - ROM_REGION( 0x20000, "gfx2", 0 ) /* BG */ + ROM_REGION( 0x20000, "bg_gfx", 0 ) /* BG */ ROM_LOAD16_BYTE( "momoko09.e8", 0x00000, 0x8000, CRC(9f5847c7) SHA1(6bc9a00622d8a23446294a8d5d467375c5719125) ) ROM_LOAD16_BYTE( "momoko11.c8", 0x00001, 0x8000, CRC(9c9fbd43) SHA1(7adfd7ea3dd6745c14e719883f1a86e0a3b3c0ff) ) ROM_LOAD16_BYTE( "momoko10.d8", 0x10000, 0x8000, CRC(ae17e74b) SHA1(f52657ea6b6ac518b70fd7b811d9699da27f67d9) ) ROM_LOAD16_BYTE( "momoko12.a8", 0x10001, 0x8000, CRC(1e29c9c4) SHA1(d78f102cefc9852b529dd317a76c7003ec2ad3d5) ) - ROM_REGION( 0x20000, "user1", 0 ) /* BG map */ + ROM_REGION( 0x20000, "bg_map", 0 ) /* BG map */ ROM_LOAD( "momoko04.r8", 0x0000, 0x8000, CRC(3ab3c2c3) SHA1(d4a0d7f83bf64769e90a2c264c6114ac308cb8b5) ) ROM_LOAD( "momoko05.p8", 0x8000, 0x8000, CRC(757cdd2b) SHA1(3471b42dc6458a18894dbd0638f4fe43c86dd70d) ) ROM_LOAD( "momoko06.n8", 0x10000, 0x8000, CRC(20cacf8b) SHA1(e2b39abfc960e1c472e2bcf0cf06825c39941c03) ) ROM_LOAD( "momoko07.l8", 0x18000, 0x8000, CRC(b94b38db) SHA1(9c9e45bbeca7b6b8b0051b144fb31fceaf5d6906) ) - ROM_REGION( 0x2000, "user2", 0 ) /* BG color/priority table */ + ROM_REGION( 0x2000, "bg_col_map", 0 ) /* BG color/priority table */ ROM_LOAD( "momoko08.h8", 0x0000, 0x2000, CRC(69b41702) SHA1(21b33b243dd6eaec8d41d9fd4d9e7faf2bd7f4d2) ) - ROM_REGION( 0x4000, "user3", 0 ) /* FG map */ + ROM_REGION( 0x4000, "fg_map", 0 ) /* FG map */ ROM_LOAD( "momoko15.k2", 0x0000, 0x4000, CRC(8028f806) SHA1(c7450d48803082f64af67fe752b6f49b71b6ff48) ) // On the FP-8631 PCB ROM_REGION( 0x0120, "proms", 0 ) /* TEXT color */ @@ -350,32 +348,32 @@ ROM_START( momokoe ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound CPU */ ROM_LOAD( "momoko01.u4", 0x0000, 0x8000, CRC(e8a6673c) SHA1(f8984b063929305c9058801202405e6d45254b5b) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* text */ + ROM_REGION( 0x2000, "text", 0 ) /* text */ ROM_LOAD( "momoko13.u4", 0x0000, 0x2000, CRC(2745cf5a) SHA1(3db7c6319cac63df1620ef25508c5c45eaa4b141) ) // On the FP-8631 PCB - ROM_REGION( 0x2000, "gfx3", 0 ) /* FG */ + ROM_REGION( 0x2000, "fg_gfx", 0 ) /* FG */ ROM_LOAD( "momoko14.p2", 0x0000, 0x2000, CRC(cfccca05) SHA1(4ecff488a37ac76ecb9ecf8980bea30dcc9c9951) ) - ROM_REGION( 0x10000, "gfx4", 0 ) /* sprite */ + ROM_REGION( 0x10000, "spr_gfx", 0 ) /* sprite */ ROM_LOAD16_BYTE( "momoko16.e5", 0x0000, 0x8000, CRC(fc6876fc) SHA1(b2d06bc01ef9f4db9bf8902d67f31ccbb0fea61a) ) // On the FP-8631 PCB ROM_LOAD16_BYTE( "momoko17.e6", 0x0001, 0x8000, CRC(45dc0247) SHA1(1b2bd4197ab7d237966e037c249b5bd623646c0b) ) // On the FP-8631 PCB - ROM_REGION( 0x20000, "gfx2", 0 ) /* BG */ + ROM_REGION( 0x20000, "bg_gfx", 0 ) /* BG */ ROM_LOAD16_BYTE( "momoko09.e8", 0x00000, 0x8000, CRC(9f5847c7) SHA1(6bc9a00622d8a23446294a8d5d467375c5719125) ) ROM_LOAD16_BYTE( "momoko11.c8", 0x00001, 0x8000, CRC(9c9fbd43) SHA1(7adfd7ea3dd6745c14e719883f1a86e0a3b3c0ff) ) ROM_LOAD16_BYTE( "momoko10.d8", 0x10000, 0x8000, CRC(ae17e74b) SHA1(f52657ea6b6ac518b70fd7b811d9699da27f67d9) ) ROM_LOAD16_BYTE( "momoko12.a8", 0x10001, 0x8000, CRC(1e29c9c4) SHA1(d78f102cefc9852b529dd317a76c7003ec2ad3d5) ) - ROM_REGION( 0x20000, "user1", 0 ) /* BG map */ + ROM_REGION( 0x20000, "bg_map", 0 ) /* BG map */ ROM_LOAD( "momoko04.r8", 0x0000, 0x8000, CRC(3ab3c2c3) SHA1(d4a0d7f83bf64769e90a2c264c6114ac308cb8b5) ) ROM_LOAD( "momoko05.p8", 0x8000, 0x8000, CRC(757cdd2b) SHA1(3471b42dc6458a18894dbd0638f4fe43c86dd70d) ) ROM_LOAD( "momoko06.n8", 0x10000, 0x8000, CRC(20cacf8b) SHA1(e2b39abfc960e1c472e2bcf0cf06825c39941c03) ) ROM_LOAD( "momoko07.l8", 0x18000, 0x8000, CRC(b94b38db) SHA1(9c9e45bbeca7b6b8b0051b144fb31fceaf5d6906) ) - ROM_REGION( 0x2000, "user2", 0 ) /* BG color/priority table */ + ROM_REGION( 0x2000, "bg_col_map", 0 ) /* BG color/priority table */ ROM_LOAD( "momoko08.h8", 0x0000, 0x2000, CRC(69b41702) SHA1(21b33b243dd6eaec8d41d9fd4d9e7faf2bd7f4d2) ) - ROM_REGION( 0x4000, "user3", 0 ) /* FG map */ + ROM_REGION( 0x4000, "fg_map", 0 ) /* FG map */ ROM_LOAD( "momoko15.k2", 0x0000, 0x4000, CRC(8028f806) SHA1(c7450d48803082f64af67fe752b6f49b71b6ff48) ) // On the FP-8631 PCB ROM_REGION( 0x0120, "proms", 0 ) /* TEXT color */ @@ -391,32 +389,32 @@ ROM_START( momokob ) // bootleg board, almost exact copy of an original one ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound CPU */ ROM_LOAD( "momoko01.u4", 0x0000, 0x8000, CRC(e8a6673c) SHA1(f8984b063929305c9058801202405e6d45254b5b) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* text */ + ROM_REGION( 0x2000, "text", 0 ) /* text */ ROM_LOAD( "momoko13.u4", 0x0000, 0x2000, CRC(2745cf5a) SHA1(3db7c6319cac63df1620ef25508c5c45eaa4b141) ) - ROM_REGION( 0x2000, "gfx3", 0 ) /* FG */ + ROM_REGION( 0x2000, "fg_gfx", 0 ) /* FG */ ROM_LOAD( "momoko14.p2", 0x0000, 0x2000, CRC(cfccca05) SHA1(4ecff488a37ac76ecb9ecf8980bea30dcc9c9951) ) - ROM_REGION( 0x10000, "gfx4", 0 ) /* sprite */ + ROM_REGION( 0x10000, "spr_gfx", 0 ) /* sprite */ ROM_LOAD16_BYTE( "16.bin", 0x0000, 0x8000, CRC(49de49a1) SHA1(b4954286cba50332d4366a8160e9fbfd574c60ed) ) ROM_LOAD16_BYTE( "17.bin", 0x0001, 0x8000, CRC(f06a3d1a) SHA1(f377ffad958fdc9cff2baee70ce4ba9080b5fe0d) ) - ROM_REGION( 0x20000, "gfx2", 0 ) /* BG */ + ROM_REGION( 0x20000, "bg_gfx", 0 ) /* BG */ ROM_LOAD16_BYTE( "momoko09.e8", 0x00000, 0x8000, CRC(9f5847c7) SHA1(6bc9a00622d8a23446294a8d5d467375c5719125) ) ROM_LOAD16_BYTE( "momoko11.c8", 0x00001, 0x8000, CRC(9c9fbd43) SHA1(7adfd7ea3dd6745c14e719883f1a86e0a3b3c0ff) ) ROM_LOAD16_BYTE( "10.bin", 0x10000, 0x8000, CRC(68b9156d) SHA1(e157434d7ee33837ba35e720d221bf1eb21b7020) ) ROM_LOAD16_BYTE( "12.bin", 0x10001, 0x8000, CRC(c32f5e19) SHA1(488da565e20bf002ff3dffca1efedbdf29e6e559) ) - ROM_REGION( 0x20000, "user1", 0 ) /* BG map */ + ROM_REGION( 0x20000, "bg_map", 0 ) /* BG map */ ROM_LOAD( "4.bin", 0x0000, 0x8000, CRC(1f0226d5) SHA1(6411e85c51e23dfe6c643692987dc7eeef37538f) ) ROM_LOAD( "momoko05.p8", 0x8000, 0x8000, CRC(757cdd2b) SHA1(3471b42dc6458a18894dbd0638f4fe43c86dd70d) ) ROM_LOAD( "momoko06.n8", 0x10000, 0x8000, CRC(20cacf8b) SHA1(e2b39abfc960e1c472e2bcf0cf06825c39941c03) ) ROM_LOAD( "momoko07.l8", 0x18000, 0x8000, CRC(b94b38db) SHA1(9c9e45bbeca7b6b8b0051b144fb31fceaf5d6906) ) - ROM_REGION( 0x2000, "user2", 0 ) /* BG color/priority table */ + ROM_REGION( 0x2000, "bg_col_map", 0 ) /* BG color/priority table */ ROM_LOAD( "momoko08.h8", 0x0000, 0x2000, CRC(69b41702) SHA1(21b33b243dd6eaec8d41d9fd4d9e7faf2bd7f4d2) ) - ROM_REGION( 0x4000, "user3", 0 ) /* FG map */ + ROM_REGION( 0x4000, "fg_map", 0 ) /* FG map */ ROM_LOAD( "momoko15.k2", 0x0000, 0x4000, CRC(8028f806) SHA1(c7450d48803082f64af67fe752b6f49b71b6ff48) ) ROM_REGION( 0x0120, "proms", 0 ) /* TEXT color */ diff --git a/src/mame/includes/momoko.h b/src/mame/includes/momoko.h index 2fa187ad9a9..984b65b772e 100644 --- a/src/mame/includes/momoko.h +++ b/src/mame/includes/momoko.h @@ -21,6 +21,13 @@ public: m_videoram(*this, "videoram"), m_bg_scrolly(*this, "bg_scrolly"), m_bg_scrollx(*this, "bg_scrollx"), + m_bg_gfx(*this, "bg_gfx"), + m_bg_map(*this, "bg_map"), + m_bg_col_map(*this, "bg_col_map"), + m_fg_map(*this, "fg_map"), + m_proms(*this, "proms"), + m_bgbank(*this, "bgbank"), + m_io_fake(*this, "FAKE"), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") @@ -30,37 +37,44 @@ public: private: /* memory pointers */ - required_shared_ptr m_spriteram; - required_shared_ptr m_videoram; - required_shared_ptr m_bg_scrolly; - required_shared_ptr m_bg_scrollx; + required_shared_ptr m_spriteram; + required_shared_ptr m_videoram; + required_shared_ptr m_bg_scrolly; + required_shared_ptr m_bg_scrollx; + required_region_ptr m_bg_gfx; + required_region_ptr m_bg_map; + required_region_ptr m_bg_col_map; + required_region_ptr m_fg_map; + required_region_ptr m_proms; + required_memory_bank m_bgbank; + required_ioport m_io_fake; /* video-related */ - uint8_t m_fg_scrollx; - uint8_t m_fg_scrolly; - uint8_t m_fg_select; - uint8_t m_text_scrolly; - uint8_t m_text_mode; - uint8_t m_bg_select; - uint8_t m_bg_priority; - uint8_t m_bg_mask; - uint8_t m_fg_mask; - uint8_t m_flipscreen; - DECLARE_WRITE8_MEMBER(momoko_bg_read_bank_w); - DECLARE_WRITE8_MEMBER(momoko_fg_scrollx_w); - DECLARE_WRITE8_MEMBER(momoko_fg_scrolly_w); - DECLARE_WRITE8_MEMBER(momoko_fg_select_w); - DECLARE_WRITE8_MEMBER(momoko_text_scrolly_w); - DECLARE_WRITE8_MEMBER(momoko_text_mode_w); - DECLARE_WRITE8_MEMBER(momoko_bg_scrollx_w); - DECLARE_WRITE8_MEMBER(momoko_bg_scrolly_w); - DECLARE_WRITE8_MEMBER(momoko_bg_select_w); - DECLARE_WRITE8_MEMBER(momoko_bg_priority_w); - DECLARE_WRITE8_MEMBER(momoko_flipscreen_w); + u8 m_fg_scrollx; + u8 m_fg_scrolly; + u8 m_fg_select; + u8 m_text_scrolly; + u8 m_text_mode; + u8 m_bg_select; + u8 m_bg_priority; + u8 m_bg_mask; + u8 m_fg_mask; + u8 m_flipscreen; + void bg_read_bank_w(u8 data); + void fg_scrollx_w(u8 data); + void fg_scrolly_w(u8 data); + void fg_select_w(u8 data); + void text_scrolly_w(u8 data); + void text_mode_w(u8 data); + void bg_scrollx_w(offs_t offset, u8 data); + void bg_scrolly_w(offs_t offset, u8 data); + void bg_select_w(u8 data); + void bg_priority_w(u8 data); + void flipscreen_w(u8 data); virtual void machine_start() override; virtual void machine_reset() override; - uint32_t screen_update_momoko(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void momoko_draw_bg_pri( bitmap_ind16 &bitmap, int chr, int col, int flipx, int flipy, int x, int y, int pri ); + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_bg_pri(bitmap_ind16 &bitmap, int chr, int col, int flipx, int flipy, int x, int y, int pri); required_device m_maincpu; required_device m_gfxdecode; required_device m_palette; diff --git a/src/mame/video/momoko.cpp b/src/mame/video/momoko.cpp index 06292f12367..a6ed40f4971 100644 --- a/src/mame/video/momoko.cpp +++ b/src/mame/video/momoko.cpp @@ -14,78 +14,75 @@ #include "includes/momoko.h" -WRITE8_MEMBER(momoko_state::momoko_fg_scrollx_w) +void momoko_state::fg_scrollx_w(u8 data) { m_fg_scrollx = data; } -WRITE8_MEMBER(momoko_state::momoko_fg_scrolly_w) +void momoko_state::fg_scrolly_w(u8 data) { m_fg_scrolly = data; } -WRITE8_MEMBER(momoko_state::momoko_fg_select_w) +void momoko_state::fg_select_w(u8 data) { m_fg_select = data & 0x0f; m_fg_mask = data & 0x10; } -WRITE8_MEMBER(momoko_state::momoko_text_scrolly_w) +void momoko_state::text_scrolly_w(u8 data) { m_text_scrolly = data; } -WRITE8_MEMBER(momoko_state::momoko_text_mode_w) +void momoko_state::text_mode_w(u8 data) { m_text_mode = data; } -WRITE8_MEMBER(momoko_state::momoko_bg_scrollx_w) +void momoko_state::bg_scrollx_w(offs_t offset, u8 data) { m_bg_scrollx[offset] = data; } -WRITE8_MEMBER(momoko_state::momoko_bg_scrolly_w) +void momoko_state::bg_scrolly_w(offs_t offset, u8 data) { m_bg_scrolly[offset] = data; } -WRITE8_MEMBER(momoko_state::momoko_bg_select_w) +void momoko_state::bg_select_w(u8 data) { m_bg_select = data & 0x0f; m_bg_mask = data & 0x10; } -WRITE8_MEMBER(momoko_state::momoko_bg_priority_w) +void momoko_state::bg_priority_w(u8 data) { m_bg_priority = data & 0x01; } -WRITE8_MEMBER(momoko_state::momoko_flipscreen_w) +void momoko_state::flipscreen_w(u8 data) { m_flipscreen = data & 0x01; } /****************************************************************************/ -void momoko_state::momoko_draw_bg_pri( bitmap_ind16 &bitmap, int chr, int col, int flipx, int flipy, int x, int y, int pri ) +void momoko_state::draw_bg_pri(bitmap_ind16 &bitmap, int chr, int col, int flipx, int flipy, int x, int y, int pri) { - int xx, sx, sy, px, py, dot; - uint32_t gfxadr; - uint8_t d0, d1; - uint8_t *BG_GFX = memregion("gfx2")->base(); + int px, py; - for (sy = 0; sy < 8; sy++) + for (int sy = 0; sy < 8; sy++) { - gfxadr = chr * 16 + sy * 2; - for (xx = 0; xx < 2; xx++) + const u32 gfxadr = chr * 16 + sy * 2; + for (int xx = 0; xx < 2; xx++) { - d0 = BG_GFX[gfxadr + xx * 4096]; - d1 = BG_GFX[gfxadr + xx * 4096 + 1]; + u8 d0 = m_bg_gfx[gfxadr + xx * 4096]; + u8 d1 = m_bg_gfx[gfxadr + xx * 4096 + 1]; - for (sx = 0; sx < 4; sx++) + for (int sx = 0; sx < 4; sx++) { - dot = (d0 & 0x08) | ((d0 & 0x80) >>5) | ((d1 & 0x08) >>2) | ((d1 & 0x80) >>7); + const u8 dot = (d0 & 0x08) | ((d0 & 0x80) >> 5) | ((d1 & 0x08) >> 2) | ((d1 & 0x80) >> 7); if (flipx == 0) px = sx + xx * 4 + x; else px = 7 - sx - xx * 4 + x; if (flipy == 0) py = sy + y; @@ -103,34 +100,27 @@ void momoko_state::momoko_draw_bg_pri( bitmap_ind16 &bitmap, int chr, int col, i /****************************************************************************/ -uint32_t momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 momoko_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int x, y, dx, dy, rx, ry, radr, chr, sy, fx, fy, px, py, offs, col, pri, flip ; - uint8_t *spriteram = m_spriteram; + int px, py, col; - uint8_t *BG_MAP = memregion("user1")->base(); - uint8_t *BG_COL_MAP = memregion("user2")->base(); - uint8_t *FG_MAP = memregion("user3")->base(); - uint8_t *TEXT_COLOR = memregion("proms")->base(); - - - flip = m_flipscreen ^ (ioport("FAKE")->read() & 0x01); + const int flip = m_flipscreen ^ (m_io_fake->read() & 0x01); /* draw BG layer */ - dx = (7 - m_bg_scrollx[0]) & 7; - dy = (7 - m_bg_scrolly[0]) & 7; - rx = (m_bg_scrollx[0] + m_bg_scrollx[1] * 256) >> 3; - ry = (m_bg_scrolly[0] + m_bg_scrolly[1] * 256) >> 3; + int dx = (7 - m_bg_scrollx[0]) & 7; + int dy = (7 - m_bg_scrolly[0]) & 7; + int rx = (m_bg_scrollx[0] + m_bg_scrollx[1] * 256) >> 3; + int ry = (m_bg_scrolly[0] + m_bg_scrolly[1] * 256) >> 3; if (m_bg_mask == 0) { - for (y = 0; y < 29; y++) + for (int y = 0; y < 29; y++) { - for (x = 0; x < 32; x++) + for (int x = 0; x < 32; x++) { - radr = ((ry + y + 2) & 0x3ff) * 128 + ((rx + x) & 0x7f); - chr = BG_MAP[radr]; - col = BG_COL_MAP[chr + m_bg_select * 512 + m_bg_priority * 256] & 0x0f; + const int radr = ((ry + y + 2) & 0x3ff) * 128 + ((rx + x) & 0x7f); + u32 chr = m_bg_map[radr]; + col = m_bg_col_map[chr + m_bg_select * 512 + m_bg_priority * 256] & 0x0f; chr = chr + m_bg_select * 512; if (flip == 0) @@ -157,15 +147,15 @@ uint32_t momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 /* draw sprites (momoko) */ - for (offs = 0; offs < 9 * 4; offs +=4) + for (int offs = 0; offs < 9 * 4; offs +=4) { - chr = spriteram[offs + 1] | ((spriteram[offs + 2] & 0x60) << 3); + u32 chr = m_spriteram[offs + 1] | ((m_spriteram[offs + 2] & 0x60) << 3); chr = ((chr & 0x380) << 1) | (chr & 0x7f); - col = spriteram[offs + 2] & 0x07; - fx = ((spriteram[offs + 2] & 0x10) >> 4) ^ flip; - fy = ((spriteram[offs + 2] & 0x08) >> 3) ^ flip; /* ??? */ - x = spriteram[offs + 3]; - y = spriteram[offs + 0]; + col = m_spriteram[offs + 2] & 0x07; + const int fx = ((m_spriteram[offs + 2] & 0x10) >> 4) ^ flip; + const int fy = ((m_spriteram[offs + 2] & 0x08) >> 3) ^ flip; /* ??? */ + int x = m_spriteram[offs + 3]; + int y = m_spriteram[offs + 0]; if (flip == 0) { @@ -187,16 +177,16 @@ uint32_t momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 /* draw BG layer */ - if (m_bg_mask ==0) + if (m_bg_mask == 0) { - for (y = 0; y < 29; y++) + for (int y = 0; y < 29; y++) { - for (x = 0; x < 32; x++) + for (int x = 0; x < 32; x++) { - radr = ((ry + y + 2) & 0x3ff) * 128 + ((rx + x) & 0x7f) ; - chr = BG_MAP[radr] ; - col = BG_COL_MAP[chr + m_bg_select * 512 + m_bg_priority * 256]; - pri = (col & 0x10) >> 1; + const int radr = ((ry + y + 2) & 0x3ff) * 128 + ((rx + x) & 0x7f); + u32 chr = m_bg_map[radr]; + col = m_bg_col_map[chr + m_bg_select * 512 + m_bg_priority * 256]; + const u8 pri = (col & 0x10) >> 1; if (flip == 0) { @@ -212,7 +202,7 @@ uint32_t momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 { col = col & 0x0f; chr = chr + m_bg_select * 512; - momoko_draw_bg_pri(bitmap, chr, col, flip, flip, px, py, pri); + draw_bg_pri(bitmap, chr, col, flip, flip, px, py, pri); } } } @@ -220,15 +210,15 @@ uint32_t momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 /* draw sprites (others) */ - for (offs = 9 * 4; offs < m_spriteram.bytes(); offs += 4) + for (int offs = 9 * 4; offs < m_spriteram.bytes(); offs += 4) { - chr = spriteram[offs + 1] | ((spriteram[offs + 2] & 0x60) << 3); + u32 chr = m_spriteram[offs + 1] | ((m_spriteram[offs + 2] & 0x60) << 3); chr = ((chr & 0x380) << 1) | (chr & 0x7f); - col = spriteram[offs + 2] & 0x07; - fx = ((spriteram[offs + 2] & 0x10) >> 4) ^ flip; - fy = ((spriteram[offs + 2] & 0x08) >> 3) ^ flip; /* ??? */ - x = spriteram[offs + 3]; - y = spriteram[offs + 0]; + col = m_spriteram[offs + 2] & 0x07; + const int fx = ((m_spriteram[offs + 2] & 0x10) >> 4) ^ flip; + const int fy = ((m_spriteram[offs + 2] & 0x08) >> 3) ^ flip; /* ??? */ + int x = m_spriteram[offs + 3]; + int y = m_spriteram[offs + 0]; if (flip == 0) { @@ -249,18 +239,18 @@ uint32_t momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 /* draw text layer */ - for (y = 16; y < 240; y++) + for (int y = 16; y < 240; y++) { - for (x = 0; x < 32; x++) + for (int x = 0; x < 32; x++) { - sy = y; + int sy = y; if (m_text_mode == 0) - col = TEXT_COLOR[(sy >> 3) + 0x100] & 0x0f; + col = m_proms[(sy >> 3) + 0x100] & 0x0f; else { - if (TEXT_COLOR[y] < 0x08) + if (m_proms[y] < 0x08) sy += m_text_scrolly; - col = (TEXT_COLOR[y] & 0x07) + 0x10; + col = (m_proms[y] & 0x07) + 0x10; } dy = sy & 7; if (flip == 0) @@ -290,12 +280,12 @@ uint32_t momoko_state::screen_update_momoko(screen_device &screen, bitmap_ind16 rx = m_fg_scrollx >> 3; ry = m_fg_scrolly >> 3; - for (y = 0; y < 29; y++) + for (int y = 0; y < 29; y++) { - for (x = 0; x < 32; x++) + for (int x = 0; x < 32; x++) { - radr = ((ry + y + 34) & 0x3f) * 0x20 + ((rx + x) & 0x1f) + (m_fg_select & 3) * 0x800; - chr = FG_MAP[radr] ; + const int radr = ((ry + y + 34) & 0x3f) * 0x20 + ((rx + x) & 0x1f) + (m_fg_select & 3) * 0x800; + const u32 chr = m_fg_map[radr]; if (flip == 0) { px = 8 * x + dx - 6;