From 1ec389bb08e84d7b53b00121264f5f9f8e311327 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 19 Mar 2023 10:33:39 +1100 Subject: misc/homdata.cpp, konami/thunderx.cpp: Cleaned up a little. Replaced bankdev with views, cleaned up ROM banking, split up classes for fewer optional object finders. --- src/devices/bus/mackbd/keyboard.cpp | 40 +-- src/devices/bus/mackbd/pluskbd.cpp | 21 +- src/mame/konami/thunderx.cpp | 446 +++++++++++++++++------- src/mame/konami/thunderx.h | 99 ------ src/mame/konami/thunderx_v.cpp | 90 ----- src/mame/misc/homedata.cpp | 677 +++++++++++++++++------------------- src/mame/misc/homedata.h | 217 +++++++----- src/mame/misc/homedata_v.cpp | 225 ++++++------ 8 files changed, 925 insertions(+), 890 deletions(-) delete mode 100644 src/mame/konami/thunderx.h delete mode 100644 src/mame/konami/thunderx_v.cpp diff --git a/src/devices/bus/mackbd/keyboard.cpp b/src/devices/bus/mackbd/keyboard.cpp index bda86980a05..617730f3e6a 100644 --- a/src/devices/bus/mackbd/keyboard.cpp +++ b/src/devices/bus/mackbd/keyboard.cpp @@ -591,7 +591,7 @@ INPUT_PORTS_START(keyboard_gb) PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_MODIFY("ROW3") - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR(0xa3) // £ + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR(U'£') PORT_MODIFY("ROW6") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('`') PORT_CHAR('~') @@ -606,7 +606,7 @@ INPUT_PORTS_START(keyboard_gb) PORT_MODIFY("ROW8") PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RCONTROL) PORT_NAME("Enter") - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR(0xa7) PORT_CHAR('#') // § + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR(U'§') PORT_CHAR('#') PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') INPUT_PORTS_END @@ -630,27 +630,27 @@ INPUT_PORTS_START(keyboard_fr) PORT_MODIFY("ROW3") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('&') PORT_CHAR('1') - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR(0xe9) PORT_CHAR('2') // é + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR(U'é') PORT_CHAR('2') PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('"') PORT_CHAR('3') PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('\'') PORT_CHAR('4') - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR(0xa7) PORT_CHAR('6') // § + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR(U'§') PORT_CHAR('6') PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('(') PORT_CHAR('5') PORT_MODIFY("ROW4") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('_') - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR(0xe7) PORT_CHAR('9') // ç - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR(0xe8) PORT_CHAR('7') // è - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR(')') PORT_CHAR(0xb0) // ° + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR(U'ç') PORT_CHAR('9') + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR(U'è') PORT_CHAR('7') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR(')') PORT_CHAR(U'°') PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('!') PORT_CHAR('8') - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR(0xe0) PORT_CHAR('0') // à + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR(U'à') PORT_CHAR('0') PORT_MODIFY("ROW5") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('$') PORT_CHAR('*') - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(0x2c6) PORT_CHAR(0xa8) // ˆ ¨ + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(U'ˆ') PORT_CHAR(U'¨') PORT_MODIFY("ROW6") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('`') PORT_CHAR(0xa3) // £ - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0xf9) PORT_CHAR('%') // ù + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('`') PORT_CHAR(U'£') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(U'ù') PORT_CHAR('%') PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR('m') PORT_CHAR('M') PORT_MODIFY("ROW7") @@ -675,7 +675,7 @@ INPUT_PORTS_START(keyboard_it) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('w') PORT_CHAR('W') PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR(0xf2) PORT_CHAR('!') // ò + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR(U'ò') PORT_CHAR('!') PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_MODIFY("ROW2") @@ -686,22 +686,22 @@ INPUT_PORTS_START(keyboard_it) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('"') PORT_CHAR('2') PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('\'') PORT_CHAR('3') PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('(') PORT_CHAR('4') - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR(0xe8) PORT_CHAR('6') // è - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR(0xe7) PORT_CHAR('5') // ç + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR(U'è') PORT_CHAR('6') + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR(U'ç') PORT_CHAR('5') PORT_MODIFY("ROW4") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR(0xe0) PORT_CHAR('9') // à + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR(U'à') PORT_CHAR('9') PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR(')') PORT_CHAR('7') - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR(0xa3) PORT_CHAR('8') // £ - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR(0xe9) PORT_CHAR('0') // é + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR(U'£') PORT_CHAR('8') + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR(U'é') PORT_CHAR('0') PORT_MODIFY("ROW5") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('$') PORT_CHAR('*') - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(0xec) PORT_CHAR(0x2c6) // ì ˆ + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(U'ì') PORT_CHAR(U'ˆ') PORT_MODIFY("ROW6") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(0xa7) PORT_CHAR(0xb0) // § ° - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0xf9) PORT_CHAR('%') // ù + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(U'§') PORT_CHAR(U'°') + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(U'ù') PORT_CHAR('%') PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR('m') PORT_CHAR('M') PORT_MODIFY("ROW7") diff --git a/src/devices/bus/mackbd/pluskbd.cpp b/src/devices/bus/mackbd/pluskbd.cpp index de744f9219b..b7b79ae66ab 100644 --- a/src/devices/bus/mackbd/pluskbd.cpp +++ b/src/devices/bus/mackbd/pluskbd.cpp @@ -74,7 +74,7 @@ The Japanese version has katakana labels on the key caps in addition to the Latin labels, ¥ (Yen) replacing \ (backslash), and カナ - (kana) replacing Caps Lock. It is still has the ANSI "typewriter + (kana) replacing Caps Lock. It still has the ANSI "typewriter shift" arrangement for Latin characters and ASCII punctuation (it doesn't use the JIS "bit shift" arrangement). @@ -85,7 +85,6 @@ #include "cpu/mcs48/mcs48.h" -#define LOG_GENERAL (1U << 0) #define LOG_MATRIX (1U << 1) #define LOG_COMM (1U << 2) @@ -332,11 +331,11 @@ INPUT_PORTS_START(keyboard_fr) PORT_MODIFY("ROW0") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('z') PORT_CHAR('Z') - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR(0xe9) PORT_CHAR('2') // é + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR(U'é') PORT_CHAR('2') PORT_MODIFY("ROW1") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('<') PORT_CHAR('>') - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(0x2c6) PORT_CHAR(0xa8) // ˆ ¨ + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(U'ˆ') PORT_CHAR(U'¨') PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('"') PORT_CHAR('3') PORT_MODIFY("ROW2") @@ -344,17 +343,17 @@ INPUT_PORTS_START(keyboard_fr) PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('\'') PORT_CHAR('4') PORT_MODIFY("ROW3") - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0xf9) PORT_CHAR('%') // ù + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(U'ù') PORT_CHAR('%') PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('(') PORT_CHAR('5') PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR(',') PORT_CHAR('?') PORT_MODIFY("ROW4") - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR(0xa7) PORT_CHAR('6') // § + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR(U'§') PORT_CHAR('6') PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(';') PORT_CHAR('.') PORT_MODIFY("ROW5") PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('_') - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR(0xe8) PORT_CHAR('7') // è + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR(U'è') PORT_CHAR('7') PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR(':') PORT_CHAR('/') PORT_MODIFY("ROW6") @@ -364,14 +363,14 @@ INPUT_PORTS_START(keyboard_fr) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('=') PORT_CHAR('+') PORT_MODIFY("ROW7") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR(0xe0) PORT_CHAR('0') // à + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR(U'à') PORT_CHAR('0') PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR('m') PORT_CHAR('M') - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR(0xe7) PORT_CHAR('9') // ç + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR(U'ç') PORT_CHAR('9') PORT_MODIFY("ROW8") PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('w') PORT_CHAR('W') PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('q') PORT_CHAR('Q') - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR(0xa3) // £ + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR(U'£') PORT_MODIFY("ROW9") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('a') PORT_CHAR('A') @@ -389,7 +388,7 @@ INPUT_PORTS_START(keyboard_jp) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_NAME(u8"V \u30d2") // ヒ PORT_MODIFY("ROW1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(0xa5) PORT_CHAR('|') PORT_NAME(u8"¥ | \u30d8") // ヘ + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(U'¥') PORT_CHAR('|') PORT_NAME(u8"¥ | \u30d8") // ヘ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') PORT_NAME(u8"[ { \u309b \u300d") // ゛ 」 PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') PORT_NAME(u8"F \u30cf") // ハ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') PORT_NAME(u8"E \u30a4 \u30a3") // イ ィ diff --git a/src/mame/konami/thunderx.cpp b/src/mame/konami/thunderx.cpp index 3eb6dd81eec..9fbffb78b99 100644 --- a/src/mame/konami/thunderx.cpp +++ b/src/mame/konami/thunderx.cpp @@ -33,50 +33,246 @@ ***************************************************************************/ #include "emu.h" -#include "thunderx.h" + +#include "k051960.h" +#include "k052109.h" +#include "konami_helper.h" #include "konamipt.h" +#include "cpu/m6809/konami.h" #include "cpu/z80/z80.h" #include "machine/gen_latch.h" #include "machine/watchdog.h" +#include "sound/k007232.h" #include "sound/ymopm.h" + +#include "emupal.h" +#include "screen.h" #include "speaker.h" //#define VERBOSE 1 #include "logmacro.h" +namespace { + +class thunderx_state_base : public driver_device +{ +public: + thunderx_state_base(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_audiocpu(*this, "audiocpu"), + m_k052109(*this, "k052109"), + m_k051960(*this, "k051960"), + m_palette(*this, "palette"), + m_rombank(*this, "rombank"), + m_bank5800(*this, "bank5800") + { } + +protected: + // devices + required_device m_maincpu; + required_device m_audiocpu; + required_device m_k052109; + required_device m_k051960; + required_device m_palette; + + // memory + required_memory_bank m_rombank; + memory_view m_bank5800; + + // misc + uint8_t m_priority = 0; + uint8_t m_1f98_latch = 0; + + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + + uint8_t _1f98_r(); + void scontra_1f98_w(uint8_t data); + + void common(machine_config &config) ATTR_COLD; + + void scontra_map(address_map &map) ATTR_COLD; + + void thunderx_sound_map(address_map &map) ATTR_COLD; + +private: + void scontra_bankswitch_w(uint8_t data); + void sh_irqtrigger_w(uint8_t data); + uint8_t k052109_051960_r(offs_t offset); + void k052109_051960_w(offs_t offset, uint8_t data); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + K052109_CB_MEMBER(tile_callback); + K051960_CB_MEMBER(sprite_callback); +}; + + +class scontra_state : public thunderx_state_base +{ +public: + scontra_state(const machine_config &mconfig, device_type type, const char *tag) : + thunderx_state_base(mconfig, type, tag), + m_k007232(*this, "k007232") + { + } + + void scontra(machine_config &config) ATTR_COLD; + void gbusters(machine_config &config) ATTR_COLD; + +private: + required_device m_k007232; + + void gbusters_videobank_w(uint8_t data); + void k007232_bankswitch_w(uint8_t data); + + K052109_CB_MEMBER(gbusters_tile_callback); + void volume_callback(uint8_t data); + + void gbusters_map(address_map &map) ATTR_COLD; + + void scontra_sound_map(address_map &map) ATTR_COLD; +}; + + +class thunderx_state : public thunderx_state_base +{ +public: + thunderx_state(const machine_config &mconfig, device_type type, const char *tag) : + thunderx_state_base(mconfig, type, tag), + m_pmcram(*this, "pmcram") + { + } + + void thunderx(machine_config &config) ATTR_COLD; + +protected: + virtual void machine_start() override ATTR_COLD; + +private: + required_shared_ptr m_pmcram; + + emu_timer *m_thunderx_firq_timer = nullptr; + + uint8_t pmc_bk() const { return BIT(m_1f98_latch, 1); } + + TIMER_CALLBACK_MEMBER(thunderx_firq_cb); + uint8_t pmc_r(offs_t offset); + void pmc_w(offs_t offset, uint8_t data); + void thunderx_videobank_w(uint8_t data); + void thunderx_1f98_w(uint8_t data); + + void run_collisions(int s0, int e0, int s1, int e1, int cm, int hm); + void calculate_collisions(); + + void thunderx_map(address_map &map) ATTR_COLD; +}; + + +/*************************************************************************** + + Callbacks for the K052109 + +***************************************************************************/ + +static const int layer_colorbase[] = { 768 / 16, 0 / 16, 256 / 16 }; + +K052109_CB_MEMBER(thunderx_state_base::tile_callback) +{ + *code |= ((*color & 0x1f) << 8) | (bank << 13); + *color = layer_colorbase[layer] + ((*color & 0xe0) >> 5); +} + +K052109_CB_MEMBER(scontra_state::gbusters_tile_callback) +{ + /* (color & 0x02) is flip y handled internally by the 052109 */ + *code |= ((*color & 0x0d) << 8) | ((*color & 0x10) << 5) | (bank << 12); + *color = layer_colorbase[layer] + ((*color & 0xe0) >> 5); +} + +/*************************************************************************** + + Callbacks for the K051960 + +***************************************************************************/ + +K051960_CB_MEMBER(thunderx_state_base::sprite_callback) +{ + enum { sprite_colorbase = 512 / 16 }; + + /* Sprite priority 1 means appear behind background, used only to mask sprites */ + /* in the foreground */ + /* Sprite priority 3 means don't draw (not used) */ + switch (*color & 0x30) + { + case 0x00: *priority = 0; break; + case 0x10: *priority = GFX_PMASK_2 | GFX_PMASK_1; break; + case 0x20: *priority = GFX_PMASK_2; break; + case 0x30: *priority = 0xffff; break; + } + + *color = sprite_colorbase + (*color & 0x0f); +} + + +/*************************************************************************** + + Display refresh + +***************************************************************************/ + +uint32_t thunderx_state_base::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_k052109->tilemap_update(); + + screen.priority().fill(0, cliprect); + + // The background color is always from layer 1 + m_k052109->tilemap_draw(screen, bitmap, cliprect, 1, TILEMAP_DRAW_OPAQUE, 0); + + const int bg = m_priority ? 2 : 1; + const int fg = m_priority ? 1 : 2; + + m_k052109->tilemap_draw(screen, bitmap, cliprect, bg, 0, 1); + m_k052109->tilemap_draw(screen, bitmap, cliprect, fg, 0, 2); + m_k051960->k051960_sprites_draw(bitmap, cliprect, screen.priority(), -1, -1); + m_k052109->tilemap_draw(screen, bitmap, cliprect, 0, 0, 0); + + return 0; +} + + TIMER_CALLBACK_MEMBER(thunderx_state::thunderx_firq_cb) { m_maincpu->set_input_line(KONAMI_FIRQ_LINE, HOLD_LINE); } -#define PMC_BK (m_1f98_latch & 0x02) - uint8_t thunderx_state::pmc_r(offs_t offset) { - if (PMC_BK) + if (pmc_bk()) { // logerror("%04x read pmcram %04x\n",m_audiocpu->pc(),offset); return m_pmcram[offset]; } else { - LOG("%04x read pmc internal ram %04x\n",m_audiocpu->pc(),offset); + LOG("%04x read pmc internal ram %04x\n", m_audiocpu->pc(), offset); return 0; } } void thunderx_state::pmc_w(offs_t offset, uint8_t data) { - if (PMC_BK) + if (pmc_bk()) { - LOG("%04x pmcram %04x = %02x\n",m_audiocpu->pc(),offset,data); + LOG("%04x pmcram %04x = %02x\n", m_audiocpu->pc(), offset, data); m_pmcram[offset] = data; } else { - LOG("%04x pmc internal ram %04x = %02x\n",m_audiocpu->pc(),offset,data); + LOG("%04x pmc internal ram %04x = %02x\n", m_audiocpu->pc(), offset, data); } } @@ -220,7 +416,7 @@ void thunderx_state::run_collisions( int s0, int e0, int s1, int e1, int cm, int // // emulates K052591 collision detection -void thunderx_state::calculate_collisions( ) +void thunderx_state::calculate_collisions() { int X0,Y0; int X1,Y1; @@ -271,7 +467,7 @@ void thunderx_state::calculate_collisions( ) run_collisions(X0, Y0, X1, Y1, CM, HM); } -void thunderx_state::scontra_1f98_w(uint8_t data) +void thunderx_state_base::scontra_1f98_w(uint8_t data) { // bit 0 = enable char ROM reading through the video RAM m_k052109->set_rmrd_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); @@ -279,9 +475,9 @@ void thunderx_state::scontra_1f98_w(uint8_t data) m_1f98_latch = data; } -uint8_t thunderx_state::_1f98_r() +uint8_t thunderx_state_base::_1f98_r() { - // thunderx and gbusters read from here during the gfx rom test... + // thunderx and gbusters read from here during the gfx ROM test... // though it doesn't look like it should be readable based on the schematics return m_1f98_latch; } @@ -290,9 +486,6 @@ void thunderx_state::thunderx_1f98_w(uint8_t data) { // logerror("%04x: 1f98_w %02x\n", m_maincpu->pc(),data); - // bit 0 = enable char ROM reading through the video RAM - m_k052109->set_rmrd_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); - // bit 1 = PMC BK (select PMC program or data RAM) // handled in pmc_r() and pmc_w() @@ -301,27 +494,30 @@ void thunderx_state::thunderx_1f98_w(uint8_t data) { calculate_collisions(); - /* 100 cycle delay is arbitrary */ + // 100 cycle delay is arbitrary m_thunderx_firq_timer->adjust(m_maincpu->cycles_to_attotime(100)); } - m_1f98_latch = data; + scontra_1f98_w(data); } -void thunderx_state::scontra_bankswitch_w(uint8_t data) +void thunderx_state_base::scontra_bankswitch_w(uint8_t data) { // bits 0-3 select ROM bank at 6000-7fff m_rombank->set_entry(data & 0x0f); // bit 4 selects work RAM or palette RAM at 5800-5fff - m_bank5800->set_bank((data & 0x10) >> 4); + if (BIT(data, 4)) + m_bank5800.disable(); + else + m_bank5800.select(0); // bits 5-6 coin counters - machine().bookkeeping().coin_counter_w(0, data & 0x20); - machine().bookkeeping().coin_counter_w(1, data & 0x40); + machine().bookkeeping().coin_counter_w(0, BIT(data, 5)); + machine().bookkeeping().coin_counter_w(1, BIT(data, 6)); // bit 7 controls layer priority - m_priority = data & 0x80; + m_priority = BIT(data, 7); } void thunderx_state::thunderx_videobank_w(uint8_t data) @@ -329,42 +525,50 @@ void thunderx_state::thunderx_videobank_w(uint8_t data) // 0x01 = work RAM at 4000-5fff // 0x00 = palette at 5800-5fff // 0x10 = PMC at 5800-5fff - m_bank5800->set_bank(data & 0x10 ? 2 : (data & 0x1)); + if (BIT(data, 4)) + m_bank5800.select(1); + else if (BIT(data, 0)) + m_bank5800.disable(); + else + m_bank5800.select(0); - /* bits 1-2 coin counters */ - machine().bookkeeping().coin_counter_w(0, data & 0x02); - machine().bookkeeping().coin_counter_w(1, data & 0x04); + // bits 1-2 coin counters + machine().bookkeeping().coin_counter_w(0, BIT(data, 1)); + machine().bookkeeping().coin_counter_w(1, BIT(data, 2)); - /* bit 3 controls layer priority */ - m_priority = data & 0x08; + // bit 3 controls layer priority + m_priority = BIT(data, 3); } -void thunderx_state::gbusters_videobank_w(uint8_t data) +void scontra_state::gbusters_videobank_w(uint8_t data) { // same as thunderx without the PMC - m_bank5800->set_bank(data & 0x1); + if (BIT(data, 0)) + m_bank5800.disable(); + else + m_bank5800.select(0); - machine().bookkeeping().coin_counter_w(0, data & 0x02); - machine().bookkeeping().coin_counter_w(1, data & 0x04); + machine().bookkeeping().coin_counter_w(0, BIT(data, 1)); + machine().bookkeeping().coin_counter_w(1, BIT(data, 2)); - m_priority = data & 0x08; + m_priority = BIT(data, 3); } -void thunderx_state::sh_irqtrigger_w(uint8_t data) +void thunderx_state_base::sh_irqtrigger_w(uint8_t data) { m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); // Z80 } -void thunderx_state::k007232_bankswitch_w(uint8_t data) +void scontra_state::k007232_bankswitch_w(uint8_t data) { - /* b3-b2: bank for channel B */ - /* b1-b0: bank for channel A */ - int bank_A = (data & 0x03); - int bank_B = ((data >> 2) & 0x03); + // b3-b2: bank for channel B + // b1-b0: bank for channel A + const int bank_A = data & 0x03; + const int bank_B = (data >> 2) & 0x03; m_k007232->set_bank(bank_A, bank_B); } -uint8_t thunderx_state::k052109_051960_r(offs_t offset) +uint8_t thunderx_state_base::k052109_051960_r(offs_t offset) { if (m_k052109->get_rmrd_line() == CLEAR_LINE) { @@ -379,7 +583,7 @@ uint8_t thunderx_state::k052109_051960_r(offs_t offset) return m_k052109->read(offset); } -void thunderx_state::k052109_051960_w(offs_t offset, uint8_t data) +void thunderx_state_base::k052109_051960_w(offs_t offset, uint8_t data) { if (offset >= 0x3800 && offset < 0x3808) m_k051960->k051937_w(offset - 0x3800, data); @@ -391,13 +595,13 @@ void thunderx_state::k052109_051960_w(offs_t offset, uint8_t data) /***************************************************************************/ -void thunderx_state::scontra_map(address_map &map) +void thunderx_state_base::scontra_map(address_map &map) { - map(0x0000, 0x3fff).rw(FUNC(thunderx_state::k052109_051960_r), FUNC(thunderx_state::k052109_051960_w)); /* video RAM + sprite RAM */ + map(0x0000, 0x3fff).rw(FUNC(thunderx_state_base::k052109_051960_r), FUNC(thunderx_state::k052109_051960_w)); // video RAM + sprite RAM - map(0x1f80, 0x1f80).w(FUNC(thunderx_state::scontra_bankswitch_w)); /* bankswitch control + coin counters */ + map(0x1f80, 0x1f80).w(FUNC(thunderx_state_base::scontra_bankswitch_w)); // bankswitch control + coin counters map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); - map(0x1f88, 0x1f88).w(FUNC(thunderx_state::sh_irqtrigger_w)); /* cause interrupt on audio CPU */ + map(0x1f88, 0x1f88).w(FUNC(thunderx_state_base::sh_irqtrigger_w)); // cause interrupt on audio CPU map(0x1f8c, 0x1f8c).w("watchdog", FUNC(watchdog_timer_device::reset_w)); map(0x1f90, 0x1f90).portr("SYSTEM"); map(0x1f91, 0x1f91).portr("P1"); @@ -405,43 +609,37 @@ void thunderx_state::scontra_map(address_map &map) map(0x1f93, 0x1f93).portr("DSW3"); map(0x1f94, 0x1f94).portr("DSW1"); map(0x1f95, 0x1f95).portr("DSW2"); - map(0x1f98, 0x1f98).rw(FUNC(thunderx_state::_1f98_r), FUNC(thunderx_state::scontra_1f98_w)); + map(0x1f98, 0x1f98).rw(FUNC(thunderx_state_base::_1f98_r), FUNC(thunderx_state_base::scontra_1f98_w)); - map(0x4000, 0x57ff).ram(); - map(0x5800, 0x5fff).m(m_bank5800, FUNC(address_map_bank_device::amap8)); /* palette + work RAM + PMC */ - map(0x6000, 0x7fff).bankr("rombank"); + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x7fff).bankr(m_rombank); map(0x8000, 0xffff).rom(); + + // palette can be mapped over the top quarter of RAM + map(0x5800, 0x5fff).view(m_bank5800); + m_bank5800[0](0x5800, 0x5fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); } void thunderx_state::thunderx_map(address_map &map) { scontra_map(map); + map(0x1f80, 0x1f80).w(FUNC(thunderx_state::thunderx_videobank_w)); - map(0x1f98, 0x1f98).rw(FUNC(thunderx_state::_1f98_r), FUNC(thunderx_state::thunderx_1f98_w)); /* registers */ -} + map(0x1f98, 0x1f98).rw(FUNC(thunderx_state::_1f98_r), FUNC(thunderx_state::thunderx_1f98_w)); // registers -void thunderx_state::gbusters_map(address_map &map) -{ - scontra_map(map); - map(0x1f80, 0x1f80).w(FUNC(thunderx_state::gbusters_videobank_w)); + // PMC can also be mapped over the top of RAM + m_bank5800[1](0x5800, 0x5fff).rw(FUNC(thunderx_state::pmc_r), FUNC(thunderx_state::pmc_w)).share(m_pmcram); } - -void thunderx_state::scontra_bank5800_map(address_map &map) +void scontra_state::gbusters_map(address_map &map) { - map(0x0000, 0x07ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - map(0x0800, 0x0fff).ram(); -} + scontra_map(map); -void thunderx_state::thunderx_bank5800_map(address_map &map) -{ - map(0x0000, 0x07ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - map(0x0800, 0x0fff).ram(); - map(0x1000, 0x17ff).rw(FUNC(thunderx_state::pmc_r), FUNC(thunderx_state::pmc_w)).share("pmcram"); + map(0x1f80, 0x1f80).w(FUNC(scontra_state::gbusters_videobank_w)); } -void thunderx_state::thunderx_sound_map(address_map &map) +void thunderx_state_base::thunderx_sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0x87ff).ram(); @@ -449,11 +647,12 @@ void thunderx_state::thunderx_sound_map(address_map &map) map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); } -void thunderx_state::scontra_sound_map(address_map &map) +void scontra_state::scontra_sound_map(address_map &map) { thunderx_sound_map(map); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); - map(0xf000, 0xf000).w(FUNC(thunderx_state::k007232_bankswitch_w)); + map(0xf000, 0xf000).w(FUNC(scontra_state::k007232_bankswitch_w)); } /*************************************************************************** @@ -600,53 +799,53 @@ INPUT_PORTS_END ***************************************************************************/ -void thunderx_state::volume_callback(uint8_t data) +void scontra_state::volume_callback(uint8_t data) { m_k007232->set_volume(0, (data >> 4) * 0x11, 0); m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11); } -void thunderx_state::machine_start() +void thunderx_state_base::machine_start() { save_item(NAME(m_1f98_latch)); save_item(NAME(m_priority)); // verified from both scontra and thunderx/gbusters schematics - // banks 4-7 must mirror banks 0-3 for gbusters rom test to pass - uint8_t *ROM = memregion("maincpu")->base(); + // banks 4-7 must mirror banks 0-3 for gbusters ROM test to pass + uint8_t *const ROM = memregion("maincpu")->base(); m_rombank->configure_entries(0, 4, &ROM[0], 0x2000); m_rombank->configure_entries(4, 4, &ROM[0], 0x2000); m_rombank->configure_entries(8, 8, &ROM[0x10000], 0x2000); + + m_palette->set_shadow_factor(7.0/8.0); } -void thunderx_state::machine_reset() +void thunderx_state_base::machine_reset() { m_rombank->set_entry(0); - m_bank5800->set_bank(0); + m_bank5800.select(0); m_1f98_latch = 0; m_priority = 0; } -void thunderx_state::scontra(machine_config &config) +void thunderx_state_base::common(machine_config &config) { - /* basic machine hardware */ - KONAMI(config, m_maincpu, XTAL(24'000'000)/2); /* 052001 (verified on pcb) */ - m_maincpu->set_addrmap(AS_PROGRAM, &thunderx_state::scontra_map); - - Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */ - m_audiocpu->set_addrmap(AS_PROGRAM, &thunderx_state::scontra_sound_map); + // basic machine hardware + KONAMI(config, m_maincpu, XTAL(24'000'000)/2); // 052001 (verified on PCB) + m_maincpu->set_addrmap(AS_PROGRAM, &thunderx_state_base::scontra_map); - ADDRESS_MAP_BANK(config, m_bank5800).set_map(&thunderx_state::scontra_bank5800_map).set_options(ENDIANNESS_BIG, 8, 12, 0x800); + Z80(config, m_audiocpu, XTAL(3'579'545)); // verified on PCB + m_audiocpu->set_addrmap(AS_PROGRAM, &thunderx_state_base::thunderx_sound_map); WATCHDOG_TIMER(config, "watchdog"); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(59.17); /* verified on pcb */ + screen.set_refresh_hz(59.17); // verified on PCB screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 32*8); - screen.set_visarea(12*8, (64-12)*8-1, 2*8, 30*8-1); /* verified on scontra and thunderx PCBs */ - screen.set_screen_update(FUNC(thunderx_state::screen_update)); + screen.set_visarea(12*8, (64-12)*8-1, 2*8, 30*8-1); // verified on scontra and thunderx PCBs + screen.set_screen_update(FUNC(thunderx_state_base::screen_update)); screen.set_palette(m_palette); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024); @@ -655,62 +854,64 @@ void thunderx_state::scontra(machine_config &config) K052109(config, m_k052109, 0); // 051961 on Super Contra and Thunder Cross schematics m_k052109->set_palette(m_palette); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(thunderx_state::tile_callback)); + m_k052109->set_tile_callback(FUNC(thunderx_state_base::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(thunderx_state::sprite_callback)); + m_k051960->set_sprite_callback(FUNC(thunderx_state_base::sprite_callback)); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "mono", 1.0).add_route(1, "mono", 1.0); /* verified on pcb */ +} + +void scontra_state::scontra(machine_config &config) +{ + common(config); - K007232(config, m_k007232, XTAL(3'579'545)); /* verified on pcb */ - m_k007232->port_write().set(FUNC(thunderx_state::volume_callback)); + m_audiocpu->set_addrmap(AS_PROGRAM, &scontra_state::scontra_sound_map); + + K007232(config, m_k007232, XTAL(3'579'545)); // verified on PCB + m_k007232->port_write().set(FUNC(scontra_state::volume_callback)); m_k007232->add_route(0, "mono", 0.20); m_k007232->add_route(1, "mono", 0.20); } -void thunderx_state::banking_callback(uint8_t data) +void thunderx_state::machine_start() { - //logerror("%s thunderx bank select %02x\n", machine().describe_context(), data); - m_rombank->set_entry(data & 0x0f); + thunderx_state_base::machine_start(); + + m_thunderx_firq_timer = timer_alloc(FUNC(thunderx_state::thunderx_firq_cb), this); } void thunderx_state::thunderx(machine_config &config) { - scontra(config); + common(config); - /* basic machine hardware */ - /* CPU type is 052001 (verified on pcb) */ + // basic machine hardware + // CPU type is 052001 (verified on PCB) m_maincpu->set_addrmap(AS_PROGRAM, &thunderx_state::thunderx_map); - m_maincpu->line().set(FUNC(thunderx_state::banking_callback)); - - m_audiocpu->set_addrmap(AS_PROGRAM, &thunderx_state::thunderx_sound_map); - - m_bank5800->set_map(&thunderx_state::thunderx_bank5800_map).set_addr_width(13); + m_maincpu->line().set_membank(m_rombank).mask(0x0f); m_k052109->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); - - config.device_remove("k007232"); } -void thunderx_state::gbusters(machine_config &config) +void scontra_state::gbusters(machine_config &config) { scontra(config); - /* basic machine hardware */ - /* CPU type is 052526 */ - m_maincpu->set_addrmap(AS_PROGRAM, &thunderx_state::gbusters_map); - m_maincpu->line().set(FUNC(thunderx_state::banking_callback)); + // basic machine hardware + // CPU type is 052526 + m_maincpu->set_addrmap(AS_PROGRAM, &scontra_state::gbusters_map); + m_maincpu->line().set_membank(m_rombank).mask(0x0f); - m_k052109->set_tile_callback(FUNC(thunderx_state::gbusters_tile_callback)); + m_k052109->set_tile_callback(FUNC(scontra_state::gbusters_tile_callback)); } @@ -1056,21 +1257,18 @@ ROM_START( crazycop ) ROM_LOAD( "878a09.f20", 0x0000, 0x0100, CRC(e2d09a1b) SHA1(a9651e137486b2df367c39eb43f52d0833589e87) ) /* priority encoder (not used) */ ROM_END +} // anonymous namespace -void thunderx_state::init_thunderx() -{ - m_thunderx_firq_timer = timer_alloc(FUNC(thunderx_state::thunderx_firq_cb), this); -} /***************************************************************************/ -GAME( 1988, scontra, 0, scontra, scontra, thunderx_state, empty_init, ROT90, "Konami", "Super Contra (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, scontraa, scontra, scontra, scontra, thunderx_state, empty_init, ROT90, "Konami", "Super Contra (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, scontraj, scontra, scontra, scontra, thunderx_state, empty_init, ROT90, "Konami", "Super Contra - Alien no Gyakushuu (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, thunderx, 0, thunderx, thunderx, thunderx_state, init_thunderx, ROT0, "Konami", "Thunder Cross (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, thunderxa, thunderx, thunderx, thunderx, thunderx_state, init_thunderx, ROT0, "Konami", "Thunder Cross (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, thunderxb, thunderx, thunderx, thunderx, thunderx_state, init_thunderx, ROT0, "Konami", "Thunder Cross (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, thunderxj, thunderx, thunderx, thnderxj, thunderx_state, init_thunderx, ROT0, "Konami", "Thunder Cross (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, gbusters, 0, gbusters, gbusters, thunderx_state, empty_init, ROT90, "Konami", "Gang Busters (set 1)", MACHINE_SUPPORTS_SAVE ) // N02 & J03 program ROMs -GAME( 1988, gbustersa, gbusters, gbusters, gbusters, thunderx_state, empty_init, ROT90, "Konami", "Gang Busters (set 2)", MACHINE_SUPPORTS_SAVE ) // unknown region program ROMs -GAME( 1988, crazycop, gbusters, gbusters, gbusters, thunderx_state, empty_init, ROT90, "Konami", "Crazy Cop (Japan)", MACHINE_SUPPORTS_SAVE ) // M02 & J03 program ROMs +GAME( 1988, scontra, 0, scontra, scontra, scontra_state, empty_init, ROT90, "Konami", "Super Contra (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, scontraa, scontra, scontra, scontra, scontra_state, empty_init, ROT90, "Konami", "Super Contra (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, scontraj, scontra, scontra, scontra, scontra_state, empty_init, ROT90, "Konami", "Super Contra - Alien no Gyakushuu (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, thunderx, 0, thunderx, thunderx, thunderx_state, empty_init, ROT0, "Konami", "Thunder Cross (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, thunderxa, thunderx, thunderx, thunderx, thunderx_state, empty_init, ROT0, "Konami", "Thunder Cross (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, thunderxb, thunderx, thunderx, thunderx, thunderx_state, empty_init, ROT0, "Konami", "Thunder Cross (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, thunderxj, thunderx, thunderx, thnderxj, thunderx_state, empty_init, ROT0, "Konami", "Thunder Cross (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, gbusters, 0, gbusters, gbusters, scontra_state, empty_init, ROT90, "Konami", "Gang Busters (set 1)", MACHINE_SUPPORTS_SAVE ) // N02 & J03 program ROMs +GAME( 1988, gbustersa, gbusters, gbusters, gbusters, scontra_state, empty_init, ROT90, "Konami", "Gang Busters (set 2)", MACHINE_SUPPORTS_SAVE ) // unknown region program ROMs +GAME( 1988, crazycop, gbusters, gbusters, gbusters, scontra_state, empty_init, ROT90, "Konami", "Crazy Cop (Japan)", MACHINE_SUPPORTS_SAVE ) // M02 & J03 program ROMs diff --git a/src/mame/konami/thunderx.h b/src/mame/konami/thunderx.h deleted file mode 100644 index 1f2145db7ff..00000000000 --- a/src/mame/konami/thunderx.h +++ /dev/null @@ -1,99 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Bryan McPhail, Manuel Abadia -/************************************************************************* - - Super Contra / Thunder Cross - -*************************************************************************/ -#ifndef MAME_KONAMI_THUNDERX_H -#define MAME_KONAMI_THUNDERX_H - -#pragma once - -#include "cpu/m6809/konami.h" -#include "machine/bankdev.h" -#include "sound/k007232.h" -#include "k051960.h" -#include "k052109.h" -#include "konami_helper.h" -#include "emupal.h" - -class thunderx_state : public driver_device -{ -public: - thunderx_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_audiocpu(*this, "audiocpu"), - m_bank5800(*this, "bank5800"), - m_k007232(*this, "k007232"), - m_k052109(*this, "k052109"), - m_k051960(*this, "k051960"), - m_palette(*this, "palette"), - m_rombank(*this, "rombank"), - m_pmcram(*this, "pmcram") - { } - - void scontra(machine_config &config); - void gbusters(machine_config &config); - void thunderx(machine_config &config); - - void init_thunderx(); - -protected: - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - -private: - /* devices */ - required_device m_maincpu; - required_device m_audiocpu; - required_device m_bank5800; - optional_device m_k007232; - required_device m_k052109; - required_device m_k051960; - required_device m_palette; - - /* memory */ - required_memory_bank m_rombank; - optional_shared_ptr m_pmcram; - - /* misc */ - int m_priority = 0; - uint8_t m_1f98_latch = 0; - emu_timer *m_thunderx_firq_timer = nullptr; - - void scontra_bankswitch_w(uint8_t data); - void thunderx_videobank_w(uint8_t data); - void gbusters_videobank_w(uint8_t data); - uint8_t pmc_r(offs_t offset); - void pmc_w(offs_t offset, uint8_t data); - uint8_t _1f98_r(); - void scontra_1f98_w(uint8_t data); - void thunderx_1f98_w(uint8_t data); - void sh_irqtrigger_w(uint8_t data); - uint8_t k052109_051960_r(offs_t offset); - void k052109_051960_w(offs_t offset, uint8_t data); - void k007232_bankswitch_w(uint8_t data); - TIMER_CALLBACK_MEMBER(thunderx_firq_cb); - - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void run_collisions( int s0, int e0, int s1, int e1, int cm, int hm ); - void calculate_collisions( ); - void volume_callback(uint8_t data); - K052109_CB_MEMBER(tile_callback); - K052109_CB_MEMBER(gbusters_tile_callback); - K051960_CB_MEMBER(sprite_callback); - void banking_callback(uint8_t data); - - void gbusters_map(address_map &map); - void scontra_bank5800_map(address_map &map); - void scontra_map(address_map &map); - void scontra_sound_map(address_map &map); - void thunderx_bank5800_map(address_map &map); - void thunderx_map(address_map &map); - void thunderx_sound_map(address_map &map); -}; - -#endif // MAME_KONAMI_THUNDERX_H diff --git a/src/mame/konami/thunderx_v.cpp b/src/mame/konami/thunderx_v.cpp deleted file mode 100644 index b9db5eed22f..00000000000 --- a/src/mame/konami/thunderx_v.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Bryan McPhail, Manuel Abadia - -#include "emu.h" -#include "thunderx.h" -#include "screen.h" - -/*************************************************************************** - - Callbacks for the K052109 - -***************************************************************************/ - -static const int layer_colorbase[] = { 768 / 16, 0 / 16, 256 / 16 }; - -K052109_CB_MEMBER(thunderx_state::tile_callback) -{ - *code |= ((*color & 0x1f) << 8) | (bank << 13); - *color = layer_colorbase[layer] + ((*color & 0xe0) >> 5); -} - -K052109_CB_MEMBER(thunderx_state::gbusters_tile_callback) -{ - /* (color & 0x02) is flip y handled internally by the 052109 */ - *code |= ((*color & 0x0d) << 8) | ((*color & 0x10) << 5) | (bank << 12); - *color = layer_colorbase[layer] + ((*color & 0xe0) >> 5); -} - -/*************************************************************************** - - Callbacks for the K051960 - -***************************************************************************/ - -K051960_CB_MEMBER(thunderx_state::sprite_callback) -{ - enum { sprite_colorbase = 512 / 16 }; - - /* Sprite priority 1 means appear behind background, used only to mask sprites */ - /* in the foreground */ - /* Sprite priority 3 means don't draw (not used) */ - switch (*color & 0x30) - { - case 0x00: *priority = 0; break; - case 0x10: *priority = GFX_PMASK_2 | GFX_PMASK_1; break; - case 0x20: *priority = GFX_PMASK_2; break; - case 0x30: *priority = 0xffff; break; - } - - *color = sprite_colorbase + (*color & 0x0f); -} - - - -/*************************************************************************** - - Start the video hardware emulation. - -***************************************************************************/ - -void thunderx_state::video_start() -{ - m_palette->set_shadow_factor(7.0/8.0); -} - - -/*************************************************************************** - - Display refresh - -***************************************************************************/ - -uint32_t thunderx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_k052109->tilemap_update(); - - screen.priority().fill(0, cliprect); - - /* The background color is always from layer 1 */ - m_k052109->tilemap_draw(screen, bitmap, cliprect, 1, TILEMAP_DRAW_OPAQUE, 0); - - int bg = m_priority ? 2 : 1; - int fg = m_priority ? 1 : 2; - - m_k052109->tilemap_draw(screen, bitmap, cliprect, bg, 0, 1); - m_k052109->tilemap_draw(screen, bitmap, cliprect, fg, 0, 2); - m_k051960->k051960_sprites_draw(bitmap, cliprect, screen.priority(), -1, -1); - m_k052109->tilemap_draw(screen, bitmap, cliprect, 0, 0, 0); - return 0; -} diff --git a/src/mame/misc/homedata.cpp b/src/mame/misc/homedata.cpp index 1da074c5c08..ea94bb83801 100644 --- a/src/mame/misc/homedata.cpp +++ b/src/mame/misc/homedata.cpp @@ -258,20 +258,17 @@ INTERRUPT_GEN_MEMBER(homedata_state::homedata_irq) ********************************************************************************/ -uint8_t homedata_state::mrokumei_keyboard_r(offs_t offset) +uint8_t mrokumei_state::mrokumei_keyboard_r(offs_t offset) { - int res = 0x3f,i; + uint8_t res = 0x3f; - /* offset 0 is player 1, offset 1 player 2 (not supported) */ + // offset 0 is player 1, offset 1 player 2 (not supported) if (offset == 0) { - for (i = 0; i < 5; i++) + for (int i = 0; i < 5; i++) { - if (m_keyb & (1 << i)) - { - res = m_keys[i]->read() & 0x3f; - break; - } + if (BIT(m_keyb, i)) + res &= m_keys[i]->read() & 0x3f; } } @@ -286,27 +283,32 @@ uint8_t homedata_state::mrokumei_keyboard_r(offs_t offset) if (m_vblank) res |= 0x40; - m_vblank = 0; + if (!machine().side_effects_disabled()) + m_vblank = 0; } return res; } -void homedata_state::mrokumei_keyboard_select_w(uint8_t data) +void mrokumei_state::mrokumei_keyboard_select_w(uint8_t data) { m_keyb = data; } -void homedata_state::mrokumei_sound_bank_w(uint8_t data) +void mrokumei_state::mrokumei_sound_bank_w(uint8_t data) { /* bit 0 = ROM bank bit 2 = ROM or soundlatch */ - m_mrokumei_soundbank->set_bank(data & 7); + m_audiobank->set_entry(BIT(data, 0)); + if (BIT(data, 2)) + m_soundview.select(0); + else + m_soundview.disable(); } -void homedata_state::mrokumei_sound_cmd_w(uint8_t data) +void mrokumei_state::mrokumei_sound_cmd_w(uint8_t data) { m_soundlatch->write(data); m_audiocpu->set_input_line(0, HOLD_LINE); @@ -321,17 +323,17 @@ void homedata_state::mrokumei_sound_cmd_w(uint8_t data) ********************************************************************************/ -uint8_t homedata_state::reikaids_upd7807_porta_r() +uint8_t homedata_upd7807_state::reikaids_upd7807_porta_r() { return m_upd7807_porta; } -void homedata_state::reikaids_upd7807_porta_w(uint8_t data) +void homedata_upd7807_state::reikaids_upd7807_porta_w(uint8_t data) { m_upd7807_porta = data; } -void homedata_state::reikaids_upd7807_portc_w(uint8_t data) +void homedata_upd7807_state::reikaids_upd7807_portc_w(uint8_t data) { /* port C layout: 7 coin counter @@ -358,7 +360,7 @@ void homedata_state::reikaids_upd7807_portc_w(uint8_t data) m_upd7807_portc = data; } -uint8_t homedata_state::reikaids_io_r() +uint8_t homedata_upd7807_state::reikaids_io_r() { int res = ioport("IN2")->read(); // bit 4 = coin, bit 5 = service @@ -384,7 +386,7 @@ uint8_t homedata_state::reikaids_io_r() ********************************************************************************/ -uint8_t homedata_state::pteacher_io_r() +uint8_t homedata_upd7807_state::pteacher_io_r() { /* bit 6: !vblank * bit 7: visible page @@ -401,7 +403,7 @@ uint8_t homedata_state::pteacher_io_r() return res; } -uint8_t homedata_state::pteacher_keyboard_r() +uint8_t homedata_upd7807_state::pteacher_keyboard_r() { int dips = ioport("DSW")->read(); @@ -409,21 +411,21 @@ uint8_t homedata_state::pteacher_keyboard_r() if (m_upd7807_porta & 0x80) { - /* player 1 + dip switches */ - int row = (m_upd7807_porta & 0x07); + // player 1 + dip switches + int const row = m_upd7807_porta & 0x07; return m_keys[row]->read() | (((dips >> row) & 1) << 5); // 0-5 } - if (m_upd7807_porta & 0x08) // TODO: this works fine with dips 7-8 of the 1st bank, but then expects dips 1-4 of the 2nd bank in inverted order + if (m_upd7807_porta & 0x08) // TODO: this works fine with DIPs 7-8 of the 1st bank, but then expects DIPs 1-4 of the 2nd bank in inverted order { - /* player 2 + dip switches */ - int row = ((m_upd7807_porta >> 4) & 0x07) + 6; + // player 2 + dip switches + int const row = ((m_upd7807_porta >> 4) & 0x07) + 6; return m_keys[row]->read() | (((dips >> row) & 1) << 5); // 6-11 } return 0xff; } -uint8_t homedata_state::pteacher_upd7807_porta_r() +uint8_t homedata_upd7807_state::pteacher_upd7807_porta_r() { if (!BIT(m_upd7807_portc, 6)) m_upd7807_porta = m_soundlatch->read(); @@ -433,12 +435,12 @@ uint8_t homedata_state::pteacher_upd7807_porta_r() return m_upd7807_porta; } -void homedata_state::pteacher_upd7807_porta_w(uint8_t data) +void homedata_upd7807_state::pteacher_upd7807_porta_w(uint8_t data) { m_upd7807_porta = data; } -void homedata_state::pteacher_upd7807_portc_w(uint8_t data) +void homedata_upd7807_state::pteacher_upd7807_portc_w(uint8_t data) { /* port C layout: 7 coin counter @@ -466,153 +468,145 @@ void homedata_state::pteacher_upd7807_portc_w(uint8_t data) /********************************************************************************/ -void homedata_state::bankswitch_w(uint8_t data) +void homedata_upd7807_state::bankswitch_w(uint8_t data) { - int last_bank = (memregion("maincpu")->bytes() - 0x10000) / 0x4000; - - /* last bank is fixed and is #0 for us, other banks start from #1 (hence data+1 below)*/ - if (data < last_bank) - m_mainbank->set_entry(data + 1); - else - m_mainbank->set_entry(0); + m_mainbank->set_entry(data & ((m_mainrom.length() / 0x4000) - 1)); } /********************************************************************************/ -void homedata_state::mrokumei_map(address_map &map) +void mrokumei_state::mrokumei_map(address_map &map) { - map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::mrokumei_videoram_w)).share("videoram"); + map(0x0000, 0x3fff).ram().w(FUNC(mrokumei_state::mrokumei_videoram_w)).share(m_videoram); map(0x4000, 0x5fff).ram(); - map(0x6000, 0x6fff).ram(); /* work ram */ - map(0x7000, 0x77ff).ram(); /* hourouki expects this to act as RAM */ - map(0x7800, 0x7800).ram(); /* only used to store the result of the ROM check */ - map(0x7801, 0x7802).r(FUNC(homedata_state::mrokumei_keyboard_r)); // also vblank and active page + map(0x6000, 0x6fff).ram(); // work RAM + map(0x7000, 0x77ff).ram(); // hourouki expects this to act as RAM + map(0x7800, 0x7800).ram(); // only used to store the result of the ROM check + map(0x7801, 0x7802).r(FUNC(mrokumei_state::mrokumei_keyboard_r)); // also vblank and active page map(0x7803, 0x7803).portr("IN0"); // coin, service map(0x7804, 0x7804).portr("DSW1"); // DSW1 map(0x7805, 0x7805).portr("DSW2"); // DSW2 map(0x7ff0, 0x7ffd).writeonly().share("vreg"); map(0x7ffe, 0x7ffe).nopr(); // ??? read every vblank, value discarded - map(0x8000, 0x8000).w(FUNC(homedata_state::mrokumei_blitter_start_w)); // in some games also ROM bank switch to access service ROM - map(0x8001, 0x8001).w(FUNC(homedata_state::mrokumei_keyboard_select_w)); - map(0x8002, 0x8002).w(FUNC(homedata_state::mrokumei_sound_cmd_w)); + map(0x8000, 0x8000).w(FUNC(mrokumei_state::mrokumei_blitter_start_w)); // in some games also ROM bank switch to access service ROM + map(0x8001, 0x8001).w(FUNC(mrokumei_state::mrokumei_keyboard_select_w)); + map(0x8002, 0x8002).w(FUNC(mrokumei_state::mrokumei_sound_cmd_w)); map(0x8003, 0x8003).w(m_sn, FUNC(sn76489a_device::write)); - map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w)); - map(0x8007, 0x8007).w(FUNC(homedata_state::mrokumei_blitter_bank_w)); - map(0x8000, 0xffff).rom(); + map(0x8006, 0x8006).w(FUNC(mrokumei_state::homedata_blitter_param_w)); + map(0x8007, 0x8007).w(FUNC(mrokumei_state::mrokumei_blitter_bank_w)); + map(0x8000, 0xffff).rom().region("maincpu", 0); } -void homedata_state::mrokumei_sound_map(address_map &map) +void mrokumei_state::mrokumei_sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); // TODO: might be that the entire area is sound_bank_w - map(0xfffc, 0xfffd).nopw(); /* stack writes happen here, but there's no RAM */ - map(0x8080, 0x8080).w(FUNC(homedata_state::mrokumei_sound_bank_w)); - map(0xffbf, 0xffbf).w(FUNC(homedata_state::mrokumei_sound_bank_w)); // hourouki mirror + map(0xfffc, 0xfffd).nopw(); // stack writes happen here, but there's no RAM + map(0x8080, 0x8080).w(FUNC(mrokumei_state::mrokumei_sound_bank_w)); + map(0xffbf, 0xffbf).w(FUNC(mrokumei_state::mrokumei_sound_bank_w)); // hourouki mirror } -void homedata_state::mrokumei_sound_io_map(address_map &map) +void mrokumei_state::mrokumei_sound_io_map(address_map &map) { - map(0x0000, 0xffff).r(m_mrokumei_soundbank, FUNC(address_map_bank_device::read8)); /* read address is 16-bit */ - map(0x0040, 0x0040).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w)); /* write address is only 8-bit */ - // hourouki mirror... - map(0x007f, 0x007f).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w)); /* write address is only 8-bit */ -} + map(0x0000, 0xffff).bankr(m_audiobank); // read address is 16-bit + map(0x0000, 0xffff).view(m_soundview); + m_soundview[0](0x0000, 0x0000).mirror(0xffff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); -void homedata_state::mrokumei_sound_banked_map(address_map &map) -{ - map(0x00000, 0x1ffff).mirror(0x20000).rom().region("audiocpu", 0); - map(0x40000, 0x40000).mirror(0x3ffff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x0040, 0x0040).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w)); // write address is only 8-bit + // hourouki mirror... + map(0x007f, 0x007f).mirror(0xff00).w("dac", FUNC(dac_byte_interface::data_w)); // write address is only 8-bit } /********************************************************************************/ -void homedata_state::reikaids_map(address_map &map) +void homedata_upd7807_state::reikaids_map(address_map &map) { - map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::reikaids_videoram_w)).share("videoram"); + map(0x0000, 0x3fff).ram().w(FUNC(homedata_upd7807_state::reikaids_videoram_w)).share(m_videoram); map(0x4000, 0x5fff).ram(); - map(0x6000, 0x6fff).ram(); /* work RAM */ - map(0x7800, 0x7800).ram(); /* behaves as normal RAM */ + map(0x6000, 0x6fff).ram(); // work RAM + map(0x7800, 0x7800).ram(); // behaves as normal RAM map(0x7801, 0x7801).portr("IN0"); map(0x7802, 0x7802).portr("IN1"); - map(0x7803, 0x7803).r(FUNC(homedata_state::reikaids_io_r)); // coin, blitter, upd7807 + map(0x7803, 0x7803).r(FUNC(homedata_upd7807_state::reikaids_io_r)); // coin, blitter, upd7807 map(0x7ff0, 0x7ffd).writeonly().share("vreg"); - map(0x7ffe, 0x7ffe).w(FUNC(homedata_state::reikaids_blitter_bank_w)); - map(0x7fff, 0x7fff).w(FUNC(homedata_state::reikaids_blitter_start_w)); - map(0x8000, 0x8000).w(FUNC(homedata_state::bankswitch_w)); + map(0x7ffe, 0x7ffe).w(FUNC(homedata_upd7807_state::reikaids_blitter_bank_w)); + map(0x7fff, 0x7fff).w(FUNC(homedata_upd7807_state::reikaids_blitter_start_w)); + map(0x8000, 0x8000).w(FUNC(homedata_upd7807_state::bankswitch_w)); map(0x8002, 0x8002).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0x8005, 0x8005).w(FUNC(homedata_state::reikaids_gfx_bank_w)); - map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w)); - map(0x8000, 0xbfff).bankr("mainbank"); - map(0xc000, 0xffff).rom(); + map(0x8005, 0x8005).w(FUNC(homedata_upd7807_state::reikaids_gfx_bank_w)); + map(0x8006, 0x8006).w(FUNC(homedata_upd7807_state::homedata_blitter_param_w)); + map(0x8000, 0xbfff).bankr(m_mainbank); + map(0xc000, 0xffff).rom().region("maincpu", 0x1c000); } -void homedata_state::reikaids_upd7807_map(address_map &map) +void homedata_upd7807_state::reikaids_upd7807_map(address_map &map) { - map(0x0000, 0xfeff).bankr("audiobank"); /* External ROM (Banked) */ + map(0x0000, 0xfeff).bankr(m_audiobank); // External ROM (Banked) } /**************************************************************************/ -void homedata_state::pteacher_base_map(address_map &map) +void homedata_upd7807_state::pteacher_base_map(address_map &map) { - map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::mrokumei_videoram_w)).share("videoram"); + map(0x0000, 0x3fff).ram().w(FUNC(homedata_upd7807_state::mrokumei_videoram_w)).share(m_videoram); map(0x4000, 0x5eff).ram(); map(0x5f00, 0x5fff).ram(); - map(0x6000, 0x6fff).ram(); /* work ram */ - map(0x7800, 0x7800).ram(); /* behaves as normal RAM */ - map(0x7801, 0x7801).r(FUNC(homedata_state::pteacher_io_r)); // vblank, visible page + map(0x6000, 0x6fff).ram(); // work RAM + map(0x7800, 0x7800).ram(); // behaves as normal RAM + map(0x7801, 0x7801).r(FUNC(homedata_upd7807_state::pteacher_io_r)); // vblank, visible page map(0x7ff0, 0x7ffd).writeonly().share("vreg"); - map(0x7fff, 0x7fff).w(FUNC(homedata_state::pteacher_blitter_start_w)); - map(0x8000, 0x8000).w(FUNC(homedata_state::bankswitch_w)); + map(0x7fff, 0x7fff).w(FUNC(homedata_upd7807_state::pteacher_blitter_start_w)); + map(0x8000, 0x8000).w(FUNC(homedata_upd7807_state::bankswitch_w)); map(0x8002, 0x8002).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0x8005, 0x8005).w(FUNC(homedata_state::pteacher_blitter_bank_w)); - map(0x8006, 0x8006).w(FUNC(homedata_state::homedata_blitter_param_w)); - map(0x8007, 0x8007).w(FUNC(homedata_state::pteacher_gfx_bank_w)); - map(0x8000, 0xbfff).bankr("mainbank"); - map(0xc000, 0xffff).rom(); + map(0x8005, 0x8005).w(FUNC(homedata_upd7807_state::pteacher_blitter_bank_w)); + map(0x8006, 0x8006).w(FUNC(homedata_upd7807_state::homedata_blitter_param_w)); + map(0x8007, 0x8007).w(FUNC(homedata_upd7807_state::pteacher_gfx_bank_w)); + map(0x8000, 0xbfff).bankr(m_mainbank); + map(0xc000, 0xffff).rom().region("maincpu", 0xc000); } -void homedata_state::pteacher_map(address_map &map) +void homedata_upd7807_state::pteacher_map(address_map &map) { pteacher_base_map(map); + map(0x7ff2, 0x7ff2).r(m_mainlatch, FUNC(generic_latch_8_device::read)); } -void homedata_state::pteacher_upd7807_map(address_map &map) +void homedata_upd7807_state::pteacher_upd7807_map(address_map &map) { map(0x0000, 0x0000).w(m_mainlatch, FUNC(generic_latch_8_device::write)); - map(0x0000, 0xfeff).bankr("audiobank"); /* External ROM (Banked) */ + map(0x0000, 0xfeff).bankr(m_audiobank); // External ROM (Banked) } /**************************************************************************/ - /* it seems that Mahjong Jogakuen runs on the same board as the others, - but with just these two addresses swapped. Instead of creating a new - MachineDriver, I just fix them here. */ -void homedata_state::jogakuen_map(address_map &map) +// it seems that Mahjong Jogakuen runs on the same board as the others, but with just these two addresses swapped. +void homedata_upd7807_state::jogakuen_map(address_map &map) { pteacher_map(map); - map(0x8005, 0x8005).w(FUNC(homedata_state::pteacher_gfx_bank_w)); - map(0x8007, 0x8007).w(FUNC(homedata_state::pteacher_blitter_bank_w)); + + map(0x8005, 0x8005).w(FUNC(homedata_upd7807_state::pteacher_gfx_bank_w)); + map(0x8007, 0x8007).w(FUNC(homedata_upd7807_state::pteacher_blitter_bank_w)); } /**************************************************************************/ -void homedata_state::mjikaga_map(address_map &map) +void homedata_upd7807_state::mjikaga_map(address_map &map) { pteacher_base_map(map); + map(0x7802, 0x7802).r(m_mainlatch, FUNC(generic_latch_8_device::read)); } -void homedata_state::mjikaga_upd7807_map(address_map &map) +void homedata_upd7807_state::mjikaga_upd7807_map(address_map &map) { map(0x0123, 0x0123).w(m_mainlatch, FUNC(generic_latch_8_device::write)); - map(0x0000, 0xfeff).bankr("audiobank"); /* External ROM (Banked) */ + map(0x0000, 0xfeff).bankr(m_audiobank); /* External ROM (Banked) */ } /**************************************************************************/ @@ -845,7 +839,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY1") @@ -854,7 +848,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY2") @@ -863,7 +857,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY3") @@ -872,7 +866,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY4") @@ -881,7 +875,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY5") @@ -890,7 +884,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY6") @@ -899,7 +893,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY7") @@ -908,7 +902,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY8") @@ -917,7 +911,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // dip switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY9") @@ -926,7 +920,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY10") @@ -935,7 +929,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY11") @@ -944,7 +938,7 @@ static INPUT_PORTS_START( mj_keyboard ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) /* dip switch (handled separately) */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) // DIP switch (handled separately) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -1159,7 +1153,7 @@ static GFXDECODE_START( gfx_lemnangl ) GFXDECODE_END -MACHINE_START_MEMBER(homedata_state,homedata) +void homedata_state::machine_start() { save_item(NAME(m_visible_page)); save_item(NAME(m_flipscreen)); @@ -1170,38 +1164,35 @@ MACHINE_START_MEMBER(homedata_state,homedata) save_item(NAME(m_keyb)); } -MACHINE_START_MEMBER(homedata_state,reikaids) +void mrokumei_state::machine_start() { - uint8_t *ROM = memregion("maincpu")->base(); - - m_mainbank->configure_entries(0, 8, &ROM[0xc000], 0x4000); - m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x10000); - - MACHINE_START_CALL_MEMBER(homedata); + homedata_state::machine_start(); - save_item(NAME(m_upd7807_porta)); - save_item(NAME(m_upd7807_portc)); - - save_item(NAME(m_reikaids_which)); - save_item(NAME(m_gfx_bank)); + m_audiobank->configure_entries(0, 2, memregion("audiocpu")->base(), 0x10000); } -MACHINE_START_MEMBER(homedata_state,pteacher) +void homedata_upd7807_state::machine_start() { - uint8_t *ROM = memregion("maincpu")->base(); + homedata_state::machine_start(); - m_mainbank->configure_entries(0, 4, &ROM[0xc000], 0x4000); + assert(!(m_mainrom.length() & (m_mainrom.length() - 1))); + m_mainbank->configure_entries(0, m_mainrom.length() / 0x4000, &m_mainrom[0], 0x4000); m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x10000); - MACHINE_START_CALL_MEMBER(homedata); - save_item(NAME(m_upd7807_porta)); save_item(NAME(m_upd7807_portc)); save_item(NAME(m_gfx_bank)); } -MACHINE_RESET_MEMBER(homedata_state,homedata) +MACHINE_START_MEMBER(homedata_upd7807_state,reikaids) +{ + machine_start(); + + save_item(NAME(m_reikaids_which)); +} + +void homedata_state::machine_reset() { m_visible_page = 0; m_flipscreen = 0; @@ -1215,70 +1206,67 @@ MACHINE_RESET_MEMBER(homedata_state,homedata) m_keyb = 0; } -MACHINE_RESET_MEMBER(homedata_state,mrokumei) +void mrokumei_state::machine_reset() { - MACHINE_RESET_CALL_MEMBER(homedata); - m_mrokumei_soundbank->set_bank(0); + homedata_state::machine_reset(); + + m_audiobank->set_entry(0); + m_soundview.disable(); } -MACHINE_RESET_MEMBER(homedata_state,pteacher) +void homedata_upd7807_state::machine_reset() { - /* on reset, ports are set as input (high impedance), therefore 0xff output */ - pteacher_upd7807_portc_w(0xff); - - MACHINE_RESET_CALL_MEMBER(homedata); + homedata_state::machine_reset(); m_upd7807_porta = 0; m_gfx_bank[0] = 0; - m_gfx_bank[1] = 0; + m_gfx_bank[1] = 0; // this is not used by reikaids } -MACHINE_RESET_MEMBER(homedata_state,reikaids) +MACHINE_RESET_MEMBER(homedata_upd7807_state, pteacher) { - /* on reset, ports are set as input (high impedance), therefore 0xff output */ + // on reset, ports are set as input (high impedance), therefore 0xff output + pteacher_upd7807_portc_w(0xff); + + machine_reset(); +} + +MACHINE_RESET_MEMBER(homedata_upd7807_state, reikaids) +{ + // on reset, ports are set as input (high impedance), therefore 0xff output reikaids_upd7807_portc_w(0xff); - MACHINE_RESET_CALL_MEMBER(homedata); + machine_reset(); m_reikaids_which = m_priority; // m_priority is set in DRIVER_INIT - m_upd7807_porta = 0; - m_gfx_bank[0] = 0; - m_gfx_bank[1] = 0; // this is not used by reikaids } -void homedata_state::mrokumei(machine_config &config) +void mrokumei_state::mrokumei(machine_config &config) { - /* basic machine hardware */ - MC6809E(config, m_maincpu, 16000000/8); /* 2MHz ? */ - m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::mrokumei_map); - m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */ - - Z80(config, m_audiocpu, 16000000/4); /* 4MHz ? */ - m_audiocpu->set_addrmap(AS_PROGRAM, &homedata_state::mrokumei_sound_map); - m_audiocpu->set_addrmap(AS_IO, &homedata_state::mrokumei_sound_io_map); - - ADDRESS_MAP_BANK(config, m_mrokumei_soundbank).set_map(&homedata_state::mrokumei_sound_banked_map).set_options(ENDIANNESS_LITTLE, 8, 19, 0x10000); + // basic machine hardware + MC6809E(config, m_maincpu, 16000000/8); // 2MHz ? + m_maincpu->set_addrmap(AS_PROGRAM, &mrokumei_state::mrokumei_map); + m_maincpu->set_vblank_int("screen", FUNC(mrokumei_state::homedata_irq)); // also triggered by the blitter - MCFG_MACHINE_START_OVERRIDE(homedata_state,homedata) - MCFG_MACHINE_RESET_OVERRIDE(homedata_state,mrokumei) + Z80(config, m_audiocpu, 16000000/4); // 4MHz ? + m_audiocpu->set_addrmap(AS_PROGRAM, &mrokumei_state::mrokumei_sound_map); + m_audiocpu->set_addrmap(AS_IO, &mrokumei_state::mrokumei_sound_io_map); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(59); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 32*8); // visible area can be changed at runtime screen.set_visarea(0*8, 54*8-1, 2*8, 30*8-1); - screen.set_screen_update(FUNC(homedata_state::screen_update_mrokumei)); - screen.screen_vblank().set(FUNC(homedata_state::screen_vblank)); + screen.set_screen_update(FUNC(mrokumei_state::screen_update_mrokumei)); + screen.screen_vblank().set(FUNC(mrokumei_state::screen_vblank)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mrokumei); - PALETTE(config, m_palette, FUNC(homedata_state::mrokumei_palette), 0x8000); - - MCFG_VIDEO_START_OVERRIDE(homedata_state,mrokumei) + PALETTE(config, m_palette, FUNC(mrokumei_state::mrokumei_palette), 0x8000); - /* sound hardware */ + // sound hardware SPEAKER(config, "speaker").front_center(); GENERIC_LATCH_8(config, m_soundlatch); @@ -1292,25 +1280,25 @@ void homedata_state::mrokumei(machine_config &config) /**************************************************************************/ -void homedata_state::reikaids(machine_config &config) +void homedata_upd7807_state::reikaids(machine_config &config) { /* basic machine hardware */ MC6809E(config, m_maincpu, 16_MHz_XTAL/8); /* MC68B09EP 2MHz ? */ - m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::reikaids_map); - m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */ + m_maincpu->set_addrmap(AS_PROGRAM, &homedata_upd7807_state::reikaids_map); + m_maincpu->set_vblank_int("screen", FUNC(homedata_upd7807_state::homedata_irq)); /* also triggered by the blitter */ upd7807_device &audiocpu(UPD7807(config, m_audiocpu, 9_MHz_XTAL)); /* 9MHz ? */ - audiocpu.set_addrmap(AS_PROGRAM, &homedata_state::reikaids_upd7807_map); - audiocpu.pa_in_cb().set(FUNC(homedata_state::reikaids_upd7807_porta_r)); - audiocpu.pa_out_cb().set(FUNC(homedata_state::reikaids_upd7807_porta_w)); + audiocpu.set_addrmap(AS_PROGRAM, &homedata_upd7807_state::reikaids_upd7807_map); + audiocpu.pa_in_cb().set(FUNC(homedata_upd7807_state::reikaids_upd7807_porta_r)); + audiocpu.pa_out_cb().set(FUNC(homedata_upd7807_state::reikaids_upd7807_porta_w)); audiocpu.pb_out_cb().set("dac", FUNC(dac_byte_interface::data_w)); - audiocpu.pc_out_cb().set(FUNC(homedata_state::reikaids_upd7807_portc_w)); + audiocpu.pc_out_cb().set(FUNC(homedata_upd7807_state::reikaids_upd7807_portc_w)); audiocpu.pt_in_cb().set(m_soundlatch, FUNC(generic_latch_8_device::read)); config.set_maximum_quantum(attotime::from_hz(30000)); // very high interleave required to sync for startup tests - MCFG_MACHINE_START_OVERRIDE(homedata_state,reikaids) - MCFG_MACHINE_RESET_OVERRIDE(homedata_state,reikaids) + MCFG_MACHINE_START_OVERRIDE(homedata_upd7807_state,reikaids) + MCFG_MACHINE_RESET_OVERRIDE(homedata_upd7807_state,reikaids) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -1318,15 +1306,15 @@ void homedata_state::reikaids(machine_config &config) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(256, 256); screen.set_visarea(0, 255, 16, 256-1-16); - screen.set_screen_update(FUNC(homedata_state::screen_update_reikaids)); - screen.screen_vblank().set(FUNC(homedata_state::screen_vblank)); + screen.set_screen_update(FUNC(homedata_upd7807_state::screen_update_reikaids)); + screen.screen_vblank().set(FUNC(homedata_upd7807_state::screen_vblank)); screen.screen_vblank().append([this] (int state) { if (state) m_audiocpu->pulse_input_line(UPD7810_INTF1, m_audiocpu->minimum_quantum_time()); }); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_reikaids); - PALETTE(config, m_palette, FUNC(homedata_state::reikaids_palette), 0x8000); + PALETTE(config, m_palette, FUNC(homedata_upd7807_state::reikaids_palette), 0x8000); - MCFG_VIDEO_START_OVERRIDE(homedata_state,reikaids) + MCFG_VIDEO_START_OVERRIDE(homedata_upd7807_state,reikaids) /* sound hardware */ SPEAKER(config, "speaker").front_center(); @@ -1347,26 +1335,25 @@ void homedata_state::reikaids(machine_config &config) /**************************************************************************/ -void homedata_state::pteacher(machine_config &config) +void homedata_upd7807_state::pteacher(machine_config &config) { /* basic machine hardware */ MC6809E(config, m_maincpu, 16000000/8); /* 2MHz ? */ - m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::pteacher_map); - m_maincpu->set_vblank_int("screen", FUNC(homedata_state::homedata_irq)); /* also triggered by the blitter */ + m_maincpu->set_addrmap(AS_PROGRAM, &homedata_upd7807_state::pteacher_map); + m_maincpu->set_vblank_int("screen", FUNC(homedata_upd7807_state::homedata_irq)); /* also triggered by the blitter */ upd7807_device &audiocpu(UPD7807(config, m_audiocpu, 9000000)); /* 9MHz ? */ - audiocpu.set_addrmap(AS_PROGRAM, &homedata_state::pteacher_upd7807_map); - audiocpu.pa_in_cb().set(FUNC(homedata_state::pteacher_upd7807_porta_r)); - audiocpu.pa_out_cb().set(FUNC(homedata_state::pteacher_upd7807_porta_w)); + audiocpu.set_addrmap(AS_PROGRAM, &homedata_upd7807_state::pteacher_upd7807_map); + audiocpu.pa_in_cb().set(FUNC(homedata_upd7807_state::pteacher_upd7807_porta_r)); + audiocpu.pa_out_cb().set(FUNC(homedata_upd7807_state::pteacher_upd7807_porta_w)); audiocpu.pb_out_cb().set("dac", FUNC(dac_byte_interface::data_w)); audiocpu.pc_in_cb().set_ioport("COIN"); - audiocpu.pc_out_cb().set(FUNC(homedata_state::pteacher_upd7807_portc_w)); - audiocpu.pt_in_cb().set(FUNC(homedata_state::pteacher_keyboard_r)); + audiocpu.pc_out_cb().set(FUNC(homedata_upd7807_state::pteacher_upd7807_portc_w)); + audiocpu.pt_in_cb().set(FUNC(homedata_upd7807_state::pteacher_keyboard_r)); config.set_maximum_quantum(attotime::from_hz(6000)); // should be enough - MCFG_MACHINE_START_OVERRIDE(homedata_state,pteacher) - MCFG_MACHINE_RESET_OVERRIDE(homedata_state,pteacher) + MCFG_MACHINE_RESET_OVERRIDE(homedata_upd7807_state,pteacher) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -1375,15 +1362,15 @@ void homedata_state::pteacher(machine_config &config) screen.set_size(64*8, 32*8); // visible area can be changed at runtime screen.set_visarea(0*8, 54*8-1, 2*8, 30*8-1); - screen.set_screen_update(FUNC(homedata_state::screen_update_pteacher)); - screen.screen_vblank().set(FUNC(homedata_state::screen_vblank)); + screen.set_screen_update(FUNC(homedata_upd7807_state::screen_update_pteacher)); + screen.screen_vblank().set(FUNC(homedata_upd7807_state::screen_vblank)); screen.screen_vblank().append([this] (int state) { if (state) m_audiocpu->pulse_input_line(UPD7810_INTF1, m_audiocpu->minimum_quantum_time()); }); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_pteacher); - PALETTE(config, m_palette, FUNC(homedata_state::pteacher_palette), 0x8000); + PALETTE(config, m_palette, FUNC(homedata_upd7807_state::pteacher_palette), 0x8000); - MCFG_VIDEO_START_OVERRIDE(homedata_state,pteacher) + MCFG_VIDEO_START_OVERRIDE(homedata_upd7807_state,pteacher) /* sound hardware */ SPEAKER(config, "speaker").front_center(); @@ -1397,37 +1384,37 @@ void homedata_state::pteacher(machine_config &config) DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC } -void homedata_state::jogakuen(machine_config &config) +void homedata_upd7807_state::jogakuen(machine_config &config) { pteacher(config); - m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::jogakuen_map); + m_maincpu->set_addrmap(AS_PROGRAM, &homedata_upd7807_state::jogakuen_map); } -void homedata_state::mjkinjas(machine_config &config) +void homedata_upd7807_state::mjkinjas(machine_config &config) { pteacher(config); - m_audiocpu->set_clock(11000000); /* 11MHz ? */ + m_audiocpu->set_clock(11000000); // 11MHz ? } -void homedata_state::lemnangl(machine_config &config) +void homedata_upd7807_state::lemnangl(machine_config &config) { pteacher(config); - /* video hardware */ + // video hardware m_gfxdecode->set_info(gfx_lemnangl); - MCFG_VIDEO_START_OVERRIDE(homedata_state,lemnangl) + MCFG_VIDEO_START_OVERRIDE(homedata_upd7807_state,lemnangl) } -void homedata_state::mjikaga(machine_config &config) +void homedata_upd7807_state::mjikaga(machine_config &config) { lemnangl(config); - /* Mahjong Ikagadesuka is different as well. */ - m_maincpu->set_addrmap(AS_PROGRAM, &homedata_state::mjikaga_map); - m_audiocpu->set_addrmap(AS_PROGRAM, &homedata_state::mjikaga_upd7807_map); + // Mahjong Ikagadesuka is different as well. + m_maincpu->set_addrmap(AS_PROGRAM, &homedata_upd7807_state::mjikaga_map); + m_audiocpu->set_addrmap(AS_PROGRAM, &homedata_upd7807_state::mjikaga_upd7807_map); config.set_maximum_quantum(attotime::from_hz(9000)); // boost synch a bit more, otherwise the game fails to start } @@ -1443,9 +1430,9 @@ void homedata_state::cpu0_map(address_map &map) void homedata_state::cpu1_map(address_map &map) { - map(0x0000, 0x3fff).ram(); // videoram + map(0x0000, 0x3fff).ram(); // video RAM map(0x4000, 0x5fff).ram(); - map(0x6000, 0x6fff).ram(); /* work ram */ + map(0x6000, 0x6fff).ram(); // work RAM map(0x7000, 0x77ff).ram(); //0x7ff0 onward is the blitter map(0x7ffe, 0x7ffe).nopr(); //watchdog @@ -1467,7 +1454,7 @@ void homedata_state::mirderby_prot_w(uint8_t data) void homedata_state::cpu2_map(address_map &map) { - map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::mrokumei_videoram_w)).share("videoram"); + map(0x0000, 0x3fff).ram().w(FUNC(homedata_state::mrokumei_videoram_w)).share(m_videoram); map(0x4000, 0x5fff).ram(); map(0x6000, 0x6fff).ram(); /* work ram */ map(0x7000, 0x77ff).ram(); @@ -1574,10 +1561,10 @@ void homedata_state::mirderby(machine_config &config) ROM_START( hourouki ) - ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x77f01.bin", 0x08000, 0x8000, CRC(cd3197b8) SHA1(7dad9ce57a83d675a8a9a4e06df360c22100fe4b) ) + ROM_REGION( 0x8000, "maincpu", 0 ) // 6809 Code + ROM_LOAD( "x77f01.bin", 0x0000, 0x8000, CRC(cd3197b8) SHA1(7dad9ce57a83d675a8a9a4e06df360c22100fe4b) ) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "x77a10.bin", 0x00000, 0x20000, CRC(dc1d616b) SHA1(93b8dfe1566556e9621c0d5f3998b31874f74a28) ) ROM_REGION( 0x20000, "gfx1", 0 ) @@ -1587,19 +1574,19 @@ ROM_START( hourouki ) ROM_LOAD( "x77a04.bin", 0x00000, 0x20000, CRC(fd348e59) SHA1(df0eb4d24e3e778e7a06b7fd7fa4e077fa0ebf82) ) ROM_LOAD( "x77a05.bin", 0x20000, 0x20000, CRC(3f76c8af) SHA1(2b41a9a06f8ccbb9f3879c742fa8af4424837fb2) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x77e06.bin", 0x00000, 0x8000, CRC(63607fe5) SHA1(50c756d741117bd0ea8a877bcb1f025e02cc6d29) ) ROM_LOAD16_BYTE( "x77e07.bin", 0x00001, 0x8000, CRC(79fcfc57) SHA1(4311a6bd8aa2dcad2b4fa5a9091c27dd74df62eb) ) - ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x20000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x77a08.bin", 0x0000, 0x20000, CRC(22bde229) SHA1(8b44fa895f77b5c95d798172225a030fa0c04126) ) ROM_END ROM_START( mhgaiden ) - ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x72e01.bin", 0x08000, 0x8000, CRC(98cfa53e) SHA1(dd08f5f9ff9d4a9e01e531247fcb17a8407ca8b6) ) + ROM_REGION( 0x8000, "maincpu", 0 ) // 6809 Code + ROM_LOAD( "x72e01.bin", 0x0000, 0x8000, CRC(98cfa53e) SHA1(dd08f5f9ff9d4a9e01e531247fcb17a8407ca8b6) ) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "x72b10.bin", 0x00000, 0x20000, CRC(00ebbc45) SHA1(9e7ade202bf37a86153a38d705ae26a72732d2bb) ) ROM_REGION( 0x20000, "gfx1", 0 ) @@ -1609,19 +1596,19 @@ ROM_START( mhgaiden ) ROM_LOAD( "x72b04.bin", 0x00000, 0x20000, CRC(37e3e779) SHA1(7011159dee2c643c3fd6ffbbd0849f63933279ad) ) ROM_LOAD( "x72b05.bin", 0x20000, 0x20000, CRC(aa5ce6f6) SHA1(d97b08fce68a69b1445d5ab28c0c97fabb5f264b) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x72c06.bin", 0x00000, 0x8000, CRC(b57fb589) SHA1(21b2fc33b9045a4ffa9e4b0bd598fd3416c0adbf) ) ROM_LOAD16_BYTE( "x72c07.bin", 0x00001, 0x8000, CRC(2aadb285) SHA1(90af8541092fbb116b6d6eaf1511b49a2f9bceaf) ) - ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x20000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x72b08.bin", 0x0000, 0x20000, CRC(be312d23) SHA1(f2c18d6372c2f819248976c67abe0ddcd5cc1de1) ) ROM_END ROM_START( mjhokite ) - ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "a74_g01.6g", 0x08000, 0x8000, CRC(409cc501) SHA1(6e9ab81198a5a54489cca8b6dcafb67995351207) ) + ROM_REGION( 0x8000, "maincpu", 0 ) // 6809 Code + ROM_LOAD( "a74_g01.6g", 0x0000, 0x8000, CRC(409cc501) SHA1(6e9ab81198a5a54489cca8b6dcafb67995351207) ) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "a74_a10.11k", 0x00000, 0x20000, CRC(2252f3ec) SHA1(018aaad087354b05b120aa42db572ed13f690f88) ) ROM_REGION( 0x20000, "gfx1", 0 ) @@ -1633,19 +1620,19 @@ ROM_START( mjhokite ) ROM_LOAD( "a74_a041.bin", 0x40000, 0x20000, CRC(c6a6407d) SHA1(7421f4ae8b2959d16114cadc9098156e5a97b36f) ) ROM_LOAD( "a74_a051.bin", 0x60000, 0x20000, CRC(74522b81) SHA1(6bd9655005f36887bec7c127f467e765447acd8f) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "a74_a06.1l", 0x00000, 0x8000, CRC(df057dd3) SHA1(0afae441b43a87e04511b8e652d2b03f48d8f705) ) ROM_LOAD16_BYTE( "a74_a07.1m", 0x00001, 0x8000, CRC(3c230167) SHA1(5d57f614bf07baa8b5c96f1d14241ff7c66806c1) ) - ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x20000, "blit_rom", 0 ) // blitter data ROM_LOAD( "a74_a08.13a", 0x0000, 0x20000, CRC(dffdd855) SHA1(91469a997a6a9f74f1b84c127f30f5b0e2f974ac) ) ROM_END ROM_START( mjclinic ) - ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x80_g01.6g", 0x08000, 0x8000, CRC(787b4fb5) SHA1(d1708979d209113b604f6d0973fe14a0c4348351) ) + ROM_REGION( 0x8000, "maincpu", 0 ) // 6809 Code + ROM_LOAD( "x80_g01.6g", 0x0000, 0x8000, CRC(787b4fb5) SHA1(d1708979d209113b604f6d0973fe14a0c4348351) ) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "x80_a10.11k", 0x00000, 0x20000, CRC(afedbadf) SHA1(e2f101b59c0d23f9dc9b057c41d496fc3223cbb8) ) ROM_REGION( 0x20000, "gfx1", 0 ) @@ -1666,10 +1653,10 @@ ROM_START( mjclinic ) ROM_END ROM_START( mjclinica ) - ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x80_f01.6g", 0x08000, 0x8000, CRC(cd814ec0) SHA1(55b2c9519fc98f71a2731c3851ce56ee8e57bd66) ) // labeled f01 instead of g01. Earlier version? + ROM_REGION( 0x8000, "maincpu", 0 ) // 6809 Code + ROM_LOAD( "x80_f01.6g", 0x0000, 0x8000, CRC(cd814ec0) SHA1(55b2c9519fc98f71a2731c3851ce56ee8e57bd66) ) // labeled f01 instead of g01. Earlier version? - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "x80_a10.11k", 0x00000, 0x20000, CRC(afedbadf) SHA1(e2f101b59c0d23f9dc9b057c41d496fc3223cbb8) ) ROM_REGION( 0x20000, "gfx1", 0 ) @@ -1681,19 +1668,19 @@ ROM_START( mjclinica ) ROM_LOAD( "x80_a041.bin", 0x40000, 0x20000, CRC(f70bb001) SHA1(3b29bb0bd155e97d3ccc72a8a07046c676c8452d) ) ROM_LOAD( "x80_a051.bin", 0x60000, 0x20000, CRC(c7469cb8) SHA1(bcf7021667e943991865fdbc9620f00b09e1db3e) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x80_a06.1l", 0x00000, 0x8000, CRC(c1f9b2fb) SHA1(abe17e2b3b880f91564e32c246116c33e2884889) ) ROM_LOAD16_BYTE( "x80_a07.1m", 0x00001, 0x8000, CRC(e3120152) SHA1(b4a778a9b91e204e2c068dff9a40bd29eccf04a5) ) - ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x20000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x80_a08.13a", 0x0000, 0x20000, CRC(174e8ec0) SHA1(a5075fe4bba9403ef9e0636d5f3f66aad8b2bc54) ) ROM_END ROM_START( mrokumei ) - ROM_REGION( 0x010000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "m81d01.bin", 0x08000, 0x8000, CRC(6f81a78a) SHA1(5e16327b04b065ed4e39a147b18711902dba6384) ) + ROM_REGION( 0x8000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "m81d01.bin", 0x00000, 0x8000, CRC(6f81a78a) SHA1(5e16327b04b065ed4e39a147b18711902dba6384) ) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "m81a10.bin", 0x00000, 0x20000, CRC(0866b2d3) SHA1(37a726830476e372db906382e1d0601c461c7c10) ) ROM_REGION( 0x20000, "gfx1", 0 ) @@ -1705,20 +1692,19 @@ ROM_START( mrokumei ) ROM_LOAD( "m81a41.bin", 0x40000, 0x20000, CRC(9332b879) SHA1(fc70a6acf816564c1c90c2f9aa644f702a38eae1) ) ROM_LOAD( "m81a51.bin", 0x60000, 0x20000, CRC(dda3ae30) SHA1(a0ba05cc46a4b2869ddf544c538e40a40f3babd5) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "m81b06.bin", 0x00000, 0x8000, CRC(96665d39) SHA1(9173791831555e69b8938d85340a08dd73012f8d) ) ROM_LOAD16_BYTE( "m81b07.bin", 0x00001, 0x8000, CRC(14f39690) SHA1(821f9de1b28b9d7844fc1b002c7ee3bbdda7f905) ) - ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x20000, "blit_rom", 0 ) // blitter data ROM_LOAD( "m81a08.bin", 0x0000, 0x20000, CRC(dba706b9) SHA1(467c8c3e12cd64002d2516dd117bc87d03448f49) ) ROM_END ROM_START( lastapos ) - ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "e82a01.j14", 0x010000, 0x01c000, CRC(236475ae) SHA1(e14176682fda9195b2919868134ee8491f59badd) ) - ROM_CONTINUE( 0x00c000, 0x004000) + ROM_REGION( 0x020000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "e82a01.j14", 0x000000, 0x020000, CRC(236475ae) SHA1(e14176682fda9195b2919868134ee8491f59badd) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "x82a04.e20", 0x000000, 0x040000, CRC(52c9028a) SHA1(9d5e37b2f741d5c0e64ba3d674a72330058b96f2) ) ROM_REGION( 0x200000, "gfx1", 0 ) @@ -1739,11 +1725,11 @@ ROM_START( lastapos ) ROM_REGION( 0x80000, "gfx4", 0 ) ROM_LOAD( "x82a05.d8", 0x000000, 0x80000, CRC(fb65e0e0) SHA1(d560091cfad17af6539913db1279c62a680de4fc) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "e82a18.e12", 0x00000, 0x8000, CRC(1f52a7aa) SHA1(55bbba5bfad1eee4872939d23ac643aa3074b3cf) ) ROM_LOAD16_BYTE( "e82a17.e9", 0x00001, 0x8000, CRC(f91d77a1) SHA1(a650a68e7e75719819fd04dda86d7fc8849dfe7d) ) - ROM_REGION( 0x040000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x040000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x82a02.e19", 0x00000, 0x040000, CRC(90fe700f) SHA1(bf7f9955a2cb1af43a272bf3366ff8c09ff6f7e6) ) ROM_REGION( 0x0100, "user2", 0 ) @@ -1751,11 +1737,10 @@ ROM_START( lastapos ) ROM_END ROM_START( reikaids ) - ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "j82c01.j14", 0x010000, 0x01c000, CRC(50fcc451) SHA1(ad717b8300f0903ef136569cf933b8af0e67eb6b) ) - ROM_CONTINUE( 0x00c000, 0x004000) + ROM_REGION( 0x020000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "j82c01.j14", 0x000000, 0x020000, CRC(50fcc451) SHA1(ad717b8300f0903ef136569cf933b8af0e67eb6b) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "x82a04.e20", 0x000000, 0x040000, CRC(52c9028a) SHA1(9d5e37b2f741d5c0e64ba3d674a72330058b96f2) ) ROM_REGION( 0x200000, "gfx1", 0 ) @@ -1774,11 +1759,11 @@ ROM_START( reikaids ) ROM_REGION( 0x080000, "gfx4", 0 ) ROM_LOAD( "x82a05.d8", 0x000000, 0x80000, CRC(fb65e0e0) SHA1(d560091cfad17af6539913db1279c62a680de4fc) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "e82a18.e12", 0x00000, 0x8000, CRC(1f52a7aa) SHA1(55bbba5bfad1eee4872939d23ac643aa3074b3cf) ) ROM_LOAD16_BYTE( "e82a17.e9", 0x00001, 0x8000, CRC(f91d77a1) SHA1(a650a68e7e75719819fd04dda86d7fc8849dfe7d) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x82a02.e19", 0x00000, 0x040000, CRC(90fe700f) SHA1(bf7f9955a2cb1af43a272bf3366ff8c09ff6f7e6) ) ROM_REGION( 0x0100, "user2", 0 ) @@ -1786,11 +1771,10 @@ ROM_START( reikaids ) ROM_END ROM_START( battlcry ) - ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "s88e01.j13", 0x010000, 0x01c000, CRC(b08438fe) SHA1(41a0fcdabee449081840848c45983984d7153d1b) ) - ROM_CONTINUE( 0x00c000, 0x004000 ) + ROM_REGION( 0x020000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "s88e01.j13", 0x000000, 0x020000, CRC(b08438fe) SHA1(41a0fcdabee449081840848c45983984d7153d1b) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "s88b04.f20", 0x000000, 0x040000, CRC(c54b5a5e) SHA1(421082af349b170d74f5214d8b5eed44db472749) ) ROM_REGION( 0x200000, "gfx1", 0 ) @@ -1809,11 +1793,11 @@ ROM_START( battlcry ) ROM_REGION( 0x080000, "gfx4", 0 ) ROM_LOAD( "s88c05.e7", 0x000000, 0x80000, CRC(e7f13340) SHA1(05b0f3ca369c95d4fd50cd9617fc044ad7bdf0d3) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "s88b18.f10", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) ) ROM_LOAD16_BYTE( "s88b17.f9", 0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "s88b02.f19", 0x00000, 0x040000, CRC(7044a542) SHA1(8efaa512f62fe9a37d2474c435c549118c019d67) ) ROM_REGION( 0x0100, "user2", 0 ) @@ -1821,11 +1805,10 @@ ROM_START( battlcry ) ROM_END ROM_START( battlcryc ) - ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "s88c01.j14", 0x010000, 0x01c000, CRC(4aa6d637) SHA1(e10c6c4a6adeb3b4837ebe5ff0a49ec1204b2e54) ) // 27C1000 - ROM_CONTINUE( 0x00c000, 0x004000 ) + ROM_REGION( 0x020000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "s88c01.j14", 0x000000, 0x020000, CRC(4aa6d637) SHA1(e10c6c4a6adeb3b4837ebe5ff0a49ec1204b2e54) ) // 27C1000 - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "s88b04.f20", 0x000000, 0x040000, CRC(c54b5a5e) SHA1(421082af349b170d74f5214d8b5eed44db472749) ) ROM_REGION( 0x200000, "gfx1", 0 ) @@ -1844,7 +1827,7 @@ ROM_START( battlcryc ) ROM_REGION( 0x080000, "gfx4", 0 ) ROM_LOAD( "s88c05.e7", 0x000000, 0x80000, CRC(e7f13340) SHA1(05b0f3ca369c95d4fd50cd9617fc044ad7bdf0d3) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "s88b18.f10", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) ) ROM_LOAD16_BYTE( "s88b17.f9", 0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) ) @@ -1856,15 +1839,14 @@ ROM_START( battlcryc ) ROM_END ROM_START( battlcryp ) // prototype presented at AOU 1989 - ROM_REGION( 0x02c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "s88_b01.ic31", 0x010000, 0x01c000, CRC(8dae51b5) SHA1(52a4ec602c9c5bb185dd66b4b98dbfaa91189ced) ) // 27C1000 - ROM_CONTINUE( 0x00c000, 0x004000 ) + ROM_REGION( 0x020000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "s88_b01.ic31", 0x000000, 0x020000, CRC(8dae51b5) SHA1(52a4ec602c9c5bb185dd66b4b98dbfaa91189ced) ) // 27C1000 - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code, identical to the released game but split in 27C1000 ROMs */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code, identical to the released game but split in 27C1000 ROMs ROM_LOAD( "s88_b04_1.ic32", 0x000000, 0x020000, CRC(9995c869) SHA1(9b68d1a15499fed216966ef3a3b68e6381dc01ad) ) ROM_LOAD( "s88_b04_2.ic55", 0x020000, 0x020000, CRC(aaa2dabe) SHA1(5928c5d265a5d6e521285a8ba29e70ed1887a5c9) ) - ROM_REGION( 0x200000, "gfx1", 0 ) /* identical to the released game but split in 27C1000 ROMs */ + ROM_REGION( 0x200000, "gfx1", 0 ) // identical to the released game but split in 27C1000 ROMs ROM_LOAD16_BYTE( "s88_b13_1.v30", 0x000000, 0x20000, CRC(913e11df) SHA1(766b9cb1a39697db88f25a9ffc58724699ab9283) ) ROM_LOAD16_BYTE( "s88_b13_2.v31", 0x000001, 0x20000, CRC(16069926) SHA1(502795838740b7d8641ae3308b7c56f540a9719b) ) ROM_LOAD16_BYTE( "s88_b13_3.v32", 0x040000, 0x20000, CRC(95fc246f) SHA1(7b5d24cb7529aa4064f6bafa75172e3ce63d17c1) ) @@ -1882,7 +1864,7 @@ ROM_START( battlcryp ) // prototype presented at AOU 1989 ROM_LOAD16_BYTE( "s88_b16_3.v3e", 0x1c0000, 0x20000, CRC(df7a54e8) SHA1(a76a5f80a43b54800eb56fe5c20fb2b582b6d737) ) ROM_LOAD16_BYTE( "s88_b16_4.v3f", 0x1c0001, 0x20000, CRC(fdbff33d) SHA1(10f4ebc1f7e42063b5ee10cb2e2f6b904bff4bc8) ) - ROM_REGION( 0x100000, "gfx2", 0 ) /* identical to the released game but split in 27C1000 ROMs */ + ROM_REGION( 0x100000, "gfx2", 0 ) // identical to the released game but split in 27C1000 ROMs ROM_LOAD16_BYTE( "s88_b09_1.v20", 0x000000, 0x20000, CRC(bfa2d6d3) SHA1(a10c9433c3215a80a74a8e46bd92595811073237) ) ROM_LOAD16_BYTE( "s88_b09_2.v21", 0x000001, 0x20000, CRC(e1430cf9) SHA1(ec9b373b050f34219791f6309166a2d3abc43bc9) ) ROM_LOAD16_BYTE( "s88_b09_3.v22", 0x040000, 0x20000, CRC(54cb22c7) SHA1(5c705fc13f7c866ecf3f51bd115c3dc58884a545) ) @@ -1892,23 +1874,23 @@ ROM_START( battlcryp ) // prototype presented at AOU 1989 ROM_LOAD16_BYTE( "s88_b10_3.v26", 0x0c0000, 0x20000, CRC(d3672c33) SHA1(27c81d2c2257c613975e0b8dc41753c85305ddce) ) ROM_LOAD16_BYTE( "s88_b10_4.v27", 0x0c0001, 0x20000, CRC(ae73723e) SHA1(49e1ab0a2626149f5986bbecf531685375b3695a) ) - ROM_REGION( 0x080000, "gfx3", 0 ) /* identical to the released game but split in 27C1000 ROMs */ + ROM_REGION( 0x080000, "gfx3", 0 ) // identical to the released game but split in 27C1000 ROMs ROM_LOAD16_BYTE( "s88_b08_1.v10", 0x000000, 0x20000, CRC(5132cd98) SHA1(8999aa64ff6f5c483ae71aab4699fe6ee3169382) ) ROM_LOAD16_BYTE( "s88_b08_2.v11", 0x000001, 0x20000, CRC(fa661846) SHA1(745a15b801479e451fdb513ec4f334f438ba92c8) ) ROM_LOAD16_BYTE( "s88_b08_3.v12", 0x040000, 0x20000, CRC(caabbf44) SHA1(d1957121012797372a93689a34ab8f0c3a5130af) ) ROM_LOAD16_BYTE( "s88_b08_4.v13", 0x040001, 0x20000, CRC(257aacde) SHA1(0ac577864eedc2f778224f91235a011110a7006a) ) - ROM_REGION( 0x080000, "gfx4", 0 ) /* identical to the released game but split in 27C1000 ROMs */ + ROM_REGION( 0x080000, "gfx4", 0 ) // identical to the released game but split in 27C1000 ROMs ROM_LOAD16_BYTE( "s88_b05_1.v00", 0x000000, 0x20000, CRC(913e11df) SHA1(766b9cb1a39697db88f25a9ffc58724699ab9283) ) ROM_LOAD16_BYTE( "s88_b05_2.v01", 0x000001, 0x20000, CRC(16069926) SHA1(502795838740b7d8641ae3308b7c56f540a9719b) ) ROM_LOAD16_BYTE( "s88_b05_3.v02", 0x040000, 0x20000, CRC(3bca50bd) SHA1(b9b8c19ea4e6ff09c3032c18d246ed496552741e) ) ROM_LOAD16_BYTE( "s88_b05_4.v03", 0x040001, 0x20000, CRC(c526d508) SHA1(fa7ec24a9f6fdaaf1a1b32b4b383e8738ad1c7d1) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "s88_b18", 0x00000, 0x8000, CRC(fa432edc) SHA1(55c01b6a1175539facdfdd0c3c49d878a59156a4) ) // 27c256 ROM_LOAD16_BYTE( "s88_b17", 0x00001, 0x8000, CRC(7c55568e) SHA1(1e599cd00abe7b67bcb0c8d3f0c467a99ef79658) ) // 27c256 - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data, identical to the released game but split in 27C1000 ROMs */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data, identical to the released game but split in 27C1000 ROMs ROM_LOAD( "s88_b02_1.ic28", 0x00000, 0x020000, CRC(93d8c8ec) SHA1(bb1fcf4d32db6885d0c78416211c20decc48d266) ) ROM_LOAD( "s88_b02_2.ic27", 0x20000, 0x020000, CRC(8918327b) SHA1(445c0252ec8e71423e77c75190f9524a90f918a9) ) @@ -1917,11 +1899,10 @@ ROM_START( battlcryp ) // prototype presented at AOU 1989 ROM_END ROM_START( mjkojink ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x83j01.16e", 0x010000, 0xc000, CRC(91f90376) SHA1(d452f538f4a1b774640ced49f0ab2784b112e8ba) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "x83j01.16e", 0x000000, 0x10000, CRC(91f90376) SHA1(d452f538f4a1b774640ced49f0ab2784b112e8ba) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "x83b02.9g", 0x00000, 0x40000, CRC(46a11578) SHA1(4ff7797808610b4bb0550be71acc49bbd8556fad) ) ROM_REGION( 0x100000, "gfx1", 0 ) @@ -1936,20 +1917,19 @@ ROM_START( mjkojink ) ROM_LOAD32_BYTE( "x83b12.4c", 2, 0x40000, CRC(2035009d) SHA1(8a2aadcc49ac7e68dfabe5ea66b607459a89045d) ) ROM_LOAD32_BYTE( "x83b13.6c", 3, 0x40000, CRC(53800df2) SHA1(5f18052a2d6afd27ff898ab597bb4e92fad238d7) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x83a19.4k", 0x00000, 0x8000, CRC(d29c9ef0) SHA1(c4e2c0c3c9c7abee1a965d6842956cdf98a76ad4) ) ROM_LOAD16_BYTE( "x83a18.3k", 0x00001, 0x8000, CRC(c3351952) SHA1(036be91ca428c5df016dd777bd658cb00f44ee3c) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x83b03.12e", 0x0000, 0x40000, CRC(4ba8b5ec) SHA1(cee77583f2f7b7fdba7e0f17e4d1244891488d36) ) ROM_END ROM_START( mjjoship ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x73_l01.16e", 0x010000, 0xc000, CRC(df950025) SHA1(3dc22c0a8cf03cff7310fbff36f83804019a5337) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "x73_l01.16e", 0x000000, 0x10000, CRC(df950025) SHA1(3dc22c0a8cf03cff7310fbff36f83804019a5337) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "x73_b02.9g", 0x00000, 0x20000, CRC(6b01503b) SHA1(2e1575dac0b9b7c7233a3b8262a99a10e24ec813) ) ROM_RELOAD( 0x20000, 0x20000 ) @@ -1968,20 +1948,19 @@ ROM_START( mjjoship ) ROM_LOAD32_BYTE( "x73a12.4c", 2, 0x40000, CRC(f3b6ad98) SHA1(d91eeffd18684300809c99fa93d4ac0188530ff7) ) ROM_LOAD32_BYTE( "x73a13.6c", 3, 0x40000, CRC(30ff8c5f) SHA1(e51d89f6b5db0d8e2c22a046337993f962f6ba8c) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x73_c19.4k", 0x00000, 0x8000, CRC(f4bdce8a) SHA1(e3168d6aa6f8cd24b497706a117c77353d1c6ef3) ) ROM_LOAD16_BYTE( "x73_c18.3k", 0x00001, 0x8000, CRC(1ab265cc) SHA1(24dced438a28ea9eb2f06c8859c5c07f4d975bfd) ) - ROM_REGION( 0x20000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x20000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x73a03.12e", 0x0000, 0x20000, CRC(fd32eb8c) SHA1(584afb1ed2da776a4ff9c0b9eb2906c914b28928) ) ROM_END ROM_START( vitaminc ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x90e01.bin", 0x010000, 0xc000, CRC(bc982525) SHA1(30f5e9ab27f799b895a3d979109e331603d94249) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "x90e01.bin", 0x000000, 0x10000, CRC(bc982525) SHA1(30f5e9ab27f799b895a3d979109e331603d94249) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "x90a02.bin", 0x00000, 0x40000, CRC(811f540a) SHA1(21993e99835a8995da28c24565b8e5dcc7aeb23e) ) ROM_REGION( 0x100000, "gfx1", 0 ) @@ -1996,20 +1975,19 @@ ROM_START( vitaminc ) ROM_LOAD32_BYTE( "x90a12.bin", 2, 0x40000, CRC(da6a65d1) SHA1(3ab3a9e9c76dfc02579bf2fc390c23d24fe5a901) ) ROM_LOAD32_BYTE( "x90a13.bin", 3, 0x40000, CRC(4da4553b) SHA1(da6fd2cfd5b027afe7e900f90128a25779acb15f) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x90b19.bin", 0x00000, 0x8000, CRC(d0022cfb) SHA1(f384964a09fe6c1f8a993f5da67d81a23df22879) ) ROM_LOAD16_BYTE( "x90b18.bin", 0x00001, 0x8000, CRC(fe1de95d) SHA1(e94282065b3c69de7c9ea214c752745c18c38cb7) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x90a03.bin", 0x0000, 0x40000, CRC(35d5b4e6) SHA1(1ea4d03946aad33d33a817f83d20e7ad8faace6d) ) ROM_END ROM_START( mjyougo ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x91c01.bin", 0x010000, 0xc000, CRC(e28e8c21) SHA1(8039d764fb48269f0cab549c5a8861c05ecb1ef1) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "x91c01.bin", 0x000000, 0x10000, CRC(e28e8c21) SHA1(8039d764fb48269f0cab549c5a8861c05ecb1ef1) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "x91a02.bin", 0x00000, 0x40000, CRC(995b1399) SHA1(262f3d7ccffdaa578466d390d790f89186b3c993) ) ROM_REGION( 0x100000, "gfx1", 0 ) @@ -2024,20 +2002,19 @@ ROM_START( mjyougo ) ROM_LOAD32_BYTE( "x91a12.bin", 2, 0x40000, CRC(149e8f86) SHA1(660c05deabb0ce43b2f5b936c035df1a2b029fc6) ) ROM_LOAD32_BYTE( "x91a13.bin", 3, 0x40000, CRC(59f7a140) SHA1(daad9433742b6292c8299935483f07f171436d17) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x91a19.bin", 0x00000, 0x8000, CRC(f63493df) SHA1(0e436bffb03fa6218363ee205c4fe5f4e16a24cc) ) ROM_LOAD16_BYTE( "x91a18.bin", 0x00001, 0x8000, CRC(b3541265) SHA1(d8e79c2856bb81e9ad9b79c012d64663a8997bbd) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x91a03.bin", 0x0000, 0x40000, CRC(4863caa2) SHA1(6ef511cb4d184d4705eb0fd3eb3d82daad49564a) ) ROM_END ROM_START( mjkinjas ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x07c01.bin", 0x010000, 0xc000, CRC(e6534904) SHA1(59c092f0369fc893763ad4b96551e0b4c2430a6a) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "x07c01.bin", 0x000000, 0x10000, CRC(e6534904) SHA1(59c092f0369fc893763ad4b96551e0b4c2430a6a) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "x07a02.bin", 0x00000, 0x40000, CRC(31396a5b) SHA1(c444f0a651da70c050a4c69bd09c31fc80dbf1de) ) ROM_REGION( 0x200000, "gfx1", 0 ) @@ -2052,20 +2029,19 @@ ROM_START( mjkinjas ) ROM_LOAD32_BYTE( "x07a12.bin", 2, 0x80000, CRC(911f0972) SHA1(90b511725de3a226326ddc39106071230f3d3bc6) ) ROM_LOAD32_BYTE( "x07a13.bin", 3, 0x80000, CRC(59be4c77) SHA1(1ba858c6b1e91753204e10738ca685a4df550d64) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x07a19.bin", 0x00000, 0x8000, CRC(7acabdf8) SHA1(90e39c1dd3e32c057ab8bfcd82d022231a06847c) ) ROM_LOAD16_BYTE( "x07a18.bin", 0x00001, 0x8000, CRC(d247bd5a) SHA1(298d62395ea7c687ed509863aaf3d8b758743cd8) ) - ROM_REGION( 0x80000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x80000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x07a03.bin", 0x0000, 0x80000, CRC(f5ff3e72) SHA1(e3489a3b8988677866aadd41cb99f146217022ce) ) ROM_END ROM_START( jogakuen ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "a01.bin", 0x010000, 0xc000, CRC(a189490a) SHA1(0d9f6389d4b16c3b885cdc8be20b19db25812aad) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "a01.bin", 0x000000, 0x10000, CRC(a189490a) SHA1(0d9f6389d4b16c3b885cdc8be20b19db25812aad) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "a02.bin", 0x00000, 0x40000, CRC(033add6c) SHA1(fc6b9333722228ba4270b1ba520e32e624b251c2) ) ROM_REGION( 0x200000, "gfx1", 0 ) @@ -2080,20 +2056,19 @@ ROM_START( jogakuen ) ROM_LOAD32_BYTE( "a12.bin", 2, 0x80000, CRC(5db85eb5) SHA1(01291b98676a8f5116739f66e517fe05f806514a) ) ROM_LOAD32_BYTE( "a13.bin", 3, 0x80000, CRC(fe04d5b7) SHA1(965c095ce4f8f494d91370fe798be9214c2195f2) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "a19.bin", 0x00000, 0x8000, CRC(9a3d9d5e) SHA1(1ab20fc5b7ab1c2508c76b0051923446c409e074) ) ROM_LOAD16_BYTE( "a18.bin", 0x00001, 0x8000, CRC(3289edd4) SHA1(7db4fbda8a22c64dc29ce6b4b63204cebd641351) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "a03.bin", 0x0000, 0x40000, CRC(bb1507ab) SHA1(465f45c9cae2d4e064b784cc5ba25b60839e4b5f) ) ROM_END ROM_START( lemnangl ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "x02_d01.16e", 0x010000, 0xc000, CRC(4c2fae05) SHA1(86516399bd1eb1565b446dfa0f9a974bde6f9af2) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "x02_d01.16e", 0x000000, 0x10000, CRC(4c2fae05) SHA1(86516399bd1eb1565b446dfa0f9a974bde6f9af2) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "x02a02.9g", 0x00000, 0x40000, CRC(e9aa8c80) SHA1(6db1345e20d53d8c69cebcac3b2a973fbcaa0e63) ) ROM_REGION( 0x100000, "gfx1", 0 ) @@ -2108,20 +2083,19 @@ ROM_START( lemnangl ) ROM_LOAD32_BYTE( "x02a12.4c", 2, 0x40000, CRC(fc3a254a) SHA1(bf8172c00446b348b4432c71d92e8567ba50ab98) ) ROM_LOAD32_BYTE( "x02a13.6c", 3, 0x40000, CRC(9f63e7e0) SHA1(4bd8077a3700ccbc4c4a358342b1f9fd4cba8f10) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "x02_b19.5k", 0x00000, 0x8000, CRC(f75959bc) SHA1(59a1debc28263a7f5f9b775817232fffc6e63ac4) ) ROM_LOAD16_BYTE( "x02_b18.3k", 0x00001, 0x8000, CRC(3f1510b1) SHA1(a9892beb3d911ee91d7dd276d9c84d14ba3253d8) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "x02a03.12e", 0x0000, 0x40000, CRC(02ef0378) SHA1(6223a019fc7794872dd49151952c56892295a779) ) ROM_END ROM_START( mjikaga ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "m15a01.bin", 0x010000, 0xc000, CRC(938cc4fb) SHA1(f979c6eee0b72bf53be8c7ebbc4e1dc05bd447d4) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "m15a01.bin", 0x000000, 0x10000, CRC(938cc4fb) SHA1(f979c6eee0b72bf53be8c7ebbc4e1dc05bd447d4) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "m15a02.bin", 0x00000, 0x40000, CRC(375933dd) SHA1(e813f02e53dc892714cd0e81301606600b72535c) ) ROM_REGION( 0x100000, "gfx1", 0 ) @@ -2136,20 +2110,19 @@ ROM_START( mjikaga ) ROM_LOAD32_BYTE( "m15a12.bin", 2, 0x40000, CRC(946b3f55) SHA1(17451cbd7b0c828444aaf2ff170f3a7104596c1d) ) ROM_LOAD32_BYTE( "m15a13.bin", 3, 0x40000, CRC(d9196955) SHA1(fa8fddbcd91b12d6cb918c0761ea478969a5a795) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "m15a19.bin", 0x00000, 0x8000, CRC(2f247acf) SHA1(468fee5a16c98751524e21ad0f608fc85c95ab86) ) ROM_LOAD16_BYTE( "m15a18.bin", 0x00001, 0x8000, CRC(2648ca07) SHA1(e4f5ed62b014a6e397ce611c2c592f795d112219) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "m15a03.bin", 0x0000, 0x40000, CRC(07e2e8f8) SHA1(61eed47c4136733059c1d96e98cadb8ac9078f95) ) ROM_END ROM_START( mjprivat ) - ROM_REGION( 0x01c000, "maincpu", 0 ) /* 6809 Code */ - ROM_LOAD( "311d01.16e", 0x010000, 0xc000, CRC(3b4f4676) SHA1(e308febb9c8d35b495b83b37daff7c56deba78fb) ) - ROM_CONTINUE( 0x00c000, 0x4000 ) + ROM_REGION( 0x010000, "maincpu", 0 ) // 6809 code + ROM_LOAD( "311d01.16e", 0x000000, 0x10000, CRC(3b4f4676) SHA1(e308febb9c8d35b495b83b37daff7c56deba78fb) ) - ROM_REGION( 0x40000, "audiocpu", 0) /* uPD7807 code */ + ROM_REGION( 0x40000, "audiocpu", 0) // uPD7807 code ROM_LOAD( "311a02.9g", 0x00000, 0x40000, CRC(ae1d360a) SHA1(26a1e8d654ea2e4393a5267f0d9dab62149b4112) ) ROM_REGION( 0x100000, "gfx1", 0 ) @@ -2164,23 +2137,23 @@ ROM_START( mjprivat ) ROM_LOAD32_BYTE( "311a12.4c", 2, 0x40000, CRC(ab26bb73) SHA1(3645d3f6767b0bcb43ce2e3b2ef3bdca37d446cf) ) ROM_LOAD32_BYTE( "311a13.6c", 3, 0x40000, CRC(f2f8f9a0) SHA1(d6b5dd68c85f9d506147f5ffeb60bdfad2bf0195) ) - ROM_REGION( 0x010000, "proms", 0 ) /* static palette */ + ROM_REGION( 0x010000, "proms", 0 ) // static palette ROM_LOAD16_BYTE( "311a19.4k", 0x00000, 0x8000, CRC(dbb5569a) SHA1(e23a32667adc8eade7555adbac18dac268f08d3e) ) ROM_LOAD16_BYTE( "311a18.3k", 0x00001, 0x8000, CRC(a5ca7723) SHA1(d074c5c09a50abdb2b0ffdeacfc077a91b9204bf) ) - ROM_REGION( 0x40000, "blit_rom", 0 ) /* blitter data */ + ROM_REGION( 0x40000, "blit_rom", 0 ) // blitter data ROM_LOAD( "311b03.12e", 0x0000, 0x40000, CRC(5722c341) SHA1(694e63261d91da48c0ed14a44fbc6c9c74b055d9) ) ROM_END ROM_START( mirderby ) - ROM_REGION( 0x8000, "cpu0", 0 ) /* Z80 Code */ + ROM_REGION( 0x8000, "cpu0", 0 ) // Z80 Code ROM_LOAD( "x70_a11.1g", 0x2000, 0x6000, CRC(b394eef7) SHA1(a646596d09b90eda44aaf8ccbf8f3fccfd3d5dad) ) // first 0x6000 bytes are blank! ROM_CONTINUE(0x0000, 0x2000) // main z80 code is here - ROM_REGION( 0x10000, "cpu1", 0 ) /* M6809 code */ + ROM_REGION( 0x10000, "cpu1", 0 ) // M6809 code ROM_LOAD( "x70_c01.14e", 0x00000, 0x10000, CRC(d79d072d) SHA1(8e189931de9c4eb520c1ec2d0898d8eaba0f01b5) ) - ROM_REGION( 0x10000, "maincpu", 0 ) /* M6809 code */ + ROM_REGION( 0x10000, "maincpu", 0 ) // M6809 code ROM_LOAD( "x70_b02.12e", 0x8000, 0x8000, CRC(76c9bb6f) SHA1(dd8893f3082d33d366247295e9531f8879c219c5) ) ROM_REGION( 0x8000, "gfx1", 0 ) // horse gfx @@ -2189,7 +2162,7 @@ ROM_START( mirderby ) ROM_REGION( 0x20000, "gfx2", 0 ) // fonts etc. ROM_LOAD( "x70_a04.5g", 0x0000, 0x20000, CRC(14392fdb) SHA1(dafdce473b2d2ebbdbf49fbd12f85c1ad69b2877) ) - ROM_REGION( 0x300, "proms", 0 ) /* colours */ + ROM_REGION( 0x300, "proms", 0 ) // colours ROM_LOAD( "x70a07.8l", 0x000, 0x100, CRC(7d4c9712) SHA1(fe2a89841fdf5e4fd6cd41478ad2f29d28bed54d) ) ROM_LOAD( "x70a08.7l", 0x100, 0x100, CRC(c4e77174) SHA1(ada238ded69f01b4daeb0159a2c5c422977bb95e) ) ROM_LOAD( "x70a09.6l", 0x200, 0x100, CRC(d0187957) SHA1(6b36c1bccad24708cfa2fc78da08313f9bcfdbc0) ) @@ -2197,44 +2170,40 @@ ROM_END -void homedata_state::init_reikaids() +void homedata_upd7807_state::init_reikaids() { m_priority = 0; } -void homedata_state::init_battlcry() -{ - m_priority = 1; /* priority and initial value for bank write */ -} - -void homedata_state::init_mirderby() +void homedata_upd7807_state::init_battlcry() { + m_priority = 1; // priority and initial value for bank write } -GAME( 1987, hourouki, 0, mrokumei, mjhokite, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Hourouki Part 1 - Seishun Hen (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1987, mhgaiden, 0, mrokumei, mjhokite, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Hourouki Gaiden (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjhokite, 0, mrokumei, mjhokite, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Hourouki Okite (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjclinic, 0, mrokumei, mjhokite, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Clinic (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjclinica, mjclinic, mrokumei, mjhokite, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Clinic (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mrokumei, 0, mrokumei, mjhokite, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Rokumeikan (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hourouki, 0, mrokumei, mjhokite, mrokumei_state, empty_init, ROT0, "Home Data", "Mahjong Hourouki Part 1 - Seishun Hen (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, mhgaiden, 0, mrokumei, mjhokite, mrokumei_state, empty_init, ROT0, "Home Data", "Mahjong Hourouki Gaiden (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjhokite, 0, mrokumei, mjhokite, mrokumei_state, empty_init, ROT0, "Home Data", "Mahjong Hourouki Okite (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjclinic, 0, mrokumei, mjhokite, mrokumei_state, empty_init, ROT0, "Home Data", "Mahjong Clinic (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjclinica, mjclinic, mrokumei, mjhokite, mrokumei_state, empty_init, ROT0, "Home Data", "Mahjong Clinic (Japan, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mrokumei, 0, mrokumei, mjhokite, mrokumei_state, empty_init, ROT0, "Home Data", "Mahjong Rokumeikan (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, lastapos, 0, reikaids, reikaids, homedata_state, init_reikaids, ROT0, "Home Data", "The Last Apostle Puppetshow", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, reikaids, lastapos, reikaids, reikaids, homedata_state, init_reikaids, ROT0, "Home Data", "Reikai Doushi - Chinese Exorcist (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, lastapos, 0, reikaids, reikaids, homedata_upd7807_state, init_reikaids, ROT0, "Home Data", "The Last Apostle Puppetshow", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, reikaids, lastapos, reikaids, reikaids, homedata_upd7807_state, init_reikaids, ROT0, "Home Data", "Reikai Doushi - Chinese Exorcist (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, battlcry, 0, reikaids, battlcry, homedata_state, init_battlcry, ROT0, "Home Data", "Battlecry (Version E)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, battlcryc, battlcry, reikaids, battlcry, homedata_state, init_battlcry, ROT0, "Home Data", "Battlecry (Version C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, battlcryp, battlcry, reikaids, battlcry, homedata_state, init_battlcry, ROT0, "Home Data", "Battlecry (Prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mjkojink, 0, pteacher, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Kojinkyouju (Private Teacher) (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mjjoship, 0, pteacher, mjjoship, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Joshi Pro-wres -Give up 5 byou mae- (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, vitaminc, 0, pteacher, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Vitamin C (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mjyougo, 0, pteacher, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong-yougo no Kisotairyoku (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjkinjas, 0, mjkinjas, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Kinjirareta Asobi (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992?,jogakuen, 0, jogakuen, jogakuen, homedata_state, empty_init, ROT0, "Windom", "Mahjong Jogakuen (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, battlcry, 0, reikaids, battlcry, homedata_upd7807_state, init_battlcry, ROT0, "Home Data", "Battlecry (Version E)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, battlcryc, battlcry, reikaids, battlcry, homedata_upd7807_state, init_battlcry, ROT0, "Home Data", "Battlecry (Version C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, battlcryp, battlcry, reikaids, battlcry, homedata_upd7807_state, init_battlcry, ROT0, "Home Data", "Battlecry (Prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mjkojink, 0, pteacher, pteacher, homedata_upd7807_state, empty_init, ROT0, "Home Data", "Mahjong Kojinkyouju (Private Teacher) (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mjjoship, 0, pteacher, mjjoship, homedata_upd7807_state, empty_init, ROT0, "Home Data", "Mahjong Joshi Pro-wres -Give up 5 byou mae- (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, vitaminc, 0, pteacher, pteacher, homedata_upd7807_state, empty_init, ROT0, "Home Data", "Mahjong Vitamin C (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mjyougo, 0, pteacher, pteacher, homedata_upd7807_state, empty_init, ROT0, "Home Data", "Mahjong-yougo no Kisotairyoku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjkinjas, 0, mjkinjas, pteacher, homedata_upd7807_state, empty_init, ROT0, "Home Data", "Mahjong Kinjirareta Asobi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992?,jogakuen, 0, jogakuen, jogakuen, homedata_upd7807_state, empty_init, ROT0, "Windom", "Mahjong Jogakuen (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, lemnangl, 0, lemnangl, pteacher, homedata_state, empty_init, ROT0, "Home Data", "Mahjong Lemon Angel (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjprivat, 0, lemnangl, pteacher, homedata_state, empty_init, ROT0, "Matoba", "Mahjong Private (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, lemnangl, 0, lemnangl, pteacher, homedata_upd7807_state, empty_init, ROT0, "Home Data", "Mahjong Lemon Angel (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjprivat, 0, lemnangl, pteacher, homedata_upd7807_state, empty_init, ROT0, "Matoba", "Mahjong Private (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991?,mjikaga, 0, mjikaga, mjikaga, homedata_state, empty_init, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991?,mjikaga, 0, mjikaga, mjikaga, homedata_upd7807_state, empty_init, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, mirderby, 0, mirderby, mirderby, homedata_state, init_mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 1988, mirderby, 0, mirderby, mirderby, homedata_state, empty_init, ROT0, "Home Data?", "Miracle Derby - Ascot", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/misc/homedata.h b/src/mame/misc/homedata.h index e6633dca1cf..d2c7ddd6b19 100644 --- a/src/mame/misc/homedata.h +++ b/src/mame/misc/homedata.h @@ -5,13 +5,14 @@ #pragma once -#include "machine/bankdev.h" #include "machine/gen_latch.h" #include "sound/sn76496.h" #include "sound/ymopn.h" + #include "emupal.h" #include "tilemap.h" + class homedata_state : public driver_device { public: @@ -20,8 +21,6 @@ public: m_vreg(*this, "vreg"), m_videoram(*this, "videoram"), m_blit_rom(*this, "blit_rom"), - m_mainbank(*this, "mainbank"), - m_audiobank(*this, "audiobank"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_ymsnd(*this, "ymsnd"), @@ -30,41 +29,26 @@ public: m_soundlatch(*this, "soundlatch"), m_mainlatch(*this, "mainlatch"), m_sn(*this, "snsnd"), - m_mrokumei_soundbank(*this, "mrokumei_soundbank"), m_keys(*this, "KEY%u", 0U) { } - void reikaids(machine_config &config); - void mrokumei(machine_config &config); - void mirderby(machine_config &config); - void pteacher(machine_config &config); - void jogakuen(machine_config &config); - void lemnangl(machine_config &config); - void mjikaga(machine_config &config); - void mjkinjas(machine_config &config); + void mirderby(machine_config &config) ATTR_COLD; - void init_reikaids(); - void init_battlcry(); - void init_mirderby(); + void init_mirderby() ATTR_COLD; -private: +protected: /* memory pointers */ optional_shared_ptr m_vreg; required_shared_ptr m_videoram; optional_region_ptr m_blit_rom; - optional_memory_bank m_mainbank; - optional_memory_bank m_audiobank; - /* video-related */ tilemap_t *m_bg_tilemap[2][4]{}; int m_visible_page = 0; int m_priority = 0; - uint8_t m_reikaids_which = 0; int m_flipscreen = 0; - uint8_t m_gfx_bank[2]{}; // pteacher only uses the first one uint8_t m_blitter_bank = 0; int m_blitter_param_count = 0; uint8_t m_blitter_param[4]{}; /* buffers last 4 writes to 0x8006 */ @@ -73,8 +57,6 @@ private: /* misc */ int m_vblank = 0; int m_keyb = 0; - int m_upd7807_porta = 0; - int m_upd7807_portc = 0; /* device */ required_device m_maincpu; @@ -85,15 +67,120 @@ private: optional_device m_soundlatch; optional_device m_mainlatch; // pteacher optional_device m_sn; // mrokumei and pteacher - optional_device m_mrokumei_soundbank; // mrokumei optional_ioport_array<12> m_keys; uint8_t m_prot_data = 0; + + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + + uint8_t mirderby_prot_r(); + void mirderby_prot_w(uint8_t data); + void mrokumei_videoram_w(offs_t offset, u8 data); + void homedata_blitter_param_w(uint8_t data); + TILE_GET_INFO_MEMBER(mirderby_get_info0_0); + TILE_GET_INFO_MEMBER(mirderby_get_info1_0); + TILE_GET_INFO_MEMBER(mirderby_get_info0_1); + TILE_GET_INFO_MEMBER(mirderby_get_info1_1); + DECLARE_VIDEO_START(mirderby); + void mirderby_palette(palette_device &palette) const ATTR_COLD; + uint32_t screen_update_mirderby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_WRITE_LINE_MEMBER(screen_vblank); + INTERRUPT_GEN_MEMBER(homedata_irq); + void mrokumei_handleblit( int rom_base ); + void mirderby_info0(tile_data &tileinfo, int tile_index, int page, int gfxbank); + void mirderby_info1(tile_data &tileinfo, int tile_index, int page, int gfxbank); + + void cpu0_map(address_map &map) ATTR_COLD; + void cpu1_map(address_map &map) ATTR_COLD; + void cpu2_map(address_map &map) ATTR_COLD; +}; + + +class mrokumei_state : public homedata_state +{ +public: + mrokumei_state(const machine_config &mconfig, device_type type, const char *tag) : + homedata_state(mconfig, type, tag), + m_audiobank(*this, "audiobank"), + m_soundview(*this, "soudview") + { + } + + void mrokumei(machine_config &config) ATTR_COLD; + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + virtual void video_start() override ATTR_COLD; + +private: + required_memory_bank m_audiobank; + memory_view m_soundview; + uint8_t mrokumei_keyboard_r(offs_t offset); void mrokumei_keyboard_select_w(uint8_t data); void mrokumei_sound_bank_w(uint8_t data); void mrokumei_sound_cmd_w(uint8_t data); + void mrokumei_blitter_bank_w(uint8_t data); + void mrokumei_blitter_start_w(uint8_t data); + + void mrokumei_palette(palette_device &palette) const ATTR_COLD; + + void mrokumei_info0(tile_data &tileinfo, int tile_index, int page, int gfxbank); + void mrokumei_info1(tile_data &tileinfo, int tile_index, int page, int gfxbank); + TILE_GET_INFO_MEMBER(mrokumei_get_info0_0); + TILE_GET_INFO_MEMBER(mrokumei_get_info1_0); + TILE_GET_INFO_MEMBER(mrokumei_get_info0_1); + TILE_GET_INFO_MEMBER(mrokumei_get_info1_1); + + uint32_t screen_update_mrokumei(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void mrokumei_map(address_map &map) ATTR_COLD; + void mrokumei_sound_map(address_map &map) ATTR_COLD; + void mrokumei_sound_io_map(address_map &map) ATTR_COLD; +}; + + +class homedata_upd7807_state : public homedata_state +{ +public: + homedata_upd7807_state(const machine_config &mconfig, device_type type, const char *tag) : + homedata_state(mconfig, type, tag), + m_mainrom(*this, "maincpu"), + m_mainbank(*this, "mainbank"), + m_audiobank(*this, "audiobank") + { + } + + void reikaids(machine_config &config) ATTR_COLD; + void pteacher(machine_config &config) ATTR_COLD; + void jogakuen(machine_config &config) ATTR_COLD; + void mjkinjas(machine_config &config) ATTR_COLD; + void lemnangl(machine_config &config) ATTR_COLD; + void mjikaga(machine_config &config) ATTR_COLD; + + void init_reikaids() ATTR_COLD; + void init_battlcry() ATTR_COLD; + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + +private: + required_region_ptr m_mainrom; + required_memory_bank m_mainbank; + required_memory_bank m_audiobank; + + // video-related + uint8_t m_reikaids_which = 0; + uint8_t m_gfx_bank[2]{}; // pteacher only uses the first one + + // misc + uint8_t m_upd7807_porta = 0; + uint8_t m_upd7807_portc = 0; + uint8_t reikaids_upd7807_porta_r(); void reikaids_upd7807_porta_w(uint8_t data); void reikaids_upd7807_portc_w(uint8_t data); @@ -104,23 +191,21 @@ private: void pteacher_upd7807_porta_w(uint8_t data); void pteacher_upd7807_portc_w(uint8_t data); void bankswitch_w(uint8_t data); - uint8_t mirderby_prot_r(); - void mirderby_prot_w(uint8_t data); - void mrokumei_videoram_w(offs_t offset, u8 data); void reikaids_videoram_w(offs_t offset, u8 data); void reikaids_gfx_bank_w(uint8_t data); void pteacher_gfx_bank_w(uint8_t data); - void homedata_blitter_param_w(uint8_t data); - void mrokumei_blitter_bank_w(uint8_t data); void reikaids_blitter_bank_w(uint8_t data); void pteacher_blitter_bank_w(uint8_t data); - void mrokumei_blitter_start_w(uint8_t data); void reikaids_blitter_start_w(uint8_t data); void pteacher_blitter_start_w(uint8_t data); - TILE_GET_INFO_MEMBER(mrokumei_get_info0_0); - TILE_GET_INFO_MEMBER(mrokumei_get_info1_0); - TILE_GET_INFO_MEMBER(mrokumei_get_info0_1); - TILE_GET_INFO_MEMBER(mrokumei_get_info1_1); + + void reikaids_handleblit(int rom_base); + void pteacher_handleblit(int rom_base); + + void reikaids_palette(palette_device &palette) const ATTR_COLD; + void pteacher_palette(palette_device &palette) const ATTR_COLD; + + void reikaids_info(tile_data &tileinfo, int tile_index, int page, int layer, int gfxbank); TILE_GET_INFO_MEMBER(reikaids_get_info0_0); TILE_GET_INFO_MEMBER(reikaids_get_info1_0); TILE_GET_INFO_MEMBER(reikaids_get_info0_1); @@ -129,65 +214,37 @@ private: TILE_GET_INFO_MEMBER(reikaids_get_info1_2); TILE_GET_INFO_MEMBER(reikaids_get_info0_3); TILE_GET_INFO_MEMBER(reikaids_get_info1_3); + + void pteacher_info(tile_data &tileinfo, int tile_index, int page, int layer, int gfxbank); TILE_GET_INFO_MEMBER(pteacher_get_info0_0); TILE_GET_INFO_MEMBER(pteacher_get_info1_0); TILE_GET_INFO_MEMBER(pteacher_get_info0_1); TILE_GET_INFO_MEMBER(pteacher_get_info1_1); + + void lemnangl_info(tile_data &tileinfo, int tile_index, int page, int layer, int gfxset, int gfxbank); TILE_GET_INFO_MEMBER(lemnangl_get_info0_0); TILE_GET_INFO_MEMBER(lemnangl_get_info1_0); TILE_GET_INFO_MEMBER(lemnangl_get_info0_1); TILE_GET_INFO_MEMBER(lemnangl_get_info1_1); - TILE_GET_INFO_MEMBER(mirderby_get_info0_0); - TILE_GET_INFO_MEMBER(mirderby_get_info1_0); - TILE_GET_INFO_MEMBER(mirderby_get_info0_1); - TILE_GET_INFO_MEMBER(mirderby_get_info1_1); - DECLARE_MACHINE_START(homedata); - DECLARE_MACHINE_RESET(homedata); - DECLARE_MACHINE_RESET(mrokumei); - DECLARE_VIDEO_START(mrokumei); - void mrokumei_palette(palette_device &palette) const; + + uint32_t screen_update_reikaids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_pteacher(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECLARE_MACHINE_START(reikaids); DECLARE_MACHINE_RESET(reikaids); - DECLARE_VIDEO_START(reikaids); - void reikaids_palette(palette_device &palette) const; - DECLARE_MACHINE_START(pteacher); DECLARE_MACHINE_RESET(pteacher); + DECLARE_VIDEO_START(reikaids); DECLARE_VIDEO_START(pteacher); - void pteacher_palette(palette_device &palette) const; - DECLARE_VIDEO_START(mirderby); - void mirderby_palette(palette_device &palette) const; DECLARE_VIDEO_START(lemnangl); - uint32_t screen_update_mrokumei(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_reikaids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_pteacher(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_mirderby(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE_LINE_MEMBER(screen_vblank); - INTERRUPT_GEN_MEMBER(homedata_irq); - void mrokumei_handleblit( int rom_base ); - void reikaids_handleblit( int rom_base ); - void pteacher_handleblit( int rom_base ); - inline void mrokumei_info0( tile_data &tileinfo, int tile_index, int page, int gfxbank ); - inline void mrokumei_info1( tile_data &tileinfo, int tile_index, int page, int gfxbank ); - inline void reikaids_info( tile_data &tileinfo, int tile_index, int page, int layer, int gfxbank ); - inline void pteacher_info( tile_data &tileinfo, int tile_index, int page, int layer, int gfxbank ); - inline void lemnangl_info( tile_data &tileinfo, int tile_index, int page, int layer, int gfxset, int gfxbank ); - inline void mirderby_info0( tile_data &tileinfo, int tile_index, int page, int gfxbank ); - inline void mirderby_info1( tile_data &tileinfo, int tile_index, int page, int gfxbank ); - void cpu0_map(address_map &map); - void cpu1_map(address_map &map); - void cpu2_map(address_map &map); - void jogakuen_map(address_map &map); - void mjikaga_map(address_map &map); - void mjikaga_upd7807_map(address_map &map); - void mrokumei_map(address_map &map); - void mrokumei_sound_banked_map(address_map &map); - void mrokumei_sound_io_map(address_map &map); - void mrokumei_sound_map(address_map &map); - void pteacher_base_map(address_map &map); - void pteacher_map(address_map &map); - void pteacher_upd7807_map(address_map &map); - void reikaids_map(address_map &map); - void reikaids_upd7807_map(address_map &map); + + void reikaids_map(address_map &map) ATTR_COLD; + void reikaids_upd7807_map(address_map &map) ATTR_COLD; + void pteacher_base_map(address_map &map) ATTR_COLD; + void pteacher_map(address_map &map) ATTR_COLD; + void pteacher_upd7807_map(address_map &map) ATTR_COLD; + void jogakuen_map(address_map &map) ATTR_COLD; + void mjikaga_map(address_map &map) ATTR_COLD; + void mjikaga_upd7807_map(address_map &map) ATTR_COLD; }; #endif // MAME_MISC_HOMEDATA_H diff --git a/src/mame/misc/homedata_v.cpp b/src/mame/misc/homedata_v.cpp index 72688e5ae5b..dcfad254e6e 100644 --- a/src/mame/misc/homedata_v.cpp +++ b/src/mame/misc/homedata_v.cpp @@ -123,7 +123,7 @@ finish: m_maincpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE); } -void homedata_state::reikaids_handleblit( int rom_base ) +void homedata_upd7807_state::reikaids_handleblit(int rom_base) { int i; uint16_t dest_param; @@ -220,7 +220,7 @@ finish: m_maincpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE); } -void homedata_state::pteacher_handleblit( int rom_base ) +void homedata_upd7807_state::pteacher_handleblit(int rom_base) { int i; int dest_param; @@ -315,7 +315,7 @@ finish: ***************************************************************************/ -void homedata_state::mrokumei_palette(palette_device &palette) const +void mrokumei_state::mrokumei_palette(palette_device &palette) const { uint8_t const *const color_prom = memregion("proms")->base(); @@ -336,7 +336,7 @@ void homedata_state::mrokumei_palette(palette_device &palette) const } } -void homedata_state::reikaids_palette(palette_device &palette) const +void homedata_upd7807_state::reikaids_palette(palette_device &palette) const { uint8_t const *const color_prom = memregion("proms")->base(); @@ -357,7 +357,7 @@ void homedata_state::reikaids_palette(palette_device &palette) const } } -void homedata_state::pteacher_palette(palette_device &palette) const +void homedata_upd7807_state::pteacher_palette(palette_device &palette) const { uint8_t const *const color_prom = memregion("proms")->base(); @@ -398,52 +398,53 @@ void homedata_state::mirderby_palette(palette_device &palette) const ***************************************************************************/ -inline void homedata_state::mrokumei_info0( tile_data &tileinfo, int tile_index, int page, int gfxbank ) +inline void mrokumei_state::mrokumei_info0(tile_data &tileinfo, int tile_index, int page, int gfxbank) { - int addr = tile_index * 2 + 0x2000 * page; - int attr = m_videoram[addr]; - int code = m_videoram[addr + 1] + ((attr & 0x03) << 8) + (gfxbank << 10); - int color = (attr >> 2) + (gfxbank << 6); + int const addr = tile_index * 2 + 0x2000 * page; + int const attr = m_videoram[addr]; + int const code = m_videoram[addr + 1] + ((attr & 0x03) << 8) + (gfxbank << 10); + int const color = (attr >> 2) + (gfxbank << 6); tileinfo.set(0, code, color, m_flipscreen ); } -inline void homedata_state::mrokumei_info1( tile_data &tileinfo, int tile_index, int page, int gfxbank ) + +inline void mrokumei_state::mrokumei_info1(tile_data &tileinfo, int tile_index, int page, int gfxbank) { - int addr = tile_index * 2 + 0x1000 + 0x2000 * page; - int attr = m_videoram[addr]; - int code = m_videoram[addr + 1] + ((attr & 0x07) << 8) + (gfxbank << 11); - int color = (attr >> 3) + ((gfxbank & 3) << 6); + int const addr = tile_index * 2 + 0x1000 + 0x2000 * page; + int const attr = m_videoram[addr]; + int const code = m_videoram[addr + 1] + ((attr & 0x07) << 8) + (gfxbank << 11); + int const color = (attr >> 3) + ((gfxbank & 3) << 6); tileinfo.set(1, code, color, m_flipscreen ); } -TILE_GET_INFO_MEMBER(homedata_state::mrokumei_get_info0_0) +TILE_GET_INFO_MEMBER(mrokumei_state::mrokumei_get_info0_0) { - mrokumei_info0(tileinfo, tile_index, 0, m_blitter_bank & 0x03 ); + mrokumei_info0(tileinfo, tile_index, 0, m_blitter_bank & 0x03); } -TILE_GET_INFO_MEMBER(homedata_state::mrokumei_get_info1_0) +TILE_GET_INFO_MEMBER(mrokumei_state::mrokumei_get_info1_0) { - mrokumei_info0(tileinfo, tile_index, 1, m_blitter_bank & 0x03 ); + mrokumei_info0(tileinfo, tile_index, 1, m_blitter_bank & 0x03); } -TILE_GET_INFO_MEMBER(homedata_state::mrokumei_get_info0_1) +TILE_GET_INFO_MEMBER(mrokumei_state::mrokumei_get_info0_1) { - mrokumei_info1(tileinfo, tile_index, 0, (m_blitter_bank & 0x38) >> 3 ); + mrokumei_info1(tileinfo, tile_index, 0, (m_blitter_bank & 0x38) >> 3); } -TILE_GET_INFO_MEMBER(homedata_state::mrokumei_get_info1_1) +TILE_GET_INFO_MEMBER(mrokumei_state::mrokumei_get_info1_1) { - mrokumei_info1(tileinfo, tile_index, 1, (m_blitter_bank & 0x38) >> 3 ); + mrokumei_info1(tileinfo, tile_index, 1, (m_blitter_bank & 0x38) >> 3); } -inline void homedata_state::reikaids_info( tile_data &tileinfo, int tile_index, int page, int layer, int gfxbank ) +inline void homedata_upd7807_state::reikaids_info(tile_data &tileinfo, int tile_index, int page, int layer, int gfxbank) { - int addr = tile_index * 4 + layer + 0x2000 * page; - int attr = m_videoram[addr]; - int code = m_videoram[addr + 0x1000] + ((attr & 0x03) << 8) + (gfxbank << 10); - int color = (attr & 0x7c) >> 2; + int const addr = tile_index * 4 + layer + 0x2000 * page; + int const attr = m_videoram[addr]; + int const code = m_videoram[addr + 0x1000] + ((attr & 0x03) << 8) + (gfxbank << 10); + int const color = (attr & 0x7c) >> 2; int flags = m_flipscreen; if (attr & 0x80) flags ^= TILE_FLIPX; @@ -459,125 +460,125 @@ inline void homedata_state::reikaids_info( tile_data &tileinfo, int tile_index, * xxxx.x--- layer#0 * ----.-xxx layer#2 */ -TILE_GET_INFO_MEMBER(homedata_state::reikaids_get_info0_0) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::reikaids_get_info0_0) { - reikaids_info(tileinfo, tile_index, 0, 0, (m_gfx_bank[1] >> 3)); + reikaids_info(tileinfo, tile_index, 0, 0, m_gfx_bank[1] >> 3); } -TILE_GET_INFO_MEMBER(homedata_state::reikaids_get_info1_0) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::reikaids_get_info1_0) { - reikaids_info(tileinfo, tile_index, 1, 0, (m_gfx_bank[1] >> 3)); + reikaids_info(tileinfo, tile_index, 1, 0, m_gfx_bank[1] >> 3); } -TILE_GET_INFO_MEMBER(homedata_state::reikaids_get_info0_1) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::reikaids_get_info0_1) { - reikaids_info(tileinfo, tile_index, 0, 1, ((m_gfx_bank[0]) >> 3)); + reikaids_info(tileinfo, tile_index, 0, 1, (m_gfx_bank[0]) >> 3); } -TILE_GET_INFO_MEMBER(homedata_state::reikaids_get_info1_1) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::reikaids_get_info1_1) { - reikaids_info(tileinfo, tile_index, 1, 1, ((m_gfx_bank[0]) >> 3)); + reikaids_info(tileinfo, tile_index, 1, 1, (m_gfx_bank[0]) >> 3); } -TILE_GET_INFO_MEMBER(homedata_state::reikaids_get_info0_2) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::reikaids_get_info0_2) { - reikaids_info(tileinfo, tile_index, 0, 2, (m_gfx_bank[1] & 0x7)); + reikaids_info(tileinfo, tile_index, 0, 2, m_gfx_bank[1] & 0x7); } -TILE_GET_INFO_MEMBER(homedata_state::reikaids_get_info1_2) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::reikaids_get_info1_2) { - reikaids_info(tileinfo, tile_index, 1, 2, (m_gfx_bank[1] & 0x7)); + reikaids_info(tileinfo, tile_index, 1, 2, m_gfx_bank[1] & 0x7); } -TILE_GET_INFO_MEMBER(homedata_state::reikaids_get_info0_3) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::reikaids_get_info0_3) { - reikaids_info(tileinfo, tile_index, 0, 3, (m_gfx_bank[0] & 0x7)); + reikaids_info(tileinfo, tile_index, 0, 3, m_gfx_bank[0] & 0x7); } -TILE_GET_INFO_MEMBER(homedata_state::reikaids_get_info1_3) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::reikaids_get_info1_3) { - reikaids_info(tileinfo, tile_index, 1, 3, (m_gfx_bank[0] & 0x7)); + reikaids_info(tileinfo, tile_index, 1, 3, m_gfx_bank[0] & 0x7); } -inline void homedata_state::pteacher_info( tile_data &tileinfo, int tile_index, int page, int layer, int gfxbank ) +inline void homedata_upd7807_state::pteacher_info(tile_data &tileinfo, int tile_index, int page, int layer, int gfxbank) { - int addr = tile_index * 2 + 0x1000 * layer + 0x2000 * page; - int attr = m_videoram[addr]; - int code = m_videoram[addr + 1] + ((attr & 0x07) << 8) + (gfxbank << 11); - int color = (attr >> 3) + ((gfxbank & 1) << 5); + int const addr = tile_index * 2 + 0x1000 * layer + 0x2000 * page; + int const attr = m_videoram[addr]; + int const code = m_videoram[addr + 1] + ((attr & 0x07) << 8) + (gfxbank << 11); + int const color = (attr >> 3) + ((gfxbank & 1) << 5); tileinfo.set(layer, code, color, m_flipscreen); } -TILE_GET_INFO_MEMBER(homedata_state::pteacher_get_info0_0) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::pteacher_get_info0_0) { pteacher_info(tileinfo, tile_index, 0, 0, m_gfx_bank[0] & 0x0f); } -TILE_GET_INFO_MEMBER(homedata_state::pteacher_get_info1_0) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::pteacher_get_info1_0) { pteacher_info(tileinfo, tile_index, 1, 0, m_gfx_bank[0] & 0x0f); } -TILE_GET_INFO_MEMBER(homedata_state::pteacher_get_info0_1) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::pteacher_get_info0_1) { pteacher_info(tileinfo, tile_index, 0, 1, m_gfx_bank[0] >> 4); } -TILE_GET_INFO_MEMBER(homedata_state::pteacher_get_info1_1) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::pteacher_get_info1_1) { pteacher_info(tileinfo, tile_index, 1, 1, m_gfx_bank[0] >> 4); } -inline void homedata_state::lemnangl_info( tile_data &tileinfo, int tile_index, int page, int layer, int gfxset, int gfxbank ) +inline void homedata_upd7807_state::lemnangl_info( tile_data &tileinfo, int tile_index, int page, int layer, int gfxset, int gfxbank ) { - int addr = tile_index * 2 + 0x1000 * layer + 0x2000 * page; - int attr = m_videoram[addr]; - int code = m_videoram[addr + 1] + ((attr & 0x07) << 8) + (gfxbank << 11); - int color = 16 * (attr >> 3) + gfxbank; + int const addr = tile_index * 2 + 0x1000 * layer + 0x2000 * page; + int const attr = m_videoram[addr]; + int const code = m_videoram[addr + 1] + ((attr & 0x07) << 8) + (gfxbank << 11); + int const color = 16 * (attr >> 3) + gfxbank; tileinfo.set(2 * layer + gfxset, code, color, m_flipscreen); } -TILE_GET_INFO_MEMBER(homedata_state::lemnangl_get_info0_0) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::lemnangl_get_info0_0) { - lemnangl_info(tileinfo, tile_index, 0, 0, m_blitter_bank & 1, m_gfx_bank[0] & 0x0f ); + lemnangl_info(tileinfo, tile_index, 0, 0, m_blitter_bank & 1, m_gfx_bank[0] & 0x0f); } -TILE_GET_INFO_MEMBER(homedata_state::lemnangl_get_info1_0) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::lemnangl_get_info1_0) { - lemnangl_info(tileinfo, tile_index, 1, 0, m_blitter_bank & 1, m_gfx_bank[0] & 0x0f ); + lemnangl_info(tileinfo, tile_index, 1, 0, m_blitter_bank & 1, m_gfx_bank[0] & 0x0f); } -TILE_GET_INFO_MEMBER(homedata_state::lemnangl_get_info0_1) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::lemnangl_get_info0_1) { - lemnangl_info(tileinfo, tile_index, 0, 1, (m_blitter_bank & 2) >> 1, m_gfx_bank[0] >> 4 ); + lemnangl_info(tileinfo, tile_index, 0, 1, (m_blitter_bank & 2) >> 1, m_gfx_bank[0] >> 4); } -TILE_GET_INFO_MEMBER(homedata_state::lemnangl_get_info1_1) +TILE_GET_INFO_MEMBER(homedata_upd7807_state::lemnangl_get_info1_1) { - lemnangl_info(tileinfo, tile_index, 1, 1, (m_blitter_bank & 2) >> 1, m_gfx_bank[0] >> 4 ); + lemnangl_info(tileinfo, tile_index, 1, 1, (m_blitter_bank & 2) >> 1, m_gfx_bank[0] >> 4); } -inline void homedata_state::mirderby_info0( tile_data &tileinfo, int tile_index, int page, int gfxbank ) +inline void homedata_state::mirderby_info0(tile_data &tileinfo, int tile_index, int page, int gfxbank) { - int addr = tile_index * 2 + 0x2000 * page; - int attr = m_videoram[addr]; - int code = m_videoram[addr + 1] + ((attr & 0x03) << 8) + 0x400;// + (gfxbank << 10); - int color = (attr >> 2) + (gfxbank << 6); + int const addr = tile_index * 2 + 0x2000 * page; + int const attr = m_videoram[addr]; + int const code = m_videoram[addr + 1] + ((attr & 0x03) << 8) + 0x400;// + (gfxbank << 10); + int const color = (attr >> 2) + (gfxbank << 6); tileinfo.set(0, code, color, m_flipscreen ); } -inline void homedata_state::mirderby_info1( tile_data &tileinfo, int tile_index, int page, int gfxbank ) +inline void homedata_state::mirderby_info1(tile_data &tileinfo, int tile_index, int page, int gfxbank) { - int addr = tile_index * 2 + 0x1000 + 0x2000 * page; - int attr = m_videoram[addr]; - int code = m_videoram[addr + 1] + ((attr & 0x07) << 8) + 0x400;//(gfxbank << 11); - int color = (attr >> 3) + ((gfxbank & 3) << 6); + int const addr = tile_index * 2 + 0x1000 + 0x2000 * page; + int const attr = m_videoram[addr]; + int const code = m_videoram[addr + 1] + ((attr & 0x07) << 8) + 0x400;//(gfxbank << 11); + int const color = (attr >> 3) + ((gfxbank & 3) << 6); tileinfo.set(1, code, color, m_flipscreen ); } @@ -610,27 +611,27 @@ TILE_GET_INFO_MEMBER(homedata_state::mirderby_get_info1_1) ***************************************************************************/ -VIDEO_START_MEMBER(homedata_state,mrokumei) +void mrokumei_state::video_start() { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mrokumei_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mrokumei_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mrokumei_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mrokumei_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mrokumei_state::mrokumei_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mrokumei_state::mrokumei_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mrokumei_state::mrokumei_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mrokumei_state::mrokumei_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); m_bg_tilemap[0][1]->set_transparent_pen(0); m_bg_tilemap[1][1]->set_transparent_pen(0); } -VIDEO_START_MEMBER(homedata_state,reikaids) +VIDEO_START_MEMBER(homedata_upd7807_state,reikaids) { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info0_2)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[0][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info0_3)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info1_2)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info1_3)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::reikaids_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::reikaids_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::reikaids_get_info0_2)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::reikaids_get_info0_3)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::reikaids_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::reikaids_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::reikaids_get_info1_2)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::reikaids_get_info1_3)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap[0][0]->set_transparent_pen(0xff); m_bg_tilemap[0][1]->set_transparent_pen(0xff); @@ -642,23 +643,23 @@ VIDEO_START_MEMBER(homedata_state,reikaids) m_bg_tilemap[1][3]->set_transparent_pen(0xff); } -VIDEO_START_MEMBER(homedata_state,pteacher) +VIDEO_START_MEMBER(homedata_upd7807_state,pteacher) { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::pteacher_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::pteacher_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::pteacher_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::pteacher_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::pteacher_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::pteacher_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::pteacher_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::pteacher_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap[0][1]->set_transparent_pen(0xff); m_bg_tilemap[1][1]->set_transparent_pen(0xff); } -VIDEO_START_MEMBER(homedata_state,lemnangl) +VIDEO_START_MEMBER(homedata_upd7807_state,lemnangl) { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::lemnangl_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::lemnangl_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::lemnangl_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::lemnangl_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::lemnangl_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::lemnangl_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::lemnangl_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_upd7807_state::lemnangl_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap[0][1]->set_transparent_pen(0x0f); m_bg_tilemap[1][1]->set_transparent_pen(0x0f); @@ -687,14 +688,14 @@ void homedata_state::mrokumei_videoram_w(offs_t offset, u8 data) m_bg_tilemap[(offset & 0x2000) >> 13][(offset & 0x1000) >> 12]->mark_tile_dirty((offset & 0xffe) >> 1); } -void homedata_state::reikaids_videoram_w(offs_t offset, u8 data) +void homedata_upd7807_state::reikaids_videoram_w(offs_t offset, u8 data) { m_videoram[offset] = data; m_bg_tilemap[(offset & 0x2000) >> 13][offset & 3]->mark_tile_dirty((offset & 0xffc) >> 2); } -void homedata_state::reikaids_gfx_bank_w(uint8_t data) +void homedata_upd7807_state::reikaids_gfx_bank_w(uint8_t data) { //logerror( "%04x: [setbank %02x]\n",m_maincpu->pc(),data); @@ -707,7 +708,7 @@ void homedata_state::reikaids_gfx_bank_w(uint8_t data) m_reikaids_which ^= 1; } -void homedata_state::pteacher_gfx_bank_w(uint8_t data) +void homedata_upd7807_state::pteacher_gfx_bank_w(uint8_t data) { // logerror("%s: gfxbank:=%02x\n", m_maincpu->pc(), data); if (m_gfx_bank[0] != data) @@ -725,7 +726,7 @@ void homedata_state::homedata_blitter_param_w(uint8_t data) m_blitter_param_count &= 3; } -void homedata_state::mrokumei_blitter_bank_w(uint8_t data) +void mrokumei_state::mrokumei_blitter_bank_w(uint8_t data) { /* --xxx--- layer 1 gfx bank -----x-- blitter ROM bank @@ -738,7 +739,7 @@ void homedata_state::mrokumei_blitter_bank_w(uint8_t data) m_blitter_bank = data; } -void homedata_state::reikaids_blitter_bank_w(uint8_t data) +void homedata_upd7807_state::reikaids_blitter_bank_w(uint8_t data) { /* xxx----- priority control ----x--- target page? what's this for? @@ -747,7 +748,7 @@ void homedata_state::reikaids_blitter_bank_w(uint8_t data) m_blitter_bank = data; } -void homedata_state::pteacher_blitter_bank_w(uint8_t data) +void homedata_upd7807_state::pteacher_blitter_bank_w(uint8_t data) { /* xxx----- blitter ROM bank -----x-- pixel clock (normal/slow) @@ -761,7 +762,7 @@ void homedata_state::pteacher_blitter_bank_w(uint8_t data) m_blitter_bank = data; } -void homedata_state::mrokumei_blitter_start_w(uint8_t data) +void mrokumei_state::mrokumei_blitter_start_w(uint8_t data) { if (data & 0x80) mrokumei_handleblit(((m_blitter_bank & 0x04) >> 2) * 0x10000); @@ -770,12 +771,12 @@ void homedata_state::mrokumei_blitter_start_w(uint8_t data) optional service mode ROM (not available in current dump) */ } -void homedata_state::reikaids_blitter_start_w(uint8_t data) +void homedata_upd7807_state::reikaids_blitter_start_w(uint8_t data) { reikaids_handleblit((m_blitter_bank & 3) * 0x10000); } -void homedata_state::pteacher_blitter_start_w(uint8_t data) +void homedata_upd7807_state::pteacher_blitter_start_w(uint8_t data) { pteacher_handleblit((m_blitter_bank >> 5) * 0x10000 & (m_blit_rom.length() - 1)); } @@ -788,7 +789,7 @@ void homedata_state::pteacher_blitter_start_w(uint8_t data) ***************************************************************************/ -uint32_t homedata_state::screen_update_mrokumei(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t mrokumei_state::screen_update_mrokumei(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* blank screen */ if (m_vreg[0x3] == 0xc1 && m_vreg[0x4] == 0xc0 && m_vreg[0x5] == 0xff) @@ -831,7 +832,7 @@ uint32_t homedata_state::screen_update_mrokumei(screen_device &screen, bitmap_in return 0; } -uint32_t homedata_state::screen_update_reikaids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t homedata_upd7807_state::screen_update_reikaids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { #if 0 static constexpr int pritable[8][4] = @@ -893,7 +894,7 @@ uint32_t homedata_state::screen_update_reikaids(screen_device &screen, bitmap_in } -uint32_t homedata_state::screen_update_pteacher(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t homedata_upd7807_state::screen_update_pteacher(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* blank screen */ if (m_vreg[0x3] == 0xc1 && m_vreg[0x4] == 0xc0 && m_vreg[0x5] == 0xff) -- cgit v1.2.3