From 5aa5842469ef4e5124e7373a9381367fd19e72ed Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 11 Nov 2024 18:04:34 +0100 Subject: [PATCH] - dataeast/madmotor.cpp: dumped PROM [Phil Bennett] - nichibutsu/galivan.cpp: consolidated driver into single file, split into subclasses - skeleton/palsystems_sh2.cpp: added documentation and Mach dumps for 2 boards [Hammy, buffi] --- src/mame/dataeast/madmotor.cpp | 6 + src/mame/galaxian/galaxian.cpp | 20 +- src/mame/nichibutsu/galivan.cpp | 1171 +++++++++++++++++++------- src/mame/nichibutsu/galivan.h | 138 --- src/mame/nichibutsu/galivan_v.cpp | 407 --------- src/mame/pacman/pacman.cpp | 12 +- src/mame/skeleton/palsystems_sh2.cpp | 35 +- 7 files changed, 926 insertions(+), 863 deletions(-) delete mode 100644 src/mame/nichibutsu/galivan.h delete mode 100644 src/mame/nichibutsu/galivan_v.cpp diff --git a/src/mame/dataeast/madmotor.cpp b/src/mame/dataeast/madmotor.cpp index 528ee2b9d71..3c0d8f7bf19 100644 --- a/src/mame/dataeast/madmotor.cpp +++ b/src/mame/dataeast/madmotor.cpp @@ -341,6 +341,9 @@ ROM_START( madmotor ) ROM_REGION( 0x40000, "oki2", 0 ) ROM_LOAD( "13.h3", 0x00000, 0x20000, CRC(cc4d65e9) SHA1(b9bcaa52c570f94d2f2e5dd84c94773cc4115442) ) + + ROM_REGION( 0x100, "proms", 0 ) + ROM_LOAD( "fm-23.19h", 0x000, 0x100, CRC(6d51adf8) SHA1(51f2792d06f46ec27c60c814745641aa8709a200) ) // probably related to sprites' hardware ROM_END ROM_START( madmotora ) @@ -382,6 +385,9 @@ ROM_START( madmotora ) ROM_REGION( 0x40000, "oki2", 0 ) ROM_LOAD( "13.h3", 0x00000, 0x20000, CRC(cc4d65e9) SHA1(b9bcaa52c570f94d2f2e5dd84c94773cc4115442) ) + + ROM_REGION( 0x100, "proms", 0 ) + ROM_LOAD( "fm-23.19h", 0x000, 0x100, CRC(6d51adf8) SHA1(51f2792d06f46ec27c60c814745641aa8709a200) ) // probably related to sprites' hardware ROM_END /******************************************************************************/ diff --git a/src/mame/galaxian/galaxian.cpp b/src/mame/galaxian/galaxian.cpp index 19cf7ee1314..b5f333a25f4 100644 --- a/src/mame/galaxian/galaxian.cpp +++ b/src/mame/galaxian/galaxian.cpp @@ -8964,12 +8964,14 @@ void guttangt_state::init_guttangts3() common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, nullptr, &galaxian_state::guttangt_extend_sprite_info); uint8_t *romdata = memregion("maincpu")->base(); - uint8_t buf[0x4800]; - memcpy(buf, romdata, 0x4800); // descramble the content of each 0x100 block - for (int i = 0; i < 0x4800; i++) - romdata[i] = buf[i ^ 0xff]; + for (int i = 0; i < 0x4800; i += 0x100) + { + using std::swap; + for (int j = 0; j < (0x100 / 2); j++) + swap(romdata[i | j], romdata[i | (j ^ 0xff)]); + } } void sbhoei_state::init_sbhoei() @@ -9146,12 +9148,14 @@ void galaxian_state::init_jumpbugbc() init_jumpbug(); uint8_t *romdata = memregion("maincpu")->base(); - uint8_t buf[0x10000]; - memcpy(buf, romdata, 0x10000); // descramble the content of each 0x100 block - for (int i = 0; i < 0x10000; i++) - romdata[i] = buf[i ^ 0xff]; + for (int i = 0; i < 0x10000; i += 0x100) + { + using std::swap; + for (int j = 0; j < (0x100 / 2); j++) + swap(romdata[i | j], romdata[i | (j ^ 0xff)]); + } } diff --git a/src/mame/nichibutsu/galivan.cpp b/src/mame/nichibutsu/galivan.cpp index 3e16b10b435..319b2414004 100644 --- a/src/mame/nichibutsu/galivan.cpp +++ b/src/mame/nichibutsu/galivan.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Luca Elia, Olivier Galibert +// copyright-holders: Luca Elia, Olivier Galibert + /*************************************************************************** Galivan @@ -20,7 +21,7 @@ TODO - Find out how layers are enabled\disabled - dangar input ports - parent set requires F2 be held for Service Mode - wrong title screen in ninjemak -- bit 3 of ninjemak_gfxbank_w, there currently is a kludge to clear text RAM +- bit 3 of gfxbank_w, there currently is a kludge to clear text RAM but it should really copy stuff from the extra ROM. - Ninja Emaki has minor protection issues, see NB1414M4 simulation for more info. @@ -131,17 +132,575 @@ MB7114.2D - Fujitsu MB7114 256 x4-bit Bi-polar PROM (sprite look-up table) #include "emu.h" -#include "galivan.h" + +#include "nb1412m2.h" +#include "nb1414m4.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/rescap.h" #include "sound/dac.h" #include "sound/flt_biquad.h" #include "sound/ymopl.h" +#include "video/bufsprite.h" + +#include "screen.h" +#include "emupal.h" #include "speaker.h" +#include "tilemap.h" -void galivan_state::galivan_sound_command_w(uint8_t data) +namespace { + +class galivan_state : public driver_device +{ +public: + galivan_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_videoram(*this, "videoram") + , m_spriteram(*this, "spriteram") + , m_screen(*this, "screen") + , m_gfxdecode(*this, "gfxdecode") + , m_palette(*this, "palette") + , m_soundlatch(*this, "soundlatch") + , m_dacfilter1(*this, "dacfilter1") + , m_dacfilter2(*this, "dacfilter2") + , m_ymfilter(*this, "ymfilter") + , m_rombank(*this, "rombank") + , m_bgrom(*this, "bgtiles") + , m_sprpalbank(*this, "sprpalbank_prom") + { } + + void galivan(machine_config &config); + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + virtual void video_start() override ATTR_COLD; + + required_device m_maincpu; + required_shared_ptr m_videoram; + required_device m_spriteram; + required_device m_screen; + required_device m_gfxdecode; + required_device m_palette; + required_device m_soundlatch; + required_device m_dacfilter1; + required_device m_dacfilter2; + required_device m_ymfilter; + required_memory_bank m_rombank; + required_region_ptr m_bgrom; + required_region_ptr m_sprpalbank; + + // video-related + tilemap_t *m_bg_tilemap = nullptr; + tilemap_t *m_tx_tilemap = nullptr; + uint8_t m_shift_scroll = 0U; //youmab + uint32_t m_shift_val = 0U; + + void sound_command_w(uint8_t data); + + void videoram_w(offs_t offset, uint8_t data); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + + void io_map(address_map &map) ATTR_COLD; + + void common(machine_config &config); + void video_config(machine_config &config); + +private: + uint8_t m_scrollx[2]{}, m_scrolly[2]{}; + uint8_t m_layers = 0U; + + uint8_t soundlatch_clear_r(); + uint8_t io_port_c0_r(); + void gfxbank_w(uint8_t data); + void scrollx_w(offs_t offset, uint8_t data); + void scrolly_w(offs_t offset, uint8_t data); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_tx_tile_info); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void main_map(address_map &map) ATTR_COLD; + void sound_io_map(address_map &map) ATTR_COLD; + void sound_map(address_map &map) ATTR_COLD; +}; + +class dangarj_state : public galivan_state +{ +public: + dangarj_state(const machine_config &mconfig, device_type type, const char *tag) : + galivan_state(mconfig, type, tag), + m_prot(*this, "prot_chip") + { } + + void dangarj(machine_config &config); + +private: + required_device m_prot; + + void dangarj_io_map(address_map &map) ATTR_COLD; +}; + +class ninjemak_state : public galivan_state +{ +public: + ninjemak_state(const machine_config &mconfig, device_type type, const char *tag) : + galivan_state(mconfig, type, tag) + , m_nb1414m4(*this, "nb1414m4") + { } + + void ninjemak(machine_config &config); + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + virtual void video_start() override ATTR_COLD; + + uint16_t m_scrollx = 0U; + uint16_t m_scrolly = 0U; + uint8_t m_dispdisable = 0U; + + void main_map(address_map &map) ATTR_COLD; + void io_map(address_map &map) ATTR_COLD; + +private: + optional_device m_nb1414m4; + + void blit_trigger_w(uint8_t data); + void vblank_ack_w(uint8_t data); + void gfxbank_w(uint8_t data); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_tx_tile_info); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); +}; + +class youmab_state : public ninjemak_state +{ +public: + youmab_state(const machine_config &mconfig, device_type type, const char *tag) : + ninjemak_state(mconfig, type, tag) + , m_extra_rombank(*this, "extra_rombank") + { } + + void youmab(machine_config &config); + +protected: + virtual void machine_start() override ATTR_COLD; + +private: + required_memory_bank m_extra_rombank; + + void extra_bank_w(uint8_t data); + uint8_t _8a_r(); + void _81_w(uint8_t data); + void _84_w(uint8_t data); + void _86_w(uint8_t data); + + void io_map(address_map &map) ATTR_COLD; + void main_map(address_map &map) ATTR_COLD; +}; + + +/*************************************************************************** + +d800-dbff foreground: char low bits (1 screen * 1024 chars/screen) +dc00-dfff foreground attribute: 7 ? + 6543 color + 21 ? + 0 char hi bit + + +e000-e0ff spriteram: 64 sprites (4 bytes/sprite) + offset : 0 1 2 3 + meaning: ypos(lo) sprite(lo) attribute xpos(lo) + 7 flipy + 6 flipx + 5-2 color + 1 sprite(hi) + 0 xpos(hi) + + +background: 0x4000 bytes of ROM: 76543210 tile code low bits + 0x4000 bytes of ROM: 7 ? + 6543 color + 2 ? + 10 tile code high bits + +***************************************************************************/ + +/* Layers has only bits 5-7 active. + 7 selects text off/on + 6 selects background off/on + 5 controls sprite priority (active only on title screen, + not for scores or push start nor game) +*/ + + +/* Notes: + layers are used in galivan/dangar but not ninjemak + ninjemak_dispdisable is used in ninjemak but not galivan/dangar +*/ + + + +/*************************************************************************** + + Convert the color PROMs into a more useable format. + +***************************************************************************/ + +void galivan_state::palette(palette_device &palette) const +{ + const uint8_t *color_prom = memregion("proms")->base(); + + // create a lookup table for the palette + for (int i = 0; i < 0x100; i++) + { + int const r = pal4bit(color_prom[i + 0x000]); + int const g = pal4bit(color_prom[i + 0x100]); + int const b = pal4bit(color_prom[i + 0x200]); + + palette.set_indirect_color(i, rgb_t(r, g, b)); + } + + // color_prom now points to the beginning of the lookup table + color_prom += 0x300; + + // characters use colors 0-0x3f + // the bottom two bits of the color code select the palette bank for pens 0-7; + // the top two bits for pens 8-15. + for (int i = 0; i < 0x100; i++) + { + uint8_t const ctabentry = (i & 0x0f) | ((i >> ((i & 0x08) ? 2 : 0)) & 0x30); + + palette.set_pen_indirect(i, ctabentry); + } + + // I think that background tiles use colors 0xc0-0xff in four banks + // the bottom two bits of the color code select the palette bank for pens 0-7; + // the top two bits for pens 8-15. + for (int i = 0; i < 0x100; i++) + { + uint8_t const ctabentry = 0xc0 | (i & 0x0f) | ((i >> ((i & 0x08) ? 2 : 0)) & 0x30); + + palette.set_pen_indirect(0x100 + i, ctabentry); + } + + // sprites use colors 0x80-0xbf in four banks + // The lookup table tells which colors to pick from the selected bank + // the bank is selected by another PROM and depends on the top 7 bits of the sprite code. + // The PROM selects the bank *separately* for pens 0-7 and 8-15 (like for tiles). + for (int i = 0; i < 0x1000; i++) + { + uint8_t const ctabentry = 0x80 | ((i << ((i & 0x80) ? 2 : 4)) & 0x30) | (color_prom[i >> 4] & 0x0f); + int const i_swapped = ((i & 0x0f) << 8) | ((i & 0xff0) >> 4); + + palette.set_pen_indirect(0x200 + i_swapped, ctabentry); + } +} + +void ninjemak_state::palette(palette_device& palette) const +{ + const uint8_t *color_prom = memregion("proms")->base(); + + // create a lookup table for the palette + for (int i = 0; i < 0x100; i++) + { + int const r = pal4bit(color_prom[i + 0x000]); + int const g = pal4bit(color_prom[i + 0x100]); + int const b = pal4bit(color_prom[i + 0x200]); + + palette.set_indirect_color(i, rgb_t(r, g, b)); + } + + // color_prom now points to the beginning of the lookup table + color_prom += 0x300; + + // characters use colors 0-0x7f + for (int i = 0; i < 0x80; i++) + palette.set_pen_indirect(i, i); + + // I think that background tiles use colors 0xc0-0xff in four banks + // the bottom two bits of the color code select the palette bank for pens 0-7; + // the top two bits for pens 8-15. + for (int i = 0; i < 0x100; i++) + { + uint8_t const ctabentry = 0xc0 | (i & 0x0f) | ((i >> ((i & 0x08) ? 2 : 0)) & 0x30); + + palette.set_pen_indirect(0x80 + i, ctabentry); + } + + // sprites use colors 0x80-0xbf in four banks + // The lookup table tells which colors to pick from the selected bank + // the bank is selected by another PROM and depends on the top 7 bits of the sprite code. + // The PROM selects the bank *separately* for pens 0-7 and 8-15 (like for tiles). + for (int i = 0; i < 0x1000; i++) + { + uint8_t const ctabentry = 0x80 | ((i << ((i & 0x80) ? 2 : 4)) & 0x30) | (color_prom[i >> 4] & 0x0f); + int const i_swapped = ((i & 0x0f) << 8) | ((i & 0xff0) >> 4); + + palette.set_pen_indirect(0x180 + i_swapped, ctabentry); + } +} + + + +/*************************************************************************** + + Callbacks for the TileMap code + +***************************************************************************/ + +TILE_GET_INFO_MEMBER(galivan_state::get_bg_tile_info) +{ + int const attr = m_bgrom[tile_index + 0x4000]; + int const code = m_bgrom[tile_index] | ((attr & 0x03) << 8); + tileinfo.set(1, + code, + (attr & 0x78) >> 3, // seems correct + 0); +} + +TILE_GET_INFO_MEMBER(galivan_state::get_tx_tile_info) +{ + int const attr = m_videoram[tile_index + 0x400]; + int const code = m_videoram[tile_index] | ((attr & 0x01) << 8); + tileinfo.set(0, + code, + (attr & 0x78) >> 3, // seems correct + 0); + tileinfo.category = attr & 8 ? 0 : 1; // seems correct +} + +TILE_GET_INFO_MEMBER(ninjemak_state::get_bg_tile_info) +{ + int const attr = m_bgrom[tile_index + 0x4000]; + int const code = m_bgrom[tile_index] | ((attr & 0x03) << 8); + tileinfo.set(1, + code, + ((attr & 0x60) >> 3) | ((attr & 0x0c) >> 2), // seems correct + 0); +} + +TILE_GET_INFO_MEMBER(ninjemak_state::get_tx_tile_info) +{ + uint16_t index = tile_index; + // TODO: skip drawing the NB1414M4 params, how the HW actually handles this? + if (index < 0x12) + index = 0x12; + + int const attr = m_videoram[index + 0x400]; + int const code = m_videoram[index] | ((attr & 0x03) << 8); + tileinfo.set(0, + code, + (attr & 0x1c) >> 2, // seems correct ? + 0); +} + + + +/*************************************************************************** + + Start the video hardware emulation. + +***************************************************************************/ + +void galivan_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + + m_tx_tilemap->set_transparent_pen(15); +} + +void ninjemak_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ninjemak_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 512, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ninjemak_state::get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + + m_tx_tilemap->set_transparent_pen(15); +} + + + +/*************************************************************************** + + Memory handlers + +***************************************************************************/ + +void galivan_state::videoram_w(offs_t offset, uint8_t data) +{ + m_videoram[offset] = data; + m_tx_tilemap->mark_tile_dirty(offset & 0x3ff); +} + +// Written through port 40 +void galivan_state::gfxbank_w(uint8_t data) +{ + // bits 0 and 1 coin counters + machine().bookkeeping().coin_counter_w(0, data & 1); + machine().bookkeeping().coin_counter_w(1, data & 2); + + // bit 2 flip screen + flip_screen_set(data & 0x04); + + // bit 7 selects one of two ROM banks for c000-dfff + m_rombank->set_entry((data & 0x80) >> 7); + + // logerror("%s port 40 = %02x\n", machine().describe_context(), data); +} + +void ninjemak_state::gfxbank_w(uint8_t data) +{ + // bits 0 and 1 coin counters + machine().bookkeeping().coin_counter_w(0, data & 1); + machine().bookkeeping().coin_counter_w(1, data & 2); + + // bit 2 flip screen + flip_screen_set(data & 0x04); + + // bit 3 unknown + + // bit 4 background disable flag + m_dispdisable = data & 0x10; + + // bit 5 sprite flag ??? + + // bit 6, 7 ROM bank select + m_rombank->set_entry((data & 0xc0) >> 6); + +#if 0 + { + char mess[80]; + int btz[8]; + int offs; + + for (offs = 0; offs < 8; offs++) btz[offs] = (((data >> offs) & 0x01) ? 1 : 0); + + sprintf(mess, "BK:%01X%01X S:%01X B:%01X T:%01X FF:%01X C2:%01X C1:%01X", btz[7], btz[6], btz[5], btz[4], btz[3], btz[2], btz[1], btz[0]); + popmessage(mess); + } +#endif +} + + + +// Written through port 41-42 +void galivan_state::scrollx_w(offs_t offset, uint8_t data) +{ + if (offset == 1) + { + m_layers = data & 0xe0; + } + m_scrollx[offset] = data; +} + +// Written through port 43-44 +void galivan_state::scrolly_w(offs_t offset, uint8_t data) +{ + m_scrolly[offset] = data; +} + + + +/*************************************************************************** + + Display refresh + +***************************************************************************/ + +void galivan_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + uint8_t const *buffered_spriteram = m_spriteram->buffer(); + int const length = m_spriteram->bytes(); + int const flip = flip_screen(); + gfx_element *gfx = m_gfxdecode->gfx(2); + + // draw the sprites + for (int offs = 0; offs < length; offs += 4) + { + int const attr = buffered_spriteram[offs + 2]; + int const color = (attr & 0x3c) >> 2; + int flipx = attr & 0x40; + int flipy = attr & 0x80; + + int sx = (buffered_spriteram[offs + 3] - 0x80) + 256 * (attr & 0x01); + int sy = 240 - buffered_spriteram[offs]; + if (flip) + { + sx = 240 - sx; + sy = 240 - sy; + flipx = !flipx; + flipy = !flipy; + } + +// int const code = buffered_spriteram[offs + 1] + ((attr & 0x02) << 7); + int const code = buffered_spriteram[offs + 1] + ((attr & 0x06) << 7); // for ninjemak, not sure ? + + gfx->transpen(bitmap, cliprect, + code, + color + 16 * (m_sprpalbank[code >> 2] & 0x0f), + flipx, flipy, + sx, sy, 15); + } +} + + +uint32_t galivan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg_tilemap->set_scrollx(0, m_scrollx[0] + 256 * (m_scrollx[1] & 0x07)); + m_bg_tilemap->set_scrolly(0, m_scrolly[0] + 256 * (m_scrolly[1] & 0x07)); + + if (m_layers & 0x40) + bitmap.fill(0, cliprect); + else + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + if (m_layers & 0x20) + { + if ((m_layers & 0x80) == 0) + { + m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_tx_tilemap->draw(screen, bitmap, cliprect, 1, 0); + } + draw_sprites(bitmap, cliprect); + } + else + { + draw_sprites(bitmap, cliprect); + if ((m_layers & 0x80) == 0) + { + m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_tx_tilemap->draw(screen, bitmap, cliprect, 1, 0); + } + } + + return 0; +} + +uint32_t ninjemak_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + // (scrollx[1] & 0x40) does something + m_bg_tilemap->set_scrollx(0, m_scrollx); + m_bg_tilemap->set_scrolly(0, m_scrolly); + + if (m_dispdisable) + bitmap.fill(0, cliprect); + else + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + draw_sprites(bitmap, cliprect); + m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + +void galivan_state::sound_command_w(uint8_t data) { m_soundlatch->write(((data & 0x7f) << 1) | 1); } @@ -152,36 +711,36 @@ uint8_t galivan_state::soundlatch_clear_r() return 0; } -uint8_t galivan_state::IO_port_c0_r() +uint8_t galivan_state::io_port_c0_r() { // causes a reset in dangar if value differs. return (0x58); } -void galivan_state::vblank_ack_w(uint8_t data) +void ninjemak_state::vblank_ack_w(uint8_t data) { if (m_nb1414m4 != nullptr) m_nb1414m4->vblank_trigger(); m_maincpu->set_input_line(0, CLEAR_LINE); } -void galivan_state::galivan_map(address_map &map) +void galivan_state::main_map(address_map &map) { map(0x0000, 0xbfff).rom(); - map(0xc000, 0xdfff).bankr("bank1"); - map(0xd800, 0xdfff).w(FUNC(galivan_state::galivan_videoram_w)).share("videoram"); + map(0xc000, 0xdfff).bankr(m_rombank); + map(0xd800, 0xdfff).w(FUNC(galivan_state::videoram_w)).share(m_videoram); map(0xe000, 0xe0ff).ram().share("spriteram"); map(0xe100, 0xffff).ram(); } -void galivan_state::ninjemak_map(address_map &map) +void ninjemak_state::main_map(address_map &map) { map(0x0000, 0xbfff).rom(); - map(0xc000, 0xdfff).bankr("bank1"); - map(0xd800, 0xdfff).w(FUNC(galivan_state::galivan_videoram_w)).share("videoram"); + map(0xc000, 0xdfff).bankr(m_rombank); + map(0xd800, 0xdfff).w(FUNC(ninjemak_state::videoram_w)).share(m_videoram); map(0xe000, 0xe1ff).ram().share("spriteram"); map(0xe200, 0xffff).ram(); @@ -195,39 +754,105 @@ void galivan_state::io_map(address_map &map) map(0x02, 0x02).portr("SYSTEM"); map(0x03, 0x03).portr("DSW1"); map(0x04, 0x04).portr("DSW2"); - map(0x40, 0x40).w(FUNC(galivan_state::galivan_gfxbank_w)); - map(0x41, 0x42).w(FUNC(galivan_state::galivan_scrollx_w)); - map(0x43, 0x44).w(FUNC(galivan_state::galivan_scrolly_w)); - map(0x45, 0x45).w(FUNC(galivan_state::galivan_sound_command_w)); + map(0x40, 0x40).w(FUNC(galivan_state::gfxbank_w)); + map(0x41, 0x42).w(FUNC(galivan_state::scrollx_w)); + map(0x43, 0x44).w(FUNC(galivan_state::scrolly_w)); + map(0x45, 0x45).w(FUNC(galivan_state::sound_command_w)); // map(0x46, 0x46).nopw(); - map(0x47, 0x47).w(FUNC(galivan_state::vblank_ack_w)); - map(0xc0, 0xc0).r(FUNC(galivan_state::IO_port_c0_r)); + map(0x47, 0x47).lw8(NAME([this] (uint8_t data) { m_maincpu->set_input_line(0, CLEAR_LINE); })); + map(0xc0, 0xc0).r(FUNC(galivan_state::io_port_c0_r)); } void dangarj_state::dangarj_io_map(address_map &map) { io_map(map); - map(0x80, 0x80).rw("prot_chip", FUNC(nb1412m2_device::data_r), FUNC(nb1412m2_device::data_w)); - map(0x81, 0x81).w("prot_chip", FUNC(nb1412m2_device::command_w)); + map(0x80, 0x80).rw(m_prot, FUNC(nb1412m2_device::data_r), FUNC(nb1412m2_device::data_w)); + map(0x81, 0x81).w(m_prot, FUNC(nb1412m2_device::command_w)); } -void galivan_state::blit_trigger_w(uint8_t data) +void ninjemak_state::blit_trigger_w(uint8_t data) { - // TODO: may not be right, diverges with armedf.cpp - m_nb1414m4->exec((m_videoram[0] << 8) | (m_videoram[1] & 0xff),m_videoram,m_scrollx,m_scrolly,m_tx_tilemap); + // TODO: may not be right, diverges from armedf.cpp + m_nb1414m4->exec((m_videoram[0] << 8) | (m_videoram[1] & 0xff), m_videoram, m_scrollx, m_scrolly, m_tx_tilemap); } -void galivan_state::ninjemak_io_map(address_map &map) +void ninjemak_state::io_map(address_map &map) { map.global_mask(0xff); - map(0x80, 0x80).portr("P1").w(FUNC(galivan_state::ninjemak_gfxbank_w)); + map(0x80, 0x80).portr("P1").w(FUNC(ninjemak_state::gfxbank_w)); map(0x81, 0x81).portr("P2"); map(0x82, 0x82).portr("SYSTEM"); map(0x83, 0x83).portr("SERVICE"); map(0x84, 0x84).portr("DSW1"); - map(0x85, 0x85).portr("DSW2").w(FUNC(galivan_state::galivan_sound_command_w)); - map(0x86, 0x86).w(FUNC(galivan_state::blit_trigger_w)); - map(0x87, 0x87).w(FUNC(galivan_state::vblank_ack_w)); + map(0x85, 0x85).portr("DSW2").w(FUNC(ninjemak_state::sound_command_w)); + map(0x86, 0x86).w(FUNC(ninjemak_state::blit_trigger_w)); + map(0x87, 0x87).w(FUNC(ninjemak_state::vblank_ack_w)); +} + +void youmab_state::main_map(address_map &map) +{ + ninjemak_state::main_map(map); + + map(0x8000, 0xbfff).bankr(m_extra_rombank); + map(0xd800, 0xd81f).nopw(); // scrolling isn't here.. +} + +void youmab_state::extra_bank_w(uint8_t data) +{ + if (data == 0xff) + m_extra_rombank->set_entry(1); + else if (data == 0x00) + m_extra_rombank->set_entry(0); + else + printf("data %03x\n", data); +} + +uint8_t youmab_state::_8a_r() +{ + return machine().rand(); +} + +void youmab_state::_81_w(uint8_t data) +{ + // ?? +} + +// scrolling is tied to a serial port, reads from 0xe43d-0xe43e-0xe43f-0xe440 +void youmab_state::_84_w(uint8_t data) +{ + m_shift_val &= ~((0x80 >> 7) << m_shift_scroll); + m_shift_val |= (((data & 0x80) >> 7) << m_shift_scroll); + + m_shift_scroll++; + + //popmessage("%08x", m_shift_val); + + //if (m_shift_scroll == 25) +} + +void youmab_state::_86_w(uint8_t data) +{ + // latch values + { + m_scrolly = (m_shift_val & 0x0003ff); + m_scrollx = (m_shift_val & 0x7ffc00) >> 10; + + //popmessage("%08x %08x %08x", m_scrollx, m_scrolly, m_shift_val); + } + + m_shift_val = 0; + m_shift_scroll = 0; +} + +void youmab_state::io_map(address_map &map) +{ + ninjemak_state::io_map(map); + + map(0x81, 0x81).w(FUNC(youmab_state::_81_w)); // ?? often, alternating values + map(0x82, 0x82).w(FUNC(youmab_state::extra_bank_w)); // banks ROM at 0x8000? writes 0xff and 0x00 before executing code there + map(0x84, 0x84).w(FUNC(youmab_state::_84_w)); // ?? often, sequence.. + map(0x86, 0x86).w(FUNC(youmab_state::_86_w)); + map(0x8a, 0x8a).r(FUNC(youmab_state::_8a_r)); // ?? } void galivan_state::sound_map(address_map &map) @@ -458,25 +1083,25 @@ static const gfx_layout spritelayout = }; static GFXDECODE_START( gfx_galivan ) - GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 16*16, 16 ) - GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 16*16+16*16, 256 ) + GFXDECODE_ENTRY( "chars", 0, gfx_8x8x4_packed_lsb, 0, 16 ) + GFXDECODE_ENTRY( "tiles", 0, gfx_16x16x4_packed_lsb, 16*16, 16 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 16*16+16*16, 256 ) GFXDECODE_END static GFXDECODE_START( gfx_ninjemak ) - GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 8 ) - GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 8*16, 16 ) - GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 8*16+16*16, 256 ) + GFXDECODE_ENTRY( "chars", 0, gfx_8x8x4_packed_lsb, 0, 8 ) + GFXDECODE_ENTRY( "tiles", 0, gfx_16x16x4_packed_lsb, 8*16, 16 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 8*16+16*16, 256 ) GFXDECODE_END -MACHINE_START_MEMBER(galivan_state,galivan) +void galivan_state::machine_start() { // configure ROM banking uint8_t *rombase = memregion("maincpu")->base(); - membank("bank1")->configure_entries(0, 2, &rombase[0x10000], 0x2000); - membank("bank1")->set_entry(0); + m_rombank->configure_entries(0, 2, &rombase[0x10000], 0x2000); + m_rombank->set_entry(0); // register for saving save_item(NAME(m_scrollx)); @@ -484,35 +1109,43 @@ MACHINE_START_MEMBER(galivan_state,galivan) save_item(NAME(m_layers)); } -MACHINE_START_MEMBER(galivan_state,ninjemak) +void ninjemak_state::machine_start() { // configure ROM banking uint8_t *rombase = memregion("maincpu")->base(); - membank("bank1")->configure_entries(0, 4, &rombase[0x10000], 0x2000); - membank("bank1")->set_entry(0); + m_rombank->configure_entries(0, 4, &rombase[0x10000], 0x2000); + m_rombank->set_entry(0); // register for saving save_item(NAME(m_scrollx)); save_item(NAME(m_scrolly)); - save_item(NAME(m_ninjemak_dispdisable)); + save_item(NAME(m_dispdisable)); } -MACHINE_RESET_MEMBER(galivan_state,galivan) +void youmab_state::machine_start() +{ + ninjemak_state::machine_start(); + + m_extra_rombank->configure_entries(0, 2, memregion("extra_banked_rom")->base(), 0x4000); + m_extra_rombank->set_entry(0); +} + +void galivan_state::machine_reset() { m_maincpu->reset(); m_layers = 0; - m_galivan_scrollx[0] = m_galivan_scrollx[1] = 0; - m_galivan_scrolly[0] = m_galivan_scrolly[1] = 0; + m_scrollx[0] = m_scrollx[1] = 0; + m_scrolly[0] = m_scrolly[1] = 0; } -MACHINE_RESET_MEMBER(galivan_state,ninjemak) +void ninjemak_state::machine_reset() { m_maincpu->reset(); m_scrollx = 0; m_scrolly = 0; - m_ninjemak_dispdisable = 0; + m_dispdisable = 0; } void galivan_state::video_config(machine_config &config) @@ -521,21 +1154,21 @@ void galivan_state::video_config(machine_config &config) SCREEN(config, m_screen, SCREEN_TYPE_RASTER); // TODO: not measured, ~60 Hz - m_screen->set_raw(XTAL(12'000'000)/2,382,0,32*8, 262, 2*8, 30*8); + m_screen->set_raw(XTAL(12'000'000) / 2, 382, 0, 32 * 8, 262, 2 * 8, 30 * 8); m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); m_screen->set_palette(m_palette); } -void galivan_state::galivan_common(machine_config &config) +void galivan_state::common(machine_config &config) { // basic machine hardware - Z80(config, m_maincpu, XTAL(12'000'000)/2); // 6 MHz? + Z80(config, m_maincpu, XTAL(12'000'000) / 2); // 6 MHz? m_maincpu->set_vblank_int("screen", FUNC(galivan_state::irq0_line_assert)); - z80_device &audiocpu(Z80(config, "audiocpu", XTAL(8'000'000)/2)); // 4 MHz? + z80_device &audiocpu(Z80(config, "audiocpu", XTAL(8'000'000) / 2)); // 4 MHz? audiocpu.set_addrmap(AS_PROGRAM, &galivan_state::sound_map); audiocpu.set_addrmap(AS_IO, &galivan_state::sound_io_map); - audiocpu.set_periodic_int(FUNC(galivan_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000)/2/512)); // ? + audiocpu.set_periodic_int(FUNC(galivan_state::irq0_line_hold), attotime::from_hz(XTAL(8'000'000) / 2 / 512)); // ? // video hardware video_config(config); @@ -571,29 +1204,25 @@ void galivan_state::galivan_common(machine_config &config) FILTER_BIQUAD(config, m_dacfilter2).opamp_sk_lowpass_setup(RES_K(10), RES_K(10), RES_M(999.99), RES_R(0.001), CAP_N(10), CAP_N(4.7)); // R13, R12, nothing(infinite resistance), wire(short), C8, C18 m_dacfilter2->add_route(ALL_OUTPUTS, "speaker", 1.0); - YM3526(config, "ymsnd", XTAL(8'000'000)/2).add_route(ALL_OUTPUTS, m_ymfilter, 0.4922); + YM3526(config, "ymsnd", XTAL(8'000'000) / 2).add_route(ALL_OUTPUTS, m_ymfilter, 0.4922); - // note the two dac channel volume mix values might be backwards, we need a pcb reference recording! + // note the two dac channel volume mix values might be backwards, we need a PCB reference recording! DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, m_dacfilter1, 0.2095); // SIP R2R DAC @ RA1 with 74HC374P latch DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, m_dacfilter2, 0.2983); // SIP R2R DAC @ RA2 with 74HC374P latch } void galivan_state::galivan(machine_config &config) { - galivan_common(config); + common(config); // basic machine hardware - m_maincpu->set_addrmap(AS_PROGRAM, &galivan_state::galivan_map); + m_maincpu->set_addrmap(AS_PROGRAM, &galivan_state::main_map); m_maincpu->set_addrmap(AS_IO, &galivan_state::io_map); - MCFG_MACHINE_START_OVERRIDE(galivan_state,galivan) - MCFG_MACHINE_RESET_OVERRIDE(galivan_state,galivan) - // video hardware - MCFG_VIDEO_START_OVERRIDE(galivan_state,galivan) - m_screen->set_screen_update(FUNC(galivan_state::screen_update_galivan)); + m_screen->set_screen_update(FUNC(galivan_state::screen_update)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_galivan); - PALETTE(config, m_palette, FUNC(galivan_state::galivan_palette), 16*16+16*16+256*16, 256); + PALETTE(config, m_palette, FUNC(galivan_state::palette), 16*16+16*16+256*16, 256); } void dangarj_state::dangarj(machine_config &config) @@ -604,30 +1233,29 @@ void dangarj_state::dangarj(machine_config &config) NB1412M2(config, m_prot, XTAL(8'000'000)/2); // divided by 2 maybe } -void galivan_state::ninjemak(machine_config &config) +void ninjemak_state::ninjemak(machine_config &config) { - galivan_common(config); + common(config); // basic machine hardware - m_maincpu->set_addrmap(AS_PROGRAM, &galivan_state::ninjemak_map); - m_maincpu->set_addrmap(AS_IO, &galivan_state::ninjemak_io_map); - - MCFG_MACHINE_START_OVERRIDE(galivan_state,ninjemak) - MCFG_MACHINE_RESET_OVERRIDE(galivan_state,ninjemak) + m_maincpu->set_addrmap(AS_PROGRAM, &ninjemak_state::main_map); + m_maincpu->set_addrmap(AS_IO, &ninjemak_state::io_map); NB1414M4(config, m_nb1414m4, 0); // video hardware - MCFG_VIDEO_START_OVERRIDE(galivan_state,ninjemak) - m_screen->set_screen_update(FUNC(galivan_state::screen_update_ninjemak)); + m_screen->set_screen_update(FUNC(ninjemak_state::screen_update)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ninjemak); - PALETTE(config, m_palette, FUNC(galivan_state::ninjemak_palette), 8*16+16*16+256*16, 256); + PALETTE(config, m_palette, FUNC(ninjemak_state::palette), 8*16+16*16+256*16, 256); } -void galivan_state::youmab(machine_config &config) +void youmab_state::youmab(machine_config &config) { ninjemak(config); + m_maincpu->set_addrmap(AS_PROGRAM, &youmab_state::main_map); + m_maincpu->set_addrmap(AS_IO, &youmab_state::io_map); + config.device_remove("nb1414m4"); } @@ -639,29 +1267,29 @@ void galivan_state::youmab(machine_config &config) ***************************************************************************/ ROM_START( galivan ) - ROM_REGION( 0x14000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x14000, "maincpu", 0 ) ROM_LOAD( "1.1b", 0x00000, 0x8000, CRC(1e66b3f8) SHA1(f9d2ac8076aefd85ce6d2ed2d21941f1160767f5) ) ROM_LOAD( "2.3b", 0x08000, 0x4000, CRC(a45964f1) SHA1(4c4554ff484fbf70a38e1d89d3ae4d2eb4e93ed8) ) ROM_LOAD( "gv3.4b", 0x10000, 0x4000, CRC(82f0c5e6) SHA1(77dd3927c2161e4fce9e0adba81dc0c875d7e2f4) ) // 2 banks at c000 - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gv11.14b", 0x00000, 0x4000, CRC(05f1a0e3) SHA1(c0f579130d64123c889c77d8f2f474ebcc3ba649) ) ROM_LOAD( "gv12.15b", 0x04000, 0x8000, CRC(5b7a0d6d) SHA1(0c15def9be8014aeb4e14b6967efe8f5abac51f2) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gv4.13d", 0x00000, 0x4000, CRC(162490b4) SHA1(55592865f208bf1b8f49c8eedc22a3d91ca3578d) ) // chars + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gv4.13d", 0x00000, 0x4000, CRC(162490b4) SHA1(55592865f208bf1b8f49c8eedc22a3d91ca3578d) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "gv7.14f", 0x00000, 0x8000, CRC(eaa1a0db) SHA1(ed3b125a7472c0c0a458b28df6476cb4c64b4aa3) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "gv7.14f", 0x00000, 0x8000, CRC(eaa1a0db) SHA1(ed3b125a7472c0c0a458b28df6476cb4c64b4aa3) ) ROM_LOAD( "gv8.15f", 0x08000, 0x8000, CRC(f174a41e) SHA1(38aa7aa3d6ba026478d30b5e404614a0cc7aed52) ) ROM_LOAD( "gv9.17f", 0x10000, 0x8000, CRC(edc60f5d) SHA1(c743f4af0e0e2c60f59fd01ce0a153108e9f5414) ) ROM_LOAD( "gv10.19f", 0x18000, 0x8000, CRC(41f27fca) SHA1(3674dbecc2eb1c837159a8dfbb0086088631b2a5) ) - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "gv14.4f", 0x00000, 0x8000, CRC(03e2229f) SHA1(9dace9e04867d1140eb3c794bd4ae54ec3bb4a83) ) // sprites + ROM_REGION( 0x10000, "sprites", 0 ) + ROM_LOAD( "gv14.4f", 0x00000, 0x8000, CRC(03e2229f) SHA1(9dace9e04867d1140eb3c794bd4ae54ec3bb4a83) ) ROM_LOAD( "gv13.1f", 0x08000, 0x8000, CRC(bca9e66b) SHA1(d84840943748a7b9fd6e141be9971431f69ce1f9) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "gv6.19d", 0x00000, 0x4000, CRC(da38168b) SHA1(a12decd55fd1cf32fd192f13bd33d2f1f4129d2c) ) ROM_LOAD( "gv5.17d", 0x04000, 0x4000, CRC(22492d2a) SHA1(c8d36949abc2fcc8f2b12276eb82b330a940bc38) ) @@ -671,34 +1299,34 @@ ROM_START( galivan ) ROM_LOAD( "mb7114e.11f", 0x00200, 0x0100, CRC(7ba8b9d1) SHA1(5942b403eda046e2f2584062443472cbf559db5c) ) // blue ROM_LOAD( "mb7114e.2d", 0x00300, 0x0100, CRC(75466109) SHA1(6196d12ab7103f6ef991b826d8b93303a61d4c48) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "mb7114e.7f", 0x00000, 0x0100, CRC(06538736) SHA1(a2fb2ecb768686839f3087e691102e2dc2eb65b5) ) // sprite palette bank ROM_END ROM_START( galivan2 ) - ROM_REGION( 0x14000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x14000, "maincpu", 0 ) ROM_LOAD( "gv1.1b", 0x00000, 0x8000, CRC(5e480bfc) SHA1(f444de27d3d8aff579cf196a25b7f0c906617172) ) ROM_LOAD( "gv2.3b", 0x08000, 0x4000, CRC(0d1b3538) SHA1(aa1ee04ff3516e0121db0cf50cee849ba5058fd5) ) ROM_LOAD( "gv3.4b", 0x10000, 0x4000, CRC(82f0c5e6) SHA1(77dd3927c2161e4fce9e0adba81dc0c875d7e2f4) ) // 2 banks at c000 - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gv11.14b", 0x00000, 0x4000, CRC(05f1a0e3) SHA1(c0f579130d64123c889c77d8f2f474ebcc3ba649) ) ROM_LOAD( "gv12.15b", 0x04000, 0x8000, CRC(5b7a0d6d) SHA1(0c15def9be8014aeb4e14b6967efe8f5abac51f2) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gv4.13d", 0x00000, 0x4000, CRC(162490b4) SHA1(55592865f208bf1b8f49c8eedc22a3d91ca3578d) ) // chars + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gv4.13d", 0x00000, 0x4000, CRC(162490b4) SHA1(55592865f208bf1b8f49c8eedc22a3d91ca3578d) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "gv7.14f", 0x00000, 0x8000, CRC(eaa1a0db) SHA1(ed3b125a7472c0c0a458b28df6476cb4c64b4aa3) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "gv7.14f", 0x00000, 0x8000, CRC(eaa1a0db) SHA1(ed3b125a7472c0c0a458b28df6476cb4c64b4aa3) ) ROM_LOAD( "gv8.15f", 0x08000, 0x8000, CRC(f174a41e) SHA1(38aa7aa3d6ba026478d30b5e404614a0cc7aed52) ) ROM_LOAD( "gv9.17f", 0x10000, 0x8000, CRC(edc60f5d) SHA1(c743f4af0e0e2c60f59fd01ce0a153108e9f5414) ) ROM_LOAD( "gv10.19f", 0x18000, 0x8000, CRC(41f27fca) SHA1(3674dbecc2eb1c837159a8dfbb0086088631b2a5) ) - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "gv14.4f", 0x00000, 0x8000, CRC(03e2229f) SHA1(9dace9e04867d1140eb3c794bd4ae54ec3bb4a83) ) // sprites + ROM_REGION( 0x10000, "sprites", 0 ) + ROM_LOAD( "gv14.4f", 0x00000, 0x8000, CRC(03e2229f) SHA1(9dace9e04867d1140eb3c794bd4ae54ec3bb4a83) ) ROM_LOAD( "gv13.1f", 0x08000, 0x8000, CRC(bca9e66b) SHA1(d84840943748a7b9fd6e141be9971431f69ce1f9) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "gv6.19d", 0x00000, 0x4000, CRC(da38168b) SHA1(a12decd55fd1cf32fd192f13bd33d2f1f4129d2c) ) ROM_LOAD( "gv5.17d", 0x04000, 0x4000, CRC(22492d2a) SHA1(c8d36949abc2fcc8f2b12276eb82b330a940bc38) ) @@ -708,34 +1336,34 @@ ROM_START( galivan2 ) ROM_LOAD( "mb7114e.11f", 0x00200, 0x0100, CRC(7ba8b9d1) SHA1(5942b403eda046e2f2584062443472cbf559db5c) ) // blue ROM_LOAD( "mb7114e.2d", 0x00300, 0x0100, CRC(75466109) SHA1(6196d12ab7103f6ef991b826d8b93303a61d4c48) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "mb7114e.7f", 0x00000, 0x0100, CRC(06538736) SHA1(a2fb2ecb768686839f3087e691102e2dc2eb65b5) ) // sprite palette bank ROM_END ROM_START( galivan3 ) - ROM_REGION( 0x14000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x14000, "maincpu", 0 ) ROM_LOAD( "e-1.1b", 0x00000, 0x8000, CRC(d8cc72b8) SHA1(73a46cd7dda3a912b14075b9b4ebc81a175a1461) ) ROM_LOAD( "e-2.3b", 0x08000, 0x4000, CRC(9e5b3157) SHA1(1aa5f7f382468af815c929c63866bd39e7a9ac18) ) ROM_LOAD( "gv3.4b", 0x10000, 0x4000, CRC(82f0c5e6) SHA1(77dd3927c2161e4fce9e0adba81dc0c875d7e2f4) ) // 2 banks at c000 - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "gv11.14b", 0x00000, 0x4000, CRC(05f1a0e3) SHA1(c0f579130d64123c889c77d8f2f474ebcc3ba649) ) ROM_LOAD( "gv12.15b", 0x04000, 0x8000, CRC(5b7a0d6d) SHA1(0c15def9be8014aeb4e14b6967efe8f5abac51f2) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "gv4.13d", 0x00000, 0x4000, CRC(162490b4) SHA1(55592865f208bf1b8f49c8eedc22a3d91ca3578d) ) // chars + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "gv4.13d", 0x00000, 0x4000, CRC(162490b4) SHA1(55592865f208bf1b8f49c8eedc22a3d91ca3578d) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "gv7.14f", 0x00000, 0x8000, CRC(eaa1a0db) SHA1(ed3b125a7472c0c0a458b28df6476cb4c64b4aa3) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "gv7.14f", 0x00000, 0x8000, CRC(eaa1a0db) SHA1(ed3b125a7472c0c0a458b28df6476cb4c64b4aa3) ) ROM_LOAD( "gv8.15f", 0x08000, 0x8000, CRC(f174a41e) SHA1(38aa7aa3d6ba026478d30b5e404614a0cc7aed52) ) ROM_LOAD( "gv9.17f", 0x10000, 0x8000, CRC(edc60f5d) SHA1(c743f4af0e0e2c60f59fd01ce0a153108e9f5414) ) ROM_LOAD( "gv10.19f", 0x18000, 0x8000, CRC(41f27fca) SHA1(3674dbecc2eb1c837159a8dfbb0086088631b2a5) ) - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "gv14.4f", 0x00000, 0x8000, CRC(03e2229f) SHA1(9dace9e04867d1140eb3c794bd4ae54ec3bb4a83) ) // sprites + ROM_REGION( 0x10000, "sprites", 0 ) + ROM_LOAD( "gv14.4f", 0x00000, 0x8000, CRC(03e2229f) SHA1(9dace9e04867d1140eb3c794bd4ae54ec3bb4a83) ) ROM_LOAD( "gv13.1f", 0x08000, 0x8000, CRC(bca9e66b) SHA1(d84840943748a7b9fd6e141be9971431f69ce1f9) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "gv6.19d", 0x00000, 0x4000, CRC(da38168b) SHA1(a12decd55fd1cf32fd192f13bd33d2f1f4129d2c) ) ROM_LOAD( "gv5.17d", 0x04000, 0x4000, CRC(22492d2a) SHA1(c8d36949abc2fcc8f2b12276eb82b330a940bc38) ) @@ -745,34 +1373,34 @@ ROM_START( galivan3 ) ROM_LOAD( "mb7114e.11f", 0x00200, 0x0100, CRC(7ba8b9d1) SHA1(5942b403eda046e2f2584062443472cbf559db5c) ) // blue ROM_LOAD( "mb7114e.2d", 0x00300, 0x0100, CRC(75466109) SHA1(6196d12ab7103f6ef991b826d8b93303a61d4c48) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "mb7114e.7f", 0x00000, 0x0100, CRC(06538736) SHA1(a2fb2ecb768686839f3087e691102e2dc2eb65b5) ) // sprite palette bank ROM_END ROM_START( dangar ) // all ROM labels are simply numbers, with the owl logo and "Nichibutsu" printed at the bottom - ROM_REGION( 0x14000, "maincpu", 0 ) // main CPU code - ROM_LOAD( "8.1b", 0x00000, 0x8000, CRC(fe4a3fd6) SHA1(b471b2b1dea23bd1444880ceb8112d7998950dd4) ) // APRIL 09 1987 - Same rom label, different data + ROM_REGION( 0x14000, "maincpu", 0 ) + ROM_LOAD( "8.1b", 0x00000, 0x8000, CRC(fe4a3fd6) SHA1(b471b2b1dea23bd1444880ceb8112d7998950dd4) ) // APRIL 09 1987 - Same ROM label, different data ROM_LOAD( "9.3b", 0x08000, 0x4000, CRC(809d280f) SHA1(931f811f1fe3c71ba82fc44f69ef461bdd9cd2d8) ) ROM_LOAD( "10.4b", 0x10000, 0x4000, CRC(99a3591b) SHA1(45011043ff5620524d79076542bd8c602fe90cf4) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "13.b14", 0x00000, 0x4000, CRC(3e041873) SHA1(8f9e1ec64509c8a7e9e45add9efc95f98f35fcfc) ) ROM_LOAD( "14.b15", 0x04000, 0x8000, CRC(488e3463) SHA1(73ff7ab061be54162f3a548f6bd9ef55b9dec5d9) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "5.13d", 0x00000, 0x4000, CRC(40cb378a) SHA1(764596f6845fc0b787b653a87a1778a56ce4f3f8) ) // chars + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "5.13d", 0x00000, 0x4000, CRC(40cb378a) SHA1(764596f6845fc0b787b653a87a1778a56ce4f3f8) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "1.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "1.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) ROM_LOAD( "2.15f", 0x08000, 0x8000, CRC(dfdb931c) SHA1(33563160239f221f24ca0cb652d14550e9941afe) ) ROM_LOAD( "3.17f", 0x10000, 0x8000, CRC(6954e8c3) SHA1(077bcbe9f80df011c9110d8cf6e08b53d035d1c8) ) ROM_LOAD( "4.19f", 0x18000, 0x8000, CRC(4af6a8bf) SHA1(d004b10b9b8559d1d6d26af35999df2857d87c53) ) - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "12.f4", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) // sprites + ROM_REGION( 0x10000, "sprites", 0 ) + ROM_LOAD( "12.f4", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) ROM_LOAD( "11.f1", 0x08000, 0x8000, CRC(8cf11419) SHA1(79e7a3046878724fde248100ad55a305a427cd46) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "7.19d", 0x00000, 0x4000, CRC(6dba32cf) SHA1(e6433f291364202c1291b137d6ee1840ecf7d72d) ) ROM_LOAD( "6.17d", 0x04000, 0x4000, CRC(6c899071) SHA1(9a776aae897d57e66ebdbcf79f3c673da8b78b05) ) @@ -782,34 +1410,34 @@ ROM_START( dangar ) // all ROM labels are simply numbers, with the owl logo and ROM_LOAD( "82s129.11f", 0x00200, 0x0100, CRC(a5bbd6dc) SHA1(5587844900a24d833500d204f049c05493c4a25a) ) // blue ROM_LOAD( "82s129.2d", 0x00300, 0x0100, CRC(a4ac95a5) SHA1(3b31cd3fd6caedd89d1bedc606a978081fc5431f) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "82s129.7f", 0x00000, 0x0100, CRC(29bc6216) SHA1(1d7864ad06ad0cd5e3d1905fc6066bee1cd90995) ) // sprite palette bank ROM_END ROM_START( dangara ) // all ROM labels are simply numbers, with the owl logo and "Nichibutsu" printed at the bottom - ROM_REGION( 0x14000, "maincpu", 0 ) // main CPU code - ROM_LOAD( "8.1b", 0x00000, 0x8000, CRC(e52638f2) SHA1(6dd3ccb4574a410abf1ac35b4f9518ee21ecac91) ) // DEC. 1 1986 - Same rom label, different data + ROM_REGION( 0x14000, "maincpu", 0 ) + ROM_LOAD( "8.1b", 0x00000, 0x8000, CRC(e52638f2) SHA1(6dd3ccb4574a410abf1ac35b4f9518ee21ecac91) ) // DEC. 1 1986 - Same ROM label, different data ROM_LOAD( "9.3b", 0x08000, 0x4000, CRC(809d280f) SHA1(931f811f1fe3c71ba82fc44f69ef461bdd9cd2d8) ) ROM_LOAD( "10.4b", 0x10000, 0x4000, CRC(99a3591b) SHA1(45011043ff5620524d79076542bd8c602fe90cf4) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "13.14b", 0x00000, 0x4000, CRC(3e041873) SHA1(8f9e1ec64509c8a7e9e45add9efc95f98f35fcfc) ) ROM_LOAD( "14.15b", 0x04000, 0x8000, CRC(488e3463) SHA1(73ff7ab061be54162f3a548f6bd9ef55b9dec5d9) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "5.13d", 0x00000, 0x4000, CRC(40cb378a) SHA1(764596f6845fc0b787b653a87a1778a56ce4f3f8) ) // chars + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "5.13d", 0x00000, 0x4000, CRC(40cb378a) SHA1(764596f6845fc0b787b653a87a1778a56ce4f3f8) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "1.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "1.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) ROM_LOAD( "2.15f", 0x08000, 0x8000, CRC(dfdb931c) SHA1(33563160239f221f24ca0cb652d14550e9941afe) ) ROM_LOAD( "3.17f", 0x10000, 0x8000, CRC(6954e8c3) SHA1(077bcbe9f80df011c9110d8cf6e08b53d035d1c8) ) ROM_LOAD( "4.19f", 0x18000, 0x8000, CRC(4af6a8bf) SHA1(d004b10b9b8559d1d6d26af35999df2857d87c53) ) - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "12.4f", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) // sprites + ROM_REGION( 0x10000, "sprites", 0 ) + ROM_LOAD( "12.4f", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) ROM_LOAD( "11.1f", 0x08000, 0x8000, CRC(8cf11419) SHA1(79e7a3046878724fde248100ad55a305a427cd46) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "7.19d", 0x00000, 0x4000, CRC(6dba32cf) SHA1(e6433f291364202c1291b137d6ee1840ecf7d72d) ) ROM_LOAD( "6.17d", 0x04000, 0x4000, CRC(6c899071) SHA1(9a776aae897d57e66ebdbcf79f3c673da8b78b05) ) @@ -819,34 +1447,34 @@ ROM_START( dangara ) // all ROM labels are simply numbers, with the owl logo and ROM_LOAD( "82s129.11f", 0x00200, 0x0100, CRC(a5bbd6dc) SHA1(5587844900a24d833500d204f049c05493c4a25a) ) // blue ROM_LOAD( "82s129.2d", 0x00300, 0x0100, CRC(a4ac95a5) SHA1(3b31cd3fd6caedd89d1bedc606a978081fc5431f) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "82s129.7f", 0x00000, 0x0100, CRC(29bc6216) SHA1(1d7864ad06ad0cd5e3d1905fc6066bee1cd90995) ) // sprite palette bank ROM_END ROM_START( dangarb ) // all ROM labels are simply numbers, with the owl logo and "Nichibutsu" printed at the bottom - ROM_REGION( 0x14000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x14000, "maincpu", 0 ) ROM_LOAD( "16.1b", 0x00000, 0x8000, CRC(743fa2d4) SHA1(55539796967532b57279801374b2f0cf82cfe1ae) ) // SEPT. 26 1986 ROM_LOAD( "17.3b", 0x08000, 0x4000, CRC(1cdc60a5) SHA1(65f776d14c9461f1a6939ad512eacf6a1a9da2c6) ) // SEPT. 26 1986 ROM_LOAD( "18.4b", 0x10000, 0x4000, CRC(db7f6613) SHA1(c55d1f2fdb86e2b9fbdfad0b156d4d084677b750) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "13.14b", 0x00000, 0x4000, CRC(3e041873) SHA1(8f9e1ec64509c8a7e9e45add9efc95f98f35fcfc) ) ROM_LOAD( "14.15b", 0x04000, 0x8000, CRC(488e3463) SHA1(73ff7ab061be54162f3a548f6bd9ef55b9dec5d9) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "11.13d", 0x00000, 0x4000, CRC(e804ffe1) SHA1(22f16c23b9a82f104dda24bc8fccc08f3f69cf97) ) // chars + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "11.13d", 0x00000, 0x4000, CRC(e804ffe1) SHA1(22f16c23b9a82f104dda24bc8fccc08f3f69cf97) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "1.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "1.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) ROM_LOAD( "2.15f", 0x08000, 0x8000, CRC(dfdb931c) SHA1(33563160239f221f24ca0cb652d14550e9941afe) ) ROM_LOAD( "3.17f", 0x10000, 0x8000, CRC(6954e8c3) SHA1(077bcbe9f80df011c9110d8cf6e08b53d035d1c8) ) ROM_LOAD( "4.19f", 0x18000, 0x8000, CRC(4af6a8bf) SHA1(d004b10b9b8559d1d6d26af35999df2857d87c53) ) - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "12.4f", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) // sprites + ROM_REGION( 0x10000, "sprites", 0 ) + ROM_LOAD( "12.4f", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) ROM_LOAD( "11.1f", 0x08000, 0x8000, CRC(8cf11419) SHA1(79e7a3046878724fde248100ad55a305a427cd46) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "7.19d", 0x00000, 0x4000, CRC(6dba32cf) SHA1(e6433f291364202c1291b137d6ee1840ecf7d72d) ) ROM_LOAD( "6.17d", 0x04000, 0x4000, CRC(6c899071) SHA1(9a776aae897d57e66ebdbcf79f3c673da8b78b05) ) @@ -856,34 +1484,34 @@ ROM_START( dangarb ) // all ROM labels are simply numbers, with the owl logo and ROM_LOAD( "82s129.11f", 0x00200, 0x0100, CRC(a5bbd6dc) SHA1(5587844900a24d833500d204f049c05493c4a25a) ) // blue ROM_LOAD( "82s129.2d", 0x00300, 0x0100, CRC(a4ac95a5) SHA1(3b31cd3fd6caedd89d1bedc606a978081fc5431f) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "82s129.7f", 0x00000, 0x0100, CRC(29bc6216) SHA1(1d7864ad06ad0cd5e3d1905fc6066bee1cd90995) ) // sprite palette bank ROM_END ROM_START( dangarj ) // all ROM labels are simply numbers, with the owl logo and "Nichibutsu" printed at the bottom - ROM_REGION( 0x14000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x14000, "maincpu", 0 ) ROM_LOAD( "16.1b", 0x00000, 0x8000, CRC(1e14b0b4) SHA1(dcb7fe79ca17afe51ba3c1554183c773af13142f) ) ROM_LOAD( "17.3b", 0x08000, 0x4000, CRC(9ba92111) SHA1(0050cd83f4e7a17601493d7d44af4501e52aad20) ) ROM_LOAD( "18.4b", 0x10000, 0x4000, CRC(db7f6613) SHA1(c55d1f2fdb86e2b9fbdfad0b156d4d084677b750) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "21.14b", 0x00000, 0x4000, CRC(3e041873) SHA1(8f9e1ec64509c8a7e9e45add9efc95f98f35fcfc) ) ROM_LOAD( "22.15b", 0x04000, 0x8000, CRC(488e3463) SHA1(73ff7ab061be54162f3a548f6bd9ef55b9dec5d9) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "11.13d", 0x00000, 0x4000, CRC(e804ffe1) SHA1(22f16c23b9a82f104dda24bc8fccc08f3f69cf97) ) // chars + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "11.13d", 0x00000, 0x4000, CRC(e804ffe1) SHA1(22f16c23b9a82f104dda24bc8fccc08f3f69cf97) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "7.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "7.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) ROM_LOAD( "8.15f", 0x08000, 0x8000, CRC(dfdb931c) SHA1(33563160239f221f24ca0cb652d14550e9941afe) ) ROM_LOAD( "9.17f", 0x10000, 0x8000, CRC(6954e8c3) SHA1(077bcbe9f80df011c9110d8cf6e08b53d035d1c8) ) // different label for these 4, same data ROM_LOAD( "10.19f", 0x18000, 0x8000, CRC(4af6a8bf) SHA1(d004b10b9b8559d1d6d26af35999df2857d87c53) ) - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "20.4f", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) // sprites + ROM_REGION( 0x10000, "sprites", 0 ) + ROM_LOAD( "20.4f", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) ROM_LOAD( "19.1f", 0x08000, 0x8000, CRC(8cf11419) SHA1(79e7a3046878724fde248100ad55a305a427cd46) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "15.19d", 0x00000, 0x4000, CRC(6dba32cf) SHA1(e6433f291364202c1291b137d6ee1840ecf7d72d) ) // different label same data ROM_LOAD( "12.17d", 0x04000, 0x4000, CRC(6c899071) SHA1(9a776aae897d57e66ebdbcf79f3c673da8b78b05) ) @@ -893,7 +1521,7 @@ ROM_START( dangarj ) // all ROM labels are simply numbers, with the owl logo and ROM_LOAD( "82s129.11f", 0x00200, 0x0100, CRC(a5bbd6dc) SHA1(5587844900a24d833500d204f049c05493c4a25a) ) // blue ROM_LOAD( "82s129.2d", 0x00300, 0x0100, CRC(a4ac95a5) SHA1(3b31cd3fd6caedd89d1bedc606a978081fc5431f) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "82s129.7f", 0x00000, 0x0100, CRC(29bc6216) SHA1(1d7864ad06ad0cd5e3d1905fc6066bee1cd90995) ) // sprite palette bank ROM_REGION( 0x2000, "prot_chip", 0 ) // located on a daughter card DG-3 with an additional 8.00MHz OSC & Nichibutsu 1412M2 XBA (unknown MCU?) @@ -901,29 +1529,29 @@ ROM_START( dangarj ) // all ROM labels are simply numbers, with the owl logo and ROM_END ROM_START( dangarbt ) - ROM_REGION( 0x14000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x14000, "maincpu", 0 ) ROM_LOAD( "8", 0x00000, 0x8000, CRC(8136fd10) SHA1(5f2ca08fab0d9431af38ef66922fdb6bd9a132e2) ) ROM_LOAD( "9", 0x08000, 0x4000, CRC(3ce5ec11) SHA1(bcc0df6167d0b84b9f260435c1999b9d3605fcd4) ) ROM_LOAD( "dangar2.018", 0x10000, 0x4000, CRC(db7f6613) SHA1(c55d1f2fdb86e2b9fbdfad0b156d4d084677b750) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "dangar13.b14", 0x00000, 0x4000, CRC(3e041873) SHA1(8f9e1ec64509c8a7e9e45add9efc95f98f35fcfc) ) ROM_LOAD( "dangar14.b15", 0x04000, 0x8000, CRC(488e3463) SHA1(73ff7ab061be54162f3a548f6bd9ef55b9dec5d9) ) - ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "dangar2.011", 0x00000, 0x4000, CRC(e804ffe1) SHA1(22f16c23b9a82f104dda24bc8fccc08f3f69cf97) ) // chars + ROM_REGION( 0x04000, "chars", 0 ) + ROM_LOAD( "dangar2.011", 0x00000, 0x4000, CRC(e804ffe1) SHA1(22f16c23b9a82f104dda24bc8fccc08f3f69cf97) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "dangar01.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "dangar01.14f", 0x00000, 0x8000, CRC(d59ed1f1) SHA1(e55314b5a078145ad7a5e95cb792b4fd32cfb05d) ) ROM_LOAD( "dangar02.15f", 0x08000, 0x8000, CRC(dfdb931c) SHA1(33563160239f221f24ca0cb652d14550e9941afe) ) ROM_LOAD( "dangar03.17f", 0x10000, 0x8000, CRC(6954e8c3) SHA1(077bcbe9f80df011c9110d8cf6e08b53d035d1c8) ) ROM_LOAD( "dangar04.19f", 0x18000, 0x8000, CRC(4af6a8bf) SHA1(d004b10b9b8559d1d6d26af35999df2857d87c53) ) - ROM_REGION( 0x10000, "gfx3", 0 ) - ROM_LOAD( "dangarxx.f4", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) // sprites + ROM_REGION( 0x10000, "sprites", 0 ) + ROM_LOAD( "dangarxx.f4", 0x00000, 0x8000, CRC(55711884) SHA1(2682ebc8d88d0d6c430b7df34ed362bc81047072) ) ROM_LOAD( "dangarxx.f1", 0x08000, 0x8000, CRC(8cf11419) SHA1(79e7a3046878724fde248100ad55a305a427cd46) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "dangar07.19d", 0x00000, 0x4000, CRC(6dba32cf) SHA1(e6433f291364202c1291b137d6ee1840ecf7d72d) ) ROM_LOAD( "dangar06.17d", 0x04000, 0x4000, CRC(6c899071) SHA1(9a776aae897d57e66ebdbcf79f3c673da8b78b05) ) @@ -933,57 +1561,57 @@ ROM_START( dangarbt ) ROM_LOAD( "82s129.11f", 0x00200, 0x0100, CRC(a5bbd6dc) SHA1(5587844900a24d833500d204f049c05493c4a25a) ) // blue ROM_LOAD( "82s129.2d", 0x00300, 0x0100, CRC(a4ac95a5) SHA1(3b31cd3fd6caedd89d1bedc606a978081fc5431f) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "82s129.7f", 0x00000, 0x0100, CRC(29bc6216) SHA1(1d7864ad06ad0cd5e3d1905fc6066bee1cd90995) ) // sprite palette bank ROM_END ROM_START( ninjemak ) - ROM_REGION( 0x18000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x18000, "maincpu", 0 ) ROM_LOAD( "ninjemak.1", 0x00000, 0x8000, CRC(12b0a619) SHA1(7b42097be6423931256d5b7fdafb98bee1b42e64) ) ROM_LOAD( "ninjemak.2", 0x08000, 0x4000, CRC(d5b505d1) SHA1(53935549754e8a71f0620630c2e59c21d52edcba) ) ROM_LOAD( "ninjemak.3", 0x10000, 0x8000, CRC(68c92bf6) SHA1(90633622dab0e450a29230b600e0d60a42f407f4) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "ninjemak.12", 0x00000, 0x4000, CRC(3d1cd329) SHA1(6abd8e0dbecddfd67c4d358b958c850136fd3c29) ) ROM_LOAD( "ninjemak.13", 0x04000, 0x8000, CRC(ac3a0b81) SHA1(39f2c305706e313d5256c357a3c8b57bbe45d3d7) ) - ROM_REGION( 0x08000, "gfx1", 0 ) - ROM_LOAD( "ninjemak.4", 0x00000, 0x8000, CRC(83702c37) SHA1(c063288cf74dee74005c6d0dea57e9ec3adebc83) ) // chars + ROM_REGION( 0x08000, "chars", 0 ) + ROM_LOAD( "ninjemak.4", 0x00000, 0x8000, CRC(83702c37) SHA1(c063288cf74dee74005c6d0dea57e9ec3adebc83) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "ninjemak.8", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "ninjemak.8", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) ROM_LOAD( "ninjemak.9", 0x08000, 0x8000, CRC(934e1703) SHA1(451f8d01d9035d91c969cdc3fb582a00007da7df) ) ROM_LOAD( "ninjemak.10", 0x10000, 0x8000, CRC(955b5c45) SHA1(936bfe2599228dd0861bbcfe15152ac5e9b906d1) ) ROM_LOAD( "ninjemak.11", 0x18000, 0x8000, CRC(bbd2e51c) SHA1(51bc266cf8161610204e5d98e56346b1d8d3c009) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "ninjemak.16", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) // sprites + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "ninjemak.16", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) ROM_LOAD( "ninjemak.17", 0x08000, 0x8000, CRC(a3efd0fc) SHA1(69d40707b0570c2f1be6247f0209ba9e60a83ed0) ) ROM_LOAD( "ninjemak.14", 0x10000, 0x8000, CRC(bff332d3) SHA1(d277ba18034b083eaafa969d90685563994416fa) ) ROM_LOAD( "ninjemak.15", 0x18000, 0x8000, CRC(56430ed4) SHA1(68356a0f68404ef70d8dc17d5cbdf5e1f28badcf) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "ninjemak.7", 0x00000, 0x4000, CRC(80c20d36) SHA1(f20724754824030d62059388f3ea2224f5b7a60e) ) ROM_LOAD( "ninjemak.6", 0x04000, 0x4000, CRC(1da7a651) SHA1(5307452058164a0bc39d144dd204627a9ead7543) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) // data for MCU/blitter? ROM_LOAD( "ninjemak.5", 0x00000, 0x4000, CRC(5f91dd30) SHA1(3513c0a2e4ca83f602cacad6af9c07fe9e4b16a1) ) // text layer data - ROM_REGION( 0x0400, "proms", 0 ) // Region 3 - color data + ROM_REGION( 0x0400, "proms", 0 ) // color data ROM_LOAD( "ninjemak.pr1", 0x00000, 0x0100, CRC(8a62d4e4) SHA1(99ca4da01ea1b5585f6e3ebf162c3f988ab317e5) ) // red ROM_LOAD( "ninjemak.pr2", 0x00100, 0x0100, CRC(2ccf976f) SHA1(b804ee761793697087fbe3372352f301a22feeab) ) // green ROM_LOAD( "ninjemak.pr3", 0x00200, 0x0100, CRC(16b2a7a4) SHA1(53c410b439c8a835447f15f2ab250b363b3f7888) ) // blue ROM_LOAD( "yncp-2d.bin", 0x00300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "yncp-7f.bin", 0x00000, 0x0100, CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) // sprite palette bank ROM_END -/* Galivan hardware. Two PCBs: +/* Galivan hardware. Two PCBs: 231086-B: Silkscreened "Tecfri S.A.", "Nichibutsu" and "Made in Spain", with a small sub-board. 281286-A: With two small sub-boards, labeled "61212/1" and "61212/2". */ ROM_START( ninjemat ) - ROM_REGION( 0x18000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x18000, "maincpu", 0 ) ROM_LOAD( "10.e19", 0x00000, 0x8000, CRC(804e7e4c) SHA1(d10edc6b2e283a8b0c8621645949ad70196a0dd6) ) ROM_LOAD( "9.e17", 0x08000, 0x4000, CRC(55d8f1a1) SHA1(886ed255007faf67908e8af3e52d7447c9eb260b) ) ROM_LOAD( "8.e16", 0x10000, 0x4000, CRC(8c5782da) SHA1(2673eae866e9c1e1832f2525c167972b147d2147) ) @@ -992,22 +1620,22 @@ ROM_START( ninjemat ) ROM_LOAD( "16.e13", 0x00000, 0x4000, CRC(dd7e0be2) SHA1(32c63f1dde9561b7fce7e9dba7d34511fdd7d0b0) ) ROM_LOAD( "15.e15", 0x04000, 0x8000, CRC(236c9824) SHA1(498b8cdcae74c24421408ca7795d2787a7553e17) ) - ROM_REGION( 0x08000, "gfx1", 0 ) - ROM_LOAD( "7.c7", 0x00000, 0x8000, CRC(d13c22db) SHA1(38e992f2c5f425b20d20fec64d6ab979e72e0e3c) ) // chars + ROM_REGION( 0x08000, "chars", 0 ) + ROM_LOAD( "7.c7", 0x00000, 0x8000, CRC(d13c22db) SHA1(38e992f2c5f425b20d20fec64d6ab979e72e0e3c) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "4.a6", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "4.a6", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) ROM_LOAD( "3.a4", 0x08000, 0x8000, CRC(934e1703) SHA1(451f8d01d9035d91c969cdc3fb582a00007da7df) ) ROM_LOAD( "2.a3", 0x10000, 0x8000, CRC(955b5c45) SHA1(936bfe2599228dd0861bbcfe15152ac5e9b906d1) ) ROM_LOAD( "1.a1", 0x18000, 0x8000, CRC(bbd2e51c) SHA1(51bc266cf8161610204e5d98e56346b1d8d3c009) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "12.a4", 0x00000, 0x8000, CRC(3cb41a2d) SHA1(7535bd5fa6b6ee71617e06ee690da29ccce7560e) ) // sprites + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "12.a4", 0x00000, 0x8000, CRC(3cb41a2d) SHA1(7535bd5fa6b6ee71617e06ee690da29ccce7560e) ) ROM_LOAD( "11.a6", 0x08000, 0x8000, CRC(e487754c) SHA1(3d6ef9a995a72856f24ca7384f55028d53b909c4) ) ROM_LOAD( "14.a1", 0x10000, 0x8000, CRC(a354129b) SHA1(4b36e6fcd0782898d687f6927c76c8ec7a2f5315) ) ROM_LOAD( "13.a3", 0x18000, 0x8000, CRC(7e52abd4) SHA1(476449c57dc2d5803c604acc8a45bfefd3327b06) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "5.c1", 0x00000, 0x4000, CRC(e8469d44) SHA1(a015e4f67597fca438ed4c714b9854615e5d59b7) ) ROM_LOAD( "6.c3", 0x04000, 0x4000, BAD_DUMP CRC(163a024e) SHA1(bb4c78f5e231e8e9c9556790d94972b963b1480e) ) // Bad ROM? @@ -1017,123 +1645,123 @@ ROM_START( ninjemat ) ROM_LOAD( "7114.a11", 0x00200, 0x0100, CRC(1fe3d4fd) SHA1(6f1f432667ec1d7286149ccde6790b74499aa50a) ) // blue ROM_LOAD( "7114.c2", 0x00300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "7114.a7", 0x00000, 0x0100, CRC(6d17bab4) SHA1(55dc38ef2dd9a76398abdc7a5171850530c20023) ) // sprite palette bank ROM_END ROM_START( youma ) - ROM_REGION( 0x18000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x18000, "maincpu", 0 ) ROM_LOAD( "ync-1.bin", 0x00000, 0x8000, CRC(0552adab) SHA1(183cf88d288875fbb2b60e2712e5a1671511351d) ) ROM_LOAD( "ync-2.bin", 0x08000, 0x4000, CRC(f961e5e6) SHA1(cbf9d3a256937da9e17734f89652e049242910b8) ) ROM_LOAD( "ync-3.bin", 0x10000, 0x8000, CRC(9ad50a5e) SHA1(2532b10e2468b1c74440fd8090489142e5fc240b) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "ninjemak.12", 0x00000, 0x4000, CRC(3d1cd329) SHA1(6abd8e0dbecddfd67c4d358b958c850136fd3c29) ) ROM_LOAD( "ninjemak.13", 0x04000, 0x8000, CRC(ac3a0b81) SHA1(39f2c305706e313d5256c357a3c8b57bbe45d3d7) ) - ROM_REGION( 0x08000, "gfx1", 0 ) - ROM_LOAD( "ync-4.bin", 0x00000, 0x8000, CRC(a1954f44) SHA1(b10a22b51bd1a02c0d7b116b4d7390003c41decf) ) // chars + ROM_REGION( 0x08000, "chars", 0 ) + ROM_LOAD( "ync-4.bin", 0x00000, 0x8000, CRC(a1954f44) SHA1(b10a22b51bd1a02c0d7b116b4d7390003c41decf) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "ninjemak.8", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "ninjemak.8", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) ROM_LOAD( "ninjemak.9", 0x08000, 0x8000, CRC(934e1703) SHA1(451f8d01d9035d91c969cdc3fb582a00007da7df) ) ROM_LOAD( "ninjemak.10", 0x10000, 0x8000, CRC(955b5c45) SHA1(936bfe2599228dd0861bbcfe15152ac5e9b906d1) ) ROM_LOAD( "ninjemak.11", 0x18000, 0x8000, CRC(bbd2e51c) SHA1(51bc266cf8161610204e5d98e56346b1d8d3c009) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "ninjemak.16", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) // sprites + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "ninjemak.16", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) ROM_LOAD( "ninjemak.17", 0x08000, 0x8000, CRC(a3efd0fc) SHA1(69d40707b0570c2f1be6247f0209ba9e60a83ed0) ) ROM_LOAD( "ninjemak.14", 0x10000, 0x8000, CRC(bff332d3) SHA1(d277ba18034b083eaafa969d90685563994416fa) ) ROM_LOAD( "ninjemak.15", 0x18000, 0x8000, CRC(56430ed4) SHA1(68356a0f68404ef70d8dc17d5cbdf5e1f28badcf) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "ninjemak.7", 0x00000, 0x4000, CRC(80c20d36) SHA1(f20724754824030d62059388f3ea2224f5b7a60e) ) ROM_LOAD( "ninjemak.6", 0x04000, 0x4000, CRC(1da7a651) SHA1(5307452058164a0bc39d144dd204627a9ead7543) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) // data for MCU/blitter? ROM_LOAD( "ync-5.bin", 0x00000, 0x4000, CRC(993e4ab2) SHA1(aceafc83b36db4db923d27f77ad045e626678bae) ) // text layer data - ROM_REGION( 0x0400, "proms", 0 ) // Region 3 - color data + ROM_REGION( 0x0400, "proms", 0 ) // color data ROM_LOAD( "yncp-6e.bin", 0x00000, 0x0100, CRC(ea47b91a) SHA1(9921aa1ef882fb664d85d3e065223610262ca112) ) // red ROM_LOAD( "yncp-7e.bin", 0x00100, 0x0100, CRC(e94c0fed) SHA1(68581c91e9aa485f78af6b6a5c98612372cd5b17) ) // green ROM_LOAD( "yncp-8e.bin", 0x00200, 0x0100, CRC(ffb4b287) SHA1(c3c7018e6d5e18cc2db135812d0dc3824710ab4c) ) // blue ROM_LOAD( "yncp-2d.bin", 0x00300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "yncp-7f.bin", 0x00000, 0x0100, CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) // sprite palette bank ROM_END ROM_START( youma2 ) - ROM_REGION( 0x18000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x18000, "maincpu", 0 ) ROM_LOAD( "1.1d", 0x00000, 0x8000, CRC(171dbe99) SHA1(c9fdca3849e20ab702415984b4039cf2cfa34cb8) ) // x ROM_LOAD( "2.3d", 0x08000, 0x4000, CRC(e502d62a) SHA1(fdfb44c17557a513fe855b14140fe48921d6802b) ) // x ROM_LOAD( "3.4d", 0x10000, 0x8000, CRC(cb84745c) SHA1(a961c329be26c423212078d04d5f783c796136b4) ) // x - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "12.14b", 0x00000, 0x4000, CRC(3d1cd329) SHA1(6abd8e0dbecddfd67c4d358b958c850136fd3c29) ) ROM_LOAD( "13.15b", 0x04000, 0x8000, CRC(ac3a0b81) SHA1(39f2c305706e313d5256c357a3c8b57bbe45d3d7) ) - ROM_REGION( 0x08000, "gfx1", 0 ) - ROM_LOAD( "4.7d", 0x00000, 0x8000, CRC(40aeffd8) SHA1(f31e723323a0cdb8efa8b320f1c4efd646401ca4) ) // chars x + ROM_REGION( 0x08000, "chars", 0 ) + ROM_LOAD( "4.7d", 0x00000, 0x8000, CRC(40aeffd8) SHA1(f31e723323a0cdb8efa8b320f1c4efd646401ca4) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "ninjemak.8", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "ninjemak.8", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) ROM_LOAD( "ninjemak.9", 0x08000, 0x8000, CRC(934e1703) SHA1(451f8d01d9035d91c969cdc3fb582a00007da7df) ) ROM_LOAD( "ninjemak.10", 0x10000, 0x8000, CRC(955b5c45) SHA1(936bfe2599228dd0861bbcfe15152ac5e9b906d1) ) ROM_LOAD( "ninjemak.11", 0x18000, 0x8000, CRC(bbd2e51c) SHA1(51bc266cf8161610204e5d98e56346b1d8d3c009) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "ninjemak.16", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) // sprites + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "ninjemak.16", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) ROM_LOAD( "ninjemak.17", 0x08000, 0x8000, CRC(a3efd0fc) SHA1(69d40707b0570c2f1be6247f0209ba9e60a83ed0) ) ROM_LOAD( "ninjemak.14", 0x10000, 0x8000, CRC(bff332d3) SHA1(d277ba18034b083eaafa969d90685563994416fa) ) ROM_LOAD( "ninjemak.15", 0x18000, 0x8000, CRC(56430ed4) SHA1(68356a0f68404ef70d8dc17d5cbdf5e1f28badcf) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "ninjemak.7", 0x00000, 0x4000, CRC(80c20d36) SHA1(f20724754824030d62059388f3ea2224f5b7a60e) ) ROM_LOAD( "ninjemak.6", 0x04000, 0x4000, CRC(1da7a651) SHA1(5307452058164a0bc39d144dd204627a9ead7543) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) // data for MCU/blitter? - ROM_LOAD( "5.15d", 0x00000, 0x4000, CRC(1b4f64aa) SHA1(2cb2db946bf93e0928d6aa2e2dd29acb92981567) ) // text layer data x + ROM_LOAD( "5.15d", 0x00000, 0x4000, CRC(1b4f64aa) SHA1(2cb2db946bf93e0928d6aa2e2dd29acb92981567) ) // text layer data - ROM_REGION( 0x0400, "proms", 0 ) // Region 3 - color data - ROM_LOAD( "bpr.6e", 0x00000, 0x0100, CRC(8a62d4e4) SHA1(99ca4da01ea1b5585f6e3ebf162c3f988ab317e5) ) // red x + ROM_REGION( 0x0400, "proms", 0 ) // color data + ROM_LOAD( "bpr.6e", 0x00000, 0x0100, CRC(8a62d4e4) SHA1(99ca4da01ea1b5585f6e3ebf162c3f988ab317e5) ) // red ROM_LOAD( "bpr.7e", 0x00100, 0x0100, CRC(2ccf976f) SHA1(b804ee761793697087fbe3372352f301a22feeab) ) // green x - ROM_LOAD( "bpr.8e", 0x00200, 0x0100, CRC(16b2a7a4) SHA1(53c410b439c8a835447f15f2ab250b363b3f7888) ) // blue x + ROM_LOAD( "bpr.8e", 0x00200, 0x0100, CRC(16b2a7a4) SHA1(53c410b439c8a835447f15f2ab250b363b3f7888) ) // blue ROM_LOAD( "bpr.2d", 0x00300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "bpr.7f", 0x00000, 0x0100, CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) // sprite palette bank ROM_END ROM_START( youmab ) - ROM_REGION( 0x18000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x18000, "maincpu", 0 ) ROM_LOAD( "electric1.3u", 0x00000, 0x8000, CRC(cc4fdb92) SHA1(9ce963db23f91f91e775a0b9a819f00db869120f) ) ROM_LOAD( "electric3.3r", 0x10000, 0x8000, CRC(c1bc7387) SHA1(ad05bff02ece515465a9506e09c252c446c8f81d) ) - ROM_REGION( 0x10000, "user2", 0 ) // main CPU code + ROM_REGION( 0x10000, "extra_banked_rom", 0 ) // This ROM is double the size of the original one, appears to have extra (banked) code for 0x8000 ROM_LOAD( "electric2.3t", 0x00000, 0x8000, CRC(99aee3bc) SHA1(5ffd60b959dda3fd41609c89a3486a989b1e2530) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "electric12.5e", 0x00000, 0x4000, CRC(3d1cd329) SHA1(6abd8e0dbecddfd67c4d358b958c850136fd3c29) ) ROM_LOAD( "electric13.5d", 0x04000, 0x8000, CRC(ac3a0b81) SHA1(39f2c305706e313d5256c357a3c8b57bbe45d3d7) ) - ROM_REGION( 0x08000, "gfx1", 0 ) - ROM_LOAD( "electric4.3m", 0x00000, 0x8000, CRC(a1954f44) SHA1(b10a22b51bd1a02c0d7b116b4d7390003c41decf) ) // chars + ROM_REGION( 0x08000, "chars", 0 ) + ROM_LOAD( "electric4.3m", 0x00000, 0x8000, CRC(a1954f44) SHA1(b10a22b51bd1a02c0d7b116b4d7390003c41decf) ) - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "electric8.1f", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "electric8.1f", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) ROM_LOAD( "electric9.1d", 0x08000, 0x8000, CRC(77a964c1) SHA1(47eb2d4df240e5493951b0a170cd07b2d5ecc18a) ) // different (bad?) ROM_LOAD( "electric10.1b", 0x10000, 0x8000, CRC(955b5c45) SHA1(936bfe2599228dd0861bbcfe15152ac5e9b906d1) ) ROM_LOAD( "electric11.1a", 0x18000, 0x8000, CRC(bbd2e51c) SHA1(51bc266cf8161610204e5d98e56346b1d8d3c009) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "electric16.1p", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) // sprites + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "electric16.1p", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) ROM_LOAD( "electric17.1m", 0x08000, 0x8000, CRC(a3efd0fc) SHA1(69d40707b0570c2f1be6247f0209ba9e60a83ed0) ) ROM_LOAD( "electric14.1t", 0x10000, 0x8000, CRC(bff332d3) SHA1(d277ba18034b083eaafa969d90685563994416fa) ) ROM_LOAD( "electric15.1r", 0x18000, 0x8000, CRC(56430ed4) SHA1(68356a0f68404ef70d8dc17d5cbdf5e1f28badcf) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "electric7.3a", 0x00000, 0x4000, CRC(80c20d36) SHA1(f20724754824030d62059388f3ea2224f5b7a60e) ) ROM_LOAD( "electric6.3b", 0x04000, 0x4000, CRC(1da7a651) SHA1(5307452058164a0bc39d144dd204627a9ead7543) ) @@ -1143,7 +1771,7 @@ ROM_START( youmab ) ROM_LOAD( "prom82s129.2l", 0x00200, 0x0100, CRC(ffb4b287) SHA1(c3c7018e6d5e18cc2db135812d0dc3824710ab4c) ) // blue ROM_LOAD( "prom82s129.3s", 0x00300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "prom82s129.1l", 0x00000, 0x0100, CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) // sprite palette bank ROM_END @@ -1218,126 +1846,61 @@ PR.8E [ffb4b287] = YNCP-8E.BIN from Youma Ninpou Chou (Nichibutsu, Ninja */ ROM_START( youmab2 ) - ROM_REGION( 0x18000, "maincpu", 0 ) // main CPU code + ROM_REGION( 0x18000, "maincpu", 0 ) ROM_LOAD( "1.1d", 0x00000, 0x8000, CRC(692ae497) SHA1(572e5a1eae9b0bb48f65dce5de2df5c5ae95a3bd) ) // sldh ROM_LOAD( "3.4d", 0x10000, 0x8000, CRC(ebf61afc) SHA1(30235a90e8316f5033d44d31f02cca97c64f2d5e) ) // sldh - ROM_REGION( 0x10000, "user2", 0 ) // main CPU code - // This rom is double the size of the original one, appears to have extra (banked) code for 0x8000 + ROM_REGION( 0x10000, "extra_banked_rom", 0 ) + // This ROM is double the size of the original one, appears to have extra (banked) code for 0x8000 ROM_LOAD( "2.2d", 0x00000, 0x8000, CRC(99aee3bc) SHA1(5ffd60b959dda3fd41609c89a3486a989b1e2530) ) // same as first bootleg - ROM_REGION( 0x10000, "audiocpu", 0 ) // sound CPU code + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "11.13b", 0x00000, 0x4000, CRC(3d1cd329) SHA1(6abd8e0dbecddfd67c4d358b958c850136fd3c29) ) ROM_LOAD( "12.15b", 0x04000, 0x8000, CRC(ac3a0b81) SHA1(39f2c305706e313d5256c357a3c8b57bbe45d3d7) ) - ROM_REGION( 0x08000, "gfx1", 0 ) - ROM_LOAD( "4.7d", 0x00000, 0x8000, CRC(a1954f44) SHA1(b10a22b51bd1a02c0d7b116b4d7390003c41decf) ) // chars, sldh + ROM_REGION( 0x08000, "chars", 0 ) + ROM_LOAD( "4.7d", 0x00000, 0x8000, CRC(a1954f44) SHA1(b10a22b51bd1a02c0d7b116b4d7390003c41decf) ) // sldh - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "7.13f", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) // tiles + ROM_REGION( 0x20000, "tiles", 0 ) + ROM_LOAD( "7.13f", 0x00000, 0x8000, CRC(655f0a58) SHA1(8ffe73cec68d52c7b09651b546289613d6d4dde4) ) ROM_LOAD( "8.15f", 0x08000, 0x8000, CRC(934e1703) SHA1(451f8d01d9035d91c969cdc3fb582a00007da7df) ) ROM_LOAD( "9.16f", 0x10000, 0x8000, CRC(955b5c45) SHA1(936bfe2599228dd0861bbcfe15152ac5e9b906d1) ) ROM_LOAD( "10.18f", 0x18000, 0x8000, CRC(bbd2e51c) SHA1(51bc266cf8161610204e5d98e56346b1d8d3c009) ) - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "15.4h", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) // sprites + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "15.4h", 0x00000, 0x8000, CRC(8df93fed) SHA1(ef37c78d4abbdbe9f427e3d9345f52464261116d) ) ROM_LOAD( "16.6h", 0x08000, 0x8000, CRC(a3efd0fc) SHA1(69d40707b0570c2f1be6247f0209ba9e60a83ed0) ) ROM_LOAD( "13.1h", 0x10000, 0x8000, CRC(bff332d3) SHA1(d277ba18034b083eaafa969d90685563994416fa) ) ROM_LOAD( "14.3h", 0x18000, 0x8000, CRC(56430ed4) SHA1(68356a0f68404ef70d8dc17d5cbdf5e1f28badcf) ) - ROM_REGION( 0x8000, "gfx4", 0 ) // background tilemaps + ROM_REGION( 0x8000, "bgtiles", 0 ) ROM_LOAD( "6.18d", 0x00000, 0x4000, CRC(80c20d36) SHA1(f20724754824030d62059388f3ea2224f5b7a60e) ) ROM_LOAD( "5.17d", 0x04000, 0x4000, CRC(1da7a651) SHA1(5307452058164a0bc39d144dd204627a9ead7543) ) - ROM_REGION( 0x0400, "proms", 0 ) // Region 3 - color data + ROM_REGION( 0x0400, "proms", 0 ) // color data ROM_LOAD( "pr.6e", 0x00000, 0x0100, CRC(ea47b91a) SHA1(9921aa1ef882fb664d85d3e065223610262ca112) ) // red ROM_LOAD( "pr.7e", 0x00100, 0x0100, CRC(6d66da81) SHA1(ffdd1778ce5b7614b90b5da85589c5871405d3fe) ) // green // different (bad?) ROM_LOAD( "pr.8e", 0x00200, 0x0100, CRC(ffb4b287) SHA1(c3c7018e6d5e18cc2db135812d0dc3824710ab4c) ) // blue ROM_LOAD( "pr.2e", 0x00300, 0x0100, CRC(23bade78) SHA1(7e2de5eb08d888f97830807b6dbe85d09bb3b7f8) ) // sprite lookup table - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "sprpalbank_prom", 0 ) ROM_LOAD( "pr.7h", 0x00000, 0x0100, CRC(262d0809) SHA1(a67281af02cef082023c0d7d57e3824aeef67450) ) // sprite palette bank ROM_END +} // anonymous namespace -void galivan_state::youmab_extra_bank_w(uint8_t data) -{ - if (data == 0xff) - m_rombank->set_entry(1); - else if (data == 0x00) - m_rombank->set_entry(0); - else - printf("data %03x\n", data); -} -uint8_t galivan_state::youmab_8a_r() -{ - return machine().rand(); -} - -void galivan_state::youmab_81_w(uint8_t data) -{ - // ?? -} - -// scrolling is tied to a serial port, reads from 0xe43d-0xe43e-0xe43f-0xe440 -void galivan_state::youmab_84_w(uint8_t data) -{ - m_shift_val &= ~((0x80 >> 7) << m_shift_scroll); - m_shift_val |= (((data & 0x80) >> 7) << m_shift_scroll); - - m_shift_scroll++; - - //popmessage("%08x",m_shift_val); - - //if(m_shift_scroll == 25) -} - -void galivan_state::youmab_86_w(uint8_t data) -{ - // latch values - { - m_scrolly = (m_shift_val & 0x0003ff); - m_scrollx = (m_shift_val & 0x7ffc00) >> 10; - - //popmessage("%08x %08x %08x",m_scrollx,m_scrolly,m_shift_val); - } - - m_shift_val = 0; - m_shift_scroll = 0; -} - -void galivan_state::init_youmab() -{ - // TODO: move all of this to an address map instead - m_maincpu->space(AS_IO).install_write_handler(0x82, 0x82, write8smo_delegate(*this, FUNC(galivan_state::youmab_extra_bank_w))); // banks rom at 0x8000? writes 0xff and 0x00 before executing code there - m_maincpu->space(AS_PROGRAM).install_rom(0x0000, 0x7fff, memregion("maincpu")->base()); - - m_maincpu->space(AS_PROGRAM).install_read_bank(0x8000, 0xbfff, m_rombank); - m_rombank->configure_entries(0, 2, memregion("user2")->base(), 0x4000); - m_rombank->set_entry(0); - - m_maincpu->space(AS_IO).install_write_handler(0x81, 0x81, write8smo_delegate(*this, FUNC(galivan_state::youmab_81_w))); // ?? often, alternating values - m_maincpu->space(AS_IO).install_write_handler(0x84, 0x84, write8smo_delegate(*this, FUNC(galivan_state::youmab_84_w))); // ?? often, sequence.. - - m_maincpu->space(AS_PROGRAM).nop_write(0xd800, 0xd81f); // scrolling isn't here.. - - m_maincpu->space(AS_IO).install_read_handler(0x8a, 0x8a, read8smo_delegate(*this, FUNC(galivan_state::youmab_8a_r))); // ??? - - m_maincpu->space(AS_IO).install_write_handler(0x86, 0x86, write8smo_delegate(*this, FUNC(galivan_state::youmab_86_w))); -} - -GAME( 1985, galivan, 0, galivan, galivan, galivan_state, empty_init, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/26/1985)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, galivan2, galivan, galivan, galivan, galivan_state, empty_init, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/16/1985)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, galivan3, galivan, galivan, galivan, galivan_state, empty_init, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/11/1985)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dangar, 0, galivan, dangar, galivan_state, empty_init, ROT270, "Nichibutsu", "Ufo Robo Dangar (4/09/1987)", MACHINE_SUPPORTS_SAVE ) // GV-1412-I and GV-1412-II pcbs -GAME( 1986, dangara, dangar, galivan, dangar2, galivan_state, empty_init, ROT270, "Nichibutsu", "Ufo Robo Dangar (12/1/1986)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dangarj, dangar, dangarj, dangar2, dangarj_state, empty_init, ROT270, "Nichibutsu", "Ufo Robo Dangar (9/26/1986, Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, dangarb, dangar, galivan, dangar2, galivan_state, empty_init, ROT270, "bootleg", "Ufo Robo Dangar (9/26/1986, bootleg set 1)", MACHINE_SUPPORTS_SAVE ) // checks protection like dangarj but check readback is patched at 0x9d58 (also checks I/O port 0xc0?) -GAME( 1986, dangarbt, dangar, galivan, dangarb, galivan_state, empty_init, ROT270, "bootleg", "Ufo Robo Dangar (9/26/1986, bootleg set 2)", MACHINE_SUPPORTS_SAVE ) // directly patched at entry point 0x9d44 -GAME( 1986, ninjemak, 0, ninjemak, ninjemak, galivan_state, empty_init, ROT270, "Nichibutsu", "Ninja Emaki (US)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) -GAME( 1986, ninjemat, ninjemak, galivan, galivan, galivan_state, empty_init, ROT270, "Nichibutsu (Tecfri license)", "Ninja Emaki (Tecfri license)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) -GAME( 1986, youma, ninjemak, ninjemak, ninjemak, galivan_state, empty_init, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) -GAME( 1986, youma2, ninjemak, ninjemak, ninjemak, galivan_state, empty_init, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan, alt)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) -GAME( 1986, youmab, ninjemak, youmab, ninjemak, galivan_state, init_youmab, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) // player is invincible -GAME( 1986, youmab2, ninjemak, youmab, ninjemak, galivan_state, init_youmab, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) // "" +GAME( 1985, galivan, 0, galivan, galivan, galivan_state, empty_init, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/26/1985)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, galivan2, galivan, galivan, galivan, galivan_state, empty_init, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/16/1985)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, galivan3, galivan, galivan, galivan, galivan_state, empty_init, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/11/1985)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dangar, 0, galivan, dangar, galivan_state, empty_init, ROT270, "Nichibutsu", "Ufo Robo Dangar (4/09/1987)", MACHINE_SUPPORTS_SAVE ) // GV-1412-I and GV-1412-II pcbs +GAME( 1986, dangara, dangar, galivan, dangar2, galivan_state, empty_init, ROT270, "Nichibutsu", "Ufo Robo Dangar (12/1/1986)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dangarj, dangar, dangarj, dangar2, dangarj_state, empty_init, ROT270, "Nichibutsu", "Ufo Robo Dangar (9/26/1986, Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, dangarb, dangar, galivan, dangar2, galivan_state, empty_init, ROT270, "bootleg", "Ufo Robo Dangar (9/26/1986, bootleg set 1)", MACHINE_SUPPORTS_SAVE ) // checks protection like dangarj but check readback is patched at 0x9d58 (also checks I/O port 0xc0?) +GAME( 1986, dangarbt, dangar, galivan, dangarb, galivan_state, empty_init, ROT270, "bootleg", "Ufo Robo Dangar (9/26/1986, bootleg set 2)", MACHINE_SUPPORTS_SAVE ) // directly patched at entry point 0x9d44 +GAME( 1986, ninjemak, 0, ninjemak, ninjemak, ninjemak_state, empty_init, ROT270, "Nichibutsu", "Ninja Emaki (US)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1986, ninjemat, ninjemak, galivan, galivan, ninjemak_state, empty_init, ROT270, "Nichibutsu (Tecfri license)", "Ninja Emaki (Tecfri license)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1986, youma, ninjemak, ninjemak, ninjemak, ninjemak_state, empty_init, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1986, youma2, ninjemak, ninjemak, ninjemak, ninjemak_state, empty_init, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan, alt)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1986, youmab, ninjemak, youmab, ninjemak, youmab_state, empty_init , ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) // player is invincible +GAME( 1986, youmab2, ninjemak, youmab, ninjemak, youmab_state, empty_init, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) // "" diff --git a/src/mame/nichibutsu/galivan.h b/src/mame/nichibutsu/galivan.h deleted file mode 100644 index 4209bd46d70..00000000000 --- a/src/mame/nichibutsu/galivan.h +++ /dev/null @@ -1,138 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Luca Elia, Olivier Galibert -/*************************************************************************** - - Galivan - Cosmo Police - -***************************************************************************/ -#ifndef MAME_NICHIBUTSU_GALIVAN_H -#define MAME_NICHIBUTSU_GALIVAN_H - -#pragma once - -#include "nb1412m2.h" -#include "nb1414m4.h" - -#include "machine/gen_latch.h" -#include "video/bufsprite.h" -#include "sound/flt_biquad.h" - -#include "screen.h" -#include "emupal.h" -#include "tilemap.h" - - -class galivan_state : public driver_device -{ -public: - galivan_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_videoram(*this, "videoram") - , m_spriteram(*this, "spriteram") - , m_nb1414m4(*this, "nb1414m4") - , m_screen(*this, "screen") - , m_gfxdecode(*this, "gfxdecode") - , m_palette(*this, "palette") - , m_soundlatch(*this, "soundlatch") - , m_dacfilter1(*this, "dacfilter1") - , m_dacfilter2(*this, "dacfilter2") - , m_ymfilter(*this, "ymfilter") - , m_rombank(*this, "rombank") - { } - - void galivan(machine_config &config); - void ninjemak(machine_config &config); - void youmab(machine_config &config); - - void init_youmab(); - -protected: - void io_map(address_map &map) ATTR_COLD; - - void galivan_common(machine_config &config); - void video_config(machine_config &config); - - required_device m_maincpu; - -private: - /* memory pointers */ - required_shared_ptr m_videoram; - required_device m_spriteram; - - /* video-related */ - tilemap_t *m_bg_tilemap = nullptr; - tilemap_t *m_tx_tilemap = nullptr; - uint16_t m_scrollx = 0U; - uint16_t m_scrolly = 0U; - uint8_t m_galivan_scrollx[2]{}, m_galivan_scrolly[2]{}; - uint8_t m_layers = 0U; - uint8_t m_ninjemak_dispdisable = 0U; - - uint8_t m_shift_scroll = 0U; //youmab - uint32_t m_shift_val = 0U; - void galivan_sound_command_w(uint8_t data); - uint8_t soundlatch_clear_r(); - uint8_t IO_port_c0_r(); - void blit_trigger_w(uint8_t data); - void vblank_ack_w(uint8_t data); - void youmab_extra_bank_w(uint8_t data); - uint8_t youmab_8a_r(); - void youmab_81_w(uint8_t data); - void youmab_84_w(uint8_t data); - void youmab_86_w(uint8_t data); - void galivan_videoram_w(offs_t offset, uint8_t data); - void galivan_gfxbank_w(uint8_t data); - void ninjemak_gfxbank_w(uint8_t data); - void galivan_scrollx_w(offs_t offset, uint8_t data); - void galivan_scrolly_w(offs_t offset, uint8_t data); - TILE_GET_INFO_MEMBER(get_bg_tile_info); - TILE_GET_INFO_MEMBER(get_tx_tile_info); - TILE_GET_INFO_MEMBER(ninjemak_get_bg_tile_info); - TILE_GET_INFO_MEMBER(ninjemak_get_tx_tile_info); - void galivan_palette(palette_device &palette) const; - void ninjemak_palette(palette_device &palette) const; - DECLARE_MACHINE_START(galivan); - DECLARE_MACHINE_RESET(galivan); - DECLARE_VIDEO_START(galivan); - DECLARE_MACHINE_START(ninjemak); - DECLARE_MACHINE_RESET(ninjemak); - DECLARE_VIDEO_START(ninjemak); - uint32_t screen_update_galivan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_ninjemak(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); - - optional_device m_nb1414m4; - required_device m_screen; - required_device m_gfxdecode; - required_device m_palette; - required_device m_soundlatch; - required_device m_dacfilter1; - required_device m_dacfilter2; - required_device m_ymfilter; - memory_bank_creator m_rombank; - - void galivan_map(address_map &map) ATTR_COLD; - void ninjemak_io_map(address_map &map) ATTR_COLD; - void ninjemak_map(address_map &map) ATTR_COLD; - void sound_io_map(address_map &map) ATTR_COLD; - void sound_map(address_map &map) ATTR_COLD; -}; - -class dangarj_state : public galivan_state -{ -public: - dangarj_state(const machine_config &mconfig, device_type type, const char *tag) : - galivan_state(mconfig, type, tag), - m_prot(*this, "prot_chip") - { } - - void dangarj(machine_config &config); - -private: - required_device m_prot; - - void dangarj_io_map(address_map &map) ATTR_COLD; -}; - -#endif // MAME_NICHIBUTSU_GALIVAN_H diff --git a/src/mame/nichibutsu/galivan_v.cpp b/src/mame/nichibutsu/galivan_v.cpp deleted file mode 100644 index 700026a11a5..00000000000 --- a/src/mame/nichibutsu/galivan_v.cpp +++ /dev/null @@ -1,407 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Luca Elia, Olivier Galibert -/*************************************************************************** - - video.c - - Functions to emulate the video hardware of the machine. - -d800-dbff foreground: char low bits (1 screen * 1024 chars/screen) -dc00-dfff foreground attribute: 7 ? - 6543 color - 21 ? - 0 char hi bit - - -e000-e0ff spriteram: 64 sprites (4 bytes/sprite) - offset : 0 1 2 3 - meaning: ypos(lo) sprite(lo) attribute xpos(lo) - 7 flipy - 6 flipx - 5-2 color - 1 sprite(hi) - 0 xpos(hi) - - -background: 0x4000 bytes of ROM: 76543210 tile code low bits - 0x4000 bytes of ROM: 7 ? - 6543 color - 2 ? - 10 tile code high bits - -***************************************************************************/ - -#include "emu.h" -#include "galivan.h" - -/* Layers has only bits 5-7 active. - 7 selects text off/on - 6 selects background off/on - 5 controls sprite priority (active only on title screen, - not for scores or push start nor game) -*/ - - -/* Notes: - layers are used in galivan/dangar but not ninjemak - ninjemak_dispdisable is used in ninjemak but not galivan/dangar -*/ - - - -/*************************************************************************** - - Convert the color PROMs into a more useable format. - -***************************************************************************/ - -void galivan_state::galivan_palette(palette_device &palette) const -{ - const uint8_t *color_prom = memregion("proms")->base(); - - // create a lookup table for the palette - for (int i = 0; i < 0x100; i++) - { - int const r = pal4bit(color_prom[i + 0x000]); - int const g = pal4bit(color_prom[i + 0x100]); - int const b = pal4bit(color_prom[i + 0x200]); - - palette.set_indirect_color(i, rgb_t(r, g, b)); - } - - // color_prom now points to the beginning of the lookup table - color_prom += 0x300; - - // characters use colors 0-0x3f - // the bottom two bits of the color code select the palette bank for pens 0-7; - // the top two bits for pens 8-15. - for (int i = 0; i < 0x100; i++) - { - uint8_t const ctabentry = (i & 0x0f) | ((i >> ((i & 0x08) ? 2 : 0)) & 0x30); - - palette.set_pen_indirect(i, ctabentry); - } - - // I think that background tiles use colors 0xc0-0xff in four banks - // the bottom two bits of the color code select the palette bank for pens 0-7; - // the top two bits for pens 8-15. - for (int i = 0; i < 0x100; i++) - { - uint8_t const ctabentry = 0xc0 | (i & 0x0f) | ((i >> ((i & 0x08) ? 2 : 0)) & 0x30); - - palette.set_pen_indirect(0x100 + i, ctabentry); - } - - // sprites use colors 0x80-0xbf in four banks - // The lookup table tells which colors to pick from the selected bank - // the bank is selected by another PROM and depends on the top 7 bits of the sprite code. - // The PROM selects the bank *separately* for pens 0-7 and 8-15 (like for tiles). - for (int i = 0; i < 0x1000; i++) - { - uint8_t const ctabentry = 0x80 | ((i << ((i & 0x80) ? 2 : 4)) & 0x30) | (color_prom[i >> 4] & 0x0f); - int const i_swapped = ((i & 0x0f) << 8) | ((i & 0xff0) >> 4); - - palette.set_pen_indirect(0x200 + i_swapped, ctabentry); - } -} - -void galivan_state::ninjemak_palette(palette_device& palette) const -{ - const uint8_t *color_prom = memregion("proms")->base(); - - // create a lookup table for the palette - for (int i = 0; i < 0x100; i++) - { - int const r = pal4bit(color_prom[i + 0x000]); - int const g = pal4bit(color_prom[i + 0x100]); - int const b = pal4bit(color_prom[i + 0x200]); - - palette.set_indirect_color(i, rgb_t(r, g, b)); - } - - // color_prom now points to the beginning of the lookup table - color_prom += 0x300; - - // characters use colors 0-0x7f - for (int i = 0; i < 0x80; i++) - palette.set_pen_indirect(i, i); - - // I think that background tiles use colors 0xc0-0xff in four banks - // the bottom two bits of the color code select the palette bank for pens 0-7; - // the top two bits for pens 8-15. - for (int i = 0; i < 0x100; i++) - { - uint8_t const ctabentry = 0xc0 | (i & 0x0f) | ((i >> ((i & 0x08) ? 2 : 0)) & 0x30); - - palette.set_pen_indirect(0x80 + i, ctabentry); - } - - // sprites use colors 0x80-0xbf in four banks - // The lookup table tells which colors to pick from the selected bank - // the bank is selected by another PROM and depends on the top 7 bits of the sprite code. - // The PROM selects the bank *separately* for pens 0-7 and 8-15 (like for tiles). - for (int i = 0; i < 0x1000; i++) - { - uint8_t const ctabentry = 0x80 | ((i << ((i & 0x80) ? 2 : 4)) & 0x30) | (color_prom[i >> 4] & 0x0f); - int const i_swapped = ((i & 0x0f) << 8) | ((i & 0xff0) >> 4); - - palette.set_pen_indirect(0x180 + i_swapped, ctabentry); - } -} - - - -/*************************************************************************** - - Callbacks for the TileMap code - -***************************************************************************/ - -TILE_GET_INFO_MEMBER(galivan_state::get_bg_tile_info) -{ - uint8_t *BGROM = memregion("gfx4")->base(); - int attr = BGROM[tile_index + 0x4000]; - int code = BGROM[tile_index] | ((attr & 0x03) << 8); - tileinfo.set(1, - code, - (attr & 0x78) >> 3, /* seems correct */ - 0); -} - -TILE_GET_INFO_MEMBER(galivan_state::get_tx_tile_info) -{ - int attr = m_videoram[tile_index + 0x400]; - int code = m_videoram[tile_index] | ((attr & 0x01) << 8); - tileinfo.set(0, - code, - (attr & 0x78) >> 3, /* seems correct */ - 0); - tileinfo.category = attr & 8 ? 0 : 1; /* seems correct */ -} - -TILE_GET_INFO_MEMBER(galivan_state::ninjemak_get_bg_tile_info) -{ - uint8_t *BGROM = memregion("gfx4")->base(); - int attr = BGROM[tile_index + 0x4000]; - int code = BGROM[tile_index] | ((attr & 0x03) << 8); - tileinfo.set(1, - code, - ((attr & 0x60) >> 3) | ((attr & 0x0c) >> 2), /* seems correct */ - 0); -} - -TILE_GET_INFO_MEMBER(galivan_state::ninjemak_get_tx_tile_info) -{ - uint16_t index = tile_index; - // TODO: skip drawing the NB1414M4 params, how the HW actually handles this? - if (index < 0x12) - index = 0x12; - - int attr = m_videoram[index + 0x400]; - int code = m_videoram[index] | ((attr & 0x03) << 8); - tileinfo.set(0, - code, - (attr & 0x1c) >> 2, /* seems correct ? */ - 0); -} - - - -/*************************************************************************** - - Start the video hardware emulation. - -***************************************************************************/ - -VIDEO_START_MEMBER(galivan_state,galivan) -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); - - m_tx_tilemap->set_transparent_pen(15); -} - -VIDEO_START_MEMBER(galivan_state,ninjemak) -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::ninjemak_get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 512, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::ninjemak_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); - - m_tx_tilemap->set_transparent_pen(15); -} - - - -/*************************************************************************** - - Memory handlers - -***************************************************************************/ - -void galivan_state::galivan_videoram_w(offs_t offset, uint8_t data) -{ - m_videoram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset & 0x3ff); -} - -/* Written through port 40 */ -void galivan_state::galivan_gfxbank_w(uint8_t data) -{ - /* bits 0 and 1 coin counters */ - machine().bookkeeping().coin_counter_w(0,data & 1); - machine().bookkeeping().coin_counter_w(1,data & 2); - - /* bit 2 flip screen */ - flip_screen_set(data & 0x04); - - /* bit 7 selects one of two ROM banks for c000-dfff */ - membank("bank1")->set_entry((data & 0x80) >> 7); - - /* logerror("%s port 40 = %02x\n", machine().describe_context(), data); */ -} - -void galivan_state::ninjemak_gfxbank_w(uint8_t data) -{ - /* bits 0 and 1 coin counters */ - machine().bookkeeping().coin_counter_w(0,data & 1); - machine().bookkeeping().coin_counter_w(1,data & 2); - - /* bit 2 flip screen */ - flip_screen_set(data & 0x04); - - /* bit 3 unknown */ - - /* bit 4 background disable flag */ - m_ninjemak_dispdisable = data & 0x10; - - /* bit 5 sprite flag ??? */ - - /* bit 6, 7 ROM bank select */ - membank("bank1")->set_entry((data & 0xc0) >> 6); - -#if 0 - { - char mess[80]; - int btz[8]; - int offs; - - for (offs = 0; offs < 8; offs++) btz[offs] = (((data >> offs) & 0x01) ? 1 : 0); - - sprintf(mess, "BK:%01X%01X S:%01X B:%01X T:%01X FF:%01X C2:%01X C1:%01X", btz[7], btz[6], btz[5], btz[4], btz[3], btz[2], btz[1], btz[0]); - popmessage(mess); - } -#endif -} - - - -/* Written through port 41-42 */ -void galivan_state::galivan_scrollx_w(offs_t offset, uint8_t data) -{ - if (offset == 1) - { - m_layers = data & 0xe0; - } - m_galivan_scrollx[offset] = data; -} - -/* Written through port 43-44 */ -void galivan_state::galivan_scrolly_w(offs_t offset, uint8_t data) -{ - m_galivan_scrolly[offset] = data; -} - - - -/*************************************************************************** - - Display refresh - -***************************************************************************/ - -void galivan_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) -{ - const uint8_t *spritepalettebank = memregion("user1")->base(); - uint8_t *buffered_spriteram = m_spriteram->buffer(); - int length = m_spriteram->bytes(); - int flip = flip_screen(); - gfx_element *gfx = m_gfxdecode->gfx(2); - - /* draw the sprites */ - for (int offs = 0; offs < length; offs += 4) - { - int code; - int attr = buffered_spriteram[offs + 2]; - int color = (attr & 0x3c) >> 2; - int flipx = attr & 0x40; - int flipy = attr & 0x80; - int sx, sy; - - sx = (buffered_spriteram[offs + 3] - 0x80) + 256 * (attr & 0x01); - sy = 240 - buffered_spriteram[offs]; - if (flip) - { - sx = 240 - sx; - sy = 240 - sy; - flipx = !flipx; - flipy = !flipy; - } - -// code = buffered_spriteram[offs + 1] + ((attr & 0x02) << 7); - code = buffered_spriteram[offs + 1] + ((attr & 0x06) << 7); // for ninjemak, not sure ? - - gfx->transpen(bitmap,cliprect, - code, - color + 16 * (spritepalettebank[code >> 2] & 0x0f), - flipx,flipy, - sx,sy,15); - } -} - - -uint32_t galivan_state::screen_update_galivan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->set_scrollx(0, m_galivan_scrollx[0] + 256 * (m_galivan_scrollx[1] & 0x07)); - m_bg_tilemap->set_scrolly(0, m_galivan_scrolly[0] + 256 * (m_galivan_scrolly[1] & 0x07)); - - if (m_layers & 0x40) - bitmap.fill(0, cliprect); - else - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - - if (m_layers & 0x20) - { - if ((m_layers & 0x80) == 0) - { - m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0); - m_tx_tilemap->draw(screen, bitmap, cliprect, 1, 0); - } - draw_sprites(bitmap, cliprect); - } - else - { - draw_sprites(bitmap, cliprect); - if ((m_layers & 0x80) == 0) - { - m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0); - m_tx_tilemap->draw(screen, bitmap, cliprect, 1, 0); - } - } - - return 0; -} - -uint32_t galivan_state::screen_update_ninjemak(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - /* (scrollx[1] & 0x40) does something */ - m_bg_tilemap->set_scrollx(0, m_scrollx); - m_bg_tilemap->set_scrolly(0, m_scrolly); - - if (m_ninjemak_dispdisable) - bitmap.fill(0, cliprect); - else - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - - draw_sprites(bitmap, cliprect); - m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0); - return 0; -} diff --git a/src/mame/pacman/pacman.cpp b/src/mame/pacman/pacman.cpp index ead054dbfed..29c4602ac76 100644 --- a/src/mame/pacman/pacman.cpp +++ b/src/mame/pacman/pacman.cpp @@ -5633,7 +5633,7 @@ ROM_END /* Marti Colls bootleg (set 1). There are two PCB versions with the same ROM set: - -An older one, just labeled "PAC", with a 18 MHz xtal, and a Novatronic NVS board (a small sub-board from Novatronic, + -An older one, just labeled "PAC", with a 18 MHz xtal, and a Novatronic NVS board (a small sub-board from Novatronic, silkscreened "NOVATRONIC BILBAO SPAIN COPYRIGHT 1982", with the CPU, program ROMs, a PROM and a 6116 SRAM (https://www.recreativas.org/novatronic-video-sistema-nvs-6072-novatronic-sa). This one is where the PROMs were dumped from. -A newer one, silkscreened by MARTI COLLS, with a sub-board similar to the Novatronic one (but without Novatronic texts). @@ -8654,12 +8654,14 @@ uint8_t pacman_state::cannonbp_protection_r(offs_t offset) void pacman_state::init_pengomc1() { uint8_t *romdata = memregion("maincpu")->base(); - uint8_t buf[0xc000]; - memcpy(buf, romdata, 0xc000); // some sort of weak protection? - for (int i = 0; i < 0xc000; i++) - romdata[i] = buf[i^0xff]; + for (int i = 0; i < 0xc000; i += 0x100) + { + using std::swap; + for (int j = 0; j < (0x100 / 2); j++) + swap(romdata[i | j], romdata[i | (j ^ 0xff)]); + } } ioport_value clubpacm_state::clubpacm_input_r() diff --git a/src/mame/skeleton/palsystems_sh2.cpp b/src/mame/skeleton/palsystems_sh2.cpp index 9f1bc51767c..b03b6dc33bb 100644 --- a/src/mame/skeleton/palsystems_sh2.cpp +++ b/src/mame/skeleton/palsystems_sh2.cpp @@ -14,7 +14,7 @@ HD64F7044F28 (SH-2) with internal ROM D720J8 XTAL (near SH2) DS2404S RTC KOS9F XTAL (near RTC) -square 144 pin chip with no marking +square 144 pin chip with no marking (probably YGV617B-S like board below) 12.000 MHz XTAL (near 144 pin chip) 2x LATTICE Mach211SP-15JC - 18JI 8010OPY3 PK3_CTRL chips 2x GM71C18163CJ6 RAM @@ -22,6 +22,30 @@ BR62256P RAM Oki M6295 sound chip 2x bank of 8 DIP switches +The main components for PAL POKER 3 are: +HD64F7044F28 (SH-2) with internal ROM +D720J8 XTAL (near SH2) +DS2404S RTC +KOS9F XTAL (near RTC) +YGV617B-S Advanced Video Processor +12.000 MHz XTAL (near 144 pin chip) +LATTICE Mach211SP-15JC - 18JI 9950APA B PK2_CTRL chip +2x GM71C18163CJ6 RAM +BR62256P RAM +Oki M6295 sound chip +2x bank of 8 DIP switches + +The main components for SH-POKER V3.0 are: +scratched square 112 pin chip (probably HD64F7044F28 as above) +14.318 MHz XTAL +DS2404S RTC +DS7A XTAL (near RTC) +scratched square 144 pin chip (probably YGV617B-S as above) +12.000 MHz XTAL (near 144 pin chip) +scratched square 40 pin chip (probably LATTICE Mach211SP as above) +scratched square 44 pin chip (probably Oki M6295 as above) +6x bank of 8 DIP switches (on base board) +bank of 8 DIP switches (on CPU board) TODO: everything. Needs internal ROM dumps. */ @@ -188,6 +212,9 @@ ROM_START( mpoker2 ) // this was on the PAL PCB ROM_REGION( 0x200000, "gfx", 0 ) ROM_LOAD( "lh28f160s5t.u0222", 0x000000, 0x200000, CRC(12dc71c7) SHA1(e0db76e05752f475e554ccd24244ea8bc60f2042) ) + ROM_REGION( 0x4934, "mach", 0 ) + ROM_LOAD( "pk3_ctrl.jed", 0x0000, 0x4934, NO_DUMP ) + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "msm27c401.u066", 0x00000, 0x80000, CRC(2aba63a3) SHA1(c3d0a5a37cfa309cb94d6218c068fe90272d1721) ) // 1xxxxxxxxxxxxxxxxxx = 0x00 ROM_END @@ -196,6 +223,9 @@ ROM_START( mpoker2a ) // this was on the PAL POKER 3 PCB ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "internal_rom", 0x00000, 0x40000, NO_DUMP) + ROM_REGION( 0x4934, "mach", 0 ) + ROM_LOAD( "pk2_ctrl.u0114.jed", 0x0000, 0x4934, CRC(5f897e0e) SHA1(018eadeeb43846fb23b2665758a108e0c1a79d72) ) // JED as jedutil can't handle MACHs yet + ROM_REGION( 0x200000, "gfx", 0 ) ROM_LOAD( "flash56.bin", 0x000000, 0x200000, CRC(fbca21df) SHA1(78ab98468bb4d5563d14a9a5be4be73112e8b0a2) ) @@ -210,6 +240,9 @@ ROM_START( mpoker2b ) // this was on the SH-POKER V3.0 ROM_REGION( 0x200000, "gfx", 0 ) ROM_LOAD( "flash56.bin", 0x000000, 0x200000, CRC(1d65901c) SHA1(f8f42ff2dc858a5970ecfbdfb08154047833676b) ) + ROM_REGION( 0x4934, "mach", 0 ) + ROM_LOAD( "mach.u0114.jed", 0x0000, 0x4934, CRC(2f9b8fdc) SHA1(ab5ddac49db6d8a8a5a59cf6fefe145031add487) ) // JED as jedutil can't handle MACHs yet + ROM_REGION( 0x80000, "oki", 0 ) ROM_LOAD( "msm27c401.bin", 0x00000, 0x80000, CRC(2aba63a3) SHA1(c3d0a5a37cfa309cb94d6218c068fe90272d1721) ) // 1xxxxxxxxxxxxxxxxxx = 0x00 ROM_END