From 184c68127806053d26746dabdabca918ae2ecd5c Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 20 Dec 2024 19:42:30 -0500 Subject: [PATCH 01/39] v25: Correct mistaken idea about DMA --- src/devices/cpu/nec/v25.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp index 40dc190fa31ed..a66ec3fab325e 100644 --- a/src/devices/cpu/nec/v25.cpp +++ b/src/devices/cpu/nec/v25.cpp @@ -496,8 +496,8 @@ void v25_common_device::dma_process() uint8_t dmamode = BIT(m_dmam[m_dma_channel], 5, 3); bool w = BIT(m_dmam[m_dma_channel], 4); - uint32_t saddr = (BIT(dmamode, 0) ? 0 : (uint32_t(sarh_darh) & 0xff00) << 4) + sar; - uint32_t daddr = (BIT(dmamode, 1) ? 0 : (uint32_t(sarh_darh) & 0x00ff) << 12) + dar; + uint32_t saddr = (uint32_t(sarh_darh) & 0xff00) << 4) + sar; + uint32_t daddr = (uint32_t(sarh_darh) & 0x00ff) << 12) + dar; switch (dmamode & 3) { From 74712e3b9b64476bb57d1fcee7e804bcc79bf811 Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 20 Dec 2024 21:12:05 -0500 Subject: [PATCH 02/39] v25: Fix syntax error in previous commit --- src/devices/cpu/nec/v25.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp index a66ec3fab325e..ee4f188617069 100644 --- a/src/devices/cpu/nec/v25.cpp +++ b/src/devices/cpu/nec/v25.cpp @@ -496,8 +496,8 @@ void v25_common_device::dma_process() uint8_t dmamode = BIT(m_dmam[m_dma_channel], 5, 3); bool w = BIT(m_dmam[m_dma_channel], 4); - uint32_t saddr = (uint32_t(sarh_darh) & 0xff00) << 4) + sar; - uint32_t daddr = (uint32_t(sarh_darh) & 0x00ff) << 12) + dar; + uint32_t saddr = ((uint32_t(sarh_darh) & 0xff00) << 4) + sar; + uint32_t daddr = ((uint32_t(sarh_darh) & 0x00ff) << 12) + dar; switch (dmamode & 3) { From c314f82a3b730ec779be299f035ff258232fa827 Mon Sep 17 00:00:00 2001 From: arbee Date: Fri, 20 Dec 2024 22:05:04 -0500 Subject: [PATCH 03/39] apple/dafb.cpp: Allow "no monitor" as a valid monitor selection to disable the internal video on Quadras. [R. Belmont] --- src/mame/apple/dafb.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mame/apple/dafb.cpp b/src/mame/apple/dafb.cpp index 25ff56c2f4d59..eee10437eb8e1 100644 --- a/src/mame/apple/dafb.cpp +++ b/src/mame/apple/dafb.cpp @@ -207,6 +207,7 @@ static INPUT_PORTS_START(monitor_config) PORT_CONFSETTING(0x02, u8"Mac RGB Display (12\" 512\u00d7384)") // "Rubik" (modified IIgs AppleColor RGB) PORT_CONFSETTING(0x03, u8"Mac Two-Page Display (B&W 21\" 1152\u00d7870)") // "2 Page" PORT_CONFSETTING(0x06, u8"Mac Hi-Res Display (12-14\" 640\u00d7480)") // "High Res" + PORT_CONFSETTING(0x07, u8"No monitor, disable internal video") // No monitor connected PORT_CONFSETTING(ext(0, 0, 0), "PAL Encoder (640\u00d7480, 768\u00d7576)") PORT_CONFSETTING(ext(1, 1, 0), "NTSC Encoder (512\u00d7384, 640\u00d7480)") PORT_CONFSETTING(ext(1, 1, 3), "640x480 VGA") @@ -224,6 +225,7 @@ static INPUT_PORTS_START(monitor_config_noconv) PORT_CONFSETTING(0x02, u8"Mac RGB Display (12\" 512\u00d7384)") // "Rubik" (modified IIgs AppleColor RGB) PORT_CONFSETTING(0x03, u8"Mac Two-Page Display (B&W 21\" 1152\u00d7870)") // "2 Page" PORT_CONFSETTING(0x06, u8"Mac Hi-Res Display (12-14\" 640\u00d7480)") // "High Res" + PORT_CONFSETTING(0x07, u8"No monitor, disable internal video") // No monitor connected PORT_CONFSETTING(ext(1, 1, 3), "640x480 VGA") PORT_CONFSETTING(ext(2, 3, 1), "832x624 16\" RGB") // "Goldfish" or "16 inch RGB" PORT_CONFSETTING(ext(3, 2, 2), "1024\u00d7768 19\" RGB"); From 6e733f51e6c869217fe0440a8027f79a0905d82d Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 20 Dec 2024 22:28:01 -0500 Subject: [PATCH 04/39] gottlieb/gottlieb.cpp: Work around race condition at soft reset --- src/mame/gottlieb/gottlieb.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mame/gottlieb/gottlieb.cpp b/src/mame/gottlieb/gottlieb.cpp index 7098a3c1c8818..d321e44683451 100644 --- a/src/mame/gottlieb/gottlieb.cpp +++ b/src/mame/gottlieb/gottlieb.cpp @@ -426,9 +426,12 @@ void gottlieb_state::machine_start() void gottlieb_state::machine_reset() { - /* if we have a laserdisc, reset our philips code callback for the next line 17 */ + // if we have a laserdisc, reset our philips code callback for the next line 17 if (m_laserdisc != nullptr) m_laserdisc_philips_timer->adjust(m_screen->time_until_pos(17), 17); + + // HACK: prevent NMI immediately after soft reset + m_maincpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero); } From f2aa3150fd476d69a24e94122be48172c82dc1fa Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 22 Dec 2024 02:32:42 +0900 Subject: [PATCH 05/39] namco/toypop.cpp: Use tilemap helpers, fixed save states, and cleaned up code: (#13101) * Use tilemap helpers for tile maps. * Register member variables for save states, and suppress side effects for debugger reads. * Derive sound chip clock frequency from master crystal frequency. * Simplified graphics decoding. * Reduced run time tag lookups, reduced preprocessor macros, and made some variables const. --- src/mame/namco/toypop.cpp | 466 +++++++++++++++++++------------------- 1 file changed, 234 insertions(+), 232 deletions(-) diff --git a/src/mame/namco/toypop.cpp b/src/mame/namco/toypop.cpp index de7107d4cf8e5..8586ac43fb351 100644 --- a/src/mame/namco/toypop.cpp +++ b/src/mame/namco/toypop.cpp @@ -36,41 +36,46 @@ #include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" namespace { -#define MASTER_CLOCK XTAL(6'144'000) - class namcos16_state : public driver_device { public: namcos16_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_master_cpu(*this,"maincpu"), - m_slave_cpu(*this, "slave"), - m_sound_cpu(*this, "audiocpu"), + m_maincpu(*this,"maincpu"), + m_subcpu(*this, "sub"), + m_soundcpu(*this, "soundcpu"), m_namco15xx(*this, "namco"), m_namco58xx(*this, "58xx"), m_namco56xx_1(*this, "56xx_1"), m_namco56xx_2(*this, "56xx_2"), m_palette(*this, "palette"), m_gfxdecode(*this, "gfxdecode"), - m_master_workram(*this, "master_workram"), - m_slave_sharedram(*this, "slave_sharedram"), + m_spriteram(*this, "spriteram"), + m_sharedram(*this, "sharedram"), m_bgvram(*this, "bgvram"), - m_fgvram(*this, "fgvram"), - m_fgattr(*this, "fgattr") + m_txvram(*this, "txvram"), + m_io_dsw(*this, "DSW%u", 1U) { } - void toypop(machine_config &config); - void liblrabl(machine_config &config); + void toypop(machine_config &config) ATTR_COLD; + void liblrabl(machine_config &config) ATTR_COLD; + +protected: + // driver_device overrides + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD; + virtual void video_start() override ATTR_COLD; private: - required_device m_master_cpu; - required_device m_slave_cpu; - required_device m_sound_cpu; + required_device m_maincpu; + required_device m_subcpu; + required_device m_soundcpu; required_device m_namco15xx; required_device m_namco58xx; @@ -79,61 +84,57 @@ class namcos16_state : public driver_device required_device m_palette; required_device m_gfxdecode; - required_shared_ptr m_master_workram; - required_shared_ptr m_slave_sharedram; - required_shared_ptr m_bgvram; - required_shared_ptr m_fgvram; - required_shared_ptr m_fgattr; + required_shared_ptr m_spriteram; + required_shared_ptr m_sharedram; + required_shared_ptr m_bgvram; + required_shared_ptr m_txvram; - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + required_ioport_array<2> m_io_dsw; - TIMER_DEVICE_CALLBACK_MEMBER(master_scanline); - void slave_vblank_irq(int state); + tilemap_t *m_tx_tilemap; + u8 m_pal_bank = 0; - uint8_t irq_enable_r(); - void irq_disable_w(uint8_t data); - void irq_ctrl_w(offs_t offset, uint8_t data); - void toypop_palette(palette_device &palette) const; - uint8_t dipA_l(); - uint8_t dipA_h(); - uint8_t dipB_l(); - uint8_t dipB_h(); - //void out_coin0(uint8_t data); - //void out_coin1(uint8_t data); - void pal_bank_w(offs_t offset, uint8_t data); - void flip(uint8_t data); - void slave_halt_ctrl_w(offs_t offset, uint8_t data); - uint8_t slave_shared_r(offs_t offset); - void slave_shared_w(offs_t offset, uint8_t data); - void slave_irq_enable_w(offs_t offset, uint16_t data); - void sound_halt_ctrl_w(offs_t offset, uint8_t data); - uint8_t bg_rmw_r(offs_t offset); - void bg_rmw_w(offs_t offset, uint8_t data); - - void master_liblrabl_map(address_map &map) ATTR_COLD; - void master_toypop_map(address_map &map) ATTR_COLD; - void namcos16_master_base_map(address_map &map) ATTR_COLD; - void slave_map(address_map &map) ATTR_COLD; - void sound_map(address_map &map) ATTR_COLD; + bool m_main_irq_enable = false; + bool m_sub_irq_enable = false; - // driver_device overrides -// virtual void machine_start() override ATTR_COLD; - virtual void machine_reset() override ATTR_COLD; + TIMER_DEVICE_CALLBACK_MEMBER(main_scanline); + void vblank_irq(int state); + + u8 irq_enable_r(); + void irq_disable_w(u8 data); + void irq_ctrl_w(offs_t offset, u8 data); + template u8 dip_l(); + template u8 dip_h(); + void pal_bank_w(offs_t offset, u8 data); + void flip(u8 data); + void sub_halt_ctrl_w(offs_t offset, u8 data); + u8 sharedram_r(offs_t offset); + void sharedram_w(offs_t offset, u8 data); + void sub_irq_enable_w(offs_t offset, u16 data); + void sound_halt_ctrl_w(offs_t offset, u8 data); + + void txvram_w(offs_t offset, u8 data); + u8 bg_rmw_r(offs_t offset); + void bg_rmw_w(offs_t offset, u8 data); -// virtual void video_start() override ATTR_COLD; + void toypop_palette(palette_device &palette) const; + TILE_GET_INFO_MEMBER(get_tile_info); + TILEMAP_MAPPER_MEMBER(tilemap_scan); + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - bool m_master_irq_enable = false; - bool m_slave_irq_enable = false; - uint8_t m_pal_bank = 0; + void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect, bool flip); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bool flip); - void legacy_bg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip); - void legacy_fg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip); - void legacy_obj_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip); + void liblrabl_main_map(address_map &map) ATTR_COLD; + void main_base_map(address_map &map) ATTR_COLD; + void sound_map(address_map &map) ATTR_COLD; + void sub_map(address_map &map) ATTR_COLD; + void toypop_main_map(address_map &map) ATTR_COLD; }; void namcos16_state::toypop_palette(palette_device &palette) const { - uint8_t const *const color_prom = memregion("proms")->base(); + u8 const *const color_prom = memregion("proms")->base(); for (int i = 0; i < 256; i++) { @@ -168,7 +169,7 @@ void namcos16_state::toypop_palette(palette_device &palette) const palette.set_pen_indirect(i + 1*256, (color_prom[i + 0x300] & 0x0f) | 0xf0); // sprites - uint8_t const entry = color_prom[i + 0x500]; + u8 const entry = color_prom[i + 0x500]; palette.set_pen_indirect(i + 2*256, entry); } @@ -180,20 +181,46 @@ void namcos16_state::toypop_palette(palette_device &palette) const } } -void namcos16_state::legacy_bg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip) +TILE_GET_INFO_MEMBER(namcos16_state::get_tile_info) { - uint16_t const pal_base = 0x300 + (m_pal_bank << 4); - uint32_t const src_base = 0x200/2; - uint16_t const src_pitch = 288 / 2; + const u32 code = m_txvram[tile_index]; + const u32 color = (m_txvram[tile_index + 0x400] & 0x3f) + (m_pal_bank << 6); + tileinfo.set(0, code, color, 0); +} + +/* convert from 32x32 to 36x28 */ +TILEMAP_MAPPER_MEMBER(namcos16_state::tilemap_scan) +{ + row += 2; + col -= 2; + if (col & 0x20) + return row + ((col & 0x1f) << 5); + else + return col + (row << 5); +} + +void namcos16_state::video_start() +{ + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos16_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(namcos16_state::tilemap_scan)), 8, 8, 36, 28); + m_tx_tilemap->set_transparent_pen(0); + + save_item(NAME(m_pal_bank)); +} + +void namcos16_state::draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect, bool flip) +{ + u16 const pal_base = 0x300 + (m_pal_bank << 4); + u32 const src_base = 0x200/2; + u16 const src_pitch = 288 / 2; for (int y = cliprect.min_y; y <= cliprect.max_y; ++y) { - uint16_t const *src = &m_bgvram[y * src_pitch + cliprect.min_x + src_base]; - uint16_t *dst = &bitmap.pix(flip ? (cliprect.max_y - y) : y, flip ? cliprect.max_x : cliprect.min_x); + u16 const *src = &m_bgvram[y * src_pitch + cliprect.min_x + src_base]; + u16 *dst = &bitmap.pix(flip ? (cliprect.max_y - y) : y, flip ? cliprect.max_x : cliprect.min_x); for (int x = cliprect.min_x; x <= cliprect.max_x; x += 2) { - uint32_t const srcpix = *src++; + u32 const srcpix = *src++; int const idx1 = ((srcpix >> 8) & 0xf) + pal_base; int const idx2 = (srcpix & 0xf) + pal_base; if (!flip) @@ -210,76 +237,37 @@ void namcos16_state::legacy_bg_draw(bitmap_ind16 &bitmap,const rectangle &clipre } } -void namcos16_state::legacy_fg_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip) -{ - gfx_element *const gfx_0 = m_gfxdecode->gfx(0); - - for (int count = 0; count < 32*32; count++) - { - int const xoffs(count >> 5); - int const yoffs(count & 0x1f); - int x;// = (count % 32); - int y; //= count / 32; - - if (count < 64) - { - x = 34 + xoffs; - y = yoffs - 2; - } - else if (count >= 32*30) - { - x = xoffs - 30; - y = yoffs - 2; - } - else - { - x = 2 + yoffs; - y = xoffs - 2; - } - - uint16_t tile = m_fgvram[count]; - uint8_t color = (m_fgattr[count] & 0x3f) + (m_pal_bank << 6); - - gfx_0->transpen(bitmap, cliprect, tile, color, flip, flip, (flip ? 35-x : x)*8, (flip ? 27-y : y)*8, 0); - } -} - // TODO: this is likely to be a lot more complex, and maybe is per scanline too -void namcos16_state::legacy_obj_draw(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip) +void namcos16_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,bool flip) { - gfx_element *gfx_1 = m_gfxdecode->gfx(1); - int count; - uint8_t *base_spriteram = m_master_workram; - const uint16_t bank1 = 0x0800; - const uint16_t bank2 = 0x1000; + gfx_element *const gfx_1 = m_gfxdecode->gfx(1); + u16 const bank1 = 0x0800; + u16 const bank2 = 0x1000; - - for (count=0x780;count<0x800;count+=2) + static const int gfx_offs[2][2] = { - bool enabled = (base_spriteram[count+bank2+1] & 2) == 0; - - if(enabled == false) + { 0, 1 }, + { 2, 3 } + }; + for (int count = 0x780; count < 0x800; count += 2) + { + if (BIT(m_spriteram[count+bank2+1], 1)) continue; - static const int gfx_offs[2][2] = - { - { 0, 1 }, - { 2, 3 } - }; - uint8_t tile = base_spriteram[count]; - uint8_t color = base_spriteram[count+1]; - int x = base_spriteram[count+bank1+1] + (base_spriteram[count+bank2+1] << 8); + u8 tile = m_spriteram[count]; + u8 const color = m_spriteram[count+1]; + int x = m_spriteram[count+bank1+1] + (m_spriteram[count+bank2+1] << 8); x -= 71; - int y = base_spriteram[count+bank1+0]; + int y = m_spriteram[count+bank1+0]; y += 7; // TODO: actually m_screen.height() y = 224 - y; - bool fx = (base_spriteram[count+bank2] & 1) == 1; - bool fy = (base_spriteram[count+bank2] & 2) == 2; - uint8_t width = ((base_spriteram[count+bank2] & 4) >> 2) + 1; - uint8_t height = ((base_spriteram[count+bank2] & 8) >> 3) + 1; + bool fx = (m_spriteram[count+bank2] & 1) == 1; + bool fy = (m_spriteram[count+bank2] & 2) == 2; + u8 const width = ((m_spriteram[count+bank2] & 4) >> 2) + 1; + u8 const height = ((m_spriteram[count+bank2] & 8) >> 3) + 1; tile &= ~(width - 1); tile &= ~((height - 1) << 1); @@ -291,120 +279,128 @@ void namcos16_state::legacy_obj_draw(bitmap_ind16 &bitmap,const rectangle &clipr } if (height == 2) - y -=16; + y -= 16; - for (int yi=0; yitransmask(bitmap,cliprect,sprite_offs,color,fx,fy,x + xi*16,y + yi *16,m_palette->transpen_mask(*gfx_1, color, 0xff)); + u16 const sprite_offs = tile + gfx_offs[yi ^ ((height - 1) * fy)][xi ^ ((width - 1) * fx)]; + gfx_1->transmask(bitmap, cliprect, + sprite_offs, + color, + fx, fy, + x + xi * 16, y + yi * 16, + m_palette->transpen_mask(*gfx_1, color, 0xff)); } } } } -uint32_t namcos16_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ) +u32 namcos16_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bool const flip = flip_screen(); - legacy_bg_draw(bitmap,cliprect,flip); - legacy_fg_draw(bitmap,cliprect,flip); - legacy_obj_draw(bitmap,cliprect,flip); + draw_background(bitmap, cliprect, flip); + m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0); + draw_sprites(bitmap, cliprect, flip); return 0; } -uint8_t namcos16_state::irq_enable_r() +u8 namcos16_state::irq_enable_r() { - m_master_irq_enable = true; + if (!machine().side_effects_disabled()) + m_main_irq_enable = true; return 0; } -void namcos16_state::irq_disable_w(uint8_t data) +void namcos16_state::irq_disable_w(u8 data) { - m_master_irq_enable = false; + m_main_irq_enable = false; } -void namcos16_state::irq_ctrl_w(offs_t offset, uint8_t data) +void namcos16_state::irq_ctrl_w(offs_t offset, u8 data) { - m_master_irq_enable = (offset & 0x0800) ? false : true; + m_main_irq_enable = BIT(~offset, 11); } -void namcos16_state::slave_halt_ctrl_w(offs_t offset, uint8_t data) +void namcos16_state::sub_halt_ctrl_w(offs_t offset, u8 data) { - m_slave_cpu->set_input_line(INPUT_LINE_RESET,offset & 0x800 ? ASSERT_LINE : CLEAR_LINE); + m_subcpu->set_input_line(INPUT_LINE_RESET, BIT(offset, 11)); } -void namcos16_state::sound_halt_ctrl_w(offs_t offset, uint8_t data) +void namcos16_state::sound_halt_ctrl_w(offs_t offset, u8 data) { - m_sound_cpu->set_input_line(INPUT_LINE_RESET,offset & 0x800 ? ASSERT_LINE : CLEAR_LINE); + m_soundcpu->set_input_line(INPUT_LINE_RESET, BIT(offset, 11)); } -uint8_t namcos16_state::slave_shared_r(offs_t offset) +u8 namcos16_state::sharedram_r(offs_t offset) { - return m_slave_sharedram[offset]; + return m_sharedram[offset]; } -void namcos16_state::slave_shared_w(offs_t offset, uint8_t data) +void namcos16_state::sharedram_w(offs_t offset, u8 data) { - m_slave_sharedram[offset] = data; + m_sharedram[offset] = data; } -void namcos16_state::slave_irq_enable_w(offs_t offset, uint16_t data) +void namcos16_state::sub_irq_enable_w(offs_t offset, u16 data) { - m_slave_irq_enable = (offset & 0x40000) ? false : true; + m_sub_irq_enable = BIT(~offset, 18); } -uint8_t namcos16_state::bg_rmw_r(offs_t offset) +u8 namcos16_state::bg_rmw_r(offs_t offset) { - uint8_t res; - - res = 0; + u8 res = 0; // note: following offset is written as offset * 2 res |= (m_bgvram[offset] & 0x0f00) >> 4; res |= (m_bgvram[offset] & 0x000f); return res; } -void namcos16_state::bg_rmw_w(offs_t offset, uint8_t data) +void namcos16_state::bg_rmw_w(offs_t offset, u8 data) { // note: following offset is written as offset * 2 m_bgvram[offset] = (data & 0xf) | ((data & 0xf0) << 4); } -uint8_t namcos16_state::dipA_l() { return ioport("DSW1")->read(); } // dips A -uint8_t namcos16_state::dipA_h() { return ioport("DSW1")->read() >> 4; } // dips A -uint8_t namcos16_state::dipB_l() { return ioport("DSW2")->read(); } // dips B -uint8_t namcos16_state::dipB_h() { return ioport("DSW2")->read() >> 4; } // dips B +void namcos16_state::txvram_w(offs_t offset, u8 data) +{ + m_txvram[offset] = data; + m_tx_tilemap->mark_tile_dirty(offset & 0x3ff); +} + +template u8 namcos16_state::dip_l() { return m_io_dsw[Which]->read(); } +template u8 namcos16_state::dip_h() { return m_io_dsw[Which]->read() >> 4; } -void namcos16_state::flip(uint8_t data) +void namcos16_state::flip(u8 data) { - flip_screen_set(data & 1); + flip_screen_set(BIT(data, 0)); } -void namcos16_state::pal_bank_w(offs_t offset, uint8_t data) +void namcos16_state::pal_bank_w(offs_t offset, u8 data) { - m_pal_bank = offset & 1; + m_pal_bank = BIT(offset, 0); + m_tx_tilemap->mark_all_dirty(); } -void namcos16_state::namcos16_master_base_map(address_map &map) +void namcos16_state::main_base_map(address_map &map) { - map(0x0000, 0x03ff).ram().share("fgvram"); - map(0x0400, 0x07ff).ram().share("fgattr"); - map(0x0800, 0x1fff).ram().share("master_workram"); - map(0x2800, 0x2fff).ram().share("slave_sharedram"); + map(0x0000, 0x07ff).ram().w(FUNC(namcos16_state::txvram_w)).share(m_txvram); + map(0x0800, 0x1fff).ram().share(m_spriteram); + map(0x2800, 0x2fff).ram().share(m_sharedram); // 0x6000 - 0x7fff i/o specific, guessing PAL controlled. - map(0x8000, 0x8fff).w(FUNC(namcos16_state::slave_halt_ctrl_w)); + map(0x8000, 0xffff).rom().region("maincpu", 0); + map(0x8000, 0x8fff).w(FUNC(namcos16_state::sub_halt_ctrl_w)); map(0x9000, 0x9fff).w(FUNC(namcos16_state::sound_halt_ctrl_w)); map(0xa000, 0xa001).w(FUNC(namcos16_state::pal_bank_w)); - map(0x8000, 0xffff).rom().region("master_rom", 0); } -void namcos16_state::master_liblrabl_map(address_map &map) +void namcos16_state::liblrabl_main_map(address_map &map) { - namcos16_master_base_map(map); + main_base_map(map); map(0x6000, 0x63ff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); map(0x6800, 0x680f).rw(m_namco58xx, FUNC(namco58xx_device::read), FUNC(namco58xx_device::write)); map(0x6810, 0x681f).rw(m_namco56xx_1, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write)); @@ -412,9 +408,9 @@ void namcos16_state::master_liblrabl_map(address_map &map) map(0x7000, 0x7fff).nopr().w(FUNC(namcos16_state::irq_ctrl_w)); } -void namcos16_state::master_toypop_map(address_map &map) +void namcos16_state::toypop_main_map(address_map &map) { - namcos16_master_base_map(map); + main_base_map(map); map(0x6000, 0x600f).rw(m_namco58xx, FUNC(namco58xx_device::read), FUNC(namco58xx_device::write)); map(0x6010, 0x601f).rw(m_namco56xx_1, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write)); map(0x6020, 0x602f).rw(m_namco56xx_2, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write)); @@ -422,20 +418,20 @@ void namcos16_state::master_toypop_map(address_map &map) map(0x7000, 0x7000).rw(FUNC(namcos16_state::irq_enable_r), FUNC(namcos16_state::irq_disable_w)); } -void namcos16_state::slave_map(address_map &map) +void namcos16_state::sub_map(address_map &map) { - map(0x000000, 0x007fff).rom().region("slave_rom", 0); + map(0x000000, 0x007fff).rom().region("sub", 0); map(0x080000, 0x0bffff).ram(); - map(0x100000, 0x100fff).rw(FUNC(namcos16_state::slave_shared_r), FUNC(namcos16_state::slave_shared_w)).umask16(0x00ff); + map(0x100000, 0x100fff).rw(FUNC(namcos16_state::sharedram_r), FUNC(namcos16_state::sharedram_w)).umask16(0x00ff); map(0x180000, 0x187fff).rw(FUNC(namcos16_state::bg_rmw_r), FUNC(namcos16_state::bg_rmw_w)); - map(0x190000, 0x1dffff).ram().share("bgvram"); - map(0x300000, 0x3fffff).w(FUNC(namcos16_state::slave_irq_enable_w)); + map(0x190000, 0x1dffff).ram().share(m_bgvram); + map(0x300000, 0x3fffff).w(FUNC(namcos16_state::sub_irq_enable_w)); } void namcos16_state::sound_map(address_map &map) { map(0x0000, 0x03ff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); - map(0xe000, 0xffff).rom().region("sound_rom", 0); + map(0xe000, 0xffff).rom().region("soundcpu", 0); } @@ -487,10 +483,10 @@ static INPUT_PORTS_START( liblrabl ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWA:6,5,4") // bonus scores for common - PORT_DIPSETTING( 0x1c, "40k 120k 200k 400k 600k 1m" ) - PORT_DIPSETTING( 0x0c, "40k 140k 250k 400k 700k 1m" ) + PORT_DIPSETTING( 0x1c, "40k 120k 200k 400k 600k 1M" ) + PORT_DIPSETTING( 0x0c, "40k 140k 250k 400k 700k 1M" ) // bonus scores for 1, 2 or 3 lives - PORT_DIPSETTING( 0x14, "50k 150k 300k 500k 700k 1m" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01) + PORT_DIPSETTING( 0x14, "50k 150k 300k 500k 700k 1M" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01) PORT_DIPSETTING( 0x04, "40k 120k and every 120k" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01) PORT_DIPSETTING( 0x18, "40k 150k and every 150k" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01) PORT_DIPSETTING( 0x08, "50k 150k 300k" ) PORT_CONDITION("DSW1", 0x03, NOTEQUALS, 0x01) @@ -637,10 +633,10 @@ static const gfx_layout charlayout = 8,8, RGN_FRAC(1,1), 2, - { 0, 4 }, - { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 16*8 + { STEP2(0, 4) }, + { STEP4(8*8, 1), STEP4(0, 1) }, + { STEP8(0, 8) }, + 8*8*2 }; static const gfx_layout spritelayout = @@ -648,36 +644,40 @@ static const gfx_layout spritelayout = 16,16, RGN_FRAC(1,1), 2, - { 0, 4 }, - { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3, - 24*8+0, 24*8+1, 24*8+2, 24*8+3 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, - 32 * 8, 33 * 8, 34 * 8, 35 * 8, 36 * 8, 37 * 8, 38 * 8, 39 * 8 }, - 64*8 + { STEP2(0, 4) }, + { STEP4(0, 1), STEP4(8*8, 1), STEP4(16*8, 1), STEP4(24*8, 1) }, + { STEP8(0, 8), STEP8(32*8, 8) }, + 16*16*2 }; static GFXDECODE_START( gfx_toypop ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 128*4, 64 ) + GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 128 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 128*4, 64 ) GFXDECODE_END +void namcos16_state::machine_start() +{ + save_item(NAME(m_main_irq_enable)); + save_item(NAME(m_sub_irq_enable)); +} + void namcos16_state::machine_reset() { - m_master_irq_enable = false; - m_slave_irq_enable = false; - m_slave_cpu->set_input_line(INPUT_LINE_RESET,ASSERT_LINE); - m_sound_cpu->set_input_line(INPUT_LINE_RESET,ASSERT_LINE); + m_main_irq_enable = false; + m_sub_irq_enable = false; + m_subcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); + m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); } -TIMER_DEVICE_CALLBACK_MEMBER(namcos16_state::master_scanline) +TIMER_DEVICE_CALLBACK_MEMBER(namcos16_state::main_scanline) { - int scanline = param; + int const scanline = param; - if(scanline == 224 && m_master_irq_enable == true) - m_master_cpu->set_input_line(M6809_IRQ_LINE,HOLD_LINE); + if (scanline == 224 && m_main_irq_enable) + m_maincpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); // TODO: definitely can't fire from this, presume that a command send has a timing response ... - if(scanline == 0) + if (scanline == 0) { if (!m_namco58xx->read_reset_line()) m_namco58xx->customio_run(); @@ -690,24 +690,26 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos16_state::master_scanline) } } -void namcos16_state::slave_vblank_irq(int state) +void namcos16_state::vblank_irq(int state) { - if (state && m_slave_irq_enable == true) - m_slave_cpu->set_input_line(6, HOLD_LINE); + if (state && m_sub_irq_enable) + m_subcpu->set_input_line(6, HOLD_LINE); } void namcos16_state::liblrabl(machine_config &config) { - MC6809E(config, m_master_cpu, MASTER_CLOCK/4); - m_master_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::master_liblrabl_map); - TIMER(config, "scantimer").configure_scanline(FUNC(namcos16_state::master_scanline), "screen", 0, 1); + constexpr XTAL MASTER_CLOCK = XTAL(6'144'000); + + MC6809E(config, m_maincpu, MASTER_CLOCK / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos16_state::liblrabl_main_map); + TIMER(config, "scantimer").configure_scanline(FUNC(namcos16_state::main_scanline), "screen", 0, 1); - M68000(config, m_slave_cpu, MASTER_CLOCK); - m_slave_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::slave_map); + M68000(config, m_subcpu, MASTER_CLOCK); + m_subcpu->set_addrmap(AS_PROGRAM, &namcos16_state::sub_map); - MC6809E(config, m_sound_cpu, MASTER_CLOCK/4); - m_sound_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::sound_map); - m_sound_cpu->set_periodic_int(FUNC(namcos16_state::irq0_line_hold), attotime::from_hz(60)); + MC6809E(config, m_soundcpu, MASTER_CLOCK / 4); + m_soundcpu->set_addrmap(AS_PROGRAM, &namcos16_state::sound_map); + m_soundcpu->set_periodic_int(FUNC(namcos16_state::irq0_line_hold), attotime::from_hz(60)); NAMCO_58XX(config, m_namco58xx, 0); m_namco58xx->in_callback<0>().set_ioport("COINS"); @@ -716,10 +718,10 @@ void namcos16_state::liblrabl(machine_config &config) m_namco58xx->in_callback<3>().set_ioport("BUTTONS"); NAMCO_56XX(config, m_namco56xx_1, 0); - m_namco56xx_1->in_callback<0>().set(FUNC(namcos16_state::dipA_h)); - m_namco56xx_1->in_callback<1>().set(FUNC(namcos16_state::dipB_l)); - m_namco56xx_1->in_callback<2>().set(FUNC(namcos16_state::dipB_h)); - m_namco56xx_1->in_callback<3>().set(FUNC(namcos16_state::dipA_l)); + m_namco56xx_1->in_callback<0>().set(FUNC(namcos16_state::dip_h<0>)); + m_namco56xx_1->in_callback<1>().set(FUNC(namcos16_state::dip_l<1>)); + m_namco56xx_1->in_callback<2>().set(FUNC(namcos16_state::dip_h<1>)); + m_namco56xx_1->in_callback<3>().set(FUNC(namcos16_state::dip_l<0>)); m_namco56xx_1->out_callback<0>().set(FUNC(namcos16_state::flip)); NAMCO_56XX(config, m_namco56xx_2, 0); @@ -728,17 +730,17 @@ void namcos16_state::liblrabl(machine_config &config) m_namco56xx_2->in_callback<3>().set_ioport("SERVICE"); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(MASTER_CLOCK,384,0,288,264,0,224); // derived from Galaxian HW, 60.606060 + screen.set_raw(MASTER_CLOCK, 384, 0, 288, 264, 0, 224); // derived from Galaxian HW, 60.606060 screen.set_screen_update(FUNC(namcos16_state::screen_update)); screen.set_palette(m_palette); - screen.screen_vblank().set(FUNC(namcos16_state::slave_vblank_irq)); + screen.screen_vblank().set(FUNC(namcos16_state::vblank_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_toypop); PALETTE(config, m_palette, FUNC(namcos16_state::toypop_palette), 128*4 + 64*4 + 16*2, 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); - NAMCO_15XX(config, m_namco15xx, 24000); + NAMCO_15XX(config, m_namco15xx, MASTER_CLOCK / 256); m_namco15xx->set_voices(8); m_namco15xx->add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -746,26 +748,26 @@ void namcos16_state::liblrabl(machine_config &config) void namcos16_state::toypop(machine_config &config) { liblrabl(config); - m_master_cpu->set_addrmap(AS_PROGRAM, &namcos16_state::master_toypop_map); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos16_state::toypop_main_map); } ROM_START( liblrabl ) - ROM_REGION( 0x8000, "master_rom", 0 ) + ROM_REGION( 0x8000, "maincpu", 0 ) ROM_LOAD( "5b.rom", 0x0000, 0x4000, CRC(da7a93c2) SHA1(fe4a02cdab66722eb7b8cf58825f899b1949a6a2) ) ROM_LOAD( "5c.rom", 0x4000, 0x4000, CRC(6cae25dc) SHA1(de74317a7d5de1865d096c377923a764be5e6879) ) - ROM_REGION( 0x2000, "sound_rom", 0 ) + ROM_REGION( 0x2000, "soundcpu", 0 ) ROM_LOAD( "2c.rom", 0x0000, 0x2000, CRC(7c09e50a) SHA1(5f004d60bbb7355e008a9cda137b28bc2192b8ef) ) - ROM_REGION16_BE( 0x8000, "slave_rom", 0 ) + ROM_REGION16_BE( 0x8000, "sub", 0 ) ROM_LOAD16_BYTE("8c.rom", 0x0000, 0x4000, CRC(a00cd959) SHA1(cc5621103c31cfbc65941615cab391db0f74e6ce) ) ROM_LOAD16_BYTE("10c.rom", 0x0001, 0x4000, CRC(09ce209b) SHA1(2ed46d6592f8227bac8ab54963d9a300706ade47) ) - ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_REGION( 0x2000, "tiles", 0 ) ROM_LOAD( "5p.rom", 0x0000, 0x2000, CRC(3b4937f0) SHA1(06d9de576f1c2262c34aeb91054e68c9298af688) ) - ROM_REGION( 0x4000, "gfx2", 0 ) + ROM_REGION( 0x4000, "sprites", 0 ) ROM_LOAD( "9t.rom", 0x0000, 0x4000, CRC(a88e24ca) SHA1(eada133579f19de09255084dcdc386311606a335) ) ROM_REGION( 0x0600, "proms", 0 ) @@ -780,21 +782,21 @@ ROM_START( liblrabl ) ROM_END ROM_START( toypop ) - ROM_REGION( 0x8000, "master_rom", 0 ) + ROM_REGION( 0x8000, "maincpu", 0 ) ROM_LOAD( "tp1-2.5b", 0x0000, 0x4000, CRC(87469620) SHA1(2ee257486c9c044386ac7d0cd4a90583eaeb3e97) ) ROM_LOAD( "tp1-1.5c", 0x4000, 0x4000, CRC(dee2fd6e) SHA1(b2c12008d6d3e7544ba3c12a52a6abf9181842c8) ) - ROM_REGION( 0x2000, "sound_rom", 0 ) + ROM_REGION( 0x2000, "soundcpu", 0 ) ROM_LOAD( "tp1-3.2c", 0x0000, 0x2000, CRC(5f3bf6e2) SHA1(d1b3335661b9b23cb10001416c515b77b5e783e9) ) - ROM_REGION16_BE( 0x8000, "slave_rom", 0 ) + ROM_REGION16_BE( 0x8000, "sub", 0 ) ROM_LOAD16_BYTE("tp1-4.8c", 0x0000, 0x4000, CRC(76997db3) SHA1(5023a2f20a5f2c9baff130f6832583493c71f883) ) ROM_LOAD16_BYTE("tp1-5.10c", 0x0001, 0x4000, CRC(37de8786) SHA1(710365e34c05d01815844c414518f93234b6160b) ) - ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_REGION( 0x2000, "tiles", 0 ) ROM_LOAD( "tp1-7.5p", 0x0000, 0x2000, CRC(95076f9e) SHA1(1e3d32b21f6d46591ec3921aba51f672d64a9023) ) - ROM_REGION( 0x4000, "gfx2", 0 ) + ROM_REGION( 0x4000, "sprites", 0 ) ROM_LOAD( "tp1-6.9t", 0x0000, 0x4000, CRC(481ffeaf) SHA1(c51735ad3a1dbb46ad414408b54554e9223b2219) ) ROM_REGION( 0x0600, "proms", 0 ) From 3336772d6897205f30a4000ab877f40667058219 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Sat, 21 Dec 2024 10:14:47 -0800 Subject: [PATCH 06/39] hash/nes.xml: Added homebrew PCM Demo With Graphics. (#13094) New working software list items (nes.xml) ----------------------------------------- PCM Demo With Graphics [frantik] --- hash/nes.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/hash/nes.xml b/hash/nes.xml index 57d16689c65dc..4508925253f04 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -28760,6 +28760,24 @@ license:CC0-1.0 + + + PCM Demo With Graphics + 2009 + frantik + + + + + + + + + + + + + Peepar Time (Japan) 1990 From 780490d9ac651f0aafe6fe3e6c2ece9b7e800fbe Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 22 Dec 2024 05:34:00 +1100 Subject: [PATCH 07/39] srcclean and cleanup --- hash/cassvisn_cart.xml | 12 +++++----- hash/megadriv.xml | 2 +- hash/spectrum_cass.xml | 2 +- src/devices/bus/rs232/teletex800.cpp | 4 ++-- src/devices/bus/sg1000_exp/sk1100.cpp | 2 +- src/devices/cpu/upd777/upd777.cpp | 14 +++++------ src/devices/cpu/upd777/upd777dasm.cpp | 4 ++-- src/devices/video/pc_vga_cirrus.cpp | 2 +- src/emu/layout/teletex800.lay | 34 +++++++++++++-------------- src/frontend/mame/luaengine.cpp | 12 +++++----- src/mame/amiga/amiga_v.cpp | 6 ++--- src/mame/amiga/amigaaga.cpp | 2 +- src/mame/apple/dafb.cpp | 4 ++-- src/mame/dataeast/dec8.cpp | 4 ++-- src/mame/dataeast/kchamp_v.cpp | 10 ++++---- src/mame/dynax/dynax.cpp | 6 ++--- src/mame/jaleco/megasys1.h | 4 ++-- src/mame/midway/williams.cpp | 2 +- src/mame/misc/cvs.cpp | 14 +++++------ src/mame/misc/goldnpkr.cpp | 4 ++-- src/mame/psion/mc400.cpp | 8 +++---- src/mame/skeleton/easy_karaoke.cpp | 10 ++++---- src/mame/toaplan/dogyuun.cpp | 2 +- src/mame/toaplan/dt7.cpp | 10 ++++---- src/mame/toaplan/enmadaio.cpp | 2 +- src/mame/toaplan/pipibibi.cpp | 2 +- src/mame/toaplan/snowbro2.cpp | 4 ++-- src/mame/toaplan/truxton2.cpp | 2 +- src/mame/zaccaria/quasar.cpp | 2 +- 29 files changed, 93 insertions(+), 93 deletions(-) diff --git a/hash/cassvisn_cart.xml b/hash/cassvisn_cart.xml index 9fbb64e17bb68..fc95747bfd9ed 100644 --- a/hash/cassvisn_cart.xml +++ b/hash/cassvisn_cart.xml @@ -29,7 +29,7 @@ Note on PRG size (from CPU documentation) Physically, 128 * 15 * 12 = 23,040 bits Logically, 127 * 15 * 12 = 22,860 bits (as final word of each page is inaccessible by the CPU) -the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 15 * (12+4) +the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 15 * (12+4) --> @@ -43,7 +43,7 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1 - + @@ -65,7 +65,7 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1 - + Galaxian @@ -76,7 +76,7 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1 - + @@ -92,7 +92,7 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1 - + @@ -211,5 +211,5 @@ the ROM files below store 12 bit in a 16-bit word with 4 bits unused, so 128 * 1 - + diff --git a/hash/megadriv.xml b/hash/megadriv.xml index c36c6f9750133..e829d519ede6f 100644 --- a/hash/megadriv.xml +++ b/hash/megadriv.xml @@ -3019,7 +3019,7 @@ Crashes after EA logo, requires better [VDP] irq handling + See: https://www.youtube.com/watch?v=_1uGkfw5ky8 --> Fix-it Felix Jr. (v1.0) 2013 diff --git a/hash/spectrum_cass.xml b/hash/spectrum_cass.xml index bce7a30f1761f..7d3b910bfe34b 100644 --- a/hash/spectrum_cass.xml +++ b/hash/spectrum_cass.xml @@ -72378,7 +72378,7 @@ Side B - Game 1: The Dragonstar Trilogy Part III (Delta 4 Software) - + Éditeur de Manoir 2012 diff --git a/src/devices/bus/rs232/teletex800.cpp b/src/devices/bus/rs232/teletex800.cpp index 46bac3bb5fd1f..0bde70f4f677c 100644 --- a/src/devices/bus/rs232/teletex800.cpp +++ b/src/devices/bus/rs232/teletex800.cpp @@ -88,7 +88,7 @@ class teletex_800_device : public device_t, public device_rs232_port_interface m_all_led.resolve(); m_time_led.resolve(); m_date_led.resolve(); - m_year_led.resolve(); + m_year_led.resolve(); m_rx_digits.resolve(); m_tx_digits.resolve(); } @@ -129,7 +129,7 @@ class teletex_800_device : public device_t, public device_rs232_port_interface { } - constexpr static const z80_daisy_config z80_daisy_chain[] = + constexpr static const z80_daisy_config z80_daisy_chain[] = { { nullptr } }; diff --git a/src/devices/bus/sg1000_exp/sk1100.cpp b/src/devices/bus/sg1000_exp/sk1100.cpp index f65451827bdc5..f0ad03885629b 100644 --- a/src/devices/bus/sg1000_exp/sk1100.cpp +++ b/src/devices/bus/sg1000_exp/sk1100.cpp @@ -90,7 +90,7 @@ static INPUT_PORTS_START( sk1100_keys ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"\u2193") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // U+2193 = ↓ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"] \u30E0 } \u300d LIST") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']', 0x30e0) PORT_CHAR('}', 0x300d) // ム 」 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"[ \u309C { \u300c THEN") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[', 0x309c) PORT_CHAR('{', 0x300c) // ゜ 「 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"[ \u309C { \u300c THEN") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[', 0x309c) PORT_CHAR('{', 0x300c) // ゜ 「 PORT_START("PA5") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"6 \u30AA & COLOR") PORT_CODE(KEYCODE_6) PORT_CHAR('6', 0x30aa) PORT_CHAR('&', 0x30a9) // オ ォ diff --git a/src/devices/cpu/upd777/upd777.cpp b/src/devices/cpu/upd777/upd777.cpp index fda5e638bb4b0..d915c031b8745 100644 --- a/src/devices/cpu/upd777/upd777.cpp +++ b/src/devices/cpu/upd777/upd777.cpp @@ -60,7 +60,7 @@ void upd777_cpu_device::internal_data_map(address_map &map) // 00 yyyyyyp (y = ypos, p = PRIO) // 01 xxxxxxx (x = xpos) // 02 ttttttt (t = pattern) - // 03 YYYRGBS (Y = , RGB = color, S=ySUB) + // 03 YYYRGBS (Y = , RGB = color, S=ySUB) map(0x00, 0x7f).ram().share("datamem"); } @@ -254,7 +254,7 @@ inline void upd777_cpu_device::set_frs(u8 frs) { m_frs = frs & 0x7f; } inline void upd777_cpu_device::set_fls(u8 fls) { m_fls = fls & 0x7f; } // MODE is a 7-bit register with the following format -// 6543210 +// 6543210 // rbhpRGB (r = reverberate sound effect, b = brightness, h = hue, p = black/prio, RGB = color) inline void upd777_cpu_device::set_mode(u8 mode) { m_mode = mode & 0x7f; } @@ -517,7 +517,7 @@ void upd777_cpu_device::do_op() { if (!non) { - if ((srcreg1 & srcreg2) == 0) // skip if (x·y) makes zero, N->L[2:1] + if ((srcreg1 & srcreg2) == 0) // skip if (x·y) makes zero, N->L[2:1] m_skip = 1; } else @@ -569,7 +569,7 @@ void upd777_cpu_device::do_op() } else if ((inst & 0b1111'1010'0000) == 0b0011'0010'0000) { - // 0b0011'0r1R'oonn (where r = reg1, R = reg2, o = optype, and n = next l value) + // 0b0011'0r1R'oonn (where r = reg1, R = reg2, o = optype, and n = next l value) // 320 AND A1[7:1] and A1[7:1], store to A1[7:1], N->L[2:1] // 324 Add A1[7:1] and A1[7:1], store to A1[7:1], N->L[2:1] // 328 OR A1[7:1] and A1[7:1], store to A1[7:1], N->L[2:1] @@ -606,7 +606,7 @@ void upd777_cpu_device::do_op() src1 = src1 + src2; // not in this case? //if (src1 & 0x80) - // m_skip = 1; + // m_skip = 1; break; } case 2: // OR @@ -719,7 +719,7 @@ void upd777_cpu_device::do_op() } else if ((inst & 0b1111'1100'0010) == 0b0100'0100'0000) { - // 0b0100'01dg'ks0n (where d = DISP, G = GPE, K = KIE, S = SME, n = A11) + // 0b0100'01dg'ks0n (where d = DISP, G = GPE, K = KIE, S = SME, n = A11) // 440 Set D to DISP, G to GPE, K to KIE, S to SME, N->A[11] const int d = (inst >> 5) & 0x1; const int g = (inst >> 4) & 0x1; @@ -1172,7 +1172,7 @@ uint32_t upd777_cpu_device::screen_update(screen_device &screen, bitmap_ind16 &b // 0x68-0x6f are 'Y Repeat' (7x7) // 0x70-0x77 are 'XY Repeat' (8x7) // 0x78-0x7f are 'X Repeat' (8x7) -// +// // NOTE, sprite patterns *7 and *f are unused so documentation expresses these ranges as to 66, 6e etc. rather than 67 6f // // it isn't clear how the 'Bent' effect etc. is enabled, as clearly not all patterns in this range should use it? diff --git a/src/devices/cpu/upd777/upd777dasm.cpp b/src/devices/cpu/upd777/upd777dasm.cpp index fd7597b8bab39..5ebd92eb451d1 100644 --- a/src/devices/cpu/upd777/upd777dasm.cpp +++ b/src/devices/cpu/upd777/upd777dasm.cpp @@ -135,7 +135,7 @@ offs_t upd777_disassembler::disassemble(std::ostream &stream, offs_t pc, const u else if (((inst & 0b1111'0000'0000) == 0b0010'0000'0000) && ((inst & 0b0000'0000'1100) != 0b0000'0000'0100)) { // 0b0010'rrnR'oonn where rr = reg1 (A1, A2, M or H), n = invert condition, R = reg2 (A1 or A2) and oo = optype (only 0,2,3 are valid, no cases here for 1) nn = next l value - // + // // optype · (AND) // 200 Skip if (A1[7:1]·A1[7:1]) makes zero, N->L[2:1] // 220 Skip if (A1[7:1]·A1[7:1]) makes non zero, N->L[2:1] @@ -499,6 +499,6 @@ offs_t upd777_disassembler::disassemble(std::ostream &stream, offs_t pc, const u { util::stream_format(stream, "%04x ", inst); } - + return 1; } diff --git a/src/devices/video/pc_vga_cirrus.cpp b/src/devices/video/pc_vga_cirrus.cpp index 475018b6a8797..04af15eb8ce5c 100644 --- a/src/devices/video/pc_vga_cirrus.cpp +++ b/src/devices/video/pc_vga_cirrus.cpp @@ -1190,7 +1190,7 @@ uint8_t cirrus_gd5428_vga_device::mem_r(offs_t offset) // FIXME: workaround crash behaviour in picasso2 // it will otherwise provide an offset of 0x1fxxxx in the gc_locked below - // causing a crash during adapter init + // causing a crash during adapter init if(svga.rgb8_en || svga.rgb15_en || svga.rgb16_en || svga.rgb24_en) { return svga_device::mem_linear_r((offset & 0xffff) + bank * 0x10000); diff --git a/src/emu/layout/teletex800.lay b/src/emu/layout/teletex800.lay index b34f144cb5543..381c48ef34f80 100644 --- a/src/emu/layout/teletex800.lay +++ b/src/emu/layout/teletex800.lay @@ -9,11 +9,11 @@ license:CC0-1.0 - + - + @@ -21,8 +21,8 @@ license:CC0-1.0 - - + + @@ -38,38 +38,38 @@ license:CC0-1.0 - + - + - + - + - + - + - + - - - + + + @@ -151,17 +151,17 @@ license:CC0-1.0 - + - + - + diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index ec5ccb03e8e3d..53455d8cc5fc7 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -1467,12 +1467,12 @@ void lua_engine::initialize() { switch (m.phase()) { - case machine_phase::PREINIT: return "preinit"; - case machine_phase::INIT: return "init"; - case machine_phase::RESET: return "reset"; - case machine_phase::RUNNING: return "running"; - case machine_phase::EXIT: return "exit"; - default: return ""; + case machine_phase::PREINIT: return "preinit"; + case machine_phase::INIT: return "init"; + case machine_phase::RESET: return "reset"; + case machine_phase::RUNNING: return "running"; + case machine_phase::EXIT: return "exit"; + default: return ""; } }); diff --git a/src/mame/amiga/amiga_v.cpp b/src/mame/amiga/amiga_v.cpp index 8458feb38d613..411e0f015e62d 100644 --- a/src/mame/amiga/amiga_v.cpp +++ b/src/mame/amiga/amiga_v.cpp @@ -550,7 +550,7 @@ void amiga_state::render_scanline(bitmap_rgb32 &bitmap, int scanline) for (int x = 0; x < (amiga_state::SCREEN_WIDTH / 2) + 10; x++) { int sprpix; - const bool out_of_beam = x >= amiga_state::SCREEN_WIDTH / 2; + const bool out_of_beam = x >= amiga_state::SCREEN_WIDTH / 2; /* time to execute the copper? */ if (x == next_copper_x) @@ -602,10 +602,10 @@ void amiga_state::render_scanline(bitmap_rgb32 &bitmap, int scanline) /* clear the target pixels to the background color as a starting point */ if (dst != nullptr && !out_of_beam) - { + { dst[x*2+0] = dst[x*2+1] = m_palette->pen(CUSTOM_REG(REG_COLOR00)); - } + } /* if we hit the first fetch pixel, reset the counters and latch the delays */ if (x == ddf_start_pixel) diff --git a/src/mame/amiga/amigaaga.cpp b/src/mame/amiga/amigaaga.cpp index 76b69ea25effa..d60dc1a5ba336 100644 --- a/src/mame/amiga/amigaaga.cpp +++ b/src/mame/amiga/amigaaga.cpp @@ -549,7 +549,7 @@ void amiga_state::aga_render_scanline(bitmap_rgb32 &bitmap, int scanline) for (int x = 0; x < (amiga_state::SCREEN_WIDTH / 2) + offset_hack[bitplane_fmode]; x++) { int sprpix; - const bool out_of_beam = x >= amiga_state::SCREEN_WIDTH / 2; + const bool out_of_beam = x >= amiga_state::SCREEN_WIDTH / 2; /* time to execute the copper? */ if (x == next_copper_x) diff --git a/src/mame/apple/dafb.cpp b/src/mame/apple/dafb.cpp index eee10437eb8e1..0d0c7eba8ba2a 100644 --- a/src/mame/apple/dafb.cpp +++ b/src/mame/apple/dafb.cpp @@ -207,7 +207,7 @@ static INPUT_PORTS_START(monitor_config) PORT_CONFSETTING(0x02, u8"Mac RGB Display (12\" 512\u00d7384)") // "Rubik" (modified IIgs AppleColor RGB) PORT_CONFSETTING(0x03, u8"Mac Two-Page Display (B&W 21\" 1152\u00d7870)") // "2 Page" PORT_CONFSETTING(0x06, u8"Mac Hi-Res Display (12-14\" 640\u00d7480)") // "High Res" - PORT_CONFSETTING(0x07, u8"No monitor, disable internal video") // No monitor connected + PORT_CONFSETTING(0x07, u8"No monitor, disable internal video") // No monitor connected PORT_CONFSETTING(ext(0, 0, 0), "PAL Encoder (640\u00d7480, 768\u00d7576)") PORT_CONFSETTING(ext(1, 1, 0), "NTSC Encoder (512\u00d7384, 640\u00d7480)") PORT_CONFSETTING(ext(1, 1, 3), "640x480 VGA") @@ -225,7 +225,7 @@ static INPUT_PORTS_START(monitor_config_noconv) PORT_CONFSETTING(0x02, u8"Mac RGB Display (12\" 512\u00d7384)") // "Rubik" (modified IIgs AppleColor RGB) PORT_CONFSETTING(0x03, u8"Mac Two-Page Display (B&W 21\" 1152\u00d7870)") // "2 Page" PORT_CONFSETTING(0x06, u8"Mac Hi-Res Display (12-14\" 640\u00d7480)") // "High Res" - PORT_CONFSETTING(0x07, u8"No monitor, disable internal video") // No monitor connected + PORT_CONFSETTING(0x07, u8"No monitor, disable internal video") // No monitor connected PORT_CONFSETTING(ext(1, 1, 3), "640x480 VGA") PORT_CONFSETTING(ext(2, 3, 1), "832x624 16\" RGB") // "Goldfish" or "16 inch RGB" PORT_CONFSETTING(ext(3, 2, 2), "1024\u00d7768 19\" RGB"); diff --git a/src/mame/dataeast/dec8.cpp b/src/mame/dataeast/dec8.cpp index 7b7a02806f12a..22109ebfb1d1a 100644 --- a/src/mame/dataeast/dec8.cpp +++ b/src/mame/dataeast/dec8.cpp @@ -1205,7 +1205,7 @@ static INPUT_PORTS_START( ghostb ) PORT_START("DSW0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) // Tested on real hardware PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) - // 1-2 should be coinage. + // 1-2 should be coinage. // PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2") // PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) // PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) @@ -1752,7 +1752,7 @@ static const gfx_layout sr_sprites = { 16*8, 1+(16*8), 2+(16*8), 3+(16*8), 4+(16*8), 5+(16*8), 6+(16*8), 7+(16*8), 0,1,2,3,4,5,6,7 }, { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 ,8*8,9*8,10*8,11*8,12*8,13*8,14*8,15*8 }, -// { 0*8, 2*8, 1*8, 3*8, 4*8, 6*8, 5*8, 7*8 ,8*8,10*8,9*8,11*8,12*8,14*8,13*8,15*8 }, bootleg decode +// { 0*8, 2*8, 1*8, 3*8, 4*8, 6*8, 5*8, 7*8 ,8*8,10*8,9*8,11*8,12*8,14*8,13*8,15*8 }, bootleg decode 16*16 }; diff --git a/src/mame/dataeast/kchamp_v.cpp b/src/mame/dataeast/kchamp_v.cpp index 27430241779c0..3096a4c70f42a 100644 --- a/src/mame/dataeast/kchamp_v.cpp +++ b/src/mame/dataeast/kchamp_v.cpp @@ -57,11 +57,11 @@ void kchamp_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, { /* sprite format: - Offset Encoding - 0 YYYYYYYY - 1 TTTTTTTT - tile# - 2 FGGTCCCC - y flip, gfx bank, high bit of tile#, color - 3 XXXXXXXX + Offset Encoding + 0 YYYYYYYY + 1 TTTTTTTT - tile# + 2 FGGTCCCC - y flip, gfx bank, high bit of tile#, color + 3 XXXXXXXX */ int attr = m_spriteram[offs + 2]; diff --git a/src/mame/dynax/dynax.cpp b/src/mame/dynax/dynax.cpp index e827513ffad79..61488f6735b83 100644 --- a/src/mame/dynax/dynax.cpp +++ b/src/mame/dynax/dynax.cpp @@ -3628,7 +3628,7 @@ static INPUT_PORTS_START( mjreach ) PORT_DIPNAME( 0x20, 0x00, "Last Chance" ) PORT_DIPLOCATION("DIP-SW3:6") // ラストチャンス PORT_DIPSETTING( 0x20, DEF_STR(Off) ) // 無 PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 - PORT_DIPNAME( 0xc0, 0x00, "Last Chance Tsumo Count" ) PORT_DIPLOCATION("DIP-SW3:7,8") // ラストチャンスのツモ回数 + PORT_DIPNAME( 0xc0, 0x00, "Last Chance Count" ) PORT_DIPLOCATION("DIP-SW3:7,8") // ラストチャンスのツモ回数 PORT_DIPSETTING( 0xc0, "1" ) PORT_DIPSETTING( 0x80, "3" ) PORT_DIPSETTING( 0x00, "5" ) @@ -3653,7 +3653,7 @@ static INPUT_PORTS_START( mjreach ) PORT_DIPNAME( 0x20, 0x00, "In-Game Messages" ) PORT_DIPLOCATION("DIP-SW4:6") // ゲーム中のメッセージ PORT_DIPSETTING( 0x20, DEF_STR(Off) ) // 無 PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 (shows when kan/pon/chi/ron is possible) - PORT_DIPNAME( 0x40, 0x00, DEF_STR(Unused) ) PORT_DIPLOCATION("DIP-SW4:7") // ON固定 + PORT_DIPNAME( 0x40, 0x00, DEF_STR(Unknown) ) PORT_DIPLOCATION("DIP-SW4:7") // ON固定 PORT_DIPSETTING( 0x40, DEF_STR(Off) ) PORT_DIPSETTING( 0x00, DEF_STR(On) ) PORT_DIPNAME( 0x80, 0x80, "Super Revolver Jackpot Payout Rate" ) PORT_DIPLOCATION("DIP-SW4:8") // スパーレボルバーのJACK-POTの出率 @@ -3679,7 +3679,7 @@ static INPUT_PORTS_START( mjreach ) PORT_DIPNAME( 0x40, 0x40, "Renchan Gal Display" ) PORT_DIPLOCATION("DIP-SW4:9") // 連荘ギャルの表示の方式 PORT_DIPSETTING( 0x40, "After Each Win" ) // 勝つごとに表示 (= On according to manual page?) PORT_DIPSETTING( 0x00, "After 3 Consecutive Wins" ) // 3連荘のみ表示 (= Off according to manual page?) - PORT_DIPNAME( 0x80, 0x80, DEF_STR(Unused) ) PORT_DIPLOCATION("DIP-SW4:10") // OFF固定 + PORT_DIPNAME( 0x80, 0x80, DEF_STR(Unknown) ) PORT_DIPLOCATION("DIP-SW4:10") // OFF固定 PORT_DIPSETTING( 0x80, DEF_STR(Off) ) PORT_DIPSETTING( 0x00, DEF_STR(On) ) diff --git a/src/mame/jaleco/megasys1.h b/src/mame/jaleco/megasys1.h index 5c8393e8bdfdc..4aa6c4c73b292 100644 --- a/src/mame/jaleco/megasys1.h +++ b/src/mame/jaleco/megasys1.h @@ -91,8 +91,8 @@ class megasys1_state : public driver_device void system_base(machine_config &config) ATTR_COLD; void system_B(machine_config &config) ATTR_COLD; - void system_C(machine_config &config) ATTR_COLD; - + void system_C(machine_config &config) ATTR_COLD; + void megasys1_palette(palette_device &palette); virtual void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect); diff --git a/src/mame/midway/williams.cpp b/src/mame/midway/williams.cpp index fe2cb299380cc..aef8ed98ea234 100644 --- a/src/mame/midway/williams.cpp +++ b/src/mame/midway/williams.cpp @@ -41,7 +41,7 @@ **************************************************************************** - CA00-CA07 blitter (Stargate and Defender do not have blitter) + CA00-CA07 blitter (Stargate and Defender do not have blitter) CB00 6 bits of the video counters bits 2-7 diff --git a/src/mame/misc/cvs.cpp b/src/mame/misc/cvs.cpp index 5783a7f8b05cc..df31ef4a03be2 100644 --- a/src/mame/misc/cvs.cpp +++ b/src/mame/misc/cvs.cpp @@ -687,16 +687,16 @@ void cvs_state::sh_trigger_w(offs_t offset, u8 data) I have recordings available. - 0x1884 - Enables an XP8038 frequency generator IC - Reflected on pin 10 of a 4016. - The frequency is set by 0x1840, the 8 bit DAC register. - Not all 0x1840 values were tested, but: - 0x00 - off, 0x1884 enable has no sound. - 0x55,0xAA,0xFF - increasing value has higher frequency + Reflected on pin 10 of a 4016. + The frequency is set by 0x1840, the 8 bit DAC register. + Not all 0x1840 values were tested, but: + 0x00 - off, 0x1884 enable has no sound. + 0x55,0xAA,0xFF - increasing value has higher frequency - 0x1885 - A scope showed this halving the XP8038 amplitude with a little decay. - Causes 4016 pin 11 to rise (on) and decay-fall (off) + Causes 4016 pin 11 to rise (on) and decay-fall (off) - 0x1886 - Outputs a complete Galaxia-style ship fire sound, with attack-to-on and decay-to-off. - 0x1887 - Reflected on an LM380. - Causes an envelope-like operation on the XP8038 tone with attack (on) and decay (off). + Causes an envelope-like operation on the XP8038 tone with attack (on) and decay (off). */ data &= 1; diff --git a/src/mame/misc/goldnpkr.cpp b/src/mame/misc/goldnpkr.cpp index d25e579333722..275196bb39fc3 100644 --- a/src/mame/misc/goldnpkr.cpp +++ b/src/mame/misc/goldnpkr.cpp @@ -6057,7 +6057,7 @@ ROM_END The second set is a hack of the first with unknown mods. */ -ROM_START( potnpkro ) // ICP-1 wires hack set. +ROM_START( potnpkro ) // ICP-1 wires hack set. ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "7.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) ) ROM_LOAD( "x.17a", 0x7000, 0x1000, CRC(1694a0d8) SHA1(bb1132d1e75347ad5156d2b3866aad255f7d53ca) ) @@ -6076,7 +6076,7 @@ ROM_START( potnpkro ) // ICP-1 wires hack set. ROM_LOAD( "tbp24s10n_wh.bin", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) ROM_END -ROM_START( potnpkrp ) // ICP-1 PROM mod set. +ROM_START( potnpkrp ) // ICP-1 PROM mod set. ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "6.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) ) ROM_LOAD( "95_09_hn71_7.17a", 0x7000, 0x1000, CRC(2353317a) SHA1(18bf8cfe30aaa4b05207cc250ec1c024bc19ed56) ) diff --git a/src/mame/psion/mc400.cpp b/src/mame/psion/mc400.cpp index 0b28a9d45d308..4d2e0ce53ef10 100644 --- a/src/mame/psion/mc400.cpp +++ b/src/mame/psion/mc400.cpp @@ -277,10 +277,10 @@ INPUT_CHANGED_MEMBER(psionmc_state::key_on) //INPUT_CHANGED_MEMBER(psionmc_state::reset) //{ -// if (newval) -// { -// m_asic2->reset_w(0); -// } +// if (newval) +// { +// m_asic2->reset_w(0); +// } //} INPUT_CHANGED_MEMBER(psionmc_state::digitiser_changed) diff --git a/src/mame/skeleton/easy_karaoke.cpp b/src/mame/skeleton/easy_karaoke.cpp index 47db0842f7880..a69b987f4e1f9 100644 --- a/src/mame/skeleton/easy_karaoke.cpp +++ b/src/mame/skeleton/easy_karaoke.cpp @@ -79,11 +79,11 @@ ------------------ - For units which allow downloadable songs the only difference in the bootloader ROMs is a couple of bytes - at the end. This may be used as security, to tie the downloads stored in the flash ROM to the units as - the format of the downloaded data in the flash ROMs appears to be different in each case, starting with - different unique bytes after the header information for each unit we've seen. (maybe encryption?) - The bootloader ROM has a unique ID on a sticker in each case too (could be a bytesum, haven't checked) + For units which allow downloadable songs the only difference in the bootloader ROMs is a couple of bytes + at the end. This may be used as security, to tie the downloads stored in the flash ROM to the units as + the format of the downloaded data in the flash ROMs appears to be different in each case, starting with + different unique bytes after the header information for each unit we've seen. (maybe encryption?) + The bootloader ROM has a unique ID on a sticker in each case too (could be a bytesum, haven't checked) *******************************************************************************/ diff --git a/src/mame/toaplan/dogyuun.cpp b/src/mame/toaplan/dogyuun.cpp index 00a780f6cf15b..28230636490ab 100644 --- a/src/mame/toaplan/dogyuun.cpp +++ b/src/mame/toaplan/dogyuun.cpp @@ -115,7 +115,7 @@ void dogyuun_state::video_start() void dogyuun_state::screen_vblank(int state) { - if (state) // rising edge + if (state) // rising edge { m_vdp[0]->screen_eof(); m_vdp[1]->screen_eof(); diff --git a/src/mame/toaplan/dt7.cpp b/src/mame/toaplan/dt7.cpp index a8ab367ef92fd..a78b1933f602e 100644 --- a/src/mame/toaplan/dt7.cpp +++ b/src/mame/toaplan/dt7.cpp @@ -12,7 +12,7 @@ - verify frequencies on chips - verify alt titles, some regions have 'Car Fighting' as a subtitle, region comes from EEPROM? - verify text layer palettes - - service mode doesn't display properly + - service mode doesn't display properly - currently only coins up with service button - sound dies after one stage? */ @@ -256,9 +256,9 @@ u8 dt7_state::dt7_shared_ram_hack_r(offs_t offset) int pc = m_maincpu->pc(); if (pc == 0x7d84) { return 0xff; } // status? - + u32 addr = (offset * 2) + 0x610000; - + if (addr == 0x061f00c) { return m_sysport->read(); } if (addr == 0x061d000) { return 0x00; } // settings (from EEPROM?) including flipscreen if (addr == 0x061d002) { return 0x00; } // settings (from EEPROM?) dipswitch? @@ -266,7 +266,7 @@ u8 dt7_state::dt7_shared_ram_hack_r(offs_t offset) if (addr == 0x061f004) { return m_p1port->read(); } // P1 inputs if (addr == 0x061f006) { return m_p2port->read(); } // P2 inputs //if (addr == 0x061f00e) { return machine().rand(); } // P2 coin / start - + logerror("%08x: dt7_shared_ram_hack_r address %08x ret %02x\n", pc, addr, ret); return ret; @@ -282,7 +282,7 @@ void dt7_state::shared_ram_audio_w(offs_t offset, u8 data) // just a helper function to try and debug the sound CPU a bit more easily //int pc = m_audiocpu->pc(); //if (offset == 0xf004 / 2) - // logerror("%08x: shared_ram_audio_w address %08x data %02x\n", pc, offset, data); + // logerror("%08x: shared_ram_audio_w address %08x data %02x\n", pc, offset, data); shared_ram_w(offset, data); } diff --git a/src/mame/toaplan/enmadaio.cpp b/src/mame/toaplan/enmadaio.cpp index e9c27126e1b3d..2d7f6e47f2c4d 100644 --- a/src/mame/toaplan/enmadaio.cpp +++ b/src/mame/toaplan/enmadaio.cpp @@ -77,7 +77,7 @@ u32 enmadaio_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c void enmadaio_state::screen_vblank(int state) { - if (state) // rising edge + if (state) // rising edge { m_vdp->screen_eof(); } diff --git a/src/mame/toaplan/pipibibi.cpp b/src/mame/toaplan/pipibibi.cpp index 5cf6109866630..f0691d09117ef 100644 --- a/src/mame/toaplan/pipibibi.cpp +++ b/src/mame/toaplan/pipibibi.cpp @@ -26,7 +26,7 @@ pipibibsp TP-025 Toaplan Pipi & Bibis / Whoopee!! (Prototype) pipibibsbl bootleg Toaplan Pipi & Bibis / Whoopee!! (based of the prototype) TODO: - - move bootlegs to oneshot.cpp driver + - move bootlegs to oneshot.cpp driver */ namespace { diff --git a/src/mame/toaplan/snowbro2.cpp b/src/mame/toaplan/snowbro2.cpp index 131464c50d9b6..ffd36945edc22 100644 --- a/src/mame/toaplan/snowbro2.cpp +++ b/src/mame/toaplan/snowbro2.cpp @@ -20,7 +20,7 @@ Name Board No Maker Game name ---------------------------------------------------------------------------- snowbro2 TP-033 Hanafram Snow Bros. 2 - With New Elves - + */ namespace { @@ -75,7 +75,7 @@ u32 snowbro2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c } void snowbro2_state::screen_vblank(int state) -{ +{ if (state) // rising edge { m_vdp->screen_eof(); diff --git a/src/mame/toaplan/truxton2.cpp b/src/mame/toaplan/truxton2.cpp index e2350d30fcd43..84ddee1720ac6 100644 --- a/src/mame/toaplan/truxton2.cpp +++ b/src/mame/toaplan/truxton2.cpp @@ -136,7 +136,7 @@ void truxton2_state::tx_linescroll_w(offs_t offset, u16 data, u16 mem_mask) void truxton2_state::screen_vblank(int state) -{ +{ if (state) // rising edge { m_vdp->screen_eof(); diff --git a/src/mame/zaccaria/quasar.cpp b/src/mame/zaccaria/quasar.cpp index 5727e34e7949a..fc8890f69d9f8 100644 --- a/src/mame/zaccaria/quasar.cpp +++ b/src/mame/zaccaria/quasar.cpp @@ -508,7 +508,7 @@ static INPUT_PORTS_START( quasar ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x30, 0x20, "Sound Program" ) PORT_DIPLOCATION("SOUND:3,4") PORT_DIPSETTING( 0x00, "Invalid 1" ) - PORT_DIPSETTING( 0x10, "Invalid 1" ) + PORT_DIPSETTING( 0x10, "Invalid 1" ) PORT_DIPSETTING( 0x30, "Invalid 2" ) PORT_DIPSETTING( 0x20, "Quasar" ) INPUT_PORTS_END From 27fa7dec6ec35b470500d2eee4e83e1a88d03878 Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 21 Dec 2024 19:45:20 +0100 Subject: [PATCH 08/39] i86: don't clear physical irq pins state at reset --- src/devices/cpu/i86/i286.cpp | 14 +++++--------- src/devices/cpu/i86/i86.cpp | 17 ++++------------- src/devices/cpu/i86/i86.h | 1 - src/mame/atari/atarig1.h | 33 +++++++++++++++++---------------- 4 files changed, 26 insertions(+), 39 deletions(-) diff --git a/src/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp index b18abd01f8920..bfe4dc7c72831 100644 --- a/src/devices/cpu/i86/i286.cpp +++ b/src/devices/cpu/i86/i286.cpp @@ -384,21 +384,16 @@ void i80286_cpu_device::execute_set_input(int inptnum, int state) { if(inptnum == INPUT_LINE_NMI) { - if(m_nmi_state == state) - { - return; - } - m_nmi_state = state; - if(state != CLEAR_LINE) + if(!m_nmi_state && state) { m_pending_irq |= NMI_IRQ; } + m_nmi_state = state; } else if(inptnum == INPUT_LINE_A20) m_amask = m_a20_callback(state); else { - m_irq_state = state; if(state == CLEAR_LINE) { m_pending_irq &= ~INT_IRQ; @@ -760,7 +755,7 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int throw TRAP(FAULT_GP, IDXTBL(selector)); if(!PRES(r)) - throw TRAP(FAULT_NP, IDXTBL(selector)); // this order is important + throw TRAP(FAULT_NP, IDXTBL(selector)); // this order is important if(offset > LIMIT(desc)) throw TRAP(FAULT_GP, 0); @@ -774,7 +769,8 @@ void i80286_cpu_device::code_descriptor(uint16_t selector, uint16_t offset, int m_prev_ip = m_ip = offset; } else - { // systemdescriptor + { + // systemdescriptor uint16_t gatesel = GATESEL(desc); if(!gate) diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp index 55f6de6b45832..9d6ca4cf384e8 100644 --- a/src/devices/cpu/i86/i86.cpp +++ b/src/devices/cpu/i86/i86.cpp @@ -367,7 +367,6 @@ i8086_common_cpu_device::i8086_common_cpu_device(const machine_config &mconfig, , m_int_vector(0) , m_pending_irq(0) , m_nmi_state(0) - , m_irq_state(0) , m_test_state(1) , m_pc(0) , m_lock(false) @@ -489,7 +488,6 @@ void i8086_common_cpu_device::device_start() save_item(NAME(m_int_vector)); save_item(NAME(m_pending_irq)); save_item(NAME(m_nmi_state)); - save_item(NAME(m_irq_state)); save_item(NAME(m_AuxVal)); save_item(NAME(m_OverVal)); save_item(NAME(m_ZeroVal)); @@ -555,9 +553,7 @@ void i8086_common_cpu_device::device_reset() m_NT = 1; // 8086 NT always 1 m_MF = 1; // 8086 MF always 1, 80286 always 0 m_int_vector = 0; - m_pending_irq = 0; - m_nmi_state = 0; - m_irq_state = 0; + m_pending_irq &= INT_IRQ; m_no_interrupt = 0; m_fire_trap = 0; m_prefix_seg = 0; @@ -577,7 +573,7 @@ void i8086_common_cpu_device::device_reset() void i8086_common_cpu_device::interrupt(int int_num, int trap) { - PUSH( CompressFlags() ); + PUSH(CompressFlags()); m_TF = m_IF = 0; if (int_num == -1) @@ -599,15 +595,11 @@ void i8086_common_cpu_device::execute_set_input( int inptnum, int state ) { if (inptnum == INPUT_LINE_NMI) { - if ( m_nmi_state == state ) - { - return; - } - m_nmi_state = state; - if (state != CLEAR_LINE) + if (!m_nmi_state && state) { m_pending_irq |= NMI_IRQ; } + m_nmi_state = state; } else if (inptnum == INPUT_LINE_TEST) { @@ -615,7 +607,6 @@ void i8086_common_cpu_device::execute_set_input( int inptnum, int state ) } else { - m_irq_state = state; if (state == CLEAR_LINE) { m_pending_irq &= ~INT_IRQ; diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h index 5f67265638ea9..3ceb94f672d29 100644 --- a/src/devices/cpu/i86/i86.h +++ b/src/devices/cpu/i86/i86.h @@ -290,7 +290,6 @@ class i8086_common_cpu_device : public cpu_device, public i386_disassembler::con uint32_t m_int_vector; uint32_t m_pending_irq; uint32_t m_nmi_state; - uint32_t m_irq_state; uint8_t m_no_interrupt; uint8_t m_fire_trap; uint8_t m_test_state; diff --git a/src/mame/atari/atarig1.h b/src/mame/atari/atarig1.h index c9e5df83bae6f..43a8b627ea086 100644 --- a/src/mame/atari/atarig1.h +++ b/src/mame/atari/atarig1.h @@ -18,17 +18,18 @@ class atarig1_state : public atarigen_state { public: - atarig1_state(const machine_config &mconfig, device_type type, const char *tag) - : atarigen_state(mconfig, type, tag), - m_slapstic(*this, "slapstic"), - m_slapstic_bank(*this, "slapstic_bank"), - m_jsa(*this, "jsa"), - m_playfield_tilemap(*this, "playfield"), - m_alpha_tilemap(*this, "alpha"), - m_rle(*this, "rle"), - m_adc(*this, "adc"), - m_in1(*this, "IN1"), - m_mo_command(*this, "mo_command") { } + atarig1_state(const machine_config &mconfig, device_type type, const char *tag) : + atarigen_state(mconfig, type, tag), + m_slapstic(*this, "slapstic"), + m_slapstic_bank(*this, "slapstic_bank"), + m_jsa(*this, "jsa"), + m_playfield_tilemap(*this, "playfield"), + m_alpha_tilemap(*this, "alpha"), + m_rle(*this, "rle"), + m_adc(*this, "adc"), + m_in1(*this, "IN1"), + m_mo_command(*this, "mo_command") + { } void atarig1(machine_config &config); void pfslap111(machine_config &config); @@ -64,11 +65,11 @@ class atarig1_state : public atarigen_state bool m_bslapstic_primed = false; - uint8_t m_pfscroll_xoffset = 0; - uint16_t m_current_control = 0; - uint8_t m_playfield_tile_bank = 0; - uint16_t m_playfield_xscroll = 0; - uint16_t m_playfield_yscroll = 0; + uint8_t m_pfscroll_xoffset = 0; + uint16_t m_current_control = 0; + uint8_t m_playfield_tile_bank = 0; + uint16_t m_playfield_xscroll = 0; + uint16_t m_playfield_yscroll = 0; void video_int_ack_w(uint16_t data = 0); TIMER_DEVICE_CALLBACK_MEMBER(scanline_update); From 27b3d7e24ebbecbcad748d0c8ad9ea1d092a3efa Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 22 Dec 2024 04:18:50 +0900 Subject: [PATCH 09/39] namco/mappy.cpp: Moved phozon to a derived state class and cleaned up code: (#13091) * Reduced optional object finders for phozon. * Derive 15XX sound clock frequency from crystal found on PCB. * Suppress side effects for debugger reads. * Simplified graphics decoding. * Reduced run-time tag lookups, reduced duplication and made some variable const. --- src/mame/namco/mappy.cpp | 333 +++++++++++++++++++------------------ src/mame/namco/mappy.h | 64 ++++--- src/mame/namco/mappy_v.cpp | 97 +++++------ 3 files changed, 254 insertions(+), 240 deletions(-) diff --git a/src/mame/namco/mappy.cpp b/src/mame/namco/mappy.cpp index de9de2ec171a2..e74b593705ea3 100644 --- a/src/mame/namco/mappy.cpp +++ b/src/mame/namco/mappy.cpp @@ -23,7 +23,7 @@ They can be divided in three "families": Despite the hardware differences, the memory map is almost identical to Super Pacman, and that's why it's included in this driver. There is no information about the custom ICs used by this board. The video - section is probably more similar to Gaplus than to Supr Pacman: the sprite + section is probably more similar to Gaplus than to Super Pacman: the sprite generator might be a 21XX (though Gaplus doesn't use 8x8 sprites), and the 00XX and 04XX address generators are probably replaced by the single CUS20 (which also handles the flip screen flag). @@ -59,7 +59,7 @@ Video board: sprites; in Mappy it handles the 4bpp sprites, while the tilemap is handled by standard LS components. -The I/O interface chips vary from game to game (see machine/namcoio.c) +The I/O interface chips vary from game to game (see namco/namcoio.cpp) Super Pac-Man memory map @@ -565,38 +565,38 @@ S: service switch (the one that adds a credit, not the one to enter service mode * *************************************/ -#define MASTER_CLOCK (XTAL(18'432'000)) +static constexpr XTAL MASTER_CLOCK = XTAL(18'432'000); -#define PIXEL_CLOCK (MASTER_CLOCK/3) +static constexpr XTAL PIXEL_CLOCK = MASTER_CLOCK / 3; // H counts from 128->511, HBLANK starts at 144 and ends at 240 -#define HTOTAL (384) -#define HBEND (0) // (96+16) -#define HBSTART (288) // (16) +static constexpr unsigned HTOTAL = 384; +static constexpr unsigned HBEND = 0; // (96+16) +static constexpr unsigned HBSTART = 288; // (16) -#define VTOTAL (264) -#define VBEND (0) // (16) -#define VBSTART (224) // (224+16) +static constexpr unsigned VTOTAL = 264; +static constexpr unsigned VBEND = 0; // (16) +static constexpr unsigned VBSTART = 224; // (224+16) /***************************************************************************/ -void mappy_state::int_on_w(int state) +void mappy_state::main_int_on_w(int state) { m_main_irq_mask = state; if (!state) m_maincpu->set_input_line(0, CLEAR_LINE); } -void mappy_state::int_on_2_w(int state) +void mappy_state::sub_int_on_w(int state) { m_sub_irq_mask = state; if (!state) m_subcpu->set_input_line(0, CLEAR_LINE); } -void mappy_state::int_on_3_w(int state) +void phozon_state::sub2_int_on_w(int state) { m_sub2_irq_mask = state; if (!state) @@ -626,75 +626,76 @@ void mappy_state::vblank_irq(int state) if (m_sub_irq_mask) m_subcpu->set_input_line(0, ASSERT_LINE); +} + +void phozon_state::phozon_vblank_irq(int state) +{ + if (!state) + return; - if (m_subcpu2.found() && m_sub2_irq_mask) + vblank_irq(state); + + if (m_sub2_irq_mask) m_subcpu2->set_input_line(0, ASSERT_LINE); } -void mappy_state::superpac_cpu1_map(address_map &map) +void mappy_state::superpac_main_map(address_map &map) { - map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram"); - map(0x0800, 0x1fff).ram().share("spriteram"); // work RAM with embedded sprite RAM - map(0x2000, 0x2000).rw(FUNC(mappy_state::superpac_flipscreen_r), FUNC(mappy_state::superpac_flipscreen_w)); + map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share(m_videoram); + map(0x0800, 0x1fff).ram().share(m_spriteram); // work RAM with embedded sprite RAM + map(0x2000, 0x2000).rw(FUNC(mappy_state::flipscreen_r), FUNC(mappy_state::flipscreen_w)); map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the sound CPU - map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface - map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface + map(0x4800, 0x480f).rw(m_namcoio[0], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface + map(0x4810, 0x481f).rw(m_namcoio[1], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); map(0xa000, 0xffff).rom(); } -void mappy_state::phozon_cpu1_map(address_map &map) +void phozon_state::main_map(address_map &map) { - map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram"); // video RAM - map(0x0800, 0x1fff).ram().share("spriteram"); // shared RAM with CPU #2/sprite RAM + map(0x0000, 0x07ff).ram().w(FUNC(phozon_state::superpac_videoram_w)).share(m_videoram); // video RAM + map(0x0800, 0x1fff).ram().share(m_spriteram); // shared RAM with CPU #2/sprite RAM map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the sound CPU - map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface - map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface + map(0x4800, 0x480f).rw(m_namcoio[0], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface + map(0x4810, 0x481f).rw(m_namcoio[1], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits map(0x7000, 0x7000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); map(0x8000, 0xffff).rom(); } -void mappy_state::mappy_cpu1_map(address_map &map) +void mappy_state::mappy_main_map(address_map &map) { - map(0x0000, 0x0fff).ram().w(FUNC(mappy_state::mappy_videoram_w)).share("videoram"); - map(0x1000, 0x27ff).ram().share("spriteram"); // work RAM with embedded sprite RAM + map(0x0000, 0x0fff).ram().w(FUNC(mappy_state::mappy_videoram_w)).share(m_videoram); + map(0x1000, 0x27ff).ram().share(m_spriteram); // work RAM with embedded sprite RAM map(0x3800, 0x3fff).w(FUNC(mappy_state::mappy_scroll_w)); // scroll map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the sound CPU - map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface - map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface + map(0x4800, 0x480f).rw(m_namcoio[0], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface + map(0x4810, 0x481f).rw(m_namcoio[1], FUNC(namcoio_device::read), FUNC(namcoio_device::write)); // custom I/O chips interface map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); map(0x8000, 0xffff).rom(); // only a000-ffff in Mappy } -void mappy_state::superpac_cpu2_map(address_map &map) +void mappy_state::superpac_sub_map(address_map &map) { map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the main CPU (also sound registers) map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits map(0xe000, 0xffff).rom(); } -void mappy_state::phozon_cpu2_map(address_map &map) +void phozon_state::sub_map(address_map &map) { map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the main CPU + sound registers map(0xe000, 0xffff).rom(); } -void mappy_state::mappy_cpu2_map(address_map &map) -{ - map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with the main CPU (also sound registers) - map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); // various control bits - map(0xe000, 0xffff).rom(); -} - // extra CPU only present in Phozon -void mappy_state::phozon_cpu3_map(address_map &map) +void phozon_state::sub2_map(address_map &map) { - map(0x0000, 0x07ff).ram().w(FUNC(mappy_state::superpac_videoram_w)).share("videoram"); - map(0x0800, 0x1fff).ram().share("spriteram"); // shared RAM with CPU #2/sprite RAM + map(0x0000, 0x07ff).ram().w(FUNC(phozon_state::superpac_videoram_w)).share(m_videoram); + map(0x0800, 0x1fff).ram().share(m_spriteram); // shared RAM with CPU #2/sprite RAM map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); // shared RAM with CPU #2 map(0xa000, 0xa7ff).ram(); map(0xe000, 0xffff).rom(); @@ -1219,10 +1220,10 @@ static const gfx_layout charlayout = 8,8, RGN_FRAC(1,1), 2, - { 0, 4 }, - { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 16*8 + { STEP2(0, 4) }, + { STEP4(8*8, 1), STEP4(0, 1) }, + { STEP8(0, 8) }, + 8*8*2 }; static const gfx_layout spritelayout_2bpp = @@ -1230,12 +1231,10 @@ static const gfx_layout spritelayout_2bpp = 16,16, RGN_FRAC(1,1), 2, - { 0, 4 }, - { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3, - 16*8+0, 16*8+1, 16*8+2, 16*8+3, 24*8+0, 24*8+1, 24*8+2, 24*8+3 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, - 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 }, - 64*8 + { STEP2(0, 4) }, + { STEP4(0, 1), STEP4(8*8, 1), STEP4(8*8*2, 1), STEP4(8*8*3, 1) }, + { STEP8(0, 8), STEP8(8*8*4, 8) }, + 16*16*2 }; static const gfx_layout spritelayout_8x8 = @@ -1243,45 +1242,43 @@ static const gfx_layout spritelayout_8x8 = 8,8, RGN_FRAC(1,1), 2, - { 0, 4 }, - { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 16*8 + { STEP2(0, 4) }, + { STEP4(0, 1), STEP4(8*8, 1) }, + { STEP8(0, 8) }, + 8*8*2 }; static const gfx_layout spritelayout_4bpp = { 16,16, - RGN_FRAC(1,2), + RGN_FRAC(1,1), 4, - { 0, 4, RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4 }, - { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3, - 24*8+0, 24*8+1, 24*8+2, 24*8+3 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, - 32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 }, - 64*8 + { STEP4(0, 4) }, + { STEP4(0, 1), STEP4(8*16, 1), STEP4(8*16*2, 1), STEP4(8*16*3, 1) }, + { STEP8(0, 16), STEP8(8*16*4, 16) }, + 16*16*4 }; static GFXDECODE_START( gfx_superpac ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout_2bpp, 64*4, 64 ) + GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 64 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout_2bpp, 64*4, 64 ) GFXDECODE_END static GFXDECODE_START( gfx_phozon ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout_8x8, 64*4, 64 ) + GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 64 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout_8x8, 64*4, 64 ) GFXDECODE_END static GFXDECODE_START( gfx_mappy ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout_4bpp, 64*4, 16 ) + GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 64 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout_4bpp, 64*4, 16 ) GFXDECODE_END static GFXDECODE_START( gfx_todruaga ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout_4bpp, 64*4, 64 ) + GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 64 ) + GFXDECODE_ENTRY( "sprites", 0, spritelayout_4bpp, 64*4, 64 ) GFXDECODE_END @@ -1295,8 +1292,8 @@ void mappy_state::out_lamps(uint8_t data) { m_leds[0] = BIT(data, 0); m_leds[1] = BIT(data, 1); - machine().bookkeeping().coin_lockout_global_w(data & 4); - machine().bookkeeping().coin_counter_w(0, ~data & 8); + machine().bookkeeping().coin_lockout_global_w(BIT(data, 2)); + machine().bookkeeping().coin_counter_w(0, BIT(~data, 3)); } void mappy_state::machine_start() @@ -1308,6 +1305,12 @@ void mappy_state::machine_start() save_item(NAME(m_main_irq_mask)); save_item(NAME(m_sub_irq_mask)); +} + +void phozon_state::machine_start() +{ + mappy_state::machine_start(); + save_item(NAME(m_sub2_irq_mask)); } @@ -1316,14 +1319,14 @@ void mappy_state::superpac_common(machine_config &config) { // basic machine hardware MC6809E(config, m_maincpu, PIXEL_CLOCK/4); // 1.536 MHz - m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu1_map); + m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_main_map); MC6809E(config, m_subcpu, PIXEL_CLOCK/4); // 1.536 MHz - m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_cpu2_map); + m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_sub_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board - mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w)); - mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w)); + mainlatch.q_out_cb<0>().set(FUNC(mappy_state::sub_int_on_w)); + mainlatch.q_out_cb<1>().set(FUNC(mappy_state::main_int_on_w)); mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w)); mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert(); mainlatch.q_out_cb<4>().append(m_namcoio[1], FUNC(namcoio_device::set_reset_line)).invert(); @@ -1352,7 +1355,7 @@ void mappy_state::superpac_common(machine_config &config) // sound hardware SPEAKER(config, "speaker").front_center(); - NAMCO_15XX(config, m_namco_15xx, 18432000/768); + NAMCO_15XX(config, m_namco_15xx, MASTER_CLOCK/768); m_namco_15xx->set_voices(8); m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0); } @@ -1412,22 +1415,22 @@ void mappy_state::grobda(machine_config &config) m_namcoio[1]->out_callback<0>().set("dipmux", FUNC(ls157_device::select_w)).bit(0); } -void mappy_state::phozon(machine_config &config) +void phozon_state::phozon(machine_config &config) { // basic machine hardware MC6809E(config, m_maincpu, PIXEL_CLOCK/4); // MAIN CPU - m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu1_map); + m_maincpu->set_addrmap(AS_PROGRAM, &phozon_state::main_map); MC6809E(config, m_subcpu, PIXEL_CLOCK/4); // SOUND CPU - m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu2_map); + m_subcpu->set_addrmap(AS_PROGRAM, &phozon_state::sub_map); MC6809E(config, m_subcpu2, PIXEL_CLOCK/4); // SUB CPU - m_subcpu2->set_addrmap(AS_PROGRAM, &mappy_state::phozon_cpu3_map); + m_subcpu2->set_addrmap(AS_PROGRAM, &phozon_state::sub2_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 5C - mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w)); - mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w)); - mainlatch.q_out_cb<2>().set(FUNC(mappy_state::int_on_3_w)); + mainlatch.q_out_cb<0>().set(FUNC(phozon_state::sub_int_on_w)); + mainlatch.q_out_cb<1>().set(FUNC(phozon_state::main_int_on_w)); + mainlatch.q_out_cb<2>().set(FUNC(phozon_state::sub2_int_on_w)); mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w)); mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert(); mainlatch.q_out_cb<4>().append(m_namcoio[1], FUNC(namcoio_device::set_reset_line)).invert(); @@ -1457,20 +1460,18 @@ void mappy_state::phozon(machine_config &config) // video hardware GFXDECODE(config, m_gfxdecode, m_palette, gfx_phozon); - PALETTE(config, m_palette, FUNC(mappy_state::phozon_palette), 64*4+64*4, 32); + PALETTE(config, m_palette, FUNC(phozon_state::palette), 64*4+64*4, 32); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(mappy_state::screen_update_phozon)); + m_screen->set_screen_update(FUNC(phozon_state::screen_update)); m_screen->set_palette(m_palette); - m_screen->screen_vblank().set(FUNC(mappy_state::vblank_irq)); // cause IRQs on all three CPUs; also update the custom I/O chips - - MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon) + m_screen->screen_vblank().set(FUNC(phozon_state::phozon_vblank_irq)); // cause IRQs on all three CPUs; also update the custom I/O chips // sound hardware SPEAKER(config, "speaker").front_center(); - NAMCO_15XX(config, m_namco_15xx, 18432000/768); + NAMCO_15XX(config, m_namco_15xx, MASTER_CLOCK/768); m_namco_15xx->set_voices(8); m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0); } @@ -1479,14 +1480,14 @@ void mappy_state::mappy_common(machine_config &config) { // basic machine hardware MC6809E(config, m_maincpu, PIXEL_CLOCK/4); // 1.536 MHz - m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu1_map); + m_maincpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_main_map); MC6809E(config, m_subcpu, PIXEL_CLOCK/4); // 1.536 MHz - m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::mappy_cpu2_map); + m_subcpu->set_addrmap(AS_PROGRAM, &mappy_state::superpac_sub_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 2M on CPU board - mainlatch.q_out_cb<0>().set(FUNC(mappy_state::int_on_2_w)); - mainlatch.q_out_cb<1>().set(FUNC(mappy_state::int_on_w)); + mainlatch.q_out_cb<0>().set(FUNC(mappy_state::sub_int_on_w)); + mainlatch.q_out_cb<1>().set(FUNC(mappy_state::main_int_on_w)); mainlatch.q_out_cb<2>().set(FUNC(mappy_state::flip_screen_set)); mainlatch.q_out_cb<3>().set(m_namco_15xx, FUNC(namco_15xx_device::sound_enable_w)); mainlatch.q_out_cb<4>().set(m_namcoio[0], FUNC(namcoio_device::set_reset_line)).invert(); @@ -1516,7 +1517,7 @@ void mappy_state::mappy_common(machine_config &config) // sound hardware SPEAKER(config, "speaker").front_center(); - NAMCO_15XX(config, m_namco_15xx, 18432000/768); + NAMCO_15XX(config, m_namco_15xx, MASTER_CLOCK/768); m_namco_15xx->set_voices(8); m_namco_15xx->add_route(ALL_OUTPUTS, "speaker", 1.0); } @@ -1597,10 +1598,10 @@ ROM_START( superpac ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) ) - ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_REGION( 0x1000, "tiles", 0 ) ROM_LOAD( "sp1-6.3c", 0x0000, 0x1000, CRC(91c5935c) SHA1(10579edabc26a0910253fab7d41b4c19ecdaaa09) ) - ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_REGION( 0x2000, "sprites", 0 ) ROM_LOAD( "spv-2.3f", 0x0000, 0x2000, CRC(670a42f2) SHA1(9171922df07e31fd1dc415766f7d2cc50a9d10dc) ) ROM_REGION( 0x0220, "proms", 0 ) @@ -1620,10 +1621,10 @@ ROM_START( superpacm ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "spc-3.1k", 0xf000, 0x1000, CRC(04445ddb) SHA1(ce7d14963d5ddaefdeaf433a6f82c43cd1611d9b) ) - ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_REGION( 0x1000, "tiles", 0 ) ROM_LOAD( "spv-1.3c", 0x0000, 0x1000, CRC(78337e74) SHA1(11222adb55e6bce508896ccb1f6dbab0c1d44e5b) ) - ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_REGION( 0x2000, "sprites", 0 ) ROM_LOAD( "spv-2.3f", 0x0000, 0x2000, CRC(670a42f2) SHA1(9171922df07e31fd1dc415766f7d2cc50a9d10dc) ) ROM_REGION( 0x0220, "proms", 0 ) @@ -1644,10 +1645,10 @@ ROM_START( pacnpal ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) ) - ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_REGION( 0x1000, "tiles", 0 ) ROM_LOAD( "pap1-6.3c", 0x0000, 0x1000, CRC(a36b96cb) SHA1(e0a11b5a43cbf756ddb045c743973d0a55dbb979) ) - ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_REGION( 0x2000, "sprites", 0 ) ROM_LOAD( "pap1-5.3f", 0x0000, 0x2000, CRC(fb6f56e3) SHA1(fd10d2ee49b4e059e9ef6046bc86d97e3185164d) ) ROM_REGION( 0x0220, "proms", 0 ) @@ -1668,10 +1669,10 @@ ROM_START( pacnpal2 ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) ) - ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_REGION( 0x1000, "tiles", 0 ) ROM_LOAD( "pap1-6.3c", 0x0000, 0x1000, CRC(a36b96cb) SHA1(e0a11b5a43cbf756ddb045c743973d0a55dbb979) ) - ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_REGION( 0x2000, "sprites", 0 ) ROM_LOAD( "pap1-5.3f", 0x0000, 0x2000, CRC(fb6f56e3) SHA1(fd10d2ee49b4e059e9ef6046bc86d97e3185164d) ) ROM_REGION( 0x0220, "proms", 0 ) @@ -1693,10 +1694,10 @@ ROM_START( pacnchmp ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "pap1-4.1k", 0xf000, 0x1000, CRC(330e20de) SHA1(5b23e5dcc38dc644a36efc8b03eba34cea540bea) ) - ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_REGION( 0x1000, "tiles", 0 ) ROM_LOAD( "pap2-6.3c", 0x0000, 0x1000, CRC(93d15c30) SHA1(5da4120b680726c83a651b445254604cbf7cc883) ) - ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_REGION( 0x2000, "sprites", 0 ) ROM_LOAD( "pap2-5.3f", 0x0000, 0x2000, CRC(39f44aa4) SHA1(0696539cb2c7fcda2f6c295c7d65678dac18950b) ) ROM_REGION( 0x0220, "proms", 0 ) @@ -1717,10 +1718,10 @@ ROM_START( grobda ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) ) - ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_REGION( 0x1000, "tiles", 0 ) ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) // characters - ROM_REGION( 0x4000, "gfx2", 0 ) + ROM_REGION( 0x4000, "sprites", 0 ) ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) // sprites ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) // sprites @@ -1742,10 +1743,10 @@ ROM_START( grobda2 ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) ) - ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_REGION( 0x1000, "tiles", 0 ) ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) // characters - ROM_REGION( 0x4000, "gfx2", 0 ) + ROM_REGION( 0x4000, "sprites", 0 ) ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) // sprites ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) // sprites @@ -1767,10 +1768,10 @@ ROM_START( grobda3 ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "gr1-4.1k", 0xe000, 0x2000, CRC(3fe78c08) SHA1(dd49a96e613e0ced5b82eafcaf935e136e7db53a) ) - ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_REGION( 0x1000, "tiles", 0 ) ROM_LOAD( "gr1-7.3c", 0x0000, 0x1000, CRC(4ebfabfd) SHA1(fffce05f59e090c4281aca0c0494825027b764fb) ) // characters - ROM_REGION( 0x4000, "gfx2", 0 ) + ROM_REGION( 0x4000, "sprites", 0 ) ROM_LOAD( "gr1-5.3f", 0x0000, 0x2000, CRC(eed43487) SHA1(d2b39651f39bdfca3754f7bbd7a52e7bf843dabe) ) // sprites ROM_LOAD( "gr1-6.3e", 0x2000, 0x2000, CRC(cebb7362) SHA1(6efd57f9fa0f93f70e60efc387b3a782fad2665c) ) // sprites @@ -1796,11 +1797,11 @@ ROM_START( phozon ) ROM_REGION( 0x10000, "sub2", 0 ) // 64k for the SUB CPU ROM_LOAD( "9r.rom", 0xe000, 0x2000, CRC(5d9f0a28) SHA1(2caef680229180b237f8c4becf052f1a96592efd) ) - ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_REGION( 0x2000, "tiles", 0 ) ROM_LOAD( "7j.rom", 0x0000, 0x1000, CRC(27f9db5b) SHA1(12ef817136b45927d7f279952fa19049a1349f60) ) // characters (set 1) ROM_LOAD( "8j.rom", 0x1000, 0x1000, CRC(15b12ef8) SHA1(e3303656b4e8b988e55a9551e5344e289958f677) ) // characters (set 2) - ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_REGION( 0x2000, "sprites", 0 ) ROM_LOAD( "5t.rom", 0x0000, 0x2000, CRC(d50f08f8) SHA1(4e9dda0d5ad1c1b8b3be7edb05b3060f5f63a9c7) ) // sprites ROM_REGION( 0x0520, "proms", 0 ) @@ -1828,11 +1829,11 @@ ROM_START( phozons ) ROM_REGION( 0x10000, "sub2", 0 ) // 64k for the SUB CPU ROM_LOAD( "9r.rom", 0xe000, 0x2000, CRC(5d9f0a28) SHA1(2caef680229180b237f8c4becf052f1a96592efd) ) // 9r.bin - ROM_REGION( 0x2000, "gfx1", 0 ) + ROM_REGION( 0x2000, "tiles", 0 ) ROM_LOAD( "7j.bin", 0x0000, 0x1000, CRC(312b3ece) SHA1(1d4d3371a42321644ec3669f95abcfe860020868) ) // characters (set 1) ROM_LOAD( "8j.bin", 0x1000, 0x1000, CRC(d21422a2) SHA1(0268651628d66dc67a3b6bb8fb682b668e7ebbad) ) // characters (set 2) - ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_REGION( 0x2000, "sprites", 0 ) ROM_LOAD( "5t.rom", 0x0000, 0x2000, CRC(d50f08f8) SHA1(4e9dda0d5ad1c1b8b3be7edb05b3060f5f63a9c7) ) // sprites - 5t.bin ROM_REGION( 0x0500, "proms", 0 ) @@ -1860,12 +1861,12 @@ ROM_START( mappy ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) ) - ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "mp1_5.3b", 0x0000, 0x1000, CRC(16498b9f) SHA1(76610149c65f955484fef1c033ddc3fed3f4e568) ) - ROM_REGION( 0x4000, "gfx2", 0 ) - ROM_LOAD( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) ) - ROM_LOAD( "mp1_7.3n", 0x2000, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) ) + ROM_REGION( 0x4000, "sprites", 0 ) + ROM_LOAD16_BYTE( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) ) + ROM_LOAD16_BYTE( "mp1_7.3n", 0x0001, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) ) ROM_REGION( 0x0220, "proms", 0 ) ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) ) // palette @@ -1885,12 +1886,12 @@ ROM_START( mappyj ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "mp1_4.1k", 0xe000, 0x2000, CRC(8182dd5b) SHA1(f36b57f7f1e79f00b3f07afe1960bca5f5325ee2) ) - ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "mp1_5.3b", 0x0000, 0x1000, CRC(16498b9f) SHA1(76610149c65f955484fef1c033ddc3fed3f4e568) ) - ROM_REGION( 0x4000, "gfx2", 0 ) - ROM_LOAD( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) ) - ROM_LOAD( "mp1_7.3n", 0x2000, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) ) + ROM_REGION( 0x4000, "sprites", 0 ) + ROM_LOAD16_BYTE( "mp1_6.3m", 0x0000, 0x2000, CRC(f2d9647a) SHA1(3cc216793c6a5f73c437ad2524563deb3b5e2890) ) + ROM_LOAD16_BYTE( "mp1_7.3n", 0x0001, 0x2000, CRC(757cf2b6) SHA1(8dfbf03953d5219d9eb5fc654ec3392442ba1dc4) ) ROM_REGION( 0x0220, "proms", 0 ) ROM_LOAD( "mp1-5.5b", 0x0000, 0x0020, CRC(56531268) SHA1(2e356706c07f43eeb67783fb122bdc7fed1b3589) ) // palette @@ -1909,12 +1910,12 @@ ROM_START( todruaga ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) ) - ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) ) - ROM_REGION( 0x4000, "gfx2", 0 ) - ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) ) - ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) ) + ROM_REGION( 0x4000, "sprites", 0 ) + ROM_LOAD16_BYTE( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) ) + ROM_LOAD16_BYTE( "td1_7.3n", 0x0001, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) ) ROM_REGION( 0x0520, "proms", 0 ) ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) // palette @@ -1933,12 +1934,12 @@ ROM_START( todruagao ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) ) - ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) ) - ROM_REGION( 0x4000, "gfx2", 0 ) - ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) ) - ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) ) + ROM_REGION( 0x4000, "sprites", 0 ) + ROM_LOAD16_BYTE( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) ) + ROM_LOAD16_BYTE( "td1_7.3n", 0x0001, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) ) ROM_REGION( 0x0520, "proms", 0 ) ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) // palette @@ -1957,12 +1958,12 @@ ROM_START( todruagas ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "td1_4.1k", 0xe000, 0x2000, CRC(ae9d06d9) SHA1(3d8621fdd74fafa61f342886faa37f0aab50c5a7) ) - ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "td1_5.3b", 0x0000, 0x1000, CRC(d32b249f) SHA1(7d7cee4101ef615fb92c3702f89a9823a6231195) ) - ROM_REGION( 0x4000, "gfx2", 0 ) - ROM_LOAD( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) ) - ROM_LOAD( "td1_7.3n", 0x2000, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) ) + ROM_REGION( 0x4000, "sprites", 0 ) + ROM_LOAD16_BYTE( "td1_6.3m", 0x0000, 0x2000, CRC(e827e787) SHA1(74e0af4c7d6e334bcd211a33eb18dddc8a182aa7) ) + ROM_LOAD16_BYTE( "td1_7.3n", 0x0001, 0x2000, CRC(962bd060) SHA1(74cdcafc26475bda085bf62ed17e6474ed782453) ) ROM_REGION( 0x0520, "proms", 0 ) ROM_LOAD( "td1-5.5b", 0x0000, 0x0020, CRC(122cc395) SHA1(a648c53f2e95634bb5b27d79be3fd908021d056e) ) // palette @@ -1981,12 +1982,12 @@ ROM_START( digdug2 ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "d21_4.1k", 0xe000, 0x2000, CRC(737443b1) SHA1(0e46204089cc6e5ffab0d2a62f9a1728f8c35948) ) - ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "d21_5.3b", 0x0000, 0x1000, CRC(afcb4509) SHA1(c9a54df22b0b92efbe7417a00200587225906b46) ) - ROM_REGION( 0x8000, "gfx2", 0 ) - ROM_LOAD( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) ) - ROM_LOAD( "d21_7.3n", 0x4000, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) ) + ROM_REGION( 0x8000, "sprites", 0 ) + ROM_LOAD16_BYTE( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) ) + ROM_LOAD16_BYTE( "d21_7.3n", 0x0001, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) ) ROM_REGION( 0x0220, "proms", 0 ) ROM_LOAD( "d21-5.5b", 0x0000, 0x0020, CRC(9b169db5) SHA1(77e840d10ab59708a051c3b15305b33d431ee06d) ) // palette @@ -2005,12 +2006,12 @@ ROM_START( digdug2o ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "d21_4.1k", 0xe000, 0x2000, CRC(737443b1) SHA1(0e46204089cc6e5ffab0d2a62f9a1728f8c35948) ) - ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "d21_5.3b", 0x0000, 0x1000, CRC(afcb4509) SHA1(c9a54df22b0b92efbe7417a00200587225906b46) ) - ROM_REGION( 0x8000, "gfx2", 0 ) - ROM_LOAD( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) ) - ROM_LOAD( "d21_7.3n", 0x4000, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) ) + ROM_REGION( 0x8000, "sprites", 0 ) + ROM_LOAD16_BYTE( "d21_6.3m", 0x0000, 0x4000, CRC(df1f4ad8) SHA1(004fba630018dbf03c4b0e284c98077e19fface3) ) + ROM_LOAD16_BYTE( "d21_7.3n", 0x0001, 0x4000, CRC(ccadb3ea) SHA1(77d8d8e6039272f73e63c8f76084138ec613365a) ) ROM_REGION( 0x0220, "proms", 0 ) ROM_LOAD( "d21-5.5b", 0x0000, 0x0020, CRC(9b169db5) SHA1(77e840d10ab59708a051c3b15305b33d431ee06d) ) // palette @@ -2030,12 +2031,12 @@ ROM_START( motos ) ROM_REGION( 0x10000, "sub", 0 ) // 64k for the second CPU ROM_LOAD( "mo1_4.1k", 0xe000, 0x2000, CRC(55e45d21) SHA1(a8b195acfec542734751de29c9dafc2b165a5881) ) - ROM_REGION( 0x1000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x1000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "mo1_5.3b", 0x0000, 0x1000, CRC(5d4a2a22) SHA1(4af9bf2ae9bb78d2d029ef38809181ffa3c0eb66) ) - ROM_REGION( 0x8000, "gfx2", 0 ) - ROM_LOAD( "mo1_6.3m", 0x0000, 0x4000, CRC(2f0e396e) SHA1(664679f9d3d74a3fccb086af910392b4fe40c9bc) ) - ROM_LOAD( "mo1_7.3n", 0x4000, 0x4000, CRC(cf8a3b86) SHA1(2b49cdec516e23783f2a291633d81ab8bd0245fc) ) + ROM_REGION( 0x8000, "sprites", 0 ) + ROM_LOAD16_BYTE( "mo1_6.3m", 0x0000, 0x4000, CRC(2f0e396e) SHA1(664679f9d3d74a3fccb086af910392b4fe40c9bc) ) + ROM_LOAD16_BYTE( "mo1_7.3n", 0x0001, 0x4000, CRC(cf8a3b86) SHA1(2b49cdec516e23783f2a291633d81ab8bd0245fc) ) ROM_REGION( 0x0220, "proms", 0 ) ROM_LOAD( "mo1-5.5b", 0x0000, 0x0020, CRC(71972383) SHA1(66b0619affcc5168b099108800a941d6e2416ab0) ) // palette @@ -2055,25 +2056,25 @@ void mappy_state::init_digdug2() // 2x6809, static tilemap, 2bpp sprites (Super Pacman type) -GAME( 1982, superpac, 0, superpac, superpac, mappy_state, empty_init, ROT90, "Namco", "Super Pac-Man", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, superpacm, superpac, superpac, superpac, mappy_state, empty_init, ROT90, "Namco (Bally Midway license)", "Super Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, pacnpal, 0, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, pacnpal2, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal (older)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, pacnchmp, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac-Man & Chomp Chomp", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, grobda, 0, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, grobda2, grobda, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (Old Ver. set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, grobda3, grobda, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (Old Ver. set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, superpac, 0, superpac, superpac, mappy_state, empty_init, ROT90, "Namco", "Super Pac-Man", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, superpacm, superpac, superpac, superpac, mappy_state, empty_init, ROT90, "Namco (Bally Midway license)", "Super Pac-Man (Midway)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, pacnpal, 0, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, pacnpal2, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac & Pal (older)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, pacnchmp, pacnpal, pacnpal, pacnpal, mappy_state, empty_init, ROT90, "Namco", "Pac-Man & Chomp Chomp", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, grobda, 0, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, grobda2, grobda, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (Old Ver. set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, grobda3, grobda, grobda, grobda, mappy_state, empty_init, ROT90, "Namco", "Grobda (Old Ver. set 2)", MACHINE_SUPPORTS_SAVE ) // 3x6809, static tilemap, 2bpp sprites (Gaplus type) -GAME( 1983, phozon, 0, phozon, phozon, mappy_state, empty_init, ROT90, "Namco", "Phozon (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, phozons, phozon, phozon, phozon, mappy_state, empty_init, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, phozon, 0, phozon, phozon, phozon_state, empty_init, ROT90, "Namco", "Phozon (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, phozons, phozon, phozon, phozon, phozon_state, empty_init, ROT90, "Namco (Sidam license)", "Phozon (Sidam)", MACHINE_SUPPORTS_SAVE ) // 2x6809, scroling tilemap, 4bpp sprites (Super Pacman type) -GAME( 1983, mappy, 0, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, mappyj, mappy, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, todruaga, 0, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, todruagao, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (Old Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, todruagas, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "bootleg? (Sidam)", "The Tower of Druaga (Sidam)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, digdug2, 0, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (New Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, digdug2o, digdug2, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (Old Ver.)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, motos, 0, motos, motos, mappy_state, empty_init, ROT90, "Namco", "Motos", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mappy, 0, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, mappyj, mappy, mappy, mappy, mappy_state, empty_init, ROT90, "Namco", "Mappy (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, todruaga, 0, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, todruagao, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "Namco", "The Tower of Druaga (Old Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, todruagas, todruaga, todruaga, todruaga, mappy_state, empty_init, ROT90, "bootleg? (Sidam)", "The Tower of Druaga (Sidam)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, digdug2, 0, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (New Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, digdug2o, digdug2, digdug2, digdug2, mappy_state, init_digdug2, ROT90, "Namco", "Dig Dug II (Old Ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, motos, 0, motos, motos, mappy_state, empty_init, ROT90, "Namco", "Motos", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/namco/mappy.h b/src/mame/namco/mappy.h index 4f14d1b640de5..732c922d1fc17 100644 --- a/src/mame/namco/mappy.h +++ b/src/mame/namco/mappy.h @@ -20,7 +20,6 @@ class mappy_state : public driver_device m_spriteram(*this, "spriteram"), m_maincpu(*this, "maincpu"), m_subcpu(*this, "sub"), - m_subcpu2(*this, "sub2"), m_namcoio(*this, "namcoio_%u", 1), m_namco_15xx(*this, "namco"), m_gfxdecode(*this, "gfxdecode"), @@ -31,7 +30,6 @@ class mappy_state : public driver_device void mappy_common(machine_config &config); void mappy(machine_config &config); - void phozon(machine_config &config); void motos(machine_config &config); void grobda(machine_config &config); void digdug2(machine_config &config); @@ -45,13 +43,11 @@ class mappy_state : public driver_device protected: virtual void machine_start() override ATTR_COLD; -private: required_shared_ptr m_videoram; required_shared_ptr m_spriteram; required_device m_maincpu; required_device m_subcpu; - optional_device m_subcpu2; required_device_array m_namcoio; required_device m_namco_15xx; required_device m_gfxdecode; @@ -66,46 +62,68 @@ class mappy_state : public driver_device uint8_t m_main_irq_mask = 0; uint8_t m_sub_irq_mask = 0; - uint8_t m_sub2_irq_mask = 0; emu_timer *m_namcoio_run_timer[2]{}; - void int_on_w(int state); - void int_on_2_w(int state); - void int_on_3_w(int state); + void main_int_on_w(int state); + void sub_int_on_w(int state); void superpac_videoram_w(offs_t offset, uint8_t data); void mappy_videoram_w(offs_t offset, uint8_t data); - void superpac_flipscreen_w(uint8_t data); - uint8_t superpac_flipscreen_r(); + void flipscreen_w(uint8_t data); + uint8_t flipscreen_r(); void mappy_scroll_w(offs_t offset, uint8_t data); void out_lamps(uint8_t data); TILEMAP_MAPPER_MEMBER(superpac_tilemap_scan); TILEMAP_MAPPER_MEMBER(mappy_tilemap_scan); TILE_GET_INFO_MEMBER(superpac_get_tile_info); - TILE_GET_INFO_MEMBER(phozon_get_tile_info); TILE_GET_INFO_MEMBER(mappy_get_tile_info); template TIMER_CALLBACK_MEMBER(namcoio_run_timer); DECLARE_VIDEO_START(superpac); void superpac_palette(palette_device &palette) const; - DECLARE_VIDEO_START(phozon); - void phozon_palette(palette_device &palette) const; DECLARE_VIDEO_START(mappy); void mappy_palette(palette_device &palette) const; uint32_t screen_update_superpac(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_phozon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_mappy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void vblank_irq(int state); void mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base); - void phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base); - - void mappy_cpu1_map(address_map &map) ATTR_COLD; - void mappy_cpu2_map(address_map &map) ATTR_COLD; - void phozon_cpu1_map(address_map &map) ATTR_COLD; - void phozon_cpu2_map(address_map &map) ATTR_COLD; - void phozon_cpu3_map(address_map &map) ATTR_COLD; - void superpac_cpu1_map(address_map &map) ATTR_COLD; - void superpac_cpu2_map(address_map &map) ATTR_COLD; + + void mappy_main_map(address_map &map) ATTR_COLD; + void superpac_main_map(address_map &map) ATTR_COLD; + void superpac_sub_map(address_map &map) ATTR_COLD; +}; + +class phozon_state : public mappy_state +{ +public: + phozon_state(const machine_config &mconfig, device_type type, const char *tag) : + mappy_state(mconfig, type, tag), + m_subcpu2(*this, "sub2") + { } + + void phozon(machine_config &config); + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void video_start() override ATTR_COLD; + +private: + required_device m_subcpu2; + + uint8_t m_sub2_irq_mask = 0; + + void sub2_int_on_w(int state); + + TILE_GET_INFO_MEMBER(get_tile_info); + + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void phozon_vblank_irq(int state); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base); + + void main_map(address_map &map) ATTR_COLD; + void sub_map(address_map &map) ATTR_COLD; + void sub2_map(address_map &map) ATTR_COLD; }; #endif // MAME_NAMCO_MAPPY_H diff --git a/src/mame/namco/mappy_v.cpp b/src/mame/namco/mappy_v.cpp index b66f5bcb737c4..ff4864a4c9119 100644 --- a/src/mame/namco/mappy_v.cpp +++ b/src/mame/namco/mappy_v.cpp @@ -154,7 +154,7 @@ void mappy_state::mappy_palette(palette_device &palette) const ***************************************************************************/ -void mappy_state::phozon_palette(palette_device &palette) const +void phozon_state::palette(palette_device &palette) const { const uint8_t *color_prom = memregion("proms")->base(); static constexpr int resistances[4] = { 2200, 1000, 470, 220 }; @@ -254,7 +254,7 @@ TILE_GET_INFO_MEMBER(mappy_state::superpac_get_tile_info) { uint8_t attr = m_videoram[tile_index + 0x400]; - tileinfo.category = (attr & 0x40) >> 6; + tileinfo.category = BIT(attr, 6); tileinfo.group = attr & 0x3f; tileinfo.set(0, m_videoram[tile_index], @@ -262,11 +262,11 @@ TILE_GET_INFO_MEMBER(mappy_state::superpac_get_tile_info) 0); } -TILE_GET_INFO_MEMBER(mappy_state::phozon_get_tile_info) +TILE_GET_INFO_MEMBER(phozon_state::get_tile_info) { uint8_t attr = m_videoram[tile_index + 0x400]; - tileinfo.category = (attr & 0x40) >> 6; + tileinfo.category = BIT(attr, 6); tileinfo.group = attr & 0x3f; tileinfo.set(0, m_videoram[tile_index] + ((attr & 0x80) << 1), @@ -278,7 +278,7 @@ TILE_GET_INFO_MEMBER(mappy_state::mappy_get_tile_info) { uint8_t attr = m_videoram[tile_index + 0x800]; - tileinfo.category = (attr & 0x40) >> 6; + tileinfo.category = BIT(attr, 6); tileinfo.group = attr & 0x3f; tileinfo.set(0, m_videoram[tile_index], @@ -302,9 +302,9 @@ VIDEO_START_MEMBER(mappy_state,superpac) m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 31); } -VIDEO_START_MEMBER(mappy_state,phozon) +void phozon_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mappy_state::phozon_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(mappy_state::superpac_tilemap_scan)), 8, 8, 36, 28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(phozon_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(phozon_state::superpac_tilemap_scan)), 8, 8, 36, 28); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 15); } @@ -339,14 +339,15 @@ void mappy_state::mappy_videoram_w(offs_t offset, uint8_t data) m_bg_tilemap->mark_tile_dirty(offset & 0x7ff); } -void mappy_state::superpac_flipscreen_w(uint8_t data) +void mappy_state::flipscreen_w(uint8_t data) { - flip_screen_set(data & 1); + flip_screen_set(BIT(data, 0)); } -uint8_t mappy_state::superpac_flipscreen_r() +uint8_t mappy_state::flipscreen_r() { - flip_screen_set(1); + if (!machine().side_effects_disabled()) + flip_screen_set(1); return 0xff; } @@ -365,15 +366,14 @@ void mappy_state::mappy_scroll_w(offs_t offset, uint8_t data) void mappy_state::mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base) { - uint8_t *spriteram = spriteram_base + 0x780; - uint8_t *spriteram_2 = spriteram + 0x800; - uint8_t *spriteram_3 = spriteram_2 + 0x800; - int offs; + uint8_t const *const spriteram = spriteram_base + 0x780; + uint8_t const *const spriteram_2 = spriteram + 0x800; + uint8_t const *const spriteram_3 = spriteram_2 + 0x800; - for (offs = 0;offs < 0x80;offs += 2) + for (int offs = 0; offs < 0x80; offs += 2) { /* is it on? */ - if ((spriteram_3[offs+1] & 2) == 0) + if (BIT(~spriteram_3[offs+1], 1)) { static const uint8_t gfx_offs[2][2] = { @@ -381,14 +381,13 @@ void mappy_state::mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip { 2, 3 } }; int sprite = spriteram[offs]; - int color = spriteram[offs+1]; - int sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 40; + int const color = spriteram[offs+1]; + int const sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 40; int sy = 256 - spriteram_2[offs] + 1; // sprites are buffered and delayed by one scanline - int flipx = (spriteram_3[offs] & 0x01); - int flipy = (spriteram_3[offs] & 0x02) >> 1; - int sizex = (spriteram_3[offs] & 0x04) >> 2; - int sizey = (spriteram_3[offs] & 0x08) >> 3; - int x,y; + int flipx = BIT(spriteram_3[offs], 0); + int flipy = BIT(spriteram_3[offs], 1); + int const sizex = (spriteram_3[offs] & 0x04) >> 2; + int const sizey = (spriteram_3[offs] & 0x08) >> 3; sprite &= ~sizex; sprite &= ~(sizey << 1); @@ -402,9 +401,9 @@ void mappy_state::mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip flipy ^= 1; } - for (y = 0;y <= sizey;y++) + for (int y = 0; y <= sizey; y++) { - for (x = 0;x <= sizex;x++) + for (int x = 0; x <= sizex; x++) { m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)], @@ -440,17 +439,16 @@ spriteram_3 1 -------x X position MSB */ -void mappy_state::phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base) +void phozon_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base) { - uint8_t *spriteram = spriteram_base + 0x780; - uint8_t *spriteram_2 = spriteram + 0x800; - uint8_t *spriteram_3 = spriteram_2 + 0x800; - int offs; + uint8_t const *const spriteram = spriteram_base + 0x780; + uint8_t const *const spriteram_2 = spriteram + 0x800; + uint8_t const *const spriteram_3 = spriteram_2 + 0x800; - for (offs = 0;offs < 0x80;offs += 2) + for (int offs = 0; offs < 0x80; offs += 2) { /* is it on? */ - if ((spriteram_3[offs+1] & 2) == 0) + if (BIT(~spriteram_3[offs+1], 1)) { static const uint8_t size[4] = { 1, 0, 3, 0 }; /* 16, 8, 32 pixels; fourth combination unused? */ static const uint8_t gfx_offs[4][4] = @@ -460,15 +458,14 @@ void mappy_state::phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cli { 8, 9,12,13 }, {10,11,14,15 } }; - int sprite = (spriteram[offs] << 2) | ((spriteram_3[offs] & 0xc0) >> 6); - int color = spriteram[offs+1] & 0x3f; - int sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 69; + int const sprite = (spriteram[offs] << 2) | ((spriteram_3[offs] & 0xc0) >> 6); + int const color = spriteram[offs+1] & 0x3f; + int const sx = spriteram_2[offs+1] + 0x100 * (spriteram_3[offs+1] & 1) - 69; int sy = 256 - spriteram_2[offs]; int flipx = (spriteram_3[offs] & 0x01); int flipy = (spriteram_3[offs] & 0x02) >> 1; - int sizex = size[(spriteram_3[offs] & 0x0c) >> 2]; - int sizey = size[(spriteram_3[offs] & 0x30) >> 4]; - int x,y; + int const sizex = size[(spriteram_3[offs] & 0x0c) >> 2]; + int const sizey = size[(spriteram_3[offs] & 0x30) >> 4]; sy -= 8 * sizey; sy = (sy & 0xff) - 32; // fix wraparound @@ -479,9 +476,9 @@ void mappy_state::phozon_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cli flipy ^= 1; } - for (y = 0;y <= sizey;y++) + for (int y = 0; y <= sizey; y++) { - for (x = 0;x <= sizex;x++) + for (int x = 0; x <= sizex; x++) { m_gfxdecode->gfx(1)->transmask(bitmap,cliprect, sprite + gfx_offs[y ^ (sizey * flipy)][x ^ (sizex * flipx)], @@ -510,12 +507,12 @@ uint32_t mappy_state::screen_update_superpac(screen_device &screen, bitmap_ind16 m_bg_tilemap->draw(screen, bitmap, cliprect, 1,0); /* sprite color 0/1 still has priority over that (ghost eyes in Pac 'n Pal) */ - for (int y = 0;y < sprite_bitmap.height();y++) + for (int y = 0; y < sprite_bitmap.height(); y++) { - for (int x = 0;x < sprite_bitmap.width();x++) + for (int x = 0; x < sprite_bitmap.width(); x++) { - int spr_entry = sprite_bitmap.pix(y, x); - int spr_pen = m_palette->pen_indirect(spr_entry); + uint16_t const spr_entry = sprite_bitmap.pix(y, x); + int const spr_pen = m_palette->pen_indirect(spr_entry); if (spr_pen == 0 || spr_pen == 1) bitmap.pix(y, x) = spr_entry; } @@ -523,14 +520,14 @@ uint32_t mappy_state::screen_update_superpac(screen_device &screen, bitmap_ind16 return 0; } -uint32_t mappy_state::screen_update_phozon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t phozon_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* flip screen control is embedded in RAM */ - flip_screen_set(m_spriteram[0x1f7f-0x800] & 1); + flip_screen_set(BIT(m_spriteram[0x1f7f-0x800], 0)); m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES,0); - phozon_draw_sprites(bitmap,cliprect,m_spriteram); + draw_sprites(bitmap,cliprect,m_spriteram); /* Redraw the high priority characters */ m_bg_tilemap->draw(screen, bitmap, cliprect, 1,0); @@ -539,9 +536,7 @@ uint32_t mappy_state::screen_update_phozon(screen_device &screen, bitmap_ind16 & uint32_t mappy_state::screen_update_mappy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int offs; - - for (offs = 2;offs < 34;offs++) + for (int offs = 2; offs < 34; offs++) m_bg_tilemap->set_scrolly(offs,m_scroll); m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES,0); From 064d72140dcd0359de953c7eb516071e16d634d1 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sun, 22 Dec 2024 10:56:02 +0100 Subject: [PATCH 10/39] machine/akiko.cpp: convert anon to emu_timer --- src/devices/machine/akiko.cpp | 4 ++-- src/devices/machine/akiko.h | 1 + src/mame/amiga/amiga.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/devices/machine/akiko.cpp b/src/devices/machine/akiko.cpp index 5ebe4603a0e63..be5d02c23c2f7 100644 --- a/src/devices/machine/akiko.cpp +++ b/src/devices/machine/akiko.cpp @@ -142,6 +142,7 @@ void akiko_device::device_start() m_cdrom_toc = nullptr; m_dma_timer = timer_alloc(FUNC(akiko_device::dma_proc), this); m_frame_timer = timer_alloc(FUNC(akiko_device::frame_proc), this); + m_toc_timer = timer_alloc(FUNC(akiko_device::cd_delayed_cmd), this); } //------------------------------------------------- @@ -694,8 +695,7 @@ void akiko_device::update_cdrom() { m_cdrom_cmd_start = (m_cdrom_cmd_start + 3) & 0xff; - machine().scheduler().timer_set( attotime::from_msec(1), timer_expired_delegate( FUNC( akiko_device::cd_delayed_cmd ), this ), resp[0] ); - + m_toc_timer->adjust(attotime::from_msec(1), resp[0] ); break; } else if ( cmd == 0x06 ) /* read subq */ diff --git a/src/devices/machine/akiko.h b/src/devices/machine/akiko.h index 1d1a61254ca27..73a3b36b09452 100644 --- a/src/devices/machine/akiko.h +++ b/src/devices/machine/akiko.h @@ -92,6 +92,7 @@ class akiko_device : public device_t emu_timer *m_dma_timer; emu_timer *m_frame_timer; + emu_timer *m_toc_timer; void nvram_write(uint32_t data); uint32_t nvram_read(); diff --git a/src/mame/amiga/amiga.cpp b/src/mame/amiga/amiga.cpp index 1f607a0ca9ab5..6d8e6100e6632 100644 --- a/src/mame/amiga/amiga.cpp +++ b/src/mame/amiga/amiga.cpp @@ -2239,7 +2239,7 @@ void cd32_state::cd32(machine_config &config) m_cia_0->sp_wr_callback().set_nop(); SOFTWARE_LIST(config, "cd32_list").set_original("cd32"); - SOFTWARE_LIST(config, "cd_list").set_original("cdtv"); + SOFTWARE_LIST(config, "cd_list").set_compatible("cdtv"); } void cd32_state::cd32n(machine_config &config) From d775c0547ca19078fe4ad49f077f27598dbc67cc Mon Sep 17 00:00:00 2001 From: angelosa Date: Sun, 22 Dec 2024 12:06:14 +0100 Subject: [PATCH 11/39] amiga/amiga.cpp: kickoff AmigaCD software list * move 10on10 from cdtv.xml New working software list items ------------------------------- amiga_cd: Aminet Games [archive.org] --- hash/amiga_cd.xml | 148 +++++++++++++++++++++++++++++++++++++++ hash/cdtv.xml | 125 --------------------------------- src/mame/amiga/amiga.cpp | 1 + 3 files changed, 149 insertions(+), 125 deletions(-) create mode 100644 hash/amiga_cd.xml diff --git a/hash/amiga_cd.xml b/hash/amiga_cd.xml new file mode 100644 index 0000000000000..69b796d4ab6fe --- /dev/null +++ b/hash/amiga_cd.xml @@ -0,0 +1,148 @@ + + + + + + + + + Aminet Games + 2000 + Schatztruhe + + + + + + + + + + Ten on Ten Compilation (Europe) + 1995 + Almathera + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hash/cdtv.xml b/hash/cdtv.xml index 011f89b0a2a5a..c592be9bebdff 100644 --- a/hash/cdtv.xml +++ b/hash/cdtv.xml @@ -2665,129 +2665,4 @@ cd32: boot OK - - - - - - Ten on Ten Compilation (Europe) - 1995 - Almathera - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/mame/amiga/amiga.cpp b/src/mame/amiga/amiga.cpp index 6d8e6100e6632..d908d262b102a 100644 --- a/src/mame/amiga/amiga.cpp +++ b/src/mame/amiga/amiga.cpp @@ -1704,6 +1704,7 @@ void amiga_state::amiga_base(machine_config &config) SOFTWARE_LIST(config, "flop_list").set_original("amiga_flop"); SOFTWARE_LIST(config, "ocs_list").set_original("amigaocs_flop"); SOFTWARE_LIST(config, "demos_list").set_original("amiga_demos"); + SOFTWARE_LIST(config, "amigacd_list").set_original("amiga_cd"); } void a1000_state::a1000(machine_config &config) From 9dbb0b6af5b24d884fc6fa789cc1b5e2817ee7a3 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sun, 22 Dec 2024 12:50:53 +0100 Subject: [PATCH 12/39] New software list items marked not working ------------------------------------------ amiga_cd: Kang Fu [archive.org] --- hash/amiga_cd.xml | 18 ++++++++++++++++++ hash/cd32.xml | 1 - 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/hash/amiga_cd.xml b/hash/amiga_cd.xml index 69b796d4ab6fe..03db35dc3df50 100644 --- a/hash/amiga_cd.xml +++ b/hash/amiga_cd.xml @@ -7,6 +7,24 @@ http://redump.org/discs/system/acd --> + + + + + Kang Fu + 1996 + GREat Effects Development (GREED) + + + + + + + + diff --git a/hash/cd32.xml b/hash/cd32.xml index 4e27a0023e68b..035ba8699f0e4 100644 --- a/hash/cd32.xml +++ b/hash/cd32.xml @@ -75,7 +75,6 @@ license:CC0-1.0 James Pond 3: Operation Starfi5h [Kixx] John Barnes European Football Jungle Strike - Kang Fu (AmigaCD) Karaoke: Julsånger I Kingpin: Arcade Sports Bowling Labyrinth Of Time, The From acdb9b0a3f0ac00c4fefae14f01de657699221f4 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sun, 22 Dec 2024 14:58:58 +0100 Subject: [PATCH 13/39] amiga_cd: fix validation --- hash/amiga_cd.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hash/amiga_cd.xml b/hash/amiga_cd.xml index 03db35dc3df50..231745ce83cac 100644 --- a/hash/amiga_cd.xml +++ b/hash/amiga_cd.xml @@ -5,7 +5,7 @@ license:CC0-1.0 http://redump.org/discs/system/acd --> - + From 126b4036e3433ee5d1c48a98d2feb8492b6d4cbc Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Mon, 23 Dec 2024 03:31:53 +1100 Subject: [PATCH 14/39] virtual/vgmplay.cpp: Use embedded SVG for button labels. --- src/mame/layout/vgmplay.lay | 106 ++++++++++++++++++++++++------------ 1 file changed, 72 insertions(+), 34 deletions(-) diff --git a/src/mame/layout/vgmplay.lay b/src/mame/layout/vgmplay.lay index 2317397478d5c..0101a2375cd66 100644 --- a/src/mame/layout/vgmplay.lay +++ b/src/mame/layout/vgmplay.lay @@ -97,31 +97,79 @@ license:CC0-1.0 - - - - + - - - + + + + + + + + + + + + ]]> + - - - + + + + + + + + + + + ]]> + - - - + + + + + + + + + + + ]]> + - - - + + + + + + + + + + + ]]> + - - - + + + + + + + + + + + ]]> + @@ -218,23 +266,13 @@ license:CC0-1.0 - - - - - - - - - - - - - - - + + + + + From 1089c83eb4a37f5792505e37488faa0d96acccd5 Mon Sep 17 00:00:00 2001 From: qufb <93520295+qufb@users.noreply.github.com> Date: Sun, 22 Dec 2024 21:09:35 +0000 Subject: [PATCH 15/39] spg2xx_dreamlife.cpp: Add Giga Pets Explorer (#13110) New working systems ------------------- Giga Pets Explorer (Version 1.34.1, Mar 17 2006) [QUFB] --- src/mame/mame.lst | 1 + src/mame/tvgames/spg2xx_dreamlife.cpp | 33 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9152bbe0472d4..bb96ea68c651b 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -45981,6 +45981,7 @@ rad_digi @source:tvgames/spg2xx_dreamlife.cpp dreamlif // dsgnwrld +gigapets @source:tvgames/spg2xx_ican.cpp icanguit // diff --git a/src/mame/tvgames/spg2xx_dreamlife.cpp b/src/mame/tvgames/spg2xx_dreamlife.cpp index ae2ad432733e8..27eb958b889ac 100644 --- a/src/mame/tvgames/spg2xx_dreamlife.cpp +++ b/src/mame/tvgames/spg2xx_dreamlife.cpp @@ -1,5 +1,10 @@ // license:BSD-3-Clause // copyright-holders:Ryan Holtz, David Haywood +/* + TODO: + Service mode inputs for Giga Pets Explorer + Dump and emulate Giga Pets handheld game units +*/ #include "emu.h" #include "spg2xx.h" @@ -79,6 +84,26 @@ static INPUT_PORTS_START( dsgnwrld ) PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( gigapets ) + PORT_START("P1") + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Select") + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Back") // PCB marking is "Cancel" + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu") + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNUSED ) + // TODO: Likely handheld game unit inputs + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON4 ) + PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON5 ) + PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON6 ) + PORT_BIT( 0xc000, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + void dreamlif_state::dreamlif(machine_config &config) { SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen); @@ -104,9 +129,17 @@ ROM_START( dsgnwrld ) ROM_LOAD16_WORD_SWAP( "designersworld.bin", 0x000000, 0x800000, CRC(b3987161) SHA1(f7d03b172fd0accc6370d9ccc340b3aa6317426f) ) ROM_END +// PCB Markings: 3059L-R3 0626 / 3059TV-R3B / 3059R-R1 0626 +// Dumped as K8D6X16UTM +ROM_START( gigapets ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "rom.u7", 0x000000, 0x800000, CRC(beacc99c) SHA1(d6e3ed69e297282b9d85661a7468e0c0a6815d31) ) +ROM_END + } // anonymous namespace // Hasbro games CONS( 2005, dreamlif, 0, 0, dreamlif, dreamlif, dreamlif_state, empty_init, "Hasbro", "Dream Life (Version 1.0, Feb 07 2005)", MACHINE_IMPERFECT_SOUND ) CONS( 2005, dsgnwrld, 0, 0, dreamlif, dsgnwrld, dreamlif_state, empty_init, "Hasbro", "Designer's World (Version 1.0, Dec 20 2005)", MACHINE_IMPERFECT_SOUND ) +CONS( 2006, gigapets, 0, 0, dreamlif, gigapets, dreamlif_state, empty_init, "Hasbro", "Giga Pets Explorer (Version 1.34.1, Mar 17 2006)", MACHINE_IMPERFECT_SOUND ) From 7f5c6cefc401babb14db272a1fc2d8b45b8aabc0 Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 22 Dec 2024 22:37:37 +0100 Subject: [PATCH 16/39] yakyuken: correct ay and irq frequency --- src/mame/omori/yakyuken.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/mame/omori/yakyuken.cpp b/src/mame/omori/yakyuken.cpp index a252163c8cf8e..d26c645159ae6 100644 --- a/src/mame/omori/yakyuken.cpp +++ b/src/mame/omori/yakyuken.cpp @@ -32,8 +32,6 @@ The riser board has a pair of HM4334 1K*4 static RAMs and a quad 2-input NAND ga - game sometimes leaves gaps when the lady is undressing - colors aren't 100% correct (see i.e. the stripes in the curtains), reference video: https://www.youtube.com/watch?v=zTOFIhuwR2w -- verify sound pitch (unfortunately, no pcb sound in above video) -- verify irq frequency, though it looks similar to the pcb video */ @@ -276,9 +274,7 @@ void yakyuken_state::yakyuken(machine_config &config) Z80(config, m_maincpu, 18.432_MHz_XTAL / 3 / 2); // 3.072 MHz m_maincpu->set_addrmap(AS_PROGRAM, &yakyuken_state::main_program_map); m_maincpu->set_addrmap(AS_IO, &yakyuken_state::main_io_map); - - attotime irq_period = attotime::from_ticks(0x2000, 18.432_MHz_XTAL / 3); - m_maincpu->set_periodic_int(FUNC(yakyuken_state::irq0_line_hold), irq_period); + m_maincpu->set_periodic_int(FUNC(yakyuken_state::irq0_line_hold), attotime::from_hz(4*60)); Z80(config, m_audiocpu, 18.432_MHz_XTAL / 3 / 4); // 1.536 MHz m_audiocpu->set_addrmap(AS_PROGRAM, &yakyuken_state::sound_program_map); @@ -304,7 +300,8 @@ void yakyuken_state::yakyuken(machine_config &config) GENERIC_LATCH_8(config, "soundlatch"); - AY8910(config, m_ay, 18.432_MHz_XTAL / 3 / 16).add_route(ALL_OUTPUTS, "mono", 0.35); + AY8910(config, m_ay, 18.432_MHz_XTAL / 3 / 4); // 1.536 MHz + m_ay->add_route(ALL_OUTPUTS, "mono", 0.35); } From 592e0471ff212bdc869c99d35e8c615812f6583e Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 22 Dec 2024 22:39:16 +0100 Subject: [PATCH 17/39] microvision: correct typo ayza/azya --- hash/microvision.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hash/microvision.xml b/hash/microvision.xml index 914aad3f7b8b3..50d6ad200e544 100644 --- a/hash/microvision.xml +++ b/hash/microvision.xml @@ -258,7 +258,7 @@ The "butmask" feature indicates cartridge button restrict mask (active-low) MicroBird 2018 - Ayza + azya @@ -271,7 +271,7 @@ The "butmask" feature indicates cartridge button restrict mask (active-low) Tetris (TMS1100 version) 2019 - Ayza + azya @@ -285,7 +285,7 @@ The "butmask" feature indicates cartridge button restrict mask (active-low) Tetris (8021 version) 2018 - Ayza + azya From abf2bacb4c7f7d3f363cbc74b29a628ee4ced2c0 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 23 Dec 2024 11:42:07 +0100 Subject: [PATCH 18/39] rungun: correct palette ram size, correct shadow/highlights on palette2 --- src/mame/konami/rungun.cpp | 125 +++++++++++++++++-------------------- 1 file changed, 59 insertions(+), 66 deletions(-) diff --git a/src/mame/konami/rungun.cpp b/src/mame/konami/rungun.cpp index a30508862a4e4..2a5b03a1486d1 100644 --- a/src/mame/konami/rungun.cpp +++ b/src/mame/konami/rungun.cpp @@ -53,8 +53,7 @@ class rungun_state : public driver_device driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_soundcpu(*this, "soundcpu"), - m_k054539_1(*this, "k054539_1"), - m_k054539_2(*this, "k054539_2"), + m_k054539(*this, "k054539_%u", 0), m_k053936(*this, "k053936"), m_k055673(*this, "k055673"), m_k053252(*this, "k053252"), @@ -84,8 +83,7 @@ class rungun_state : public driver_device /* devices */ required_device m_maincpu; required_device m_soundcpu; - required_device m_k054539_1; - required_device m_k054539_2; + required_device_array m_k054539; required_device m_k053936; required_device m_k055673; required_device m_k053252; @@ -110,23 +108,23 @@ class rungun_state : public driver_device tilemap_t *m_ttl_tilemap[2]{}; tilemap_t *m_936_tilemap[2]{}; std::unique_ptr m_psac2_vram; - std::unique_ptr m_ttl_vram; - std::unique_ptr m_pal_ram; - uint8_t m_current_display_bank = 0; + std::unique_ptr m_ttl_vram; + std::unique_ptr m_pal_ram; + uint8_t m_current_display_bank = 0; int m_ttl_gfx_index = 0; int m_sprite_colorbase = 0; - uint8_t *m_roz_rom = nullptr; - uint8_t m_roz_rombase = 0; + uint8_t *m_roz_rom = nullptr; + uint8_t m_roz_rombase = 0; /* sound */ - uint8_t m_sound_ctrl = 0; - uint8_t m_sound_nmi_clk = 0; + uint8_t m_sound_ctrl = 0; + uint8_t m_sound_nmi_clk = 0; bool m_video_priority_mode = false; std::unique_ptr m_banked_ram; bool m_single_screen_mode = false; - uint8_t m_video_mux_bank = 0; + uint8_t m_video_mux_bank = 0; uint16_t sysregs_r(offs_t offset, uint16_t mem_mask = ~0); void sysregs_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); @@ -140,9 +138,8 @@ class rungun_state : public driver_device TILE_GET_INFO_MEMBER(ttl_get_tile_info); TILE_GET_INFO_MEMBER(get_rng_936_tile_info); void k054539_nmi_gen(int state); - uint16_t palette_read(offs_t offset); - void palette_write(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - + uint16_t palette_r(offs_t offset); + void palette_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); K055673_CB_MEMBER(sprite_callback); @@ -152,7 +149,7 @@ class rungun_state : public driver_device uint32_t screen_update_rng_dual_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); bitmap_ind16 m_rng_dual_demultiplex_left_temp; bitmap_ind16 m_rng_dual_demultiplex_right_temp; - void sprite_dma_trigger(void); + void sprite_dma_trigger(void); INTERRUPT_GEN_MEMBER(rng_interrupt); @@ -182,10 +179,11 @@ uint16_t rungun_state::sysregs_r(offs_t offset, uint16_t mem_mask) */ { uint8_t field_bit = m_screen->frame_number() & 1; - if(m_single_screen_mode == true) + if (m_single_screen_mode == true) field_bit = 1; return (m_system->read() & 0xfdff) | (field_bit << 9); } + case 0x06/2: if (ACCESSING_BITS_0_7) { @@ -231,7 +229,7 @@ void rungun_state::sysregs_w(offs_t offset, uint16_t data, uint16_t mem_mask) if (!(data & 0x400)) // actually a 0 -> 1 transition m_maincpu->set_input_line(M68K_IRQ_5, CLEAR_LINE); } - break; + break; case 0x0c/2: /* @@ -243,7 +241,7 @@ void rungun_state::sysregs_w(offs_t offset, uint16_t data, uint16_t mem_mask) */ m_k055673->k053246_set_objcha_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE); m_roz_rombase = (data & 0xf0) >> 4; - break; + break; } } @@ -267,38 +265,36 @@ uint8_t rungun_state::k53936_rom_r(offs_t offset) { // TODO: odd addresses returns ...? uint32_t rom_addr = offset; - rom_addr+= (m_roz_rombase)*0x20000; + rom_addr += m_roz_rombase * 0x20000; return m_roz_rom[rom_addr]; } -uint16_t rungun_state::palette_read(offs_t offset) +uint16_t rungun_state::palette_r(offs_t offset) { return m_pal_ram[offset + m_video_mux_bank*0x800/2]; } -void rungun_state::palette_write(offs_t offset, uint16_t data, uint16_t mem_mask) +void rungun_state::palette_w(offs_t offset, uint16_t data, uint16_t mem_mask) { - palette_device &cur_paldevice = m_video_mux_bank == 0 ? *m_palette : *m_palette2; uint32_t addr = offset + m_video_mux_bank*0x800/2; COMBINE_DATA(&m_pal_ram[addr]); - uint8_t r,g,b; + uint8_t r = m_pal_ram[addr] & 0x1f; + uint8_t g = (m_pal_ram[addr] & 0x3e0) >> 5; + uint8_t b = (m_pal_ram[addr] & 0x7e00) >> 10; - r = m_pal_ram[addr] & 0x1f; - g = (m_pal_ram[addr] & 0x3e0) >> 5; - b = (m_pal_ram[addr] & 0x7e00) >> 10; - - cur_paldevice.set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b)); + palette_device &cur_paldevice = m_video_mux_bank == 0 ? *m_palette : *m_palette2; + cur_paldevice.set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b)); } void rungun_state::rungun_map(address_map &map) { map(0x000000, 0x2fffff).rom(); // main program + data - map(0x300000, 0x3007ff).rw(FUNC(rungun_state::palette_read), FUNC(rungun_state::palette_write)); + map(0x300000, 0x3007ff).rw(FUNC(rungun_state::palette_r), FUNC(rungun_state::palette_w)); map(0x380000, 0x39ffff).ram(); // work RAM map(0x400000, 0x43ffff).r(FUNC(rungun_state::k53936_rom_r)).umask16(0x00ff); // '936 ROM readback window map(0x480000, 0x48001f).rw(FUNC(rungun_state::sysregs_r), FUNC(rungun_state::sysregs_w)).share("sysreg"); - map(0x4c0000, 0x4c001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU (for scanline and vblank polling) + map(0x4c0000, 0x4c001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU (for scanline and vblank polling) map(0x540000, 0x540001).w(FUNC(rungun_state::sound_irq_w)); map(0x580000, 0x58001f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00); map(0x5c0000, 0x5c000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); // 246A ROM readback window @@ -334,12 +330,12 @@ K055673_CB_MEMBER(rungun_state::sprite_callback) uint16_t rungun_state::ttl_ram_r(offs_t offset) { - return m_ttl_vram[offset+(m_video_mux_bank*0x1000)]; + return m_ttl_vram[offset + (m_video_mux_bank*0x1000)]; } void rungun_state::ttl_ram_w(offs_t offset, uint16_t data, uint16_t mem_mask) { - COMBINE_DATA(&m_ttl_vram[offset+(m_video_mux_bank*0x1000)]); + COMBINE_DATA(&m_ttl_vram[offset + (m_video_mux_bank*0x1000)]); m_ttl_tilemap[m_video_mux_bank]->mark_tile_dirty(offset / 2); } @@ -398,7 +394,7 @@ void rungun_state::video_start() m_ttl_gfx_index = gfx_index; // create the tilemaps - for(uint32_t screen_num = 0;screen_num < 2;screen_num++) + for (uint32_t screen_num = 0; screen_num < 2; screen_num++) { m_ttl_tilemap[screen_num] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rungun_state::ttl_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_ttl_tilemap[screen_num]->set_user_data((void *)(uintptr_t)(screen_num * 0x2000)); @@ -420,10 +416,10 @@ uint32_t rungun_state::screen_update_rng(screen_device &screen, bitmap_ind16 &bi bitmap.fill(m_palette->black_pen(), cliprect); screen.priority().fill(0, cliprect); m_current_display_bank = m_screen->frame_number() & 1; - if(m_single_screen_mode == true) + if (m_single_screen_mode == true) m_current_display_bank = 0; - if(m_video_priority_mode == false) + if (m_video_priority_mode == false) { m_k053936->zoom_draw(screen, bitmap, cliprect, m_936_tilemap[m_current_display_bank], 0, 0, 1); m_k055673->k053247_sprites_draw(bitmap, cliprect); @@ -464,14 +460,14 @@ void rungun_state::sprite_dma_trigger(void) { uint32_t src_address; - if(m_single_screen_mode == true) + if (m_single_screen_mode == true) src_address = 1*0x2000; else src_address = m_current_display_bank*0x2000; // TODO: size could be programmable somehow. - for(int i=0;i<0x1000;i+=2) - m_k055673->k053247_word_w(i/2, m_banked_ram[(i + src_address) /2]); + for (int i = 0; i < 0x1000; i += 2) + m_k055673->k053247_word_w(i / 2, m_banked_ram[(i + src_address) / 2]); } @@ -514,9 +510,9 @@ void rungun_state::rungun_sound_map(address_map &map) map(0x0000, 0x7fff).rom(); map(0x8000, 0xbfff).bankr("bank2"); map(0xc000, 0xdfff).ram(); - map(0xe000, 0xe22f).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe000, 0xe22f).rw(m_k054539[0], FUNC(k054539_device::read), FUNC(k054539_device::write)); map(0xe230, 0xe3ff).ram(); - map(0xe400, 0xe62f).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe400, 0xe62f).rw(m_k054539[1], FUNC(k054539_device::read), FUNC(k054539_device::write)); map(0xe630, 0xe7ff).ram(); map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); map(0xf800, 0xf800).w(FUNC(rungun_state::sound_ctrl_w)); @@ -624,19 +620,16 @@ void rungun_state::machine_start() m_bank2->configure_entries(0, 8, &ROM[0x10000], 0x4000); m_banked_ram = make_unique_clear(0x2000); - m_pal_ram = make_unique_clear(0x800*2); - m_spriteram_bank->configure_entries(0,2,&m_banked_ram[0],0x2000); + m_pal_ram = make_unique_clear(0x800); + m_spriteram_bank->configure_entries(0, 2, &m_banked_ram[0], 0x2000); save_item(NAME(m_sound_ctrl)); save_item(NAME(m_sound_nmi_clk)); - //save_item(NAME(m_ttl_vram)); } void rungun_state::machine_reset() { memset(m_sysreg, 0, 0x20); - //memset(m_ttl_vram, 0, 0x1000 * sizeof(uint16_t)); - m_sound_ctrl = 0; } @@ -685,8 +678,8 @@ void rungun_state::rng(machine_config &config) m_k053252->set_screen("screen"); PALETTE(config, m_palette2).set_format(palette_device::xBGR_555, 1024); - m_palette->enable_shadows(); - m_palette->enable_hilights(); + m_palette2->enable_shadows(); + m_palette2->enable_hilights(); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); @@ -695,17 +688,17 @@ void rungun_state::rng(machine_config &config) K054321(config, m_k054321, "lspeaker", "rspeaker"); // SFX - K054539(config, m_k054539_1, 18.432_MHz_XTAL); - m_k054539_1->set_device_rom_tag("k054539"); - m_k054539_1->timer_handler().set(FUNC(rungun_state::k054539_nmi_gen)); - m_k054539_1->add_route(0, "rspeaker", 1.0); - m_k054539_1->add_route(1, "lspeaker", 1.0); + K054539(config, m_k054539[0], 18.432_MHz_XTAL); + m_k054539[0]->set_device_rom_tag("k054539"); + m_k054539[0]->timer_handler().set(FUNC(rungun_state::k054539_nmi_gen)); + m_k054539[0]->add_route(0, "rspeaker", 1.0); + m_k054539[0]->add_route(1, "lspeaker", 1.0); // BGM, volumes handtuned to make SFXs audible (still not 100% right tho) - K054539(config, m_k054539_2, 18.432_MHz_XTAL); - m_k054539_2->set_device_rom_tag("k054539"); - m_k054539_2->add_route(0, "rspeaker", 0.6); - m_k054539_2->add_route(1, "lspeaker", 0.6); + K054539(config, m_k054539[1], 18.432_MHz_XTAL); + m_k054539[1]->set_device_rom_tag("k054539"); + m_k054539[1]->add_route(0, "rspeaker", 0.6); + m_k054539[1]->add_route(1, "lspeaker", 0.6); } // for dual-screen output Run and Gun requires the video de-multiplexer board connected to the Jamma output, this gives you 2 Jamma connectors, one for each screen. @@ -717,16 +710,16 @@ void rungun_state::rng_dual(machine_config &config) m_screen->set_screen_update(FUNC(rungun_state::screen_update_rng_dual_left)); - screen_device &demultiplex2(SCREEN(config, "demultiplex2", SCREEN_TYPE_RASTER)); - demultiplex2.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); - demultiplex2.set_refresh_hz(59.185606); - demultiplex2.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - demultiplex2.set_size(64*8, 32*8); - demultiplex2.set_visarea(88, 88+416-1, 24, 24+224-1); - demultiplex2.set_screen_update(FUNC(rungun_state::screen_update_rng_dual_right)); - demultiplex2.set_palette(m_palette2); + screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER)); + screen2.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); + screen2.set_refresh_hz(59.185606); + screen2.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen2.set_size(64*8, 32*8); + screen2.set_visarea(88, 88+416-1, 24, 24+224-1); + screen2.set_screen_update(FUNC(rungun_state::screen_update_rng_dual_right)); + screen2.set_palette(m_palette2); - m_k053252->set_slave_screen("demultiplex2"); + m_k053252->set_slave_screen("screen2"); } From 4881a087523343b5241be15da5e87ff9a3d01d31 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 23 Dec 2024 20:03:40 +0100 Subject: [PATCH 19/39] tama: add svg screen, svg shapes taken from BrickEmuPy [hap, azya] --- src/devices/cpu/e0c6200/e0c6s46.cpp | 42 ++++++++++-------- src/devices/cpu/e0c6200/e0c6s46.h | 28 +++++++----- src/mame/bandai/tamag1.cpp | 69 +++++------------------------ src/mame/layout/tama.lay | 68 ---------------------------- 4 files changed, 52 insertions(+), 155 deletions(-) delete mode 100644 src/mame/layout/tama.lay diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp index fcc9ac6c5cfcf..f2dc35103dd68 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.cpp +++ b/src/devices/cpu/e0c6200/e0c6s46.cpp @@ -41,8 +41,8 @@ void e0c6s46_device::e0c6s46_program(address_map &map) void e0c6s46_device::e0c6s46_data(address_map &map) { map(0x0000, 0x027f).ram(); - map(0x0e00, 0x0e4f).ram().share("vram1"); - map(0x0e80, 0x0ecf).ram().share("vram2"); + map(0x0e00, 0x0e4f).ram().share(m_vram[0]); + map(0x0e80, 0x0ecf).ram().share(m_vram[1]); map(0x0f00, 0x0f7f).rw(FUNC(e0c6s46_device::io_r), FUNC(e0c6s46_device::io_w)); } @@ -50,9 +50,9 @@ void e0c6s46_device::e0c6s46_data(address_map &map) // device definitions e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : e0c6200_cpu_device(mconfig, E0C6S46, tag, owner, clock, address_map_constructor(FUNC(e0c6s46_device::e0c6s46_program), this), address_map_constructor(FUNC(e0c6s46_device::e0c6s46_data), this)), - m_vram1(*this, "vram1"), - m_vram2(*this, "vram2"), - m_pixel_update_cb(*this), + m_vram(*this, "vram%u", 1U), + m_write_segs(*this), + m_write_contrast(*this), m_write_r(*this), m_read_p(*this, 0), m_write_p(*this) @@ -68,15 +68,19 @@ void e0c6s46_device::device_start() { e0c6200_cpu_device::device_start(); - m_pixel_update_cb.resolve(); - - // create timers + // misc init m_core_256_handle = timer_alloc(FUNC(e0c6s46_device::core_256_cb), this); m_core_256_handle->adjust(attotime::from_ticks(64, unscaled_clock())); m_prgtimer_handle = timer_alloc(FUNC(e0c6s46_device::prgtimer_cb), this); m_prgtimer_handle->adjust(attotime::never); m_buzzer_handle = timer_alloc(FUNC(e0c6s46_device::buzzer_cb), this); m_buzzer_handle->adjust(attotime::never); + m_lcd_driver = timer_alloc(FUNC(e0c6s46_device::lcd_driver_cb), this); + m_lcd_driver->adjust(attotime::from_ticks(1024, unscaled_clock())); + + const u32 render_buf_size = m_vram[0].bytes() * 2 * 4; + m_render_buf = make_unique_clear(render_buf_size); + save_pointer(NAME(m_render_buf), render_buf_size); // zerofill memset(m_port_r, 0x0, sizeof(m_port_r)); @@ -195,6 +199,8 @@ void e0c6s46_device::device_reset() m_data->write_byte(0xf7d, 0x0); m_data->write_byte(0xf7e, 0x0); + m_write_contrast(m_lcd_contrast); + // reset ports for (int i = 0; i < 5; i++) write_r(i, m_port_r[i]); @@ -545,13 +551,11 @@ void e0c6s46_device::clock_bz_1shot() // LCD Driver //------------------------------------------------- -u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +TIMER_CALLBACK_MEMBER(e0c6s46_device::lcd_driver_cb) { - // call this 32 times per second (osc1/1024: 32hz at default clock of 32768hz) + // this gets called 32 times per second (osc1/1024: 32hz at default clock of 32768hz) for (int bank = 0; bank < 2; bank++) { - const u8* vram = bank ? m_vram2 : m_vram1; - // determine operating mode bool lcd_on = false; int pixel = 0; @@ -563,26 +567,25 @@ u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c lcd_on = true; // draw pixels - for (int offset = 0; offset < 0x50; offset++) + for (int offset = 0; offset < m_vram[0].bytes(); offset++) { for (int c = 0; c < 4; c++) { if (lcd_on) - pixel = vram[offset] >> c & 1; + pixel = m_vram[bank][offset] >> c & 1; // 16 COM(common) pins, 40 SEG(segment) pins int seg = offset / 2; int com = bank * 8 + (offset & 1) * 4 + c; - if (!m_pixel_update_cb.isnull()) - m_pixel_update_cb(bitmap, cliprect, m_lcd_contrast, seg, com, pixel); - else if (cliprect.contains(seg, com)) - bitmap.pix(com, seg) = pixel; + const u8 width = m_vram[0].bytes() * 4 / 8; + m_render_buf[com * width + seg] = pixel; + m_write_segs(seg << 4 | com, pixel); } } } - return 0; + m_lcd_driver->adjust(attotime::from_ticks(1024, unscaled_clock())); } @@ -760,6 +763,7 @@ void e0c6s46_device::io_w(offs_t offset, u8 data) case 0x72: // contrast adjustment (0=light, 15=dark) m_lcd_contrast = data; + m_write_contrast(data); break; // SVD circuit (supply voltage detection) diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index 3f1e09e6c9e3f..ad96db9e6ca67 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -42,10 +42,6 @@ enum }; -// lcd driver -#define E0C6S46_PIXEL_UPDATE(name) void name(bitmap_ind16 &bitmap, const rectangle &cliprect, int contrast, int seg, int com, int state) - - class e0c6s46_device : public e0c6200_cpu_device { public: @@ -60,12 +56,14 @@ class e0c6s46_device : public e0c6200_cpu_device template auto read_p() { return m_read_p[Port].bind(); } template auto write_p() { return m_write_p[Port].bind(); } - template void set_pixel_update_cb(T &&... args) { m_pixel_update_cb.set(std::forward(args)...); } + // LCD segment outputs: COM0-COM15 as a0-a3, SEG0-SEGx as a4-a10 + auto write_segs() { return m_write_segs.bind(); } - u8 io_r(offs_t offset); - void io_w(offs_t offset, u8 data); + // LCD contrast (adjusts VL pins overall voltage level) + auto write_contrast() { return m_write_contrast.bind(); } - u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + const u8 *lcd_buffer() { return &m_render_buf[0]; } // get intermediate LCD pixel buffer + //u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); // optional protected: // device-level overrides @@ -81,17 +79,25 @@ class e0c6s46_device : public e0c6200_cpu_device void e0c6s46_program(address_map &map) ATTR_COLD; private: - required_shared_ptr m_vram1; - required_shared_ptr m_vram2; + u8 io_r(offs_t offset); + void io_w(offs_t offset, u8 data); + + required_shared_ptr_array m_vram; u8 m_irqflag[6]; u8 m_irqmask[6]; u8 m_osc; u8 m_svd; + // lcd driver u8 m_lcd_control; u8 m_lcd_contrast; - pixel_update_delegate m_pixel_update_cb; + std::unique_ptr m_render_buf; + devcb_write8 m_write_segs; + devcb_write8 m_write_contrast; + + emu_timer *m_lcd_driver; + TIMER_CALLBACK_MEMBER(lcd_driver_cb); // i/o ports devcb_write8::array<5> m_write_r; diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp index 36e9f7c47a1b7..9dc17e52831a8 100644 --- a/src/mame/bandai/tamag1.cpp +++ b/src/mame/bandai/tamag1.cpp @@ -1,6 +1,6 @@ // license:BSD-3-Clause // copyright-holders:hap -// thanks-to:digshadow, Segher +// thanks-to:digshadow, Segher, azya /******************************************************************************* Bandai Tamagotchi generation 1 hardware @@ -12,7 +12,6 @@ Hardware notes: - 1-bit sound TODO: -- change to SVG screen - add the Mothra version that was recently dumped (has a E0C6S48) *******************************************************************************/ @@ -22,12 +21,9 @@ Hardware notes: #include "cpu/e0c6200/e0c6s46.h" #include "sound/spkrdev.h" -#include "emupal.h" #include "screen.h" #include "speaker.h" -#include "tama.lh" - namespace { @@ -48,8 +44,7 @@ class tamag1_state : public driver_device virtual void machine_start() override ATTR_COLD; private: - void tama_palette(palette_device &palette) const; - E0C6S46_PIXEL_UPDATE(pixel_update); + void lcd_segment_w(offs_t offset, u8 data) { m_out_x[offset & 0xf][offset >> 4] = data; } required_device m_maincpu; output_finder<16, 40> m_out_x; @@ -62,43 +57,6 @@ void tamag1_state::machine_start() -/******************************************************************************* - Video -*******************************************************************************/ - -E0C6S46_PIXEL_UPDATE(tamag1_state::pixel_update) -{ - // 16 COM(common) pins, 40 SEG(segment) pins from MCU, 32x16 LCD screen: - static const int seg2x[0x28] = - { - 0, 1, 2, 3, 4, 5, 6, 7, - 35,8, 9, 10,11,12,13,14, - 15,34,33,32,31,30,29,28, - 27,26,25,24,36,23,22,21, - 20,19,18,17,16,37,38,39 - }; - - int y = com, x = seg2x[seg]; - if (cliprect.contains(x, y)) - bitmap.pix(y, x) = state; - - // 2 rows of indicators: - // above screen: 0:meal, 1:lamp, 2:play, 3:medicine - // under screen: 4:bath, 5:scales, 6:shout, 7:attention - // they are on pin SEG8(x=35) + COM0-3, pin SEG28(x=36) + COM12-15 - - // output to y.x - m_out_x[y][x] = state; -} - -void tamag1_state::tama_palette(palette_device &palette) const -{ - palette.set_pen_color(0, rgb_t(0xf1, 0xf0, 0xf9)); // background - palette.set_pen_color(1, rgb_t(0x3c, 0x38, 0x38)); // lcd pixel -} - - - /******************************************************************************* Input Ports *******************************************************************************/ @@ -127,20 +85,14 @@ void tamag1_state::tama(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); - m_maincpu->set_pixel_update_cb(FUNC(tamag1_state::pixel_update)); + m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); // video hardware - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); - screen.set_refresh_hz(32.768_kHz_XTAL/1024); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(40, 16); - screen.set_visarea(0, 32-1, 0, 16-1); - screen.set_screen_update("maincpu", FUNC(e0c6s46_device::screen_update)); - screen.set_palette("palette"); - config.set_default_layout(layout_tama); - - PALETTE(config, "palette", FUNC(tamag1_state::tama_palette), 2); + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(32); + screen.set_size(1119, 1080); + screen.set_visarea_full(); // sound hardware SPEAKER(config, "mono").front_center(); @@ -159,6 +111,9 @@ ROM_START( tama ) ROM_REGION( 0x3000, "maincpu:test", 0 ) ROM_LOAD( "test.bin", 0x0000, 0x3000, CRC(4372220e) SHA1(6e13d015113e16198c0059b9d0c38d7027ae7324) ) // this rom is on the die too, test pin enables it? + + ROM_REGION( 139072, "screen", 0) + ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) ROM_END } // anonymous namespace @@ -169,5 +124,5 @@ ROM_END Drivers *******************************************************************************/ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (USA)", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) diff --git a/src/mame/layout/tama.lay b/src/mame/layout/tama.lay deleted file mode 100644 index 403676fee81b5..0000000000000 --- a/src/mame/layout/tama.lay +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From ff6d52d56a9dcac133e5fee805a277bf0f9b60a4 Mon Sep 17 00:00:00 2001 From: Adam Billyard <41291895+Elektraglide@users.noreply.github.com> Date: Mon, 23 Dec 2024 19:49:20 +0000 Subject: [PATCH 20/39] machine/ncr5385.cpp: clear status bits first when updating so they aren't stuck on (#13109) Co-authored-by: AdamB --- src/devices/machine/ncr5385.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/devices/machine/ncr5385.cpp b/src/devices/machine/ncr5385.cpp index 1045188534532..77a9090bc5945 100644 --- a/src/devices/machine/ncr5385.cpp +++ b/src/devices/machine/ncr5385.cpp @@ -245,6 +245,9 @@ u8 ncr5385_device::aux_status_r() if (!m_int_status) { + // mask out any bits + data &= ~(AUX_STATUS_MSG | AUX_STATUS_CD | AUX_STATUS_IO); + // return current phase u32 const ctrl = scsi_bus->ctrl_r(); if (ctrl & S_MSG) @@ -829,6 +832,9 @@ void ncr5385_device::update_int() { m_cmd = 0; + // mask out any bits + m_aux_status &= ~(AUX_STATUS_MSG | AUX_STATUS_CD | AUX_STATUS_IO); + // latch current phase u32 const ctrl = scsi_bus->ctrl_r(); if (ctrl & S_MSG) From f0df186869fbeb2585106cae222c502bc6e225b3 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 23 Dec 2024 21:36:38 +0100 Subject: [PATCH 21/39] New systems marked not working ------------------------------ Chibi Pachi Alien Fever [hap, azya] Beans Collection: Venus Diet Monogatari [hap, azya] --- src/devices/cpu/e0c6200/e0c6s46.cpp | 22 ++++++++ src/devices/cpu/e0c6200/e0c6s46.h | 2 +- src/mame/bandai/tamag1.cpp | 81 ++++++++++++++++++++++++++++- src/mame/mame.lst | 2 + 4 files changed, 104 insertions(+), 3 deletions(-) diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp index f2dc35103dd68..0ef710efe8e1f 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.cpp +++ b/src/devices/cpu/e0c6200/e0c6s46.cpp @@ -588,6 +588,28 @@ TIMER_CALLBACK_MEMBER(e0c6s46_device::lcd_driver_cb) m_lcd_driver->adjust(attotime::from_ticks(1024, unscaled_clock())); } +u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + const u8 *src = lcd_buffer(); + const u8 width = m_vram[0].bytes() * 4 / 8; + + for (int x = 0; x < width; x++) + { + for (int y = 0; y < 16; y++) + { + int sx = x; + int sy = y; + //int sx = y | (x / 20) << 4; + //int sy = x % 20; + + if (cliprect.contains(sx, sy)) + bitmap.pix(sy, sx) = src[y * width + x]; + } + } + + return 0; +} + //------------------------------------------------- diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index ad96db9e6ca67..9f1b14dc0cd1b 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -63,7 +63,7 @@ class e0c6s46_device : public e0c6200_cpu_device auto write_contrast() { return m_write_contrast.bind(); } const u8 *lcd_buffer() { return &m_render_buf[0]; } // get intermediate LCD pixel buffer - //u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); // optional + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); // optional protected: // device-level overrides diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp index 9dc17e52831a8..5cf6e0c35f8c3 100644 --- a/src/mame/bandai/tamag1.cpp +++ b/src/mame/bandai/tamag1.cpp @@ -21,6 +21,7 @@ Hardware notes: #include "cpu/e0c6200/e0c6s46.h" #include "sound/spkrdev.h" +#include "emupal.h" #include "screen.h" #include "speaker.h" @@ -37,6 +38,8 @@ class tamag1_state : public driver_device { } void tama(machine_config &config); + void alienfev(machine_config &config); + void venusdm(machine_config &config); DECLARE_INPUT_CHANGED_MEMBER(input_changed); @@ -75,6 +78,22 @@ static INPUT_PORTS_START( tama ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( alienfev ) + PORT_START("K0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K00) // mode + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K01) // select + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K02) // sound + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K03) // handle +INPUT_PORTS_END + +static INPUT_PORTS_START( venusdm ) + PORT_START("K1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K10) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K11) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K12) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + /******************************************************************************* @@ -99,6 +118,52 @@ void tamag1_state::tama(machine_config &config) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); } +void tamag1_state::alienfev(machine_config &config) +{ + // basic machine hardware + E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); + m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); + m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + + // video hardware + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); + screen.set_refresh_hz(32); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(39, 16); + screen.set_visarea_full(); + screen.set_screen_update(m_maincpu, FUNC(e0c6s46_device::screen_update)); + screen.set_palette("palette"); + + PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); +} + +void tamag1_state::venusdm(machine_config &config) +{ + // basic machine hardware + E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); + m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); + m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + + // video hardware + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); + screen.set_refresh_hz(32); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32, 20); + screen.set_visarea_full(); + screen.set_screen_update(m_maincpu, FUNC(e0c6s46_device::screen_update)); + screen.set_palette("palette"); + + PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); +} + /******************************************************************************* @@ -116,6 +181,16 @@ ROM_START( tama ) ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) ROM_END +ROM_START( alienfev ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "alienfev.bin", 0x0000, 0x3000, CRC(e561599c) SHA1(7927e198f8989861ba057150e59d1f4ad403c1d2) ) +ROM_END + +ROM_START( venusdm ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "venusdm.bin", 0x0000, 0x3000, CRC(2228b081) SHA1(22f6a2ede6259e76f1c8b9b50171c54d8a7de502) ) +ROM_END + } // anonymous namespace @@ -124,5 +199,7 @@ ROM_END Drivers *******************************************************************************/ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +SYST( 1997, alienfev, 0, 0, alienfev, alienfev, tamag1_state, empty_init, "Epoch", "Chibi Pachi Alien Fever", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +SYST( 1997, venusdm, 0, 0, venusdm, venusdm, tamag1_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index bb96ea68c651b..946a010b5a29e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -2499,7 +2499,9 @@ rx78 // sv8000 // Super Vision 8000 @source:bandai/tamag1.cpp +alienfev // Epoch tama // Bandai +venusdm // Nikko @source:bandai/wswan.cpp pockchv2 // Benesse Pocket Challenge V2 From 6e711389acddf3a7d22c7ccb1a925f0965f174b8 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 23 Dec 2024 22:40:13 +0100 Subject: [PATCH 22/39] e0c6s46: add callback for transforming lcd pixel x/y, add k input interrupts, venusdm seems to be working now Systems promoted to working --------------------------- Beans Collection: Venus Diet Monogatari [hap] --- src/devices/cpu/e0c6200/e0c6s46.cpp | 28 +++++++++++++++++++++------- src/devices/cpu/e0c6200/e0c6s46.h | 11 ++++++++--- src/mame/bandai/tamag1.cpp | 6 +++--- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp index 0ef710efe8e1f..6ce0dac9593ce 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.cpp +++ b/src/devices/cpu/e0c6200/e0c6s46.cpp @@ -7,7 +7,7 @@ TODO: - OSC3 - - K input interrupts + - K input interrupt can trigger if input is active while writing to the mask register - finish i/o ports - serial interface - buzzer envelope addition @@ -53,6 +53,7 @@ e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, d m_vram(*this, "vram%u", 1U), m_write_segs(*this), m_write_contrast(*this), + m_pixel_cb(*this), m_write_r(*this), m_read_p(*this, 0), m_write_p(*this) @@ -78,6 +79,8 @@ void e0c6s46_device::device_start() m_lcd_driver = timer_alloc(FUNC(e0c6s46_device::lcd_driver_cb), this); m_lcd_driver->adjust(attotime::from_ticks(1024, unscaled_clock())); + m_pixel_cb.resolve(); + const u32 render_buf_size = m_vram[0].bytes() * 2 * 4; m_render_buf = make_unique_clear(render_buf_size); save_pointer(NAME(m_render_buf), render_buf_size); @@ -274,7 +277,17 @@ void e0c6s46_device::execute_set_input(int line, int state) int port = line >> 2 & 1; u8 bit = 1 << (line & 3); + u8 prev = m_port_k[port]; m_port_k[port] = (m_port_k[port] & ~bit) | (state ? bit : 0); + + // set interrupt on falling/rising edge of input + u8 dfk = (port == 0) ? m_dfk0 : 0xf; + u8 edge = ~(prev ^ dfk) & (m_port_k[port] ^ dfk) & bit; + if (m_irqmask[IRQREG_INPUT0 + port] & edge) + { + m_irqflag[IRQREG_INPUT0 + port] |= edge; + m_possible_irq = true; + } } @@ -597,13 +610,14 @@ u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c { for (int y = 0; y < 16; y++) { - int sx = x; - int sy = y; - //int sx = y | (x / 20) << 4; - //int sy = x % 20; + int dx = x; + int dy = y; + + if (!m_pixel_cb.isnull()) + m_pixel_cb(dx, dy); - if (cliprect.contains(sx, sy)) - bitmap.pix(sy, sx) = src[y * width + x]; + if (cliprect.contains(dx, dy)) + bitmap.pix(dy, dx) = src[y * width + x]; } } diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index 9f1b14dc0cd1b..70b64f14a2cf4 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -45,7 +45,7 @@ enum class e0c6s46_device : public e0c6200_cpu_device { public: - typedef device_delegate pixel_update_delegate; + using pixel_delegate = device_delegate; e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); @@ -62,8 +62,11 @@ class e0c6s46_device : public e0c6200_cpu_device // LCD contrast (adjusts VL pins overall voltage level) auto write_contrast() { return m_write_contrast.bind(); } + // screen update (optional) const u8 *lcd_buffer() { return &m_render_buf[0]; } // get intermediate LCD pixel buffer - u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); // optional + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + template void set_pixel_callback(T &&... args) { m_pixel_cb.set(std::forward(args)...); } // transform pixel x/y protected: // device-level overrides @@ -92,13 +95,15 @@ class e0c6s46_device : public e0c6200_cpu_device // lcd driver u8 m_lcd_control; u8 m_lcd_contrast; - std::unique_ptr m_render_buf; devcb_write8 m_write_segs; devcb_write8 m_write_contrast; emu_timer *m_lcd_driver; TIMER_CALLBACK_MEMBER(lcd_driver_cb); + std::unique_ptr m_render_buf; + pixel_delegate m_pixel_cb; + // i/o ports devcb_write8::array<5> m_write_r; devcb_read8::array<4> m_read_p; diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp index 5cf6e0c35f8c3..afaf27b882564 100644 --- a/src/mame/bandai/tamag1.cpp +++ b/src/mame/bandai/tamag1.cpp @@ -48,6 +48,7 @@ class tamag1_state : public driver_device private: void lcd_segment_w(offs_t offset, u8 data) { m_out_x[offset & 0xf][offset >> 4] = data; } + void pixel_callback(int &dx, int &dy) { int x = dx; dx = dy | (dx / 20) << 4; dy = x % 20; } required_device m_maincpu; output_finder<16, 40> m_out_x; @@ -122,7 +123,6 @@ void tamag1_state::alienfev(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); - m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); // video hardware @@ -145,7 +145,7 @@ void tamag1_state::venusdm(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); - m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); + m_maincpu->set_pixel_callback(FUNC(tamag1_state::pixel_callback)); m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); // video hardware @@ -202,4 +202,4 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) SYST( 1997, alienfev, 0, 0, alienfev, alienfev, tamag1_state, empty_init, "Epoch", "Chibi Pachi Alien Fever", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -SYST( 1997, venusdm, 0, 0, venusdm, venusdm, tamag1_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +SYST( 1997, venusdm, 0, 0, venusdm, venusdm, tamag1_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE ) From 6b898215a56732348e0b477c8505458da8bc83ca Mon Sep 17 00:00:00 2001 From: AJR Date: Mon, 23 Dec 2024 16:46:18 -0500 Subject: [PATCH 23/39] formats/fs_vtech.cpp: Fixes and improvements - Fix incorrect directory sector offset value for file read/write operations - Allow file types other than T and B --- src/lib/formats/fs_vtech.cpp | 22 ++++++++++++---------- src/lib/formats/fsmeta.cpp | 1 - src/lib/formats/fsmeta.h | 1 - 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/lib/formats/fs_vtech.cpp b/src/lib/formats/fs_vtech.cpp index 27e7f93a0566e..03ceffbab5bf2 100644 --- a/src/lib/formats/fs_vtech.cpp +++ b/src/lib/formats/fs_vtech.cpp @@ -114,7 +114,9 @@ std::vector vtech_image::file_meta_description() const res.emplace_back(meta_description(meta_name::name, "", false, [](const meta_value &m) { return m.as_string().size() <= 8; }, "File name, 8 chars")); res.emplace_back(meta_description(meta_name::loading_address, 0x7ae9, false, [](const meta_value &m) { return m.as_number() < 0x10000; }, "Loading address of the file")); res.emplace_back(meta_description(meta_name::length, 0, true, nullptr, "Size of the file in bytes")); - res.emplace_back(meta_description(meta_name::basic, true, true, nullptr, "Basic file")); + res.emplace_back(meta_description(meta_name::file_type, "T", true, + [](const meta_value &m) { return m.as_string().size() == 1 && m.as_string()[0] >= 'A' && m.as_string()[0] <= 'Z'; }, + "File type (e.g. T = text, B = binary)")); return res; } @@ -143,7 +145,7 @@ meta_data vtech_impl::file_metadata(const u8 *entry) meta_data res; res.set(meta_name::name, trim_end_spaces(rstr(entry+2, 8))); - res.set(meta_name::basic, entry[0] == 'T'); + res.set(meta_name::file_type, std::string{ char(entry[0]) }); res.set(meta_name::loading_address, get_u16le(entry + 0xc)); res.set(meta_name::length, ((get_u16le(entry + 0xe) - get_u16le(entry + 0xc) + 1) & 0xffff)); @@ -157,12 +159,12 @@ std::tuple vtech_impl::file_find(std::string_view name) for(u32 i = 0; i != 8; i ++) { u32 off = i*16; u8 type = bdir.r8(off); - if(type != 'T' && type != 'B') + if(type < 'A' || type > 'Z') continue; if(bdir.r8(off+1) != ':') continue; if(trim_end_spaces(bdir.rstr(off+2, 8)) == name) { - return std::make_tuple(bdir, i); + return std::make_tuple(bdir, off); } } } @@ -187,12 +189,12 @@ err_t vtech_impl::metadata_change(const std::vector &path, const me return ERR_NOT_FOUND; auto [bdir, off] = file_find(path[0]); - if(!off) + if(off == 0xffffffff) return ERR_NOT_FOUND; u8 *entry = bdir.data() + off; - if(meta.has(meta_name::basic)) - entry[0x0] = meta.get_flag(meta_name::basic) ? 'T' : 'B'; + if(meta.has(meta_name::file_type)) + entry[0x0] = meta.get_string(meta_name::file_type)[0]; if(meta.has(meta_name::name)) { std::string name = meta.get_string(meta_name::name); name.resize(8, ' '); @@ -224,7 +226,7 @@ std::pair> vtech_impl::directory_contents(const st for(u32 i = 0; i != 8; i ++) { u32 off = i*16; u8 type = bdir.r8(off); - if(type != 'T' && type != 'B') + if(type < 'A' || type > 'Z') continue; if(bdir.r8(off+1) != ':') continue; @@ -241,7 +243,7 @@ err_t vtech_impl::rename(const std::vector &opath, const std::vecto return ERR_NOT_FOUND; auto [bdir, off] = file_find(opath[0]); - if(!off) + if(off == 0xffffffff) return ERR_NOT_FOUND; std::string name = npath[0]; @@ -272,7 +274,7 @@ err_t vtech_impl::file_create(const std::vector &path, const meta_d std::string fname = meta.get_string(meta_name::name, ""); fname.resize(8, ' '); - bdir.w8 (off+0x0, meta.get_flag(meta_name::basic, true) ? 'T' : 'B'); + bdir.w8 (off+0x0, meta.get_string(meta_name::file_type, "T")[0]); bdir.w8 (off+0x1, ':'); bdir.wstr(off+0x2, fname); bdir.w8 (off+0xa, 0x00); diff --git a/src/lib/formats/fsmeta.cpp b/src/lib/formats/fsmeta.cpp index f3e91e706a0c4..3c731f21939ea 100644 --- a/src/lib/formats/fsmeta.cpp +++ b/src/lib/formats/fsmeta.cpp @@ -14,7 +14,6 @@ namespace fs { const char *meta_data::entry_name(meta_name name) { switch(name) { - case meta_name::basic: return "basic"; case meta_name::creation_date: return "creation_date"; case meta_name::length: return "length"; case meta_name::loading_address: return "loading_address"; diff --git a/src/lib/formats/fsmeta.h b/src/lib/formats/fsmeta.h index 0f6baf2013334..ff0b505ab8bc8 100644 --- a/src/lib/formats/fsmeta.h +++ b/src/lib/formats/fsmeta.h @@ -21,7 +21,6 @@ namespace fs { enum class meta_name { - basic, creation_date, length, loading_address, From 06069b4a07f5419de6a50558e285c8d900230d6e Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 23 Dec 2024 23:46:32 +0100 Subject: [PATCH 24/39] e0c6s46: add osc3 Systems promoted to working --------------------------- Chibi Pachi: Alien Fever [hap] --- src/devices/cpu/e0c6200/e0c6s46.cpp | 25 +++++++++++++++---------- src/devices/cpu/e0c6200/e0c6s46.h | 5 +++++ src/mame/bandai/tamag1.cpp | 7 ++++--- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp index 6ce0dac9593ce..8b92eab28ea57 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.cpp +++ b/src/devices/cpu/e0c6200/e0c6s46.cpp @@ -6,11 +6,11 @@ QFP5-128pin, see manual for pinout TODO: - - OSC3 - - K input interrupt can trigger if input is active while writing to the mask register - finish i/o ports - serial interface - buzzer envelope addition + - what happens if OSC3 is selected while OSCC (bit 2) is low? + - K input interrupt can trigger if input is active while writing to the mask register - add mask options for ports (eg. buzzer on output port R4x is optional) */ @@ -51,6 +51,7 @@ void e0c6s46_device::e0c6s46_data(address_map &map) e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : e0c6200_cpu_device(mconfig, E0C6S46, tag, owner, clock, address_map_constructor(FUNC(e0c6s46_device::e0c6s46_program), this), address_map_constructor(FUNC(e0c6s46_device::e0c6s46_data), this)), m_vram(*this, "vram%u", 1U), + m_osc3(0), m_write_segs(*this), m_write_contrast(*this), m_pixel_cb(*this), @@ -70,14 +71,18 @@ void e0c6s46_device::device_start() e0c6200_cpu_device::device_start(); // misc init + m_osc1 = clock(); + if (m_osc3 == 0) + m_osc3 = m_osc1; + m_core_256_handle = timer_alloc(FUNC(e0c6s46_device::core_256_cb), this); - m_core_256_handle->adjust(attotime::from_ticks(64, unscaled_clock())); + m_core_256_handle->adjust(attotime::from_ticks(64, m_osc1)); m_prgtimer_handle = timer_alloc(FUNC(e0c6s46_device::prgtimer_cb), this); m_prgtimer_handle->adjust(attotime::never); m_buzzer_handle = timer_alloc(FUNC(e0c6s46_device::buzzer_cb), this); m_buzzer_handle->adjust(attotime::never); m_lcd_driver = timer_alloc(FUNC(e0c6s46_device::lcd_driver_cb), this); - m_lcd_driver->adjust(attotime::from_ticks(1024, unscaled_clock())); + m_lcd_driver->adjust(attotime::from_ticks(1024, m_osc1)); m_pixel_cb.resolve(); @@ -372,7 +377,7 @@ TIMER_CALLBACK_MEMBER(e0c6s46_device::core_256_cb) // clock-timer, stopwatch timer, and some features of the buzzer all run // from the same internal 256hz timer (64 ticks high+low at default clock of 32768hz) m_256_src_pulse ^= 1; - m_core_256_handle->adjust(attotime::from_ticks(64, unscaled_clock())); + m_core_256_handle->adjust(attotime::from_ticks(64, m_osc1)); // clock stopwatch on falling edge of pulse+on m_swl_cur_pulse = m_256_src_pulse | (m_stopwatch_on ^ 1); @@ -482,7 +487,7 @@ bool e0c6s46_device::prgtimer_reset_prescaler() // only 2 to 7 are clock dividers u8 sel = m_prgtimer_select & 7; if (sel >= 2) - m_prgtimer_handle->adjust(attotime::from_ticks(2 << (sel ^ 7), unscaled_clock())); + m_prgtimer_handle->adjust(attotime::from_ticks(2 << (sel ^ 7), m_osc1)); return (sel >= 2); } @@ -520,7 +525,7 @@ void e0c6s46_device::schedule_buzzer() high -= m_bz_duty_ratio; low -= high; - m_buzzer_handle->adjust(attotime::from_ticks(m_bz_pulse ? high : low, mul * unscaled_clock())); + m_buzzer_handle->adjust(attotime::from_ticks(m_bz_pulse ? high : low, mul * m_osc1)); } TIMER_CALLBACK_MEMBER(e0c6s46_device::buzzer_cb) @@ -598,7 +603,7 @@ TIMER_CALLBACK_MEMBER(e0c6s46_device::lcd_driver_cb) } } - m_lcd_driver->adjust(attotime::from_ticks(1024, unscaled_clock())); + m_lcd_driver->adjust(attotime::from_ticks(1024, m_osc1)); } u32 e0c6s46_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -784,8 +789,8 @@ void e0c6s46_device::io_w(offs_t offset, u8 data) // d0,d1: CPU operating voltage // d2: OSC3 on (high freq) // d3: clock source OSC1 or OSC3 - if (data & 8) - logerror("io_w selected OSC3! PC=$%04X\n", m_prev_pc); + if ((m_osc ^ data) & 8) + set_clock((data & 8) ? m_osc3 : m_osc1); m_osc = data; break; diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index 70b64f14a2cf4..d836109c6ef96 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -68,6 +68,9 @@ class e0c6s46_device : public e0c6200_cpu_device template void set_pixel_callback(T &&... args) { m_pixel_cb.set(std::forward(args)...); } // transform pixel x/y + // OSC3 (set fast oscillator, via resistor) + void set_osc3(u32 osc) { m_osc3 = osc; } + protected: // device-level overrides virtual void device_start() override ATTR_COLD; @@ -90,6 +93,8 @@ class e0c6s46_device : public e0c6200_cpu_device u8 m_irqflag[6]; u8 m_irqmask[6]; u8 m_osc; + u32 m_osc1; + u32 m_osc3; u8 m_svd; // lcd driver diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp index afaf27b882564..e03e6aade5b31 100644 --- a/src/mame/bandai/tamag1.cpp +++ b/src/mame/bandai/tamag1.cpp @@ -105,8 +105,8 @@ void tamag1_state::tama(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); - m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); @@ -124,6 +124,7 @@ void tamag1_state::alienfev(machine_config &config) // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + m_maincpu->set_osc3(1'000'000); // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); @@ -145,8 +146,8 @@ void tamag1_state::venusdm(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); - m_maincpu->set_pixel_callback(FUNC(tamag1_state::pixel_callback)); m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + m_maincpu->set_pixel_callback(FUNC(tamag1_state::pixel_callback)); // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); @@ -201,5 +202,5 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -SYST( 1997, alienfev, 0, 0, alienfev, alienfev, tamag1_state, empty_init, "Epoch", "Chibi Pachi Alien Fever", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) +SYST( 1997, alienfev, 0, 0, alienfev, alienfev, tamag1_state, empty_init, "Epoch", "Chibi Pachi: Alien Fever", MACHINE_SUPPORTS_SAVE ) SYST( 1997, venusdm, 0, 0, venusdm, venusdm, tamag1_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE ) From 36db9effad96e7caa2c303a82ec5f78e945d4380 Mon Sep 17 00:00:00 2001 From: arbee Date: Mon, 23 Dec 2024 18:53:44 -0500 Subject: [PATCH 25/39] apple/apple2video.cpp: Don't try and do double-hires or lores on a 64K system. (Github #13111) [R. Belmont, tomcw] --- src/mame/apple/apple2video.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mame/apple/apple2video.cpp b/src/mame/apple/apple2video.cpp index c3a735b17abd6..8f9ee6c67bdfc 100644 --- a/src/mame/apple/apple2video.cpp +++ b/src/mame/apple/apple2video.cpp @@ -971,7 +971,7 @@ uint32_t a2_video_device::screen_update(screen_device &screen, bitmap_ind16 &bit if (m_hires) { - if ((Model == model::IIE || Model == model::IIGS) && m_dhires && m_80col) + if ((Model == model::IIE || Model == model::IIGS) && m_dhires && m_80col && m_aux_ptr) { dhgr_update(screen, bitmap, cliprect, 0, text_start_row - 1); } @@ -982,7 +982,7 @@ uint32_t a2_video_device::screen_update(screen_device &screen, bitmap_ind16 &bit } else // lo-res { - if ((Model == model::IIE || Model == model::IIGS) && m_dhires && m_80col) + if ((Model == model::IIE || Model == model::IIGS) && m_dhires && m_80col && m_aux_ptr) { lores_update(screen, bitmap, cliprect, 0, text_start_row - 1); } From b4b332cd135e0f187b603a70ba2b2036e1cf637e Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 24 Dec 2024 02:22:06 +0100 Subject: [PATCH 26/39] New working systems ------------------- Tamagotchi (Gen. 2, Japan) [hap, azya] --- src/mame/bandai/tamag1.cpp | 9 +++++++++ src/mame/mame.lst | 1 + 2 files changed, 10 insertions(+) diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp index e03e6aade5b31..65cca8c382920 100644 --- a/src/mame/bandai/tamag1.cpp +++ b/src/mame/bandai/tamag1.cpp @@ -182,6 +182,14 @@ ROM_START( tama ) ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) ROM_END +ROM_START( tamag2 ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "tamag2.bin", 0x0000, 0x3000, CRC(9f97539e) SHA1(09e5101b37636a314fc599d5d69b4846721b3c88) ) + + ROM_REGION( 139072, "screen", 0) + ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) +ROM_END + ROM_START( alienfev ) ROM_REGION( 0x3000, "maincpu", 0 ) ROM_LOAD( "alienfev.bin", 0x0000, 0x3000, CRC(e561599c) SHA1(7927e198f8989861ba057150e59d1f4ad403c1d2) ) @@ -202,5 +210,6 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +SYST( 1997, tamag2, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (Gen. 2, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) SYST( 1997, alienfev, 0, 0, alienfev, alienfev, tamag1_state, empty_init, "Epoch", "Chibi Pachi: Alien Fever", MACHINE_SUPPORTS_SAVE ) SYST( 1997, venusdm, 0, 0, venusdm, venusdm, tamag1_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 946a010b5a29e..5ab657aef5a66 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -2501,6 +2501,7 @@ sv8000 // Super Vision 8000 @source:bandai/tamag1.cpp alienfev // Epoch tama // Bandai +tamag2 // Bandai venusdm // Nikko @source:bandai/wswan.cpp From ceccd8d9dc04b334285e7885ac16d21b9a409eea Mon Sep 17 00:00:00 2001 From: AJR Date: Mon, 23 Dec 2024 22:44:11 -0500 Subject: [PATCH 27/39] formats/vt_dsk.cpp: Recognize .dvz extension --- src/lib/formats/vt_dsk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/formats/vt_dsk.cpp b/src/lib/formats/vt_dsk.cpp index 00284d2bd9e47..da7e450b67382 100644 --- a/src/lib/formats/vt_dsk.cpp +++ b/src/lib/formats/vt_dsk.cpp @@ -224,7 +224,7 @@ const char *vtech_dsk_format::description() const noexcept const char *vtech_dsk_format::extensions() const noexcept { - return "dsk"; + return "dsk,dvz"; } int vtech_bin_format::identify(util::random_read &io, uint32_t form_factor, const std::vector &variants) const From ae99363432aa4c230c7b6ef098cc9812115a6864 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 24 Dec 2024 09:19:39 +0100 Subject: [PATCH 28/39] New systems marked not working ------------------------------ Beetlemania (Atronic) [Brian Troha, Heihachi_73] Chickendales (Atronic) [Brian Troha, Heihachi_73] Happy Happy Hippy (Atronic) [Brian Troha, Heihachi_73] Typhoon Lagoon [Brian Troha, Heihachi_73] New clones marked not working ----------------------------- Atronic SetUp/Clear Chips [Brian Troha, Heihachi_73] Babooshka (Atronic) [Brian Troha, Heihachi_73] Dream Maker (Atronic) [Brian Troha, Heihachi_73] I C Money (Atronic) (set 2) [Brian Troha, Heihachi_73] Sphinx II (Atronic) [Brian Troha, Heihachi_73] - atari/*flyball*, misc/triviaquiz.cpp: renounced copyright --- src/mame/atari/flyball.cpp | 2 +- src/mame/atari/nl_flyball.cpp | 2 +- src/mame/atari/nl_flyball.h | 2 +- src/mame/igs/goldstar.cpp | 4 +- src/mame/mame.lst | 19 +- src/mame/misc/atronic.cpp | 1214 ++++++++++++++++++++------------- src/mame/misc/triviaquiz.cpp | 2 +- 7 files changed, 753 insertions(+), 492 deletions(-) diff --git a/src/mame/atari/flyball.cpp b/src/mame/atari/flyball.cpp index 70aa8ea5993ea..c334896ea2c20 100644 --- a/src/mame/atari/flyball.cpp +++ b/src/mame/atari/flyball.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Stefan Jokisch, Ivan Vangelista, Ryan Holtz +// copyright-holders:Stefan Jokisch, Ryan Holtz /*************************************************************************** Atari Flyball Driver diff --git a/src/mame/atari/nl_flyball.cpp b/src/mame/atari/nl_flyball.cpp index 416f55ca20574..86e020ba3aa7b 100644 --- a/src/mame/atari/nl_flyball.cpp +++ b/src/mame/atari/nl_flyball.cpp @@ -1,5 +1,5 @@ // license:CC0-1.0 -// copyright-holders:Ryan Holtz, Ivan Vangelista +// copyright-holders:Ryan Holtz // // Netlist for Atari's Flyball // diff --git a/src/mame/atari/nl_flyball.h b/src/mame/atari/nl_flyball.h index 816bb44852dc6..a3dbd4d82abd0 100644 --- a/src/mame/atari/nl_flyball.h +++ b/src/mame/atari/nl_flyball.h @@ -1,5 +1,5 @@ // license:CC0-1.0 -// copyright-holders:Ivan Vangelista, Ryan Holtz +// copyright-holders:Ryan Holtz #ifndef MAME_ATARI_NL_FLYBALL_H #define MAME_ATARI_NL_FLYBALL_H diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp index 39f119d97e76e..e1b3bd05a0f63 100644 --- a/src/mame/igs/goldstar.cpp +++ b/src/mame/igs/goldstar.cpp @@ -14576,13 +14576,13 @@ ROM_START( lucky8n ) ROM_LOAD( "g13", 0x00, 0x20, BAD_DUMP CRC(6df3f972) SHA1(0096a7f7452b70cac6c0752cb62e24b643015b5c) ) ROM_END -// only the subboard available (Z80, ROM, 2 stickered chips, 2 banks of 8 DIP switches (marked SW5 and SW6) and a rotary switch (SW7)) +// only the subboard available (Z80, ROM, 2 stickered chips (sanded), 2 banks of 8 DIP switches (marked SW5 and SW6) and a rotary switch (SW7)) // very professional-looking subboard marked Excel Planning // needs correct GFX ROMs / color PROMs (using the ones from wcat3, for now) ROM_START( wcat ) ROM_REGION( 0x20000, "maincpu", 0 ) ROM_LOAD( "y8.u1.sub", 0x00000, 0x20000, CRC(49e11ff4) SHA1(ce421f85b298c2e9c335fdbf0547a355ae29f1a6) ) - ROM_FILL( 0x1c000, 0x1000, 0xc9 ) // jumps in this area multiple times, but nothing there. Something to do with the 2 stickered chips? + ROM_FILL( 0x1c000, 0x1000, 0xc9 ) // jumps in this area multiple times, but nothing here. Something to do with the 2 stickered chips? ROM_REGION( 0x18000, "gfx1", 0 ) ROM_LOAD( "wcat3.h7", 0x10000, 0x8000, BAD_DUMP CRC(065cb575) SHA1(4dd49773c4caeaa489342e61f26c8eaaae876edc) ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 5ab657aef5a66..24361f8232c81 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -29184,9 +29184,16 @@ abigchs // Big Cheese aclown // Clown atlantca // Atlantica atlantcaa // +atrbonpk // Bonus Poker +atrbtlma // Beetlemania +atricmon // I C Money +atricmona // atronic // atronica // -baboshka // Baboshka +atronicb // +atrwild // Wild Thing +baboshka // Babooshka +baboshkar // beachpt // Beach Patrol bearnec // Bear Necessities beetleup // Beetles Unplugged @@ -29196,21 +29203,23 @@ castawaya // cfblue // Crazy Fruits Blue cfbluea // cfgreen // Crazy Fruits Green +chicdale // Chickendales chicken // Chicken dncsprt // Dancing Spirit drmmake // Dream Maker +drmmaker // goldcity // Gold City goldglen // Golden Glenn +haphippy // Happy Happy Hippy iccash // I C Cash jumpjkpt // Jumping Jackpots mushmagi // Mushroom Magic santam // Santa Maria -shpinxii // Sphinx II +sphinxii // Sphinx II +sphinxiir // splmastr // Spell Master tajmah // Tajmahal -atrwild -atricmon -atrbonpk +tylagoon // Typhoon Lagoon @source:misc/attckufo.cpp attckufo // (c) 1980 Ryoto Electric Co. diff --git a/src/mame/misc/atronic.cpp b/src/mame/misc/atronic.cpp index 6ab24871532fb..d850771bfcdcc 100644 --- a/src/mame/misc/atronic.cpp +++ b/src/mame/misc/atronic.cpp @@ -1,6 +1,7 @@ // license:BSD-3-Clause // copyright-holders:David Haywood -/* Atronic Video Fruit Machines */ + +// Atronic Video Slot Machines /* From 1999? (documentation is dated August 99) @@ -134,7 +135,7 @@ KKC - King Kong Cash, DDTE - ??): There was PC software with these too, I think they're meant to connect to a PC for configuration? I've put what there was in an ISO, and converted it to a CHD for later inspection. - Some of these are probably bad dumps (the ones with strange sized roms, castawaya, tajmahal, maybe magimush) + Some of these are probably bad dumps (the ones with strange sized ROMs, castawaya, tajmahal, maybe magimush) Anybody is welcome to try and figure out what this is. @@ -436,14 +437,17 @@ Markings bottom: 6 470.5020 00.07 */ #include "emu.h" -#include "cpu/z180/z180.h" + #include "cpu/tms34010/tms34010.h" +#include "cpu/z180/z180.h" #include "machine/ds1386.h" #include "machine/pcf8584.h" #include "machine/z80scc.h" +#include "video/ramdac.h" + #include "emupal.h" #include "screen.h" -#include "video/ramdac.h" + namespace { @@ -463,6 +467,14 @@ class atronic_state : public driver_device void atronic(machine_config &config); private: + required_device m_screen; + required_device m_palette; + required_device m_maincpu; + required_device m_videocpu; + required_device m_ramdac; + + required_shared_ptr m_vidram; + [[maybe_unused]] u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); u8 serial_r(); @@ -475,22 +487,13 @@ class atronic_state : public driver_device void ramdac_map(address_map &map) ATTR_COLD; - // devices - required_device m_screen; - required_device m_palette; - required_device m_maincpu; - required_device m_videocpu; - required_device m_ramdac; - - required_shared_ptr m_vidram; - TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg); TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg); TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline_update); }; -u32 atronic_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ) +u32 atronic_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { return 0; } @@ -546,7 +549,7 @@ TMS340X0_FROM_SHIFTREG_CB_MEMBER(atronic_state::from_shiftreg) TMS340X0_SCANLINE_RGB32_CB_MEMBER(atronic_state::scanline_update) { uint32_t fulladdr = ((params->rowaddr << 16) | params->coladdr) >> 5; - uint32_t const *const bg0_base = &m_vidram[(fulladdr & 0x7fe00)]; // this probably isn't screen ram, but some temp gfx are copied on startup + uint32_t const *const bg0_base = &m_vidram[(fulladdr & 0x7fe00)]; // this probably isn't screen RAM, but some temp gfx are copied on startup uint32_t *const dst = &bitmap.pix(scanline); int coladdr = fulladdr & 0x1ff; const pen_t *pens = m_palette->pens(); @@ -573,9 +576,6 @@ void atronic_state::video_map(address_map &map) } -#define VIDEO_CLOCK XTAL(40'000'000) -#define PIXEL_CLOCK XTAL(25'000'000) - // CPU BOARD // OSC1: 18.432MHz @@ -590,7 +590,7 @@ void atronic_state::ramdac_map(address_map &map) void atronic_state::atronic(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware Z80180(config, m_maincpu, 18.432_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &atronic_state::atronic_map); m_maincpu->set_addrmap(AS_IO, &atronic_state::atronic_portmap); @@ -603,17 +603,17 @@ void atronic_state::atronic(machine_config &config) SCC85C30(config, "scc", 5000000); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(VIDEO_CLOCK/2, 640, 0, 512, 257, 0, 224); // ?? + m_screen->set_raw(40_MHz_XTAL / 2, 640, 0, 512, 257, 0, 224); // ?? m_screen->set_screen_update("tms", FUNC(tms34020_device::tms340x0_rgb32)); PALETTE(config, "palette").set_entries(256); RAMDAC(config, m_ramdac, 0, m_palette); m_ramdac->set_addrmap(0, &atronic_state::ramdac_map); - TMS34020(config, m_videocpu, VIDEO_CLOCK); + TMS34020(config, m_videocpu, 40_MHz_XTAL); m_videocpu->set_addrmap(AS_PROGRAM, &atronic_state::video_map); m_videocpu->set_halt_on_reset(false); - m_videocpu->set_pixel_clock(PIXEL_CLOCK/4); + m_videocpu->set_pixel_clock(25_MHz_XTAL / 4); m_videocpu->set_pixels_per_clock(4); m_videocpu->set_scanline_rgb32_callback(FUNC(atronic_state::scanline_update)); m_videocpu->set_shiftreg_in_callback(FUNC(atronic_state::to_shiftreg)); @@ -622,42 +622,63 @@ void atronic_state::atronic(machine_config &config) ROM_START( atronic ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "atronic u2.bin", 0x0000, 0x080000, CRC(ddcfa9ed) SHA1(008ffaf56ccdb3eb60fa5a0ad2f14d1988c2fa5a) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "atronic u2.bin", 0x000000, 0x080000, CRC(ddcfa9ed) SHA1(008ffaf56ccdb3eb60fa5a0ad2f14d1988c2fa5a) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "atronic u6.bin", 0x0000, 0x020000, CRC(9742b2d8) SHA1(9f5851c78f92055730b834de18f8dc7bd9b29a37) ) + ROM_LOAD( "atronic u6.bin", 0x000000, 0x020000, CRC(9742b2d8) SHA1(9f5851c78f92055730b834de18f8dc7bd9b29a37) ) // VERSION=CK-RDW_-A-C - ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) // TMS34020APCM-40 code (34020) ROM_REGION( 0x400000, "u18u21",ROMREGION_ERASE00 ) // sound ROM_REGION( 0x400000, "pals",ROMREGION_ERASE00 ) // pal (converted from JED) - DISK_REGION( "cdrom" ) // some kind of PC based utlities for these games.. + DISK_REGION( "cdrom" ) // some kind of PC based utilities for these games.. DISK_IMAGE_READONLY_OPTIONAL( "atronic", 0,SHA1(3335e9f8f67f1b176e043f078456d2b13178b7ef) ) ROM_END + ROM_START( atronica ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "atronic u2.bin", 0x0000, 0x080000, CRC(ddcfa9ed) SHA1(008ffaf56ccdb3eb60fa5a0ad2f14d1988c2fa5a) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "atronic u2.bin", 0x000000, 0x080000, CRC(ddcfa9ed) SHA1(008ffaf56ccdb3eb60fa5a0ad2f14d1988c2fa5a) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "atronic u6 std.bin", 0x0000, 0x020000, CRC(9ef7ae79) SHA1(3ed0ea056b23cee8829421c2369ff869b370ee80) ) + ROM_LOAD( "atronic u6 std.bin", 0x000000, 0x020000, CRC(9ef7ae79) SHA1(3ed0ea056b23cee8829421c2369ff869b370ee80) ) // VERSION=CK-STD-A-A-STD_ - ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) // TMS34020APCM-40 code (34020) ROM_REGION( 0x400000, "u18u21",ROMREGION_ERASE00 ) // sound ROM_REGION( 0x400000, "pals",ROMREGION_ERASE00 ) // pal (converted from JED) ROM_END +ROM_START( atronicb ) // assortment of setchips and config chips, needs verification + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "atronic reset cl", 0x000000, 0x080000, CRC(b6fc07c6) SHA1(9921cf9d9e95034d0353e9e72e4879449a261e21) ) + ROM_LOAD( "demo mode 4meg", 0x000000, 0x080000, CRC(79c31e59) SHA1(9e0f2ea4e8a6bce9840a70608bd4db2edbd01ef7) ) + ROM_LOAD( "masterreset.040", 0x000000, 0x080000, CRC(e6e58b97) SHA1(3250211255a280ff018e6c5912878d01fa3cfaff) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "atronic config key cl u2", 0x000000, 0x020000, CRC(062a7ee9) SHA1(562df047fcba0b9e2a26c7935cef5dade5b3f946) ) // VERSION=CK-ARI_-A-B + ROM_LOAD( "atronic ram clear", 0x000000, 0x020000, CRC(61fe0ce0) SHA1(682d4a99f777f7b7dd77fcc739a1f752ed602aa1) ) + ROM_LOAD( "u6 ck-rdw_-a-a", 0x000000, 0x020000, CRC(edff62cb) SHA1(9be8351e32f3e095abc0f304fe1609770890b833) ) // VERSION=CK-RDW_-A-A + ROM_LOAD( "u6 ck-rdw_-a-b", 0x000000, 0x020000, CRC(15bd42ec) SHA1(ff0bb157bf5d477befc71de11ff2a866cdbaecdf) ) // VERSION=CK-RDW_-A-B + + ROM_REGION32_LE( 0x800000, "user1", ROMREGION_ERASE00 ) // TMS34020APCM-40 code (34020) + ROM_REGION( 0x400000, "u18u21",ROMREGION_ERASE00 ) // sound + + ROM_REGION( 0x400000, "pals",ROMREGION_ERASE00 ) // pal (converted from JED) + ROM_LOAD( "galu35.bin", 0x000000, 0x0002e5, CRC(c81159c9) SHA1(36222e0a72310986fd4a76c0677a6bd74a0ad7df) ) +ROM_END + +// Atlantica (Russia) (set 1) ROM_START( atlantca ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2.8 o-atla01-abaaa-ca-rus", 0x0000, 0x100000, CRC(c3f2aa47) SHA1(eda0088bfaea7a9a341dd63ae587c989742c6630) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2.8 o-atla01-abaaa-ca-rus", 0x000000, 0x100000, CRC(c3f2aa47) SHA1(eda0088bfaea7a9a341dd63ae587c989742c6630) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6.1 atla01-a-zb-std-5-xx-xx-axx", 0x0000, 0x020000, CRC(5d09a4bf) SHA1(94aea5396a968ff659ac9e2f4879262c55eba2fe) ) + ROM_LOAD( "u6.1 atla01-a-zb-std-5-xx-xx-axx", 0x000000, 0x020000, CRC(5d09a4bf) SHA1(94aea5396a968ff659ac9e2f4879262c55eba2fe) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "u9.8 atla01-a-e-std-5", 0x000000, 0x100000, CRC(7f8210fa) SHA1(f71faee0d606c6aa06287f6ea31f41727e2a22d9) ) ROM_LOAD32_BYTE( "u11.8 atla01-a-e-std-5", 0x000001, 0x100000, CRC(af648717) SHA1(8ab57dc9962ed47a8beb03dcfc686c57de326793) ) ROM_LOAD32_BYTE( "u13.8 atla01-a-e-std-5", 0x000002, 0x100000, CRC(6e89bf2b) SHA1(0c3346a5da6c67bf2ef38cf657860dccb03a0461) ) @@ -674,18 +695,19 @@ ROM_START( atlantca ) ROM_LOAD( "u21.8 atla01-aa-a-std", 0x300000, 0x100000, CRC(a1bcd0a3) SHA1(0fd66c3bda92cead9457c35ce4b39f97293bb119) ) ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED) - ROM_LOAD( "atlantica.bin", 0x0000, 0x0002dd, CRC(c3fdcd7d) SHA1(b56c859689e44689474142e537951c1cef40e46b) ) + ROM_LOAD( "atlantica.bin", 0x000000, 0x0002dd, CRC(c3fdcd7d) SHA1(b56c859689e44689474142e537951c1cef40e46b) ) ROM_END +// Atlantica (Russia) (set 2) ROM_START( atlantcaa ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(e4553537) SHA1(c61e708511c7790f7d7a7955378b8ceb975c2c55) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(e4553537) SHA1(c61e708511c7790f7d7a7955378b8ceb975c2c55) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6.1 atla01-a-zb-std-5-xx-xx-axx", 0x0000, 0x020000, CRC(5d09a4bf) SHA1(94aea5396a968ff659ac9e2f4879262c55eba2fe) ) + ROM_LOAD( "u6.1 atla01-a-zb-std-5-xx-xx-axx", 0x000000, 0x020000, CRC(5d09a4bf) SHA1(94aea5396a968ff659ac9e2f4879262c55eba2fe) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(1c51f9e1) SHA1(9300c80409f28ba55b94b93a3359fac732262b27) ) ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(b2b1f41f) SHA1(7551c7acc5c6c26b672e4a42d847ec9af79b50fe) ) ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(515820fa) SHA1(2f5def7145b45f8cd63d5463880a548e58e2b2d3) ) @@ -702,19 +724,45 @@ ROM_START( atlantcaa ) ROM_LOAD( "u21.8 atla01-aa-a-std", 0x300000, 0x100000, CRC(a1bcd0a3) SHA1(0fd66c3bda92cead9457c35ce4b39f97293bb119) ) ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED) - ROM_LOAD( "atlantica.bin", 0x0000, 0x0002dd, CRC(c3fdcd7d) SHA1(b56c859689e44689474142e537951c1cef40e46b) ) + ROM_LOAD( "atlantica.bin", 0x000000, 0x0002dd, CRC(c3fdcd7d) SHA1(b56c859689e44689474142e537951c1cef40e46b) ) ROM_END - +// Babooshka ROM_START( baboshka ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(6084ca88) SHA1(608a23b4567271c89ed6a6b9e9a4999699a7b7a0) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "babooshka_u2_1a73.u2", 0x000000, 0x100000, CRC(b49d4c44) SHA1(fe533d6dbff95b4600ea1e68345097e1ae3d418d) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "babooshka_u6_f4ab.u6", 0x000000, 0x020000, CRC(8b0ccfd2) SHA1(abdc59ebddc9e4fc3aa5b723a746de1419f7d6e7) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "babooshka_u9_2830.u9", 0x000000, 0x100000, CRC(bbd0c880) SHA1(d249f701de2639f58aea35f4a19949708fa01f5e) ) + ROM_LOAD32_BYTE( "babooshka_u11_03bb.u11", 0x000001, 0x100000, CRC(3ac1eea2) SHA1(b43a1c93af1b8cfb13e5f9088308676ed17abbcc) ) + ROM_LOAD32_BYTE( "babooshka_u13_ed0c.u13", 0x000002, 0x100000, CRC(ece10619) SHA1(329dd7e64d84cd8d803fb6ec25f7ee4c65d3d1eb) ) + ROM_LOAD32_BYTE( "babooshka_u15_a406.u15", 0x000003, 0x100000, CRC(c5540973) SHA1(23e9faec39fefebc211c15444fdeb940f70344b2) ) + ROM_LOAD32_BYTE( "babooshka_u8_15d7.u8", 0x400000, 0x100000, CRC(d2bf54a6) SHA1(8226343f81c382190bf8ba38142a474c47b72fe2) ) + ROM_LOAD32_BYTE( "babooshka_u10_4868.u10", 0x400001, 0x100000, CRC(6e78855b) SHA1(1f1cee4ddeb58c854eb6e43191681e3dd7c0e377) ) + ROM_LOAD32_BYTE( "babooshka_u12_7f1b.u12", 0x400002, 0x100000, CRC(404ad088) SHA1(3b8caf927d36fccdbda53450a98cbd1b187094cc) ) + ROM_LOAD32_BYTE( "babooshka_u14_c087.u14", 0x400003, 0x100000, CRC(46a2b520) SHA1(7684672e8775aca8eb586148f1917963ef33dc5c) ) + + ROM_REGION( 0x400000, "u18u21", 0 ) // sound + ROM_LOAD( "babooshka_u18_c845.u18", 0x000000, 0x100000, CRC(d26dfd1b) SHA1(7a1ddd4ac4429908997f14295d445586f2c9a26f) ) + ROM_LOAD( "babooshka_u19_8015.u19", 0x000000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) ) + ROM_LOAD( "babooshka_u20_7bc8.u20", 0x000000, 0x100000, CRC(a030de64) SHA1(fb3d73416e180dfc15c469eca499ee5060482f16) ) + ROM_LOAD( "babooshka_u21_9532.u21", 0x000000, 0x100000, CRC(ef05d889) SHA1(431f3a057aff474221f64a2fdee35ca328db42de) ) +ROM_END + + +// Babooshka (Russia) +ROM_START( baboshkar ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(6084ca88) SHA1(608a23b4567271c89ed6a6b9e9a4999699a7b7a0) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(8b0ccfd2) SHA1(abdc59ebddc9e4fc3aa5b723a746de1419f7d6e7) ) + ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(8b0ccfd2) SHA1(abdc59ebddc9e4fc3aa5b723a746de1419f7d6e7) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(1a5d8a4f) SHA1(ff8160f000ecb032831ef4320b686fdd37c19bc9) ) ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(713e18c9) SHA1(eb14213101c3ee09601bf01000631c3a2509e876) ) ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(dfbc8c2f) SHA1(1ae2dcd572fa5fc31be5cdb7d6de2bced06ff94e) ) @@ -725,359 +773,377 @@ ROM_START( baboshka ) ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(b6343ede) SHA1(d19b2dc79c7b95cf09759709b422fb78008f5c37) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(d26dfd1b) SHA1(7a1ddd4ac4429908997f14295d445586f2c9a26f) ) - ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) ) - ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(a030de64) SHA1(fb3d73416e180dfc15c469eca499ee5060482f16) ) - ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(ef05d889) SHA1(431f3a057aff474221f64a2fdee35ca328db42de) ) + ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(d26dfd1b) SHA1(7a1ddd4ac4429908997f14295d445586f2c9a26f) ) + ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) ) + ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(a030de64) SHA1(fb3d73416e180dfc15c469eca499ee5060482f16) ) + ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(ef05d889) SHA1(431f3a057aff474221f64a2fdee35ca328db42de) ) ROM_END -ROM_START( cfblue ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2.bin", 0x0000, 0x100000, CRC(0b5035d0) SHA1(f77ce0d16da39c259c0f764c23c23d0313166612) ) +// Beach Patrol (Russia) +ROM_START( beachpt ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u02_o_-wave-a-b-cb-rus_.bin", 0x000000, 0x100000, CRC(b26085fc) SHA1(19f350c46088b58438dfc234d4ac543105913286) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6.bin", 0x0000, 0x020000, CRC(63690e7e) SHA1(9dcb3d64bae03556875185ead23d9b911773f5bd) ) + ROM_LOAD( "u06_crp5bs1a.bin", 0x000000, 0x020000, CRC(0db0531d) SHA1(391e41b2dcd38669dcc24e938e9838feee972559) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9.bin", 0x000000, 0x100000, CRC(d1c2ad08) SHA1(e53c7e91b2ab86e64f4ae753404aa86ae881becf) ) - ROM_LOAD32_BYTE( "u11.bin", 0x000001, 0x100000, CRC(42872aef) SHA1(54d7cf6a9f3d5d8b2b14fa381fd7b9db974525e1) ) - ROM_LOAD32_BYTE( "u13.bin", 0x000002, 0x100000, CRC(7da9415b) SHA1(aaa73465417dcf92838021b37cb412d52ccb4d85) ) - ROM_LOAD32_BYTE( "u15.bin", 0x000003, 0x100000, CRC(e0270268) SHA1(6bf5281eb5418903403873547690bdfa04597fea) ) - ROM_LOAD32_BYTE( "u8.bin", 0x400000, 0x100000, CRC(a870d32c) SHA1(0014b9b2a2b35ae8a10ed2910213ccea50f8ba61) ) - ROM_LOAD32_BYTE( "u10.bin", 0x400001, 0x100000, CRC(f99ae371) SHA1(b468a18eb7604f191198aae68e961db97cae0332) ) - ROM_LOAD32_BYTE( "u12.bin", 0x400002, 0x100000, CRC(2b2fcd96) SHA1(ce4a8d1267874e5d615e8b3abbb4d1b16630ae7a) ) - ROM_LOAD32_BYTE( "u14.bin", 0x400003, 0x100000, CRC(d66b735c) SHA1(6c4c1e5b5b21b60e950cf70d2d6ad72d5b22237a) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u09_bep5a01d.bin", 0x000000, 0x100000, CRC(0f4614de) SHA1(2181c552e9a3669fda5e87d0c596d5534d24d4b3) ) + ROM_LOAD32_BYTE( "u11_bep5a01d.bin", 0x000001, 0x100000, CRC(4f8c6fee) SHA1(2b75fe948bddda899969ef4a7663a52dc7b0eb81) ) + ROM_LOAD32_BYTE( "u13_bep5a01d.bin", 0x000002, 0x100000, CRC(ca9a24e5) SHA1(67276f680f3aedf480c54c666f0db1110cd77aee) ) + ROM_LOAD32_BYTE( "u15_bep5a01d.bin", 0x000003, 0x100000, CRC(ac904dc8) SHA1(165f66423a9c9231baa4e8b2e465d7f10f61202d) ) + ROM_LOAD32_BYTE( "u08_bep5a01d.bin", 0x400000, 0x100000, CRC(1f19cba6) SHA1(201975c7b440d2f53439e7383fb49b921015f22c) ) + ROM_LOAD32_BYTE( "u10_bep5a01d.bin", 0x400001, 0x100000, CRC(940bb1b2) SHA1(a57d6e5d3872787ff1821cbc80032269b378ecf0) ) + ROM_LOAD32_BYTE( "u12_bep5a01d.bin", 0x400002, 0x100000, CRC(07851214) SHA1(d088243f11ba51c79796986e99f0aa34d0d697d6) ) + ROM_LOAD32_BYTE( "u14_bep5a01d.bin", 0x400003, 0x100000, CRC(16a5ce9c) SHA1(3551e6eb7ff34f9ea70b7e6e940044ea1b4c59bb) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18.bin", 0x0000, 0x100000, CRC(77d6c103) SHA1(667c4c77eeba3af9c8c772a9ffe2941f8f3df38f) ) - ROM_LOAD( "u19.bin", 0x0000, 0x100000, CRC(36371ef6) SHA1(83a454a71e01962937b23817419fe2e071f077ee) ) - ROM_LOAD( "u20.bin", 0x0000, 0x100000, CRC(d9548179) SHA1(12537373a6a3f79952d2c7c48d41e156fc578902) ) - ROM_LOAD( "u21.bin", 0x0000, 0x100000, CRC(3a620cc6) SHA1(1dced1a40c6b3d734ea463fe58bdd9ee9e3b8822) ) + ROM_LOAD( "u18_bep_aa_a.bin", 0x000000, 0x100000, CRC(a0c6dafd) SHA1(9a09224b2d91cbf4efad5563a7633b973b0e5ce1) ) + ROM_LOAD( "u19_bep_aa_a.bin", 0x000000, 0x100000, CRC(69f1f267) SHA1(4fa837bf285670ed26ed0f0dada5e2a54ca7f142) ) + ROM_LOAD( "u20_bep_aa_a.bin", 0x000000, 0x100000, CRC(3dc030aa) SHA1(f01305fb187ae150b1264e8b72439e638772fbcc) ) + ROM_LOAD( "u21_bep_aa_a.bin", 0x000000, 0x100000, CRC(791c809a) SHA1(68af52cb2032a0c3f76030681baaaac8fb0bf51b) ) ROM_END -ROM_START( cfbluea ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(4ee3805e) SHA1(45d9438a26230f50013feda1b2c68ab2f8d4f419) ) + +// Beetlemania +ROM_START( atrbtlma ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mu2.080", 0x000000, 0x100000, CRC(689901a5) SHA1(be9b1f799c108259d0f5c0e9e423b316bb390baf) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(0db0531d) SHA1(391e41b2dcd38669dcc24e938e9838feee972559) ) - ROM_LOAD( "u6low-10.bin", 0x0000, 0x020000, CRC(3cbad206) SHA1(d2a468d5bfd441b74ef85be088873d1f74d5c66e) ) + ROM_LOAD( "mu6.010", 0x000000, 0x020000, CRC(1912e0df) SHA1(3e864b5535bb24793d491e8ee74973f7612a3308) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(37b3a499) SHA1(eb3252185596dd513d3cce95f3425241ca8513ab) ) - ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(d98b2b1d) SHA1(414d300d113e9737d63efea09b358aeb8eeed7fc) ) - ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(478bb4a5) SHA1(94304fe1477bfc66e8dcf2c2c91226754cb8c32a) ) - ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(cfe9e4d4) SHA1(8cd4aadd885fc5500b0a2c1e41b1f096bd4cd2b5) ) - ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(39670383) SHA1(cd78289377c75497f96dd6b76dc717b2ddc8d9c6) ) - ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(f9d054ae) SHA1(244733f7ee6e82fef5d0245c3fd947d369b296f9) ) - ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(5e95768f) SHA1(ba616bf41a2bb205d366e19e773ee5f0009be212) ) - ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(89aaf76b) SHA1(6e731ba815c20b184e44495dd2231d9ae315a146) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9.080", 0x000000, 0x100000, CRC(d3458270) SHA1(afb17ee1e568f66ac95c17afd3ae403019531caf) ) + ROM_LOAD32_BYTE( "u11.080", 0x000001, 0x100000, CRC(5a1ee58b) SHA1(8fb81a4e4d5bdd3892db33ad044137f2a43f877a) ) + ROM_LOAD32_BYTE( "u13.080", 0x000002, 0x100000, CRC(1948f27c) SHA1(414e6c507513524aa559c6cb2970f3b2d27b72a0) ) + ROM_LOAD32_BYTE( "u15.080", 0x000003, 0x100000, CRC(d1e734d8) SHA1(3b8fd88f9318ce8adc70dce93b20191f61cb0c45) ) + ROM_LOAD32_BYTE( "u8.080", 0x400000, 0x100000, CRC(075df52c) SHA1(4abd6d1080d93306fc4a741501255f56f24bef59) ) + ROM_LOAD32_BYTE( "u10.080", 0x400001, 0x100000, CRC(5eb6d001) SHA1(ae03e247995e83e355b37e477316654d157a15b6) ) + ROM_LOAD32_BYTE( "u12.080", 0x400002, 0x100000, CRC(d6a7df27) SHA1(0798de5f3676d56623933489a777795cd839a348) ) + ROM_LOAD32_BYTE( "u14.080", 0x400003, 0x100000, CRC(8c5a9df5) SHA1(81cfa3a548dc16b2e996b7e416abd43aa6f11e5f) ) - ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(77d6c103) SHA1(667c4c77eeba3af9c8c772a9ffe2941f8f3df38f) ) - ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(36371ef6) SHA1(83a454a71e01962937b23817419fe2e071f077ee) ) - ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(d9548179) SHA1(12537373a6a3f79952d2c7c48d41e156fc578902) ) - ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(3a620cc6) SHA1(1dced1a40c6b3d734ea463fe58bdd9ee9e3b8822) ) + // sound (missing or not needed here) + + ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED) + ROM_LOAD( "galu35.bin", 0x000000, 0x0002e5, CRC(c81159c9) SHA1(36222e0a72310986fd4a76c0677a6bd74a0ad7df) ) ROM_END -ROM_START( cfgreen ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(2afda383) SHA1(8a1d1a780f710119cbf7ee6a53d5de91cfe120c2) ) +// Beetles Unplugged (Russia) +ROM_START( beetleup ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u02_0-beet-a-a-cc.0def.bin", 0x000000, 0x100000, CRC(b5eedf40) SHA1(40a9baac99e9844cef5d3922c853f5e4903a7833) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(3cbad206) SHA1(d2a468d5bfd441b74ef85be088873d1f74d5c66e) ) + ROM_LOAD( "u06_n5b0-a-04-b.65aa.bin", 0x000000, 0x020000, CRC(d68d08e4) SHA1(548577d43f4136cf16266fe6855898a30fa49965) ) + ROM_LOAD( "u06_n5b0-a-05-b.648f.bin", 0x000000, 0x020000, CRC(2d2ff35f) SHA1(97759fbad4b6b30ca8f8ea74da74cfaa433a7fa2) ) + ROM_LOAD( "u06_n5b0-a-06-b.64 56.bin", 0x000000, 0x020000, CRC(7b4a6a97) SHA1(e3d54476730ca34a9f7214219cf991a220e15d5c) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(19a47a1b) SHA1(ae9ad2027fddf96062833345a5e2b9e7101b3380) ) - ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(7d805f07) SHA1(0bb27a702e45d3d660363ac75c0f52f07248d40a) ) - ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(104110dc) SHA1(9322598a94e3c71f546da3b42f137a22fc78a894) ) - ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(c752e5b1) SHA1(98832603529c99d83885a9b72bf30aa5eb1eee93) ) - ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(63e91841) SHA1(a9644b4ed37c2143273e782bd0e85906466c1173) ) - ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(b198a826) SHA1(361f9a055633831f45b148ca5e23cbb9be97c95f) ) - ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(9eb176c4) SHA1(73dea223338235a3ebd224c210df4923dbb01b56) ) - ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(ad654d75) SHA1(31804c2fae178b2614759542cba1af34b82e5f12) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u09_7b88.bin", 0x000000, 0x100000, CRC(8443972b) SHA1(5f2eea84ba18a83502f36eeaa52cff49a1631668) ) + ROM_LOAD32_BYTE( "u11_1957.bin", 0x000001, 0x100000, CRC(36c7e5c5) SHA1(2bad0bb6b363af6a37f5b11c7ca8b3b674df4072) ) + ROM_LOAD32_BYTE( "u13_b661.bin", 0x000002, 0x100000, CRC(0e74726c) SHA1(3103d801a622315877fc09d9c99290b54b266885) ) + ROM_LOAD32_BYTE( "u15_fd57.bin", 0x000003, 0x100000, CRC(9eabc514) SHA1(ed89b068b381ad4e007352bddf3aebe10ebebf4a) ) + ROM_LOAD32_BYTE( "u08_5804.bin", 0x400000, 0x100000, CRC(65a020e3) SHA1(2bb781905338e2d444222095d8430137632fae3d) ) + ROM_LOAD32_BYTE( "u10_647c.bin", 0x400001, 0x100000, CRC(c46c064d) SHA1(6181cf0e1d53f0a79c266b4f87d3b0c32313c593) ) + ROM_LOAD32_BYTE( "u12_07f3.bin", 0x400002, 0x100000, CRC(cefdfdad) SHA1(2032e0942f52d025f8da225c31ca7f7121c7b7f8) ) + ROM_LOAD32_BYTE( "u14_fe27.bin", 0x400003, 0x100000, CRC(50cfd898) SHA1(8b881ae8c60f215bb0f75e14493ee4a0c9f2b364) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(40a74e38) SHA1(6ea3458c449434353bbc7d03bbd7a83294584603) ) - ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(6769a6c2) SHA1(5eddf6a86897b39a6c75462b5047d5175b543b18) ) - ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(9c3288a0) SHA1(feb3b9fefd38052a5fd2fcee6a653c6043ff1759) ) - ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(71367522) SHA1(0d82940ff87396e8722f8250cd4961d11dfa46a0) ) + ROM_LOAD( "u18_f978.bin", 0x000000, 0x100000, CRC(afa9a1a8) SHA1(a06bdd776ca7ba9e9ceecc0935761e6d88cad90e) ) + ROM_LOAD( "u19_8766.bin", 0x000000, 0x100000, CRC(f63ed18c) SHA1(59d05582bbd125009a6bc226ec0ef2120c768694) ) + ROM_LOAD( "u20_26f0.bin", 0x000000, 0x100000, CRC(39f8e6d9) SHA1(59cd29d08610f601e3228364ae52a4e49e325f40) ) + ROM_LOAD( "u21_ea59.bin", 0x000000, 0x100000, CRC(0bd2f188) SHA1(f29a67c3cd36e7ee6fd7ef72a7724dc9df5b5657) ) ROM_END -ROM_START( chicken ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(51430fa1) SHA1(cb4357cc0b5c05704c984c9ab373201612f7d340) ) +// Big Blue (Russia) +ROM_START( bigblue ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "o_-bbbu01-adbaa-cb-std_.8mu02.bin", 0x000000, 0x100000, CRC(62d08d90) SHA1(fa563dd59eacd3021744863245aa7f82dea2c266) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(bac68023) SHA1(fdc5d540ceb4a2d44013dfd59b46103ec6745dea) ) + ROM_LOAD( "big blue bags.bin", 0x000000, 0x020000, CRC(4ec3fc1c) SHA1(7a081d370c54a6ea333957958b1341560458e845) ) + ROM_LOAD( "bbbu01-c-za-std_-5-xx-xx-axx.1mu06.bin", 0x000000, 0x020000, CRC(09e6df0b) SHA1(85961160f95cb8d223f73483d6edad79fa37d729) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(1109b7d6) SHA1(c0f6f5d56ee95982688b595894a2985ef53629e7) ) - ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(5a1449f6) SHA1(3903858239223c37615f12a8db6a8e873722e34c) ) - ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(e1081c7a) SHA1(dd6390d64cda9af93093092361ca24b551d82549) ) - ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(2f3930db) SHA1(6dbc3b4c3d43fc6ecec6082dbb1e1d29df43d50e) ) - ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(d560038c) SHA1(dece84d3e0691d53806382091dfd540dee1a3cdf) ) - ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(5c6c3a8d) SHA1(43be71f50318d12e4d55b9e1df34b0bfdb719fdf) ) - ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(a5a119e2) SHA1(decac8c7cea764224ed7e2da8af4f551f99739e6) ) - ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(9008b8b3) SHA1(b4dd717f46018a7005eff5dc6655d3d473311c16) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu09.bin", 0x000000, 0x100000, CRC(6f11b908) SHA1(663382bc295615afbc3a9a39c7089470b8b55926) ) + ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu11.bin", 0x000001, 0x100000, CRC(4cddcb5a) SHA1(e23354ab36f814b22c39564111558d4935fe8d70) ) + ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu13.bin", 0x000002, 0x100000, CRC(3a6dd649) SHA1(0f2b6cdf4f10ded99adc4fe0b47e4fada4aa6643) ) + ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu15.bin", 0x000003, 0x100000, CRC(2efd2269) SHA1(3923ec31e245c29786cd67a89d582bc051967580) ) + ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu08.bin", 0x400000, 0x100000, CRC(32f01864) SHA1(f515cfa2ecdc239b441f6f5f7033516e88030ad6) ) + ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu10.bin", 0x400001, 0x100000, CRC(97efddfd) SHA1(1303733596b725b705fa9dfd4150b4a6df9d4172) ) + ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu12.bin", 0x400002, 0x100000, CRC(36c4f212) SHA1(1e7ea33114f1ca836849242d717023b1315a466e) ) + ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu14.bin", 0x400003, 0x100000, CRC(bde8af9e) SHA1(095e567d35c45ae5e377cdf07ab77f6781e39cca) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(12c922c1) SHA1(d463328a203667dad42a7cbfb6853289095fa4c9) ) - ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(5e9c8810) SHA1(711c85a81dc61290fc43b56ccd955b4e46caee32) ) - ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(4ce349e4) SHA1(4499e570211aeed44db93a7c3b7b5d0b4390b0ca) ) - ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(6c7343cf) SHA1(28c282857f0c29198865444061fcf37e84697cf7) ) + ROM_LOAD( "bbbu01-ba-a-std_-_.8su18.bin", 0x000000, 0x100000, CRC(451687c9) SHA1(5165586a7ab69529396e4b387002e1dcbe3d892d) ) + ROM_LOAD( "bbbu01-ba-a-std_-_.8su19.bin", 0x000000, 0x100000, CRC(bb0029ec) SHA1(ab460d40ee46ee43b195b7a2ece42bcaaa043892) ) + ROM_LOAD( "bbbu01-ba-a-std_-_.8su20.bin", 0x000000, 0x100000, CRC(fb1bd294) SHA1(78dcaffc56f56d2b31d0c20d48d91696910be160) ) + ROM_LOAD( "bbbu01-ba-a-std_-_.8su21.bin", 0x000000, 0x100000, CRC(ec6d68ea) SHA1(91167b6379a6e1748e635c4b2b603a39fb6b049d) ) ROM_END -ROM_START( aclown ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(162915c4) SHA1(333d2ac8323eaaa0c7b85804b7d4ceef347118d1) ) +// Bonus Poker +ROM_START( atrbonpk ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mb-u2.bin", 0x000000, 0x80000, CRC(7f9d9d3c) SHA1(501d3f1482b3c67cbc94a3af40ef31fb5a6e7921) ) - ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(ab86b3d4) SHA1(b0d32887674f971a3ccd482775ec3f978a2ea0c1) ) + ROM_REGION( 0x080000, "u6", 0 ) // config? + ROM_LOAD( "mb-u6.bin", 0x000000, 0x080000, CRC(0b8d47ba) SHA1(aa1d5b37c330f4f44c1af5caca24bbf670c0bbcb) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(8bcbb27f) SHA1(d953268213580af11a2cc0dbd8bf1652f97f3929) ) - ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(73fb3169) SHA1(8bbe5d8b8898e2d3368506e7b66d05b8f8ac7d02) ) - ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(47580998) SHA1(37a6e409618aa3fe7d24bd3580fa93269895b059) ) - ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(948e3737) SHA1(43225f114a3ae66caf95821a1e8a01f1a129e38d) ) - ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(b4607b04) SHA1(81eff1246c68017e123fbfa46b4b8234808727d7) ) - ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(df875d3b) SHA1(262ec7db996f13fa32d17c1c5d0c89c2f98ca1cc) ) - ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(dbab3a76) SHA1(a85b76ade2d410cbbee7a62de96bed333ce23dc3) ) - ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(f3a6bbd5) SHA1(5a9e81ee9ce533b3ab1aeaa4ca9185f5bf0b2a65) ) + ROM_REGION( 0x2e5, "mbpals", 0 ) + ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) ) + ROM_LOAD( "mb-u32-i.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8)) + ROM_LOAD( "mb-u35-poke-s6366.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) ) - ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(c3efd917) SHA1(7f675c27d616a489c22544e98f726a62cfcb1bdf) ) - ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(a6e90bbf) SHA1(4aa4746b3d474caf653396171b42b56a3e16caa3) ) - ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(fef1ae8e) SHA1(efc5c289be052c56b5cb7976da25bd5bfacd97fc) ) - ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(47108677) SHA1(864f767c54c0f9ff63fad3829e828abbd5e84f0b) ) -ROM_END + ROM_REGION( 0x117, "gfxpals", 0 ) + ROM_LOAD( "u2-f.bin", 0x000, 0x117, CRC(eb5548c2) SHA1(7ccc6a7de0c0765e0da3563f3ee83dd99acc50bf) ) + ROM_LOAD( "u3-i.bin", 0x000, 0x117, CRC(769f7b32) SHA1(72df7c92367403a95c5bda3d6a643cc8fc24e153) ) + ROM_LOAD( "u4-c.bin", 0x000, 0x117, CRC(91e043ea) SHA1(d4d0c721c6c37cbe8babe148bc9887038cdf4820) ) + ROM_LOAD( "u5-a.bin", 0x000, 0x117, CRC(18ffc746) SHA1(e32dd74fb535fd4a754579173a788712b3e6ec30) ) + ROM_LOAD( "u6-b.bin", 0x000, 0x117, CRC(2750fb0a) SHA1(3814c4755a215073425a9d6bb048315498962c76) ) + ROM_LOAD( "u7-a.bin", 0x000, 0x117, CRC(adcb2789) SHA1(cc2ebd69abec73d66665faaec19b8706e539b34c) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9.bin", 0x400000, 0x080000, CRC(5b8450f1) SHA1(27fc771c3fb824cdb845237324984778fcd0a737) ) + ROM_LOAD32_BYTE( "u11.bin", 0x400001, 0x080000, CRC(c8c52bd1) SHA1(081b8b4c46f18d030329bf519a8ed50385f7c062) ) + ROM_LOAD32_BYTE( "u13.bin", 0x400002, 0x080000, CRC(23164a85) SHA1(e6de6aac28f1dac9ea908aaab9760b56ded1bb91) ) + ROM_LOAD32_BYTE( "u15.bin", 0x400003, 0x080000, CRC(aabbb4ff) SHA1(4a13475929141a4824b15347873cf330f7f7b0d0) ) + ROM_LOAD32_BYTE( "u8.bin", 0x600000, 0x080000, CRC(d6dfde87) SHA1(f3221adecb67ee593d52a1bbbdcee78dde497dbd) ) + ROM_LOAD32_BYTE( "u10.bin", 0x600001, 0x080000, CRC(d81a1f77) SHA1(c3ec3a06dacc3f528c9bcfa7a18e25e0126b1d85) ) + ROM_LOAD32_BYTE( "u12.bin", 0x600002, 0x080000, CRC(4b24dc03) SHA1(f875f09c6d44821b169e111cb1ea3d9716746d5f) ) + ROM_LOAD32_BYTE( "u14.bin", 0x600003, 0x080000, CRC(a6dc78ff) SHA1(96457601e7f90ce14a88765f70accc07d7236d30) ) + + // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard +ROM_END -ROM_START( goldglen ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(94c48e59) SHA1(b660d81f1659004e08df402ef9da61a1f4818b48) ) +// Castaway (Russia) (set 1) +ROM_START( castaway ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2.8 o-cast-b-a-cc", 0x000000, 0x100000, CRC(8f103bb3) SHA1(65596aff9cfb2345a36a0e2a2b03a2b4310d421c) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(94409a39) SHA1(99af058e48147fc75a8c23e4f1a28484f3d5f625) ) + ROM_LOAD( "u6.1 c5bo-a-03-a", 0x000000, 0x020000, CRC(3917302a) SHA1(39b0672c36554712825a0e310522933be4b46d84) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(01e69d2d) SHA1(a6e6974aec52931aeeb1f90d8f917ab85ebe843e) ) - ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(6c39a180) SHA1(95f91ec10961d36c86dee5ce42fc7c8ab693e271) ) - ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(e60a093f) SHA1(fa0af661f869f80e11097e101ec6100a75d1e63f) ) - ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(9877e8aa) SHA1(2073d451446709d92700cf4afb68e5b04580c620) ) - ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(631d617c) SHA1(44cbd9a8275537f2f8804b1d17645f74cd12fdb1) ) - ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(cdd5e435) SHA1(659b29ab16d5a3878e4984599e83f8d1cf377ca7) ) - ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(dcb50d70) SHA1(7f8c36d5dea9c3ce61c31aef7b310f546095d72e) ) - ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(6c0277b1) SHA1(266c6eb08cb3d9e49cf397a7e01785627892200e) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9.8 cw5_b-03-b", 0x000000, 0x100000, CRC(c49aaf25) SHA1(5518312046208b4f912e9dee2ff24653a9976c6f) ) + ROM_LOAD32_BYTE( "u11.8 cw5_b-03-b", 0x000001, 0x100000, CRC(24267b4b) SHA1(9103923dd1bba0b01f6020f7c357ac9b7bef4951) ) + ROM_LOAD32_BYTE( "u13.8 cw5_b-03-b", 0x000002, 0x100000, CRC(3e606516) SHA1(5edad0a3099700bfeedff5a143591a85b3c4f582) ) + ROM_LOAD32_BYTE( "u15.8 cw5_b-03-b", 0x000003, 0x100000, CRC(7211abc5) SHA1(acaa9ad55abeb34e2d97b419f5213e44e80adde0) ) + ROM_LOAD32_BYTE( "u8.8 cw5_b-03-b", 0x400000, 0x100000, CRC(03839c9e) SHA1(56ad8843192ca47c1d467c69ab2d13189a19a905) ) + ROM_LOAD32_BYTE( "u10.8 cw5_b-03-b", 0x400001, 0x100000, CRC(cbe7399e) SHA1(da829dcab116b48a56526750546287e33d3de3c7) ) + ROM_LOAD32_BYTE( "u12.8 cw5_b-03-b", 0x400002, 0x100000, CRC(770e92de) SHA1(c358b0f528fc5c1efd2dd4a0563e958d90b55d64) ) + ROM_LOAD32_BYTE( "u14.8 cw5_b-03-b", 0x400003, 0x100000, CRC(dadd0d0b) SHA1(87750c506f6429f382149d205849663b622abda3) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(2afed5cf) SHA1(633214458cd47666675464fb3621aaffbe0ca63a) ) - ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) ) - ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(0bcaa5b2) SHA1(c964b7ec99cfc641f91c1a483e68999fc3e23fa4) ) - ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(e2aad0ee) SHA1(2678ae011a820da644e78e0c5d2a6af39c35ac4d) ) + ROM_LOAD( "u18.8 castaa_a", 0x000000, 0x100000, CRC(98b0a1f3) SHA1(2a6298a82dc549078857e43d60e692062b1cd022) ) + ROM_LOAD( "u19.8 castaa_a", 0x000000, 0x100000, CRC(2c7aa4a4) SHA1(7e495ce9e18ae759e9ecf21f55c6bc7c7b06a92d) ) + ROM_LOAD( "u20.8 castaa_a", 0x000000, 0x100000, CRC(cbb5824d) SHA1(626fd9c0f76942c7c040743519e2af867afed75a) ) + ROM_LOAD( "u21.8 castaa_a", 0x000000, 0x100000, CRC(31554b6b) SHA1(6af8dc72e0fcec7f73b54b728f8c61a51f5f0d48) ) ROM_END -ROM_START( iccash ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(27b1c41e) SHA1(55a24301578b2d4e46948362aab8bfbb2918169a) ) +// Castaway (Russia) (set 2) +ROM_START( castawaya ) // bad dump? (ROMs all look incorrect size to me) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u-2 m27c801.bin", 0x000000, 0x080000, CRC(55b61206) SHA1(abdbe887a6739dbc9f51838b31d23d3c8d8f03dd) ) - ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(5e7d8a05) SHA1(255355cf594c2818d358860e616b5b578a87e974) ) + ROM_REGION( 0x080000, "u6", 0 ) // config? + ROM_LOAD( "u-6 m27c801.bin", 0x000000, 0x080000, CRC(86538b30) SHA1(6b8d732b59af2cc1a6524989f8cf12a4d4dac484) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(db77fe46) SHA1(2502c5c165a9720e5ff1196eaa17189281c3145c) ) - ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(3a512c6c) SHA1(ba8592773d71e57b3dc6aaff7df1214a57429b10) ) - ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(75fadda8) SHA1(5a968f10e582fbe74000f3de33dc1e2d07c3fec1) ) - ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(10e5a8e7) SHA1(e91de378c9485dce080d2d00a923e75f8be30f9a) ) - ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(0ac57377) SHA1(cbbac3434b5b46f30abe880990300bf0a0393557) ) - ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(03c67464) SHA1(d5a1e657140a31c3f77c6490bcf35075d0546b71) ) - ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(622992ef) SHA1(6a31212436dcda308f1f78abff714bbd97df71ef) ) - ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(ce62e7f9) SHA1(af9eeb7bdb76870e914f1233c9fd496d6c33a615) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + // seem to be half size, doesn't have the TMS vectors + ROM_LOAD32_BYTE( "u-9 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(4a5efe38) SHA1(23e82eeadccdd0224858686b1d96bd5d184904cb) ) + ROM_LOAD32_BYTE( "u-11 m27c801.bin", 0x000001, 0x080000, BAD_DUMP CRC(099e27e2) SHA1(4419ac8090ccab673e61f4f73c837971e341e7e2) ) + ROM_LOAD32_BYTE( "u-13 m27c801.bin", 0x000002, 0x080000, BAD_DUMP CRC(f65eb71f) SHA1(9e116cc2b6768c1525759735eecc05db5906f2dc) ) + ROM_LOAD32_BYTE( "u-15 m27c801.bin", 0x000003, 0x080000, BAD_DUMP CRC(319c8bb6) SHA1(8de3c66b375f0ff200ff240765c6f37609c4935e) ) + ROM_LOAD32_BYTE( "u-8 m27c801.bin", 0x400000, 0x080000, BAD_DUMP CRC(74e21aeb) SHA1(dce3b413c6efdc2d85357dd1f9e4e2808aef4f7e) ) + ROM_LOAD32_BYTE( "u-10 m27c801.bin", 0x400001, 0x080000, BAD_DUMP CRC(45294960) SHA1(1b5b33ef730c44a4800e80891369d4e21e1729d2) ) + ROM_LOAD32_BYTE( "u-12 m27c801.bin", 0x400002, 0x080000, BAD_DUMP CRC(be19a02c) SHA1(8968d4ec5ff58dcf50c3c9ac9601c6416399091d) ) + ROM_LOAD32_BYTE( "u-14 m27c801.bin", 0x400003, 0x080000, BAD_DUMP CRC(cda73f12) SHA1(dd5556d7e19ef1a9fec1b914a7464fbc4f97effe) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(8e322415) SHA1(14685d1f426187d1fbe878713cd60ece177fdd1b) ) - ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(8ce5ba46) SHA1(012d8686291d9078be8a489e21180681ace06b8b) ) - ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(be59025d) SHA1(b64c707129c1418833c1b5601d0a194c2e29d9a8) ) - ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(d6b79eae) SHA1(a128adbca125f3811edc8c7042bf41b45dc61083) ) + ROM_LOAD( "u-18 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(2e3d7181) SHA1(eed1a1594405f416efb379e134c12be89d495402) ) + ROM_LOAD( "u-19 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(a3c906f6) SHA1(25314d79f420c177424bf1de492ba8d9a928f643) ) + ROM_LOAD( "u-20 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(ec395eaa) SHA1(fa27b928971c039fb1586631f136bd7577be1c57) ) + ROM_LOAD( "u-21 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(324d0539) SHA1(71639e3fc40c09e07221524580046dc2447b43f1) ) + + ROM_REGION( 0x400000, "others", 0 ) + ROM_LOAD( "ds1225y.bin", 0x000000, 0x002000, CRC(76af0395) SHA1(ce6aef5349b155f8e103bb4dd33933c501a490ae) ) + ROM_LOAD( "ds1386-32k.bin", 0x000000, 0x002000, CRC(4e28ebc9) SHA1(dfd60c53ffdd0b44b7f894e19b212bc88e81192f) ) ROM_END -ROM_START( shpinxii ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-80.bin", 0x0000, 0x100000, CRC(943d35a7) SHA1(17ead3a7f084b5e384f99903f57360ff9e133026) ) +// Chicken (Russia) +ROM_START( chicken ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(51430fa1) SHA1(cb4357cc0b5c05704c984c9ab373201612f7d340) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-10.bin", 0x0000, 0x020000, CRC(4d37999a) SHA1(678dc788cfe00ab2599df08941660324793d7f6c) ) - ROM_LOAD( "sphinx ii.bin", 0x0000, 0x020000, CRC(7fae09a6) SHA1(5c26798337d3691d81f853ee447cb7119fce7b14) ) + ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(bac68023) SHA1(fdc5d540ceb4a2d44013dfd59b46103ec6745dea) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(c54e4e07) SHA1(1249494773dae044a7bb4381b084e3d2e14367d7) ) - ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(5c1e82ab) SHA1(f22ba1dc6799388e855d8f3064b96d568619a75b) ) - ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(fb49ae3e) SHA1(bf0cb5815639ebc3db3333249ab2ed81d3bdc684) ) - ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(ac741fb5) SHA1(a52eaa4a43cd522885d5d9b024c0646279dffe25) ) - ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(ca4c1626) SHA1(6a883f713272ea70fd0757f9d0e07379925973a3) ) - ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(b64deef1) SHA1(b3c4baef7137af5b25402cec474f92333d93e727) ) - ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(cf5a97b7) SHA1(6cb490a5a0c9e908593beff3aee374eddef19a5f) ) - ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(98730028) SHA1(86b782bea8caf33dab9656c93856fc345977f7cc) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(1109b7d6) SHA1(c0f6f5d56ee95982688b595894a2985ef53629e7) ) + ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(5a1449f6) SHA1(3903858239223c37615f12a8db6a8e873722e34c) ) + ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(e1081c7a) SHA1(dd6390d64cda9af93093092361ca24b551d82549) ) + ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(2f3930db) SHA1(6dbc3b4c3d43fc6ecec6082dbb1e1d29df43d50e) ) + ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(d560038c) SHA1(dece84d3e0691d53806382091dfd540dee1a3cdf) ) + ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(5c6c3a8d) SHA1(43be71f50318d12e4d55b9e1df34b0bfdb719fdf) ) + ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(a5a119e2) SHA1(decac8c7cea764224ed7e2da8af4f551f99739e6) ) + ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(9008b8b3) SHA1(b4dd717f46018a7005eff5dc6655d3d473311c16) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-80.bin", 0x0000, 0x100000, CRC(52da6133) SHA1(51ba2c586ffeddca1d8e345c644525cbccffdba8) ) - ROM_LOAD( "u19-80.bin", 0x0000, 0x100000, CRC(3aed50bc) SHA1(c7abc91dbddf9bccac9cc9a5b73fbd9b22878ca9) ) - ROM_LOAD( "u20-80.bin", 0x0000, 0x100000, CRC(0a8ac239) SHA1(7d58abaff09a7e61d1380121d085a5601549e908) ) - ROM_LOAD( "u21-80.bin", 0x0000, 0x100000, CRC(d4621e8d) SHA1(6ec49c52b88e648dbe2fe3c47868946369d717cf) ) + ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(12c922c1) SHA1(d463328a203667dad42a7cbfb6853289095fa4c9) ) + ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(5e9c8810) SHA1(711c85a81dc61290fc43b56ccd955b4e46caee32) ) + ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(4ce349e4) SHA1(4499e570211aeed44db93a7c3b7b5d0b4390b0ca) ) + ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(6c7343cf) SHA1(28c282857f0c29198865444061fcf37e84697cf7) ) ROM_END - - - -ROM_START( beachpt ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u02_o_-wave-a-b-cb-rus_.bin", 0x0000, 0x100000, CRC(b26085fc) SHA1(19f350c46088b58438dfc234d4ac543105913286) ) +// Chickendales +ROM_START( chicdale ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mu2.040", 0x000000, 0x100000, CRC(2f2670b4) SHA1(3530a3f0f149da0221e1c25351f62de0e8e6a2b7) ) + ROM_LOAD( "chick_u2_0e52.u2", 0x000000, 0x100000, CRC(c213b510) SHA1(9549f16a2bbfc735d55b908adad59283abf1b221) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u06_crp5bs1a.bin", 0x0000, 0x020000, CRC(0db0531d) SHA1(391e41b2dcd38669dcc24e938e9838feee972559) ) + ROM_LOAD( "mu6.010", 0x000000, 0x020000, CRC(bac68023) SHA1(fdc5d540ceb4a2d44013dfd59b46103ec6745dea) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u09_bep5a01d.bin", 0x000000, 0x100000, CRC(0f4614de) SHA1(2181c552e9a3669fda5e87d0c596d5534d24d4b3) ) - ROM_LOAD32_BYTE( "u11_bep5a01d.bin", 0x000001, 0x100000, CRC(4f8c6fee) SHA1(2b75fe948bddda899969ef4a7663a52dc7b0eb81) ) - ROM_LOAD32_BYTE( "u13_bep5a01d.bin", 0x000002, 0x100000, CRC(ca9a24e5) SHA1(67276f680f3aedf480c54c666f0db1110cd77aee) ) - ROM_LOAD32_BYTE( "u15_bep5a01d.bin", 0x000003, 0x100000, CRC(ac904dc8) SHA1(165f66423a9c9231baa4e8b2e465d7f10f61202d) ) - ROM_LOAD32_BYTE( "u08_bep5a01d.bin", 0x400000, 0x100000, CRC(1f19cba6) SHA1(201975c7b440d2f53439e7383fb49b921015f22c) ) - ROM_LOAD32_BYTE( "u10_bep5a01d.bin", 0x400001, 0x100000, CRC(940bb1b2) SHA1(a57d6e5d3872787ff1821cbc80032269b378ecf0) ) - ROM_LOAD32_BYTE( "u12_bep5a01d.bin", 0x400002, 0x100000, CRC(07851214) SHA1(d088243f11ba51c79796986e99f0aa34d0d697d6) ) - ROM_LOAD32_BYTE( "u14_bep5a01d.bin", 0x400003, 0x100000, CRC(16a5ce9c) SHA1(3551e6eb7ff34f9ea70b7e6e940044ea1b4c59bb) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9.080", 0x000000, 0x100000, CRC(9b74ec99) SHA1(99834a3ad4ccbd594ae9de0edde7920619bcad5e) ) + ROM_LOAD32_BYTE( "u11.080", 0x000001, 0x100000, CRC(1b783bf7) SHA1(7018ce74b67370fdf679646d049a64569e7d1906) ) + ROM_LOAD32_BYTE( "u13.080", 0x000002, 0x100000, CRC(f21780da) SHA1(b40ee4de5d7b68bd723affecc9160bd78198390e) ) + ROM_LOAD32_BYTE( "u15.080", 0x000003, 0x100000, CRC(e62e2d2d) SHA1(b06443f0a67f93b3cc8f18fc3b1bdce54ba2c792) ) + ROM_LOAD32_BYTE( "u8.080", 0x400000, 0x100000, CRC(7f2f9e2b) SHA1(ecbf5fc17ea45fd47f6b2a87ee0cd4b8e63eb5b8) ) + ROM_LOAD32_BYTE( "u10.080", 0x400001, 0x100000, CRC(631e4449) SHA1(4b0da20238523efd0235fc95bbf6eea0a0866ca1) ) + ROM_LOAD32_BYTE( "u12.080", 0x400002, 0x100000, CRC(b927f5dc) SHA1(5c9af46b54b7e919ffc0098114bee6fbcc45167a) ) + ROM_LOAD32_BYTE( "u14.080", 0x400003, 0x100000, CRC(6d0f1d70) SHA1(d096ac8b501e3a6664c3042f86aa03fe35626b09) ) - ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18_bep_aa_a.bin", 0x0000, 0x100000, CRC(a0c6dafd) SHA1(9a09224b2d91cbf4efad5563a7633b973b0e5ce1) ) - ROM_LOAD( "u19_bep_aa_a.bin", 0x0000, 0x100000, CRC(69f1f267) SHA1(4fa837bf285670ed26ed0f0dada5e2a54ca7f142) ) - ROM_LOAD( "u20_bep_aa_a.bin", 0x0000, 0x100000, CRC(3dc030aa) SHA1(f01305fb187ae150b1264e8b72439e638772fbcc) ) - ROM_LOAD( "u21_bep_aa_a.bin", 0x0000, 0x100000, CRC(791c809a) SHA1(68af52cb2032a0c3f76030681baaaac8fb0bf51b) ) -ROM_END + // sound (missing or not needed here?) + ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED) + ROM_LOAD( "galu35.bin", 0x000000, 0x0002e5, CRC(c81159c9) SHA1(36222e0a72310986fd4a76c0677a6bd74a0ad7df) ) +ROM_END -ROM_START( beetleup ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u02_0-beet-a-a-cc.0def.bin", 0x0000, 0x100000, CRC(b5eedf40) SHA1(40a9baac99e9844cef5d3922c853f5e4903a7833) ) +// Clown (Russia) +ROM_START( aclown ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mu2.040", 0x000000, 0x100000, CRC(162915c4) SHA1(333d2ac8323eaaa0c7b85804b7d4ceef347118d1) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u06_n5b0-a-04-b.65aa.bin", 0x0000, 0x020000, CRC(d68d08e4) SHA1(548577d43f4136cf16266fe6855898a30fa49965) ) - ROM_LOAD( "u06_n5b0-a-05-b.648f.bin", 0x0000, 0x020000, CRC(2d2ff35f) SHA1(97759fbad4b6b30ca8f8ea74da74cfaa433a7fa2) ) - ROM_LOAD( "u06_n5b0-a-06-b.64 56.bin", 0x0000, 0x020000, CRC(7b4a6a97) SHA1(e3d54476730ca34a9f7214219cf991a220e15d5c) ) + ROM_LOAD( "mu6.010", 0x000000, 0x020000, CRC(ab86b3d4) SHA1(b0d32887674f971a3ccd482775ec3f978a2ea0c1) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u09_7b88.bin", 0x000000, 0x100000, CRC(8443972b) SHA1(5f2eea84ba18a83502f36eeaa52cff49a1631668) ) - ROM_LOAD32_BYTE( "u11_1957.bin", 0x000001, 0x100000, CRC(36c7e5c5) SHA1(2bad0bb6b363af6a37f5b11c7ca8b3b674df4072) ) - ROM_LOAD32_BYTE( "u13_b661.bin", 0x000002, 0x100000, CRC(0e74726c) SHA1(3103d801a622315877fc09d9c99290b54b266885) ) - ROM_LOAD32_BYTE( "u15_fd57.bin", 0x000003, 0x100000, CRC(9eabc514) SHA1(ed89b068b381ad4e007352bddf3aebe10ebebf4a) ) - ROM_LOAD32_BYTE( "u08_5804.bin", 0x400000, 0x100000, CRC(65a020e3) SHA1(2bb781905338e2d444222095d8430137632fae3d) ) - ROM_LOAD32_BYTE( "u10_647c.bin", 0x400001, 0x100000, CRC(c46c064d) SHA1(6181cf0e1d53f0a79c266b4f87d3b0c32313c593) ) - ROM_LOAD32_BYTE( "u12_07f3.bin", 0x400002, 0x100000, CRC(cefdfdad) SHA1(2032e0942f52d025f8da225c31ca7f7121c7b7f8) ) - ROM_LOAD32_BYTE( "u14_fe27.bin", 0x400003, 0x100000, CRC(50cfd898) SHA1(8b881ae8c60f215bb0f75e14493ee4a0c9f2b364) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(8bcbb27f) SHA1(d953268213580af11a2cc0dbd8bf1652f97f3929) ) + ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(73fb3169) SHA1(8bbe5d8b8898e2d3368506e7b66d05b8f8ac7d02) ) + ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(47580998) SHA1(37a6e409618aa3fe7d24bd3580fa93269895b059) ) + ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(948e3737) SHA1(43225f114a3ae66caf95821a1e8a01f1a129e38d) ) + ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(b4607b04) SHA1(81eff1246c68017e123fbfa46b4b8234808727d7) ) + ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(df875d3b) SHA1(262ec7db996f13fa32d17c1c5d0c89c2f98ca1cc) ) + ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(dbab3a76) SHA1(a85b76ade2d410cbbee7a62de96bed333ce23dc3) ) + ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(f3a6bbd5) SHA1(5a9e81ee9ce533b3ab1aeaa4ca9185f5bf0b2a65) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18_f978.bin", 0x0000, 0x100000, CRC(afa9a1a8) SHA1(a06bdd776ca7ba9e9ceecc0935761e6d88cad90e) ) - ROM_LOAD( "u19_8766.bin", 0x0000, 0x100000, CRC(f63ed18c) SHA1(59d05582bbd125009a6bc226ec0ef2120c768694) ) - ROM_LOAD( "u20_26f0.bin", 0x0000, 0x100000, CRC(39f8e6d9) SHA1(59cd29d08610f601e3228364ae52a4e49e325f40) ) - ROM_LOAD( "u21_ea59.bin", 0x0000, 0x100000, CRC(0bd2f188) SHA1(f29a67c3cd36e7ee6fd7ef72a7724dc9df5b5657) ) + ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(c3efd917) SHA1(7f675c27d616a489c22544e98f726a62cfcb1bdf) ) + ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(a6e90bbf) SHA1(4aa4746b3d474caf653396171b42b56a3e16caa3) ) + ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(fef1ae8e) SHA1(efc5c289be052c56b5cb7976da25bd5bfacd97fc) ) + ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(47108677) SHA1(864f767c54c0f9ff63fad3829e828abbd5e84f0b) ) ROM_END - -ROM_START( bigblue ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "o_-bbbu01-adbaa-cb-std_.8mu02.bin", 0x0000, 0x100000, CRC(62d08d90) SHA1(fa563dd59eacd3021744863245aa7f82dea2c266) ) +// Crazy Fruits Blue (Russia) (set 1) +ROM_START( cfblue ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2.bin", 0x000000, 0x100000, CRC(0b5035d0) SHA1(f77ce0d16da39c259c0f764c23c23d0313166612) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "big blue bags.bin", 0x0000, 0x020000, CRC(4ec3fc1c) SHA1(7a081d370c54a6ea333957958b1341560458e845) ) - ROM_LOAD( "bbbu01-c-za-std_-5-xx-xx-axx.1mu06.bin", 0x0000, 0x020000, CRC(09e6df0b) SHA1(85961160f95cb8d223f73483d6edad79fa37d729) ) + ROM_LOAD( "u6.bin", 0x000000, 0x020000, CRC(63690e7e) SHA1(9dcb3d64bae03556875185ead23d9b911773f5bd) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu09.bin", 0x000000, 0x100000, CRC(6f11b908) SHA1(663382bc295615afbc3a9a39c7089470b8b55926) ) - ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu11.bin", 0x000001, 0x100000, CRC(4cddcb5a) SHA1(e23354ab36f814b22c39564111558d4935fe8d70) ) - ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu13.bin", 0x000002, 0x100000, CRC(3a6dd649) SHA1(0f2b6cdf4f10ded99adc4fe0b47e4fada4aa6643) ) - ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu15.bin", 0x000003, 0x100000, CRC(2efd2269) SHA1(3923ec31e245c29786cd67a89d582bc051967580) ) - ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu08.bin", 0x400000, 0x100000, CRC(32f01864) SHA1(f515cfa2ecdc239b441f6f5f7033516e88030ad6) ) - ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu10.bin", 0x400001, 0x100000, CRC(97efddfd) SHA1(1303733596b725b705fa9dfd4150b4a6df9d4172) ) - ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu12.bin", 0x400002, 0x100000, CRC(36c4f212) SHA1(1e7ea33114f1ca836849242d717023b1315a466e) ) - ROM_LOAD32_BYTE( "bbbu01-a_-a-std_-5_.8gu14.bin", 0x400003, 0x100000, CRC(bde8af9e) SHA1(095e567d35c45ae5e377cdf07ab77f6781e39cca) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9.bin", 0x000000, 0x100000, CRC(d1c2ad08) SHA1(e53c7e91b2ab86e64f4ae753404aa86ae881becf) ) + ROM_LOAD32_BYTE( "u11.bin", 0x000001, 0x100000, CRC(42872aef) SHA1(54d7cf6a9f3d5d8b2b14fa381fd7b9db974525e1) ) + ROM_LOAD32_BYTE( "u13.bin", 0x000002, 0x100000, CRC(7da9415b) SHA1(aaa73465417dcf92838021b37cb412d52ccb4d85) ) + ROM_LOAD32_BYTE( "u15.bin", 0x000003, 0x100000, CRC(e0270268) SHA1(6bf5281eb5418903403873547690bdfa04597fea) ) + ROM_LOAD32_BYTE( "u8.bin", 0x400000, 0x100000, CRC(a870d32c) SHA1(0014b9b2a2b35ae8a10ed2910213ccea50f8ba61) ) + ROM_LOAD32_BYTE( "u10.bin", 0x400001, 0x100000, CRC(f99ae371) SHA1(b468a18eb7604f191198aae68e961db97cae0332) ) + ROM_LOAD32_BYTE( "u12.bin", 0x400002, 0x100000, CRC(2b2fcd96) SHA1(ce4a8d1267874e5d615e8b3abbb4d1b16630ae7a) ) + ROM_LOAD32_BYTE( "u14.bin", 0x400003, 0x100000, CRC(d66b735c) SHA1(6c4c1e5b5b21b60e950cf70d2d6ad72d5b22237a) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "bbbu01-ba-a-std_-_.8su18.bin", 0x0000, 0x100000, CRC(451687c9) SHA1(5165586a7ab69529396e4b387002e1dcbe3d892d) ) - ROM_LOAD( "bbbu01-ba-a-std_-_.8su19.bin", 0x0000, 0x100000, CRC(bb0029ec) SHA1(ab460d40ee46ee43b195b7a2ece42bcaaa043892) ) - ROM_LOAD( "bbbu01-ba-a-std_-_.8su20.bin", 0x0000, 0x100000, CRC(fb1bd294) SHA1(78dcaffc56f56d2b31d0c20d48d91696910be160) ) - ROM_LOAD( "bbbu01-ba-a-std_-_.8su21.bin", 0x0000, 0x100000, CRC(ec6d68ea) SHA1(91167b6379a6e1748e635c4b2b603a39fb6b049d) ) + ROM_LOAD( "u18.bin", 0x000000, 0x100000, CRC(77d6c103) SHA1(667c4c77eeba3af9c8c772a9ffe2941f8f3df38f) ) + ROM_LOAD( "u19.bin", 0x000000, 0x100000, CRC(36371ef6) SHA1(83a454a71e01962937b23817419fe2e071f077ee) ) + ROM_LOAD( "u20.bin", 0x000000, 0x100000, CRC(d9548179) SHA1(12537373a6a3f79952d2c7c48d41e156fc578902) ) + ROM_LOAD( "u21.bin", 0x000000, 0x100000, CRC(3a620cc6) SHA1(1dced1a40c6b3d734ea463fe58bdd9ee9e3b8822) ) ROM_END -ROM_START( castaway ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2.8 o-cast-b-a-cc", 0x0000, 0x100000, CRC(8f103bb3) SHA1(65596aff9cfb2345a36a0e2a2b03a2b4310d421c) ) + +// Crazy Fruits Blue (Russia) (set 2) +ROM_START( cfbluea ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(4ee3805e) SHA1(45d9438a26230f50013feda1b2c68ab2f8d4f419) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6.1 c5bo-a-03-a", 0x0000, 0x020000, CRC(3917302a) SHA1(39b0672c36554712825a0e310522933be4b46d84) ) + ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(0db0531d) SHA1(391e41b2dcd38669dcc24e938e9838feee972559) ) + ROM_LOAD( "u6low-10.bin", 0x000000, 0x020000, CRC(3cbad206) SHA1(d2a468d5bfd441b74ef85be088873d1f74d5c66e) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9.8 cw5_b-03-b", 0x000000, 0x100000, CRC(c49aaf25) SHA1(5518312046208b4f912e9dee2ff24653a9976c6f) ) - ROM_LOAD32_BYTE( "u11.8 cw5_b-03-b", 0x000001, 0x100000, CRC(24267b4b) SHA1(9103923dd1bba0b01f6020f7c357ac9b7bef4951) ) - ROM_LOAD32_BYTE( "u13.8 cw5_b-03-b", 0x000002, 0x100000, CRC(3e606516) SHA1(5edad0a3099700bfeedff5a143591a85b3c4f582) ) - ROM_LOAD32_BYTE( "u15.8 cw5_b-03-b", 0x000003, 0x100000, CRC(7211abc5) SHA1(acaa9ad55abeb34e2d97b419f5213e44e80adde0) ) - ROM_LOAD32_BYTE( "u8.8 cw5_b-03-b", 0x400000, 0x100000, CRC(03839c9e) SHA1(56ad8843192ca47c1d467c69ab2d13189a19a905) ) - ROM_LOAD32_BYTE( "u10.8 cw5_b-03-b", 0x400001, 0x100000, CRC(cbe7399e) SHA1(da829dcab116b48a56526750546287e33d3de3c7) ) - ROM_LOAD32_BYTE( "u12.8 cw5_b-03-b", 0x400002, 0x100000, CRC(770e92de) SHA1(c358b0f528fc5c1efd2dd4a0563e958d90b55d64) ) - ROM_LOAD32_BYTE( "u14.8 cw5_b-03-b", 0x400003, 0x100000, CRC(dadd0d0b) SHA1(87750c506f6429f382149d205849663b622abda3) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(37b3a499) SHA1(eb3252185596dd513d3cce95f3425241ca8513ab) ) + ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(d98b2b1d) SHA1(414d300d113e9737d63efea09b358aeb8eeed7fc) ) + ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(478bb4a5) SHA1(94304fe1477bfc66e8dcf2c2c91226754cb8c32a) ) + ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(cfe9e4d4) SHA1(8cd4aadd885fc5500b0a2c1e41b1f096bd4cd2b5) ) + ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(39670383) SHA1(cd78289377c75497f96dd6b76dc717b2ddc8d9c6) ) + ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(f9d054ae) SHA1(244733f7ee6e82fef5d0245c3fd947d369b296f9) ) + ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(5e95768f) SHA1(ba616bf41a2bb205d366e19e773ee5f0009be212) ) + ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(89aaf76b) SHA1(6e731ba815c20b184e44495dd2231d9ae315a146) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18.8 castaa_a", 0x0000, 0x100000, CRC(98b0a1f3) SHA1(2a6298a82dc549078857e43d60e692062b1cd022) ) - ROM_LOAD( "u19.8 castaa_a", 0x0000, 0x100000, CRC(2c7aa4a4) SHA1(7e495ce9e18ae759e9ecf21f55c6bc7c7b06a92d) ) - ROM_LOAD( "u20.8 castaa_a", 0x0000, 0x100000, CRC(cbb5824d) SHA1(626fd9c0f76942c7c040743519e2af867afed75a) ) - ROM_LOAD( "u21.8 castaa_a", 0x0000, 0x100000, CRC(31554b6b) SHA1(6af8dc72e0fcec7f73b54b728f8c61a51f5f0d48) ) + ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(77d6c103) SHA1(667c4c77eeba3af9c8c772a9ffe2941f8f3df38f) ) + ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(36371ef6) SHA1(83a454a71e01962937b23817419fe2e071f077ee) ) + ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(d9548179) SHA1(12537373a6a3f79952d2c7c48d41e156fc578902) ) + ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(3a620cc6) SHA1(1dced1a40c6b3d734ea463fe58bdd9ee9e3b8822) ) ROM_END -ROM_START( castawaya ) // bad dump? (roms all look incorrect size to me) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u-2 m27c801.bin", 0x0000, 0x080000, CRC(55b61206) SHA1(abdbe887a6739dbc9f51838b31d23d3c8d8f03dd) ) - ROM_REGION( 0x080000, "u6", 0 ) // config? - ROM_LOAD( "u-6 m27c801.bin", 0x0000, 0x080000, CRC(86538b30) SHA1(6b8d732b59af2cc1a6524989f8cf12a4d4dac484) ) +// Crazy Fruits Green (Russia) +ROM_START( cfgreen ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(2afda383) SHA1(8a1d1a780f710119cbf7ee6a53d5de91cfe120c2) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - // seem to be half size, doesn't have the TMS vectors - ROM_LOAD32_BYTE( "u-9 m27c801.bin", 0x000000, 0x080000, BAD_DUMP CRC(4a5efe38) SHA1(23e82eeadccdd0224858686b1d96bd5d184904cb) ) - ROM_LOAD32_BYTE( "u-11 m27c801.bin", 0x000001, 0x080000, BAD_DUMP CRC(099e27e2) SHA1(4419ac8090ccab673e61f4f73c837971e341e7e2) ) - ROM_LOAD32_BYTE( "u-13 m27c801.bin", 0x000002, 0x080000, BAD_DUMP CRC(f65eb71f) SHA1(9e116cc2b6768c1525759735eecc05db5906f2dc) ) - ROM_LOAD32_BYTE( "u-15 m27c801.bin", 0x000003, 0x080000, BAD_DUMP CRC(319c8bb6) SHA1(8de3c66b375f0ff200ff240765c6f37609c4935e) ) - ROM_LOAD32_BYTE( "u-8 m27c801.bin", 0x400000, 0x080000, BAD_DUMP CRC(74e21aeb) SHA1(dce3b413c6efdc2d85357dd1f9e4e2808aef4f7e) ) - ROM_LOAD32_BYTE( "u-10 m27c801.bin", 0x400001, 0x080000, BAD_DUMP CRC(45294960) SHA1(1b5b33ef730c44a4800e80891369d4e21e1729d2) ) - ROM_LOAD32_BYTE( "u-12 m27c801.bin", 0x400002, 0x080000, BAD_DUMP CRC(be19a02c) SHA1(8968d4ec5ff58dcf50c3c9ac9601c6416399091d) ) - ROM_LOAD32_BYTE( "u-14 m27c801.bin", 0x400003, 0x080000, BAD_DUMP CRC(cda73f12) SHA1(dd5556d7e19ef1a9fec1b914a7464fbc4f97effe) ) + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(3cbad206) SHA1(d2a468d5bfd441b74ef85be088873d1f74d5c66e) ) - ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u-18 m27c801.bin", 0x0000, 0x080000, BAD_DUMP CRC(2e3d7181) SHA1(eed1a1594405f416efb379e134c12be89d495402) ) - ROM_LOAD( "u-19 m27c801.bin", 0x0000, 0x080000, BAD_DUMP CRC(a3c906f6) SHA1(25314d79f420c177424bf1de492ba8d9a928f643) ) - ROM_LOAD( "u-20 m27c801.bin", 0x0000, 0x080000, BAD_DUMP CRC(ec395eaa) SHA1(fa27b928971c039fb1586631f136bd7577be1c57) ) - ROM_LOAD( "u-21 m27c801.bin", 0x0000, 0x080000, BAD_DUMP CRC(324d0539) SHA1(71639e3fc40c09e07221524580046dc2447b43f1) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(19a47a1b) SHA1(ae9ad2027fddf96062833345a5e2b9e7101b3380) ) + ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(7d805f07) SHA1(0bb27a702e45d3d660363ac75c0f52f07248d40a) ) + ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(104110dc) SHA1(9322598a94e3c71f546da3b42f137a22fc78a894) ) + ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(c752e5b1) SHA1(98832603529c99d83885a9b72bf30aa5eb1eee93) ) + ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(63e91841) SHA1(a9644b4ed37c2143273e782bd0e85906466c1173) ) + ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(b198a826) SHA1(361f9a055633831f45b148ca5e23cbb9be97c95f) ) + ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(9eb176c4) SHA1(73dea223338235a3ebd224c210df4923dbb01b56) ) + ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(ad654d75) SHA1(31804c2fae178b2614759542cba1af34b82e5f12) ) - ROM_REGION( 0x400000, "others", 0 ) - ROM_LOAD( "ds1225y.bin", 0x0000, 0x002000, CRC(76af0395) SHA1(ce6aef5349b155f8e103bb4dd33933c501a490ae) ) - ROM_LOAD( "ds1386-32k.bin", 0x0000, 0x002000, CRC(4e28ebc9) SHA1(dfd60c53ffdd0b44b7f894e19b212bc88e81192f) ) + ROM_REGION( 0x400000, "u18u21", 0 ) // sound + ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(40a74e38) SHA1(6ea3458c449434353bbc7d03bbd7a83294584603) ) + ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(6769a6c2) SHA1(5eddf6a86897b39a6c75462b5047d5175b543b18) ) + ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(9c3288a0) SHA1(feb3b9fefd38052a5fd2fcee6a653c6043ff1759) ) + ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(71367522) SHA1(0d82940ff87396e8722f8250cd4961d11dfa46a0) ) ROM_END +// Dancing Spirit (Russia) ROM_START( dncsprt ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "o_-dasp01-adaaa-cc-std_.8mu02", 0x0000, 0x100000, CRC(744b40d7) SHA1(f7b3f507ccccb36ae55ac3b567956c45a83d3b63) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "o_-dasp01-adaaa-cc-std_.8mu02", 0x000000, 0x100000, CRC(744b40d7) SHA1(f7b3f507ccccb36ae55ac3b567956c45a83d3b63) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "dasp01-d-za-std_-5-xx-xx-axx.1mu06", 0x0000, 0x020000, CRC(2d5f7976) SHA1(77de321ba2f46726a0c26aa498a4c3deb7f8c421) ) + ROM_LOAD( "dasp01-d-za-std_-5-xx-xx-axx.1mu06", 0x000000, 0x020000, CRC(2d5f7976) SHA1(77de321ba2f46726a0c26aa498a4c3deb7f8c421) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "dasp01-a_-c-std_-5_.8gu09", 0x000000, 0x100000, CRC(e6941863) SHA1(c9fe08bd070c9fac7b8c9089a6ecbff581265b3a) ) ROM_LOAD32_BYTE( "dasp01-a_-c-std_-5_.8gu11", 0x000001, 0x100000, CRC(400b82ab) SHA1(5af6daf65e50b0c5ad27c43b0f3d4d8d24f38102) ) ROM_LOAD32_BYTE( "dasp01-a_-c-std_-5_.8gu13", 0x000002, 0x100000, CRC(b425a8f6) SHA1(82d8e0d8602a81c6d4cf528b73f3c84ab5dde11b) ) @@ -1088,21 +1154,48 @@ ROM_START( dncsprt ) ROM_LOAD32_BYTE( "dasp01-a_-c-std_-5_.8gu14", 0x400003, 0x100000, CRC(b6dd4982) SHA1(45ff8232eb965ad60e4cf066ab3addb532b39b56) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "dasp01-aa-a-std_-_.8su18", 0x0000, 0x100000, CRC(65aeacb0) SHA1(97bbdb4e70e50c14ecb2cc18756c581a2069715f) ) - ROM_LOAD( "dasp01-aa-a-std_-_.8su19", 0x0000, 0x100000, CRC(0f81c833) SHA1(5568c92484c2b52b04034d99a7531a78bc1d5eb1) ) - ROM_LOAD( "dasp01-aa-a-std_-_.8su20", 0x0000, 0x100000, CRC(97302d05) SHA1(4a03d337a5e46f9b5686d1e16fa72f83cf4674f0) ) - ROM_LOAD( "dasp01-aa-a-std_-_.8su21", 0x0000, 0x100000, CRC(849e86f9) SHA1(cba1379b4cef793fc08c20607867d01c53d397a4) ) + ROM_LOAD( "dasp01-aa-a-std_-_.8su18", 0x000000, 0x100000, CRC(65aeacb0) SHA1(97bbdb4e70e50c14ecb2cc18756c581a2069715f) ) + ROM_LOAD( "dasp01-aa-a-std_-_.8su19", 0x000000, 0x100000, CRC(0f81c833) SHA1(5568c92484c2b52b04034d99a7531a78bc1d5eb1) ) + ROM_LOAD( "dasp01-aa-a-std_-_.8su20", 0x000000, 0x100000, CRC(97302d05) SHA1(4a03d337a5e46f9b5686d1e16fa72f83cf4674f0) ) + ROM_LOAD( "dasp01-aa-a-std_-_.8su21", 0x000000, 0x100000, CRC(849e86f9) SHA1(cba1379b4cef793fc08c20607867d01c53d397a4) ) ROM_END + +// Dream Maker ROM_START( drmmake ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2-801", 0x0000, 0x100000, CRC(c809ecf0) SHA1(4ab641f9b805cd13d1fb860a3e9776505474a95d) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mu2.080", 0x000000, 0x100000, CRC(cf54db9e) SHA1(79ad505c766bcdd51e08ff43c0221c14c9f519df) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6-1001", 0x0000, 0x020000, CRC(7a00ad2a) SHA1(67d90b10b4f62922c4ed94bb8a0f77e474ee385d) ) - ROM_LOAD( "dream maker.bin", 0x0000, 0x020000, CRC(49c19eb3) SHA1(a55d4f9a0dd2b1db41fb28f475efa7e9f7c85be6) ) + ROM_LOAD( "mu6.010", 0x000000, 0x020000, CRC(7a00ad2a) SHA1(67d90b10b4f62922c4ed94bb8a0f77e474ee385d) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9.080", 0x000000, 0x100000, CRC(6a453363) SHA1(228652e3915b6d8c1a5523acc77caa65b0c61a1f) ) + ROM_LOAD32_BYTE( "u11.080", 0x000001, 0x100000, CRC(81185cbd) SHA1(0367f0d9c6adf13be4f74863463ed8570209658b) ) + ROM_LOAD32_BYTE( "u13.080", 0x000002, 0x100000, CRC(96c7434f) SHA1(0ed6b3a905d811e9069de446f26b22050d305d7b) ) + ROM_LOAD32_BYTE( "u15.080", 0x000003, 0x100000, CRC(0f8b4209) SHA1(e9f1e03446e9252b843273879e647bf85ed6e1ac) ) + ROM_LOAD32_BYTE( "u8.080", 0x400000, 0x100000, CRC(3975a3da) SHA1(2e2e0647984f38341f6a647964792e60b0b63cd4) ) + ROM_LOAD32_BYTE( "u10.080", 0x400001, 0x100000, CRC(72288580) SHA1(72c430747453df09b3bf13cd1cf044de18ab1333) ) + ROM_LOAD32_BYTE( "u12.080", 0x400002, 0x100000, CRC(2c657b56) SHA1(7377fd4a5e7bd64ece9bb68db993be5a308d9bc8) ) + ROM_LOAD32_BYTE( "u14.080", 0x400003, 0x100000, CRC(146a9774) SHA1(426184154b6ae89a8e659e6a4fdb433a3ce6c449) ) + + // sound (missing or not needed here? there is an OKI M6585 on the mainboard) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED) + ROM_LOAD( "galu35.bin", 0x000000, 0x0002e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) ) +ROM_END + + +// Dream Maker (Russia) +ROM_START( drmmaker ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-801", 0x000000, 0x100000, CRC(c809ecf0) SHA1(4ab641f9b805cd13d1fb860a3e9776505474a95d) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "u6-1001", 0x000000, 0x020000, CRC(7a00ad2a) SHA1(67d90b10b4f62922c4ed94bb8a0f77e474ee385d) ) + ROM_LOAD( "dream maker.bin", 0x000000, 0x020000, CRC(49c19eb3) SHA1(a55d4f9a0dd2b1db41fb28f475efa7e9f7c85be6) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "u9-801", 0x000000, 0x100000, CRC(e560eeff) SHA1(fe33927a91be7ecd2a283bb09b87f5f3d659cf09) ) ROM_LOAD32_BYTE( "u11-801", 0x000001, 0x100000, CRC(693cec8e) SHA1(83d33603fa11aa4341a40b2ffc4862992307dcfc) ) ROM_LOAD32_BYTE( "u13-801", 0x000002, 0x100000, CRC(8b78f6aa) SHA1(74804c44124b71f0f11446da342d0548130394f6) ) @@ -1113,23 +1206,146 @@ ROM_START( drmmake ) ROM_LOAD32_BYTE( "u14-801", 0x400003, 0x100000, CRC(416bcc36) SHA1(9e550f49ba63335b21f45786b87aa6e5b42f2acb) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18-801", 0x0000, 0x100000, CRC(ee2dabf6) SHA1(8fbace51d38d354318d223f259e5b5ae9d922ec5) ) - ROM_LOAD( "u19-801", 0x0000, 0x100000, CRC(bb0029ec) SHA1(ab460d40ee46ee43b195b7a2ece42bcaaa043892) ) - ROM_LOAD( "u20-801", 0x0000, 0x100000, CRC(d9fe585c) SHA1(d5e6d407ce67e7d536a68fcfe834c66cf365716d) ) - ROM_LOAD( "u21-801", 0x0000, 0x100000, CRC(d5e81837) SHA1(ebbd5a3a73c3f440e518103da7e8db8c0818f351) ) + ROM_LOAD( "u18-801", 0x000000, 0x100000, CRC(ee2dabf6) SHA1(8fbace51d38d354318d223f259e5b5ae9d922ec5) ) + ROM_LOAD( "u19-801", 0x000000, 0x100000, CRC(bb0029ec) SHA1(ab460d40ee46ee43b195b7a2ece42bcaaa043892) ) + ROM_LOAD( "u20-801", 0x000000, 0x100000, CRC(d9fe585c) SHA1(d5e6d407ce67e7d536a68fcfe834c66cf365716d) ) + ROM_LOAD( "u21-801", 0x000000, 0x100000, CRC(d5e81837) SHA1(ebbd5a3a73c3f440e518103da7e8db8c0818f351) ) ROM_END +// Golden Glenn (Russia) +ROM_START( goldglen ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(94c48e59) SHA1(b660d81f1659004e08df402ef9da61a1f4818b48) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(94409a39) SHA1(99af058e48147fc75a8c23e4f1a28484f3d5f625) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(01e69d2d) SHA1(a6e6974aec52931aeeb1f90d8f917ab85ebe843e) ) + ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(6c39a180) SHA1(95f91ec10961d36c86dee5ce42fc7c8ab693e271) ) + ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(e60a093f) SHA1(fa0af661f869f80e11097e101ec6100a75d1e63f) ) + ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(9877e8aa) SHA1(2073d451446709d92700cf4afb68e5b04580c620) ) + ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(631d617c) SHA1(44cbd9a8275537f2f8804b1d17645f74cd12fdb1) ) + ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(cdd5e435) SHA1(659b29ab16d5a3878e4984599e83f8d1cf377ca7) ) + ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(dcb50d70) SHA1(7f8c36d5dea9c3ce61c31aef7b310f546095d72e) ) + ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(6c0277b1) SHA1(266c6eb08cb3d9e49cf397a7e01785627892200e) ) + + ROM_REGION( 0x400000, "u18u21", 0 ) // sound + ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(2afed5cf) SHA1(633214458cd47666675464fb3621aaffbe0ca63a) ) + ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) ) + ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(0bcaa5b2) SHA1(c964b7ec99cfc641f91c1a483e68999fc3e23fa4) ) + ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(e2aad0ee) SHA1(2678ae011a820da644e78e0c5d2a6af39c35ac4d) ) +ROM_END + + +// Happy Happy Hippy +ROM_START( haphippy ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "hippy_u2_618c.u2", 0x000000, 0x80000, CRC(36600001) SHA1(906647a7901a4bbf7a347580d8a6d49d0378ed86) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "hippy_u6_e8a7.u6", 0x000000, 0x020000, CRC(16c84599) SHA1(af14cb98c95fad16424f1f9582fcede10f187ef0) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + // No TMS34020 code or sound data? + ROM_LOAD32_BYTE( "haphippy.u9", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "haphippy.u11", 0x000001, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "haphippy.u13", 0x000002, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "haphippy.u15", 0x000003, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "haphippy.u8", 0x400000, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "haphippy.u10", 0x400001, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "haphippy.u12", 0x400002, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "haphippy.u14", 0x400003, 0x100000, NO_DUMP ) +ROM_END + + +// I C Cash (Russia) +ROM_START( iccash ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(27b1c41e) SHA1(55a24301578b2d4e46948362aab8bfbb2918169a) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(5e7d8a05) SHA1(255355cf594c2818d358860e616b5b578a87e974) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(db77fe46) SHA1(2502c5c165a9720e5ff1196eaa17189281c3145c) ) + ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(3a512c6c) SHA1(ba8592773d71e57b3dc6aaff7df1214a57429b10) ) + ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(75fadda8) SHA1(5a968f10e582fbe74000f3de33dc1e2d07c3fec1) ) + ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(10e5a8e7) SHA1(e91de378c9485dce080d2d00a923e75f8be30f9a) ) + ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(0ac57377) SHA1(cbbac3434b5b46f30abe880990300bf0a0393557) ) + ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(03c67464) SHA1(d5a1e657140a31c3f77c6490bcf35075d0546b71) ) + ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(622992ef) SHA1(6a31212436dcda308f1f78abff714bbd97df71ef) ) + ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(ce62e7f9) SHA1(af9eeb7bdb76870e914f1233c9fd496d6c33a615) ) + + ROM_REGION( 0x400000, "u18u21", 0 ) // sound + ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(8e322415) SHA1(14685d1f426187d1fbe878713cd60ece177fdd1b) ) + ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(8ce5ba46) SHA1(012d8686291d9078be8a489e21180681ace06b8b) ) + ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(be59025d) SHA1(b64c707129c1418833c1b5601d0a194c2e29d9a8) ) + ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(d6b79eae) SHA1(a128adbca125f3811edc8c7042bf41b45dc61083) ) +ROM_END + + +// I C Money (set 1) +ROM_START( atricmon ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mb-u2.bin", 0x000000, 0x80000, CRC(0fc3f42f) SHA1(53d189205ede16bc0199a6163a11eb39c2e3f2f1) ) + + ROM_REGION( 0x040000, "u6", 0 ) // config? + ROM_LOAD( "mb-u6.bin", 0x000000, 0x040000, CRC(eb8d3b4f) SHA1(598fb921026685ccfdb0b1804d92b3c6b3313ff4) ) + + ROM_REGION( 0x2e5, "mbpals", 0 ) + ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) ) + ROM_LOAD( "mb-u32-d.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) ) + ROM_LOAD( "mb-u35-65994077_icm-s.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "gb-u9.bin", 0x000000, 0x100000, CRC(eff83f95) SHA1(743f2fb0dd84a83387919db70175aa62f5f6f858) ) + ROM_LOAD32_BYTE( "gb-u11.bin", 0x000001, 0x100000, CRC(3fc27ae9) SHA1(896da175c11b48fb28dbb0678849b8f167cf5f6e) ) + ROM_LOAD32_BYTE( "gb-u13.bin", 0x000002, 0x100000, CRC(6ad50f67) SHA1(b32781f06acc3e9929467d6d1212cf0dc757e5b3) ) + ROM_LOAD32_BYTE( "gb-u15.bin", 0x000003, 0x100000, CRC(6ae46bb3) SHA1(edc51f9a885c483283edb9b0873b980727205a91) ) + ROM_LOAD32_BYTE( "gb-u8.bin", 0x400000, 0x100000, CRC(7dee3392) SHA1(718333ad5552351702e95a76cc2b61f7c3bf14ac) ) + ROM_LOAD32_BYTE( "gb-u10.bin", 0x400001, 0x100000, CRC(db88f900) SHA1(83638b46fd7b6e4229fa5295479c9763c2f690c0) ) + ROM_LOAD32_BYTE( "gb-u12.bin", 0x400002, 0x100000, CRC(fcbada90) SHA1(3206409c9a689e196694831ff5e6ba0fd32d676a) ) + ROM_LOAD32_BYTE( "gb-u14.bin", 0x400003, 0x100000, CRC(055c7ed6) SHA1(8b8f537b8dfd898d2f9eb123303f9488a6ae4567) ) + + // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard +ROM_END + + +// I C Money (set 2) +ROM_START( atricmona ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2.040", 0x000000, 0x80000, CRC(0c047e55) SHA1(73805271a73aa6a573164625801e021b22b1bfaf) ) + + ROM_REGION( 0x040000, "u6", 0 ) // config? + ROM_LOAD( "u6.020", 0x000000, 0x040000, CRC(87f0c657) SHA1(fc537474de157c304d35c852fc15d392753df356) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + // No TMS34020 code or sound data? + ROM_LOAD32_BYTE( "atricmona.u9", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "atricmona.u11", 0x000001, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "atricmona.u13", 0x000002, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "atricmona.u15", 0x000003, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "atricmona.u8", 0x400000, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "atricmona.u10", 0x400001, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "atricmona.u12", 0x400002, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "atricmona.u14", 0x400003, 0x100000, NO_DUMP ) + + ROM_REGION( 0x400000, "pals", 0 ) // pal (converted from JED) + ROM_LOAD( "u35.bin", 0x000000, 0x0002dd, CRC(6c7f3f2a) SHA1(826e5b6bddbc77a19713345c82e388a994c23262) ) +ROM_END +// Jumping Jackpots (Russia) ROM_START( jumpjkpt ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "o_-jujp01-abaaa-ca-std_u02.bin", 0x0000, 0x100000, CRC(d384b881) SHA1(0816fd33578b28c605978dd306b110c421bf5793) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "o_-jujp01-abaaa-ca-std_u02.bin", 0x000000, 0x100000, CRC(d384b881) SHA1(0816fd33578b28c605978dd306b110c421bf5793) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "jujp01-a-za-std_-5_u06.bin", 0x0000, 0x020000, CRC(0f19b0c1) SHA1(c118215bcf502287277c34e6f389af70ab945674) ) + ROM_LOAD( "jujp01-a-za-std_-5_u06.bin", 0x000000, 0x020000, CRC(0f19b0c1) SHA1(c118215bcf502287277c34e6f389af70ab945674) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "jujp01-a_-b-std_-5_u09.bin", 0x000000, 0x100000, CRC(7d3cb293) SHA1(e9f102620f01309327678e115e206fd29dcffde6) ) ROM_LOAD32_BYTE( "jujp01-a_-b-std_-5_u11.bin", 0x000001, 0x100000, CRC(d92c0c7e) SHA1(680032b81e76c74539ff56f8c5fc7d4d16fd4793) ) ROM_LOAD32_BYTE( "jujp01-a_-b-std_-5_u13.bin", 0x000002, 0x100000, CRC(555ced70) SHA1(1ec115a2e2a1c171070775913a3eb831efc81dab) ) @@ -1140,22 +1356,22 @@ ROM_START( jumpjkpt ) ROM_LOAD32_BYTE( "jujp01-a_-b-std_-5_u14.bin", 0x400003, 0x100000, CRC(c4754688) SHA1(1bf172d28795a7313586e9874036be0f7864d7c2) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "jujp01-aa-a-std_-_u18.bin", 0x0000, 0x100000, CRC(fe453a28) SHA1(ec39ac2bd8c7014f61a8db1a8896c771532b6d3b) ) - ROM_LOAD( "jujp01-aa-a-std_-_u19.bin", 0x0000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) ) - ROM_LOAD( "jujp01-aa-a-std_-_u20.bin", 0x0000, 0x100000, CRC(45290607) SHA1(f7af3cf323c7e9c3b1f86b230e73012c56fbf103) ) - ROM_LOAD( "jujp01-aa-a-std_-_u21.bin", 0x0000, 0x100000, CRC(ca8d5cf5) SHA1(17202eb6235ecbfd6301269fe36887c078fd6292) ) + ROM_LOAD( "jujp01-aa-a-std_-_u18.bin", 0x000000, 0x100000, CRC(fe453a28) SHA1(ec39ac2bd8c7014f61a8db1a8896c771532b6d3b) ) + ROM_LOAD( "jujp01-aa-a-std_-_u19.bin", 0x000000, 0x100000, CRC(273c7212) SHA1(0689fd7e3862d01f258fba9773f460ea4803d0a3) ) + ROM_LOAD( "jujp01-aa-a-std_-_u20.bin", 0x000000, 0x100000, CRC(45290607) SHA1(f7af3cf323c7e9c3b1f86b230e73012c56fbf103) ) + ROM_LOAD( "jujp01-aa-a-std_-_u21.bin", 0x000000, 0x100000, CRC(ca8d5cf5) SHA1(17202eb6235ecbfd6301269fe36887c078fd6292) ) ROM_END - +// Mushroom Magic (Russia) ROM_START( mushmagi ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "mb-u02.bin", 0x0000, 0x100000, CRC(bb36ee69) SHA1(3a9ce792941250277c5a8f53bd94f7c38b2e5130) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mb-u02.bin", 0x000000, 0x100000, CRC(bb36ee69) SHA1(3a9ce792941250277c5a8f53bd94f7c38b2e5130) ) ROM_REGION( 0x080000, "u6", 0 ) // config? - ROM_LOAD( "mb-u06.bin", 0x0000, 0x080000, CRC(10e3f3f6) SHA1(458f5be7ee01e361b4c31c099fc721521fbe3864) ) + ROM_LOAD( "mb-u06.bin", 0x000000, 0x080000, CRC(10e3f3f6) SHA1(458f5be7ee01e361b4c31c099fc721521fbe3864) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "gb-u09.bin", 0x000000, 0x100000, CRC(f2d82cee) SHA1(78a15f757bbbb1f4f0a5ab889a9807d886a543a8) ) ROM_LOAD32_BYTE( "gb-u11.bin", 0x000001, 0x100000, CRC(3ead238a) SHA1(21956bd6b24e3281db70b6d28d97ee7bbd9ae75f) ) ROM_LOAD32_BYTE( "gb-u13.bin", 0x000002, 0x100000, CRC(58c191e6) SHA1(b0f86f407958de2b8e0f5e61288f8b6c7a2c0c2f) ) @@ -1166,22 +1382,23 @@ ROM_START( mushmagi ) ROM_LOAD32_BYTE( "gb-u14.bin", 0x400003, 0x100000, CRC(952ada33) SHA1(976492f12db27cedc3219e29536a3256d7ae5675) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "sb-u18.bin", 0x0000, 0x100000, CRC(3ee4c1bd) SHA1(6885585ca1f40790eafac3161de3bcca9a2117c7) ) - ROM_LOAD( "sb-u19.bin", 0x0000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) ) - ROM_LOAD( "sb-u20.bin", 0x0000, 0x100000, CRC(f92276e5) SHA1(62628e9ef166607c42e873d116116dee6bf9b623) ) - ROM_LOAD( "sb-u21.bin", 0x0000, 0x100000, CRC(3c168653) SHA1(ce77851f64cf14e5b074f667d3a723097f78496f) ) + ROM_LOAD( "sb-u18.bin", 0x000000, 0x100000, CRC(3ee4c1bd) SHA1(6885585ca1f40790eafac3161de3bcca9a2117c7) ) + ROM_LOAD( "sb-u19.bin", 0x000000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) ) + ROM_LOAD( "sb-u20.bin", 0x000000, 0x100000, CRC(f92276e5) SHA1(62628e9ef166607c42e873d116116dee6bf9b623) ) + ROM_LOAD( "sb-u21.bin", 0x000000, 0x100000, CRC(3c168653) SHA1(ce77851f64cf14e5b074f667d3a723097f78496f) ) ROM_END +// Spell Master (Russia) ROM_START( splmastr ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "mb-u2 24e1.bin", 0x0000, 0x100000, CRC(e601e214) SHA1(7ff898245198350ea53ca1c3a71b491d55f60880) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mb-u2 24e1.bin", 0x000000, 0x100000, CRC(e601e214) SHA1(7ff898245198350ea53ca1c3a71b491d55f60880) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "mb-u6 ebda.bin", 0x0000, 0x020000, CRC(7e73e9c7) SHA1(a8b00af9a3bf936e54391a96777ac78773b3cee0) ) - ROM_LOAD( "speel master.bin", 0x0000, 0x020000, CRC(04168ab7) SHA1(70a387599bf6629a9a8a6ff38ed0d40e92e54504) ) + ROM_LOAD( "mb-u6 ebda.bin", 0x000000, 0x020000, CRC(7e73e9c7) SHA1(a8b00af9a3bf936e54391a96777ac78773b3cee0) ) + ROM_LOAD( "speel master.bin", 0x000000, 0x020000, CRC(04168ab7) SHA1(70a387599bf6629a9a8a6ff38ed0d40e92e54504) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "gb-u9 b408.bin", 0x000000, 0x100000, CRC(e7146c72) SHA1(21b143ae93a73dd59b652a0033ceaa9116575239) ) ROM_LOAD32_BYTE( "gb-u11 abf6.bin", 0x000001, 0x100000, CRC(de54f849) SHA1(b628a69c8ad5f81543cd78c458dd9348226114a7) ) ROM_LOAD32_BYTE( "gb-u13 6526.bin", 0x000002, 0x100000, CRC(e5744b4f) SHA1(8c36b087dc4fad6cd463abea5b1e7c0bd9c30074) ) @@ -1192,24 +1409,79 @@ ROM_START( splmastr ) ROM_LOAD32_BYTE( "gb-u14 f911.bin", 0x400003, 0x100000, CRC(6d77b13c) SHA1(dab85782a98cc5c21f236044dea0c7617b40469b) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "sb-u18 e1e5.bin", 0x0000, 0x100000, CRC(b0eb4ceb) SHA1(410990faeef6e371205a4344622b88d0db1e09e9) ) - ROM_LOAD( "sb-u19 7d08.bin", 0x0000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) ) - ROM_LOAD( "sb-u20 06ad.bin", 0x0000, 0x100000, CRC(fe354878) SHA1(44abb1a6ba5234c4909ef9f0a2f8b353b0695ff0) ) - ROM_LOAD( "sb-u21 4f56.bin", 0x0000, 0x100000, CRC(54d631a2) SHA1(1fe4278642b5c01e863af5c2ac7ee38d7c94d776) ) + ROM_LOAD( "sb-u18 e1e5.bin", 0x000000, 0x100000, CRC(b0eb4ceb) SHA1(410990faeef6e371205a4344622b88d0db1e09e9) ) + ROM_LOAD( "sb-u19 7d08.bin", 0x000000, 0x100000, CRC(70279081) SHA1(15933d81af85b2c6f831e765f2a4e4f0e44fdc18) ) + ROM_LOAD( "sb-u20 06ad.bin", 0x000000, 0x100000, CRC(fe354878) SHA1(44abb1a6ba5234c4909ef9f0a2f8b353b0695ff0) ) + ROM_LOAD( "sb-u21 4f56.bin", 0x000000, 0x100000, CRC(54d631a2) SHA1(1fe4278642b5c01e863af5c2ac7ee38d7c94d776) ) +ROM_END + + +// Sphinx II +ROM_START( sphinxii ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "sphinx2_3ab9.u2", 0x000000, 0x100000, CRC(5e29a69b) SHA1(fbbff1187390a27dd385c091bb69dc4d73c2a72f) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "sphinx2.u6", 0x000000, 0x020000, CRC(4d37999a) SHA1(678dc788cfe00ab2599df08941660324793d7f6c) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "gpg.u9", 0x000000, 0x100000, CRC(3714e7af) SHA1(5213207ef525367f82a1ce5e49751c2d987a05c9) ) + ROM_LOAD32_BYTE( "gpg.u11", 0x000001, 0x100000, CRC(9d7c4f17) SHA1(5ffe06a23642f3915087f6499bf83aec8ea7a4f2) ) + ROM_LOAD32_BYTE( "gpg.u13", 0x000002, 0x100000, CRC(07a167bd) SHA1(451e0fb2c268618f554f3782aad78056f66fbbbc) ) + ROM_LOAD32_BYTE( "gpg.u15", 0x000003, 0x100000, CRC(552ca8bf) SHA1(091c5fa821d33facda8810e3f3ed1ec0c84dd055) ) + ROM_LOAD32_BYTE( "gpg.u8", 0x400000, 0x100000, CRC(a719fd7f) SHA1(de09676375f21f816828fde8a6b7ae5ed741fc4c) ) + ROM_LOAD32_BYTE( "gpg.u10", 0x400001, 0x100000, CRC(9886a639) SHA1(752b759269a401493bce41590691feafe0bf2998) ) + ROM_LOAD32_BYTE( "gpg.u12", 0x400002, 0x100000, CRC(6f6dd839) SHA1(01ffa589df669ebe4825418617a532e128c5514d) ) + ROM_LOAD32_BYTE( "gpg.u14", 0x400003, 0x100000, NO_DUMP ) + + ROM_REGION( 0x400000, "u18u21", 0 ) // sound + ROM_LOAD( "spxsndu18.080", 0x000000, 0x100000, CRC(52da6133) SHA1(51ba2c586ffeddca1d8e345c644525cbccffdba8) ) + ROM_LOAD( "spxsndu19.080", 0x000000, 0x100000, CRC(3aed50bc) SHA1(c7abc91dbddf9bccac9cc9a5b73fbd9b22878ca9) ) + ROM_LOAD( "spxsndu20.080", 0x000000, 0x100000, CRC(0a8ac239) SHA1(7d58abaff09a7e61d1380121d085a5601549e908) ) + ROM_LOAD( "spxsndu21.080", 0x000000, 0x100000, CRC(d4621e8d) SHA1(6ec49c52b88e648dbe2fe3c47868946369d717cf) ) ROM_END + +// Sphinx II (Russia) +ROM_START( sphinxiir ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2-80.bin", 0x000000, 0x100000, CRC(943d35a7) SHA1(17ead3a7f084b5e384f99903f57360ff9e133026) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "u6-10.bin", 0x000000, 0x020000, CRC(4d37999a) SHA1(678dc788cfe00ab2599df08941660324793d7f6c) ) + ROM_LOAD( "sphinx ii.bin", 0x000000, 0x020000, CRC(7fae09a6) SHA1(5c26798337d3691d81f853ee447cb7119fce7b14) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + ROM_LOAD32_BYTE( "u9-80.bin", 0x000000, 0x100000, CRC(c54e4e07) SHA1(1249494773dae044a7bb4381b084e3d2e14367d7) ) + ROM_LOAD32_BYTE( "u11-80.bin", 0x000001, 0x100000, CRC(5c1e82ab) SHA1(f22ba1dc6799388e855d8f3064b96d568619a75b) ) + ROM_LOAD32_BYTE( "u13-80.bin", 0x000002, 0x100000, CRC(fb49ae3e) SHA1(bf0cb5815639ebc3db3333249ab2ed81d3bdc684) ) + ROM_LOAD32_BYTE( "u15-80.bin", 0x000003, 0x100000, CRC(ac741fb5) SHA1(a52eaa4a43cd522885d5d9b024c0646279dffe25) ) + ROM_LOAD32_BYTE( "u8-80.bin", 0x400000, 0x100000, CRC(ca4c1626) SHA1(6a883f713272ea70fd0757f9d0e07379925973a3) ) + ROM_LOAD32_BYTE( "u10-80.bin", 0x400001, 0x100000, CRC(b64deef1) SHA1(b3c4baef7137af5b25402cec474f92333d93e727) ) + ROM_LOAD32_BYTE( "u12-80.bin", 0x400002, 0x100000, CRC(cf5a97b7) SHA1(6cb490a5a0c9e908593beff3aee374eddef19a5f) ) + ROM_LOAD32_BYTE( "u14-80.bin", 0x400003, 0x100000, CRC(98730028) SHA1(86b782bea8caf33dab9656c93856fc345977f7cc) ) + + ROM_REGION( 0x400000, "u18u21", 0 ) // sound + ROM_LOAD( "u18-80.bin", 0x000000, 0x100000, CRC(52da6133) SHA1(51ba2c586ffeddca1d8e345c644525cbccffdba8) ) + ROM_LOAD( "u19-80.bin", 0x000000, 0x100000, CRC(3aed50bc) SHA1(c7abc91dbddf9bccac9cc9a5b73fbd9b22878ca9) ) + ROM_LOAD( "u20-80.bin", 0x000000, 0x100000, CRC(0a8ac239) SHA1(7d58abaff09a7e61d1380121d085a5601549e908) ) + ROM_LOAD( "u21-80.bin", 0x000000, 0x100000, CRC(d4621e8d) SHA1(6ec49c52b88e648dbe2fe3c47868946369d717cf) ) +ROM_END + + +// Taj Mahal (Russia) ROM_START( tajmah ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "ovtddfxe.8u2", 0x0000, 0x100000, CRC(83639f76) SHA1(f982222f8ae635c34413b316fe55de76fdc8535e) ) - ROM_LOAD( "vtddfxd.801", 0x0000, 0x100000, CRC(b0eb5468) SHA1(09e8ceca4cf3bea6447b9c9c0ee5776cbd32f098) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "ovtddfxe.8u2", 0x000000, 0x100000, CRC(83639f76) SHA1(f982222f8ae635c34413b316fe55de76fdc8535e) ) + ROM_LOAD( "vtddfxd.801", 0x000000, 0x100000, CRC(b0eb5468) SHA1(09e8ceca4cf3bea6447b9c9c0ee5776cbd32f098) ) ROM_REGION( 0x040000, "u6", 0 ) // config? - ROM_LOAD( "590f4-d.u6", 0x0000, 0x040000, CRC(b346765d) SHA1(567ae4fa740a4bd26485b72f3fd0e57d7a18512e) ) - ROM_LOAD( "t510f14b.2u6", 0x0000, 0x040000, CRC(ff6add95) SHA1(b1fa169e61a774d1ce5c0c1b4f80baa289ca696e) ) - ROM_LOAD( "t595f03c.2u6", 0x0000, 0x040000, CRC(b173164c) SHA1(91390cc2568de1c61df6b427bec9060fa7b0829a) ) - ROM_LOAD( "t595f07b.u6", 0x0000, 0x040000, CRC(7ef35e2f) SHA1(d2b4d392d66784900bf8413d4adbd1e37de11a67) ) + ROM_LOAD( "590f4-d.u6", 0x000000, 0x040000, CRC(b346765d) SHA1(567ae4fa740a4bd26485b72f3fd0e57d7a18512e) ) + ROM_LOAD( "t510f14b.2u6", 0x000000, 0x040000, CRC(ff6add95) SHA1(b1fa169e61a774d1ce5c0c1b4f80baa289ca696e) ) + ROM_LOAD( "t595f03c.2u6", 0x000000, 0x040000, CRC(b173164c) SHA1(91390cc2568de1c61df6b427bec9060fa7b0829a) ) + ROM_LOAD( "t595f07b.u6", 0x000000, 0x040000, CRC(7ef35e2f) SHA1(d2b4d392d66784900bf8413d4adbd1e37de11a67) ) - ROM_REGION16_LE( 0x800000, "user2", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION16_LE( 0x800000, "user2", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "t5_d01d.u9", 0x400000, 0x080000, CRC(d1a0e88b) SHA1(c68c9be2413725b698fccda74c120a732bc1b5ab) ) ROM_LOAD32_BYTE( "t5_d01d.u11", 0x400001, 0x080000, CRC(e063b35e) SHA1(54fb8831e4529b85740f22ddb181649ebfad8f03) ) ROM_LOAD32_BYTE( "t5_d01d.u13", 0x400002, 0x080000, CRC(9d3f04d2) SHA1(a6f6b564f7165aa992bc0dd8c090fa8cecd1953c) ) @@ -1219,7 +1491,7 @@ ROM_START( tajmah ) ROM_LOAD32_BYTE( "t5_d01d.u12", 0x600002, 0x080000, CRC(c2ca0b17) SHA1(cfd553f1943552620f6d324f767fd1f1957e8e25) ) ROM_LOAD32_BYTE( "t5_d01d.u14", 0x600003, 0x080000, CRC(0d512057) SHA1(f5f43dad25940193516d467725ecbe1989cc9003) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) - is this an alt set, or a 2nd video board? */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) - is this an alt set, or a 2nd video board? ROM_LOAD32_BYTE( "u9", 0x400000, 0x080000, CRC(157b9860) SHA1(6e04f035a945a63617e32b196fa0c1b6fd26b281) ) ROM_LOAD32_BYTE( "u11", 0x400001, 0x080000, CRC(6aa2cecc) SHA1(7b1d6bb81fed7413f69e926e7cefe1ee171453b4) ) ROM_LOAD32_BYTE( "u13", 0x400002, 0x080000, CRC(5c091b7a) SHA1(d1c758a6d155bbc7359f3f46a29bac44d96ec4b1) ) @@ -1232,27 +1504,28 @@ ROM_START( tajmah ) // sound (missing or not needed here? there is an OKI M6585 on the mainboard) /* ROM_REGION( 0x400000, "u18u21", 0 ) - ROM_LOAD( "u18", 0x0000, 0x100000, NO_DUMP ) - ROM_LOAD( "u19", 0x0000, 0x100000, NO_DUMP ) - ROM_LOAD( "u20", 0x0000, 0x100000, NO_DUMP ) - ROM_LOAD( "u21", 0x0000, 0x100000, NO_DUMP ) + ROM_LOAD( "u18", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD( "u19", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD( "u20", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD( "u21", 0x000000, 0x100000, NO_DUMP ) */ ROM_END +// Three Wishes Red (Russia) ROM_START( 3wishrd ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "3w-baca.8u2", 0x0000, 0x100000, CRC(14ca9f18) SHA1(8bf5eaa11ca70d14c7ed69a17c4610ecca6f76f8) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "3w-baca.8u2", 0x000000, 0x100000, CRC(14ca9f18) SHA1(8bf5eaa11ca70d14c7ed69a17c4610ecca6f76f8) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "3590a25a.1u6", 0x0000, 0x020000, CRC(8a10399e) SHA1(9658705821cdd39e1022a2b63dd61355d44c23f6) ) - ROM_LOAD( "3590a26a.1u6", 0x0000, 0x020000, CRC(86ec866d) SHA1(1fbcbfec49900e45ed7866857b0314de07020405) ) - ROM_LOAD( "35b0a03a.1u6", 0x0000, 0x020000, CRC(a25650d7) SHA1(72c1c58cf933c7b6fc85c071f48768e482e99ff7) ) - ROM_LOAD( "35b0a04a.1u6", 0x0000, 0x020000, CRC(36930b7c) SHA1(23d578450fc3185389058da367345ac20883b6f4) ) - ROM_LOAD( "three wishes.bin", 0x0000, 0x020000, CRC(37d85da7) SHA1(64db855e06dab5ea85c669bd72f1e8ee8856607a) ) - ROM_LOAD( "590a13a.1u6", 0x0000, 0x020000, CRC(3e674907) SHA1(ca933c416764ebf355d8e04f871f8421c9039078) ) - - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_LOAD( "3590a25a.1u6", 0x000000, 0x020000, CRC(8a10399e) SHA1(9658705821cdd39e1022a2b63dd61355d44c23f6) ) + ROM_LOAD( "3590a26a.1u6", 0x000000, 0x020000, CRC(86ec866d) SHA1(1fbcbfec49900e45ed7866857b0314de07020405) ) + ROM_LOAD( "35b0a03a.1u6", 0x000000, 0x020000, CRC(a25650d7) SHA1(72c1c58cf933c7b6fc85c071f48768e482e99ff7) ) + ROM_LOAD( "35b0a04a.1u6", 0x000000, 0x020000, CRC(36930b7c) SHA1(23d578450fc3185389058da367345ac20883b6f4) ) + ROM_LOAD( "three wishes.bin", 0x000000, 0x020000, CRC(37d85da7) SHA1(64db855e06dab5ea85c669bd72f1e8ee8856607a) ) + ROM_LOAD( "590a13a.1u6", 0x000000, 0x020000, CRC(3e674907) SHA1(ca933c416764ebf355d8e04f871f8421c9039078) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "tw5b01a.8u9", 0x000000, 0x100000, CRC(2410659a) SHA1(2bcd2539c0e3e7389c27c21e58d9199b9c7c742e) ) ROM_LOAD32_BYTE( "tw5b01a.u11", 0x000001, 0x100000, CRC(44ca9ce1) SHA1(b1c6d83f749202c072c6ce99c0470a31cfab8986) ) ROM_LOAD32_BYTE( "tw5b01a.u13", 0x000002, 0x100000, CRC(6c60097b) SHA1(f5ddb86b481b7b95d6ec151b37d662b583817813) ) @@ -1263,25 +1536,47 @@ ROM_START( 3wishrd ) ROM_LOAD32_BYTE( "tw5b01a.u14", 0x400003, 0x100000, CRC(85f30657) SHA1(e055e1fdeeab2fd82bb23b80416b421eb9143967) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "wishaaa.u18", 0x0000, 0x100000, CRC(c258c2c7) SHA1(900497e2e023e2ac1b62c5dabfaf95e5bf0b855b) ) - ROM_LOAD( "wishaaa.u19", 0x0000, 0x100000, CRC(09d186a9) SHA1(1d784fd3591583c99fac516a8c4cf47c3932d084) ) - ROM_LOAD( "wishaaa.u20", 0x0000, 0x100000, CRC(be187745) SHA1(c96458bbc9164a4ca3bca94f0ac5a4fe9f1b1dfa) ) - ROM_LOAD( "wishaaa.u21", 0x0000, 0x100000, CRC(466b34e1) SHA1(3f5236ea78bde8bfb998367e913f42d23b4c17f1) ) + ROM_LOAD( "wishaaa.u18", 0x000000, 0x100000, CRC(c258c2c7) SHA1(900497e2e023e2ac1b62c5dabfaf95e5bf0b855b) ) + ROM_LOAD( "wishaaa.u19", 0x000000, 0x100000, CRC(09d186a9) SHA1(1d784fd3591583c99fac516a8c4cf47c3932d084) ) + ROM_LOAD( "wishaaa.u20", 0x000000, 0x100000, CRC(be187745) SHA1(c96458bbc9164a4ca3bca94f0ac5a4fe9f1b1dfa) ) + ROM_LOAD( "wishaaa.u21", 0x000000, 0x100000, CRC(466b34e1) SHA1(3f5236ea78bde8bfb998367e913f42d23b4c17f1) ) +ROM_END + + +// Typhoon Lagoon +ROM_START( tylagoon ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "typhoonu241co", 0x000000, 0x100000, CRC(5a619390) SHA1(c96ed082fcf6650da0770ff2fdff0ba387bf639e) ) + + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "typhoonu69b00", 0x000000, 0x020000, CRC(31077e74) SHA1(953b63c91b3ace5d9e5af01c355bdbc7cbc8005f) ) + + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + // No TMS34020 code or sound data? + ROM_LOAD32_BYTE( "tylagoon.u9", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "tylagoon.u11", 0x000001, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "tylagoon.u13", 0x000002, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "tylagoon.u15", 0x000003, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "tylagoon.u8" , 0x400000, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "tylagoon.u10", 0x400001, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "tylagoon.u12", 0x400002, 0x100000, NO_DUMP ) + ROM_LOAD32_BYTE( "tylagoon.u14", 0x400003, 0x100000, NO_DUMP ) ROM_END +// Wild Thing ROM_START( atrwild ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "mb-u2.bin", 0x0000, 0x80000, CRC(e72a2339) SHA1(ad191dbbd0ac1f3288c45e336f27f693877273a9) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "mb-u2.bin", 0x000000, 0x80000, CRC(e72a2339) SHA1(ad191dbbd0ac1f3288c45e336f27f693877273a9) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "mb-u6.bin", 0x0000, 0x020000, CRC(f310e88d) SHA1(5d354e2a9de9eff27e66a4b1ca0925b19c6c86cc) ) + ROM_LOAD( "mb-u6.bin", 0x000000, 0x020000, CRC(f310e88d) SHA1(5d354e2a9de9eff27e66a4b1ca0925b19c6c86cc) ) ROM_REGION( 0x117, "mbpals", 0 ) ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) ) ROM_LOAD( "mb-u32-b.bin", 0x000, 0x117, CRC(78a9310b) SHA1(deb84d96b0411b05c54fb2c998bed020a37d5005) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) ROM_LOAD32_BYTE( "u8.bin", 0x600000, 0x080000, CRC(4acafd98) SHA1(d516c55ddce1470e4e19725b6d7dfd5f70ba1129) ) ROM_LOAD32_BYTE( "u10.bin", 0x600001, 0x080000, CRC(804800be) SHA1(5fb2a5479c2a7073c2abd40e14a162fbf783eb70) ) ROM_LOAD32_BYTE( "u12.bin", 0x600002, 0x080000, CRC(0845ff27) SHA1(5012569a79c9fcbee178a0cee45d25769a1cf9be) ) @@ -1290,73 +1585,44 @@ ROM_START( atrwild ) // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard ROM_END -ROM_START( atricmon ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "mb-u2.bin", 0x0000, 0x80000, CRC(0fc3f42f) SHA1(53d189205ede16bc0199a6163a11eb39c2e3f2f1) ) - - ROM_REGION( 0x040000, "u6", 0 ) // config? - ROM_LOAD( "mb-u6.bin", 0x0000, 0x040000, CRC(eb8d3b4f) SHA1(598fb921026685ccfdb0b1804d92b3c6b3313ff4) ) - - ROM_REGION( 0x2e5, "mbpals", 0 ) - ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) ) - ROM_LOAD( "mb-u32-d.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) ) - ROM_LOAD( "mb-u35-65994077_icm-s.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) ) +/********** Sets below on different hardware? **********/ - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "gb-u9.bin", 0x000000, 0x100000, CRC(eff83f95) SHA1(743f2fb0dd84a83387919db70175aa62f5f6f858) ) - ROM_LOAD32_BYTE( "gb-u11.bin", 0x000001, 0x100000, CRC(3fc27ae9) SHA1(896da175c11b48fb28dbb0678849b8f167cf5f6e) ) - ROM_LOAD32_BYTE( "gb-u13.bin", 0x000002, 0x100000, CRC(6ad50f67) SHA1(b32781f06acc3e9929467d6d1212cf0dc757e5b3) ) - ROM_LOAD32_BYTE( "gb-u15.bin", 0x000003, 0x100000, CRC(6ae46bb3) SHA1(edc51f9a885c483283edb9b0873b980727205a91) ) - ROM_LOAD32_BYTE( "gb-u8.bin", 0x400000, 0x100000, CRC(7dee3392) SHA1(718333ad5552351702e95a76cc2b61f7c3bf14ac) ) - ROM_LOAD32_BYTE( "gb-u10.bin", 0x400001, 0x100000, CRC(db88f900) SHA1(83638b46fd7b6e4229fa5295479c9763c2f690c0) ) - ROM_LOAD32_BYTE( "gb-u12.bin", 0x400002, 0x100000, CRC(fcbada90) SHA1(3206409c9a689e196694831ff5e6ba0fd32d676a) ) - ROM_LOAD32_BYTE( "gb-u14.bin", 0x400003, 0x100000, CRC(055c7ed6) SHA1(8b8f537b8dfd898d2f9eb123303f9488a6ae4567) ) - - // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard -ROM_END - -ROM_START( atrbonpk ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "mb-u2.bin", 0x0000, 0x80000, CRC(7f9d9d3c) SHA1(501d3f1482b3c67cbc94a3af40ef31fb5a6e7921) ) - - ROM_REGION( 0x080000, "u6", 0 ) // config? - ROM_LOAD( "mb-u6.bin", 0x0000, 0x080000, CRC(0b8d47ba) SHA1(aa1d5b37c330f4f44c1af5caca24bbf670c0bbcb) ) - - ROM_REGION( 0x2e5, "mbpals", 0 ) - ROM_LOAD( "mb-u22-d.bin", 0x000, 0x117, CRC(dc097847) SHA1(305294284d0ffd578f9115b836ef1f9e906c1599) ) - ROM_LOAD( "mb-u32-i.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8)) - ROM_LOAD( "mb-u35-poke-s6366.bin", 0x000, 0x2e5, CRC(996854bc) SHA1(647d2f49b739f7ca55c0b85290b6a21256834fd8) ) +// Bear Necessities (Russia) +ROM_START( bearnec ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u2_0_-bene01-afaaa-ce-rus_b178.bin", 0x000000, 0x100000, CRC(fc71f0b8) SHA1(6c124211614101ef151fe405bef0ee88277b8d2b) ) - ROM_REGION( 0x117, "gfxpals", 0 ) - ROM_LOAD( "u2-f.bin", 0x000, 0x117, CRC(eb5548c2) SHA1(7ccc6a7de0c0765e0da3563f3ee83dd99acc50bf) ) - ROM_LOAD( "u3-i.bin", 0x000, 0x117, CRC(769f7b32) SHA1(72df7c92367403a95c5bda3d6a643cc8fc24e153) ) - ROM_LOAD( "u4-c.bin", 0x000, 0x117, CRC(91e043ea) SHA1(d4d0c721c6c37cbe8babe148bc9887038cdf4820) ) - ROM_LOAD( "u5-a.bin", 0x000, 0x117, CRC(18ffc746) SHA1(e32dd74fb535fd4a754579173a788712b3e6ec30) ) - ROM_LOAD( "u6-b.bin", 0x000, 0x117, CRC(2750fb0a) SHA1(3814c4755a215073425a9d6bb048315498962c76) ) - ROM_LOAD( "u7-a.bin", 0x000, 0x117, CRC(adcb2789) SHA1(cc2ebd69abec73d66665faaec19b8706e539b34c) ) + ROM_REGION( 0x020000, "u6", 0 ) // config? + ROM_LOAD( "u6_bene21-e-zg-std_-5-xx-xx-axx_0f78.bin", 0x000000, 0x020000, CRC(d956484f) SHA1(d2d659a4350d7204666234a511ebd4dd7a021d89) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - ROM_LOAD32_BYTE( "u9.bin", 0x400000, 0x080000, CRC(5b8450f1) SHA1(27fc771c3fb824cdb845237324984778fcd0a737) ) - ROM_LOAD32_BYTE( "u11.bin", 0x400001, 0x080000, CRC(c8c52bd1) SHA1(081b8b4c46f18d030329bf519a8ed50385f7c062) ) - ROM_LOAD32_BYTE( "u13.bin", 0x400002, 0x080000, CRC(23164a85) SHA1(e6de6aac28f1dac9ea908aaab9760b56ded1bb91) ) - ROM_LOAD32_BYTE( "u15.bin", 0x400003, 0x080000, CRC(aabbb4ff) SHA1(4a13475929141a4824b15347873cf330f7f7b0d0) ) - ROM_LOAD32_BYTE( "u8.bin", 0x600000, 0x080000, CRC(d6dfde87) SHA1(f3221adecb67ee593d52a1bbbdcee78dde497dbd) ) - ROM_LOAD32_BYTE( "u10.bin", 0x600001, 0x080000, CRC(d81a1f77) SHA1(c3ec3a06dacc3f528c9bcfa7a18e25e0126b1d85) ) - ROM_LOAD32_BYTE( "u12.bin", 0x600002, 0x080000, CRC(4b24dc03) SHA1(f875f09c6d44821b169e111cb1ea3d9716746d5f) ) - ROM_LOAD32_BYTE( "u14.bin", 0x600003, 0x080000, CRC(a6dc78ff) SHA1(96457601e7f90ce14a88765f70accc07d7236d30) ) + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) + // not valid TMS code, looks like some x86 drive image split into ROMs? + ROM_LOAD( "u09_a632.bin", 0x000000, 0x100000, CRC(a671b6e8) SHA1(86b97ba98fdd09575a371b5b7f7d42bf2916fe17) ) + ROM_LOAD( "u11_947b.bin", 0x100000, 0x100000, CRC(3dc60963) SHA1(d824cd4fbe4116744727180762fbf0ffe22e6398) ) + ROM_LOAD( "u13_60e8.bin", 0x200000, 0x100000, CRC(11b25ede) SHA1(07d4901e985ed9b83d8630b748b82a408e26bac6) ) + ROM_LOAD( "u15_6c49.bin", 0x300000, 0x100000, CRC(f56e40ac) SHA1(7c5e0bb7a8bafea6ae57b5933c93230478ac74b2) ) + ROM_LOAD( "u08_f54f.bin", 0x400000, 0x100000, CRC(ce601695) SHA1(585b9e7c57072e7bff03fd34748fdadab6ff1b08) ) + ROM_LOAD( "u10_d622.bin", 0x500000, 0x100000, CRC(4ac9e636) SHA1(35d0bfd6c456e2cd5d1f950ea58edc8e92e05933) ) + ROM_LOAD( "u12_8bfa.bin", 0x600000, 0x100000, CRC(fa722d3f) SHA1(1275d0f6f06604e736a03b6031b7aeb46d7c6f07) ) + ROM_LOAD( "u14_d9c6.bin", 0x700000, 0x100000, CRC(fd9e0ebf) SHA1(0c6b2ddb397994ca62e80cd7c802a778fc287549) ) - // no dedicated sound ROM board present in cage, missing or not needed here? there is an OKI M6585 on the mainboard + ROM_REGION( 0x400000, "u18u21", 0 ) // sound + ROM_LOAD( "u18_96c0.bin", 0x000000, 0x100000, CRC(0cf7eb95) SHA1(96e6f21b359198b0f893ed69d2bc23ad2db34f33) ) + ROM_LOAD( "u19_7c1c.bin", 0x000000, 0x100000, CRC(17ca92ee) SHA1(cdc4297c591db33a75ab716db7cf5620c13e8a84) ) + ROM_LOAD( "u20_3123.bin", 0x000000, 0x100000, CRC(0932857c) SHA1(a30c1e40811581230da72c384679c0c21cced4c2) ) + ROM_LOAD( "u21_8bb6.bin", 0x000000, 0x100000, CRC(c1a25921) SHA1(d54eb230c8ebde69f00bfab1088b7a39809e5ee2) ) ROM_END +// Big Cheese (Russia) ROM_START( abigchs ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "o_-bigc01-afbaa-cc-rus_.8mu02", 0x0000, 0x100000, CRC(969082d8) SHA1(f3bcdc631ac1c346993a8d7300ba6687a32669f7) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "o_-bigc01-afbaa-cc-rus_.8mu02", 0x000000, 0x100000, CRC(969082d8) SHA1(f3bcdc631ac1c346993a8d7300ba6687a32669f7) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "bigc21-d-zf-std_-5-xx-xx-axx.1mu06", 0x0000, 0x020000, CRC(0eb376fb) SHA1(34e1f28e71503ffb0e1e922bd3ba17bad0d37d99) ) + ROM_LOAD( "bigc21-d-zf-std_-5-xx-xx-axx.1mu06", 0x000000, 0x020000, CRC(0eb376fb) SHA1(34e1f28e71503ffb0e1e922bd3ba17bad0d37d99) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) // not valid TMS code, looks like some x86 drive image split into ROMs? ROM_LOAD( "bigc01-a_-f-rus_-5_-g101.wigu09", 0x000000, 0x100000, CRC(c87e6bb4) SHA1(387e2498625ff718fccaa7701dd595ee787b9a83) ) ROM_LOAD( "bigc01-a_-f-rus_-5_-g101.wigu11", 0x100000, 0x100000, CRC(c9e9fa7f) SHA1(1698215845f21cfde0274e880d89c66fb3226f04) ) @@ -1368,45 +1634,22 @@ ROM_START( abigchs ) ROM_LOAD( "bigc01-a_-f-rus_-5_-g101.wigu14", 0x700000, 0x100000, CRC(5cf1c75a) SHA1(951289b5cad7ede582da93103acacc41af7622d9) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "bigc01-ba-a-std_-_.8su18", 0x0000, 0x100000, CRC(79c99749) SHA1(bcdd61ff287877833ab6ca56a278b1d68e47608f) ) - ROM_LOAD( "bigc01-ba-a-std_-_.8su19", 0x0000, 0x100000, CRC(deb7a0b5) SHA1(d8526e42273003f8249007df2d8b6ba33b727324) ) - ROM_LOAD( "bigc01-ba-a-std_-_.8su20", 0x0000, 0x100000, CRC(f94998a7) SHA1(c0fced89584ce5b67ba68cd93f1f8348ac36fd26) ) - ROM_LOAD( "bigc01-ba-a-std_-_.8su21", 0x0000, 0x100000, CRC(08a34088) SHA1(009311d126eb78514133f0f6ef28548c42d50b1c) ) + ROM_LOAD( "bigc01-ba-a-std_-_.8su18", 0x000000, 0x100000, CRC(79c99749) SHA1(bcdd61ff287877833ab6ca56a278b1d68e47608f) ) + ROM_LOAD( "bigc01-ba-a-std_-_.8su19", 0x000000, 0x100000, CRC(deb7a0b5) SHA1(d8526e42273003f8249007df2d8b6ba33b727324) ) + ROM_LOAD( "bigc01-ba-a-std_-_.8su20", 0x000000, 0x100000, CRC(f94998a7) SHA1(c0fced89584ce5b67ba68cd93f1f8348ac36fd26) ) + ROM_LOAD( "bigc01-ba-a-std_-_.8su21", 0x000000, 0x100000, CRC(08a34088) SHA1(009311d126eb78514133f0f6ef28548c42d50b1c) ) ROM_END -ROM_START( bearnec ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u2_0_-bene01-afaaa-ce-rus_b178.bin", 0x0000, 0x100000, CRC(fc71f0b8) SHA1(6c124211614101ef151fe405bef0ee88277b8d2b) ) - - ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u6_bene21-e-zg-std_-5-xx-xx-axx_0f78.bin", 0x0000, 0x020000, CRC(d956484f) SHA1(d2d659a4350d7204666234a511ebd4dd7a021d89) ) - - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ - // not valid TMS code, looks like some x86 drive image split into ROMs? - ROM_LOAD( "u09_a632.bin", 0x000000, 0x100000, CRC(a671b6e8) SHA1(86b97ba98fdd09575a371b5b7f7d42bf2916fe17) ) - ROM_LOAD( "u11_947b.bin", 0x100000, 0x100000, CRC(3dc60963) SHA1(d824cd4fbe4116744727180762fbf0ffe22e6398) ) - ROM_LOAD( "u13_60e8.bin", 0x200000, 0x100000, CRC(11b25ede) SHA1(07d4901e985ed9b83d8630b748b82a408e26bac6) ) - ROM_LOAD( "u15_6c49.bin", 0x300000, 0x100000, CRC(f56e40ac) SHA1(7c5e0bb7a8bafea6ae57b5933c93230478ac74b2) ) - ROM_LOAD( "u08_f54f.bin", 0x400000, 0x100000, CRC(ce601695) SHA1(585b9e7c57072e7bff03fd34748fdadab6ff1b08) ) - ROM_LOAD( "u10_d622.bin", 0x500000, 0x100000, CRC(4ac9e636) SHA1(35d0bfd6c456e2cd5d1f950ea58edc8e92e05933) ) - ROM_LOAD( "u12_8bfa.bin", 0x600000, 0x100000, CRC(fa722d3f) SHA1(1275d0f6f06604e736a03b6031b7aeb46d7c6f07) ) - ROM_LOAD( "u14_d9c6.bin", 0x700000, 0x100000, CRC(fd9e0ebf) SHA1(0c6b2ddb397994ca62e80cd7c802a778fc287549) ) - - ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "u18_96c0.bin", 0x0000, 0x100000, CRC(0cf7eb95) SHA1(96e6f21b359198b0f893ed69d2bc23ad2db34f33) ) - ROM_LOAD( "u19_7c1c.bin", 0x0000, 0x100000, CRC(17ca92ee) SHA1(cdc4297c591db33a75ab716db7cf5620c13e8a84) ) - ROM_LOAD( "u20_3123.bin", 0x0000, 0x100000, CRC(0932857c) SHA1(a30c1e40811581230da72c384679c0c21cced4c2) ) - ROM_LOAD( "u21_8bb6.bin", 0x0000, 0x100000, CRC(c1a25921) SHA1(d54eb230c8ebde69f00bfab1088b7a39809e5ee2) ) -ROM_END +// Gold City (Russia) ROM_START( goldcity ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "o_-goci01-afaaa-cd-rus_.8mu02", 0x0000, 0x100000, CRC(59c19539) SHA1(7c40eee8e534795a44b33140535284b2bc2a9ac5) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "o_-goci01-afaaa-cd-rus_.8mu02", 0x000000, 0x100000, CRC(59c19539) SHA1(7c40eee8e534795a44b33140535284b2bc2a9ac5) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "goci21-e-zf-std_-5-xx-xx-axx.1mu06", 0x0000, 0x020000, CRC(73ab9c41) SHA1(0888923bdaede83f264979c0757894f5cb2e0ec8) ) + ROM_LOAD( "goci21-e-zf-std_-5-xx-xx-axx.1mu06", 0x000000, 0x020000, CRC(73ab9c41) SHA1(0888923bdaede83f264979c0757894f5cb2e0ec8) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) // not valid TMS code, looks like some x86 drive image split into ROMs? ROM_LOAD( "goci01-a_-c-rus_-5_-g101.wigu09", 0x000000, 0x100000, CRC(72c9b584) SHA1(1345e7ea34a819fbc01b9a64e9f9c1a2de927dda) ) ROM_LOAD( "goci01-a_-c-rus_-5_-g101.wigu11", 0x100000, 0x100000, CRC(2ebe1d71) SHA1(1b540c3bb9b232f475c3fe2b56c55f473d8c09ee) ) @@ -1420,21 +1663,23 @@ ROM_START( goldcity ) // sound (missing or not needed here? there is an OKI M6585 on the mainboard) /* ROM_REGION( 0x400000, "u18u21", 0 ) - ROM_LOAD( "u18", 0x0000, 0x100000, NO_DUMP ) - ROM_LOAD( "u19", 0x0000, 0x100000, NO_DUMP ) - ROM_LOAD( "u20", 0x0000, 0x100000, NO_DUMP ) - ROM_LOAD( "u21", 0x0000, 0x100000, NO_DUMP ) + ROM_LOAD( "u18", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD( "u19", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD( "u20", 0x000000, 0x100000, NO_DUMP ) + ROM_LOAD( "u21", 0x000000, 0x100000, NO_DUMP ) */ ROM_END + +// Santa Maria (Russia) ROM_START( santam ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* Z8018010VSC code (Z180) */ - ROM_LOAD( "u02_8m_m27c801-100f1_d6f7h.bin", 0x0000, 0x100000, CRC(8c0ed828) SHA1(e24cd0783a4290799db11ca8764b70cd380f2879) ) + ROM_REGION( 0x100000, "maincpu", 0 ) // Z8018010VSC code (Z180) + ROM_LOAD( "u02_8m_m27c801-100f1_d6f7h.bin", 0x000000, 0x100000, CRC(8c0ed828) SHA1(e24cd0783a4290799db11ca8764b70cd380f2879) ) ROM_REGION( 0x020000, "u6", 0 ) // config? - ROM_LOAD( "u06_1m_m27c1001-10f_da21h.bin", 0x0000, 0x020000, CRC(51c0a380) SHA1(861c8b4f825f4bc11dd02ac03dcc2cc7e8c65129) ) + ROM_LOAD( "u06_1m_m27c1001-10f_da21h.bin", 0x000000, 0x020000, CRC(51c0a380) SHA1(861c8b4f825f4bc11dd02ac03dcc2cc7e8c65129) ) - ROM_REGION32_LE( 0x800000, "user1", 0 ) /* TMS34020APCM-40 code (34020) */ + ROM_REGION32_LE( 0x800000, "user1", 0 ) // TMS34020APCM-40 code (34020) // not valid TMS code, looks like some x86 drive image split into ROMs? ROM_LOAD( "gb_u09_8m_m27c801-100f1_9df6h.bin", 0x000000, 0x100000, CRC(470ccae5) SHA1(0521af7830cc59102edcc658df4d21a3d669d6db) ) ROM_LOAD( "gb_u11_8m_m27c801-100f1_7621h.bin", 0x100000, 0x100000, CRC(8f9a1031) SHA1(1aca654b62e73f3005e627625bea2b4198c04a99) ) @@ -1446,10 +1691,10 @@ ROM_START( santam ) ROM_LOAD( "gb_u14_8m_m27c801-100f1_2a48h.bin", 0x700000, 0x100000, CRC(bd1fdca3) SHA1(b4bc73ff6900c14525d10fb10ca7f5371351a198) ) ROM_REGION( 0x400000, "u18u21", 0 ) // sound - ROM_LOAD( "sb_u18_8m_m27c801-100f1_a52eh.bin", 0x0000, 0x100000, CRC(95fe949d) SHA1(953f730a37d8d661cbc8c212c459db3769ac502b) ) - ROM_LOAD( "sb_u19_8m_m27c801-100f1_a71bh.bin", 0x0000, 0x100000, CRC(6eae31f3) SHA1(08fcd8c49b31de874906205a47035a71f87f12d6) ) - ROM_LOAD( "sb_u20_8m_m27c801-100f1_7870h.bin", 0x0000, 0x100000, CRC(27639c24) SHA1(7fdc7e5e684dfbef00450e4c8fa998d73c035895) ) - ROM_LOAD( "sb_u21_8m_m27c801-100f1_94cch.bin", 0x0000, 0x100000, CRC(c740b5be) SHA1(dafe80431197fe22cddd0fc295436edc37256603) ) + ROM_LOAD( "sb_u18_8m_m27c801-100f1_a52eh.bin", 0x000000, 0x100000, CRC(95fe949d) SHA1(953f730a37d8d661cbc8c212c459db3769ac502b) ) + ROM_LOAD( "sb_u19_8m_m27c801-100f1_a71bh.bin", 0x000000, 0x100000, CRC(6eae31f3) SHA1(08fcd8c49b31de874906205a47035a71f87f12d6) ) + ROM_LOAD( "sb_u20_8m_m27c801-100f1_7870h.bin", 0x000000, 0x100000, CRC(27639c24) SHA1(7fdc7e5e684dfbef00450e4c8fa998d73c035895) ) + ROM_LOAD( "sb_u21_8m_m27c801-100f1_94cch.bin", 0x000000, 0x100000, CRC(c740b5be) SHA1(dafe80431197fe22cddd0fc295436edc37256603) ) ROM_END } // anonymous namespace @@ -1457,9 +1702,7 @@ ROM_END /* Possible CashLine games: * Aphrodite - * Babooshka? (Alternate spelling) * Break the Spell - * Chickendales (Alternate spelling?) * Diver's Dream * Golden Glen (Alternate spelling?) * Happy Happy Hippy @@ -1477,37 +1720,46 @@ ROM_END GAME( 1999, atronic, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 1999, atronica, atronic, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 1999, atronicb, atronic, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atronic SetUp/Clear Chips", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, atlantca, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, atlantcaa, atlantca, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, baboshka, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Baboshka (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, baboshka, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Babooshka (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, baboshkar, baboshka, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Babooshka (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, beachpt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beach Patrol (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, atrbtlma, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beetlemania (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, beetleup, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beetles Unplugged (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, bigblue, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Big Blue (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 200?, atrbonpk, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Bonus Poker (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, castaway, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, castawaya, castaway, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, cfblue, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, cfbluea, cfblue, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, cfgreen, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Crazy Fruits Green (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, chicken, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Chicken (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, chicdale, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Chickendales (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, aclown, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Clown (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, dncsprt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dancing Spirit (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, drmmake, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dream Maker (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, drmmaker, drmmake, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dream Maker (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, goldglen, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Golden Glenn (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, haphippy, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Happy Happy Hippy (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, iccash, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "I C Cash (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, shpinxii, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Sphinx II (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, beachpt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beach Patrol (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, beetleup, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Beetles Unplugged (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, bigblue, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Big Blue (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, castaway, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, castawaya, castaway, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, dncsprt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dancing Spirit (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 2002, drmmake, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Dream Maker (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 200?, atricmon, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "I C Money (Atronic) (set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // related to I C Cash ? +GAME( 200?, atricmona, atricmon, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "I C Money (Atronic) (set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // related to I C Cash ? GAME( 2002, jumpjkpt, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Jumping Jackpots (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, mushmagi, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Mushroom Magic (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, sphinxii, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Sphinx II (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, sphinxiir, sphinxii, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Sphinx II (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, splmastr, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Spell Master (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, tajmah, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Tajmahal (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, 3wishrd, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Three Wishes Red (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, tylagoon, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Typhoon Lagoon (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 200?, atrwild, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Wild Thing (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) -GAME( 200?, atricmon, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "I C Money (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // related to I C Cash ? -GAME( 200?, atrbonpk, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Bonus Poker (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // could be different hardware (or just bad dumps) they don't seem to have valid TMS code, instead the video ROMs seem to be some x86 drive image? -GAME( 2002, abigchs, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Big Cheese (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, bearnec, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Bear Necessities (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) +GAME( 2002, abigchs, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Big Cheese (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, goldcity, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Gold City (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) GAME( 2002, santam, 0, atronic, atronic, atronic_state, empty_init, ROT0, "Atronic", "Santa Maria (Russia) (Atronic)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) diff --git a/src/mame/misc/triviaquiz.cpp b/src/mame/misc/triviaquiz.cpp index 7b7eae44dcbac..ea9a4eb899bc4 100644 --- a/src/mame/misc/triviaquiz.cpp +++ b/src/mame/misc/triviaquiz.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Dirk Best, Ivan Vangelista +// copyright-holders:Dirk Best /* Trivia Quiz by Intermatic Manufacturing Ltd. 1985 From b6a03219f67a18fe3fde4ff82712decaaa805327 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 24 Dec 2024 20:45:09 +1100 Subject: [PATCH 29/39] Revert "machine/ncr5385.cpp: clear status bits first when updating so they aren't stuck on (#13109)" This reverts commit ff6d52d56a9dcac133e5fee805a277bf0f9b60a4. Neither of the changes make sense. The addition to ncr5385_device::update_int is redundant is the bits are cleared just above the if statement. The addition to ncr5385_device::aux_status_r is unnecessary as the bits are only set when an interrupt is asserted (if they're set when it isn't, there's a logic bug elsewhere). --- src/devices/machine/ncr5385.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/devices/machine/ncr5385.cpp b/src/devices/machine/ncr5385.cpp index 77a9090bc5945..1045188534532 100644 --- a/src/devices/machine/ncr5385.cpp +++ b/src/devices/machine/ncr5385.cpp @@ -245,9 +245,6 @@ u8 ncr5385_device::aux_status_r() if (!m_int_status) { - // mask out any bits - data &= ~(AUX_STATUS_MSG | AUX_STATUS_CD | AUX_STATUS_IO); - // return current phase u32 const ctrl = scsi_bus->ctrl_r(); if (ctrl & S_MSG) @@ -832,9 +829,6 @@ void ncr5385_device::update_int() { m_cmd = 0; - // mask out any bits - m_aux_status &= ~(AUX_STATUS_MSG | AUX_STATUS_CD | AUX_STATUS_IO); - // latch current phase u32 const ctrl = scsi_bus->ctrl_r(); if (ctrl & S_MSG) From 6aab489428fe83e68c5350759e80b02386836616 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 24 Dec 2024 13:13:16 +0100 Subject: [PATCH 30/39] hh_ht11xx: make driver source organization a bit more similar to other hh* drivers --- src/mame/handheld/hh_ht11xx.cpp | 189 ++++++++++++++++++++------------ 1 file changed, 118 insertions(+), 71 deletions(-) diff --git a/src/mame/handheld/hh_ht11xx.cpp b/src/mame/handheld/hh_ht11xx.cpp index 05b1910d2cebc..bfae4bb60dc88 100644 --- a/src/mame/handheld/hh_ht11xx.cpp +++ b/src/mame/handheld/hh_ht11xx.cpp @@ -37,6 +37,8 @@ HTG1395 3-in-1 (Car racing, Soccer, The eagle preys on the chicken) namespace { +// base class + class hh_ht11xx_state : public driver_device { public: @@ -53,16 +55,34 @@ class hh_ht11xx_state : public driver_device required_device m_maincpu; }; -class hh_ht1190_state : public hh_ht11xx_state +INPUT_CHANGED_MEMBER(hh_ht11xx_state::input_wakeup) +{ + m_maincpu->set_input_line(HT1130_EXT_WAKEUP_LINE, newval ? CLEAR_LINE : ASSERT_LINE); +} + +void hh_ht11xx_state::mcfg_svg_screen(machine_config &config, u16 width, u16 height, const char *tag) +{ + screen_device &screen(SCREEN(config, tag, SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(width, height); + screen.set_visarea_full(); + + config.set_default_layout(layout_hh_ht11xx_single); +} + + +// HT1130 class + +class hh_ht1130_state : public hh_ht11xx_state { public: - hh_ht1190_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_ht1130_state(const machine_config &mconfig, device_type type, const char *tag) : hh_ht11xx_state(mconfig, type, tag), m_out_x(*this, "%u.%u", 0U, 0U), m_in(*this, "IN%u", 1) { } - void brke23p2(machine_config &config); + void ga888(machine_config &config); protected: virtual void machine_start() override ATTR_COLD; @@ -70,21 +90,35 @@ class hh_ht1190_state : public hh_ht11xx_state void segment_w(offs_t offset, u64 data); private: - output_finder<8, 40> m_out_x; - required_ioport_array<2> m_in; + output_finder<4, 32> m_out_x; + required_ioport_array<3> m_in; }; +void hh_ht1130_state::machine_start() +{ + m_out_x.resolve(); +} -class hh_ht1130_state : public hh_ht11xx_state +void hh_ht1130_state::segment_w(offs_t offset, u64 data) +{ + // output to x.y where x = COM# and y = SEG# + for (int i = 0; i < 32; i++) + m_out_x[offset][i] = BIT(data, i); +} + + +// HT1190 class + +class hh_ht1190_state : public hh_ht11xx_state { public: - hh_ht1130_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_ht1190_state(const machine_config &mconfig, device_type type, const char *tag) : hh_ht11xx_state(mconfig, type, tag), m_out_x(*this, "%u.%u", 0U, 0U), m_in(*this, "IN%u", 1) { } - void ga888(machine_config &config); + void brke23p2(machine_config &config); protected: virtual void machine_start() override ATTR_COLD; @@ -92,8 +126,8 @@ class hh_ht1130_state : public hh_ht11xx_state void segment_w(offs_t offset, u64 data); private: - output_finder<4, 32> m_out_x; - required_ioport_array<3> m_in; + output_finder<8, 40> m_out_x; + required_ioport_array<2> m_in; }; void hh_ht1190_state::machine_start() @@ -101,16 +135,30 @@ void hh_ht1190_state::machine_start() m_out_x.resolve(); } -void hh_ht1130_state::machine_start() +void hh_ht1190_state::segment_w(offs_t offset, u64 data) { - m_out_x.resolve(); + // output to x.y where x = COM# and y = SEG# + for (int i = 0; i < 40; i++) + m_out_x[offset][i] = BIT(data, i); } -INPUT_CHANGED_MEMBER(hh_ht11xx_state::input_wakeup) -{ - m_maincpu->set_input_line(HT1130_EXT_WAKEUP_LINE, newval ? CLEAR_LINE : ASSERT_LINE); -} + +/******************************************************************************* + + Minidrivers (optional subclass, I/O, Inputs, Machine Config, ROM Defs) + +*******************************************************************************/ + +/******************************************************************************* + + E-Star Brick Game 96 in 1 (E-23 Plus Mark II) + * Holtek HT1190 + * 10*20 LCD screen + custom segments, 1-bit sound + +*******************************************************************************/ + +// inputs static INPUT_PORTS_START( brke23p2 ) PORT_START("IN1") @@ -126,6 +174,48 @@ static INPUT_PORTS_START( brke23p2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Left") INPUT_PORTS_END +// config + +void hh_ht1190_state::brke23p2(machine_config &config) +{ + HT1190(config, m_maincpu, 1000000/8); // frequency? + m_maincpu->segment_out_cb().set(FUNC(hh_ht1190_state::segment_w)); + + m_maincpu->ps_in_cb().set_ioport(m_in[0]); + m_maincpu->pp_in_cb().set_ioport(m_in[1]); + + SPEAKER(config, "speaker").front_center(); + + mcfg_svg_screen(config, 755, 1080); +} + +// roms + +ROM_START( brke23p2 ) + ROM_REGION( 0x1000, "maincpu", 0 ) + ROM_LOAD( "brke23p2.bin", 0x0000, 0x1000, CRC(8045fac4) SHA1(a36213309e6add31f31e4248f02f17de9914a5c1) ) // visual decap + + ROM_REGION( 0x280, "melody", 0 ) + ROM_LOAD( "e23plusmarkii96in1.srom", 0x000, 0x280, CRC(591a8a21) SHA1(f039359e8e1d1bf75581a4c852b263c8c140e072) ) + + ROM_REGION( 160500, "screen", 0) + ROM_LOAD( "brke23p2.svg", 0, 160500, CRC(9edf8aab) SHA1(f2ab907d23517612196648f1b5b0cb9b4a1ab3bd) ) +ROM_END + + + + + +/******************************************************************************* + + Block Game & Echo Key GA888 + * Holtek HT1130 + * 8*12 LCD screen + 8 custom segments, 1-bit sound + +*******************************************************************************/ + +// inputs + static INPUT_PORTS_START( ga888 ) // the unit also has an up button, and a reset button, is 'up' connected to anything? PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_NAME("Pause / Power") PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(hh_ht11xx_state::input_wakeup), 0) @@ -146,47 +236,7 @@ static INPUT_PORTS_START( ga888 ) // the unit also has an up button, and a reset PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Left") INPUT_PORTS_END -void hh_ht1190_state::segment_w(offs_t offset, u64 data) -{ - for (int i = 0; i < 40; i++) - { - // output to x.y where x = COM# and y = SEG# - m_out_x[offset][i] = BIT(data, i); - } -} - -void hh_ht1130_state::segment_w(offs_t offset, u64 data) -{ - for (int i = 0; i < 32; i++) - { - // output to x.y where x = COM# and y = SEG# - m_out_x[offset][i] = BIT(data, i); - } -} - - -void hh_ht11xx_state::mcfg_svg_screen(machine_config &config, u16 width, u16 height, const char *tag) -{ - screen_device &screen(SCREEN(config, tag, SCREEN_TYPE_SVG)); - screen.set_refresh_hz(60); - screen.set_size(width, height); - screen.set_visarea_full(); - - config.set_default_layout(layout_hh_ht11xx_single); -} - -void hh_ht1190_state::brke23p2(machine_config &config) -{ - HT1190(config, m_maincpu, 1000000/8); // frequency? - m_maincpu->segment_out_cb().set(FUNC(hh_ht1190_state::segment_w)); - - m_maincpu->ps_in_cb().set_ioport(m_in[0]); - m_maincpu->pp_in_cb().set_ioport(m_in[1]); - - SPEAKER(config, "speaker").front_center(); - - mcfg_svg_screen(config, 755, 1080); -} +// config void hh_ht1130_state::ga888(machine_config &config) { @@ -202,16 +252,7 @@ void hh_ht1130_state::ga888(machine_config &config) mcfg_svg_screen(config, 698, 1080); } -ROM_START( brke23p2 ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "brke23p2.bin", 0x0000, 0x1000, CRC(8045fac4) SHA1(a36213309e6add31f31e4248f02f17de9914a5c1) ) // visual decap - - ROM_REGION( 0x280, "melody", 0 ) - ROM_LOAD( "e23plusmarkii96in1.srom", 0x000, 0x280, CRC(591a8a21) SHA1(f039359e8e1d1bf75581a4c852b263c8c140e072) ) - - ROM_REGION( 160500, "screen", 0) - ROM_LOAD( "brke23p2.svg", 0, 160500, CRC(9edf8aab) SHA1(f2ab907d23517612196648f1b5b0cb9b4a1ab3bd) ) -ROM_END +// roms ROM_START( ga888 ) ROM_REGION( 0x1000, "maincpu", 0 ) @@ -224,11 +265,17 @@ ROM_START( ga888 ) ROM_LOAD( "ga888.svg", 0, 85508, CRC(9ab6dd67) SHA1(a4365a00204bf4e376f28600c0b87289bda0cbb0) ) ROM_END - } // anonymous namespace -// some other dieshots have 1996 on them, it is also possible the software is from Holtek -CONS( 1993, brke23p2, 0, 0, brke23p2, brke23p2, hh_ht1190_state, empty_init, "E-Star", "Brick Game 96 in 1 (E-23 Plus Mark II)", MACHINE_IMPERFECT_TIMING | MACHINE_NO_SOUND ) -CONS( 199?, ga888, 0, 0, ga888, ga888, hh_ht1130_state, empty_init, "", "Block Game & Echo Key GA888", MACHINE_IMPERFECT_TIMING | MACHINE_NO_SOUND ) // clone of Tetris Jr? +/******************************************************************************* + + Game driver(s) + +*******************************************************************************/ + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +CONS( 1993, brke23p2, 0, 0, brke23p2, brke23p2, hh_ht1190_state, empty_init, "E-Star", "Brick Game 96 in 1 (E-23 Plus Mark II)", MACHINE_IMPERFECT_TIMING | MACHINE_NO_SOUND ) // some other dieshots have 1996 on them, it is also possible the software is from Holtek + +CONS( 199?, ga888, 0, 0, ga888, ga888, hh_ht1130_state, empty_init, "", "Block Game & Echo Key GA888", MACHINE_IMPERFECT_TIMING | MACHINE_NO_SOUND ) // clone of Tetris Jr? From d1513de7cf75f1f5f3763f001258e735ee75dbb2 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 24 Dec 2024 13:25:31 +0100 Subject: [PATCH 31/39] tamag1: change to a hh_ collection driver --- src/mame/bandai/tamag1.cpp | 261 ++++++++++++------ src/mame/handheld/hh_ht11xx.cpp | 4 +- ...{hh_ht11xx_single.lay => hh_e0c6x_lcd.lay} | 0 src/mame/layout/hh_ht11xx_lcd.lay | 15 + 4 files changed, 198 insertions(+), 82 deletions(-) rename src/mame/layout/{hh_ht11xx_single.lay => hh_e0c6x_lcd.lay} (100%) create mode 100644 src/mame/layout/hh_ht11xx_lcd.lay diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp index 65cca8c382920..ef73da5e8c9e0 100644 --- a/src/mame/bandai/tamag1.cpp +++ b/src/mame/bandai/tamag1.cpp @@ -3,16 +3,19 @@ // thanks-to:digshadow, Segher, azya /******************************************************************************* -Bandai Tamagotchi generation 1 hardware +Seiko Epson E0C6S46 / E0C6S48 handhelds, mostly electronic keychain toys from +the late-1990s. The first Tamagotchi games are on this MCU. -Hardware notes: -- PCB label: TMG-M1 -- Seiko Epson E0C6S46 MCU under epoxy -- 32*16 LCD screen + 8 custom segments -- 1-bit sound +These were meant to stay on 24/7, so make sure to use save states if you want +to play the games for a longer time. For the drivers that don't have an SVG +screen, use -prescale or -nofilter to disable bilinear filtering. TODO: -- add the Mothra version that was recently dumped (has a E0C6S48) +- add the Mothra Tamagotchi version that was recently dumped (has a E0C6S48) +- SVGs could be more accurate? it seems they're handmade instead of a 1:1 scan +- alienfev unmapped reads/writes, or are they harmless? +- add LCD deflicker like hh_sm510? see venusdm for example +- hook up LCD contrast, does any game use it? (eg. for fade-out) *******************************************************************************/ @@ -25,36 +28,33 @@ Hardware notes: #include "screen.h" #include "speaker.h" +// internal artwork +#include "hh_e0c6x_lcd.lh" + namespace { -class tamag1_state : public driver_device +class hh_e0c6x_state : public driver_device { public: - tamag1_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_e0c6x_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_out_x(*this, "%u.%u", 0U, 0U) { } - void tama(machine_config &config); - void alienfev(machine_config &config); - void venusdm(machine_config &config); - DECLARE_INPUT_CHANGED_MEMBER(input_changed); protected: virtual void machine_start() override ATTR_COLD; -private: void lcd_segment_w(offs_t offset, u8 data) { m_out_x[offset & 0xf][offset >> 4] = data; } - void pixel_callback(int &dx, int &dy) { int x = dx; dx = dy | (dx / 20) << 4; dy = x % 20; } required_device m_maincpu; output_finder<16, 40> m_out_x; }; -void tamag1_state::machine_start() +void hh_e0c6x_state::machine_start() { m_out_x.resolve(); } @@ -62,51 +62,69 @@ void tamag1_state::machine_start() /******************************************************************************* - Input Ports + + Helper Functions + *******************************************************************************/ -INPUT_CHANGED_MEMBER(tamag1_state::input_changed) +// generic input handlers + +#define PORT_CHANGED_CB(x) \ + PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(hh_e0c6x_state::input_changed), E0C6S46_LINE_K00 + x) + +INPUT_CHANGED_MEMBER(hh_e0c6x_state::input_changed) { // inputs are hooked up backwards here, because MCU input ports are all tied to its interrupt controller m_maincpu->set_input_line(param, newval ? ASSERT_LINE : CLEAR_LINE); } -static INPUT_PORTS_START( tama ) - PORT_START("K0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K00) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K01) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K02) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) -INPUT_PORTS_END -static INPUT_PORTS_START( alienfev ) - PORT_START("K0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K00) // mode - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K01) // select - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K02) // sound - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K03) // handle -INPUT_PORTS_END -static INPUT_PORTS_START( venusdm ) - PORT_START("K1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K10) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K11) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(tamag1_state::input_changed), E0C6S46_LINE_K12) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) -INPUT_PORTS_END +/******************************************************************************* + Minidrivers (subclass, I/O, Inputs, Machine Config, ROM Defs) +*******************************************************************************/ /******************************************************************************* - Machine Configs + + Bandai Tamagotchi (Generation 1) + * PCB label: TMG-M1 + * Seiko Epson E0C6S46 MCU under epoxy + * 32*16 LCD screen + 8 custom segments, 1-bit sound + + Generation 2 is on the exact same hardware + *******************************************************************************/ -void tamag1_state::tama(machine_config &config) +class tama_state : public hh_e0c6x_state +{ +public: + tama_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_e0c6x_state(mconfig, type, tag) + { } + + void tama(machine_config &config); +}; + +// inputs + +static INPUT_PORTS_START( tama ) + PORT_START("K0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_CB(0) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_CB(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +// config + +void tama_state::tama(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); - m_maincpu->write_segs().set(FUNC(tamag1_state::lcd_segment_w)); + m_maincpu->write_segs().set(FUNC(tama_state::lcd_segment_w)); // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); @@ -114,12 +132,71 @@ void tamag1_state::tama(machine_config &config) screen.set_size(1119, 1080); screen.set_visarea_full(); + config.set_default_layout(layout_hh_e0c6x_lcd); + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); } -void tamag1_state::alienfev(machine_config &config) +// roms + +ROM_START( tama ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "tama.bin", 0x0000, 0x3000, CRC(5c864cb1) SHA1(4b4979cf92dc9d2fb6d7295a38f209f3da144f72) ) + + ROM_REGION( 0x3000, "maincpu:test", 0 ) + ROM_LOAD( "test.bin", 0x0000, 0x3000, CRC(4372220e) SHA1(6e13d015113e16198c0059b9d0c38d7027ae7324) ) // this rom is on the die too, test pin enables it? + + ROM_REGION( 139072, "screen", 0) + ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) +ROM_END + +ROM_START( tamag2 ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "tamag2.bin", 0x0000, 0x3000, CRC(9f97539e) SHA1(09e5101b37636a314fc599d5d69b4846721b3c88) ) + + ROM_REGION( 139072, "screen", 0) + ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) +ROM_END + + + + + +/******************************************************************************* + + Epoch Chibi Pachi: Alien Fever + * Seiko Epson E0C6S46 MCU + * 39*16 LCD screen, 1-bit sound + + It's a Pachislot keychain game, the MCU runs on the higher-speed OSC3. + +*******************************************************************************/ + +class alienfev_state : public hh_e0c6x_state +{ +public: + alienfev_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_e0c6x_state(mconfig, type, tag) + { } + + void alienfev(machine_config &config); +}; + +// inputs + +static INPUT_PORTS_START( alienfev ) + PORT_START("K0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_CB(0) PORT_NAME("Mode") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_CB(1) PORT_NAME("Select") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_CB(2) PORT_NAME("Sound") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(3) PORT_NAME("Handle") +INPUT_PORTS_END + +// config + +void alienfev_state::alienfev(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); @@ -137,17 +214,63 @@ void tamag1_state::alienfev(machine_config &config) PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); + config.set_default_layout(layout_hh_e0c6x_lcd); + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); } -void tamag1_state::venusdm(machine_config &config) +// roms + +ROM_START( alienfev ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "alienfev.bin", 0x0000, 0x3000, CRC(e561599c) SHA1(7927e198f8989861ba057150e59d1f4ad403c1d2) ) +ROM_END + + + + + +/******************************************************************************* + + Nikko Beans Collection: Venus Diet Monogatari + * Seiko Epson E0C6S46 MCU + * 32*20 LCD screen, 1-bit sound + +*******************************************************************************/ + +class venusdm_state : public hh_e0c6x_state +{ +public: + venusdm_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_e0c6x_state(mconfig, type, tag) + { } + + void venusdm(machine_config &config); + +private: + void pixel_callback(int &dx, int &dy) { int x = dx; dx = dy | (dx / 20) << 4; dy = x % 20; } +}; + +// inputs + +static INPUT_PORTS_START( venusdm ) + PORT_START("K1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_CB(4) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_CB(5) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(6) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +// config + +void venusdm_state::venusdm(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); - m_maincpu->set_pixel_callback(FUNC(tamag1_state::pixel_callback)); + m_maincpu->set_pixel_callback(FUNC(venusdm_state::pixel_callback)); // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); @@ -160,40 +283,14 @@ void tamag1_state::venusdm(machine_config &config) PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); + config.set_default_layout(layout_hh_e0c6x_lcd); + // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); } - - -/******************************************************************************* - ROM Definitions -*******************************************************************************/ - -ROM_START( tama ) - ROM_REGION( 0x3000, "maincpu", 0 ) - ROM_LOAD( "tama.bin", 0x0000, 0x3000, CRC(5c864cb1) SHA1(4b4979cf92dc9d2fb6d7295a38f209f3da144f72) ) - - ROM_REGION( 0x3000, "maincpu:test", 0 ) - ROM_LOAD( "test.bin", 0x0000, 0x3000, CRC(4372220e) SHA1(6e13d015113e16198c0059b9d0c38d7027ae7324) ) // this rom is on the die too, test pin enables it? - - ROM_REGION( 139072, "screen", 0) - ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) -ROM_END - -ROM_START( tamag2 ) - ROM_REGION( 0x3000, "maincpu", 0 ) - ROM_LOAD( "tamag2.bin", 0x0000, 0x3000, CRC(9f97539e) SHA1(09e5101b37636a314fc599d5d69b4846721b3c88) ) - - ROM_REGION( 139072, "screen", 0) - ROM_LOAD( "tama.svg", 0, 139072, CRC(9468b964) SHA1(ab49471db21a00a3b3a68da39c40da69da5d7e1b) ) -ROM_END - -ROM_START( alienfev ) - ROM_REGION( 0x3000, "maincpu", 0 ) - ROM_LOAD( "alienfev.bin", 0x0000, 0x3000, CRC(e561599c) SHA1(7927e198f8989861ba057150e59d1f4ad403c1d2) ) -ROM_END +// roms ROM_START( venusdm ) ROM_REGION( 0x3000, "maincpu", 0 ) @@ -205,11 +302,15 @@ ROM_END /******************************************************************************* - Drivers + + Game driver(s) + *******************************************************************************/ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS -SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -SYST( 1997, tamag2, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (Gen. 2, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) -SYST( 1997, alienfev, 0, 0, alienfev, alienfev, tamag1_state, empty_init, "Epoch", "Chibi Pachi: Alien Fever", MACHINE_SUPPORTS_SAVE ) -SYST( 1997, venusdm, 0, 0, venusdm, venusdm, tamag1_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +SYST( 1997, tama, 0, 0, tama, tama, tama_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +SYST( 1997, tamag2, 0, 0, tama, tama, tama_state, empty_init, "Bandai", "Tamagotchi (Gen. 2, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) + +SYST( 1997, alienfev, 0, 0, alienfev, alienfev, alienfev_state, empty_init, "Epoch", "Chibi Pachi: Alien Fever", MACHINE_SUPPORTS_SAVE ) + +SYST( 1997, venusdm, 0, 0, venusdm, venusdm, venusdm_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/handheld/hh_ht11xx.cpp b/src/mame/handheld/hh_ht11xx.cpp index bfae4bb60dc88..16ff0ab967c71 100644 --- a/src/mame/handheld/hh_ht11xx.cpp +++ b/src/mame/handheld/hh_ht11xx.cpp @@ -32,7 +32,7 @@ HTG1395 3-in-1 (Car racing, Soccer, The eagle preys on the chicken) #include "speaker.h" // internal artwork -#include "hh_ht11xx_single.lh" +#include "hh_ht11xx_lcd.lh" namespace { @@ -67,7 +67,7 @@ void hh_ht11xx_state::mcfg_svg_screen(machine_config &config, u16 width, u16 hei screen.set_size(width, height); screen.set_visarea_full(); - config.set_default_layout(layout_hh_ht11xx_single); + config.set_default_layout(layout_hh_ht11xx_lcd); } diff --git a/src/mame/layout/hh_ht11xx_single.lay b/src/mame/layout/hh_e0c6x_lcd.lay similarity index 100% rename from src/mame/layout/hh_ht11xx_single.lay rename to src/mame/layout/hh_e0c6x_lcd.lay diff --git a/src/mame/layout/hh_ht11xx_lcd.lay b/src/mame/layout/hh_ht11xx_lcd.lay new file mode 100644 index 0000000000000..1e847d9b61173 --- /dev/null +++ b/src/mame/layout/hh_ht11xx_lcd.lay @@ -0,0 +1,15 @@ + + + + + + + + + + + + From e3ba3354926cb7090ec155128f071fa9f9c36aef Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 24 Dec 2024 13:29:34 +0100 Subject: [PATCH 32/39] source org: move tamag1 driver to handheld/hh_e0c6x.cpp --- .../{bandai/tamag1.cpp => handheld/hh_e0c6x.cpp} | 0 src/mame/mame.lst | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) rename src/mame/{bandai/tamag1.cpp => handheld/hh_e0c6x.cpp} (100%) diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/handheld/hh_e0c6x.cpp similarity index 100% rename from src/mame/bandai/tamag1.cpp rename to src/mame/handheld/hh_e0c6x.cpp diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 24361f8232c81..e91c29ca4e9ef 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -2498,12 +2498,6 @@ rx78 // @source:bandai/sv8000.cpp sv8000 // Super Vision 8000 -@source:bandai/tamag1.cpp -alienfev // Epoch -tama // Bandai -tamag2 // Bandai -venusdm // Nikko - @source:bandai/wswan.cpp pockchv2 // Benesse Pocket Challenge V2 wscolor // Bandai WonderSwan Color Handheld @@ -19151,6 +19145,12 @@ msoccer // Mattel qkracer // National Semiconductor qkspeller // National Semiconductor +@source:handheld/hh_e0c6x.cpp +alienfev // Epoch +tama // Bandai +tamag2 // Bandai +venusdm // Nikko + @source:handheld/hh_hmcs40.cpp alnattck // Coleco bambball // Bambino From e097571653f6aabe3b7a34d025fde58bef340fc4 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 24 Dec 2024 09:24:28 -0500 Subject: [PATCH 33/39] formats/fs_vtech.cpp: Fix off-by-one error: end address is exclusive, not inclusive --- src/lib/formats/fs_vtech.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/formats/fs_vtech.cpp b/src/lib/formats/fs_vtech.cpp index 03ceffbab5bf2..6b4145184376b 100644 --- a/src/lib/formats/fs_vtech.cpp +++ b/src/lib/formats/fs_vtech.cpp @@ -19,7 +19,7 @@ namespace fs { const vtech_image VTECH; } // Filesystem has no subdirectories. // // Track 0 sectors 0-14 have the file names. 16 bytes/entry -// offset 0 : File type 'T' (basic) or 'B' (binary) +// offset 0 : File type 'T' (basic), 'B' (binary), or some other letter (application-specific) // offset 1 : 0x3a // offset 2-9: File name // offset a : Track number of first file sector @@ -147,7 +147,7 @@ meta_data vtech_impl::file_metadata(const u8 *entry) res.set(meta_name::name, trim_end_spaces(rstr(entry+2, 8))); res.set(meta_name::file_type, std::string{ char(entry[0]) }); res.set(meta_name::loading_address, get_u16le(entry + 0xc)); - res.set(meta_name::length, ((get_u16le(entry + 0xe) - get_u16le(entry + 0xc) + 1) & 0xffff)); + res.set(meta_name::length, (get_u16le(entry + 0xe) - get_u16le(entry + 0xc)) & 0xffff); return res; } @@ -280,7 +280,7 @@ err_t vtech_impl::file_create(const std::vector &path, const meta_d bdir.w8 (off+0xa, 0x00); bdir.w8 (off+0xb, 0x00); bdir.w16l(off+0xc, meta.get_number(meta_name::loading_address, 0x7ae9)); - bdir.w16l(off+0xe, bdir.r16l(off+0xc) - 1); // Size 0 initially + bdir.w16l(off+0xe, bdir.r16l(off+0xc)); // Size 0 initially return ERR_OK; } } @@ -303,7 +303,7 @@ std::pair> vtech_impl::file_read(const std::vector &path, const std::ve u8 *entry = bdir.data() + off; - u32 cur_len = ((get_u16le(entry + 0xe) - get_u16le(entry + 0xc) + 1) & 0xffff); + u32 cur_len = (get_u16le(entry + 0xe) - get_u16le(entry + 0xc)) & 0xffff; u32 new_len = data.size(); if(new_len > 65535) new_len = 65535; @@ -372,7 +372,7 @@ err_t vtech_impl::file_write(const std::vector &path, const std::ve dblk.w16l(126, 0); } - u16 end_address = (get_u16le(entry + 0xc) + data.size() - 1) & 0xffff; + u16 end_address = (get_u16le(entry + 0xc) + data.size()) & 0xffff; put_u16le(entry + 0xe, end_address); if(need_ns) { entry[0xa] = blocks[0].first; From 882fad66bdcec6f90a1a0471b896537c5d78cd82 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Wed, 25 Dec 2024 02:49:15 +1100 Subject: [PATCH 34/39] dynax/royalmah.cpp: Added DIP switch settings for Mahjong Cafe Doll. Also corrected some settings for Mahjong Cafe Time. --- src/mame/dynax/ddenlovr.cpp | 2 + src/mame/dynax/dynax.cpp | 11 +- src/mame/dynax/dynax.h | 48 ------ src/mame/dynax/mjdipsw.h | 69 ++++++++ src/mame/dynax/royalmah.cpp | 328 +++++++++++++++++++++++------------- 5 files changed, 281 insertions(+), 177 deletions(-) create mode 100644 src/mame/dynax/mjdipsw.h diff --git a/src/mame/dynax/ddenlovr.cpp b/src/mame/dynax/ddenlovr.cpp index 81b897701ed9d..492214d6ab3db 100644 --- a/src/mame/dynax/ddenlovr.cpp +++ b/src/mame/dynax/ddenlovr.cpp @@ -124,6 +124,8 @@ Year + Game Board CPU Sound #include "emu.h" #include "dynax.h" +#include "mjdipsw.h" + #include "mahjong.h" #include "cpu/m68000/m68000.h" diff --git a/src/mame/dynax/dynax.cpp b/src/mame/dynax/dynax.cpp index 61488f6735b83..71c3d5764dd3c 100644 --- a/src/mame/dynax/dynax.cpp +++ b/src/mame/dynax/dynax.cpp @@ -82,6 +82,8 @@ Year + Game Main Board Sub Board CPU Sound #include "emu.h" #include "dynax.h" +#include "mjdipsw.h" + #include "mahjong.h" #include "cpu/tlcs90/tlcs90.h" @@ -1577,13 +1579,6 @@ INPUT_PORTS_END PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) /* Coin */ \ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* Service */ -#define MAHJONG_ODDS_RATE(shift, loc) \ - PORT_DIPNAME( 0x03 << shift, 0x00 << shift, "Odds Rate" ) PORT_DIPLOCATION(loc) \ - PORT_DIPSETTING( 0x03 << shift, "1 2 4 8 12 16 24 32" ) \ - PORT_DIPSETTING( 0x00 << shift, "1 2 3 5 8 15 30 50" ) \ - PORT_DIPSETTING( 0x01 << shift, "1 2 3 5 10 25 50 100" ) \ - PORT_DIPSETTING( 0x02 << shift, "1 2 3 5 10 50 100 200" ) - static INPUT_PORTS_START( cdracula ) PORT_START("P1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) @@ -3492,7 +3487,7 @@ static INPUT_PORTS_START( tenkai ) PORT_START("DSW4") /* (top) */ MAHJONG_NOTE_CREDITS(0, "SW 1:9", "DSW1", 0) // NOTE RATE - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW 1:10") // モニター画面反転 + PORT_DIPNAME( 0x02, 0x02, DEF_STR(Flip_Screen) ) PORT_DIPLOCATION("SW 1:10") // モニター画面反転 PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 通常 PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 反転 PORT_DIPNAME( 0x04, 0x00, "Computer Strength" ) PORT_DIPLOCATION("SW 2:9") // コンピューターの強さ diff --git a/src/mame/dynax/dynax.h b/src/mame/dynax/dynax.h index f4b46e20e37ea..061a660a6b338 100644 --- a/src/mame/dynax/dynax.h +++ b/src/mame/dynax/dynax.h @@ -462,52 +462,4 @@ class cdracula_state : public dynax_state INPUT_PORTS_EXTERN(dynax_mahjong_keys); INPUT_PORTS_EXTERN(dynax_hanafuda_keys_bet); -#define MAHJONG_PAYOUT_RATE(shift, loc) \ - PORT_DIPNAME( 0x0f << shift, 0x07 << shift, "Payout Rate" ) PORT_DIPLOCATION(loc) \ - PORT_DIPSETTING( 0x00 << shift, "50%" ) \ - PORT_DIPSETTING( 0x01 << shift, "53%" ) \ - PORT_DIPSETTING( 0x02 << shift, "56%" ) \ - PORT_DIPSETTING( 0x03 << shift, "59%" ) \ - PORT_DIPSETTING( 0x04 << shift, "62%" ) \ - PORT_DIPSETTING( 0x05 << shift, "65%" ) \ - PORT_DIPSETTING( 0x06 << shift, "68%" ) \ - PORT_DIPSETTING( 0x07 << shift, "71%" ) \ - PORT_DIPSETTING( 0x08 << shift, "75%" ) \ - PORT_DIPSETTING( 0x09 << shift, "78%" ) \ - PORT_DIPSETTING( 0x0a << shift, "81%" ) \ - PORT_DIPSETTING( 0x0b << shift, "84%" ) \ - PORT_DIPSETTING( 0x0c << shift, "87%" ) \ - PORT_DIPSETTING( 0x0d << shift, "90%" ) \ - PORT_DIPSETTING( 0x0e << shift, "93%" ) \ - PORT_DIPSETTING( 0x0f << shift, "96%" ) - -#define MAHJONG_COINAGE(shift, loc) \ - PORT_DIPNAME( 0x03 << shift, 0x03 << shift, DEF_STR(Coinage) ) PORT_DIPLOCATION(loc) /* COIN RATE */ \ - PORT_DIPSETTING( 0x03 << shift, DEF_STR(1C_1C) ) /* 1コイン  1プレイ */ \ - PORT_DIPSETTING( 0x02 << shift, DEF_STR(1C_2C) ) /* 1コイン  2プレイ */ \ - PORT_DIPSETTING( 0x01 << shift, DEF_STR(1C_5C) ) /* 1コイン  5プレイ */ \ - PORT_DIPSETTING( 0x00 << shift, "1 Coin/10 Credits" ) /* 1コイン 10プレイ */ - -#define MAHJONG_NOTE_CREDITS(shift, loc, ct, cs) \ - PORT_DIPNAME( 0x01 << shift, 0x00 << shift, "Credits Per Note" ) PORT_DIPLOCATION(loc) /* NOTE RATE */ \ - PORT_DIPSETTING( 0x01 << shift, "5" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x03 << cs) /* COIN×5 */ \ - PORT_DIPSETTING( 0x01 << shift, "10" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x02 << cs) \ - PORT_DIPSETTING( 0x01 << shift, "25" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x01 << cs) \ - PORT_DIPSETTING( 0x01 << shift, "50" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x00 << cs) \ - PORT_DIPSETTING( 0x00 << shift, "10" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x03 << cs) /* COIN×10 */ \ - PORT_DIPSETTING( 0x00 << shift, "20" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x02 << cs) \ - PORT_DIPSETTING( 0x00 << shift, "50" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x01 << cs) \ - PORT_DIPSETTING( 0x00 << shift, "100" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x00 << cs) - -#define MAHJONG_YAKUMAN_BONUS(shift, loc) \ - PORT_DIPNAME( 0x07 << shift, 0x04 << shift, "Yakuman Bonus Cycle" ) PORT_DIPLOCATION(loc) /* 役満ボーナスの設定周期 */ \ - PORT_DIPSETTING( 0x07 << shift, "None" ) /* 無し */ \ - PORT_DIPSETTING( 0x06 << shift, "First time only" ) /* 初回のみ */ \ - PORT_DIPSETTING( 0x05 << shift, "Every 300 coins" ) /* 300コイン毎 */ \ - PORT_DIPSETTING( 0x04 << shift, "Every 500 coins" ) /* 500コイン毎 */ \ - PORT_DIPSETTING( 0x03 << shift, "Every 700 coins" ) /* 700コイン毎 */ \ - PORT_DIPSETTING( 0x02 << shift, "Every 1000 coins" ) /* 1000コイン毎 */ \ - /* PORT_DIPSETTING( 0x01 << shift, "Every 1000 coins" )*/ \ - /* PORT_DIPSETTING( 0x00 << shift, "Every 1000 coins" )*/ - #endif // MAME_DYNAX_DYNAX_H diff --git a/src/mame/dynax/mjdipsw.h b/src/mame/dynax/mjdipsw.h new file mode 100644 index 0000000000000..e086be9310502 --- /dev/null +++ b/src/mame/dynax/mjdipsw.h @@ -0,0 +1,69 @@ +// license:BSD-3-Clause +// copyright-holders:Vas Crabb +/*************************************************************************** + + Common Dynax mahjong DIP switch settings + +***************************************************************************/ +#ifndef MAME_DYNAX_MJDIPSW_H +#define MAME_DYNAX_MJDIPSW_H + +#pragma once + + +#define MAHJONG_PAYOUT_RATE(shift, loc) \ + PORT_DIPNAME( 0x0f << shift, 0x07 << shift, "Payout Rate" ) PORT_DIPLOCATION(loc) \ + PORT_DIPSETTING( 0x00 << shift, "50%" ) \ + PORT_DIPSETTING( 0x01 << shift, "53%" ) \ + PORT_DIPSETTING( 0x02 << shift, "56%" ) \ + PORT_DIPSETTING( 0x03 << shift, "59%" ) \ + PORT_DIPSETTING( 0x04 << shift, "62%" ) \ + PORT_DIPSETTING( 0x05 << shift, "65%" ) \ + PORT_DIPSETTING( 0x06 << shift, "68%" ) \ + PORT_DIPSETTING( 0x07 << shift, "71%" ) \ + PORT_DIPSETTING( 0x08 << shift, "75%" ) \ + PORT_DIPSETTING( 0x09 << shift, "78%" ) \ + PORT_DIPSETTING( 0x0a << shift, "81%" ) \ + PORT_DIPSETTING( 0x0b << shift, "84%" ) \ + PORT_DIPSETTING( 0x0c << shift, "87%" ) \ + PORT_DIPSETTING( 0x0d << shift, "90%" ) \ + PORT_DIPSETTING( 0x0e << shift, "93%" ) \ + PORT_DIPSETTING( 0x0f << shift, "96%" ) + +#define MAHJONG_ODDS_RATE(shift, loc) \ + PORT_DIPNAME( 0x03 << shift, 0x00 << shift, "Odds Rate" ) PORT_DIPLOCATION(loc) \ + PORT_DIPSETTING( 0x03 << shift, "1 2 4 8 12 16 24 32" ) \ + PORT_DIPSETTING( 0x00 << shift, "1 2 3 5 8 15 30 50" ) \ + PORT_DIPSETTING( 0x01 << shift, "1 2 3 5 10 25 50 100" ) \ + PORT_DIPSETTING( 0x02 << shift, "1 2 3 5 10 50 100 200" ) + +#define MAHJONG_COINAGE(shift, loc) \ + PORT_DIPNAME( 0x03 << shift, 0x03 << shift, DEF_STR(Coinage) ) PORT_DIPLOCATION(loc) /* COIN RATE */ \ + PORT_DIPSETTING( 0x03 << shift, DEF_STR(1C_1C) ) /* 1コイン  1プレイ */ \ + PORT_DIPSETTING( 0x02 << shift, DEF_STR(1C_2C) ) /* 1コイン  2プレイ */ \ + PORT_DIPSETTING( 0x01 << shift, DEF_STR(1C_5C) ) /* 1コイン  5プレイ */ \ + PORT_DIPSETTING( 0x00 << shift, "1 Coin/10 Credits" ) /* 1コイン 10プレイ */ + +#define MAHJONG_NOTE_CREDITS(shift, loc, ct, cs) \ + PORT_DIPNAME( 0x01 << shift, 0x00 << shift, "Credits Per Note" ) PORT_DIPLOCATION(loc) /* NOTE RATE */ \ + PORT_DIPSETTING( 0x01 << shift, "5" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x03 << cs) /* COIN×5 */ \ + PORT_DIPSETTING( 0x01 << shift, "10" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x02 << cs) \ + PORT_DIPSETTING( 0x01 << shift, "25" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x01 << cs) \ + PORT_DIPSETTING( 0x01 << shift, "50" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x00 << cs) \ + PORT_DIPSETTING( 0x00 << shift, "10" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x03 << cs) /* COIN×10 */ \ + PORT_DIPSETTING( 0x00 << shift, "20" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x02 << cs) \ + PORT_DIPSETTING( 0x00 << shift, "50" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x01 << cs) \ + PORT_DIPSETTING( 0x00 << shift, "100" ) PORT_CONDITION(ct, 0x03 << cs, EQUALS, 0x00 << cs) + +#define MAHJONG_YAKUMAN_BONUS(shift, loc) \ + PORT_DIPNAME( 0x07 << shift, 0x04 << shift, "Yakuman Bonus Cycle" ) PORT_DIPLOCATION(loc) /* 役満ボーナスの設定周期 */ \ + PORT_DIPSETTING( 0x07 << shift, "None" ) /* 無し */ \ + PORT_DIPSETTING( 0x06 << shift, "First time only" ) /* 初回のみ */ \ + PORT_DIPSETTING( 0x05 << shift, "Every 300 coins" ) /* 300コイン毎 */ \ + PORT_DIPSETTING( 0x04 << shift, "Every 500 coins" ) /* 500コイン毎 */ \ + PORT_DIPSETTING( 0x03 << shift, "Every 700 coins" ) /* 700コイン毎 */ \ + PORT_DIPSETTING( 0x02 << shift, "Every 1000 coins" ) /* 1000コイン毎 */ \ + /* PORT_DIPSETTING( 0x01 << shift, "Every 1000 coins" )*/ \ + /* PORT_DIPSETTING( 0x00 << shift, "Every 1000 coins" )*/ + +#endif // MAME_DYNAX_MJDIPSW_H diff --git a/src/mame/dynax/royalmah.cpp b/src/mame/dynax/royalmah.cpp index 510635970effc..20d8778cd3474 100644 --- a/src/mame/dynax/royalmah.cpp +++ b/src/mame/dynax/royalmah.cpp @@ -106,6 +106,8 @@ Stephh's notes (based on the games Z80 code and some tests) : #include "emu.h" +#include "mjdipsw.h" + #include "mahjong.h" #include "cpu/tlcs90/tlcs90.h" @@ -3155,137 +3157,221 @@ static INPUT_PORTS_START( mjtensin ) INPUT_PORTS_END static INPUT_PORTS_START( cafetime ) // dips definitions and defaults taken from MT05580, this uses 10 switch dip banks + // The manual provides two sets of standard settings: + // 標準設定 シングル向け 標準設定 コーナー向け + // SW 1 OFF OFF OFF ON ON ON OFF ON ON OFF OFF OFF OFF ON ON ON OFF ON ON OFF + // SW 2 OFF OFF OFF OFF ON ON OFF ON ON OFF OFF OFF OFF OFF ON OFF ON ON ON OFF + // SW 3 OFF OFF ON ON ON ON ON OFF OFF OFF OFF OFF ON ON ON ON ON OFF OFF OFF + // SW 4 OFF ON ON ON ON ON OFF ON OFF OFF ON ON OFF ON ON ON OFF ON OFF OFF + PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") // IN11 - PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4") - PORT_DIPSETTING( 0x0f, "96%" ) - PORT_DIPSETTING( 0x0e, "93%" ) - PORT_DIPSETTING( 0x0d, "90%" ) - PORT_DIPSETTING( 0x0c, "87%" ) - PORT_DIPSETTING( 0x0b, "84%" ) - PORT_DIPSETTING( 0x0a, "81%" ) - PORT_DIPSETTING( 0x09, "78%" ) - PORT_DIPSETTING( 0x08, "75%" ) - PORT_DIPSETTING( 0x07, "71%" ) - PORT_DIPSETTING( 0x06, "68%" ) - PORT_DIPSETTING( 0x05, "65%" ) - PORT_DIPSETTING( 0x04, "62%" ) - PORT_DIPSETTING( 0x03, "59%" ) - PORT_DIPSETTING( 0x02, "56%" ) - PORT_DIPSETTING( 0x01, "53%" ) - PORT_DIPSETTING( 0x00, "50%" ) - PORT_DIPNAME( 0x30, 0x00, "Odds Rate" ) PORT_DIPLOCATION("SW1:5,6") // Yakuman - Triple - Double - Haneman - Mangan - 3 Han - 2 Han - 1 Han - PORT_DIPSETTING( 0x30, "32-24-16-12-8-4-2-1" ) - PORT_DIPSETTING( 0x00, "50-30-15-8-5-3-2-1" ) - PORT_DIPSETTING( 0x10, "100-50-25-10-5-3-2-1" ) - PORT_DIPSETTING( 0x20, "200-100-50-10-5-3-2-1" ) - PORT_DIPNAME( 0xc0, 0x40, "Maximum Bet" ) PORT_DIPLOCATION("SW1:7,8") + MAHJONG_PAYOUT_RATE(0, "SW 1:1,2,3,4") // PAY-OUT RATE + MAHJONG_ODDS_RATE(4, "SW 1:5,6") // ODDS RATE + PORT_DIPNAME( 0xc0, 0x40, "Maximum Bet" ) PORT_DIPLOCATION("SW 1:7,8") // BET-MAX PORT_DIPSETTING( 0xc0, "1" ) PORT_DIPSETTING( 0x80, "5" ) PORT_DIPSETTING( 0x40, "10" ) PORT_DIPSETTING( 0x00, "20" ) - PORT_START("DSW2") // IN12, defaults for 'single type' - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:1,2") - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x00, "1C_10C" ) - PORT_DIPNAME( 0x0c, 0x0c, "Minimum Rate" ) PORT_DIPLOCATION("SW2:3,4") - PORT_DIPSETTING( 0x0c, "1" ) - PORT_DIPSETTING( 0x08, "2" ) - PORT_DIPSETTING( 0x04, "3" ) - PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x70, 0x40, "Yakuman Bonus" ) PORT_DIPLOCATION("SW2:5,6,7") // default for 'corner type' would be 0x20 - PORT_DIPSETTING( 0x70, DEF_STR( No ) ) - PORT_DIPSETTING( 0x60, "Once on Start" ) - PORT_DIPSETTING( 0x50, "Every 300 Coins" ) - PORT_DIPSETTING( 0x40, "Every 500 Coins" ) - PORT_DIPSETTING( 0x30, "Every 700 Coins" ) - PORT_DIPSETTING( 0x20, "Every 1000 Coins" ) - PORT_DIPSETTING( 0x10, DEF_STR( Unknown ) ) // not listed on dip sheet - PORT_DIPSETTING( 0x00, DEF_STR( Unknown ) ) // not listed on dip sheet - PORT_DIPNAME( 0x80, 0x00, "Yakuman Bonus Cycle" ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x00, "Once" ) - PORT_DIPSETTING( 0x80, "Twice" ) + PORT_START("DSW2") // IN12 + MAHJONG_COINAGE(0, "SW 2:1,2") // COIN RATE + PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW 2:3,4") // ゲーム・スタート時の最低レート数 + PORT_DIPSETTING( 0x0c, "1" ) // レート 1 + PORT_DIPSETTING( 0x08, "2" ) // レート 2 + PORT_DIPSETTING( 0x04, "3" ) // レート 3 + PORT_DIPSETTING( 0x00, "5" ) // レート 5 + MAHJONG_YAKUMAN_BONUS(4, "SW 2:5,6,7") // 役満ボーナスの設定周期 + PORT_DIPNAME( 0x80, 0x00, "Yakuman Bonuses Per Cycle" ) PORT_DIPLOCATION("SW 2:8") // 役満ボーナスの回数設定周期毎に + PORT_DIPSETTING( 0x00, "1" ) // 1回 + PORT_DIPSETTING( 0x80, "2" ) // 2回 PORT_START("DSW3") // IN13 - PORT_DIPNAME( 0x01, 0x01, "Payout Type" ) PORT_DIPLOCATION("SW3:1") - PORT_DIPSETTING( 0x01, "Credits" ) - PORT_DIPSETTING( 0x00, "Hopper" ) - PORT_DIPNAME( 0x02, 0x02, "Hopper Type" ) PORT_DIPLOCATION("SW3:2") - PORT_DIPSETTING( 0x02, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x00, "Reversed" ) - PORT_DIPNAME( 0x04, 0x00, "W-Bet" ) PORT_DIPLOCATION("SW3:3") - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, "Renchan Rate" ) PORT_DIPLOCATION("SW3:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, "Last Chance" ) PORT_DIPLOCATION("SW3:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "Good Time Timer" ) PORT_DIPLOCATION("SW3:6") - PORT_DIPSETTING( 0x00, "3 Minutes" ) - PORT_DIPSETTING( 0x20, "5 Minutes" ) - PORT_DIPNAME( 0x40, 0x00, "Quiz Bonus" ) PORT_DIPLOCATION("SW3:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Quiz Bonus Points" ) PORT_DIPLOCATION("SW3:8") - PORT_DIPSETTING( 0x00, "2" ) - PORT_DIPSETTING( 0x80, "3" ) + PORT_DIPNAME( 0x01, 0x01, "Payout Mode" ) PORT_DIPLOCATION("SW 3:1") // ゲーム・タイプ + PORT_DIPSETTING( 0x01, "Key-out" ) // クレジット・タイプ + PORT_DIPSETTING( 0x00, "Hopper" ) // ホッパー・タイプ + PORT_DIPNAME( 0x02, 0x02, "Hopper Polarity" ) PORT_DIPLOCATION("SW 3:2") // ホッパー・アクティブ + PORT_DIPSETTING( 0x02, DEF_STR(Normal) ) // 通常 + PORT_DIPSETTING( 0x00, "Inverted" ) // 反転 + PORT_DIPNAME( 0x04, 0x00, "Double Bet" ) PORT_DIPLOCATION("SW 3:3") // W-BET + PORT_DIPSETTING( 0x04, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x08, 0x00, "Renchan Rate" ) PORT_DIPLOCATION("SW 3:4") // 連荘レート + PORT_DIPSETTING( 0x08, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x10, 0x00, "Last Chance" ) PORT_DIPLOCATION("SW 3:5") // ラスト・チャンス + PORT_DIPSETTING( 0x10, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x20, 0x00, "Good Time Duration" ) PORT_DIPLOCATION("SW 3:6") // Good Time の時間 + PORT_DIPSETTING( 0x00, "3 Minutes" ) // 3分間 + PORT_DIPSETTING( 0x20, "5 Minutes" ) // 5分間 + PORT_DIPNAME( 0x40, 0x00, "Quiz Bonus" ) PORT_DIPLOCATION("SW 3:7") // クイズ・ボーナス + PORT_DIPSETTING( 0x40, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x80, 0x80, "Quiz Bonus Points" ) PORT_DIPLOCATION("SW 3:8") // クイズ・ボーナスのポイント + PORT_DIPSETTING( 0x00, "2" ) // 2点 + PORT_DIPSETTING( 0x80, "3" ) // 3点 + + PORT_START("DSW4") // IN14 + PORT_DIPNAME( 0x01, 0x00, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW 4:1") // デモ・サウンド + PORT_DIPSETTING( 0x01, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x02, 0x00, "In-Game Music" ) PORT_DIPLOCATION("SW 4:2") // ゲーム・サウンド + PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x04, 0x00, "Don Den Button" ) PORT_DIPLOCATION("SW 4:3") // Don・Den 機能ボタン変更 + PORT_DIPSETTING( 0x04, "Start" ) // スタート・ボタ + PORT_DIPSETTING( 0x00, "Flip Flop" ) // F/F・ボタン + PORT_DIPNAME( 0x08, 0x00, "Auto Reach" ) PORT_DIPLOCATION("SW 4:4") // オート・リーチ + PORT_DIPSETTING( 0x08, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x10, 0x00, "Show 4-Panel Comics" ) PORT_DIPLOCATION("SW 4:5") // 4コマ・漫画表示 + PORT_DIPSETTING( 0x10, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x20, 0x00, "Background Color" ) PORT_DIPLOCATION("SW 4:6") // バック・カラー + PORT_DIPSETTING( 0x20, "Black" ) // 黒 + PORT_DIPSETTING( 0x00, "Green" ) // 緑 + PORT_DIPNAME( 0x40, 0x40, "Stage Select" ) PORT_DIPLOCATION("SW 4:7") // 本(ステージ)セレクト + PORT_DIPSETTING( 0x40, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x80, 0x00, "Yakuman Match" ) PORT_DIPLOCATION("SW 4:8") // 役満勝負 + PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + + PORT_START("DSWTOP") // IN15, actually switches 9-10 of the first 4 banks + MAHJONG_NOTE_CREDITS(0, "SW 1:9", "DSW2", 0) // NOTE RATE + PORT_DIPNAME( 0x02, 0x02, DEF_STR(Flip_Screen) ) PORT_DIPLOCATION("SW 1:10") // モニター画面反転 + PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 通常 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 反転 + PORT_DIPNAME( 0x04, 0x00, "Computer Strength" ) PORT_DIPLOCATION("SW 2:9") // コンピューターの強さ + PORT_DIPSETTING( 0x00, DEF_STR(Normal) ) // 普通 + PORT_DIPSETTING( 0x04, "Strong" ) // 強い + PORT_DIPNAME( 0x08, 0x08, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW 2:10") // OFF固定 + PORT_DIPSETTING( 0x08, DEF_STR(Off) ) + PORT_DIPSETTING( 0x00, DEF_STR(On) ) + PORT_DIPNAME( 0x30, 0x30, "Quiz Questions Table" ) PORT_DIPLOCATION("SW 3:9,10") // クイズ問題テーブル + PORT_DIPSETTING( 0x30, "A" ) // テーブル A + PORT_DIPSETTING( 0x20, "B" ) // テーブル B + PORT_DIPSETTING( 0x10, "C" ) // テーブル C + PORT_DIPSETTING( 0x00, "D" ) // テーブル D + PORT_DIPNAME( 0x40, 0x40, "Yakuman Match Frequency" ) PORT_DIPLOCATION("SW 4:9") // 役満勝負の頻度 + PORT_DIPSETTING( 0x00, DEF_STR(Normal) ) // 普通 + PORT_DIPSETTING( 0x40, "Frequent" ) // よく出る + PORT_DIPNAME( 0x80, 0x80, "4-Panel Comic Type" ) PORT_DIPLOCATION("SW 4:10") // 4コマ・漫画 タイプ + PORT_DIPSETTING( 0x00, "A" ) // Aタイプ + PORT_DIPSETTING( 0x80, "B" ) // Bタイプ +INPUT_PORTS_END - PORT_START("DSW4") // IN14, defaults for 'single type' - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW4:1") // Should be off for 'single type' and on for 'corner type', left on for easier regression testing - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, "BGM during Gameplay" ) PORT_DIPLOCATION("SW4:2") - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, "Don Den Button" ) PORT_DIPLOCATION("SW4:3") // Off for 'corner type' - PORT_DIPSETTING( 0x04, "Start Button" ) - PORT_DIPSETTING( 0x00, "F/F Button" ) - PORT_DIPNAME( 0x08, 0x00, "Auto Reach" ) PORT_DIPLOCATION("SW4:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, "Full Test" ) PORT_DIPLOCATION("SW4:5") // 4 koma comic test - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "Background" ) PORT_DIPLOCATION("SW4:6") - PORT_DIPSETTING( 0x20, "Black" ) - PORT_DIPSETTING( 0x00, "Green" ) - PORT_DIPNAME( 0x40, 0x40, "Book (Stage) Select" ) PORT_DIPLOCATION("SW4:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, "Yakuman Match" ) PORT_DIPLOCATION("SW4:8") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +static INPUT_PORTS_START( cafedoll ) + // The manual provides three sets of standard settings: + // 標準設定 シングル向け 標準設定 メダル コーナー向け 標準設定 アミューズ コーナー向け + // SW 1 OFF OFF OFF ON ON ON OFF ON ON OFF OFF OFF OFF ON ON ON OFF ON ON OFF ON OFF OFF ON OFF OFF ON OFF ON OFF + // SW 2 OFF OFF OFF OFF ON ON ON ON ON ON OFF OFF OFF OFF ON ON ON ON ON ON OFF OFF OFF OFF ON ON ON ON ON ON + // SW 3 ON OFF ON ON ON OFF OFF ON OFF OFF OFF ON ON ON ON OFF OFF ON OFF OFF OFF OFF OFF OFF OFF OFF OFF OFF ON ON + // SW 4 OFF ON ON ON ON ON ON ON OFF OFF ON ON ON ON OFF ON ON ON ON OFF ON ON ON ON OFF ON ON ON ON OFF - PORT_START("DSWTOP") // IN15, actually dips 9-10 of the first 4 banks - PORT_DIPNAME( 0x01, 0x00, "Credits Per Note" ) PORT_DIPLOCATION("SW1:9") - PORT_DIPSETTING( 0x01, "5" ) - PORT_DIPSETTING( 0x00, "10" ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:10") - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:9") - PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:10") // listed as Unused OFF - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x30, 0x30, "Quiz Questions Table" ) PORT_DIPLOCATION("SW3:9,10") - PORT_DIPSETTING( 0x30, "A" ) - PORT_DIPSETTING( 0x20, "B" ) - PORT_DIPSETTING( 0x10, "C" ) - PORT_DIPSETTING( 0x00, "D" ) - PORT_DIPNAME( 0x40, 0x40, "Yakuman Match Frequency" ) PORT_DIPLOCATION("SW4:9") - PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x40, "Often" ) - PORT_DIPNAME( 0x80, 0x80, "4 Koma Comic Type" ) PORT_DIPLOCATION("SW4:10") - PORT_DIPSETTING( 0x00, "A" ) - PORT_DIPSETTING( 0x80, "B" ) + PORT_INCLUDE( mjctrl2 ) + + PORT_START("DSW1") // IN11 + MAHJONG_PAYOUT_RATE(0, "SW 1:1,2,3,4") // PAY-OUT RATE + MAHJONG_ODDS_RATE(4, "SW 1:5,6") // ODDS RATE + PORT_DIPNAME( 0xc0, 0x40, "Maximum Bet" ) PORT_DIPLOCATION("SW 1:7,8") // BET-MAX + PORT_DIPSETTING( 0xc0, "1" ) + PORT_DIPSETTING( 0x80, "5" ) + PORT_DIPSETTING( 0x40, "10" ) + PORT_DIPSETTING( 0x00, "20" ) + + PORT_START("DSW2") // IN12 + MAHJONG_COINAGE(0, "SW 2:1,2") // COIN RATE + PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW 2:3,4") // ゲーム・スタート時の最低レート数 + PORT_DIPSETTING( 0x0c, "1" ) // レート 1 + PORT_DIPSETTING( 0x08, "2" ) // レート 2 + PORT_DIPSETTING( 0x04, "3" ) // レート 3 + PORT_DIPSETTING( 0x00, "5" ) // レート 5 + PORT_DIPNAME( 0x30, 0x00, "Credit Limit" ) PORT_DIPLOCATION("SW 2:5,6") // クレジット・コインリミット + PORT_DIPSETTING( 0x30, "300" ) + PORT_DIPSETTING( 0x20, "500" ) + PORT_DIPSETTING( 0x10, "700" ) + PORT_DIPSETTING( 0x00, "1000" ) + PORT_DIPNAME( 0x40, 0x00, "Double Bet" ) PORT_DIPLOCATION("SW 2:7") // W-BET機能 + PORT_DIPSETTING( 0x40, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x80, 0x00, "Renchan Rate" ) PORT_DIPLOCATION("SW 2:8") // 連荘レート + PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + + PORT_START("DSW3") // IN13 + PORT_DIPNAME( 0x03, 0x02, "Bonus Chance Cycle" ) PORT_DIPLOCATION("SW 3:1,2") // ボーナス・チャンスの設定周期 + PORT_DIPSETTING( 0x03, "First time only" ) // 初回のみ + PORT_DIPSETTING( 0x02, "Every 500 coins" ) // 500コイン毎 + PORT_DIPSETTING( 0x01, "Every 700 coins" ) // 700コイン毎 + PORT_DIPSETTING( 0x00, "Every 1000 coins" ) // 1000コイン毎 + PORT_DIPNAME( 0x04, 0x00, "Bonus Chances Per Cycle" ) PORT_DIPLOCATION("SW 3:3") // ボーナス・チャンスの回数設定周期毎に + PORT_DIPSETTING( 0x00, "1" ) // 1回 + PORT_DIPSETTING( 0x04, "2" ) // 2回 + PORT_DIPNAME( 0x18, 0x00, "Bonus Chance Combination" ) PORT_DIPLOCATION("SW 3:4,5") // ボーナス・チャンスの組みあわせ + PORT_DIPSETTING( 0x18, "No Bonus Chance" ) // ボーナス・チャンス無し + PORT_DIPSETTING( 0x10, "Yakuman Chance Only" ) // 役満チャンスのみ + PORT_DIPSETTING( 0x08, "Renzoku Chance Only" ) // 連続チャンスのみ + PORT_DIPSETTING( 0x00, "(A) Yakuman Chance and (B) Renzoku Chance" ) // (A)役満チャンスと(B)連続チャンス + PORT_DIPNAME( 0x60, 0x60, "Ratio of (A) and (B) When Combined" ) PORT_DIPLOCATION("SW 3:6,7") // 組み合わせ複合時の(A)(B)の出率 + PORT_DIPSETTING( 0x60, "Equal" ) // 同等 + PORT_DIPSETTING( 0x40, "More of (A)" ) // (A)が多い + PORT_DIPSETTING( 0x20, "More of (B)" ) // (B)が多い + PORT_DIPNAME( 0x80, 0x00, "Renzoku Chance Payout" ) PORT_DIPLOCATION("SW 3:8") // 連続チャンスの配当 + PORT_DIPSETTING( 0x80, DEF_STR(Low) ) // 小さい + PORT_DIPSETTING( 0x00, DEF_STR(Normal) ) // 通常 + + PORT_START("DSW4") // IN14 + PORT_DIPNAME( 0x01, 0x00, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW 4:1") // デモ・サウンド + PORT_DIPSETTING( 0x01, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x02, 0x00, "In-Game Music" ) PORT_DIPLOCATION("SW 4:2") // ゲーム・サウンド + PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x04, 0x00, "Background Color" ) PORT_DIPLOCATION("SW 4:3") // バック・カラー + PORT_DIPSETTING( 0x04, "Black" ) // 黒 + PORT_DIPSETTING( 0x00, "Green" ) // グリーン + PORT_DIPNAME( 0x08, 0x00, "Last Chance" ) PORT_DIPLOCATION("SW 4:4") // ラスト・チャンス + PORT_DIPSETTING( 0x08, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x10, 0x00, "Don Den Button" ) PORT_DIPLOCATION("SW 4:5") // Don・Den 機能ボタン変更 + PORT_DIPSETTING( 0x10, "Start" ) // スタート・ボタ + PORT_DIPSETTING( 0x00, "Flip Flop" ) // F/F・ボタン + PORT_DIPNAME( 0x20, 0x00, "Show 4-Panel Comics" ) PORT_DIPLOCATION("SW 4:6") // 4コマ・漫画表示 + PORT_DIPSETTING( 0x20, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x40, 0x00, "Quiz Bonus" ) PORT_DIPLOCATION("SW 4:7") // クイズ・ボーナス + PORT_DIPSETTING( 0x40, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x80, 0x00, "Mid-Game Bonus Game" ) PORT_DIPLOCATION("SW 4:8") // ゲーム中のボーナス ゲーム + PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + + PORT_START("DSWTOP") // IN15, actually switches 9-10 of the first 4 banks + MAHJONG_NOTE_CREDITS(0, "SW 1:9", "DSW2", 0) // NOTE RATE + PORT_DIPNAME( 0x02, 0x02, DEF_STR(Flip_Screen) ) PORT_DIPLOCATION("SW 1:10") // モニター画面反転 + PORT_DIPSETTING( 0x02, DEF_STR(Off) ) // 通常 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 反転 + PORT_DIPNAME( 0x04, 0x00, "Computer Strength" ) PORT_DIPLOCATION("SW 2:9") // コンピューターの強さ + PORT_DIPSETTING( 0x00, DEF_STR(Normal) ) // 普通 + PORT_DIPSETTING( 0x04, "Strong" ) // 強い + PORT_DIPNAME( 0x08, 0x00, "Auto Reach" ) PORT_DIPLOCATION("SW 2:10") // オート・リーチ機能 + PORT_DIPSETTING( 0x08, DEF_STR(Off) ) // 無 + PORT_DIPSETTING( 0x00, DEF_STR(On) ) // 有 + PORT_DIPNAME( 0x10, 0x10, "Game Type" ) PORT_DIPLOCATION("SW 3:9") // ゲーム タイプ + PORT_DIPSETTING( 0x10, "Credit Type" ) // クレジット タイプ + PORT_DIPSETTING( 0x00, "Credit Timer Type" ) // クレジット タイマー タイプ + PORT_DIPNAME( 0x20, 0x20, "Game Start Rate 1" ) PORT_DIPLOCATION("SW 3:10") // ゲームスタート レート1 + PORT_DIPSETTING( 0x20, DEF_STR(Normal) ) // 通常 + PORT_DIPSETTING( 0x00, "Fixed" ) // 固定 + PORT_DIPNAME( 0x40, 0x40, "Just Time Bonus Standard Settings" ) PORT_DIPLOCATION("SW 4:9") // ジャスト・タイム・ボーナス 標準設定 + PORT_DIPSETTING( 0x40, "Single" ) // シングル向け + PORT_DIPSETTING( 0x00, "Medal Corner" ) // メダル コーナー向け + PORT_DIPNAME( 0x80, 0x80, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW 4:10") // OFF固定 + PORT_DIPSETTING( 0x80, DEF_STR(Off) ) + PORT_DIPSETTING( 0x00, DEF_STR(On) ) INPUT_PORTS_END static INPUT_PORTS_START( ippatsu ) @@ -6256,8 +6342,8 @@ GAME( 1990, mjifb3, mjifb, mjifb, mjifb, royalmah_prgbank_state, GAME( 1991, mjvegasa, 0, mjvegasa, mjvegasa, royalmah_prgbank_state, init_mjvegasa, ROT0, "Dynax", "Mahjong Vegas (Japan, unprotected)", 0 ) GAME( 1991, mjvegas, mjvegasa, mjvegas, mjvegasa, royalmah_prgbank_state, init_mjvegas, ROT0, "Dynax", "Mahjong Vegas (Japan)", 0 ) GAME( 1992, cafetime, 0, cafetime, cafetime, royalmah_prgbank_state, init_cafetime, ROT0, "Dynax", "Mahjong Cafe Time", 0 ) -GAME( 1993, cafedoll, 0, cafedoll, cafetime, royalmah_prgbank_state, init_cafedoll, ROT0, "Dynax", "Mahjong Cafe Doll (Japan, Ver. 1.00)", MACHINE_NOT_WORKING ) // fails protection check (at 0x178 it puts 0x55 in 0xFFBF instead of 0x56 like the code expects and chaos ensues) -GAME( 1993, cafedollg, cafedoll, cafedoll, cafetime, royalmah_prgbank_state, init_cafedoll, ROT0, "Dynax", "Mahjong Cafe Doll Great (Japan, Ver. 1.00)", MACHINE_NOT_WORKING ) // fails protection check (at 0x178 it puts 0x55 in 0xFFBF instead of 0x56 like the code expects and chaos ensues) +GAME( 1993, cafedoll, 0, cafedoll, cafedoll, royalmah_prgbank_state, init_cafedoll, ROT0, "Dynax", "Mahjong Cafe Doll (Japan, Ver. 1.00)", MACHINE_NOT_WORKING ) // fails protection check (at 0x178 it puts 0x55 in 0xFFBF instead of 0x56 like the code expects and chaos ensues) +GAME( 1993, cafedollg, cafedoll, cafedoll, cafedoll, royalmah_prgbank_state, init_cafedoll, ROT0, "Dynax", "Mahjong Cafe Doll Great (Japan, Ver. 1.00)", MACHINE_NOT_WORKING ) // fails protection check (at 0x178 it puts 0x55 in 0xFFBF instead of 0x56 like the code expects and chaos ensues) GAME( 1993, ichiban, 0, ichiban, ichiban, royalmah_prgbank_state, init_ichiban, ROT0, "Excel", "Ichi Ban Jyan", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // ROM banking is wrong, causing several GFX problems GAME( 1993, dragonmj, 0, ichiban, ichiban, royalmah_prgbank_state, init_ichiban, ROT0, "OCT", "Dragon Mahjong (Ver 1.20)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // " - DRAGON Ver1.20 1993/11/09 GAME( 1993, dragonmj103, dragonmj, ichiban, ichiban, royalmah_prgbank_state, init_ichiban, ROT0, "OCT", "Dragon Mahjong (Ver 1.03)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS ) // " - DRAGON Ver1.03 1993/10/16 From 93bd73c90e8f0a9189d26f11df423db659dba0d2 Mon Sep 17 00:00:00 2001 From: angelosa Date: Tue, 24 Dec 2024 17:08:09 +0100 Subject: [PATCH 35/39] amiga/amiga_m.cpp: minor chores --- src/mame/amiga/amiga_m.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mame/amiga/amiga_m.cpp b/src/mame/amiga/amiga_m.cpp index 6f5c074bb5332..0c1ecad4f6162 100644 --- a/src/mame/amiga/amiga_m.cpp +++ b/src/mame/amiga/amiga_m.cpp @@ -1285,7 +1285,7 @@ void amiga_state::bplcon0_w(u16 data) if ((data & (BPLCON0_BPU0 | BPLCON0_BPU1 | BPLCON0_BPU2)) == (BPLCON0_BPU0 | BPLCON0_BPU1 | BPLCON0_BPU2)) { /* planes go from 0 to 6, inclusive */ - popmessage( "bplcon0_w: setting up planes > 6, %04x", data ); + popmessage( "bplcon0_w: setting up planes > 6, %04x (bug if not AGA SW)", data ); data &= ~BPLCON0_BPU0; } CUSTOM_REG(REG_BPLCON0) = data; @@ -1387,7 +1387,8 @@ uint16_t amiga_state::custom_chip_r(offs_t offset) return m_fdc->adkcon_r(); case REG_DSKDATR: - popmessage("DSKDAT R"); + if (!machine().side_effects_disabled()) + popmessage("DSKDAT R"); break; } From 45b8e08715e3fee3488a7d1ef5aad45c4e8fbb0d Mon Sep 17 00:00:00 2001 From: angelosa Date: Tue, 24 Dec 2024 17:09:08 +0100 Subject: [PATCH 36/39] vsystem/gstriker.cpp: add serial connection notes --- src/mame/vsystem/gstriker.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mame/vsystem/gstriker.cpp b/src/mame/vsystem/gstriker.cpp index 79220645abdd5..be9751a8cc81b 100644 --- a/src/mame/vsystem/gstriker.cpp +++ b/src/mame/vsystem/gstriker.cpp @@ -184,6 +184,7 @@ Frequencies: 68k is XTAL_32MHZ/2 #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "machine/6850acia.h" +#include "machine/clock.h" #include "machine/gen_latch.h" #include "machine/mb3773.h" #include "sound/ymopn.h" @@ -691,8 +692,14 @@ void gstriker_state::gstriker(machine_config &config) ACIA6850(config, m_acia, 0); m_acia->irq_handler().set_inputline(m_maincpu, M68K_IRQ_2); - //m_acia->txd_handler().set("link", FUNC(rs232_port_device::write_txd)); - //m_acia->rts_handler().set("link", FUNC(rs232_port_device::write_rts)); + m_acia->txd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); // loopback for now + + // DE-9 port + // slave sends 0xca, master receives it and sends a 0x0d ACK back. + // writing latter to $200063 while in slave mode will pass the serial check + clock_device &acia_clock(CLOCK(config, "acia_clock", 20_MHz_XTAL / 64)); // assume ~19200 baud + acia_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc)); + acia_clock.signal_handler().append(m_acia, FUNC(acia6850_device::write_rxc)); } void gstriker_state::twc94(machine_config &config) From 7772559b286accaf2fff94d924924f8ede1fb9b1 Mon Sep 17 00:00:00 2001 From: angelosa Date: Tue, 24 Dec 2024 18:12:40 +0100 Subject: [PATCH 37/39] machine/amigafdc.cpp: avoid spinning floppy motor if disk isn't in --- src/devices/machine/amigafdc.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/devices/machine/amigafdc.cpp b/src/devices/machine/amigafdc.cpp index 662a80dffe4b5..53ec7a5718b19 100644 --- a/src/devices/machine/amigafdc.cpp +++ b/src/devices/machine/amigafdc.cpp @@ -511,7 +511,9 @@ void amiga_fdc_device::ciaaprb_w(uint8_t data) floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&amiga_fdc_device::index_callback, this)); } - if(floppy) { + const bool floppy_inserted = floppy && floppy->exists(); + + if(floppy_inserted) { floppy->ss_w(!(BIT(data, 2))); floppy->dir_w(BIT(data, 1)); floppy->stp_w(BIT(data, 0)); @@ -519,7 +521,7 @@ void amiga_fdc_device::ciaaprb_w(uint8_t data) m_fdc_led = BIT(data, 7); // LED directly connected to FDC motor } - if(floppy) { + if(floppy_inserted) { if(cur_live.state == IDLE) live_start(); } else From 20f91f29740f4ba74117716daf6e92e9542c43df Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 24 Dec 2024 21:40:51 +0100 Subject: [PATCH 38/39] e0c6s46: add e0c6s48 New working systems ------------------- Angel Gotch (Japan) [hap, azya] Mothra no Tamagotch (Japan) [hap, azya] --- src/devices/cpu/e0c6200/e0c6200.cpp | 20 +++---- src/devices/cpu/e0c6200/e0c6200.h | 1 + src/devices/cpu/e0c6200/e0c6200op.cpp | 5 ++ src/devices/cpu/e0c6200/e0c6s46.cpp | 77 +++++++++++++++++------- src/devices/cpu/e0c6200/e0c6s46.h | 56 +++++++++++------ src/mame/handheld/hh_e0c6x.cpp | 86 +++++++++++++++++++++++++-- src/mame/mame.lst | 2 + 7 files changed, 191 insertions(+), 56 deletions(-) diff --git a/src/devices/cpu/e0c6200/e0c6200.cpp b/src/devices/cpu/e0c6200/e0c6200.cpp index e8c8852af9c96..83c3eec704bd2 100644 --- a/src/devices/cpu/e0c6200/e0c6200.cpp +++ b/src/devices/cpu/e0c6200/e0c6200.cpp @@ -4,17 +4,17 @@ Seiko Epson E0C6200 CPU core and E0C62 MCU family - References: - - 1998 MF297-06a E0C6200/E0C6200A Core CPU Manual - - 1998 MF1049-01a E0C6S46 Technical Manual +References: +- 1998 MF297-06a E0C6200/E0C6200A Core CPU Manual +- 1998 MF1049-01a E0C6S46 Technical Manual - E0C6200 is a CPU core used as the basis of many chips, it is not standalone. - Seiko Epson often changed prefixes of their device names. Depending on when, - the E0C6200 is known as SMC6200, E0C6200, S1C6200. +E0C6200 is a CPU core used as the basis of many chips, it is not standalone. +Seiko Epson often changed prefixes of their device names. Depending on when, +the E0C6200 is known as SMC6200, E0C6200, S1C6200. - TODO: - - RLC is part of the r,q opcodes and requires that r == q, what happens otherwise? - - documentation is conflicting on whether or not the zero flag is set on RLC/RRC +TODO: +- RLC is part of the r,q opcodes and requires that r == q, what happens otherwise? +- documentation is conflicting on whether or not the zero flag is set on RLC/RRC */ @@ -839,7 +839,7 @@ void e0c6200_cpu_device::execute_one() // illegal opcode default: - logerror("unknown opcode $%03X at $%04X\n", m_op, m_prev_pc); + op_illegal(); break; } // 0xff0 diff --git a/src/devices/cpu/e0c6200/e0c6200.h b/src/devices/cpu/e0c6200/e0c6200.h index 0024092e02ad7..58c4769d55c3e 100644 --- a/src/devices/cpu/e0c6200/e0c6200.h +++ b/src/devices/cpu/e0c6200/e0c6200.h @@ -91,6 +91,7 @@ class e0c6200_cpu_device : public cpu_device void inc_x(); void inc_y(); void do_branch(int condition = 1); + void op_illegal(); // opcode handlers u8 op_inc(u8 x); diff --git a/src/devices/cpu/e0c6200/e0c6200op.cpp b/src/devices/cpu/e0c6200/e0c6200op.cpp index 93ab8011f7d86..d637c3cb3121a 100644 --- a/src/devices/cpu/e0c6200/e0c6200op.cpp +++ b/src/devices/cpu/e0c6200/e0c6200op.cpp @@ -116,6 +116,11 @@ void e0c6200_cpu_device::do_branch(int condition) m_pc = m_jpc | (m_op & 0xff); } +void e0c6200_cpu_device::op_illegal() +{ + logerror("unknown opcode $%03X at $%04X\n", m_op, m_prev_pc); +} + // common opcodes (simpler ones are handled directly) // note: it is implied that all opcodes below except RRC take 7 clock cycles (5 already deducted) diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp index 8b92eab28ea57..02b8d25faca53 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.cpp +++ b/src/devices/cpu/e0c6200/e0c6s46.cpp @@ -2,16 +2,18 @@ // copyright-holders:hap /* - Seiko Epson E0C6S46 MCU - QFP5-128pin, see manual for pinout + Seiko Epson E0C6S46 family - TODO: - - finish i/o ports - - serial interface - - buzzer envelope addition - - what happens if OSC3 is selected while OSCC (bit 2) is low? - - K input interrupt can trigger if input is active while writing to the mask register - - add mask options for ports (eg. buzzer on output port R4x is optional) +E0C6S46: 6144x12 ROM, 640x4 RAM, 2*80x4 VRAM, LCD has 16 commons and 40 segments +E0C6S48: 8192x12 ROM, 768x4 RAM, 2*102x4 VRAM, LCD has 16 commons and 51 segments + +TODO: +- finish i/o ports +- serial interface +- buzzer envelope addition +- what happens if OSC3 is selected while OSCC (bit 2) is low? +- K input interrupt can trigger if input is active while writing to the mask register +- add mask options for ports (eg. buzzer on output port R4x is optional) */ @@ -28,17 +30,23 @@ enum IRQREG_INPUT1 }; +// device definitions DEFINE_DEVICE_TYPE(E0C6S46, e0c6s46_device, "e0c6s46", "Seiko Epson E0C6S46") +DEFINE_DEVICE_TYPE(E0C6S48, e0c6s48_device, "e0c6s48", "Seiko Epson E0C6S48") // internal memory maps -void e0c6s46_device::e0c6s46_program(address_map &map) +void e0c6s46_device::program_map(address_map &map) { map(0x0000, 0x17ff).rom(); } +void e0c6s48_device::program_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); +} -void e0c6s46_device::e0c6s46_data(address_map &map) +void e0c6s46_device::data_map(address_map &map) { map(0x0000, 0x027f).ram(); map(0x0e00, 0x0e4f).ram().share(m_vram[0]); @@ -46,20 +54,35 @@ void e0c6s46_device::e0c6s46_data(address_map &map) map(0x0f00, 0x0f7f).rw(FUNC(e0c6s46_device::io_r), FUNC(e0c6s46_device::io_w)); } +void e0c6s48_device::data_map(address_map &map) +{ + map(0x0000, 0x02ff).ram(); + map(0x0e00, 0x0e65).ram().share(m_vram[0]); + map(0x0e80, 0x0ee5).ram().share(m_vram[1]); + map(0x0f00, 0x0f7f).rw(FUNC(e0c6s48_device::io_r), FUNC(e0c6s48_device::io_w)); +} + -// device definitions -e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : - e0c6200_cpu_device(mconfig, E0C6S46, tag, owner, clock, address_map_constructor(FUNC(e0c6s46_device::e0c6s46_program), this), address_map_constructor(FUNC(e0c6s46_device::e0c6s46_data), this)), +// constructor +e0c6s46_device::e0c6s46_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor program, address_map_constructor data) : + e0c6200_cpu_device(mconfig, type, tag, owner, clock, program, data), m_vram(*this, "vram%u", 1U), - m_osc3(0), m_write_segs(*this), m_write_contrast(*this), m_pixel_cb(*this), m_write_r(*this), m_read_p(*this, 0), - m_write_p(*this) + m_write_p(*this), + m_osc3(0) +{ } + +e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : + e0c6s46_device(mconfig, E0C6S46, tag, owner, clock, address_map_constructor(FUNC(e0c6s46_device::program_map), this), address_map_constructor(FUNC(e0c6s46_device::data_map), this)) { } +e0c6s48_device::e0c6s48_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : + e0c6s46_device(mconfig, E0C6S48, tag, owner, clock, address_map_constructor(FUNC(e0c6s48_device::program_map), this), address_map_constructor(FUNC(e0c6s48_device::data_map), this)) +{ } //------------------------------------------------- @@ -78,9 +101,8 @@ void e0c6s46_device::device_start() m_core_256_handle = timer_alloc(FUNC(e0c6s46_device::core_256_cb), this); m_core_256_handle->adjust(attotime::from_ticks(64, m_osc1)); m_prgtimer_handle = timer_alloc(FUNC(e0c6s46_device::prgtimer_cb), this); - m_prgtimer_handle->adjust(attotime::never); m_buzzer_handle = timer_alloc(FUNC(e0c6s46_device::buzzer_cb), this); - m_buzzer_handle->adjust(attotime::never); + m_osc_change = timer_alloc(FUNC(e0c6s46_device::osc_change), this); m_lcd_driver = timer_alloc(FUNC(e0c6s46_device::lcd_driver_cb), this); m_lcd_driver->adjust(attotime::from_ticks(1024, m_osc1)); @@ -226,9 +248,9 @@ void e0c6s46_device::execute_one() { // E0C6S46 has no support for SLP opcode if (m_op == 0xff9) - return; - - e0c6200_cpu_device::execute_one(); + op_illegal(); + else + e0c6200_cpu_device::execute_one(); } @@ -394,6 +416,12 @@ TIMER_CALLBACK_MEMBER(e0c6s46_device::core_256_cb) clock_clktimer(); } +TIMER_CALLBACK_MEMBER(e0c6s46_device::osc_change) +{ + // set MCU instruction clock on CLKCHG change + set_clock((m_osc & 8) ? m_osc3 : m_osc1); +} + // clock-timer @@ -790,7 +818,12 @@ void e0c6s46_device::io_w(offs_t offset, u8 data) // d2: OSC3 on (high freq) // d3: clock source OSC1 or OSC3 if ((m_osc ^ data) & 8) - set_clock((data & 8) ? m_osc3 : m_osc1); + { + if (m_osc1 == m_osc3) + logerror("io_w unhandled OSC change, PC=$%04X\n", m_prev_pc); + else + m_osc_change->adjust(attotime::zero); + } m_osc = data; break; diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index d836109c6ef96..e0b7148423e40 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -2,7 +2,7 @@ // copyright-holders:hap /* - Seiko Epson E0C6S46 MCU + Seiko Epson E0C6S46 family */ @@ -11,6 +11,19 @@ #include "e0c6200.h" +// for the 2 K input ports, use set_input_line(line, state) +enum +{ + E0C6S46_LINE_K00 = 0, + E0C6S46_LINE_K01, + E0C6S46_LINE_K02, + E0C6S46_LINE_K03, + E0C6S46_LINE_K10, + E0C6S46_LINE_K11, + E0C6S46_LINE_K12, + E0C6S46_LINE_K13 +}; + enum { E0C6S46_PORT_R0X = 0, @@ -28,18 +41,7 @@ enum E0C6S46_PORT_P3X }; -// for the 2 K input ports, use set_input_line(line, state) -enum -{ - E0C6S46_LINE_K00 = 0, - E0C6S46_LINE_K01, - E0C6S46_LINE_K02, - E0C6S46_LINE_K03, - E0C6S46_LINE_K10, - E0C6S46_LINE_K11, - E0C6S46_LINE_K12, - E0C6S46_LINE_K13 -}; +// no pinout diagram here, refer to the manual class e0c6s46_device : public e0c6200_cpu_device @@ -72,6 +74,8 @@ class e0c6s46_device : public e0c6200_cpu_device void set_osc3(u32 osc) { m_osc3 = osc; } protected: + e0c6s46_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor program, address_map_constructor data); + // device-level overrides virtual void device_start() override ATTR_COLD; virtual void device_reset() override ATTR_COLD; @@ -81,20 +85,18 @@ class e0c6s46_device : public e0c6200_cpu_device virtual void execute_one() override; virtual bool check_interrupt() override; - void e0c6s46_data(address_map &map) ATTR_COLD; - void e0c6s46_program(address_map &map) ATTR_COLD; - -private: u8 io_r(offs_t offset); void io_w(offs_t offset, u8 data); required_shared_ptr_array m_vram; +private: + void program_map(address_map &map) ATTR_COLD; + void data_map(address_map &map) ATTR_COLD; + u8 m_irqflag[6]; u8 m_irqmask[6]; u8 m_osc; - u32 m_osc1; - u32 m_osc3; u8 m_svd; // lcd driver @@ -167,9 +169,25 @@ class e0c6s46_device : public e0c6200_cpu_device void schedule_buzzer(); void reset_buzzer(); void clock_bz_1shot(); + + u32 m_osc1; + u32 m_osc3; + emu_timer *m_osc_change; + TIMER_CALLBACK_MEMBER(osc_change); +}; + +class e0c6s48_device : public e0c6s46_device +{ +public: + e0c6s48_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +private: + void program_map(address_map &map) ATTR_COLD; + void data_map(address_map &map) ATTR_COLD; }; DECLARE_DEVICE_TYPE(E0C6S46, e0c6s46_device) +DECLARE_DEVICE_TYPE(E0C6S48, e0c6s48_device) #endif // MAME_CPU_E0C6200_E0C6S46_H diff --git a/src/mame/handheld/hh_e0c6x.cpp b/src/mame/handheld/hh_e0c6x.cpp index ef73da5e8c9e0..1e776dac2de2a 100644 --- a/src/mame/handheld/hh_e0c6x.cpp +++ b/src/mame/handheld/hh_e0c6x.cpp @@ -11,8 +11,8 @@ to play the games for a longer time. For the drivers that don't have an SVG screen, use -prescale or -nofilter to disable bilinear filtering. TODO: -- add the Mothra Tamagotchi version that was recently dumped (has a E0C6S48) - SVGs could be more accurate? it seems they're handmade instead of a 1:1 scan + like for eg. the Game & Watch LCDs - alienfev unmapped reads/writes, or are they harmless? - add LCD deflicker like hh_sm510? see venusdm for example - hook up LCD contrast, does any game use it? (eg. for fade-out) @@ -51,7 +51,7 @@ class hh_e0c6x_state : public driver_device void lcd_segment_w(offs_t offset, u8 data) { m_out_x[offset & 0xf][offset >> 4] = data; } required_device m_maincpu; - output_finder<16, 40> m_out_x; + output_finder<16, 51> m_out_x; // max 16 * 51 }; void hh_e0c6x_state::machine_start() @@ -93,7 +93,7 @@ INPUT_CHANGED_MEMBER(hh_e0c6x_state::input_changed) * Seiko Epson E0C6S46 MCU under epoxy * 32*16 LCD screen + 8 custom segments, 1-bit sound - Generation 2 is on the exact same hardware + Generation 2 is on the exact same hardware. *******************************************************************************/ @@ -164,13 +164,87 @@ ROM_END +/******************************************************************************* + + Bandai Tamagotchi Angel (aka Angel Gotch in Japan) + * Seiko Epson E0C6S48 + * 32*16 LCD screen + 8 custom segments, 1-bit sound + + Mothra no Tamagotch is on similar hardware. + +*******************************************************************************/ + +class tamaang_state : public hh_e0c6x_state +{ +public: + tamaang_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_e0c6x_state(mconfig, type, tag) + { } + + void tamaang(machine_config &config); +}; + +// inputs + +static INPUT_PORTS_START( tamaang ) + PORT_INCLUDE( tama ) + + PORT_MODIFY("K0") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_CB(3) PORT_NAME("Vibration Sensor") +INPUT_PORTS_END + +// config + +void tamaang_state::tamaang(machine_config &config) +{ + // basic machine hardware + E0C6S48(config, m_maincpu, 32.768_kHz_XTAL); + m_maincpu->set_osc3(1'000'000); + m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + m_maincpu->write_segs().set(FUNC(tamaang_state::lcd_segment_w)); + + // video hardware + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(32); + screen.set_size(1119, 1080); + screen.set_visarea_full(); + + config.set_default_layout(layout_hh_e0c6x_lcd); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( tamaang ) + ROM_REGION( 0x4000, "maincpu", 0 ) + ROM_LOAD( "tamaang.bin", 0x0000, 0x4000, CRC(87bcb59f) SHA1(f5899bb7717756ac581451cf16cf97d909961c5c) ) + + ROM_REGION( 139978, "screen", 0) + ROM_LOAD( "tamaang.svg", 0, 139978, CRC(76f27f06) SHA1(b416275a12173316e053fa994c5fd68a4d5c1a5c) ) +ROM_END + +ROM_START( tamamot ) + ROM_REGION( 0x4000, "maincpu", 0 ) + ROM_LOAD( "tamamot.bin", 0x0000, 0x4000, CRC(85e4bee9) SHA1(74c1f6761724b7cbda8bca3113db78586b786d2d) ) + + ROM_REGION( 138289, "screen", 0) + ROM_LOAD( "tamamot.svg", 0, 138289, CRC(4e8210c2) SHA1(522536ae5bf744889c0d028c3a292bdf649f81e3) ) +ROM_END + + + + + /******************************************************************************* Epoch Chibi Pachi: Alien Fever * Seiko Epson E0C6S46 MCU * 39*16 LCD screen, 1-bit sound - It's a Pachislot keychain game, the MCU runs on the higher-speed OSC3. + It's a Pachislot keychain game, the MCU constantly runs on the higher-speed OSC3. *******************************************************************************/ @@ -200,8 +274,8 @@ void alienfev_state::alienfev(machine_config &config) { // basic machine hardware E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); - m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); m_maincpu->set_osc3(1'000'000); + m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); @@ -310,6 +384,8 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS SYST( 1997, tama, 0, 0, tama, tama, tama_state, empty_init, "Bandai", "Tamagotchi (Gen. 1, World)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) SYST( 1997, tamag2, 0, 0, tama, tama, tama_state, empty_init, "Bandai", "Tamagotchi (Gen. 2, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +SYST( 1997, tamaang, 0, 0, tamaang, tamaang, tamaang_state, empty_init, "Bandai", "Angel Gotch (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) +SYST( 1997, tamamot, 0, 0, tamaang, tama, tamaang_state, empty_init, "Bandai", "Mothra no Tamagotch (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) SYST( 1997, alienfev, 0, 0, alienfev, alienfev, alienfev_state, empty_init, "Epoch", "Chibi Pachi: Alien Fever", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e91c29ca4e9ef..6e096f5fd7664 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19148,7 +19148,9 @@ qkspeller // National Semiconductor @source:handheld/hh_e0c6x.cpp alienfev // Epoch tama // Bandai +tamaang // Bandai tamag2 // Bandai +tamamot // Bandai venusdm // Nikko @source:handheld/hh_hmcs40.cpp From aa137c5cf5b75435793b406796a43657182f7113 Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 25 Dec 2024 01:33:41 +0100 Subject: [PATCH 39/39] New systems marked not working ------------------------------ Stack Challenge [hap, azya] --- src/mame/handheld/hh_e0c6x.cpp | 80 +++++++++++++++++++++++++++++++++- src/mame/mame.lst | 1 + 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/src/mame/handheld/hh_e0c6x.cpp b/src/mame/handheld/hh_e0c6x.cpp index 1e776dac2de2a..38d3acde69b70 100644 --- a/src/mame/handheld/hh_e0c6x.cpp +++ b/src/mame/handheld/hh_e0c6x.cpp @@ -11,6 +11,7 @@ to play the games for a longer time. For the drivers that don't have an SVG screen, use -prescale or -nofilter to disable bilinear filtering. TODO: +- stackch only LEFT and ON buttons work, both are bit 0, MCU opcode bug? - SVGs could be more accurate? it seems they're handmade instead of a 1:1 scan like for eg. the Game & Watch LCDs - alienfev unmapped reads/writes, or are they harmless? @@ -264,7 +265,7 @@ static INPUT_PORTS_START( alienfev ) PORT_START("K0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_CB(0) PORT_NAME("Mode") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CHANGED_CB(1) PORT_NAME("Select") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CHANGED_CB(2) PORT_NAME("Sound") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(2) PORT_NAME("Sound") PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(3) PORT_NAME("Handle") INPUT_PORTS_END @@ -371,6 +372,81 @@ ROM_START( venusdm ) ROM_LOAD( "venusdm.bin", 0x0000, 0x3000, CRC(2228b081) SHA1(22f6a2ede6259e76f1c8b9b50171c54d8a7de502) ) ROM_END + + + + +/******************************************************************************* + + Tandy (Radio Shack division) Stack Challenge (model 60-2247) + * Seiko Epson E0C6S46 MCU + * 10*21 LCD screen + custom segments, 1-bit sound + + It's a brick game clone. The game is supposedly from 1991 (it's included in + the 1992 Radio Shack catalog). Did E0C6S46 exist already, or is this a newer + revision? + +*******************************************************************************/ + +class stackch_state : public hh_e0c6x_state +{ +public: + stackch_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_e0c6x_state(mconfig, type, tag) + { } + + void stackch(machine_config &config); +}; + +// inputs + +static INPUT_PORTS_START( stackch ) + PORT_START("K0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_16WAY PORT_CHANGED_CB(0) PORT_NAME("Left / Level") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_16WAY PORT_CHANGED_CB(1) PORT_NAME("Down / Start") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_16WAY PORT_CHANGED_CB(2) PORT_NAME("Right / Height") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_CB(3) + + PORT_START("K1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POWER_ON ) PORT_CHANGED_CB(4) PORT_NAME("On / Off") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SELECT ) PORT_CHANGED_CB(5) PORT_NAME("Pause") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_CHANGED_CB(6) PORT_NAME("Sound") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +// config + +void stackch_state::stackch(machine_config &config) +{ + // basic machine hardware + E0C6S46(config, m_maincpu, 32.768_kHz_XTAL); + m_maincpu->set_osc3(1'000'000); + m_maincpu->write_r<4>().set("speaker", FUNC(speaker_sound_device::level_w)).bit(3); + m_maincpu->write_segs().set(FUNC(stackch_state::lcd_segment_w)); + + // video hardware + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(32); + screen.set_size(856, 1080); + screen.set_visarea_full(); + + config.set_default_layout(layout_hh_e0c6x_lcd); + + // sound hardware + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); +} + +// roms + +ROM_START( stackch ) + ROM_REGION( 0x3000, "maincpu", 0 ) + ROM_LOAD( "stackch.bin", 0x0000, 0x3000, CRC(28b9310a) SHA1(52b80d70aa7fc3b6323799403b3aba0e3d957f3b) ) + + ROM_REGION( 133022, "screen", 0) + ROM_LOAD( "stackch.svg", 0, 133022, CRC(caf74ad4) SHA1(2f2e836b0efe377305bb113a550f1cb4ec939273) ) +ROM_END + } // anonymous namespace @@ -390,3 +466,5 @@ SYST( 1997, tamamot, 0, 0, tamaang, tama, tamaang_state, empty_ SYST( 1997, alienfev, 0, 0, alienfev, alienfev, alienfev_state, empty_init, "Epoch", "Chibi Pachi: Alien Fever", MACHINE_SUPPORTS_SAVE ) SYST( 1997, venusdm, 0, 0, venusdm, venusdm, venusdm_state, empty_init, "Nikko", "Beans Collection: Venus Diet Monogatari", MACHINE_SUPPORTS_SAVE ) + +SYST( 1991, stackch, 0, 0, stackch, stackch, stackch_state, empty_init, "Tandy Corporation", "Stack Challenge", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 6e096f5fd7664..625b6a419fcaf 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19147,6 +19147,7 @@ qkspeller // National Semiconductor @source:handheld/hh_e0c6x.cpp alienfev // Epoch +stackch // Tandy Corporation tama // Bandai tamaang // Bandai tamag2 // Bandai