From 994b8d18eef342b00db6e6e4fec11e3cd42cfba5 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sat, 19 Mar 2022 15:27:20 +0100 Subject: [PATCH] New working clones ------------------ Monsters World 2 (bootleg of Super Pang) [Recreativas.org, David Torres, ClawGrip] --- scripts/target/mame/arcade.lua | 2 - src/mame/drivers/mitchell.cpp | 1631 ++++++++++++++++++++------------ src/mame/includes/mitchell.h | 163 ---- src/mame/mame.lst | 3 +- src/mame/video/mitchell.cpp | 293 ------ 5 files changed, 1054 insertions(+), 1038 deletions(-) delete mode 100644 src/mame/includes/mitchell.h delete mode 100644 src/mame/video/mitchell.cpp diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 83873581b49..5d1330690b5 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -1572,8 +1572,6 @@ files { MAME_DIR .. "src/mame/includes/lwings.h", MAME_DIR .. "src/mame/video/lwings.cpp", MAME_DIR .. "src/mame/drivers/mitchell.cpp", - MAME_DIR .. "src/mame/includes/mitchell.h", - MAME_DIR .. "src/mame/video/mitchell.cpp", MAME_DIR .. "src/mame/drivers/psrockman.cpp", MAME_DIR .. "src/mame/drivers/sf.cpp", MAME_DIR .. "src/mame/drivers/sidearms.cpp", diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp index c104d6d0b66..f2699a601af 100644 --- a/src/mame/drivers/mitchell.cpp +++ b/src/mame/drivers/mitchell.cpp @@ -80,7 +80,7 @@ Notes: the game decrypted code and decrypted data must be split. Monster World contains banks of decrypted data and decrypted code scrambled - together in a single rom, using a GAL to decode the addresses on the actual + together in a single ROM, using a GAL to decode the addresses on the actual PCB. There are several other changes from Super Pang too. Monsters World has no @@ -88,10 +88,10 @@ Notes: RAM Banking has also been changed. The actual Monsters World PCB is very close to the Speed Spin PCB but in terms - of emulation the video etc. is closer to mitchell.c + of emulation the video etc. is closer to mitchell.cpp ****************************************************************************** -Monters World, from TCH (Spain) +Monsters World, from TCH (Spain) Main CPU = Toshiba TMPZ84C00AP-6 Sound CPU = GS Z8400A PS - Z80A @@ -118,33 +118,455 @@ mw-9.rom = ST M27C1001 / GFX #include "emu.h" -#include "includes/mitchell.h" + +#include "machine/kabuki.h" // needed for decoding functions only #include "cpu/z80/z80.h" -#include "machine/kabuki.h" // needed for decoding functions only -#include "sound/okim6295.h" +#include "machine/74157.h" +#include "machine/nvram.h" +#include "machine/eepromser.h" +#include "machine/gen_latch.h" +#include "machine/timer.h" #include "sound/msm5205.h" +#include "sound/okim6295.h" #include "sound/ymopl.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" +namespace { + +class mitchell_state : public driver_device +{ +public: + mitchell_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_oki(*this, "oki"), + m_nvram(*this, "nvram"), + m_eeprom(*this, "eeprom"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_colorram(*this, "colorram"), + m_videoram(*this, "videoram"), + m_objram(*this, "objram", 0x1000, ENDIANNESS_LITTLE), + m_databank(*this, "databank"), + m_opbase(*this, "opbase"), + m_opbank(*this, "opbank"), + m_sys0(*this, "SYS0"), + m_in(*this, "IN%u", 0U), + m_dial_in(*this, "DIAL%u", 1U), + m_key{ { *this, "KEY%u", 0U }, { *this, "KEY%u", 5U } } { } + + void mgakuen(machine_config &config); + void marukin(machine_config &config); + void pang(machine_config &config); + void pangnv(machine_config &config); + + void init_mgakuen2(); + void init_block(); + void init_pangb(); + void init_qtono1(); + void init_mgakuen(); + void init_hatena(); + void init_spang(); + void init_cworld(); + void init_spangj(); + void init_qsangoku(); + void init_marukin(); + void init_pang(); + void init_sbbros(); + void init_pkladies(); + void init_blockbl(); + void init_dokaben(); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + + // devices + required_device m_maincpu; + optional_device m_oki; + optional_device m_nvram; + optional_device m_eeprom; + required_device m_gfxdecode; + required_device m_palette; + + // memory pointers + required_shared_ptr m_colorram; + required_shared_ptr m_videoram; + memory_share_creator m_objram; // Sprite RAM + required_memory_bank m_databank; + optional_memory_bank m_opbase; + optional_memory_bank m_opbank; + + required_ioport m_sys0; + optional_ioport_array<3> m_in; + optional_ioport_array<2> m_dial_in; + optional_ioport_array<10> m_key[2]; + + // video-related + tilemap_t *m_bg_tilemap; + uint8_t m_flipscreen; + uint8_t m_video_bank; + uint8_t m_paletteram_bank; + std::vector m_paletteram; + + // misc + uint8_t m_input_type; + uint8_t m_dial[2]; + uint8_t m_dial_selected; + uint8_t m_dir[2]; + uint8_t m_keymatrix; + std::unique_ptr m_decoded; + uint8_t m_irq_source; + + uint8_t port5_r(); + void bankswitch_w(uint8_t data); + uint8_t block_input_r(offs_t offset); + void block_dial_control_w(uint8_t data); + uint8_t mahjong_input_r(offs_t offset); + uint8_t input_r(offs_t offset); + void input_w(uint8_t data); + void mgakuen_videoram_w(offs_t offset, uint8_t data); + void videoram_w(offs_t offset, uint8_t data); + uint8_t videoram_r(offs_t offset); + void colorram_w(offs_t offset, uint8_t data); + void gfxctrl_w(uint8_t data); + void paletteram_w(offs_t offset, uint8_t data); + uint8_t paletteram_r(offs_t offset); + void eeprom_cs_w(uint8_t data); + void eeprom_clock_w(uint8_t data); + void eeprom_serial_w(uint8_t data); + + TILE_GET_INFO_MEMBER(get_tile_info); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TIMER_DEVICE_CALLBACK_MEMBER(mitchell_irq); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + void bootleg_decode(); + void configure_banks(void (*decode)(uint8_t *src, uint8_t *dst, int size)); + + void decrypted_opcodes_map(address_map &map); + void mgakuen_map(address_map &map); + void mitchell_io_map(address_map &map); + void mitchell_map(address_map &map); + void main_map(address_map &map); +}; + +// adds a Z80 as audio CPU and has an Oki M5205 instead of M6295 +class spangbl_state : public mitchell_state +{ +public: + spangbl_state(const machine_config &mconfig, device_type type, const char *tag) + : mitchell_state(mconfig, type, tag), + m_audiocpu(*this, "audiocpu"), + m_msm(*this, "msm"), + m_adpcm_select(*this, "adpcm_select"), + m_soundbank(*this, "soundbank") { } + + void mstworld2(machine_config &config); + void pangba(machine_config &config); + void spangbl(machine_config &config); + + void init_spangbl(); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + // devices + required_device m_audiocpu; + required_device m_msm; + required_device m_adpcm_select; + + // memory pointers + required_memory_bank m_soundbank; + + // sound-related + bool m_sample_select; + + void sound_bankswitch_w(uint8_t data); + DECLARE_WRITE_LINE_MEMBER(adpcm_int); + + void mstworld2_io_map(address_map &map); + void pangba_sound_map(address_map &map); + void spangbl_io_map(address_map &map); + void main_map(address_map &map); + void spangbl_sound_map(address_map &map); +}; + + +// adds a Z80 as audio CPU to which the Oki M6295 is hooked up. No YM chip. +class mstworld_state : public mitchell_state +{ +public: + mstworld_state(const machine_config &mconfig, device_type type, const char *tag) + : mitchell_state(mconfig, type, tag), + m_audiocpu(*this, "audiocpu") { } + + void mstworld(machine_config &config); + + void init_mstworld(); + +private: + required_device m_audiocpu; + + void gfxctrl_w(uint8_t data); + + void io_map(address_map &map); + void sound_map(address_map &map); +}; + +// has an Oki M5205 instead of an Oki M6295 without additional audio CPU +class pkladiesbl_state : public mitchell_state +{ +public: + pkladiesbl_state(const machine_config &mconfig, device_type type, const char *tag) + : mitchell_state(mconfig, type, tag), + m_msm(*this, "msm") { } + + void pkladiesbl(machine_config &config); + + void init_pkladiesbl(); + +private: + required_device m_msm; + + void io_map(address_map &map); +}; + + +// video + +/*************************************************************************** + + Callbacks for the TileMap code + +***************************************************************************/ + +TILE_GET_INFO_MEMBER(mitchell_state::get_tile_info) +{ + uint8_t attr = m_colorram[tile_index]; + int code = m_videoram[2 * tile_index] + (m_videoram[2 * tile_index + 1] << 8); + tileinfo.set(0, + code, + attr & 0x7f, + (attr & 0x80) ? TILE_FLIPX : 0); +} + + +/*************************************************************************** + + Start the video hardware emulation. + +***************************************************************************/ + +void mitchell_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mitchell_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap->set_transparent_pen(15); + + // Palette RAM + m_paletteram.resize(2 * m_palette->entries()); + m_palette->basemem().set(m_paletteram, ENDIANNESS_LITTLE, 2); + + save_item(NAME(m_paletteram)); +} + + +/*************************************************************************** + + Memory handlers + +***************************************************************************/ + +/*************************************************************************** + OBJ / CHAR RAM HANDLERS (BANK 0 = CHAR, BANK 1=OBJ) +***************************************************************************/ + + +void mitchell_state::mgakuen_videoram_w(offs_t offset, uint8_t data) +{ + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset / 2); +} + +void mitchell_state::videoram_w(offs_t offset, uint8_t data) +{ + if (m_video_bank) + m_objram[offset] = data; + else + mgakuen_videoram_w(offset, data); +} + +uint8_t mitchell_state::videoram_r(offs_t offset) +{ + if (m_video_bank) + return m_objram[offset]; + else + return m_videoram[offset]; +} + +/*************************************************************************** + COLOUR RAM +****************************************************************************/ + +void mitchell_state::colorram_w(offs_t offset, uint8_t data) +{ + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); +} + +/*************************************************************************** + PALETTE HANDLERS (COLOURS: BANK 0 = 0x00-0x3f BANK 1=0x40-0xff) +****************************************************************************/ + +void mitchell_state::gfxctrl_w(uint8_t data) +{ +logerror("PC %04x: gfxctrl_w %02x\n", m_maincpu->pc(), data); +{ +#if 0 + char baf[40]; + sprintf(baf, "%02x", data); + popmessage(baf); +#endif +} + + // bit 0 is unknown (used, maybe back color enable?) + + // bit 1 is coin counter + machine().bookkeeping().coin_counter_w(0, data & 2); + + // bit 2 is flip screen + if (m_flipscreen != (data & 0x04)) + { + m_flipscreen = data & 0x04; + machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); + } + + // bit 3 is unknown (used, e.g. marukin pulses it on the title screen) + + // bit 4 selects OKI M6295 bank, NOPed for the bootleg which don't have this sound chip + if (m_oki != nullptr) + m_oki->set_rom_bank((data >> 4) & 1); + + // bit 5 is palette RAM bank selector (doesn't apply to mgakuen) + m_paletteram_bank = data & 0x20; + + /* bits 6 and 7 are unknown, used in several places. At first I thought */ + /* they were bg and sprites enable, but this screws up spang (screen flickers */ + /* every time you pop a bubble). However, not using them as enable bits screws */ + /* up marukin - you can see partially built up screens during attract mode. */ +} + +void mstworld_state::gfxctrl_w(uint8_t data) +{ + logerror("PC %04x: gfxctrl_w %02x\n", m_maincpu->pc(), data); +{ + char baf[40]; + sprintf(baf, "%02x", data); +// popmessage(baf); +} + + // bit 0 is unknown (used, maybe back color enable?) + + // bit 1 is coin counter + machine().bookkeeping().coin_counter_w(0, data & 2); + + // bit 2 is flip screen + if (m_flipscreen != (data & 0x04)) + { + m_flipscreen = data & 0x04; + machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); + } + + // bit 3 is unknown (used, e.g. marukin pulses it on the title screen) + + // bit 4 here does not select OKI M6295 bank: mstworld has its own z80 + sound banking + + // bit 5 is palette RAM bank selector (doesn't apply to mgakuen) + m_paletteram_bank = data & 0x20; + + /* bits 6 and 7 are unknown, used in several places. At first I thought */ + /* they were bg and sprites enable, but this screws up spang (screen flickers */ + /* every time you pop a bubble). However, not using them as enable bits screws */ + /* up marukin - you can see partially built up screens during attract mode. */ +} + +void mitchell_state::paletteram_w(offs_t offset, uint8_t data) +{ + m_palette->write8(offset + (m_paletteram_bank ? 0x800 : 0x000), data); +} + +uint8_t mitchell_state::paletteram_r(offs_t offset) +{ + return m_paletteram[offset + (m_paletteram_bank ? 0x800 : 0x000)]; +} + + + +/*************************************************************************** + + Display refresh + +***************************************************************************/ + +void mitchell_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + // the last entry is not a sprite, we skip it otherwise spang shows a bubble moving diagonally across the screen + for (int offs = 0x1000 - 0x40; offs >= 0; offs -= 0x20) + { + int code = m_objram[offs]; + int attr = m_objram[offs + 1]; + int color = attr & 0x0f; + int sx = m_objram[offs + 3] + ((attr & 0x10) << 4); + int sy = ((m_objram[offs + 2] + 8) & 0xff) - 8; + code += (attr & 0xe0) << 3; + if (m_flipscreen) + { + sx = 496 - sx; + sy = 240 - sy; + } + m_gfxdecode->gfx(1)->transpen(bitmap, cliprect, + code, + color, + m_flipscreen, m_flipscreen, + sx, sy, 15); + } +} + +uint32_t mitchell_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(0, cliprect); + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + draw_sprites(bitmap, cliprect); + return 0; +} + + +// machine + /************************************* * * EEPROM * *************************************/ -uint8_t mitchell_state::pang_port5_r() +uint8_t mitchell_state::port5_r() { - /* bits 0 and (sometimes) 3 are checked in the interrupt handler. + /* bits 0 and (sometimes) 3 are checked in the interrupt handler. bit 3 is checked before updating the palette so it really seems to be vblank. bit 0 may be vblank (or vblank irq flag) related too, but I'm not sure. Many games require two interrupts per frame and for these bits to toggle, otherwise music doesn't work. */ - return (ioport("SYS0")->read() & 0xfe) | (m_irq_source & 1); + return (m_sys0->read() & 0xfe) | (m_irq_source & 1); } void mitchell_state::eeprom_cs_w(uint8_t data) @@ -169,11 +591,11 @@ void mitchell_state::eeprom_serial_w(uint8_t data) * *************************************/ -void mitchell_state::pang_bankswitch_w(uint8_t data) +void mitchell_state::bankswitch_w(uint8_t data) { - m_bank1->set_entry(data & 0x0f); - if(m_bank1d) - m_bank1d->set_entry(data & 0x0f); + m_databank->set_entry(data & 0x0f); + if(m_opbank) + m_opbank->set_entry(data & 0x0f); } /************************************* @@ -184,19 +606,16 @@ void mitchell_state::pang_bankswitch_w(uint8_t data) uint8_t mitchell_state::block_input_r(offs_t offset) { - static const char *const dialnames[] = { "DIAL1", "DIAL2" }; - static const char *const portnames[] = { "IN1", "IN2" }; - if (m_dial_selected) { - int delta = (ioport(dialnames[offset])->read() - m_dial[offset]) & 0xff; + int delta = (m_dial_in[offset]->read() - m_dial[offset]) & 0xff; if (delta & 0x80) { delta = (-delta) & 0xff; if (m_dir[offset]) { - /* don't report movement on a direction change, otherwise it will stutter */ + // don't report movement on a direction change, otherwise it will stutter m_dir[offset] = 0; delta = 0; } @@ -205,7 +624,7 @@ uint8_t mitchell_state::block_input_r(offs_t offset) { if (!m_dir[offset]) { - /* don't report movement on a direction change, otherwise it will stutter */ + // don't report movement on a direction change, otherwise it will stutter m_dir[offset] = 1; delta = 0; } @@ -217,7 +636,7 @@ uint8_t mitchell_state::block_input_r(offs_t offset) } else { - int res = ioport(portnames[offset])->read() & 0xf7; + int res = m_in[offset + 1]->read() & 0xf7; if (m_dir[offset]) res |= 0x08; @@ -230,9 +649,9 @@ void mitchell_state::block_dial_control_w(uint8_t data) { if (data == 0x08) { - /* reset the dial counters */ - m_dial[0] = ioport("DIAL1")->read(); - m_dial[1] = ioport("DIAL2")->read(); + // reset the dial counters + m_dial[0] = m_dial_in[0]->read(); + m_dial[1] = m_dial_in[1]->read(); } else if (data == 0x80) m_dial_selected = 0; @@ -243,49 +662,35 @@ void mitchell_state::block_dial_control_w(uint8_t data) uint8_t mitchell_state::mahjong_input_r(offs_t offset) { - int i; - static const char *const keynames[2][5] = - { - { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" }, - { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" } - }; - - for (i = 0; i < 5; i++) + for (int i = 0; i < 5; i++) { if (m_keymatrix & (0x80 >> i)) - return ioport(keynames[offset][i])->read(); + return m_key[offset][i]->read(); } return 0xff; } -void mitchell_state::mahjong_input_select_w(uint8_t data) -{ - m_keymatrix = data; -} - uint8_t mitchell_state::input_r(offs_t offset) { - static const char *const portnames[] = { "IN0", "IN1", "IN2" }; - switch (m_input_type) { case 0: default: - return ioport(portnames[offset])->read(); - case 1: /* Mahjong games */ + return m_in[offset]->read(); + case 1: // Mahjong games if (offset) return mahjong_input_r(offset - 1); else - return ioport("IN0")->read(); - case 2: /* Block Block - dial control */ + return m_in[0]->read(); + case 2: // Block Block - dial control if (offset) return block_input_r(offset - 1); else - return ioport("IN0")->read(); - case 3: /* Super Pang - simulate START 1 press to initialize EEPROM */ - return ioport(portnames[offset])->read(); + return m_in[0]->read(); + case 3: // Super Pang - simulate START 1 press to initialize EEPROM + return m_in[offset]->read(); } } @@ -299,7 +704,7 @@ void mitchell_state::input_w(uint8_t data) logerror("PC %04x: write %02x to port 01\n", m_maincpu->pc(), data); break; case 1: - mahjong_input_select_w(data); + m_keymatrix = data; break; case 2: block_dial_control_w(data); @@ -317,154 +722,150 @@ void mitchell_state::input_w(uint8_t data) void mitchell_state::mgakuen_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("bank1"); - map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)); /* palette RAM */ - map(0xc800, 0xcfff).rw(FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram"); /* Attribute RAM */ - map(0xd000, 0xdfff).rw(FUNC(mitchell_state::mgakuen_videoram_r), FUNC(mitchell_state::mgakuen_videoram_w)).share("videoram"); /* char RAM */ - map(0xe000, 0xefff).ram(); /* Work RAM */ - map(0xf000, 0xffff).rw(FUNC(mitchell_state::mgakuen_objram_r), FUNC(mitchell_state::mgakuen_objram_w)); /* OBJ RAM */ + map(0x8000, 0xbfff).bankr(m_databank); + map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)); + map(0xc800, 0xcfff).ram().w(FUNC(mitchell_state::colorram_w)).share(m_colorram); // Attribute RAM + map(0xd000, 0xdfff).ram().w(FUNC(mitchell_state::mgakuen_videoram_w)).share(m_videoram); + map(0xe000, 0xefff).ram(); // Work RAM + map(0xf000, 0xffff).ram().share(m_objram); } void mitchell_state::mitchell_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("bank1"); - map(0xc000, 0xc7ff).rw(FUNC(mitchell_state::pang_paletteram_r), FUNC(mitchell_state::pang_paletteram_w)); /* Banked palette RAM */ - map(0xc800, 0xcfff).rw(FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram"); /* Attribute RAM */ - map(0xd000, 0xdfff).rw(FUNC(mitchell_state::pang_videoram_r), FUNC(mitchell_state::pang_videoram_w)).share("videoram");/* Banked char / OBJ RAM */ - map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */ + map(0x8000, 0xbfff).bankr(m_databank); + map(0xc000, 0xc7ff).rw(FUNC(mitchell_state::paletteram_r), FUNC(mitchell_state::paletteram_w)); // Banked palette RAM + map(0xc800, 0xcfff).ram().w(FUNC(mitchell_state::colorram_w)).share(m_colorram); // Attribute RAM + map(0xd000, 0xdfff).rw(FUNC(mitchell_state::videoram_r), FUNC(mitchell_state::videoram_w)).share(m_videoram); // Banked char / OBJ RAM + map(0xe000, 0xffff).ram().share("nvram"); // Work RAM } void mitchell_state::decrypted_opcodes_map(address_map &map) { - map(0x0000, 0x7fff).bankr("bank0d"); - map(0x8000, 0xbfff).bankr("bank1d"); - map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */ + map(0x0000, 0x7fff).bankr(m_opbase); + map(0x8000, 0xbfff).bankr(m_opbank); + map(0xe000, 0xffff).ram().share("nvram"); // Work RAM } void mitchell_state::mitchell_io_map(address_map &map) { map.global_mask(0xff); - map(0x00, 0x00).w(FUNC(mitchell_state::pang_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */ - map(0x00, 0x02).r(FUNC(mitchell_state::input_r)); /* The Mahjong games and Block Block need special input treatment */ + map(0x00, 0x00).w(FUNC(mitchell_state::gfxctrl_w)); // Palette bank, layer enable, coin counters, more + map(0x00, 0x02).r(FUNC(mitchell_state::input_r)); // The Mahjong games and Block Block need special input treatment map(0x01, 0x01).w(FUNC(mitchell_state::input_w)); - map(0x02, 0x02).w(FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */ + map(0x02, 0x02).w(FUNC(mitchell_state::bankswitch_w)); map(0x03, 0x03).w("ymsnd", FUNC(ym2413_device::data_w)); map(0x04, 0x04).w("ymsnd", FUNC(ym2413_device::address_w)); - map(0x05, 0x05).r(FUNC(mitchell_state::pang_port5_r)).w(m_oki, FUNC(okim6295_device::write)); - map(0x06, 0x06).noprw(); /* watchdog? IRQ ack? video buffering? */ - map(0x07, 0x07).w(FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */ + map(0x05, 0x05).r(FUNC(mitchell_state::port5_r)).w(m_oki, FUNC(okim6295_device::write)); + map(0x06, 0x06).noprw(); // watchdog? IRQ ack? video buffering? + map(0x07, 0x07).lw8(NAME([this] (uint8_t data) { m_video_bank = data; })); map(0x08, 0x08).w(FUNC(mitchell_state::eeprom_cs_w)); map(0x10, 0x10).w(FUNC(mitchell_state::eeprom_clock_w)); map(0x18, 0x18).w(FUNC(mitchell_state::eeprom_serial_w)); } -/* spangbl */ -void mitchell_state::spangbl_map(address_map &map) +// spangbl +void spangbl_state::main_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("bank1").nopw(); - map(0xc000, 0xc7ff).rw(FUNC(mitchell_state::pang_paletteram_r), FUNC(mitchell_state::pang_paletteram_w)); /* Banked palette RAM */ - map(0xc800, 0xcfff).rw(FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram");/* Attribute RAM */ - map(0xd000, 0xdfff).rw(FUNC(mitchell_state::pang_videoram_r), FUNC(mitchell_state::pang_videoram_w)).share("videoram"); /* Banked char / OBJ RAM */ - map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */ + map(0x8000, 0xbfff).bankr(m_databank).nopw(); + map(0xc000, 0xc7ff).rw(FUNC(spangbl_state::paletteram_r), FUNC(spangbl_state::paletteram_w)); // Banked palette RAM + map(0xc800, 0xcfff).ram().w(FUNC(spangbl_state::colorram_w)).share(m_colorram); // Attribute RAM + map(0xd000, 0xdfff).rw(FUNC(spangbl_state::videoram_r), FUNC(spangbl_state::videoram_w)).share(m_videoram); // Banked char / OBJ RAM + map(0xe000, 0xffff).ram().share("nvram"); // Work RAM } -void mitchell_state::spangbl_io_map(address_map &map) +void spangbl_state::spangbl_io_map(address_map &map) { map.global_mask(0xff); - map(0x00, 0x02).r(FUNC(mitchell_state::input_r)); - map(0x00, 0x00).w(FUNC(mitchell_state::pangbl_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */ - map(0x02, 0x02).w(FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */ - map(0x03, 0x03).portr("DSW1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x00, 0x02).r(FUNC(spangbl_state::input_r)); + map(0x00, 0x00).w(FUNC(spangbl_state::gfxctrl_w)); // Palette bank, layer enable, coin counters, more + map(0x02, 0x02).w(FUNC(spangbl_state::bankswitch_w)); + map(0x03, 0x03).portr("DSW1").w("soundlatch", FUNC(generic_latch_8_device::write)); map(0x05, 0x05).portr("SYS0"); - map(0x06, 0x06).nopw(); /* watchdog? irq ack? */ - map(0x07, 0x07).w(FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */ - map(0x08, 0x08).w(FUNC(mitchell_state::eeprom_cs_w)); - map(0x10, 0x10).w(FUNC(mitchell_state::eeprom_clock_w)); - map(0x18, 0x18).w(FUNC(mitchell_state::eeprom_serial_w)); + map(0x06, 0x06).nopw(); // watchdog? irq ack? + map(0x07, 0x07).lw8(NAME([this] (uint8_t data) { m_video_bank = data; })); + map(0x08, 0x08).w(FUNC(spangbl_state::eeprom_cs_w)); + map(0x10, 0x10).w(FUNC(spangbl_state::eeprom_clock_w)); + map(0x18, 0x18).w(FUNC(spangbl_state::eeprom_serial_w)); } -void mitchell_state::sound_bankswitch_w(uint8_t data) +void spangbl_state::mstworld2_io_map(address_map &map) +{ + spangbl_io_map(map); + map(0x07, 0x07).lw8(NAME([this] (uint8_t data) { m_video_bank = data & 0x01; })); // for some reason mstworld2 freaks out if this isn't masked +} + +void spangbl_state::sound_bankswitch_w(uint8_t data) { m_msm->reset_w(BIT(data, 3)); m_soundbank->set_entry(data & 7); } -void mitchell_state::spangbl_sound_map(address_map &map) +void spangbl_state::spangbl_sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("soundbank"); - map(0xe000, 0xe000).w(FUNC(mitchell_state::sound_bankswitch_w)); + map(0x8000, 0xbfff).bankr(m_soundbank); + map(0xe000, 0xe000).w(FUNC(spangbl_state::sound_bankswitch_w)); map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w)); map(0xec00, 0xec01).w("ymsnd", FUNC(ym2413_device::write)); map(0xf000, 0xf4ff).ram(); - map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read)); } -void mitchell_state::pangba_sound_map(address_map &map) +void spangbl_state::pangba_sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0xbfff).bankr("soundbank"); - map(0xe000, 0xe000).w(FUNC(mitchell_state::sound_bankswitch_w)); + map(0x8000, 0xbfff).bankr(m_soundbank); + map(0xe000, 0xe000).w(FUNC(spangbl_state::sound_bankswitch_w)); map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w)); map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write)); map(0xf000, 0xf4ff).ram(); - map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read)); } /**** Monsters World ****/ -void mitchell_state::oki_banking_w(uint8_t data) -{ - m_oki->set_rom_bank(data & 3); -} -void mitchell_state::mstworld_sound_map(address_map &map) +void mstworld_state::sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0x87ff).ram(); - map(0x9000, 0x9000).w(FUNC(mitchell_state::oki_banking_w)); + map(0x9000, 0x9000).lw8(NAME([this] (uint8_t data) { m_oki->set_rom_bank(data & 3); })); map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); } -void mitchell_state::mstworld_sound_w(uint8_t data) -{ - m_soundlatch->write(data); - m_audiocpu->set_input_line(0, HOLD_LINE); -} - -void mitchell_state::mstworld_io_map(address_map &map) +void mstworld_state::io_map(address_map &map) { map.global_mask(0xff); - map(0x00, 0x00).portr("IN0").w(FUNC(mitchell_state::mstworld_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */ + map(0x00, 0x00).portr("IN0").w(FUNC(mstworld_state::gfxctrl_w)); // Palette bank, layer enable, coin counters, more map(0x01, 0x01).portr("IN1"); - map(0x02, 0x02).portr("IN2").w(FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */ - map(0x03, 0x03).portr("DSW0").w(FUNC(mitchell_state::mstworld_sound_w)); /* write to sound cpu */ - map(0x04, 0x04).portr("DSW1"); /* dips? */ - map(0x05, 0x05).portr("SYS0"); /* special? */ - map(0x06, 0x06).portr("DSW2"); /* dips? */ - map(0x06, 0x06).nopw(); /* watchdog? irq ack? */ - map(0x07, 0x07).w(FUNC(mitchell_state::mstworld_video_bank_w)); /* Video RAM bank register */ + map(0x02, 0x02).portr("IN2").w(FUNC(mstworld_state::bankswitch_w)); + map(0x03, 0x03).portr("DSW0").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x04, 0x04).portr("DSW1"); + map(0x05, 0x05).portr("SYS0"); + map(0x06, 0x06).portr("DSW2"); + map(0x06, 0x06).nopw(); // watchdog? irq ack? + map(0x07, 0x07).lw8(NAME([this] (uint8_t data) { m_video_bank = data & 0x01; })); // for some reason mstworld freaks out if this isn't masked } -void mitchell_state::pkladiesbl_io_map(address_map &map) // TODO: check everything, where is the MSM5205 hooked up? +void pkladiesbl_state::io_map(address_map &map) // TODO: check everything, where is the MSM5205 hooked up? { map.global_mask(0xff); - map(0x00, 0x00).portr("IN0").w(FUNC(mitchell_state::pang_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */ + map(0x00, 0x00).portr("IN0").w(FUNC(pkladiesbl_state::gfxctrl_w)); // Palette bank, layer enable, coin counters, more map(0x01, 0x01).portr("IN1").w("ymsnd", FUNC(ym2413_device::address_w)); // TODO: hold buttons are here, multiplexed but not in the same way as the original - map(0x02, 0x02).portr("IN2").w(FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */ + map(0x02, 0x02).portr("IN2").w(FUNC(pkladiesbl_state::bankswitch_w)); map(0x03, 0x03).portr("DSW0"); map(0x04, 0x04).portr("DSW1"); - map(0x05, 0x05).r(FUNC(mitchell_state::pang_port5_r)); - map(0x06, 0x06).noprw(); /* watchdog? IRQ ack? video buffering? */ - map(0x07, 0x07).w(FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */ - map(0x08, 0x08).w(FUNC(mitchell_state::eeprom_cs_w)); + map(0x05, 0x05).r(FUNC(pkladiesbl_state::port5_r)); + map(0x06, 0x06).noprw(); // watchdog? IRQ ack? video buffering? + map(0x07, 0x07).lw8(NAME([this] (uint8_t data) { m_video_bank = data; })); + map(0x08, 0x08).w(FUNC(pkladiesbl_state::eeprom_cs_w)); map(0x09, 0x09).w("ymsnd", FUNC(ym2413_device::data_w)); - map(0x10, 0x10).w(FUNC(mitchell_state::eeprom_clock_w)); - map(0x18, 0x18).w(FUNC(mitchell_state::eeprom_serial_w)); + map(0x10, 0x10).w(FUNC(pkladiesbl_state::eeprom_clock_w)); + map(0x18, 0x18).w(FUNC(pkladiesbl_state::eeprom_serial_w)); } /************************************* @@ -475,11 +876,11 @@ void mitchell_state::pkladiesbl_io_map(address_map &map) // TODO: check everythi static INPUT_PORTS_START( mj_common ) PORT_START("SYS0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* USED - handled in port5_r */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // USED - handled in port5_r PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") @@ -654,11 +1055,11 @@ static INPUT_PORTS_START( marukin ) INPUT_PORTS_END static INPUT_PORTS_START( pkladies ) - /* same unknown ports as the mahjong games, so we include the following */ + // same unknown ports as the mahjong games, so we include the following PORT_INCLUDE( marukin ) PORT_MODIFY("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode farther down */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) // same as the service mode farther down PORT_MODIFY("KEY0") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -734,7 +1135,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( pkladiesbl ) PORT_START("SYS0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* USED - handled in port5_r */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // USED - handled in port5_r PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") @@ -833,20 +1234,20 @@ INPUT_PORTS_END static INPUT_PORTS_START( pang ) PORT_START("SYS0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* USED - handled in port5_r */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // USED - handled in port5_r PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -906,7 +1307,7 @@ static INPUT_PORTS_START( spangbl ) PORT_MODIFY("SYS0") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // this bootleg doesn't seem to allow entering test mode. It has a dip bank for settings, instead. - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_MODIFY("IN1") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // must be high for game to boot.. @@ -937,21 +1338,21 @@ static INPUT_PORTS_START( spangbl ) INPUT_PORTS_END static INPUT_PORTS_START( mstworld ) - /* this port may not have the same role */ + // this port may not have the same role PORT_START("SYS0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -976,7 +1377,7 @@ static INPUT_PORTS_START( mstworld ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_START("DSW0") /* coinage seems to be in here.. */ + PORT_START("DSW0") // coinage seems to be in here.. PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x03, "A 1Coin 4Credits / B 1Coin 4Credits" ) PORT_DIPSETTING( 0x02, "A 1Coin 3Credits / B 1Coin 3Credits" ) @@ -1053,17 +1454,71 @@ static INPUT_PORTS_START( mstworld ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( mstworld2 ) + PORT_INCLUDE( mstworld ) + + PORT_MODIFY("DSW0") + PORT_DIPNAME( 0x01, 0x01, "ds0" ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x03, "A 1Coin 4Credits / B 1Coin 4Credits" ) + PORT_DIPSETTING( 0x02, "A 1Coin 3Credits / B 1Coin 3Credits" ) + PORT_DIPSETTING( 0x01, "A 1Coin 2Credits / B 1Coin 2Credits" ) + PORT_DIPSETTING( 0x00, "A 1Coin 1Credit / B 1Coin 4Credits" ) + PORT_DIPSETTING( 0x04, "A 2Coins 1Credit / B 1Coin 2Credits" ) + PORT_DIPSETTING( 0x05, "A 2Coins 1Credit / B 1Coin 3Credits" ) + PORT_DIPSETTING( 0x06, "A 3Coins 1Credit / B 1Coin 2Credits" ) + PORT_DIPSETTING( 0x07, "A 4Coins 1Credit / B 1Coin 1Credit" ) + PORT_DIPNAME( 0x18, 0x00, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x08, "2" ) + PORT_DIPSETTING( 0x10, "3" ) + PORT_DIPSETTING( 0x18, "4" ) + PORT_DIPNAME( 0x60, 0x20, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x60, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) +INPUT_PORTS_END + static INPUT_PORTS_START( qtono1 ) PORT_START("SYS0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* USED - handled in port5_r */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // USED - handled in port5_r PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode farther down */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) // same as the service mode farther down PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1095,20 +1550,20 @@ INPUT_PORTS_END static INPUT_PORTS_START( block ) PORT_START("SYS0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* USED - handled in port5_r */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // USED - handled in port5_r PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -1116,7 +1571,7 @@ static INPUT_PORTS_START( block ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) /* dial direction */ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) // dial direction PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) @@ -1124,7 +1579,7 @@ static INPUT_PORTS_START( block ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) /* dial direction */ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) // dial direction PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) @@ -1137,20 +1592,20 @@ INPUT_PORTS_END static INPUT_PORTS_START( blockjoy ) PORT_START("SYS0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* USED - handled in port5_r */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // USED - handled in port5_r PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ + PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused? PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // probably unused PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -1158,7 +1613,7 @@ static INPUT_PORTS_START( blockjoy ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) /* dial direction */ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) // dial direction PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1168,7 +1623,7 @@ static INPUT_PORTS_START( blockjoy ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) /* dial direction */ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) // dial direction PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1185,70 +1640,70 @@ INPUT_PORTS_END static const gfx_layout charlayout = { - 8,8, /* 8*8 characters */ - 32768, /* 32768 characters */ - 4, /* 4 bits per pixel */ + 8,8, // 8*8 characters + 32768, // 32768 characters + 4, // 4 bits per pixel { 32768*16*8+4, 32768*16*8+0,4, 0 }, { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 }, { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, - 16*8 /* every char takes 16 consecutive bytes */ + 16*8 // every char takes 16 consecutive bytes }; static const gfx_layout marukin_charlayout = { - 8,8, /* 8*8 characters */ - 65536, /* 65536 characters */ - 4, /* 4 bits per pixel */ + 8,8, // 8*8 characters + 65536, // 65536 characters + 4, // 4 bits per pixel { 3*4, 2*4, 1*4, 0*4 }, { 0, 1, 2, 3, 16+0, 16+1, 16+2, 16+3 }, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, - 32*8 /* every char takes 32 consecutive bytes */ + 32*8 // every char takes 32 consecutive bytes }; static const gfx_layout pkladiesbl_charlayout = { - 8,8, /* 8*8 characters */ - 65536, /* 65536 characters */ - 4, /* 4 bits per pixel */ + 8,8, // 8*8 characters + 65536, // 65536 characters + 4, // 4 bits per pixel { 0*8, 1*8, 2*8, 3*8 }, { 0, 1, 2, 3, 4,5,6,7 }, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, - 32*8 /* every char takes 32 consecutive bytes */ + 32*8 // every char takes 32 consecutive bytes }; static const gfx_layout spritelayout = { - 16,16, /* 16*16 sprites */ - 2048, /* 2048 sprites */ - 4, /* 4 bits per pixel */ + 16,16, // 16*16 sprites + 2048, // 2048 sprites + 4, // 4 bits per pixel { 2048*64*8+4, 2048*64*8+0, 4, 0 }, { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3, 32*8+0, 32*8+1, 32*8+2, 32*8+3, 33*8+0, 33*8+1, 33*8+2, 33*8+3 }, { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 }, - 64*8 /* every sprite takes 64 consecutive bytes */ + 64*8 // every sprite takes 64 consecutive bytes }; static GFXDECODE_START( gfx_mgakuen ) - GFXDECODE_ENTRY( "gfx1", 0, marukin_charlayout, 0, 64 ) /* colors 0-1023 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 ) /* colors 0- 255 */ + GFXDECODE_ENTRY( "chars", 0, marukin_charlayout, 0, 64 ) // colors 0-1023 + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 ) // colors 0- 255 GFXDECODE_END static GFXDECODE_START( gfx_marukin ) - GFXDECODE_ENTRY( "gfx1", 0, marukin_charlayout, 0, 128 ) /* colors 0-2047 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 ) /* colors 0- 255 */ + GFXDECODE_ENTRY( "chars", 0, marukin_charlayout, 0, 128 ) // colors 0-2047 + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 ) // colors 0- 255 GFXDECODE_END static GFXDECODE_START( gfx_pkladiesbl ) - GFXDECODE_ENTRY( "gfx1", 0, pkladiesbl_charlayout, 0, 128 ) /* colors 0-2047 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 ) /* colors 0- 255 */ + GFXDECODE_ENTRY( "chars", 0, pkladiesbl_charlayout, 0, 128 ) // colors 0-2047 + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 ) // colors 0- 255 GFXDECODE_END static GFXDECODE_START( gfx_mitchell ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* colors 0-2047 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 ) /* colors 0- 255 */ + GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 128 ) // colors 0-2047 + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 ) // colors 0- 255 GFXDECODE_END static const gfx_layout mstworld_charlayout = @@ -1278,8 +1733,8 @@ static const gfx_layout mstworld_spritelayout = static GFXDECODE_START( gfx_mstworld ) - GFXDECODE_ENTRY( "gfx1", 0, mstworld_charlayout, 0x000, 0x40 ) - GFXDECODE_ENTRY( "gfx2", 0, mstworld_spritelayout, 0x000, 0x40 ) + GFXDECODE_ENTRY( "chars", 0, mstworld_charlayout, 0x000, 0x40 ) + GFXDECODE_ENTRY( "sprites", 0, mstworld_spritelayout, 0x000, 0x40 ) GFXDECODE_END @@ -1289,27 +1744,26 @@ GFXDECODE_END * *************************************/ -MACHINE_START_MEMBER(mitchell_state,mitchell) +void mitchell_state::machine_start() { save_item(NAME(m_dial_selected)); save_item(NAME(m_keymatrix)); save_item(NAME(m_dir)); save_item(NAME(m_dial)); save_item(NAME(m_irq_source)); -// save_item(NAME(init_eeprom_count)); - - if (m_soundbank.found()) - { - m_soundbank->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000); - m_soundbank->set_entry(0); - - save_item(NAME(m_sample_select)); - } } -MACHINE_RESET_MEMBER(mitchell_state,mitchell) +void spangbl_state::machine_start() +{ + m_soundbank->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000); + m_soundbank->set_entry(0); + + save_item(NAME(m_sample_select)); + save_item(NAME(m_irq_source)); +} + +void mitchell_state::machine_reset() { - m_sample_select = false; m_dial_selected = 0; m_dial[0] = 0; m_dial[1] = 0; @@ -1318,6 +1772,13 @@ MACHINE_RESET_MEMBER(mitchell_state,mitchell) m_keymatrix = 0; } +void spangbl_state::machine_reset() +{ + mitchell_state::machine_reset(); + + m_sample_select = 0; +} + TIMER_DEVICE_CALLBACK_MEMBER(mitchell_state::mitchell_irq) { int scanline = param; @@ -1332,76 +1793,66 @@ TIMER_DEVICE_CALLBACK_MEMBER(mitchell_state::mitchell_irq) void mitchell_state::mgakuen(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(16'000'000)/2); /* probably same clock as the other mitchell hardware games */ + // basic machine hardware + Z80(config, m_maincpu, XTAL(16'000'000) / 2); // probably same clock as the other Mitchell hardware games m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mgakuen_map); m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map); TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1); - MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) - MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) - EEPROM_93C46_16BIT(config, m_eeprom); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(64*8, 32*8); screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_screen_update(FUNC(mitchell_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mgakuen); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); // less colors than the others - MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) - - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); - OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* probably same clock as the other mitchell hardware games */ + OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH); // probably same clock as the other Mitchell hardware games m_oki->add_route(ALL_OUTPUTS, "mono", 0.50); - ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* probably same clock as the other mitchell hardware games */ + ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000) / 4)); // probably same clock as the other Mitchell hardware games ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); } void mitchell_state::pang(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */ + // basic machine hardware + Z80(config, m_maincpu, XTAL(16'000'000 )/ 2); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map); m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map); m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1); - MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) - MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) - EEPROM_93C46_16BIT(config, m_eeprom); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(57.42); /* verified on pcb */ - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_refresh_hz(57.42); // verified on PCB + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(64*8, 32*8); screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_screen_update(FUNC(mitchell_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mitchell); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); - MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) - - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); - OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb */ + OKIM6295(config, m_oki, XTAL(16'000'000) / 16, okim6295_device::PIN7_HIGH); // verified on PCB m_oki->add_route(ALL_OUTPUTS, "mono", 0.30); - ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */ + ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000) / 4)); // verified on PCB ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -1414,24 +1865,27 @@ void mitchell_state::pangnv(machine_config &config) static const gfx_layout blcharlayout = { - 8,8, /* 8*8 characters */ - RGN_FRAC(1,2), /* 32768 characters */ - 4, /* 4 bits per pixel */ + 8,8, // 8*8 characters + RGN_FRAC(1,2), // 32768 characters + 4, // 4 bits per pixel { RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0,8, 0 }, { 0, 1, 2, 3, 4,5,6,7 }, { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, - 16*8 /* every char takes 16 consecutive bytes */ + 16*8 // every char takes 16 consecutive bytes }; static GFXDECODE_START( gfx_spangbl ) - GFXDECODE_ENTRY( "gfx1", 0, blcharlayout, 0, 128 ) /* colors 0-2047 */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 ) /* colors 0- 255 */ + GFXDECODE_ENTRY( "chars", 0, blcharlayout, 0, 128 ) // colors 0-2047 + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 ) // colors 0- 255 GFXDECODE_END +static GFXDECODE_START( gfx_mstworld2 ) + GFXDECODE_ENTRY( "chars", 0, blcharlayout, 0, 0x80 ) + GFXDECODE_ENTRY( "sprites", 0, mstworld_spritelayout, 0, 0x40 ) +GFXDECODE_END - -WRITE_LINE_MEMBER(mitchell_state::spangbl_adpcm_int) +WRITE_LINE_MEMBER(spangbl_state::adpcm_int) { if (!state) return; @@ -1441,28 +1895,27 @@ WRITE_LINE_MEMBER(mitchell_state::spangbl_adpcm_int) m_audiocpu->set_input_line(INPUT_LINE_NMI, m_sample_select); } -void mitchell_state::spangbl(machine_config &config) +void spangbl_state::spangbl(machine_config &config) { pangnv(config); - m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::spangbl_map); - m_maincpu->set_addrmap(AS_IO, &mitchell_state::spangbl_io_map); - m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); - m_maincpu->set_vblank_int("screen", FUNC(mitchell_state::irq0_line_hold)); + m_maincpu->set_addrmap(AS_PROGRAM, &spangbl_state::main_map); + m_maincpu->set_addrmap(AS_IO, &spangbl_state::spangbl_io_map); + m_maincpu->set_addrmap(AS_OPCODES, &spangbl_state::decrypted_opcodes_map); + m_maincpu->set_vblank_int("screen", FUNC(spangbl_state::irq0_line_hold)); config.device_remove("scantimer"); Z80(config, m_audiocpu, 4000000); // Z80A CPU; clock unknown - m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::spangbl_sound_map); + m_audiocpu->set_addrmap(AS_PROGRAM, &spangbl_state::spangbl_sound_map); m_gfxdecode->set_info(gfx_spangbl); - GENERIC_LATCH_8(config, m_soundlatch); - m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); + GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0); config.device_remove("oki"); MSM5205(config, m_msm, 400000); // clock and prescaler unknown - m_msm->vck_legacy_callback().set(FUNC(mitchell_state::spangbl_adpcm_int)); // controls music as well as ADCPM rate + m_msm->vck_legacy_callback().set(FUNC(spangbl_state::adpcm_int)); // controls music as well as ADCPM rate m_msm->set_prescaler_selector(msm5205_device::S96_4B); m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); @@ -1470,50 +1923,54 @@ void mitchell_state::spangbl(machine_config &config) m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); } -void mitchell_state::pangba(machine_config &config) +void spangbl_state::pangba(machine_config &config) { spangbl(config); - m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::pangba_sound_map); + m_audiocpu->set_addrmap(AS_PROGRAM, &spangbl_state::pangba_sound_map); YM3812(config.replace(), "ymsnd", 4000000).add_route(ALL_OUTPUTS, "mono", 1.0); } -void mitchell_state::mstworld(machine_config &config) +void spangbl_state::mstworld2(machine_config &config) { - /* basic machine hardware */ + spangbl(config); + + m_maincpu->set_addrmap(AS_IO, &spangbl_state::mstworld2_io_map); + + m_gfxdecode->set_info(gfx_mstworld2); +} + +void mstworld_state::mstworld(machine_config &config) +{ + // basic machine hardware /* it doesn't glitch with the clock speed set to 4x normal, however this is incorrect.. the interrupt handling (and probably various irq flags / vbl flags handling etc.) is more likely wrong.. the game appears to run too fast anyway .. */ - Z80(config, m_maincpu, 6000000*4); - m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map); - m_maincpu->set_addrmap(AS_IO, &mitchell_state::mstworld_io_map); - m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); - m_maincpu->set_vblank_int("screen", FUNC(mitchell_state::irq0_line_hold)); + Z80(config, m_maincpu, 6000000 * 4); + m_maincpu->set_addrmap(AS_PROGRAM, &mstworld_state::mitchell_map); + m_maincpu->set_addrmap(AS_IO, &mstworld_state::io_map); + m_maincpu->set_addrmap(AS_OPCODES, &mstworld_state::decrypted_opcodes_map); + m_maincpu->set_vblank_int("screen", FUNC(mstworld_state::irq0_line_hold)); - Z80(config, m_audiocpu, 6000000); /* 6 MHz? */ - m_audiocpu->set_addrmap(AS_PROGRAM, &mitchell_state::mstworld_sound_map); + Z80(config, m_audiocpu, 6000000); // 6 MHz? + m_audiocpu->set_addrmap(AS_PROGRAM, &mstworld_state::sound_map); - MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) - MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) - - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(64*8, 32*8); screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_screen_update(FUNC(mstworld_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mstworld); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); - MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) - - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); - GENERIC_LATCH_8(config, m_soundlatch); + GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0); OKIM6295(config, m_oki, 990000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified m_oki->add_route(ALL_OUTPUTS, "mono", 0.50); @@ -1521,37 +1978,11 @@ void mitchell_state::mstworld(machine_config &config) void mitchell_state::marukin(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */ - m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map); - m_maincpu->set_addrmap(AS_IO, &mitchell_state::mitchell_io_map); - m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); - TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1); + pang(config); - EEPROM_93C46_16BIT(config, m_eeprom); + subdevice("screen")->set_refresh_hz(60); - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_size(64*8, 32*8); - screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); - screen.set_palette(m_palette); - - GFXDECODE(config, m_gfxdecode, m_palette, gfx_marukin); - PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); - - MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - - OKIM6295(config, m_oki, XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH); /* verified on pcb */ - m_oki->add_route(ALL_OUTPUTS, "mono", 0.30); - - ym2413_device &ymsnd(YM2413(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */ - ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); + m_gfxdecode->set_info(gfx_marukin); } /* @@ -1572,38 +2003,36 @@ Vsync is 59.09hz */ -void mitchell_state::pkladiesbl(machine_config &config) +void pkladiesbl_state::pkladiesbl(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on pcb */ - m_maincpu->set_addrmap(AS_PROGRAM, &mitchell_state::mitchell_map); - m_maincpu->set_addrmap(AS_IO, &mitchell_state::pkladiesbl_io_map); - m_maincpu->set_addrmap(AS_OPCODES, &mitchell_state::decrypted_opcodes_map); - TIMER(config, "scantimer").configure_scanline(FUNC(mitchell_state::mitchell_irq), "screen", 0, 1); + // basic machine hardware + Z80(config, m_maincpu, XTAL(12'000'000) / 2); // verified on PCB + m_maincpu->set_addrmap(AS_PROGRAM, &pkladiesbl_state::mitchell_map); + m_maincpu->set_addrmap(AS_IO, &pkladiesbl_state::io_map); + m_maincpu->set_addrmap(AS_OPCODES, &pkladiesbl_state::decrypted_opcodes_map); + TIMER(config, "scantimer").configure_scanline(FUNC(pkladiesbl_state::mitchell_irq), "screen", 0, 1); EEPROM_93C46_16BIT(config, m_eeprom); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(59.09); /* verified on pcb */ - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_refresh_hz(59.09); // verified on PCB + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(64*8, 32*8); screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(mitchell_state::screen_update_pang)); + screen.set_screen_update(FUNC(pkladiesbl_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_pkladiesbl); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 2048); - MCFG_VIDEO_START_OVERRIDE(mitchell_state,pang) - - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); MSM5205(config, m_msm, 384000); m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); - ym2413_device &ymsnd(YM2413(config, "ymsnd", 3750000)); /* verified on pcb, read the comments */ + ym2413_device &ymsnd(YM2413(config, "ymsnd", 3750000)); // verified on PCB, read the comments ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -1618,18 +2047,18 @@ ROM_START( mgakuen ) ROM_LOAD( "mg-1.1j", 0x00000, 0x08000, CRC(bf02ea6b) SHA1(bb1f5fbb211a5ed181f1afbba6b39737639d3ee7) ) ROM_LOAD( "mg-2.1l", 0x10000, 0x20000, CRC(64141b0c) SHA1(2de6bcd5cf2c042e5bf5c294dd7625393e99682b) ) - ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD( "mg-1.13h", 0x000000, 0x80000, CRC(fd6a0805) SHA1(f3d4d402dd96b8e4297a074b01d803cac16ac0d3) ) /* chars */ + ROM_REGION( 0x200000, "chars", 0 ) + ROM_LOAD( "mg-1.13h", 0x000000, 0x80000, CRC(fd6a0805) SHA1(f3d4d402dd96b8e4297a074b01d803cac16ac0d3) ) ROM_LOAD( "mg-2.14h", 0x080000, 0x80000, CRC(e26e871e) SHA1(00f9642ced5f1795e02b357a06deee3d093f6dc0) ) ROM_LOAD( "mg-3.16h", 0x100000, 0x80000, CRC(dd781d9a) SHA1(db5568be7e5fc15497b979451c65d8448063e04b) ) ROM_LOAD( "mg-4.17h", 0x180000, 0x80000, CRC(97afcc79) SHA1(a84ddf089db7d26a0043815648f1674b240b8289) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "mg-6.4l", 0x000000, 0x20000, CRC(34594e62) SHA1(a28493fc120ddfa6b51eeb3c111cc611cab54332) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "mg-6.4l", 0x000000, 0x20000, CRC(34594e62) SHA1(a28493fc120ddfa6b51eeb3c111cc611cab54332) ) ROM_LOAD( "mg-7.6l", 0x020000, 0x20000, CRC(f304c806) SHA1(a803a7be8702874fb547624be621a55f6ef5be1c) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ - ROM_LOAD( "mg-5.1c", 0x00000, 0x80000, CRC(170332f1) SHA1(bc60f144a224f348fd5b8c0207e18a881f739fc1) ) /* banked */ + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "mg-5.1c", 0x00000, 0x80000, CRC(170332f1) SHA1(bc60f144a224f348fd5b8c0207e18a881f739fc1) ) // banked ROM_END ROM_START( 7toitsu ) @@ -1637,18 +2066,18 @@ ROM_START( 7toitsu ) ROM_LOAD( "mc01.1j", 0x00000, 0x08000, CRC(0bebe45f) SHA1(24fadffd0033565441a75f36e2cb085a37e0f0e5) ) ROM_LOAD( "mc02.1l", 0x10000, 0x20000, CRC(375378b0) SHA1(cbb5db5fda1d87902b22130243d579cb28803707) ) - ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD( "mg-1.13h", 0x000000, 0x80000, CRC(fd6a0805) SHA1(f3d4d402dd96b8e4297a074b01d803cac16ac0d3) ) /* chars */ + ROM_REGION( 0x200000, "chars", 0 ) + ROM_LOAD( "mg-1.13h", 0x000000, 0x80000, CRC(fd6a0805) SHA1(f3d4d402dd96b8e4297a074b01d803cac16ac0d3) ) ROM_LOAD( "mg-2.14h", 0x080000, 0x80000, CRC(e26e871e) SHA1(00f9642ced5f1795e02b357a06deee3d093f6dc0) ) ROM_LOAD( "mg-3.16h", 0x100000, 0x80000, CRC(dd781d9a) SHA1(db5568be7e5fc15497b979451c65d8448063e04b) ) ROM_LOAD( "mg-4.17h", 0x180000, 0x80000, CRC(97afcc79) SHA1(a84ddf089db7d26a0043815648f1674b240b8289) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "mc06.4l", 0x000000, 0x20000, CRC(0ef83926) SHA1(850b382d919c86ae09d802d5183edd37c81e7c97) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "mc06.4l", 0x000000, 0x20000, CRC(0ef83926) SHA1(850b382d919c86ae09d802d5183edd37c81e7c97) ) ROM_LOAD( "mc07.6l", 0x020000, 0x20000, CRC(59f9ffb1) SHA1(1c225a526860637a713d4b8add2fbc0a17c0a854) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ - ROM_LOAD( "mg-5.1c", 0x00000, 0x80000, CRC(170332f1) SHA1(bc60f144a224f348fd5b8c0207e18a881f739fc1) ) /* banked */ + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "mg-5.1c", 0x00000, 0x80000, CRC(170332f1) SHA1(bc60f144a224f348fd5b8c0207e18a881f739fc1) ) // banked ROM_END ROM_START( mgakuen2 ) @@ -1657,18 +2086,18 @@ ROM_START( mgakuen2 ) ROM_LOAD( "mg2-y.1l", 0x10000, 0x20000, CRC(75bbcc14) SHA1(52ec279fda131c8de06d8c940df12d61ec6881cc) ) ROM_LOAD( "mg2-z.3l", 0x30000, 0x20000, CRC(bfdba961) SHA1(75045562edbdef1eb599d6a6bfc4247c33c11258) ) - ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD( "mg2-a.13h", 0x000000, 0x80000, CRC(31a0c55e) SHA1(2a6bd9f9d1fee17fd4798ba9aad05e05b3cfb210) ) /* chars */ + ROM_REGION( 0x200000, "chars", 0 ) + ROM_LOAD( "mg2-a.13h", 0x000000, 0x80000, CRC(31a0c55e) SHA1(2a6bd9f9d1fee17fd4798ba9aad05e05b3cfb210) ) ROM_LOAD( "mg2-b.14h", 0x080000, 0x80000, CRC(c18488fa) SHA1(42efb2a51305dce86ec721c747ee13d82c4f6cd6) ) ROM_LOAD( "mg2-c.16h", 0x100000, 0x80000, CRC(9425b364) SHA1(44373e137e0b820ad705ef1c299a9d31a1e8d0ca) ) ROM_LOAD( "mg2-d.17h", 0x180000, 0x80000, CRC(6cc9eeba) SHA1(ef4a4f44abacc8b08576846d514765ac2eadf9a6) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "mg2-f.4l", 0x000000, 0x20000, CRC(3172c9fe) SHA1(7012bf2eb70c70b08f0204a4766dd8fce0bcc135) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "mg2-f.4l", 0x000000, 0x20000, CRC(3172c9fe) SHA1(7012bf2eb70c70b08f0204a4766dd8fce0bcc135) ) ROM_LOAD( "mg2-g.6l", 0x020000, 0x20000, CRC(19b8b61c) SHA1(a9f5cea6f4788886719f5f9301ef172978b3b9a2) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ - ROM_LOAD( "mg2-e.1c", 0x00000, 0x80000, CRC(70fd0809) SHA1(7f85fc5f575c925c3246b45fc041f57fc3eb7cc8) ) /* banked */ + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "mg2-e.1c", 0x00000, 0x80000, CRC(70fd0809) SHA1(7f85fc5f575c925c3246b45fc041f57fc3eb7cc8) ) // banked ROM_END ROM_START( pkladies ) @@ -1676,17 +2105,17 @@ ROM_START( pkladies ) ROM_LOAD( "pko-prg1.14f", 0x00000, 0x08000, CRC(86585a94) SHA1(067791da20556e6c47de26fbf85389d92f9709db) ) ROM_LOAD( "pko-prg2.15f", 0x10000, 0x10000, CRC(86cbe82d) SHA1(3997a642004d1226cfce0f590123d4e407edf094) ) - ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "pko-001.8h", 0x000000, 0x80000, CRC(1ead5d9b) SHA1(ac9b294ce1fcfb994f7c06e0e3f0ec8d86f2d908) ) /* chars */ + ROM_REGION( 0x200000, "chars", 0 ) + ROM_LOAD16_BYTE( "pko-001.8h", 0x000000, 0x80000, CRC(1ead5d9b) SHA1(ac9b294ce1fcfb994f7c06e0e3f0ec8d86f2d908) ) ROM_LOAD16_BYTE( "pko-003.8j", 0x000001, 0x80000, CRC(339ab4e6) SHA1(0dbe6801e72df1226a4df3f6911523c95cd2ac6a) ) ROM_LOAD16_BYTE( "pko-002.9h", 0x100000, 0x80000, CRC(1cf02586) SHA1(d78fa4824c00b88049c36c1525031f3b8b5d36c8) ) ROM_LOAD16_BYTE( "pko-004.9j", 0x100001, 0x80000, CRC(09ccb442) SHA1(c8deb7c29f75ad61237c8b737caded58f21f3bba) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "pko-chr1.2j", 0x000000, 0x20000, CRC(31ce33cd) SHA1(9e8cea7625e7436a8480c4114c9148c67ccbf247) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "pko-chr1.2j", 0x000000, 0x20000, CRC(31ce33cd) SHA1(9e8cea7625e7436a8480c4114c9148c67ccbf247) ) ROM_LOAD( "pko-chr2.3j", 0x020000, 0x20000, CRC(ad7e055f) SHA1(062f4d3b6e11ddce035bd0d5a279dc4489149cc4) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "pko-voi1.2d", 0x00000, 0x20000, CRC(07e0f531) SHA1(315715f7686ae09c446029da36faec5bab7fcaf0) ) ROM_LOAD( "pko-voi2.3d", 0x20000, 0x20000, CRC(18398bf6) SHA1(9e9ab85383350d01ba597951a48f18ecee1f46c6) ) ROM_END @@ -1694,19 +2123,19 @@ ROM_END ROM_START( pkladiesl ) ROM_REGION( 0x50000, "maincpu", 0 ) ROM_LOAD( "pk05.14f", 0x00000, 0x08000, CRC(ea1740a6) SHA1(eafd3fb0056a648dfc67b5d0a1dc93c4262e2a8b) ) - ROM_LOAD( "pk06.15f", 0x10000, 0x20000, CRC(3078ff5e) SHA1(5d91d68a07a968ee59f693841da165833a9fcf08) ) /* larger than pkladies - 2nd half unused? */ + ROM_LOAD( "pk06.15f", 0x10000, 0x20000, CRC(3078ff5e) SHA1(5d91d68a07a968ee59f693841da165833a9fcf08) ) // larger than pkladies - 2nd half unused? - ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "pko-001.8h", 0x000000, 0x80000, CRC(1ead5d9b) SHA1(ac9b294ce1fcfb994f7c06e0e3f0ec8d86f2d908) ) /* chars */ + ROM_REGION( 0x200000, "chars", 0 ) + ROM_LOAD16_BYTE( "pko-001.8h", 0x000000, 0x80000, CRC(1ead5d9b) SHA1(ac9b294ce1fcfb994f7c06e0e3f0ec8d86f2d908) ) ROM_LOAD16_BYTE( "pko-003.8j", 0x000001, 0x80000, CRC(339ab4e6) SHA1(0dbe6801e72df1226a4df3f6911523c95cd2ac6a) ) ROM_LOAD16_BYTE( "pko-002.9h", 0x100000, 0x80000, CRC(1cf02586) SHA1(d78fa4824c00b88049c36c1525031f3b8b5d36c8) ) ROM_LOAD16_BYTE( "pko-004.9j", 0x100001, 0x80000, CRC(09ccb442) SHA1(c8deb7c29f75ad61237c8b737caded58f21f3bba) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "pko-chr1.2j", 0x000000, 0x20000, CRC(31ce33cd) SHA1(9e8cea7625e7436a8480c4114c9148c67ccbf247) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "pko-chr1.2j", 0x000000, 0x20000, CRC(31ce33cd) SHA1(9e8cea7625e7436a8480c4114c9148c67ccbf247) ) ROM_LOAD( "pko-chr2.3j", 0x020000, 0x20000, CRC(ad7e055f) SHA1(062f4d3b6e11ddce035bd0d5a279dc4489149cc4) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "pko-voi1.2d", 0x00000, 0x20000, CRC(07e0f531) SHA1(315715f7686ae09c446029da36faec5bab7fcaf0) ) ROM_LOAD( "pko-voi2.3d", 0x20000, 0x20000, CRC(18398bf6) SHA1(9e9ab85383350d01ba597951a48f18ecee1f46c6) ) ROM_END @@ -1716,17 +2145,17 @@ ROM_START( pkladiesla ) ROM_LOAD( "pk05.14f", 0x00000, 0x08000, CRC(fa18e16a) SHA1(05fff3335a55b9ebf13a0bc89216f00fba6b6b6d) ) ROM_LOAD( "pk06.15f", 0x10000, 0x10000, CRC(a2fb7646) SHA1(778d3c1348efe6e46aed4ce968826ce73e320187) ) - ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD16_BYTE( "pk0-001-t18.8h", 0x000000, 0x80000, CRC(1ead5d9b) SHA1(ac9b294ce1fcfb994f7c06e0e3f0ec8d86f2d908) ) /* chars */ + ROM_REGION( 0x200000, "chars", 0 ) + ROM_LOAD16_BYTE( "pk0-001-t18.8h", 0x000000, 0x80000, CRC(1ead5d9b) SHA1(ac9b294ce1fcfb994f7c06e0e3f0ec8d86f2d908) ) ROM_LOAD16_BYTE( "pk0-003-t20.8j", 0x000001, 0x80000, CRC(339ab4e6) SHA1(0dbe6801e72df1226a4df3f6911523c95cd2ac6a) ) ROM_LOAD16_BYTE( "pk0-002-t19.9h", 0x100000, 0x80000, CRC(1cf02586) SHA1(d78fa4824c00b88049c36c1525031f3b8b5d36c8) ) ROM_LOAD16_BYTE( "pk0-004-t21.9j", 0x100001, 0x80000, CRC(09ccb442) SHA1(c8deb7c29f75ad61237c8b737caded58f21f3bba) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "pk16.2j", 0x000000, 0x20000, CRC(31ce33cd) SHA1(9e8cea7625e7436a8480c4114c9148c67ccbf247) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "pk16.2j", 0x000000, 0x20000, CRC(31ce33cd) SHA1(9e8cea7625e7436a8480c4114c9148c67ccbf247) ) ROM_LOAD( "pk17.3j", 0x020000, 0x20000, CRC(ad7e055f) SHA1(062f4d3b6e11ddce035bd0d5a279dc4489149cc4) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "pk01.2d", 0x00000, 0x20000, CRC(07e0f531) SHA1(315715f7686ae09c446029da36faec5bab7fcaf0) ) ROM_LOAD( "pk02.3d", 0x20000, 0x20000, CRC(18398bf6) SHA1(9e9ab85383350d01ba597951a48f18ecee1f46c6) ) @@ -1746,7 +2175,7 @@ ROM_START( pkladiesbl ) ROM_LOAD( "2.ic126", 0x60000, 0x10000, CRC(5c73e9b6) SHA1(5fbfb4c79e2df8e1edd3f29ac63f9961dd3724b1) ) ROM_CONTINUE(0x10000,0x10000) - ROM_REGION( 0x240000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x240000, "chars", ROMREGION_INVERT ) ROM_LOAD32_BYTE("20.ic97", 0x000000, 0x20000, CRC(ea72f6b5) SHA1(f38e4c8c9acec754f34b3ac442c96919c321a277) ) ROM_LOAD32_BYTE("14.ic96", 0x000001, 0x20000, CRC(d6fe4f36) SHA1(aa6250d4291ca67165898cec57b96ec830b89d8f) ) ROM_LOAD32_BYTE("10.ic95", 0x000002, 0x20000, CRC(a2eff7a9) SHA1(290930ff93b20409cb99cbf12a7de493dce7baa2) ) @@ -1764,11 +2193,11 @@ ROM_START( pkladiesbl ) ROM_LOAD32_BYTE("9.ic108", 0x180002, 0x20000, CRC(edf4c0f4) SHA1(e1689bfaa1547fe8da5635808833cfe91b9d98bc) ) ROM_LOAD32_BYTE("5.ic109", 0x180003, 0x20000, CRC(93422182) SHA1(72847f073ffaffb7ed34a0972598a3df929c25a3) ) - ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) + ROM_REGION( 0x040000, "sprites", ROMREGION_INVERT ) ROM_LOAD("16.ic42", 0x020000, 0x20000, CRC(c6decb5e) SHA1(3d35cef348deb16a62a066acdfbabebcf11fa997) ) ROM_LOAD("17.ic41", 0x000000, 0x20000, CRC(5a6efdcc) SHA1(04120dd4da0ff8df514f98a44d7eee7100e4c033) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD("3.ic127", 0x000000, 0x20000, CRC(16b79788) SHA1(6b796119d3c57229ba3d613ce8832c94e9616f76) ) ROM_END @@ -1779,7 +2208,7 @@ ROM_START( pkladiesbl2 ) // same as the above but without the z80 block, only 1. ROM_LOAD( "2.ic126", 0x60000, 0x10000, CRC(5c73e9b6) SHA1(5fbfb4c79e2df8e1edd3f29ac63f9961dd3724b1) ) ROM_CONTINUE(0x10000,0x10000) - ROM_REGION( 0x240000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x240000, "chars", ROMREGION_INVERT ) ROM_LOAD32_BYTE("20.ic97", 0x000000, 0x20000, CRC(ea72f6b5) SHA1(f38e4c8c9acec754f34b3ac442c96919c321a277) ) ROM_LOAD32_BYTE("14.ic96", 0x000001, 0x20000, CRC(d6fe4f36) SHA1(aa6250d4291ca67165898cec57b96ec830b89d8f) ) ROM_LOAD32_BYTE("10.ic95", 0x000002, 0x20000, CRC(a2eff7a9) SHA1(290930ff93b20409cb99cbf12a7de493dce7baa2) ) @@ -1797,11 +2226,11 @@ ROM_START( pkladiesbl2 ) // same as the above but without the z80 block, only 1. ROM_LOAD32_BYTE("9.ic108", 0x180002, 0x20000, CRC(edf4c0f4) SHA1(e1689bfaa1547fe8da5635808833cfe91b9d98bc) ) ROM_LOAD32_BYTE("5.ic109", 0x180003, 0x20000, CRC(93422182) SHA1(72847f073ffaffb7ed34a0972598a3df929c25a3) ) - ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) + ROM_REGION( 0x040000, "sprites", ROMREGION_INVERT ) ROM_LOAD("16.ic42", 0x020000, 0x20000, CRC(c6decb5e) SHA1(3d35cef348deb16a62a066acdfbabebcf11fa997) ) ROM_LOAD("17.ic41", 0x000000, 0x20000, CRC(5a6efdcc) SHA1(04120dd4da0ff8df514f98a44d7eee7100e4c033) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD("3.ic127", 0x000000, 0x20000, CRC(16b79788) SHA1(6b796119d3c57229ba3d613ce8832c94e9616f76) ) ROM_END @@ -1811,19 +2240,19 @@ ROM_START( dokaben ) ROM_LOAD( "db_07.13h", 0x10000, 0x20000, CRC(8bdcf49e) SHA1(7d845ae2e640ec7d8d642e3aeef741d9f7b0a57c) ) ROM_LOAD( "db_08.14h", 0x30000, 0x20000, CRC(1643bdd9) SHA1(5805e749713dbffacbb1238b1b4d42e8473d3656) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "db_02.1e", 0x000000, 0x20000, CRC(9aa8470c) SHA1(8acbed381d6140e70045da232dee9b4b165953f9) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "db_02.1e", 0x000000, 0x20000, CRC(9aa8470c) SHA1(8acbed381d6140e70045da232dee9b4b165953f9) ) ROM_LOAD( "db_03.2e", 0x020000, 0x20000, CRC(3324e43d) SHA1(ed273d4de56e382e24ab0f0a8bcd5e30a05a1c6d) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "db_04.1g", 0x080000, 0x20000, CRC(c0c5b6c2) SHA1(5d66d8b2a62ccab9574e04a867df9bbb8c0d15aa) ) ROM_LOAD( "db_05.2g", 0x0a0000, 0x20000, CRC(d2ab25f2) SHA1(96eea06d1645e0aade4c1b3153c55e2b61fd52c7) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "db_10.2k", 0x000000, 0x20000, CRC(9e70f7ae) SHA1(ff3833a52d3d198f14e915ce52f7449cf04a0cca) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "db_10.2k", 0x000000, 0x20000, CRC(9e70f7ae) SHA1(ff3833a52d3d198f14e915ce52f7449cf04a0cca) ) ROM_LOAD( "db_09.1k", 0x020000, 0x20000, CRC(2d9263f7) SHA1(fe2811ae47b9a250ea1485a91c2c3be742d90622) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "db_01.1d", 0x00000, 0x20000, CRC(62fa6b81) SHA1(0168b40df583f11cb28718aa8ab8be7cc08bf561) ) ROM_END @@ -1833,19 +2262,19 @@ ROM_START( dokaben2 ) ROM_LOAD( "d2_07.13h", 0x10000, 0x20000, CRC(43076e32) SHA1(fca84da82d427b3dca28ed2ec1e811eeddcee666) ) ROM_LOAD( "d2_08.14h", 0x30000, 0x20000, CRC(cb9deb7a) SHA1(a3e359e991a64190e25cf1c589c82008af2cb9b5) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "d2_02.1e", 0x000000, 0x20000, CRC(5dd7b941) SHA1(b0e93e733b9bbabe68896c92af34b90daf8dcd7c) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "d2_02.1e", 0x000000, 0x20000, CRC(5dd7b941) SHA1(b0e93e733b9bbabe68896c92af34b90daf8dcd7c) ) ROM_LOAD( "d2_03.2e", 0x020000, 0x20000, CRC(b615e696) SHA1(f1ec11202fce23af4af15682b158795f7ff4234f) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "d2_04.1g", 0x080000, 0x20000, CRC(56b35605) SHA1(c065b03b5cb00ac75b8b439a4f35d9b04a886626) ) ROM_LOAD( "d2_05.2g", 0x0a0000, 0x20000, CRC(ce98ff74) SHA1(ddae2e035369886ab03074e947405ef916cc425a) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "d2_10.2k", 0x000000, 0x20000, CRC(9b9bfb5f) SHA1(5969861e1fe900a3076785c7d1e304c10aa56435) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "d2_10.2k", 0x000000, 0x20000, CRC(9b9bfb5f) SHA1(5969861e1fe900a3076785c7d1e304c10aa56435) ) ROM_LOAD( "d2_09.1k", 0x020000, 0x20000, CRC(84de2e1d) SHA1(692304332b37ca3b26dc96bcad797ee81ab8b819) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "db_01.1d", 0x00000, 0x20000, CRC(62fa6b81) SHA1(0168b40df583f11cb28718aa8ab8be7cc08bf561) ) ROM_END @@ -1854,19 +2283,19 @@ ROM_START( pang ) ROM_LOAD( "pwe_06.11h", 0x00000, 0x08000, CRC(68be52cd) SHA1(67b9ac15f4cbd3959c417f979beae36ae17334c1) ) ROM_LOAD( "pwe_07.13h", 0x10000, 0x20000, CRC(4a2e70f6) SHA1(039db1b51374e5637b5c2ba8e18ccd08816613a7) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "pwe_02.1e", 0x000000, 0x20000, CRC(3a5883f5) SHA1(a8a33071e10f5992e80afdb782c334829f9ae27f) ) /* chars */ - ROM_LOAD( "pw_03.2e", 0x020000, 0x20000, CRC(79a8ed08) SHA1(c1e43889e29b80c7fe2c09b11eecde24450a1ff5) ) /* also found as PWJ 03 */ - /* 40000-7ffff empty */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "pwe_02.1e", 0x000000, 0x20000, CRC(3a5883f5) SHA1(a8a33071e10f5992e80afdb782c334829f9ae27f) ) + ROM_LOAD( "pw_03.2e", 0x020000, 0x20000, CRC(79a8ed08) SHA1(c1e43889e29b80c7fe2c09b11eecde24450a1ff5) ) // also found as PWJ 03 + // 40000-7ffff empty ROM_LOAD( "pwe_04.1g", 0x080000, 0x20000, CRC(166a16ae) SHA1(7f907c78b7ac8c99e3d79761a6ae689c77e3a1f5) ) - ROM_LOAD( "pw_05.2g", 0x0a0000, 0x20000, CRC(2fb3db6c) SHA1(328814d28569fec763975a8ae4c2767517a680af) ) /* also found as PWJ 05 */ - /* c0000-fffff empty */ + ROM_LOAD( "pw_05.2g", 0x0a0000, 0x20000, CRC(2fb3db6c) SHA1(328814d28569fec763975a8ae4c2767517a680af) ) // also found as PWJ 05 + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "pw_10.2k", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "pw_10.2k", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) ROM_LOAD( "pw_9.1k", 0x020000, 0x20000, CRC(39f47a63) SHA1(05675ad45909a7d723acaf4d53b4e588d4e048b9) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "pw_01.1d", 0x00000, 0x20000, CRC(c52e5b8e) SHA1(933b954bfdd2d67e28b032ffabde192531249c1f) ) ROM_END @@ -1875,19 +2304,19 @@ ROM_START( bbros ) ROM_LOAD( "pwu_06.11h", 0x00000, 0x08000, CRC(a3041ca4) SHA1(2accb2151f621e4802211efe986969ebd3acb6d4) ) ROM_LOAD( "pwu_07.13h", 0x10000, 0x20000, CRC(09231c68) SHA1(9e735487a99a5eb89a6abb81d5d9a20414ad75bf) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "pwu_02.1e", 0x000000, 0x20000, CRC(62f29992) SHA1(af4d43f76228e9908fbfbf83af2f577b84cc5e1d) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "pwu_02.1e", 0x000000, 0x20000, CRC(62f29992) SHA1(af4d43f76228e9908fbfbf83af2f577b84cc5e1d) ) ROM_LOAD( "pw_03.2e", 0x020000, 0x20000, CRC(79a8ed08) SHA1(c1e43889e29b80c7fe2c09b11eecde24450a1ff5) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "pwu_04.1g", 0x080000, 0x20000, CRC(f705aa89) SHA1(cce2d90f7b767044e84bc22a16474a2f6496292e) ) ROM_LOAD( "pw_05.2g", 0x0a0000, 0x20000, CRC(2fb3db6c) SHA1(328814d28569fec763975a8ae4c2767517a680af) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "pw_10.2k", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "pw_10.2k", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) ROM_LOAD( "pw_9.1k", 0x020000, 0x20000, CRC(39f47a63) SHA1(05675ad45909a7d723acaf4d53b4e588d4e048b9) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "pw_01.1d", 0x00000, 0x20000, CRC(c52e5b8e) SHA1(933b954bfdd2d67e28b032ffabde192531249c1f) ) ROM_END @@ -1896,65 +2325,65 @@ ROM_START( pompingw ) ROM_LOAD( "pwj_06.11h", 0x00000, 0x08000, CRC(4a0a6426) SHA1(c61346c5f80507bdf543e9ea32ee3f814be8e27f) ) ROM_LOAD( "pwj_07.13h", 0x10000, 0x20000, CRC(a9402420) SHA1(2ca3aa59d561826477e3509fcaeeec753d64d419) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "pw_02.1e", 0x000000, 0x20000, CRC(4b5992e4) SHA1(2071a1fcfc739d7ca837c03133909101b462d5a6) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "pw_02.1e", 0x000000, 0x20000, CRC(4b5992e4) SHA1(2071a1fcfc739d7ca837c03133909101b462d5a6) ) ROM_LOAD( "pw_03.2e", 0x020000, 0x20000, CRC(79a8ed08) SHA1(c1e43889e29b80c7fe2c09b11eecde24450a1ff5) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "pwj_04.1g", 0x080000, 0x20000, CRC(01e49081) SHA1(a29ffec199f196a2b3731e4863e863bdd04e2c58) ) ROM_LOAD( "pw_05.2g", 0x0a0000, 0x20000, CRC(2fb3db6c) SHA1(328814d28569fec763975a8ae4c2767517a680af) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "pw_10.2k", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "pw_10.2k", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) ROM_LOAD( "pw_9.1k", 0x020000, 0x20000, CRC(39f47a63) SHA1(05675ad45909a7d723acaf4d53b4e588d4e048b9) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "pw_01.1d", 0x00000, 0x20000, CRC(c52e5b8e) SHA1(933b954bfdd2d67e28b032ffabde192531249c1f) ) ROM_END ROM_START( pangb ) ROM_REGION( 2*0x50000, "maincpu", 0 ) - ROM_LOAD( "pang_04.bin", 0x50000, 0x08000, CRC(f68f88a5) SHA1(6f57891d399a46d8d5a531771129552ed420d10a) ) /* Decrypted opcode + data */ + ROM_LOAD( "pang_04.bin", 0x50000, 0x08000, CRC(f68f88a5) SHA1(6f57891d399a46d8d5a531771129552ed420d10a) ) // Decrypted opcode + data ROM_CONTINUE( 0x00000, 0x08000 ) - ROM_LOAD( "pang_02.bin", 0x60000, 0x20000, CRC(3f15bb61) SHA1(4f74ee25f32a201482840158b4d4c7aca1cda684) ) /* Decrypted op codes */ - ROM_LOAD( "pang_03.bin", 0x10000, 0x20000, CRC(0c8477ae) SHA1(a31a8c00407dfc3017d56e29fac6114b73248030) ) /* Decrypted data */ + ROM_LOAD( "pang_02.bin", 0x60000, 0x20000, CRC(3f15bb61) SHA1(4f74ee25f32a201482840158b4d4c7aca1cda684) ) // Decrypted op codes + ROM_LOAD( "pang_03.bin", 0x10000, 0x20000, CRC(0c8477ae) SHA1(a31a8c00407dfc3017d56e29fac6114b73248030) ) // Decrypted data - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "pang_9.bin", 0x000000, 0x20000, CRC(3a5883f5) SHA1(a8a33071e10f5992e80afdb782c334829f9ae27f) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "pang_9.bin", 0x000000, 0x20000, CRC(3a5883f5) SHA1(a8a33071e10f5992e80afdb782c334829f9ae27f) ) ROM_LOAD( "bb3.bin", 0x020000, 0x20000, CRC(79a8ed08) SHA1(c1e43889e29b80c7fe2c09b11eecde24450a1ff5) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "bb11.bin", 0x080000, 0x20000, CRC(166a16ae) SHA1(7f907c78b7ac8c99e3d79761a6ae689c77e3a1f5) ) ROM_LOAD( "bb5.bin", 0x0a0000, 0x20000, CRC(2fb3db6c) SHA1(328814d28569fec763975a8ae4c2767517a680af) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "bb10.bin", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "bb10.bin", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) ROM_LOAD( "bb9.bin", 0x020000, 0x20000, CRC(39f47a63) SHA1(05675ad45909a7d723acaf4d53b4e588d4e048b9) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "bb1.bin", 0x00000, 0x20000, CRC(c52e5b8e) SHA1(933b954bfdd2d67e28b032ffabde192531249c1f) ) ROM_END ROM_START( pangb2 ) ROM_REGION( 2*0x50000, "maincpu", 0 ) - ROM_LOAD( "27c512.11h", 0x50000, 0x08000, CRC(369a453e) SHA1(14acd8c2c2229a9af2aafda8e78f8f05d768b54a) ) /* Decrypted opcode + data */ + ROM_LOAD( "27c512.11h", 0x50000, 0x08000, CRC(369a453e) SHA1(14acd8c2c2229a9af2aafda8e78f8f05d768b54a) ) // Decrypted opcode + data ROM_CONTINUE( 0x00000, 0x08000 ) - ROM_LOAD( "27c020.13h", 0x60000, 0x20000, CRC(5e7f24b1) SHA1(99d7365b6d9cc0afb8484c16536d33dc50f04676) ) /* Decrypted op codes */ - ROM_CONTINUE( 0x10000, 0x20000 ) /* Decrypted data */ + ROM_LOAD( "27c020.13h", 0x60000, 0x20000, CRC(5e7f24b1) SHA1(99d7365b6d9cc0afb8484c16536d33dc50f04676) ) // Decrypted op codes + ROM_CONTINUE( 0x10000, 0x20000 ) // Decrypted data - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "pang_9.bin", 0x000000, 0x20000, CRC(3a5883f5) SHA1(a8a33071e10f5992e80afdb782c334829f9ae27f) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "pang_9.bin", 0x000000, 0x20000, CRC(3a5883f5) SHA1(a8a33071e10f5992e80afdb782c334829f9ae27f) ) ROM_LOAD( "bb3.bin", 0x020000, 0x20000, CRC(79a8ed08) SHA1(c1e43889e29b80c7fe2c09b11eecde24450a1ff5) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "bb11.bin", 0x080000, 0x20000, CRC(166a16ae) SHA1(7f907c78b7ac8c99e3d79761a6ae689c77e3a1f5) ) ROM_LOAD( "bb5.bin", 0x0a0000, 0x20000, CRC(2fb3db6c) SHA1(328814d28569fec763975a8ae4c2767517a680af) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "bb10.bin", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "bb10.bin", 0x000000, 0x20000, CRC(fdba4f6e) SHA1(9a2412a97682bbd25b8942520a0c02616bd59353) ) ROM_LOAD( "bb9.bin", 0x020000, 0x20000, CRC(39f47a63) SHA1(05675ad45909a7d723acaf4d53b4e588d4e048b9) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "bb1.bin", 0x00000, 0x20000, CRC(c52e5b8e) SHA1(933b954bfdd2d67e28b032ffabde192531249c1f) ) ROM_END @@ -1963,26 +2392,26 @@ ROM_END so it's worth supporting anyway. */ ROM_START( pangbold ) ROM_REGION( 2*0x50000, "maincpu", 0 ) - ROM_LOAD( "4.6l", 0x50000, 0x08000, CRC(f68f88a5) SHA1(6f57891d399a46d8d5a531771129552ed420d10a) ) /* Decrypted opcode + data */ + ROM_LOAD( "4.6l", 0x50000, 0x08000, CRC(f68f88a5) SHA1(6f57891d399a46d8d5a531771129552ed420d10a) ) // Decrypted opcode + data ROM_CONTINUE( 0x00000, 0x08000 ) - ROM_LOAD( "2.3l", 0x60000, 0x20000, CRC(3f15bb61) SHA1(4f74ee25f32a201482840158b4d4c7aca1cda684) ) /* Decrypted op codes */ - ROM_LOAD( "3.5l", 0x10000, 0x20000, CRC(ce6375e4) SHA1(fdd40d82553fcd4d2762ecfd898d0e3112dfde79) ) /* Decrypted data */ + ROM_LOAD( "2.3l", 0x60000, 0x20000, CRC(3f15bb61) SHA1(4f74ee25f32a201482840158b4d4c7aca1cda684) ) // Decrypted op codes + ROM_LOAD( "3.5l", 0x10000, 0x20000, CRC(ce6375e4) SHA1(fdd40d82553fcd4d2762ecfd898d0e3112dfde79) ) // Decrypted data - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) ROM_LOAD( "9.10o", 0x000000, 0x20000, CRC(3a5883f5) SHA1(a8a33071e10f5992e80afdb782c334829f9ae27f) ) ROM_LOAD( "10.14o", 0x020000, 0x20000, CRC(79a8ed08) SHA1(c1e43889e29b80c7fe2c09b11eecde24450a1ff5) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "11.17j", 0x080000, 0x20000, CRC(166a16ae) SHA1(7f907c78b7ac8c99e3d79761a6ae689c77e3a1f5) ) ROM_LOAD( "12.20j", 0x0a0000, 0x20000, CRC(2fb3db6c) SHA1(328814d28569fec763975a8ae4c2767517a680af) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) ROM_LOAD( "8.7o", 0x000000, 0x10000, CRC(f3188aa1) SHA1(f59da8986c0c7d74185211eae1d1cc3f59a54f82) ) ROM_LOAD( "7.5o", 0x010000, 0x10000, CRC(011da14b) SHA1(3af9c5ca263b3df98b4f4c88d5428a115ddebef8) ) ROM_LOAD( "6.3o", 0x020000, 0x10000, CRC(0e25e797) SHA1(88c99e544923142256c93ed2b71f06489f6a90a8) ) ROM_LOAD( "5.1o", 0x030000, 0x10000, CRC(6daa4e27) SHA1(23411928de911b6303efa3a229646001459e4c70) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "1.1a", 0x00000, 0x10000, CRC(b6463907) SHA1(b79e0dca10c639b7f0ea9cbc49300b80708d46fa) ) ROM_END @@ -1994,24 +2423,24 @@ ROM_START( pangbp ) ROM_LOAD( "pangbp_2.3l", 0x60000, 0x20000, CRC(3f15bb61) SHA1(4f74ee25f32a201482840158b4d4c7aca1cda684) ) // Decrypted opcodes ROM_LOAD( "pangbp_3.5l", 0x10000, 0x20000, CRC(ce6375e4) SHA1(fdd40d82553fcd4d2762ecfd898d0e3112dfde79) ) // Decrypted data - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) // Chars + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) ROM_LOAD( "pangbp_9.10o", 0x000000, 0x20000, CRC(3a5883f5) SHA1(a8a33071e10f5992e80afdb782c334829f9ae27f) ) ROM_LOAD( "pangbp_10.14o", 0x020000, 0x20000, CRC(79a8ed08) SHA1(c1e43889e29b80c7fe2c09b11eecde24450a1ff5) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "pangbp_11.17j", 0x080000, 0x20000, CRC(166a16ae) SHA1(7f907c78b7ac8c99e3d79761a6ae689c77e3a1f5) ) ROM_LOAD( "pangbp_12.20j", 0x0a0000, 0x20000, CRC(2fb3db6c) SHA1(328814d28569fec763975a8ae4c2767517a680af) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) // Sprites + ROM_REGION( 0x040000, "sprites", 0 ) ROM_LOAD( "pangbp_8.7o", 0x000000, 0x10000, CRC(f3188aa1) SHA1(f59da8986c0c7d74185211eae1d1cc3f59a54f82) ) ROM_LOAD( "pangbp_7.5o", 0x010000, 0x10000, CRC(011da14b) SHA1(3af9c5ca263b3df98b4f4c88d5428a115ddebef8) ) ROM_LOAD( "pangbp_6.3o", 0x020000, 0x10000, CRC(0e25e797) SHA1(88c99e544923142256c93ed2b71f06489f6a90a8) ) ROM_LOAD( "pangbp_5.1o", 0x030000, 0x10000, CRC(6daa4e27) SHA1(23411928de911b6303efa3a229646001459e4c70) ) - ROM_REGION( 0x80000, "oki", 0 ) // OKIM + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "pangbp_1.1a", 0x00000, 0x10000, CRC(b6463907) SHA1(b79e0dca10c639b7f0ea9cbc49300b80708d46fa) ) - ROM_REGION( 0x004b2, "plds", 0) // PLDs, all protected + ROM_REGION( 0x004b2, "plds", 0) // all protected ROM_LOAD( "pangbp_p_1-peel18cv8.i1", 0x0000, 0x0155, NO_DUMP ) ROM_LOAD( "pangbp_p_2-peel18cv8.g20", 0x0155, 0x0155, NO_DUMP ) ROM_LOAD( "pangbp_p_3-pal16r4acn.b21", 0x02aa, 0x0104, NO_DUMP ) @@ -2037,10 +2466,10 @@ ROM_START( pangba ) ROM_CONTINUE( 0x74000, 0x04000 ) ROM_CONTINUE( 0x24000, 0x04000 ) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Sound Z80 + M5205(?) samples */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Sound Z80 + M5205(?) samples ROM_LOAD( "pang.4", 0x00000, 0x10000, CRC(88a7b1f8) SHA1(b34fa26dbc613bf3b525d19df90fa3ba4efb6e5d) ) // this is the same as the microhard game 'rebus' ... - ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT | ROMREGION_ERASEFF ) + ROM_REGION( 0x100000, "chars", ROMREGION_INVERT | ROMREGION_ERASEFF ) ROM_LOAD16_BYTE( "pang.14", 0x000001, 0x10000, CRC(c90095ee) SHA1(bf380f289eb42030a9f911aa5f697ba76f5723db) ) ROM_LOAD16_BYTE( "pang.6", 0x000000, 0x10000, CRC(c0133cf3) SHA1(07916f7ce6bbaea75b68f5d1d2cb4486825fc397) ) ROM_LOAD16_BYTE( "pang.13", 0x020001, 0x10000, CRC(a49e98ec) SHA1(8a3d13bd755b58b0bc1d1497363409a1eeade129) ) @@ -2051,7 +2480,7 @@ ROM_START( pangba ) ROM_LOAD16_BYTE( "pang.15", 0x0a0001, 0x10000, CRC(bf5c09b9) SHA1(f66a901292b190aa39dc2460363307e94c358d4d) ) ROM_LOAD16_BYTE( "pang.7", 0x0a0000, 0x10000, CRC(8b718670) SHA1(c22005a665a9e0bcfc3ddbc22ca4a2a261224ce1) ) - ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) + ROM_REGION( 0x040000, "sprites", ROMREGION_INVERT ) ROM_LOAD( "pang.11", 0x020000, 0x10000, CRC(07191732) SHA1(7de03ddb07b2afad311b9ed5c84e04bef62d0050) ) ROM_LOAD( "pang.9", 0x030000, 0x10000, CRC(6496be82) SHA1(9c7ef4c6c3a0361f3118339a0c63b0923045d6c3) ) ROM_LOAD( "pang.12", 0x000000, 0x10000, CRC(fa247a04) SHA1(b5cab5f65eb3af3deeea6afba955056ca51f39af) ) @@ -2075,10 +2504,10 @@ ROM_START( pangbb ) // Same bootleg hardware as pangba, but with original YM2413 ROM_CONTINUE( 0x74000, 0x04000 ) ROM_CONTINUE( 0x24000, 0x04000 ) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Sound Z80 + M5205(?) samples */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Sound Z80 + M5205(?) samples ROM_LOAD( "24", 0x00000, 0x10000, CRC(09c43210) SHA1(79b5aed2c5d6d9110129885e8979c1f13b7b8aac) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT | ROMREGION_ERASEFF ) + ROM_REGION( 0x100000, "chars", ROMREGION_INVERT | ROMREGION_ERASEFF ) ROM_LOAD16_BYTE( "14", 0x000001, 0x10000, CRC(c90095ee) SHA1(bf380f289eb42030a9f911aa5f697ba76f5723db) ) ROM_LOAD16_BYTE( "6", 0x000000, 0x10000, CRC(c0133cf3) SHA1(07916f7ce6bbaea75b68f5d1d2cb4486825fc397) ) ROM_LOAD16_BYTE( "13", 0x020001, 0x10000, CRC(a49e98ec) SHA1(8a3d13bd755b58b0bc1d1497363409a1eeade129) ) @@ -2089,7 +2518,7 @@ ROM_START( pangbb ) // Same bootleg hardware as pangba, but with original YM2413 ROM_LOAD16_BYTE( "15", 0x0a0001, 0x10000, CRC(bf5c09b9) SHA1(f66a901292b190aa39dc2460363307e94c358d4d) ) ROM_LOAD16_BYTE( "7", 0x0a0000, 0x10000, CRC(8b718670) SHA1(c22005a665a9e0bcfc3ddbc22ca4a2a261224ce1) ) - ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) + ROM_REGION( 0x040000, "sprites", ROMREGION_INVERT ) ROM_LOAD( "11", 0x020000, 0x10000, CRC(07191732) SHA1(7de03ddb07b2afad311b9ed5c84e04bef62d0050) ) ROM_LOAD( "9", 0x030000, 0x10000, CRC(6496be82) SHA1(9c7ef4c6c3a0361f3118339a0c63b0923045d6c3) ) ROM_LOAD( "12", 0x000000, 0x10000, CRC(fa247a04) SHA1(b5cab5f65eb3af3deeea6afba955056ca51f39af) ) @@ -2117,7 +2546,7 @@ ROM_START( pangbc ) ROM_REGION( 0x20000, "audiocpu", 0 ) // Sound Z80 + M5205 samples ROM_LOAD( "27c512-2.bin", 0x00000, 0x10000, CRC(09c43210) SHA1(79b5aed2c5d6d9110129885e8979c1f13b7b8aac) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT | ROMREGION_ERASEFF ) + ROM_REGION( 0x100000, "chars", ROMREGION_INVERT | ROMREGION_ERASEFF ) ROM_LOAD16_BYTE( "pang.14", 0x000001, 0x10000, CRC(c90095ee) SHA1(bf380f289eb42030a9f911aa5f697ba76f5723db) ) ROM_LOAD16_BYTE( "7.bin", 0x000000, 0x10000, CRC(0725d6ad) SHA1(de2efab47b4958d24c065ce52dcf4fab3c8d4274) ) ROM_LOAD16_BYTE( "pang.13", 0x020001, 0x10000, CRC(a49e98ec) SHA1(8a3d13bd755b58b0bc1d1497363409a1eeade129) ) @@ -2128,7 +2557,7 @@ ROM_START( pangbc ) ROM_LOAD16_BYTE( "pang.15", 0x0a0001, 0x10000, CRC(bf5c09b9) SHA1(f66a901292b190aa39dc2460363307e94c358d4d) ) ROM_LOAD16_BYTE( "pang.7", 0x0a0000, 0x10000, CRC(8b718670) SHA1(c22005a665a9e0bcfc3ddbc22ca4a2a261224ce1) ) - ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) + ROM_REGION( 0x040000, "sprites", ROMREGION_INVERT ) ROM_LOAD( "pang.11", 0x020000, 0x10000, CRC(07191732) SHA1(7de03ddb07b2afad311b9ed5c84e04bef62d0050) ) ROM_LOAD( "pang.9", 0x030000, 0x10000, CRC(6496be82) SHA1(9c7ef4c6c3a0361f3118339a0c63b0923045d6c3) ) ROM_LOAD( "pang.12", 0x000000, 0x10000, CRC(fa247a04) SHA1(b5cab5f65eb3af3deeea6afba955056ca51f39af) ) @@ -2141,8 +2570,8 @@ ROM_START( cworld ) ROM_LOAD( "cw06.bin", 0x10000, 0x20000, CRC(d71ed4a3) SHA1(5b6d498810e6fc8041f4326087f3be56863e91d9) ) ROM_LOAD( "cw07.bin", 0x30000, 0x20000, CRC(d419ce08) SHA1(f0a8265e839f6bdab2926f48aba88b6f9aaa3b29) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "cw08.bin", 0x000000, 0x20000, CRC(6c80da3c) SHA1(3ed8bc025703d6eccc88af0caeeb8e75a88ba5db) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "cw08.bin", 0x000000, 0x20000, CRC(6c80da3c) SHA1(3ed8bc025703d6eccc88af0caeeb8e75a88ba5db) ) ROM_LOAD( "cw09.bin", 0x020000, 0x20000, CRC(7607da71) SHA1(4486550aa96bf5be0294763a9585fafda3216b27) ) ROM_LOAD( "cw10.bin", 0x040000, 0x20000, CRC(6f0e639f) SHA1(473804068479516694a864982e2a734f63cb1cce) ) ROM_LOAD( "cw11.bin", 0x060000, 0x20000, CRC(130bd7c0) SHA1(fde2c358367577b7c51648610b978649424d7637) ) @@ -2151,11 +2580,11 @@ ROM_START( cworld ) ROM_LOAD( "cw20.bin", 0x0c0000, 0x20000, CRC(58381d58) SHA1(aef01f628ad9f2280662610c58e5819611e3435a) ) ROM_LOAD( "cw21.bin", 0x0e0000, 0x20000, CRC(910cc753) SHA1(971fe794511b336b188d3e2e6b5cda71ae16257f) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "cw16.bin", 0x000000, 0x20000, CRC(f90217d1) SHA1(1dbfeb0fd44928d9428a3798fe6d6862164fdf52) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "cw16.bin", 0x000000, 0x20000, CRC(f90217d1) SHA1(1dbfeb0fd44928d9428a3798fe6d6862164fdf52) ) ROM_LOAD( "cw17.bin", 0x020000, 0x20000, CRC(c953c702) SHA1(21d497dbb9ccccce3c440e6f0ba84c1e519d7fed) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "cw01.bin", 0x00000, 0x20000, CRC(f4368f5b) SHA1(7a8657dd4c5f3b60f5137af3c644793c479562a8) ) ROM_END @@ -2165,8 +2594,8 @@ ROM_START( hatena ) ROM_LOAD( "q2-06.rom", 0x10000, 0x20000, CRC(5fc39916) SHA1(84ead43d8bad3f9c88fcb02171500298613646dc) ) ROM_LOAD( "q2-07.rom", 0x30000, 0x20000, CRC(ec6d5e5e) SHA1(6269f5a5a3af91193afe85d34a764499877c2a24) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "q2-08.rom", 0x000000, 0x20000, CRC(6c80da3c) SHA1(3ed8bc025703d6eccc88af0caeeb8e75a88ba5db) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "q2-08.rom", 0x000000, 0x20000, CRC(6c80da3c) SHA1(3ed8bc025703d6eccc88af0caeeb8e75a88ba5db) ) ROM_LOAD( "q2-09.rom", 0x020000, 0x20000, CRC(abe3e15c) SHA1(5af589e58b317758d1162913f6c104c8459546c0) ) ROM_LOAD( "q2-10.rom", 0x040000, 0x20000, CRC(6963450d) SHA1(8fff6e9653b10194940b7a7a10f57995aafdd37c) ) ROM_LOAD( "q2-11.rom", 0x060000, 0x20000, CRC(1e319fa2) SHA1(6064491d19cf9dd320535eb1807f4e5bf3e756ab) ) @@ -2175,11 +2604,11 @@ ROM_START( hatena ) ROM_LOAD( "q2-20.rom", 0x0c0000, 0x20000, CRC(21a6ff42) SHA1(d3ae3a5b898fa5202516e0f23e84255fb2164b52) ) ROM_LOAD( "q2-21.rom", 0x0e0000, 0x20000, CRC(076280c9) SHA1(bdccbd8b169f7e19b955e0ede8bbe03d4009e354) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "q2-16.rom", 0x000000, 0x20000, CRC(ec19b2f0) SHA1(52d0a0b6e583103e0c8b73ecd27b03522accb3cb) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "q2-16.rom", 0x000000, 0x20000, CRC(ec19b2f0) SHA1(52d0a0b6e583103e0c8b73ecd27b03522accb3cb) ) ROM_LOAD( "q2-17.rom", 0x020000, 0x20000, CRC(ecd69d92) SHA1(a3ac417bc93f9cb126bd0896f4d85b1bef1dc681) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "q2-01.rom", 0x00000, 0x20000, CRC(149e7a89) SHA1(103ab075b92c895e9991e7ef23df2b38d6a792c6) ) ROM_END @@ -2189,19 +2618,19 @@ ROM_START( spang ) ROM_LOAD( "spe_07.13h", 0x10000, 0x20000, CRC(208b5f54) SHA1(9d44f7240b56756dcb69d110036b1cb13b1bbc02) ) ROM_LOAD( "spe_08.14h", 0x30000, 0x20000, CRC(2bc03ade) SHA1(3a8ee342b0556a8f6d5a417c98e5c3c43422713d) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "spe_02.1e", 0x000000, 0x20000, CRC(63c9dfd2) SHA1(ddc8ddee336855e857fb3124c8b64af33c2d0080) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "spe_02.1e", 0x000000, 0x20000, CRC(63c9dfd2) SHA1(ddc8ddee336855e857fb3124c8b64af33c2d0080) ) ROM_LOAD( "spj_03.3e", 0x020000, 0x20000, CRC(3ae28bc1) SHA1(4f6d9a86f624598ebc0825b50941adfb7436e98a) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "spe_04.1g", 0x080000, 0x20000, CRC(9d7b225b) SHA1(d949c91da6ba6b82df0b3445499761a98c7e2703) ) ROM_LOAD( "spj_05.2g", 0x0a0000, 0x20000, CRC(4a060884) SHA1(f83d713aee4230fc04a1d5f1d4d79c64a5bf2753) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "spj_10.2k", 0x000000, 0x20000, CRC(eedd0ade) SHA1(f2da2eb743c68c5c9a56a94709527110cef5d91d) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "spj_10.2k", 0x000000, 0x20000, CRC(eedd0ade) SHA1(f2da2eb743c68c5c9a56a94709527110cef5d91d) ) ROM_LOAD( "spj_09.1k", 0x020000, 0x20000, CRC(04b41b75) SHA1(946ed04a17f1f71085143d43905aa310ce1e05f4) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "spe_01.1d", 0x00000, 0x20000, CRC(2d19c133) SHA1(b3ec226f35494dfc259e910895cec8a49dd2f846) ) ROM_REGION16_BE( 0x80, "eeprom", 0 ) @@ -2214,19 +2643,19 @@ ROM_START( sbbros ) ROM_LOAD( "spu_07.13h", 0x10000, 0x20000, CRC(f46b698d) SHA1(6a1867f591aa0fb9e02dd472699df93f9d018793) ) ROM_LOAD( "spu_08.14h", 0x30000, 0x20000, CRC(a75e7fbe) SHA1(0331d1a3e888678909f3e6d21f97896a5350e585) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "spu_02.1e", 0x000000, 0x20000, CRC(0c22ffc6) SHA1(f95b50617ef5cd8cffffacab0b96b4bfe8dd3a1e) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "spu_02.1e", 0x000000, 0x20000, CRC(0c22ffc6) SHA1(f95b50617ef5cd8cffffacab0b96b4bfe8dd3a1e) ) ROM_LOAD( "spj_03.3e", 0x020000, 0x20000, CRC(3ae28bc1) SHA1(4f6d9a86f624598ebc0825b50941adfb7436e98a) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "spu_04.1g", 0x080000, 0x20000, CRC(bb3dee5b) SHA1(e81875b9d9a56e91daa66375b22a4fa6dcd14faa) ) ROM_LOAD( "spj_05.2g", 0x0a0000, 0x20000, CRC(4a060884) SHA1(f83d713aee4230fc04a1d5f1d4d79c64a5bf2753) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "spu_10.2k", 0x000000, 0x20000, CRC(d6675d8f) SHA1(1c65803fcce2305841e74772ae6ffb6e39edf5c6) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "spu_10.2k", 0x000000, 0x20000, CRC(d6675d8f) SHA1(1c65803fcce2305841e74772ae6ffb6e39edf5c6) ) ROM_LOAD( "spu_09.1k", 0x020000, 0x20000, CRC(8f678bc8) SHA1(66dc7c14cc012ffa9320cd63bc84977fa76ad738) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "spj_01.1d", 0x00000, 0x20000, CRC(b96ea126) SHA1(83fa71994518d40b8938520faa8701c63b7f579e) ) ROM_REGION16_BE( 0x80, "eeprom", 0 ) @@ -2239,19 +2668,19 @@ ROM_START( spangj ) ROM_LOAD( "spj_07.13h", 0x10000, 0x20000, CRC(14c2b765) SHA1(af0f965dd13d878bae7850cf8419b26511090579) ) ROM_LOAD( "spj_08.14h", 0x30000, 0x20000, CRC(4be4e5b7) SHA1(6273e8bf5d9f5b100ecda20001808dcf86411d83) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "spj_02.1e", 0x000000, 0x20000, CRC(419f69d7) SHA1(e3431b5ce3e687ba9a45cb6e0e0a2dfa3a9e5b29) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "spj_02.1e", 0x000000, 0x20000, CRC(419f69d7) SHA1(e3431b5ce3e687ba9a45cb6e0e0a2dfa3a9e5b29) ) ROM_LOAD( "spj_03.3e", 0x020000, 0x20000, CRC(3ae28bc1) SHA1(4f6d9a86f624598ebc0825b50941adfb7436e98a) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "spj_04.1g", 0x080000, 0x20000, CRC(6870506f) SHA1(13a12c012ea2efb0c8cd9dcfb4b5757ac08ee912) ) ROM_LOAD( "spj_05.2g", 0x0a0000, 0x20000, CRC(4a060884) SHA1(f83d713aee4230fc04a1d5f1d4d79c64a5bf2753) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "spj_10.2k", 0x000000, 0x20000, CRC(eedd0ade) SHA1(f2da2eb743c68c5c9a56a94709527110cef5d91d) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "spj_10.2k", 0x000000, 0x20000, CRC(eedd0ade) SHA1(f2da2eb743c68c5c9a56a94709527110cef5d91d) ) ROM_LOAD( "spj_09.1k", 0x020000, 0x20000, CRC(04b41b75) SHA1(946ed04a17f1f71085143d43905aa310ce1e05f4) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "spj_01.1d", 0x00000, 0x20000, CRC(b96ea126) SHA1(83fa71994518d40b8938520faa8701c63b7f579e) ) ROM_REGION16_BE( 0x80, "eeprom", 0 ) @@ -2299,11 +2728,11 @@ ROM_START( spangbl ) ROM_CONTINUE(0x44000,0x4000) ROM_CONTINUE(0x4c000,0x4000) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Sound Z80 + M5205 samples */ + ROM_REGION( 0x20000, "audiocpu", 0 ) // Sound Z80 + M5205 samples ROM_LOAD( "ic28.4", 0x00000, 0x10000, CRC(02b07d0a) SHA1(77cb9bf1b0d93ebad1bd8cdbedb7fdbad23697be) ) ROM_LOAD( "ic45.5", 0x10000, 0x10000, CRC(95c32824) SHA1(02de90a7bfbe89feb7708fda8dfac4ed32bc0773) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT| ROMREGION_ERASE00 ) + ROM_REGION( 0x100000, "chars", ROMREGION_INVERT| ROMREGION_ERASE00 ) ROM_LOAD16_BYTE( "ic79.11", 0x000001, 0x10000, CRC(10839ddd) SHA1(bfb56aa5d6ee1d3aa19e346264bee90d64545e51) ) ROM_LOAD16_BYTE( "ic78.7", 0x000000, 0x10000, CRC(c1d5df89) SHA1(a86e641af1b41c8f642fe3a14ebcbe6c27f80c79) ) ROM_LOAD16_BYTE( "ic49.10", 0x020001, 0x10000, CRC(113c2753) SHA1(37b480b5d9c581d3c807c81924b4bbbc21d0698d) ) @@ -2313,7 +2742,7 @@ ROM_START( spangbl ) ROM_LOAD16_BYTE( "ic51.12", 0x0a0001, 0x10000, CRC(beb49dc9) SHA1(c93f65b0f4ce0a0f400202f2998b89abad1f6942) ) ROM_LOAD16_BYTE( "ic50.8", 0x0a0000, 0x10000, CRC(3f91014c) SHA1(b3947caa0c667d871c19d7dda6536d043ad296f2) ) - ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) + ROM_REGION( 0x040000, "sprites", ROMREGION_INVERT ) ROM_LOAD( "ic94.17", 0x000000, 0x10000, CRC(a56f3c20) SHA1(cb440e0e612da8b8a50fe25a6336869b62ab4cfd) ) ROM_LOAD( "ic95.16", 0x020000, 0x10000, CRC(14df4659) SHA1(d73fab0a8c1e56a26cc15333a294e876f1552bc9) ) ROM_LOAD( "ic124.15", 0x010000, 0x10000, CRC(4702c768) SHA1(ff996f1355f32451fa57836c2255027a8108eb40) ) @@ -2350,7 +2779,7 @@ ROM_START( spangbl2 ) ROM_LOAD( "sp-20.ic28", 0x00000, 0x10000, CRC(02b07d0a) SHA1(77cb9bf1b0d93ebad1bd8cdbedb7fdbad23697be) ) // 27C512 ROM_LOAD( "sp-21.ic45", 0x10000, 0x10000, CRC(95c32824) SHA1(02de90a7bfbe89feb7708fda8dfac4ed32bc0773) ) // 27C512 - ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT| ROMREGION_ERASE00 ) + ROM_REGION( 0x100000, "chars", ROMREGION_INVERT| ROMREGION_ERASE00 ) ROM_LOAD16_BYTE( "sp-31.ic79", 0x000001, 0x10000, CRC(10839ddd) SHA1(bfb56aa5d6ee1d3aa19e346264bee90d64545e51) ) // 27C512 ROM_LOAD16_BYTE( "sp-23.ic78", 0x000000, 0x10000, CRC(c1d5df89) SHA1(a86e641af1b41c8f642fe3a14ebcbe6c27f80c79) ) // 27C512 ROM_LOAD16_BYTE( "sp-30.ic49", 0x020001, 0x10000, CRC(113c2753) SHA1(37b480b5d9c581d3c807c81924b4bbbc21d0698d) ) // 27C512 @@ -2360,7 +2789,7 @@ ROM_START( spangbl2 ) ROM_LOAD16_BYTE( "sp-32.ic51", 0x0a0001, 0x10000, CRC(beb49dc9) SHA1(c93f65b0f4ce0a0f400202f2998b89abad1f6942) ) // 27C512 ROM_LOAD16_BYTE( "sp-24.ic50", 0x0a0000, 0x10000, CRC(3f91014c) SHA1(b3947caa0c667d871c19d7dda6536d043ad296f2) ) // 27C512 - ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) + ROM_REGION( 0x040000, "sprites", ROMREGION_INVERT ) ROM_LOAD( "sp-29.ic94", 0x000000, 0x10000, CRC(a56f3c20) SHA1(cb440e0e612da8b8a50fe25a6336869b62ab4cfd) ) // 27C512 ROM_LOAD( "sp-28.ic95", 0x020000, 0x10000, CRC(14df4659) SHA1(d73fab0a8c1e56a26cc15333a294e876f1552bc9) ) // 27C512 ROM_LOAD( "sp-27.ic124", 0x010000, 0x10000, CRC(4702c768) SHA1(ff996f1355f32451fa57836c2255027a8108eb40) ) // 27C512 @@ -2381,15 +2810,15 @@ ROM_START( spangbl2 ) ROM_LOAD( "4-gal20v8.bin", 0x03ae, 0x0157, CRC(29a2653d) SHA1(38426af27d9c48e650c74fc3d9a9a612d11e413c) ) ROM_END -/* seems to be the same basic hardware, but the memory map and io map are different at least.. */ +// seems to be the same basic hardware, but the memory map and io map are different at least.. ROM_START( mstworld ) - ROM_REGION( 0x50000*2, "maincpu", 0 ) /* CPU1 code */ - ROM_LOAD( "mw-1.rom", 0x00000, 0x080000, CRC(c4e51fb4) SHA1(60ad4ff2cec3a4d13b4aa0319dfcdab941404b1a) ) /* fixed code */ + ROM_REGION( 0x50000*2, "maincpu", 0 ) + ROM_LOAD( "mw-1.rom", 0x00000, 0x080000, CRC(c4e51fb4) SHA1(60ad4ff2cec3a4d13b4aa0319dfcdab941404b1a) ) // fixed code - ROM_REGION( 0x10000, "audiocpu", 0 ) /* CPU2 code */ + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "mw-2.rom", 0x00000, 0x08000, CRC(12c4fea9) SHA1(4616f2d70022abcf89f244f3f365b39b96973368) ) - ROM_REGION( 0x080000, "user2", 0 ) /* Samples */ + ROM_REGION( 0x080000, "user2", 0 ) // Samples ROM_LOAD( "mw-3.rom", 0x00000, 0x080000, CRC(110c6a68) SHA1(915758cd467fbcdfa18ca99df036dca40dfc4649) ) /* $00000-$20000 stays the same in all sound banks, */ @@ -2404,15 +2833,56 @@ ROM_START( mstworld ) ROM_COPY( "user2", 0x000000, 0x0c0000, 0x020000) ROM_COPY( "user2", 0x060000, 0x0e0000, 0x020000) - ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT ) /* GFX */ + ROM_REGION( 0x80000, "chars", ROMREGION_INVERT ) ROM_LOAD( "mw-4.rom", 0x00000, 0x020000, CRC(28a3af15) SHA1(99547966b2b5e06e097c55bbbb86a1c2809fa98c) ) ROM_LOAD( "mw-5.rom", 0x20000, 0x020000, CRC(ffdf7e9f) SHA1(b7732837cc5606d4a868eeaaff438b1a86bd72d7) ) ROM_LOAD( "mw-6.rom", 0x40000, 0x020000, CRC(1ed773a3) SHA1(0e8517a5c9bed57ecf3bb850152b8c1e1bd3faaa) ) ROM_LOAD( "mw-7.rom", 0x60000, 0x020000, CRC(8eb7525c) SHA1(9c3fa9373803e9534c1ad7063d660abe130f7b49) ) - ROM_REGION( 0x40000, "gfx2", ROMREGION_INVERT ) /* GFX */ + ROM_REGION( 0x40000, "sprites", ROMREGION_INVERT ) ROM_LOAD( "mw-8.rom", 0x00000, 0x020000, CRC(b9b92a3c) SHA1(97191958a539c6f2eacb3956e8371acbaaa43795) ) - ROM_LOAD( "mw-9.rom", 0x20000, 0x020000, CRC(75fc3375) SHA1(b2e7551bdbe2b0f1c28f6e912a8efaa5645b2ff5)) + ROM_LOAD( "mw-9.rom", 0x20000, 0x020000, CRC(75fc3375) SHA1(b2e7551bdbe2b0f1c28f6e912a8efaa5645b2ff5) ) +ROM_END + +ROM_START( mstworld2 ) + ROM_REGION( 0x50000*2, "maincpu", 0 ) + ROM_LOAD( "3.ic2", 0x00000, 0x08000, CRC(34d4f302) SHA1(08802d4c5fb9801ef3f3e68a1c34241918d24931) ) // 0xxxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x00000, 0x08000 ) + ROM_RELOAD(0x48000, 0x10000) + ROM_LOAD( "4.ic18", 0x60000, 0x04000, CRC(31eed12e) SHA1(3194e3b73164b430ca9808a3b18e43373f46bb28) ) + ROM_CONTINUE(0x10000,0x4000) + ROM_CONTINUE(0x64000,0x4000) + ROM_CONTINUE(0x14000,0x4000) + ROM_CONTINUE(0x68000,0x4000) + ROM_CONTINUE(0x18000,0x4000) + ROM_CONTINUE(0x6c000,0x4000) + ROM_CONTINUE(0x1c000,0x4000) + ROM_CONTINUE(0x70000,0x4000) + ROM_CONTINUE(0x20000,0x4000) + ROM_CONTINUE(0x74000,0x4000) + ROM_CONTINUE(0x24000,0x4000) + ROM_CONTINUE(0x78000,0x4000) + ROM_CONTINUE(0x28000,0x4000) + ROM_CONTINUE(0x7c000,0x4000) + ROM_CONTINUE(0x2c000,0x4000) + ROM_LOAD( "5.ic19", 0x40000, 0x04000, CRC(9bc3c079) SHA1(7ed73556a7b88feab22d5cff30d736c9c855f013) ) // 2c000 e 90000 too + ROM_CONTINUE(0x48000,0x4000) + ROM_CONTINUE(0x44000,0x4000) + ROM_CONTINUE(0x4c000,0x4000) + + ROM_REGION( 0x20000, "audiocpu", 0 ) // same as spangbl and spangbl2 + ROM_LOAD( "2.ic28", 0x00000, 0x10000, CRC(02b07d0a) SHA1(77cb9bf1b0d93ebad1bd8cdbedb7fdbad23697be) ) + ROM_LOAD( "1.ic45", 0x10000, 0x10000, CRC(95c32824) SHA1(02de90a7bfbe89feb7708fda8dfac4ed32bc0773) ) + + ROM_REGION( 0x100000, "chars", ROMREGION_INVERT | ROMREGION_ERASE00 ) + ROM_LOAD16_BYTE( "11.ic79", 0x00001, 0x020000, CRC(28fed01c) SHA1(b1c85ce4ec256fa8d76218f2887dac884dec4fc5) ) + ROM_LOAD16_BYTE( "9.ic78", 0x00000, 0x020000, CRC(e6b888b1) SHA1(365ec026cd6960b9309a429b5568f22462ef767e) ) + ROM_LOAD16_BYTE( "10.ic81", 0x80001, 0x020000, CRC(70d21e13) SHA1(ae8fa31a75556308f3ae61d2f4f3c399ba83e695) ) + ROM_LOAD16_BYTE( "8.ic80", 0x80000, 0x020000, CRC(d66638dd) SHA1(aa3b4aa8ed1d4a4532e5b4469b661f5f45e575b3) ) + + ROM_REGION( 0x40000, "sprites", ROMREGION_INVERT ) + ROM_LOAD( "7.ic124", 0x00000, 0x020000, CRC(b9b92a3c) SHA1(97191958a539c6f2eacb3956e8371acbaaa43795) ) + ROM_LOAD( "6.ic95", 0x20000, 0x020000, CRC(75fc3375) SHA1(b2e7551bdbe2b0f1c28f6e912a8efaa5645b2ff5) ) ROM_END ROM_START( marukin ) @@ -2420,18 +2890,18 @@ ROM_START( marukin ) ROM_LOAD( "mg3-01.9d", 0x00000, 0x08000, CRC(04357973) SHA1(61b0b347479126213c90ef6833c09537fab03093) ) ROM_LOAD( "mg3-02.10d", 0x10000, 0x20000, CRC(50d08da0) SHA1(5d115eb646f34827d02219be3d5346f05c0c27b6) ) - ROM_REGION( 0x200000, "gfx1", 0 ) - ROM_LOAD( "mg3-a.3k", 0x000000, 0x80000, CRC(420f1de7) SHA1(bc2142175f93f96c45c5ee9d23da14f3eb91e58b) ) /* chars */ + ROM_REGION( 0x200000, "chars", 0 ) + ROM_LOAD( "mg3-a.3k", 0x000000, 0x80000, CRC(420f1de7) SHA1(bc2142175f93f96c45c5ee9d23da14f3eb91e58b) ) ROM_LOAD( "mg3-b.4k", 0x080000, 0x80000, CRC(d8de13fa) SHA1(4420fb6fb42d40c0c84a6f4660bd0ffff429261a) ) ROM_LOAD( "mg3-c.6k", 0x100000, 0x80000, CRC(fbeb66e8) SHA1(a9f13b3818187af05158dfea62ed46e28acf057b) ) ROM_LOAD( "mg3-d.7k", 0x180000, 0x80000, CRC(8f6bd831) SHA1(8fe7aeab0ebe52fde269b320e9c797cb6c036eff) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "mg3-05.2g", 0x000000, 0x20000, CRC(7a738d2d) SHA1(4b2daf1824b40b961c1e18050197c817fccc2337) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "mg3-05.2g", 0x000000, 0x20000, CRC(7a738d2d) SHA1(4b2daf1824b40b961c1e18050197c817fccc2337) ) ROM_LOAD( "mg3-04.1g", 0x020000, 0x20000, CRC(56f30515) SHA1(6af85c1bbebba37d3b0d4161bc2495237ddfc494) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ - ROM_LOAD( "mg3-e.1d", 0x00000, 0x80000, CRC(106c2fa9) SHA1(21d4579f41282dc69ea11fe2977c427543f1c69d) ) /* banked */ + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "mg3-e.1d", 0x00000, 0x80000, CRC(106c2fa9) SHA1(21d4579f41282dc69ea11fe2977c427543f1c69d) ) // banked ROM_END ROM_START( qtono1 ) @@ -2440,8 +2910,8 @@ ROM_START( qtono1 ) ROM_LOAD( "q3-06.rom", 0x10000, 0x20000, CRC(bd6a2110) SHA1(8c4d7a10dfaee0fcd18be21c80fc3d2ff9615eae) ) ROM_LOAD( "q3-07.rom", 0x30000, 0x20000, CRC(61e53c4f) SHA1(bcde0029a217994561ae0a6fb0482bf1e3517913) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "q3-08.rom", 0x000000, 0x20000, CRC(1533b978) SHA1(586d3b93152cc78a3ae42987e66d984645cd2849) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "q3-08.rom", 0x000000, 0x20000, CRC(1533b978) SHA1(586d3b93152cc78a3ae42987e66d984645cd2849) ) ROM_LOAD( "q3-09.rom", 0x020000, 0x20000, CRC(a32db2f2) SHA1(df2243bff5fd44ebdfe02c5e0bbcccaff5c32628) ) ROM_LOAD( "q3-10.rom", 0x040000, 0x20000, CRC(ed681aa8) SHA1(9f8dcebc384ca1582d509de94c194df9e3f81441) ) ROM_LOAD( "q3-11.rom", 0x060000, 0x20000, CRC(38b2fd10) SHA1(2eee32e7c70f9f529a48d41fa886b3695228a7d3) ) @@ -2450,11 +2920,11 @@ ROM_START( qtono1 ) ROM_LOAD( "q3-20.rom", 0x0c0000, 0x20000, CRC(6cd7f38d) SHA1(cfc549331aa86a687bd9db8b3a926e490bbd4f55) ) ROM_LOAD( "q3-21.rom", 0x0e0000, 0x20000, CRC(b4aa6b4b) SHA1(c7c771b69051fd820e9eb3faab62779b8df19209) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "q3-16.rom", 0x000000, 0x20000, CRC(863d6836) SHA1(ec78c462bb80e01f581673f2e9431efdf05599d7) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "q3-16.rom", 0x000000, 0x20000, CRC(863d6836) SHA1(ec78c462bb80e01f581673f2e9431efdf05599d7) ) ROM_LOAD( "q3-17.rom", 0x020000, 0x20000, CRC(459bf59c) SHA1(89975c6ff259bf68ac0c25eb0c8afb6862f11c87) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "q3-01.rom", 0x00000, 0x20000, CRC(6c1be591) SHA1(7cab7121d78284dc95ae4218d1e7639a659dda8b) ) ROM_END @@ -2464,8 +2934,8 @@ ROM_START( qsangoku ) ROM_LOAD( "q4-06.rom", 0x10000, 0x20000, CRC(a0301849) SHA1(60910d84f869fd5735cd5500a93b761d8b8dbacb) ) ROM_LOAD( "q4-07.rom", 0x30000, 0x20000, CRC(2941ef5b) SHA1(a86f5365edd315fcbb2a50489d63b4be9587ae29) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "q4-08.rom", 0x000000, 0x20000, CRC(dc84c6cb) SHA1(0fb5737bb2adeddde888d24974806d4c2ac5b2ee) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "q4-08.rom", 0x000000, 0x20000, CRC(dc84c6cb) SHA1(0fb5737bb2adeddde888d24974806d4c2ac5b2ee) ) ROM_LOAD( "q4-09.rom", 0x020000, 0x20000, CRC(cbb6234c) SHA1(76b749cc39d3af1d9e4959ea513ed054723ffefd) ) ROM_LOAD( "q4-10.rom", 0x040000, 0x20000, CRC(c20a27a8) SHA1(f462babb7090b2838326bb65e2cafab0fea12f99) ) ROM_LOAD( "q4-11.rom", 0x060000, 0x20000, CRC(4ff66aed) SHA1(0d70aae5eb930647753650486c7f7eb56239f1ad) ) @@ -2474,11 +2944,11 @@ ROM_START( qsangoku ) ROM_LOAD( "q4-20.rom", 0x0c0000, 0x20000, CRC(b02dc6a1) SHA1(78d59ef4a3f7eaa3a003765060b8367348c4cfef) ) ROM_LOAD( "q4-21.rom", 0x0e0000, 0x20000, CRC(432b1dc1) SHA1(9beb45fe95a2ef78401d50d70eba1e683102cd39) ) - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "q4-16.rom", 0x000000, 0x20000, CRC(77342320) SHA1(a05684f6c75a19569350d6e14eb6cb9777fb1f09) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "q4-16.rom", 0x000000, 0x20000, CRC(77342320) SHA1(a05684f6c75a19569350d6e14eb6cb9777fb1f09) ) ROM_LOAD( "q4-17.rom", 0x020000, 0x20000, CRC(1275c436) SHA1(ed84fb07749b49066d1caf0c21e46ada94d4c213) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "q4-01.rom", 0x00000, 0x20000, CRC(5d0d07d8) SHA1(d36e42852dd1ec0955d19b16e7dfe157b3d48522) ) ROM_END @@ -2488,19 +2958,19 @@ ROM_START( block ) ROM_LOAD( "ble_06b.15f", 0x10000, 0x20000, CRC(e114ebde) SHA1(12362e809443644b43fbc72e7eead5f376fe11d3) ) ROM_LOAD( "ble_07b.16f", 0x30000, 0x20000, CRC(61bef077) SHA1(92792f26305df1e5e66607bed391b84b4964ba3e) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "bl_08.8h", 0x000000, 0x20000, CRC(aa0f4ff1) SHA1(58f3c468f89d834caaf66d3c084ab87addbb75c0) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "bl_08.8h", 0x000000, 0x20000, CRC(aa0f4ff1) SHA1(58f3c468f89d834caaf66d3c084ab87addbb75c0) ) ROM_LOAD( "bl_09.9h", 0x020000, 0x20000, CRC(6fa8c186) SHA1(d4dd26d666f2accce871f70e7882e140d924dd07) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "bl_18.8j", 0x080000, 0x20000, CRC(c0acafaf) SHA1(7c44b2605da6a324d0c145202cb8bac7af7a9c68) ) ROM_LOAD( "bl_19.9j", 0x0a0000, 0x20000, CRC(1ae942f5) SHA1(e9322790db0bf2a9e862b14e166ee3f36f9ea5ad) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "bl_16.2j", 0x000000, 0x20000, CRC(fadcaff7) SHA1(f4bd8e375fe6b1e6a07b4ec4e58f5807dbd738f8) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "bl_16.2j", 0x000000, 0x20000, CRC(fadcaff7) SHA1(f4bd8e375fe6b1e6a07b4ec4e58f5807dbd738f8) ) ROM_LOAD( "bl_17.3j", 0x020000, 0x20000, CRC(5f8cab42) SHA1(3a4c682a7938479e0be80c0494c2c8fc7303b663) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "bl_01.2d", 0x00000, 0x20000, CRC(c2ec2abb) SHA1(89981f2a887ace4c4580e2828cbdc962f89c215e) ) ROM_END @@ -2510,20 +2980,20 @@ ROM_START( blockr1 ) ROM_LOAD( "ble_06a.15f", 0x10000, 0x20000, CRC(e114ebde) SHA1(12362e809443644b43fbc72e7eead5f376fe11d3) ) ROM_LOAD( "ble_07.16f", 0x30000, 0x20000, CRC(1d114f13) SHA1(ee3588e1752b3432fd611e2d7d4fb43f942de580) ) - /* the highscore table specifies an unused tile number, so we need ROMREGION_ERASEFF to ensure it is blank */ - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "bl_08.8h", 0x000000, 0x20000, CRC(aa0f4ff1) SHA1(58f3c468f89d834caaf66d3c084ab87addbb75c0) ) /* chars */ + // the highscore table specifies an unused tile number, so we need ROMREGION_ERASEFF to ensure it is blank + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "bl_08.8h", 0x000000, 0x20000, CRC(aa0f4ff1) SHA1(58f3c468f89d834caaf66d3c084ab87addbb75c0) ) ROM_LOAD( "bl_09.9h", 0x020000, 0x20000, CRC(6fa8c186) SHA1(d4dd26d666f2accce871f70e7882e140d924dd07) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "bl_18.8j", 0x080000, 0x20000, CRC(c0acafaf) SHA1(7c44b2605da6a324d0c145202cb8bac7af7a9c68) ) ROM_LOAD( "bl_19.9j", 0x0a0000, 0x20000, CRC(1ae942f5) SHA1(e9322790db0bf2a9e862b14e166ee3f36f9ea5ad) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "bl_16.2j", 0x000000, 0x20000, CRC(fadcaff7) SHA1(f4bd8e375fe6b1e6a07b4ec4e58f5807dbd738f8) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "bl_16.2j", 0x000000, 0x20000, CRC(fadcaff7) SHA1(f4bd8e375fe6b1e6a07b4ec4e58f5807dbd738f8) ) ROM_LOAD( "bl_17.3j", 0x020000, 0x20000, CRC(5f8cab42) SHA1(3a4c682a7938479e0be80c0494c2c8fc7303b663) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "bl_01.2d", 0x00000, 0x20000, CRC(c2ec2abb) SHA1(89981f2a887ace4c4580e2828cbdc962f89c215e) ) ROM_END @@ -2533,19 +3003,19 @@ ROM_START( blockr2 ) ROM_LOAD( "ble_06.15f", 0x10000, 0x20000, CRC(cdb13d55) SHA1(2e4489d12a603b4c7dfb90d246ebff9176e88a0b) ) ROM_LOAD( "ble_07.16f", 0x30000, 0x20000, CRC(1d114f13) SHA1(ee3588e1752b3432fd611e2d7d4fb43f942de580) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "bl_08.8h", 0x000000, 0x20000, CRC(aa0f4ff1) SHA1(58f3c468f89d834caaf66d3c084ab87addbb75c0) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "bl_08.8h", 0x000000, 0x20000, CRC(aa0f4ff1) SHA1(58f3c468f89d834caaf66d3c084ab87addbb75c0) ) ROM_LOAD( "bl_09.9h", 0x020000, 0x20000, CRC(6fa8c186) SHA1(d4dd26d666f2accce871f70e7882e140d924dd07) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "bl_18.8j", 0x080000, 0x20000, CRC(c0acafaf) SHA1(7c44b2605da6a324d0c145202cb8bac7af7a9c68) ) ROM_LOAD( "bl_19.9j", 0x0a0000, 0x20000, CRC(1ae942f5) SHA1(e9322790db0bf2a9e862b14e166ee3f36f9ea5ad) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "bl_16.2j", 0x000000, 0x20000, CRC(fadcaff7) SHA1(f4bd8e375fe6b1e6a07b4ec4e58f5807dbd738f8) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "bl_16.2j", 0x000000, 0x20000, CRC(fadcaff7) SHA1(f4bd8e375fe6b1e6a07b4ec4e58f5807dbd738f8) ) ROM_LOAD( "bl_17.3j", 0x020000, 0x20000, CRC(5f8cab42) SHA1(3a4c682a7938479e0be80c0494c2c8fc7303b663) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "bl_01.2d", 0x00000, 0x20000, CRC(c2ec2abb) SHA1(89981f2a887ace4c4580e2828cbdc962f89c215e) ) ROM_END @@ -2555,45 +3025,45 @@ ROM_START( blockj ) ROM_LOAD( "ble_06.15f", 0x10000, 0x20000, CRC(cdb13d55) SHA1(2e4489d12a603b4c7dfb90d246ebff9176e88a0b) ) ROM_LOAD( "blj_07.16f", 0x30000, 0x20000, CRC(1723883c) SHA1(e6b7575a55c045b90fb41290a60306713121acfb) ) - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "bl_08.8h", 0x000000, 0x20000, CRC(aa0f4ff1) SHA1(58f3c468f89d834caaf66d3c084ab87addbb75c0) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "bl_08.8h", 0x000000, 0x20000, CRC(aa0f4ff1) SHA1(58f3c468f89d834caaf66d3c084ab87addbb75c0) ) ROM_LOAD( "bl_09.9h", 0x020000, 0x20000, CRC(6fa8c186) SHA1(d4dd26d666f2accce871f70e7882e140d924dd07) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "bl_18.8j", 0x080000, 0x20000, CRC(c0acafaf) SHA1(7c44b2605da6a324d0c145202cb8bac7af7a9c68) ) ROM_LOAD( "bl_19.9j", 0x0a0000, 0x20000, CRC(1ae942f5) SHA1(e9322790db0bf2a9e862b14e166ee3f36f9ea5ad) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "bl_16.2j", 0x000000, 0x20000, CRC(fadcaff7) SHA1(f4bd8e375fe6b1e6a07b4ec4e58f5807dbd738f8) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "bl_16.2j", 0x000000, 0x20000, CRC(fadcaff7) SHA1(f4bd8e375fe6b1e6a07b4ec4e58f5807dbd738f8) ) ROM_LOAD( "bl_17.3j", 0x020000, 0x20000, CRC(5f8cab42) SHA1(3a4c682a7938479e0be80c0494c2c8fc7303b663) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "bl_01.2d", 0x00000, 0x20000, CRC(c2ec2abb) SHA1(89981f2a887ace4c4580e2828cbdc962f89c215e) ) ROM_END ROM_START( blockbl ) ROM_REGION( 0x50000*2, "maincpu", 0 ) - ROM_LOAD( "m7.l6", 0x50000, 0x08000, CRC(3b576fd9) SHA1(99cf14eba089ed9c7d9f287277dab4a8a997a9a4) ) /* Decrypted opcode + data */ + ROM_LOAD( "m7.l6", 0x50000, 0x08000, CRC(3b576fd9) SHA1(99cf14eba089ed9c7d9f287277dab4a8a997a9a4) ) // Decrypted opcode + data ROM_CONTINUE( 0x00000, 0x08000 ) - ROM_LOAD( "m5.l3", 0x60000, 0x20000, CRC(7c988bb7) SHA1(138ffe62ef9186849c3db73b048132ad0349ccf7) ) /* Decrypted opcode + data */ + ROM_LOAD( "m5.l3", 0x60000, 0x20000, CRC(7c988bb7) SHA1(138ffe62ef9186849c3db73b048132ad0349ccf7) ) // Decrypted opcode + data ROM_CONTINUE( 0x10000, 0x20000 ) - ROM_LOAD( "m6.l5", 0x30000, 0x20000, CRC(5768d8eb) SHA1(6aa9bc4e778c6a06444bba0f4022710cd2abf35c) ) /* Decrypted data */ + ROM_LOAD( "m6.l5", 0x30000, 0x20000, CRC(5768d8eb) SHA1(6aa9bc4e778c6a06444bba0f4022710cd2abf35c) ) // Decrypted data - ROM_REGION( 0x100000, "gfx1", ROMREGION_ERASEFF ) - ROM_LOAD( "m12.o10", 0x000000, 0x20000, CRC(963154d9) SHA1(ef2d5bb4de3b17a2507f9656d924593edce0f3ed) ) /* chars */ + ROM_REGION( 0x100000, "chars", ROMREGION_ERASEFF ) + ROM_LOAD( "m12.o10", 0x000000, 0x20000, CRC(963154d9) SHA1(ef2d5bb4de3b17a2507f9656d924593edce0f3ed) ) ROM_LOAD( "m13.o14", 0x020000, 0x20000, CRC(069480bb) SHA1(f33793822848c1c3589fd2f17bbb95254ab64736) ) - /* 40000-7ffff empty */ + // 40000-7ffff empty ROM_LOAD( "m4.j17", 0x080000, 0x20000, CRC(9e3b6f4f) SHA1(d129ffd1689eaa21b354dcf60b471542ff434588) ) ROM_LOAD( "m3.j20", 0x0a0000, 0x20000, CRC(629d58fe) SHA1(936ebc993f382a2cd138b6933d1bd1acd153bc01) ) - /* c0000-fffff empty */ + // c0000-fffff empty - ROM_REGION( 0x040000, "gfx2", 0 ) - ROM_LOAD( "m11.o7", 0x000000, 0x10000, CRC(255180a5) SHA1(8fde20c6c14b84d768ebe3634584f7d4e0702548) ) /* sprites */ + ROM_REGION( 0x040000, "sprites", 0 ) + ROM_LOAD( "m11.o7", 0x000000, 0x10000, CRC(255180a5) SHA1(8fde20c6c14b84d768ebe3634584f7d4e0702548) ) ROM_LOAD( "m10.o5", 0x010000, 0x10000, CRC(3201c088) SHA1(df4f8e42eed22e67295131d2a4abf166a9ae4a6e) ) ROM_LOAD( "m9.o3", 0x020000, 0x10000, CRC(29357fe4) SHA1(479f9a55895e2fd14ee88a65be99cf32ade1ca3d) ) ROM_LOAD( "m8.o2", 0x030000, 0x10000, CRC(abd665d1) SHA1(a91d05ce1d5dcec2b1a933e4f5d335b05e4b3ec9) ) - ROM_REGION( 0x80000, "oki", 0 ) /* OKIM */ + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "bl_01.rom", 0x00000, 0x20000, CRC(c2ec2abb) SHA1(89981f2a887ace4c4580e2828cbdc962f89c215e) ) ROM_END @@ -2606,9 +3076,9 @@ ROM_END void mitchell_state::bootleg_decode() { - m_bank1->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000); - m_bank0d->set_base(memregion("maincpu")->base() + 0x50000); - m_bank1d->configure_entries(0, 16, memregion("maincpu")->base() + 0x60000, 0x4000); + m_databank->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000); + m_opbase->set_base(memregion("maincpu")->base() + 0x50000); + m_opbank->configure_entries(0, 16, memregion("maincpu")->base() + 0x60000, 0x4000); } @@ -2618,9 +3088,9 @@ void mitchell_state::configure_banks(void (*decode)(uint8_t *src, uint8_t *dst, int size = memregion("maincpu")->bytes(); m_decoded = std::make_unique(size); decode(src, m_decoded.get(), size); - m_bank1->configure_entries(0, 16, src + 0x10000, 0x4000); - m_bank0d->set_base(m_decoded.get()); - m_bank1d->configure_entries(0, 16, &m_decoded[0x10000], 0x4000); + m_databank->configure_entries(0, 16, src + 0x10000, 0x4000); + m_opbase->set_base(m_decoded.get()); + m_opbank->configure_entries(0, 16, &m_decoded[0x10000], 0x4000); } @@ -2655,7 +3125,7 @@ void mitchell_state::init_spang() configure_banks(spang_decode); } -void mitchell_state::init_spangbl() +void spangbl_state::init_spangbl() { m_input_type = 3; bootleg_decode(); @@ -2685,7 +3155,7 @@ void mitchell_state::init_qsangoku() void mitchell_state::init_mgakuen() { m_input_type = 1; - m_bank1->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000); + m_databank->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000); m_maincpu->space(AS_IO).install_read_port(0x03, 0x03, "DSW0"); m_maincpu->space(AS_IO).install_read_port(0x04, 0x04, "DSW1"); } @@ -2699,7 +3169,7 @@ void mitchell_state::init_pkladies() m_input_type = 1; configure_banks(mgakuen2_decode); } -void mitchell_state::init_pkladiesbl() +void pkladiesbl_state::init_pkladiesbl() { m_input_type = 0; bootleg_decode(); @@ -2720,9 +3190,9 @@ void mitchell_state::init_blockbl() bootleg_decode(); } -void mitchell_state::init_mstworld() +void mstworld_state::init_mstworld() { - /* descramble the program rom .. */ + // descramble the program ROM .. int len = memregion("maincpu")->bytes(); std::vector source(len); uint8_t* dst = memregion("maincpu")->base() ; @@ -2731,8 +3201,8 @@ void mitchell_state::init_mstworld() { /* fixed code */ 0, 0, /* fixed code */ 1, 1, - /* ram area */-1, -1, - /* ram area */-1, -1, + /* RAM area */-1, -1, + /* RAM area */-1, -1, /* bank 0 */10, 4, /* bank 1 */ 5, 13, /* bank 2 */ 7, 17, @@ -2764,6 +3234,8 @@ void mitchell_state::init_mstworld() bootleg_decode(); } +} // anonymous namespace + /************************************* * @@ -2771,52 +3243,53 @@ void mitchell_state::init_mstworld() * *************************************/ -GAME( 1988, mgakuen, 0, mgakuen, mgakuen, mitchell_state, init_mgakuen, ROT0, "Yuga", "Mahjong Gakuen", MACHINE_SUPPORTS_SAVE ) -GAME( 1988, 7toitsu, mgakuen, mgakuen, mgakuen, mitchell_state, init_mgakuen, ROT0, "Yuga", "Chi-Toitsu", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mgakuen, 0, mgakuen, mgakuen, mitchell_state, init_mgakuen, ROT0, "Yuga", "Mahjong Gakuen", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, 7toitsu, mgakuen, mgakuen, mgakuen, mitchell_state, init_mgakuen, ROT0, "Yuga", "Chi-Toitsu", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mgakuen2, 0, marukin, marukin, mitchell_state, init_mgakuen2, ROT0, "Face", "Mahjong Gakuen 2 Gakuen-chou no Fukushuu", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mgakuen2, 0, marukin, marukin, mitchell_state, init_mgakuen2, ROT0, "Face", "Mahjong Gakuen 2 Gakuen-chou no Fukushuu", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pkladies, 0, marukin, pkladies, mitchell_state, init_pkladies, ROT0, "Mitchell", "Poker Ladies", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pkladiesl, pkladies, marukin, pkladies, mitchell_state, init_pkladies, ROT0, "Leprechaun", "Poker Ladies (Leprechaun ver. 510)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pkladiesla, pkladies, marukin, pkladies, mitchell_state, init_pkladies, ROT0, "Leprechaun", "Poker Ladies (Leprechaun ver. 401)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pkladiesbl, pkladies, pkladiesbl, pkladiesbl, mitchell_state, init_pkladiesbl, ROT0, "bootleg", "Poker Ladies (Censored bootleg, encrypted)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // by Playmark? need to figure out CPU 'decryption' / ordering -GAME( 1989, pkladiesbl2, pkladies, pkladiesbl, pkladiesbl, mitchell_state, init_pkladiesbl, ROT0, "bootleg", "Poker Ladies (Censored bootleg, not encrypted)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // by Playmark? needs inputs, EEPROM (?), MSM5205 hook up, GFX fixes +GAME( 1989, pkladies, 0, marukin, pkladies, mitchell_state, init_pkladies, ROT0, "Mitchell", "Poker Ladies", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pkladiesl, pkladies, marukin, pkladies, mitchell_state, init_pkladies, ROT0, "Leprechaun", "Poker Ladies (Leprechaun ver. 510)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pkladiesla, pkladies, marukin, pkladies, mitchell_state, init_pkladies, ROT0, "Leprechaun", "Poker Ladies (Leprechaun ver. 401)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pkladiesbl, pkladies, pkladiesbl, pkladiesbl, pkladiesbl_state, init_pkladiesbl, ROT0, "bootleg", "Poker Ladies (Censored bootleg, encrypted)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // by Playmark? need to figure out CPU 'decryption' / ordering +GAME( 1989, pkladiesbl2, pkladies, pkladiesbl, pkladiesbl, pkladiesbl_state, init_pkladiesbl, ROT0, "bootleg", "Poker Ladies (Censored bootleg, not encrypted)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // by Playmark? needs inputs, EEPROM (?), MSM5205 hook up, GFX fixes -GAME( 1989, dokaben, 0, pang, pang, mitchell_state, init_dokaben, ROT0, "Capcom", "Dokaben (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dokaben, 0, pang, pang, mitchell_state, init_dokaben, ROT0, "Capcom", "Dokaben (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, dokaben2, 0, pang, pang, mitchell_state, init_dokaben, ROT0, "Capcom", "Dokaben 2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, dokaben2, 0, pang, pang, mitchell_state, init_dokaben, ROT0, "Capcom", "Dokaben 2 (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pang, 0, pang, pang, mitchell_state, init_pang, ROT0, "Mitchell", "Pang (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, bbros, pang, pang, pang, mitchell_state, init_pang, ROT0, "Mitchell (Capcom license)", "Buster Bros. (USA)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pompingw, pang, pang, pang, mitchell_state, init_pang, ROT0, "Mitchell", "Pomping World (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pangb, pang, pang, pang, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pangbold, pang, pang, pang, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pangba, pang, pangba, pangdsw, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pangb2, pang, pang, pang, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pangbb, pang, spangbl, pangdsw, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 5)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, pangbp, pang, pang, pang, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 6)", MACHINE_NOT_WORKING ) // Missing the contents of a battery backed RAM -GAME( 1989, pangbc, pang, spangbl, pangdsw, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 7)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pang, 0, pang, pang, mitchell_state, init_pang, ROT0, "Mitchell", "Pang (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, bbros, pang, pang, pang, mitchell_state, init_pang, ROT0, "Mitchell (Capcom license)", "Buster Bros. (USA)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pompingw, pang, pang, pang, mitchell_state, init_pang, ROT0, "Mitchell", "Pomping World (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pangb, pang, pang, pang, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pangbold, pang, pang, pang, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pangba, pang, pangba, pangdsw, spangbl_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pangb2, pang, pang, pang, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pangbb, pang, spangbl, pangdsw, spangbl_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 5)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1989, pangbp, pang, pang, pang, mitchell_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 6)", MACHINE_NOT_WORKING ) // Missing the contents of a battery backed RAM +GAME( 1989, pangbc, pang, spangbl, pangdsw, spangbl_state, init_pangb, ROT0, "bootleg", "Pang (bootleg, set 7)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, cworld, 0, pang, qtono1, mitchell_state, init_cworld, ROT0, "Capcom", "Capcom World (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, cworld, 0, pang, qtono1, mitchell_state, init_cworld, ROT0, "Capcom", "Capcom World (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, hatena, 0, pang, qtono1, mitchell_state, init_hatena, ROT0, "Capcom", "Adventure Quiz 2 - Hatena? no Daibouken (Japan 900228)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, hatena, 0, pang, qtono1, mitchell_state, init_hatena, ROT0, "Capcom", "Adventure Quiz 2 - Hatena? no Daibouken (Japan 900228)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, spang, 0, pangnv, pang, mitchell_state, init_spang, ROT0, "Mitchell", "Super Pang (World 900914)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, sbbros, spang, pangnv, pang, mitchell_state, init_sbbros, ROT0, "Mitchell (Capcom license)", "Super Buster Bros. (USA 901001)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, spangj, spang, pangnv, pang, mitchell_state, init_spangj, ROT0, "Mitchell", "Super Pang (Japan 901023)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, spangbl, spang, spangbl, spangbl, mitchell_state, init_spangbl, ROT0, "bootleg", "Super Pang (World 900914, bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // different sound hardware -GAME( 1990, spangbl2, spang, spangbl, spangbl, mitchell_state, init_spangbl, ROT0, "bootleg", "Super Pang (World 900914, bootleg, set 2)", MACHINE_NOT_WORKING ) +GAME( 1990, spang, 0, pangnv, pang, mitchell_state, init_spang, ROT0, "Mitchell", "Super Pang (World 900914)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, sbbros, spang, pangnv, pang, mitchell_state, init_sbbros, ROT0, "Mitchell (Capcom license)", "Super Buster Bros. (USA 901001)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, spangj, spang, pangnv, pang, mitchell_state, init_spangj, ROT0, "Mitchell", "Super Pang (Japan 901023)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, spangbl, spang, spangbl, spangbl, spangbl_state, init_spangbl, ROT0, "bootleg", "Super Pang (World 900914, bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // different sound hardware +GAME( 1990, spangbl2, spang, spangbl, spangbl, spangbl_state, init_spangbl, ROT0, "bootleg", "Super Pang (World 900914, bootleg, set 2)", MACHINE_NOT_WORKING ) -GAME( 1994, mstworld, 0, mstworld, mstworld, mitchell_state, init_mstworld, ROT0, "bootleg (TCH)", "Monsters World (bootleg of Super Pang)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mstworld, 0, mstworld, mstworld, mstworld_state, init_mstworld, ROT0, "bootleg (TCH)", "Monsters World (bootleg of Super Pang)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 1994, mstworld2, mstworld, mstworld2, mstworld2, spangbl_state, init_spangbl, ROT0, "bootleg", "Monsters World 2 (bootleg of Super Pang)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // GFX garbage at title screen with clean NVRAM -GAME( 1990, marukin, 0, marukin, marukin, mitchell_state, init_marukin, ROT0, "Yuga", "Super Marukin-Ban (Japan 901017)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, marukin, 0, marukin, marukin, mitchell_state, init_marukin, ROT0, "Yuga", "Super Marukin-Ban (Japan 901017)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, qtono1, 0, pang, qtono1, mitchell_state, init_qtono1, ROT0, "Capcom", "Quiz Tonosama no Yabou (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, qtono1, 0, pang, qtono1, mitchell_state, init_qtono1, ROT0, "Capcom", "Quiz Tonosama no Yabou (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, qsangoku, 0, pang, qtono1, mitchell_state, init_qsangoku, ROT0, "Capcom", "Quiz Sangokushi (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, qsangoku, 0, pang, qtono1, mitchell_state, init_qsangoku, ROT0, "Capcom", "Quiz Sangokushi (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, block, 0, pangnv, blockjoy, mitchell_state, init_block, ROT270, "Capcom", "Block Block (World 911219 Joystick)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, blockr1, block, pangnv, blockjoy, mitchell_state, init_block, ROT270, "Capcom", "Block Block (World 911106 Joystick)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, blockr2, block, pangnv, block, mitchell_state, init_block, ROT270, "Capcom", "Block Block (World 910910)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, blockj, block, pangnv, block, mitchell_state, init_block, ROT270, "Capcom", "Block Block (Japan 910910)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, blockbl, block, pangnv, block, mitchell_state, init_blockbl, ROT270, "bootleg", "Block Block (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, block, 0, pangnv, blockjoy, mitchell_state, init_block, ROT270, "Capcom", "Block Block (World 911219 Joystick)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, blockr1, block, pangnv, blockjoy, mitchell_state, init_block, ROT270, "Capcom", "Block Block (World 911106 Joystick)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, blockr2, block, pangnv, block, mitchell_state, init_block, ROT270, "Capcom", "Block Block (World 910910)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, blockj, block, pangnv, block, mitchell_state, init_block, ROT270, "Capcom", "Block Block (Japan 910910)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, blockbl, block, pangnv, block, mitchell_state, init_blockbl, ROT270, "bootleg", "Block Block (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/mitchell.h b/src/mame/includes/mitchell.h deleted file mode 100644 index 4db1f46ff39..00000000000 --- a/src/mame/includes/mitchell.h +++ /dev/null @@ -1,163 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nicola Salmoria -/************************************************************************* - - Mitchell hardware - -*************************************************************************/ - -#include "machine/74157.h" -#include "machine/nvram.h" -#include "machine/eepromser.h" -#include "machine/gen_latch.h" -#include "machine/timer.h" -#include "sound/msm5205.h" -#include "sound/okim6295.h" -#include "emupal.h" -#include "tilemap.h" - -class mitchell_state : public driver_device -{ -public: - mitchell_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_oki(*this, "oki"), - m_nvram(*this, "nvram"), - m_eeprom(*this, "eeprom"), - m_msm(*this, "msm"), - m_adpcm_select(*this, "adpcm_select"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_soundlatch(*this, "soundlatch"), - m_colorram(*this, "colorram"), - m_videoram(*this, "videoram"), - m_bank1(*this, "bank1"), - m_bank0d(*this, "bank0d"), - m_bank1d(*this, "bank1d"), - m_soundbank(*this, "soundbank") { } - - void pkladiesbl(machine_config &config); - void mstworld(machine_config &config); - void mgakuen(machine_config &config); - void marukin(machine_config &config); - void pang(machine_config &config); - void pangba(machine_config &config); - void pangnv(machine_config &config); - void spangbl(machine_config &config); - - void init_mgakuen2(); - void init_block(); - void init_pangb(); - void init_qtono1(); - void init_mgakuen(); - void init_hatena(); - void init_mstworld(); - void init_spangbl(); - void init_pkladiesbl(); - void init_spang(); - void init_cworld(); - void init_spangj(); - void init_qsangoku(); - void init_marukin(); - void init_pang(); - void init_sbbros(); - void init_pkladies(); - void init_blockbl(); - void init_dokaben(); - -private: - /* devices */ - required_device m_maincpu; - optional_device m_audiocpu; - optional_device m_oki; - optional_device m_nvram; - optional_device m_eeprom; - optional_device m_msm; - optional_device m_adpcm_select; - required_device m_gfxdecode; - required_device m_palette; - optional_device m_soundlatch; - - /* memory pointers */ - required_shared_ptr m_colorram; - required_shared_ptr m_videoram; - required_memory_bank m_bank1; - optional_memory_bank m_bank0d; - optional_memory_bank m_bank1d; - optional_memory_bank m_soundbank; - - /* video-related */ - tilemap_t *m_bg_tilemap; - std::vector m_objram; /* Sprite RAM */ - int m_flipscreen; - int m_video_bank; - int m_paletteram_bank; - std::vector m_paletteram; - - /* sound-related */ - bool m_sample_select; - - /* misc */ - int m_input_type; - int m_dial[2]; - int m_dial_selected; - int m_dir[2]; - int m_keymatrix; - std::unique_ptr m_decoded; - - uint8_t m_irq_source; - uint8_t pang_port5_r(); - void pang_bankswitch_w(uint8_t data); - uint8_t block_input_r(offs_t offset); - void block_dial_control_w(uint8_t data); - uint8_t mahjong_input_r(offs_t offset); - void mahjong_input_select_w(uint8_t data); - uint8_t input_r(offs_t offset); - void input_w(uint8_t data); - void mstworld_sound_w(uint8_t data); - void pang_video_bank_w(uint8_t data); - void mstworld_video_bank_w(uint8_t data); - void mgakuen_videoram_w(offs_t offset, uint8_t data); - uint8_t mgakuen_videoram_r(offs_t offset); - void mgakuen_objram_w(offs_t offset, uint8_t data); - uint8_t mgakuen_objram_r(offs_t offset); - void pang_videoram_w(offs_t offset, uint8_t data); - uint8_t pang_videoram_r(offs_t offset); - void pang_colorram_w(offs_t offset, uint8_t data); - uint8_t pang_colorram_r(offs_t offset); - void pang_gfxctrl_w(uint8_t data); - void pangbl_gfxctrl_w(uint8_t data); - void mstworld_gfxctrl_w(uint8_t data); - void pang_paletteram_w(offs_t offset, uint8_t data); - uint8_t pang_paletteram_r(offs_t offset); - void eeprom_cs_w(uint8_t data); - void eeprom_clock_w(uint8_t data); - void eeprom_serial_w(uint8_t data); - void oki_banking_w(uint8_t data); - - TILE_GET_INFO_MEMBER(get_tile_info); - DECLARE_MACHINE_START(mitchell); - DECLARE_MACHINE_RESET(mitchell); - DECLARE_VIDEO_START(pang); - uint32_t screen_update_pang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(mitchell_irq); - void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); - void bootleg_decode(); - void configure_banks(void (*decode)(uint8_t *src, uint8_t *dst, int size)); - void sound_bankswitch_w(uint8_t data); - DECLARE_WRITE_LINE_MEMBER(spangbl_adpcm_int); - - void decrypted_opcodes_map(address_map &map); - void mgakuen_map(address_map &map); - void mitchell_io_map(address_map &map); - void mitchell_map(address_map &map); - void mstworld_io_map(address_map &map); - void mstworld_sound_map(address_map &map); - void pangba_sound_map(address_map &map); - void pkladiesbl_io_map(address_map &map); - void spangbl_io_map(address_map &map); - void spangbl_map(address_map &map); - void spangbl_sound_map(address_map &map); -}; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index ac58c92b5cc..b9a2614a304 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -23881,6 +23881,7 @@ marukin // 17/10/1990 (c) 1990 Yuga (Japan) mgakuen // (c) 1988 Yuga mgakuen2 // (c) 1989 Face mstworld // (c) 1994 +mstworld2 // (c) 1994 pang // (c) 1989 Mitchell (World) pangb // bootleg pangb2 // bootleg @@ -31860,7 +31861,7 @@ finalaprj1 // (c) 1995 speedrcr // (c) 1995 @source:namcona1.cpp -bbbingo // (c) 1999? (Japan) +bbbingo // (c) 1996 (Japan) bkrtmaq // (c) 1992 (Japan) cgangpzl // (c) 1992 (US) cgangpzlj // (c) 1992 (Japan) diff --git a/src/mame/video/mitchell.cpp b/src/mame/video/mitchell.cpp deleted file mode 100644 index 89b4d53e3c6..00000000000 --- a/src/mame/video/mitchell.cpp +++ /dev/null @@ -1,293 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nicola Salmoria -/*************************************************************************** - - Pang Video Hardware - -***************************************************************************/ - -#include "emu.h" -#include "sound/okim6295.h" -#include "includes/mitchell.h" - -/*************************************************************************** - - Callbacks for the TileMap code - -***************************************************************************/ - -TILE_GET_INFO_MEMBER(mitchell_state::get_tile_info) -{ - uint8_t attr = m_colorram[tile_index]; - int code = m_videoram[2 * tile_index] + (m_videoram[2 * tile_index + 1] << 8); - tileinfo.set(0, - code, - attr & 0x7f, - (attr & 0x80) ? TILE_FLIPX : 0); -} - - - -/*************************************************************************** - - Start the video hardware emulation. - -***************************************************************************/ - -VIDEO_START_MEMBER(mitchell_state,pang) -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mitchell_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap->set_transparent_pen(15); - - /* OBJ RAM */ - m_objram.resize(m_videoram.bytes()); - - /* Palette RAM */ - m_paletteram.resize(2 * m_palette->entries()); - m_palette->basemem().set(m_paletteram, ENDIANNESS_LITTLE, 2); - - save_item(NAME(m_objram)); - save_item(NAME(m_paletteram)); -} - - - -/*************************************************************************** - - Memory handlers - -***************************************************************************/ - -/*************************************************************************** - OBJ / CHAR RAM HANDLERS (BANK 0 = CHAR, BANK 1=OBJ) -***************************************************************************/ - -void mitchell_state::pang_video_bank_w(uint8_t data) -{ - /* Bank handler (sets base pointers for video write) (doesn't apply to mgakuen) */ - m_video_bank = data; -} - -void mitchell_state::mstworld_video_bank_w(uint8_t data) -{ - /* Monsters World seems to freak out if more bits are used.. */ - m_video_bank = data & 1; -} - - -void mitchell_state::mgakuen_videoram_w(offs_t offset, uint8_t data) -{ - m_videoram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset / 2); -} - -uint8_t mitchell_state::mgakuen_videoram_r(offs_t offset) -{ - return m_videoram[offset]; -} - -void mitchell_state::mgakuen_objram_w(offs_t offset, uint8_t data) -{ - m_objram[offset] = data; -} - -uint8_t mitchell_state::mgakuen_objram_r(offs_t offset) -{ - return m_objram[offset]; -} - -void mitchell_state::pang_videoram_w(offs_t offset, uint8_t data) -{ - if (m_video_bank) - mgakuen_objram_w(offset, data); - else - mgakuen_videoram_w(offset, data); -} - -uint8_t mitchell_state::pang_videoram_r(offs_t offset) -{ - if (m_video_bank) - return mgakuen_objram_r(offset); - else - return mgakuen_videoram_r(offset); -} - -/*************************************************************************** - COLOUR RAM -****************************************************************************/ - -void mitchell_state::pang_colorram_w(offs_t offset, uint8_t data) -{ - m_colorram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset); -} - -uint8_t mitchell_state::pang_colorram_r(offs_t offset) -{ - return m_colorram[offset]; -} - -/*************************************************************************** - PALETTE HANDLERS (COLOURS: BANK 0 = 0x00-0x3f BANK 1=0x40-0xff) -****************************************************************************/ - -void mitchell_state::pang_gfxctrl_w(uint8_t data) -{ -logerror("PC %04x: pang_gfxctrl_w %02x\n",m_maincpu->pc(),data); -{ -#if 0 - char baf[40]; - sprintf(baf,"%02x",data); - popmessage(baf); -#endif -} - - /* bit 0 is unknown (used, maybe back color enable?) */ - - /* bit 1 is coin counter */ - machine().bookkeeping().coin_counter_w(0, data & 2); - - /* bit 2 is flip screen */ - if (m_flipscreen != (data & 0x04)) - { - m_flipscreen = data & 0x04; - machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - } - - /* bit 3 is unknown (used, e.g. marukin pulses it on the title screen) */ - - /* bit 4 selects OKI M6295 bank */ - if (m_oki != nullptr) - m_oki->set_rom_bank((data >> 4) & 1); - - /* bit 5 is palette RAM bank selector (doesn't apply to mgakuen) */ - m_paletteram_bank = data & 0x20; - - /* bits 6 and 7 are unknown, used in several places. At first I thought */ - /* they were bg and sprites enable, but this screws up spang (screen flickers */ - /* every time you pop a bubble). However, not using them as enable bits screws */ - /* up marukin - you can see partially built up screens during attract mode. */ -} - -void mitchell_state::pangbl_gfxctrl_w(uint8_t data) -{ -logerror("PC %04x: pang_gfxctrl_w %02x\n",m_maincpu->pc(),data); -{ -#if 0 - char baf[40]; - sprintf(baf,"%02x",data); - popmessage(baf); -#endif -} - - /* bit 0 is unknown (used, maybe back color enable?) */ - - /* bit 1 is coin counter */ - machine().bookkeeping().coin_counter_w(0, data & 2); - - /* bit 2 is flip screen */ - if (m_flipscreen != (data & 0x04)) - { - m_flipscreen = data & 0x04; - machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - } - - /* bit 3 is unknown (used, e.g. marukin pulses it on the title screen) */ - - /* bit 4 selects OKI M6295 bank, nop'ed here */ - - /* bit 5 is palette RAM bank selector (doesn't apply to mgakuen) */ - m_paletteram_bank = data & 0x20; - - /* bits 6 and 7 are unknown, used in several places. At first I thought */ - /* they were bg and sprites enable, but this screws up spang (screen flickers */ - /* every time you pop a bubble). However, not using them as enable bits screws */ - /* up marukin - you can see partially built up screens during attract mode. */ -} - -void mitchell_state::mstworld_gfxctrl_w(uint8_t data) -{ -logerror("PC %04x: pang_gfxctrl_w %02x\n",m_maincpu->pc(),data); -{ - char baf[40]; - sprintf(baf,"%02x",data); -// popmessage(baf); -} - - /* bit 0 is unknown (used, maybe back color enable?) */ - - /* bit 1 is coin counter */ - machine().bookkeeping().coin_counter_w(0, data & 2); - - /* bit 2 is flip screen */ - if (m_flipscreen != (data & 0x04)) - { - m_flipscreen = data & 0x04; - machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); - } - - /* bit 3 is unknown (used, e.g. marukin pulses it on the title screen) */ - - /* bit 4 here does not select OKI M6295 bank: mstworld has its own z80 + sound banking */ - - /* bit 5 is palette RAM bank selector (doesn't apply to mgakuen) */ - m_paletteram_bank = data & 0x20; - - /* bits 6 and 7 are unknown, used in several places. At first I thought */ - /* they were bg and sprites enable, but this screws up spang (screen flickers */ - /* every time you pop a bubble). However, not using them as enable bits screws */ - /* up marukin - you can see partially built up screens during attract mode. */ -} - -void mitchell_state::pang_paletteram_w(offs_t offset, uint8_t data) -{ - m_palette->write8(offset + (m_paletteram_bank ? 0x800 : 0x000), data); -} - -uint8_t mitchell_state::pang_paletteram_r(offs_t offset) -{ - return m_paletteram[offset + (m_paletteram_bank ? 0x800 : 0x000)]; -} - - - -/*************************************************************************** - - Display refresh - -***************************************************************************/ - -void mitchell_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) -{ - int offs, sx, sy; - - /* the last entry is not a sprite, we skip it otherwise spang shows a bubble */ - /* moving diagonally across the screen */ - for (offs = 0x1000 - 0x40; offs >= 0; offs -= 0x20) - { - int code = m_objram[offs]; - int attr = m_objram[offs + 1]; - int color = attr & 0x0f; - sx = m_objram[offs + 3] + ((attr & 0x10) << 4); - sy = ((m_objram[offs + 2] + 8) & 0xff) - 8; - code += (attr & 0xe0) << 3; - if (m_flipscreen) - { - sx = 496 - sx; - sy = 240 - sy; - } - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - code, - color, - m_flipscreen, m_flipscreen, - sx,sy,15); - } -} - -uint32_t mitchell_state::screen_update_pang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - bitmap.fill(0, cliprect); - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - draw_sprites(bitmap, cliprect); - return 0; -}