From c52873ab29bf829259db6e7674a68c7d3e8a9263 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 9 Aug 2022 19:04:05 +0200 Subject: [PATCH] - jaleco/bigstrkb.cpp, misc/pass.cpp: consolidated drivers in one file, very minor cleanups - a few drivers: removed some custom GFX decodes in favor of the ones provided in emu/video/generic.cpp --- src/mame/galaxian/galaxian.cpp | 14 +- src/mame/jaleco/bigstrkb.cpp | 292 +++++++++++++++++++++++++++------ src/mame/jaleco/bigstrkb.h | 61 ------- src/mame/jaleco/bigstrkb_v.cpp | 143 ---------------- src/mame/jaleco/skyfox.cpp | 13 +- src/mame/misc/cardline.cpp | 13 +- src/mame/misc/clpoker.cpp | 14 +- src/mame/misc/esd16.cpp | 15 +- src/mame/misc/fresh.cpp | 16 +- src/mame/misc/jungleyo.cpp | 15 +- src/mame/misc/pass.cpp | 190 +++++++++++++++------ src/mame/misc/pass.h | 50 ------ src/mame/misc/pass_v.cpp | 61 ------- src/mame/misc/sfbonus.cpp | 13 +- src/mame/vsystem/crshrace.cpp | 12 +- 15 files changed, 396 insertions(+), 526 deletions(-) delete mode 100644 src/mame/jaleco/bigstrkb.h delete mode 100644 src/mame/jaleco/bigstrkb_v.cpp delete mode 100644 src/mame/misc/pass.h delete mode 100644 src/mame/misc/pass_v.cpp diff --git a/src/mame/galaxian/galaxian.cpp b/src/mame/galaxian/galaxian.cpp index 129e58619c1..2d0f17dc930 100644 --- a/src/mame/galaxian/galaxian.cpp +++ b/src/mame/galaxian/galaxian.cpp @@ -7776,10 +7776,10 @@ void galaxian_state::bmxstunts(machine_config &config) { galaxian_base(config); - M6502(config.replace(), m_maincpu, 3'072'000); // TODO: verify clock + M6502(config.replace(), m_maincpu, 3'072'000); // TODO: verify clock, actually 6502A m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::bmxstunts_map); - SN76489(config, "snsnd", 3'072'000).add_route(ALL_OUTPUTS, "speaker", 0.5); // TODO: verify clock + SN76489A(config, "snsnd", 3'072'000).add_route(ALL_OUTPUTS, "speaker", 0.5); // TODO: verify clock, actually SN76489AN } void galaxian_state::ckongg(machine_config &config) @@ -12283,9 +12283,9 @@ ROM_END /* BMX Stunts by Jetsoft on Galaxian bootleg PCB. -6502A CPU in epoxy block with one 6331 prom (not dumped) +6502A CPU in epoxy block with one 6331 PROM (not dumped) One 74LS74 and one 74LS273 logic. -One SN76489 Digital Complex Sound Generator. +One SN76489AN Digital Complex Sound Generator. There was a wire lead coming out of the epoxy and soldered to the sound/amplifier section on the PCB. @@ -12295,7 +12295,7 @@ this riser board has eight sockets instead of the normal five and is printed with the words "MOON PROGRAM", was possibly a bootleg Moon Cresta PCB before conversion to BMX Stunts. -Color prom is unique to this game and doesn't match any others. +Color PROM is unique to this game and doesn't match any others. Main program EPROMs are all 2716 type by different manufacturers. Graphics ROMs are 2732 EPROMs soldered directly to the main PCB @@ -12358,7 +12358,7 @@ ROM_START( bmxstuntsa ) ROM_LOAD16_WORD_SWAP( "b-mx.8", 0x3800, 0x0800, CRC(8bc26d4d) SHA1(c01be14d7cd402a524b61bd845c1ae6b09967bfa) ) // bmx8.pr8 99.267578% ROM_REGION( 0x2000, "gfx1", 0 ) // not dumped for this set, taken from above - ROM_LOAD( "bmxh.1h", 0x0000, 0x1000, BAD_DUMP CRC(b049f648) SHA1(06c5a8b15f876cb6e4798cb5f8b1351cc6c12877) ) // 1ST AND 2ND HALF IDENTICAL) + ROM_LOAD( "bmxh.1h", 0x0000, 0x1000, BAD_DUMP CRC(b049f648) SHA1(06c5a8b15f876cb6e4798cb5f8b1351cc6c12877) ) // 1ST AND 2ND HALF IDENTICAL ROM_LOAD( "bmxl.1l", 0x1000, 0x1000, BAD_DUMP CRC(a0f44f47) SHA1(b9d40ff82bb90125f0d9ad2d9590ddd7cc600805) ) ROM_REGION( 0x0020, "proms", 0 ) // not dumped for this set, taken from above @@ -15985,7 +15985,7 @@ GAME( 1982, guttangt, locomotn, guttangt, guttangt, guttangt_state, init_ GAME( 1982, guttangts3, locomotn, guttangts3, guttangt, guttangt_state, init_guttangts3, ROT90, "bootleg (Sede 3)", "Guttang Gottong (Sede 3 bootleg on Galaxian hardware)", MACHINE_SUPPORTS_SAVE ) // still has Konami copyright on screen -// Basic hardware with epoxy block containing a M6502, SN76489, PROM and logic +// Basic hardware with epoxy block containing a 6502A, SN76489AN, PROM and logic GAME( 1985, bmxstunts, 0, bmxstunts, bmxstunts, galaxian_state, init_bmxstunts, ROT90, "Jetsoft", "BMX Stunts (set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // not working due to bad program ROMs GAME( 1985, bmxstuntsa, bmxstunts, bmxstunts, bmxstunts, galaxian_state, init_bmxstunts, ROT90, "Jetsoft", "BMX Stunts (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // could be considered working if not for bad GFX and sound diff --git a/src/mame/jaleco/bigstrkb.cpp b/src/mame/jaleco/bigstrkb.cpp index 66c4ce8a03c..927a9dc06f5 100644 --- a/src/mame/jaleco/bigstrkb.cpp +++ b/src/mame/jaleco/bigstrkb.cpp @@ -7,7 +7,7 @@ maybe it could be merged with megasys1.cpp, could be messy - todo: + TODO: complete sound (YM2151 like megasys1?) sprite lag (buffers spriteram?) @@ -15,12 +15,186 @@ */ #include "emu.h" -#include "bigstrkb.h" #include "cpu/m68000/m68000.h" #include "sound/okim6295.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" + + +// configurable logging +#define LOG_VIDREG (1U << 1) + +//#define VERBOSE (LOG_GENERAL | LOG_VIDREG) + +#include "logmacro.h" + +#define LOGVIDREG(...) LOGMASKED(LOG_VIDREG, __VA_ARGS__) + + +namespace { + +class bigstrkb_state : public driver_device +{ +public: + bigstrkb_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_videoram(*this, "videoram%u", 1U), + m_spriteram(*this, "spriteram"), + m_vidreg(*this, "vidreg%u", 1U) + { } + + void bigstrkb(machine_config &config); + +protected: + virtual void video_start() override; + +private: + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; + + required_shared_ptr_array m_videoram; + required_shared_ptr m_spriteram; + required_shared_ptr_array m_vidreg; + + tilemap_t *m_tilemap[3]{}; + + template void videoram_w(offs_t offset, uint16_t data); + + TILEMAP_MAPPER_MEMBER(bg_scan); + TILE_GET_INFO_MEMBER(get_tile_info); + TILE_GET_INFO_MEMBER(get_tile2_info); + TILE_GET_INFO_MEMBER(get_tile3_info); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + void prg_map(address_map &map); +}; + + +// video + +// Sprites + +void bigstrkb_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + /*- SPR RAM Format -** + + 16 bytes per sprite + + nnnn nnnn nnnn nnnn aaaa aaaa aaaa aaaa xxxx xxxx xxxx xxxx yyyy yyyy yyyy yyyy + ( rest unused ) + **- End of Comments -*/ + + gfx_element *gfx = m_gfxdecode->gfx(2); + uint16_t *source = m_spriteram; + uint16_t *finish = source + 0x800 / 2; + + while (source < finish) + { + int xpos = source[2]; + int ypos = source[3]; + const int num = source[0]; + const int attr = source[1]; + + ypos = 0xffff - ypos; + + + xpos -= 126; + ypos -= 16; + + const int flipx = attr & 0x0100; + const int col = attr & 0x000f; + + gfx->transpen(bitmap, cliprect, num, col, flipx, 0, xpos,ypos, 15); + source += 8; + } +} + +// Tilemaps + +TILEMAP_MAPPER_MEMBER(bigstrkb_state::bg_scan) +{ + int offset = ((col & 0xf) * 16) + (row & 0xf); + offset += (col >> 4) * 0x100; + offset += (row >> 4) * 0x800; + + return offset; +} + +TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile_info) +{ + int tileno = m_videoram[0][tile_index] & 0x0fff; + int col = m_videoram[0][tile_index] & 0xf000; + + tileinfo.set(0, tileno, col >> 12, 0); +} + +TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile2_info) +{ + int tileno = m_videoram[1][tile_index] & 0x0fff; + int col = m_videoram[1][tile_index] & 0xf000; + + tileinfo.set(1, tileno, col >> 12, 0); +} + +TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile3_info) +{ + int tileno = m_videoram[2][tile_index] & 0x0fff; + int col = m_videoram[2][tile_index] & 0xf000; + + tileinfo.set(1, tileno + 0x2000, (col >> 12) + (0x100 / 16) ,0); +} + +template +void bigstrkb_state::videoram_w(offs_t offset, uint16_t data) +{ + m_videoram[Which][offset] = data; + m_tilemap[Which]->mark_tile_dirty(offset); +} + +// Video Start / Update + +void bigstrkb_state::video_start() +{ + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile2_info)), tilemap_mapper_delegate(*this, FUNC(bigstrkb_state::bg_scan)), 16, 16, 128, 64); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile3_info)), tilemap_mapper_delegate(*this, FUNC(bigstrkb_state::bg_scan)), 16, 16, 128, 64); + + m_tilemap[0]->set_transparent_pen(15); + //m_tilemap[1]->set_transparent_pen(15); + m_tilemap[2]->set_transparent_pen(15); +} + +uint32_t bigstrkb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ +// bitmap.fill(m_palette->black_pen(), cliprect); + + m_tilemap[1]->set_scrollx(0, m_vidreg[0][0] + (256 - 14)); + m_tilemap[1]->set_scrolly(0, m_vidreg[1][0]); + + m_tilemap[2]->set_scrollx(0, m_vidreg[0][1] + (256 - 14)); + m_tilemap[2]->set_scrolly(0, m_vidreg[1][1]); + + m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0); + m_tilemap[2]->draw(screen, bitmap, cliprect, 0, 0); + + draw_sprites(bitmap, cliprect); + m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0); + + LOGVIDREG("Regs %08x %08x %08x %08x", m_vidreg[1][0], m_vidreg[1][1], m_vidreg[1][2], m_vidreg[1][3]); + return 0; +} + + +// machine /* @@ -35,35 +209,35 @@ lev 7 : 0x7c : 0000 05be - xxx */ -/* Memory Maps */ +// Memory maps -/* some regions might be too large */ +// some regions might be too large -void bigstrkb_state::bigstrkb_map(address_map &map) +void bigstrkb_state::prg_map(address_map &map) { map(0x000000, 0x07ffff).rom(); // map(0x0c0000, 0x0cffff).rw(FUNC(bigstrkb_state::megasys1_vregs_C_r), FUNC(bigstrkb_state::megasys1_vregs_C_w)).share("megasys1_vregs"); - map(0x0C2004, 0x0C2005).nopw(); - map(0x0C200C, 0x0C200d).nopw(); - map(0x0C2104, 0x0C2105).nopw(); - map(0x0C2108, 0x0C2109).nopw(); - map(0x0C2200, 0x0C2201).nopw(); - map(0x0C2208, 0x0C2209).nopw(); + map(0x0c2004, 0x0c2005).nopw(); + map(0x0c200c, 0x0c200d).nopw(); + map(0x0c2104, 0x0c2105).nopw(); + map(0x0c2108, 0x0c2109).nopw(); + map(0x0c2200, 0x0c2201).nopw(); + map(0x0c2208, 0x0c2209).nopw(); map(0x0c2308, 0x0c2309).nopw(); // bit 0 of DSW1 (flip screen) - use vregs - map(0x0D0000, 0x0dffff).ram(); // 0xd2000 - 0xd3fff? 0xd8000? + map(0x0d0000, 0x0dffff).ram(); // 0xd2000 - 0xd3fff? 0xd8000? - map(0x0e0000, 0x0e3fff).ram().w(FUNC(bigstrkb_state::videoram2_w)).share("videoram2"); - map(0x0e8000, 0x0ebfff).ram().w(FUNC(bigstrkb_state::videoram3_w)).share("videoram3"); - map(0x0ec000, 0x0effff).ram().w(FUNC(bigstrkb_state::videoram_w)).share("videoram"); + map(0x0e0000, 0x0e3fff).ram().w(FUNC(bigstrkb_state::videoram_w<1>)).share(m_videoram[1]); + map(0x0e8000, 0x0ebfff).ram().w(FUNC(bigstrkb_state::videoram_w<2>)).share(m_videoram[2]); + map(0x0ec000, 0x0effff).ram().w(FUNC(bigstrkb_state::videoram_w<0>)).share(m_videoram[0]); map(0x0f0000, 0x0f7fff).ram(); map(0x0f8000, 0x0f87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x0f8800, 0x0fffff).ram(); map(0x1f0000, 0x1f7fff).ram(); - map(0x1f8000, 0x1f87ff).ram().share("spriteram"); + map(0x1f8000, 0x1f87ff).ram().share(m_spriteram); map(0x1f8800, 0x1fffff).ram(); map(0x700000, 0x700001).portr("DSW0"); @@ -71,18 +245,18 @@ void bigstrkb_state::bigstrkb_map(address_map &map) map(0x700004, 0x700005).portr("SYSTEM"); map(0x70000a, 0x70000b).portr("P2"); map(0x70000c, 0x70000d).portr("P1"); - map(0x700020, 0x700027).writeonly().share("vidreg1"); - map(0x700030, 0x700037).writeonly().share("vidreg2"); + map(0x700020, 0x700027).writeonly().share(m_vidreg[0]); + map(0x700030, 0x700037).writeonly().share(m_vidreg[1]); - map(0xB00000, 0xB00001).nopw(); + map(0xb00000, 0xb00001).nopw(); map(0xe00001, 0xe00001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xe00003, 0xe00003).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0xE00008, 0xE00009).nopw(); - map(0xE0000c, 0xE0000d).nopw(); + map(0xe00008, 0xe00009).nopw(); + map(0xe0000c, 0xe0000d).nopw(); - map(0xF00000, 0xFFFFFF).ram(); + map(0xf00000, 0xffffff).ram(); } #define BIGSTRKB_PLAYER_INPUT( player, start ) \ @@ -96,35 +270,43 @@ void bigstrkb_state::bigstrkb_map(address_map &map) PORT_BIT( 0x80, IP_ACTIVE_LOW, start ) static INPUT_PORTS_START( bigstrkb ) - PORT_START("DSW0") /* DSW0 (0x700000.w) */ + PORT_START("DSW0") // (0x700000.w) PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) // also set "Coin B" to "Free Play" - /* 0x01 to 0x05 gives 2C_3C */ PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x50, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) // also set "Coin A" to "Free Play" - /* 0x10 to 0x50 gives 2C_3C */ - PORT_START("DSW1") /* DSW1 (0x700002.w) */ + PORT_START("DSW1") // (0x700002.w) PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) // Check code at 0x00097c (flip screen) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -135,7 +317,7 @@ static INPUT_PORTS_START( bigstrkb ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) PORT_DIPNAME( 0x18, 0x18, "Timer Speed" ) PORT_DIPSETTING( 0x08, "Slow" ) // 65 - PORT_DIPSETTING( 0x18, DEF_STR( Normal ) ) // 50 + PORT_DIPSETTING( 0x18, DEF_STR( Normal ) ) // 50 PORT_DIPSETTING( 0x10, "Fast" ) // 35 PORT_DIPSETTING( 0x00, "Fastest" ) // 25 PORT_DIPUNUSED( 0x20, IP_ACTIVE_LOW ) @@ -146,7 +328,7 @@ static INPUT_PORTS_START( bigstrkb ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_START("SYSTEM") /* System inputs (0x700004.w) */ + PORT_START("SYSTEM") // (0x700004.w) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -156,14 +338,14 @@ static INPUT_PORTS_START( bigstrkb ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_START("P1") /* Player 1 controls (0x70000c.w) */ + PORT_START("P1") // (0x70000c.w) BIGSTRKB_PLAYER_INPUT( 1, IPT_START1 ) - PORT_START("P2") /* Player 2 controls (0x70000a.w) */ + PORT_START("P2") // (0x70000a.w) BIGSTRKB_PLAYER_INPUT( 2, IPT_START2 ) INPUT_PORTS_END -/* GFX Decode */ +// GFX Decode static const gfx_layout bigstrkb_charlayout = { @@ -192,18 +374,18 @@ static const gfx_layout bigstrkb_char16layout = static GFXDECODE_START( gfx_bigstrkb ) - GFXDECODE_ENTRY( "gfx1", 0, bigstrkb_charlayout, 0x200, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, bigstrkb_char16layout, 0, 32 ) - GFXDECODE_ENTRY( "gfx3", 0, bigstrkb_char16layout, 0x300, 16 ) + GFXDECODE_ENTRY( "fgtiles", 0, bigstrkb_charlayout, 0x200, 16 ) + GFXDECODE_ENTRY( "bgtiles", 0, bigstrkb_char16layout, 0, 32 ) + GFXDECODE_ENTRY( "sprites", 0, bigstrkb_char16layout, 0x300, 16 ) GFXDECODE_END -/* Machine Driver */ +// Machine Driver void bigstrkb_state::bigstrkb(machine_config &config) { - M68000(config, m_maincpu, 12000000); - m_maincpu->set_addrmap(AS_PROGRAM, &bigstrkb_state::bigstrkb_map); + M68000(config, m_maincpu, 12'000'000); + m_maincpu->set_addrmap(AS_PROGRAM, &bigstrkb_state::prg_map); m_maincpu->set_vblank_int("screen", FUNC(bigstrkb_state::irq6_line_hold)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_bigstrkb); @@ -220,82 +402,84 @@ void bigstrkb_state::bigstrkb(machine_config &config) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); -// YM2151(config, "ymsnd", 4000000); +// YM2151(config, "ymsnd", 4'000'000); - okim6295_device &oki1(OKIM6295(config, "oki1", 4000000, okim6295_device::PIN7_HIGH)); + okim6295_device &oki1(OKIM6295(config, "oki1", 4'000'000, okim6295_device::PIN7_HIGH)); oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.30); oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.30); - okim6295_device &oki2(OKIM6295(config, "oki2", 4000000, okim6295_device::PIN7_HIGH)); + okim6295_device &oki2(OKIM6295(config, "oki2", 4'000'000, okim6295_device::PIN7_HIGH)); oki2.add_route(ALL_OUTPUTS, "lspeaker", 0.30); oki2.add_route(ALL_OUTPUTS, "rspeaker", 0.30); } -/* Rom Loading */ +// Rom Loading ROM_START( bigstrkb ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 Code ROM_LOAD16_BYTE( "footgaa.015", 0x00001, 0x40000, CRC(33b1d7f3) SHA1(7a48c3c7f5ed61099d07b3259778ad382b7660a2) ) ROM_LOAD16_BYTE( "footgaa.016", 0x00000, 0x40000, CRC(1c6b8709) SHA1(b371cb1421877247d88ffc52ad090b3c6279b78f) ) - ROM_REGION( 0x40000, "gfx1", 0 ) /* 8x8x4 FG Tiles */ + ROM_REGION( 0x40000, "fgtiles", 0 ) // 8x8x4 ROM_LOAD( "footgaa.005", 0x00000, 0x10000, CRC(d97c9bfe) SHA1(03410a6b5348362575b2463ac9968975eeb0bc39) ) // FIRST AND SECOND HALF IDENTICAL ROM_LOAD( "footgaa.006", 0x10000, 0x10000, CRC(1ae56e8b) SHA1(632ef5ca0ba043115d94e925d23a48cc28eeeb40) ) // FIRST AND SECOND HALF IDENTICAL ROM_LOAD( "footgaa.007", 0x20000, 0x10000, CRC(a45fa6b6) SHA1(95ea6cf98b1fb7600c034f4cedda3cc46a51e199) ) // FIRST AND SECOND HALF IDENTICAL ROM_LOAD( "footgaa.008", 0x30000, 0x10000, CRC(2700888c) SHA1(ef3b4393cd36f5bbe7fdb8a78c8d0bc15022d027) ) - ROM_REGION( 0x200000, "gfx2", ROMREGION_INVERT ) /* 16x16x4 BG Tiles */ + ROM_REGION( 0x200000, "bgtiles", ROMREGION_INVERT ) // 16x16x4 ROM_LOAD( "footgaa.001", 0x000000, 0x80000, CRC(0e440841) SHA1(169ce2ba3ace707466fa1138c0841b7a6c90629f) ) // x1xxxxxxxxxxxxxxxxx = 0xFF ROM_LOAD( "footgaa.002", 0x080000, 0x80000, CRC(92a15164) SHA1(31f641a6ab3a6115fbbdf89d65e8316c92bddf2a) ) // x1xxxxxxxxxxxxxxxxx = 0xFF ROM_LOAD( "footgaa.003", 0x100000, 0x80000, CRC(da127b89) SHA1(085c201abcbd7ba3c87e4cf066f7928daebedd5d) ) // x1xxxxxxxxxxxxxxxxx = 0xFF ROM_LOAD( "footgaa.004", 0x180000, 0x80000, CRC(3e6b0d92) SHA1(d8bf2e2d82dc985e8912b23620b19391396bc1af) ) // x1xxxxxxxxxxxxxxxxx = 0xFF - ROM_REGION( 0x080000, "gfx3", ROMREGION_INVERT ) /* 16x16x4 Sprites */ + ROM_REGION( 0x080000, "sprites", ROMREGION_INVERT ) // 16x16x4 Sprites ROM_LOAD( "footgaa.011", 0x000000, 0x20000, CRC(c3924fea) SHA1(85b6775b5aa8c518a1e169b97379a210e25e67c9) ) ROM_LOAD( "footgaa.012", 0x020000, 0x20000, CRC(a581e9d7) SHA1(b894186f07612f9372e6d3bc037c65696c070d04) ) ROM_LOAD( "footgaa.013", 0x040000, 0x20000, CRC(26ce4b7f) SHA1(4bfd1de6d73dc5e720972bba477081dba0b05ab3) ) ROM_LOAD( "footgaa.014", 0x060000, 0x20000, CRC(c3cfc500) SHA1(5dc5780b9977b0544601471004c656c2fd738bcd) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* Samples? */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "footgaa.010", 0x00000, 0x40000, CRC(53014576) SHA1(7f3402b33ef5992a6ae51ce07f0fcdc267c51beb) ) - ROM_REGION( 0x40000, "oki2", 0 ) /* Samples? */ + ROM_REGION( 0x40000, "oki2", 0 ) ROM_LOAD( "footgaa.009", 0x00000, 0x40000, CRC(19bf0896) SHA1(30c8e030d7dbcd38f213010596c8f9c5b8089f62) ) ROM_END // same as bigstrkb, but less buggy/better presentation, and teams are Italian league instead of international ROM_START( bigstrkba ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 Code ROM_LOAD16_BYTE( "15.cpu16", 0x000000, 0x040000, CRC(204551b5) SHA1(bfc8d284801a2c11677431287bc2e5b8ba7737db) ) ROM_LOAD16_BYTE( "16.cpu17", 0x000001, 0x040000, CRC(3ba6997b) SHA1(86c0318a48b42b4622f3397c55584e0779e4f626) ) - ROM_REGION( 0x40000, "gfx1", 0 ) /* 8x8x4 FG Tiles */ + ROM_REGION( 0x40000, "fgtiles", 0 ) // 8x8x4 ROM_LOAD( "5.bin", 0x000000, 0x010000, CRC(f51ea151) SHA1(fd80280fa99cd08b9f458a4d4078ce59a926b4bc) ) ROM_LOAD( "6.bin", 0x010000, 0x010000, CRC(754d750e) SHA1(d0a6be6d373e95404733c125126bbeeed03e370e) ) ROM_LOAD( "7.bin", 0x020000, 0x010000, CRC(fbc52546) SHA1(daae9451629b67d532dfd4825b552944e1c585d8) ) ROM_LOAD( "8.bin", 0x030000, 0x010000, CRC(62c63eaa) SHA1(4a408703a3d70159d78b0c213ff52a95a8a07884) ) - ROM_REGION( 0x200000, "gfx2", ROMREGION_INVERT ) /* 16x16x4 BG Tiles */ + ROM_REGION( 0x200000, "bgtiles", ROMREGION_INVERT ) // 16x16x4 BG Tiles ROM_LOAD( "1.bin", 0x000000, 0x080000, CRC(c4eb9746) SHA1(ed4436e79abdb043349ee20d22c5454590ab5837) ) ROM_LOAD( "2.bin", 0x080000, 0x080000, CRC(aa0beb78) SHA1(42cde54203cab4169099172cfce090725102e44c) ) ROM_LOAD( "3.bin", 0x100000, 0x080000, CRC(d02298c5) SHA1(d3da72cc4edc8a6c9c8ec76bb566ded6d0b7b453) ) ROM_LOAD( "4.bin", 0x180000, 0x080000, CRC(069ac008) SHA1(30b90d80177de744624e9d9618eebe5471042afd) ) - ROM_REGION( 0x080000, "gfx3", ROMREGION_INVERT ) /* 16x16x4 Sprites */ + ROM_REGION( 0x080000, "sprites", ROMREGION_INVERT ) // 16x16x4 Sprites ROM_LOAD( "footgaa.011", 0x000000, 0x20000, CRC(c3924fea) SHA1(85b6775b5aa8c518a1e169b97379a210e25e67c9) ) ROM_LOAD( "12.bin", 0x020000, 0x20000, CRC(8e15ea09) SHA1(e591811bb5ecb1782a77883b3ee27212fb703f22) ) ROM_LOAD( "footgaa.013", 0x040000, 0x20000, CRC(26ce4b7f) SHA1(4bfd1de6d73dc5e720972bba477081dba0b05ab3) ) ROM_LOAD( "footgaa.014", 0x060000, 0x20000, CRC(c3cfc500) SHA1(5dc5780b9977b0544601471004c656c2fd738bcd) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* Samples? */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "footgaa.010", 0x00000, 0x40000, CRC(53014576) SHA1(7f3402b33ef5992a6ae51ce07f0fcdc267c51beb) ) - ROM_REGION( 0x40000, "oki2", 0 ) /* Samples? */ + ROM_REGION( 0x40000, "oki2", 0 ) ROM_LOAD( "footgaa.009", 0x00000, 0x40000, CRC(19bf0896) SHA1(30c8e030d7dbcd38f213010596c8f9c5b8089f62) ) ROM_END +} // anonymous namespace -/* GAME drivers */ + +// GAME drivers GAME( 1992, bigstrkb, bigstrik, bigstrkb, bigstrkb, bigstrkb_state, empty_init, ROT0, "bootleg", "Big Striker (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1992, bigstrkba, bigstrik, bigstrkb, bigstrkb, bigstrkb_state, empty_init, ROT0, "bootleg", "Big Striker (bootleg w/Italian teams)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/jaleco/bigstrkb.h b/src/mame/jaleco/bigstrkb.h deleted file mode 100644 index d79db941ed1..00000000000 --- a/src/mame/jaleco/bigstrkb.h +++ /dev/null @@ -1,61 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood -#ifndef MAME_INCLUDES_BIGSTRKB_H -#define MAME_INCLUDES_BIGSTRKB_H - -#pragma once - -#include "emupal.h" -#include "tilemap.h" - -class bigstrkb_state : public driver_device -{ -public: - bigstrkb_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_videoram2(*this, "videoram2"), - m_videoram3(*this, "videoram3"), - m_videoram(*this, "videoram"), - m_spriteram(*this, "spriteram"), - m_vidreg1(*this, "vidreg1"), - m_vidreg2(*this, "vidreg2") - { } - - void bigstrkb(machine_config &config); - -private: - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; - - required_shared_ptr m_videoram2; - required_shared_ptr m_videoram3; - required_shared_ptr m_videoram; - required_shared_ptr m_spriteram; - required_shared_ptr m_vidreg1; - required_shared_ptr m_vidreg2; - - tilemap_t *m_tilemap = nullptr; - tilemap_t *m_tilemap2 = nullptr; - tilemap_t *m_tilemap3 = nullptr; - - void videoram_w(offs_t offset, uint16_t data); - void videoram2_w(offs_t offset, uint16_t data); - void videoram3_w(offs_t offset, uint16_t data); - - TILEMAP_MAPPER_MEMBER(bg_scan); - TILE_GET_INFO_MEMBER(get_tile_info); - TILE_GET_INFO_MEMBER(get_tile2_info); - TILE_GET_INFO_MEMBER(get_tile3_info); - - virtual void video_start() override; - - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); - void bigstrkb_map(address_map &map); -}; - -#endif // MAME_INCLUDES_BIGSTRKB_H diff --git a/src/mame/jaleco/bigstrkb_v.cpp b/src/mame/jaleco/bigstrkb_v.cpp deleted file mode 100644 index 2136a03235b..00000000000 --- a/src/mame/jaleco/bigstrkb_v.cpp +++ /dev/null @@ -1,143 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood -/* Big Striker (bootleg) Video Hardware */ - -#include "emu.h" -#include "bigstrkb.h" - - -/* Sprites */ - -void bigstrkb_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ) -{ - /*- SPR RAM Format -** - - 16 bytes per sprite - - nnnn nnnn nnnn nnnn aaaa aaaa aaaa aaaa xxxx xxxx xxxx xxxx yyyy yyyy yyyy yyyy - ( rest unused ) - **- End of Comments -*/ - - gfx_element *gfx = m_gfxdecode->gfx(2); - uint16_t *source = m_spriteram; - uint16_t *finish = source + 0x800/2; - - while( sourcetranspen(bitmap,cliprect,num,col,flipx,0,xpos,ypos,15); - source+=8; - } -} - -/* Tilemaps */ - -TILEMAP_MAPPER_MEMBER(bigstrkb_state::bg_scan) -{ - int offset; - - offset = ((col&0xf)*16) + (row&0xf); - offset += (col >> 4) * 0x100; - offset += (row >> 4) * 0x800; - - return offset; -} - -TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile_info) -{ - int tileno,col; - - tileno = m_videoram[tile_index] & 0x0fff; - col= m_videoram[tile_index] & 0xf000; - - tileinfo.set(0,tileno,col>>12,0); -} - -void bigstrkb_state::videoram_w(offs_t offset, uint16_t data) -{ - m_videoram[offset] = data; - m_tilemap->mark_tile_dirty(offset); -} - -TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile2_info) -{ - int tileno,col; - - tileno = m_videoram2[tile_index] & 0x0fff; - col= m_videoram2[tile_index] & 0xf000; - - tileinfo.set(1,tileno,col>>12,0); -} - -void bigstrkb_state::videoram2_w(offs_t offset, uint16_t data) -{ - m_videoram2[offset] = data; - m_tilemap2->mark_tile_dirty(offset); -} - - -TILE_GET_INFO_MEMBER(bigstrkb_state::get_tile3_info) -{ - int tileno,col; - - tileno = m_videoram3[tile_index] & 0x0fff; - col= m_videoram3[tile_index] & 0xf000; - - tileinfo.set(1,tileno+0x2000,(col>>12)+(0x100/16),0); -} - -void bigstrkb_state::videoram3_w(offs_t offset, uint16_t data) -{ - m_videoram3[offset] = data; - m_tilemap3->mark_tile_dirty(offset); -} - -/* Video Start / Update */ - -void bigstrkb_state::video_start() -{ - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile2_info)), tilemap_mapper_delegate(*this, FUNC(bigstrkb_state::bg_scan)), 16, 16, 128, 64); - m_tilemap3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile3_info)), tilemap_mapper_delegate(*this, FUNC(bigstrkb_state::bg_scan)), 16, 16, 128, 64); - - m_tilemap->set_transparent_pen(15); - //m_tilemap2->set_transparent_pen(15); - m_tilemap3->set_transparent_pen(15); -} - -uint32_t bigstrkb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ -// bitmap.fill(m_palette->black_pen(), cliprect); - - m_tilemap2->set_scrollx(0, m_vidreg1[0]+(256-14)); - m_tilemap2->set_scrolly(0, m_vidreg2[0]); - - m_tilemap3->set_scrollx(0, m_vidreg1[1]+(256-14)); - m_tilemap3->set_scrolly(0, m_vidreg2[1]); - - m_tilemap2->draw(screen, bitmap, cliprect, 0,0); - m_tilemap3->draw(screen, bitmap, cliprect, 0,0); - - draw_sprites(bitmap,cliprect); - m_tilemap->draw(screen, bitmap, cliprect, 0,0); - -// popmessage ("Regs %08x %08x %08x %08x",m_vidreg2[0],m_vidreg2[1],m_vidreg2[2],m_vidreg2[3]); - return 0; -} diff --git a/src/mame/jaleco/skyfox.cpp b/src/mame/jaleco/skyfox.cpp index ed1e745a447..eb453f8848a 100644 --- a/src/mame/jaleco/skyfox.cpp +++ b/src/mame/jaleco/skyfox.cpp @@ -186,19 +186,8 @@ INPUT_PORTS_END we cut them in 8x8x8 ones in the init function, in order to support 8x8, 16x16 and 32x32 sprites. */ -static const gfx_layout layout_8x8x8 = -{ - 8,8, - RGN_FRAC(1,1), - 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}, - {0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64}, - 8*8*8 -}; - static GFXDECODE_START( gfx_skyfox ) - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8, 0, 1 ) // [0] Sprites + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x8_raw, 0, 1 ) // [0] Sprites GFXDECODE_END diff --git a/src/mame/misc/cardline.cpp b/src/mame/misc/cardline.cpp index f4e5c722c35..ad413e02609 100644 --- a/src/mame/misc/cardline.cpp +++ b/src/mame/misc/cardline.cpp @@ -280,19 +280,8 @@ static INPUT_PORTS_START( cardline ) INPUT_PORTS_END -static const gfx_layout charlayout = -{ - 8,8, - RGN_FRAC(1,1), - 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 }, - { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 }, - 8*8*8 -}; - static GFXDECODE_START( gfx_cardline ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 2 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x8_raw, 0, 2 ) GFXDECODE_END void cardline_state::cardline_palette(palette_device &palette) const diff --git a/src/mame/misc/clpoker.cpp b/src/mame/misc/clpoker.cpp index 98eafe2f1fc..d3ff1a63ad3 100644 --- a/src/mame/misc/clpoker.cpp +++ b/src/mame/misc/clpoker.cpp @@ -242,20 +242,8 @@ u32 clpoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, co } -static const gfx_layout gfx_layout = -{ - 8,8, - RGN_FRAC(1,1), - 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 }, - { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 }, - 8*64, -}; - - static GFXDECODE_START( gfx_clpoker ) - GFXDECODE_ENTRY( "gfx1", 0, gfx_layout, 0x0, 1 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x8_raw, 0x0, 1 ) GFXDECODE_END diff --git a/src/mame/misc/esd16.cpp b/src/mame/misc/esd16.cpp index 9b09892acd7..d41e83badee 100644 --- a/src/mame/misc/esd16.cpp +++ b/src/mame/misc/esd16.cpp @@ -644,17 +644,6 @@ static const gfx_layout hedpanic_sprite_16x16x5 = 16*32, }; -static const gfx_layout hedpanic_layout_8x8x8 = -{ - 8,8, - RGN_FRAC(1,1), - 8, - { STEP8(0,1) }, - { STEP8(0,8) }, - { STEP8(0,8*8) }, - 64*8, -}; - static const gfx_layout hedpanic_layout_16x16x8 = { 16,16, @@ -669,13 +658,13 @@ static const gfx_layout hedpanic_layout_16x16x8 = static GFXDECODE_START( gfx_esd16 ) GFXDECODE_ENTRY( "spr", 0, hedpanic_sprite_16x16x5, 0x200, 8 ) // [0] Sprites - GFXDECODE_ENTRY( "bgs", 0, hedpanic_layout_8x8x8, 0x000, 2 ) // [1] Layers + GFXDECODE_ENTRY( "bgs", 0, gfx_8x8x8_raw, 0x000, 2 ) // [1] Layers GFXDECODE_ENTRY( "bgs", 0, hedpanic_layout_16x16x8, 0x000, 2 ) // [1] Layers GFXDECODE_END static GFXDECODE_START( gfx_jumppop ) GFXDECODE_ENTRY( "spr", 0, jumppop_sprite_16x16x4, 0x000, 0x40 ) // Sprites 16x16 - has 4bpp sprites, unlike the others - GFXDECODE_ENTRY( "bgs", 0, hedpanic_layout_8x8x8, 0x000, 4 ) // Characters 8x8 + GFXDECODE_ENTRY( "bgs", 0, gfx_8x8x8_raw, 0x000, 4 ) // Characters 8x8 GFXDECODE_ENTRY( "bgs", 0, hedpanic_layout_16x16x8, 0x000, 4 ) // Tiles 16x16 GFXDECODE_END diff --git a/src/mame/misc/fresh.cpp b/src/mame/misc/fresh.cpp index 396c088dc4e..b7c1d9c6fda 100644 --- a/src/mame/misc/fresh.cpp +++ b/src/mame/misc/fresh.cpp @@ -552,21 +552,9 @@ static INPUT_PORTS_START( fresh ) INPUT_PORTS_END -static const gfx_layout tiles8x8_layout = -{ - 8,8, - RGN_FRAC(1,1), - 8, - { 0,1, 2,3, 4,5,6,7 }, - { 0, 8, 16, 24, 32, 40, 48, 56 }, - { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 }, - 64*8 -}; - - static GFXDECODE_START( gfx_fresh ) - GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout, 0, 16 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x8_raw, 0, 16 ) + GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x8_raw, 0, 16 ) GFXDECODE_END diff --git a/src/mame/misc/jungleyo.cpp b/src/mame/misc/jungleyo.cpp index 2dc7067d7bd..0f92f02911b 100644 --- a/src/mame/misc/jungleyo.cpp +++ b/src/mame/misc/jungleyo.cpp @@ -414,17 +414,6 @@ static INPUT_PORTS_START( jungleyo ) INPUT_PORTS_END -static const gfx_layout jungleyo_layout = -{ - 8,8, - RGN_FRAC(1,1), - 8, - { STEP8(0,1) }, - { STEP8(0,8) }, - { STEP8(0,8*8) }, - 8*64 -}; - static const gfx_layout jungleyo16_layout = { 8,32, @@ -438,8 +427,8 @@ static const gfx_layout jungleyo16_layout = static GFXDECODE_START( gfx_jungleyo ) GFXDECODE_ENTRY( "reelgfx", 0, jungleyo16_layout, 0x4000, 0x40 ) - GFXDECODE_ENTRY( "gfx2", 0, jungleyo_layout, 0x2000, 0x20 ) - GFXDECODE_ENTRY( "gfx3", 0, jungleyo_layout, 0x0000, 0x20 ) + GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x8_raw, 0x2000, 0x20 ) + GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x8_raw, 0x0000, 0x20 ) GFXDECODE_END diff --git a/src/mame/misc/pass.cpp b/src/mame/misc/pass.cpp index c684be5c962..0d55bf608fc 100644 --- a/src/mame/misc/pass.cpp +++ b/src/mame/misc/pass.cpp @@ -91,50 +91,149 @@ --- Game Notes --- - Graphical Glitches caused when 2 sprites are close together are NOT bugs, the Sprites are - infact constructed from a tilemap made of 4x4 tiles. + Graphical glitches caused when 2 sprites are close together are NOT bugs, the sprites are + in fact constructed from a tilemap made of 4x4 tiles. I imagine flicker on the main character at times is also correct. - Its rather interesting to see a game this old using 8bpp tiles + It's rather interesting to see a game this old using 8bpp tiles */ #include "emu.h" -#include "pass.h" #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "machine/gen_latch.h" #include "sound/okim6295.h" #include "sound/ymopn.h" + #include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" -/* todo: check all memory regions actually readable / read from */ -void pass_state::pass_map(address_map &map) +namespace { + +class pass_state : public driver_device +{ +public: + pass_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_bg_tilemap(nullptr), + m_fg_tilemap(nullptr), + m_bg_videoram(*this, "bg_videoram"), + m_fg_videoram(*this, "fg_videoram"), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode") + { + } + + void pass(machine_config &config); + +protected: + virtual void video_start() override; + +private: + void bg_videoram_w(offs_t offset, uint16_t data); + void fg_videoram_w(offs_t offset, uint16_t data); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void main_map(address_map &map); + void sound_io_map(address_map &map); + void sound_map(address_map &map); + + tilemap_t *m_bg_tilemap = nullptr; + tilemap_t *m_fg_tilemap = nullptr; + + required_shared_ptr m_bg_videoram; + required_shared_ptr m_fg_videoram; + required_device m_maincpu; + required_device m_gfxdecode; +}; + + +// video + +// background tilemap stuff + +TILE_GET_INFO_MEMBER(pass_state::get_bg_tile_info) +{ + int tileno = m_bg_videoram[tile_index] & 0x1fff; + int fx = (m_bg_videoram[tile_index] & 0xc000) >> 14; + tileinfo.set(1, tileno, 0, TILE_FLIPYX(fx)); + +} + +void pass_state::bg_videoram_w(offs_t offset, uint16_t data) +{ + m_bg_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); +} + +// foreground 'sprites' tilemap stuff + +TILE_GET_INFO_MEMBER(pass_state::get_fg_tile_info) +{ + int tileno = m_fg_videoram[tile_index] & 0x3fff; + int flip = (m_fg_videoram[tile_index] & 0xc000) >>14; + + tileinfo.set(0, tileno, 0, TILE_FLIPYX(flip)); + +} + +void pass_state::fg_videoram_w(offs_t offset, uint16_t data) +{ + m_fg_videoram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); +} + +// video update / start + +void pass_state::video_start() +{ + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pass_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pass_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 4, 4, 128, 64); + + m_fg_tilemap->set_transparent_pen(255); +} + +uint32_t pass_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + return 0; +} + + +// machine + +// TODO: check all memory regions actually readable / read from +void pass_state::main_map(address_map &map) { map(0x000000, 0x03ffff).rom(); map(0x080000, 0x083fff).ram(); - map(0x200000, 0x200fff).ram().w(FUNC(pass_state::pass_bg_videoram_w)).share("bg_videoram"); // Background - map(0x210000, 0x213fff).ram().w(FUNC(pass_state::pass_fg_videoram_w)).share("fg_videoram"); // Foreground + map(0x200000, 0x200fff).ram().w(FUNC(pass_state::bg_videoram_w)).share(m_bg_videoram); + map(0x210000, 0x213fff).ram().w(FUNC(pass_state::fg_videoram_w)).share(m_fg_videoram); map(0x220000, 0x2203ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); map(0x230001, 0x230001).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0x230100, 0x230101).portr("DSW"); map(0x230200, 0x230201).portr("INPUTS"); } -/* sound cpu */ -void pass_state::pass_sound_map(address_map &map) +void pass_state::sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0xf800, 0xffff).ram(); } -void pass_state::pass_sound_io_map(address_map &map) +void pass_state::sound_io_map(address_map &map) { map.global_mask(0xff); map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read)); @@ -143,7 +242,7 @@ void pass_state::pass_sound_io_map(address_map &map) map(0xc0, 0xc0).w("soundlatch", FUNC(generic_latch_8_device::clear_w)); } -/* todo : work out function of unknown but used dsw */ +// TODO : work out function of unknown but used dsw static INPUT_PORTS_START( pass ) PORT_START("DSW") PORT_DIPNAME( 0x0001, 0x0001, "Unknown SW 0-0" ) // USED ! Check code at 0x0046ea @@ -180,11 +279,11 @@ static INPUT_PORTS_START( pass ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x1800, 0x0000, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Easy ) ) // Time = 99 - PORT_DIPSETTING( 0x1800, DEF_STR( Normal ) ) // Time = 88 + PORT_DIPSETTING( 0x1800, DEF_STR( Normal ) ) // Time = 88 PORT_DIPSETTING( 0x0800, DEF_STR( Hard ) ) // Time = 77 - PORT_DIPSETTING( 0x1000, DEF_STR( Hardest ) ) // Time = 66 + PORT_DIPSETTING( 0x1000, DEF_STR( Hardest ) ) // Time = 66 PORT_DIPNAME( 0xe000, 0xe000, DEF_STR( Coinage ) ) -// PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x8000, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x4000, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0xc000, DEF_STR( 2C_1C ) ) @@ -212,18 +311,7 @@ static INPUT_PORTS_START( pass ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) INPUT_PORTS_END -static const gfx_layout tiles8x8_layout = -{ - 8,8, - RGN_FRAC(1,1), - 8, - { 0,1, 2,3, 4,5,6,7 }, - { 0, 8, 16, 24, 32, 40, 48, 56 }, - { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 }, - 64*8 -}; - -/* for something so simple this took a while to see */ +// for something so simple this took a while to see static const gfx_layout tiles4x4_fg_layout = { 4,4, @@ -236,68 +324,70 @@ static const gfx_layout tiles4x4_fg_layout = }; static GFXDECODE_START( gfx_pass ) - GFXDECODE_ENTRY( "gfx1", 0, tiles4x4_fg_layout, 256, 2 ) - GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout, 0, 2 ) + GFXDECODE_ENTRY( "fgtiles", 0, tiles4x4_fg_layout, 256, 2 ) + GFXDECODE_ENTRY( "bgtiles", 0, gfx_8x8x8_raw, 0, 2 ) GFXDECODE_END -/* todo : is this correct? */ +// TODO : is this correct? void pass_state::pass(machine_config &config) { - /* basic machine hardware */ - M68000(config, m_maincpu, 14318180/2); - m_maincpu->set_addrmap(AS_PROGRAM, &pass_state::pass_map); - m_maincpu->set_vblank_int("screen", FUNC(pass_state::irq1_line_hold)); /* all the same */ + // basic machine hardware + M68000(config, m_maincpu, 14'318'180 / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &pass_state::main_map); + m_maincpu->set_vblank_int("screen", FUNC(pass_state::irq1_line_hold)); // all the same - z80_device &audiocpu(Z80(config, "audiocpu", 14318180/4)); - audiocpu.set_addrmap(AS_PROGRAM, &pass_state::pass_sound_map); - audiocpu.set_addrmap(AS_IO, &pass_state::pass_sound_io_map); - audiocpu.set_periodic_int(FUNC(pass_state::irq0_line_hold), attotime::from_hz(60)); /* probably not accurate, unknown timing and generation (ym2203 sound chip?). */ + z80_device &audiocpu(Z80(config, "audiocpu", 14'318'180 / 4)); + audiocpu.set_addrmap(AS_PROGRAM, &pass_state::sound_map); + audiocpu.set_addrmap(AS_IO, &pass_state::sound_io_map); + audiocpu.set_periodic_int(FUNC(pass_state::irq0_line_hold), attotime::from_hz(60)); // probably not accurate, unknown timing and generation (ym2203 sound chip?). - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 32*8); screen.set_visarea(8*8, 48*8-1, 2*8, 30*8-1); - screen.set_screen_update(FUNC(pass_state::screen_update_pass)); + screen.set_screen_update(FUNC(pass_state::screen_update)); screen.set_palette("palette"); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x200); GFXDECODE(config, m_gfxdecode, "palette", gfx_pass); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); - YM2203(config, "ymsnd", 14318180/4).add_route(ALL_OUTPUTS, "mono", 0.60); + YM2203(config, "ymsnd", 14'318'180 / 4).add_route(ALL_OUTPUTS, "mono", 0.60); - OKIM6295(config, "oki", 792000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); // clock frequency & pin 7 not verified + OKIM6295(config, "oki", 792'000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); // clock frequency & pin 7 not verified } ROM_START( pass ) - ROM_REGION( 0x40000, "maincpu", 0 ) /* 68k */ + ROM_REGION( 0x40000, "maincpu", 0 ) // 68k ROM_LOAD16_BYTE( "33", 0x00001, 0x20000, CRC(0c5f18f6) SHA1(49b60d46e4149ad1d49b044522a6888737c17e7d) ) ROM_LOAD16_BYTE( "34", 0x00000, 0x20000, CRC(7b54573d) SHA1(251e99fa1f045ae4c90676e1953e49e8191440e4) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* z80 clone? */ + ROM_REGION( 0x10000, "audiocpu", 0 ) // z80 clone? ROM_LOAD( "23", 0x00000, 0x10000, CRC(b9a0ccde) SHA1(33e7dda247aa44b1933ae9c033c161c152276ce6) ) - ROM_REGION( 0x40000, "oki", 0 ) /* samples? */ + ROM_REGION( 0x40000, "oki", 0 ) ROM_LOAD( "31", 0x00000, 0x20000, CRC(c7315bbd) SHA1(c0bb392793cafc7b3f76da8fb26c6c16948f87e5) ) - ROM_REGION( 0x40000, "gfx1", 0 ) /* fg layer 'sprites' */ + ROM_REGION( 0x40000, "fgtiles", 0 ) ROM_LOAD16_BYTE( "35", 0x00000, 0x20000, CRC(2ab33f07) SHA1(23f2481450b3f43bbe3856c4cf595af74b1da2e0) ) ROM_LOAD16_BYTE( "36", 0x00001, 0x20000, CRC(6677709d) SHA1(0d3df11097855294d606e46c0db0cf801c1dc28a) ) - ROM_REGION( 0x80000, "gfx2", 0 ) /* bg tiles */ - ROM_LOAD16_BYTE( "37", 0x40000, 0x20000, CRC(296499e7) SHA1(b7727f7942e20a2428df84e99075a572189a0096) ) - ROM_LOAD16_BYTE( "39", 0x40001, 0x20000, CRC(35c0ad5c) SHA1(78e3ca8b2e382a3c7bc53ede2ef5611c520ab095) ) + ROM_REGION( 0x80000, "bgtiles", 0 ) ROM_LOAD16_BYTE( "38", 0x00000, 0x20000, CRC(7f11b81a) SHA1(50253da7c13f9390fe7afd2faf17b8057f0bee1b) ) ROM_LOAD16_BYTE( "40", 0x00001, 0x20000, CRC(80e0a71d) SHA1(e62c855f357e7492a59f8719c62a16d418dfa60b) ) + ROM_LOAD16_BYTE( "37", 0x40000, 0x20000, CRC(296499e7) SHA1(b7727f7942e20a2428df84e99075a572189a0096) ) + ROM_LOAD16_BYTE( "39", 0x40001, 0x20000, CRC(35c0ad5c) SHA1(78e3ca8b2e382a3c7bc53ede2ef5611c520ab095) ) ROM_END +} // anonymous namespace + GAME( 1992, pass, 0, pass, pass, pass_state, empty_init, ROT0, "Oksan", "Pass", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/misc/pass.h b/src/mame/misc/pass.h deleted file mode 100644 index 4731407804b..00000000000 --- a/src/mame/misc/pass.h +++ /dev/null @@ -1,50 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood -#ifndef MAME_INCLUDES_PASS_H -#define MAME_INCLUDES_PASS_H - -#pragma once - -#include "tilemap.h" - -class pass_state : public driver_device -{ -public: - pass_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_bg_tilemap(nullptr), - m_fg_tilemap(nullptr), - m_bg_videoram(*this, "bg_videoram"), - m_fg_videoram(*this, "fg_videoram"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode") - { - } - - void pass(machine_config &config); - -protected: - virtual void video_start() override; - -private: - void pass_bg_videoram_w(offs_t offset, uint16_t data); - void pass_fg_videoram_w(offs_t offset, uint16_t data); - TILE_GET_INFO_MEMBER(get_pass_bg_tile_info); - TILE_GET_INFO_MEMBER(get_pass_fg_tile_info); - - uint32_t screen_update_pass(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - void pass_map(address_map &map); - void pass_sound_io_map(address_map &map); - void pass_sound_map(address_map &map); - - tilemap_t *m_bg_tilemap = nullptr; - tilemap_t *m_fg_tilemap = nullptr; - - required_shared_ptr m_bg_videoram; - required_shared_ptr m_fg_videoram; - required_device m_maincpu; - required_device m_gfxdecode; -}; - -#endif // MAME_INCLUDES_PASS_H diff --git a/src/mame/misc/pass_v.cpp b/src/mame/misc/pass_v.cpp deleted file mode 100644 index 4b6a8ef613f..00000000000 --- a/src/mame/misc/pass_v.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood -/* video/pass.c - see drivers/pass.c for more info */ - -#include "emu.h" -#include "pass.h" - -/* background tilemap stuff */ - -TILE_GET_INFO_MEMBER(pass_state::get_pass_bg_tile_info) -{ - int tileno, fx; - - tileno = m_bg_videoram[tile_index] & 0x1fff; - fx = (m_bg_videoram[tile_index] & 0xc000) >> 14; - tileinfo.set(1, tileno, 0, TILE_FLIPYX(fx)); - -} - -void pass_state::pass_bg_videoram_w(offs_t offset, uint16_t data) -{ - m_bg_videoram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset); -} - -/* foreground 'sprites' tilemap stuff */ - -TILE_GET_INFO_MEMBER(pass_state::get_pass_fg_tile_info) -{ - int tileno, flip; - - tileno = m_fg_videoram[tile_index] & 0x3fff; - flip = (m_fg_videoram[tile_index] & 0xc000) >>14; - - tileinfo.set(0, tileno, 0, TILE_FLIPYX(flip)); - -} - -void pass_state::pass_fg_videoram_w(offs_t offset, uint16_t data) -{ - m_fg_videoram[offset] = data; - m_fg_tilemap->mark_tile_dirty(offset); -} - -/* video update / start */ - -void pass_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pass_state::get_pass_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pass_state::get_pass_fg_tile_info)), TILEMAP_SCAN_ROWS, 4, 4, 128, 64); - - m_fg_tilemap->set_transparent_pen(255); -} - -uint32_t pass_state::screen_update_pass(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - - return 0; -} diff --git a/src/mame/misc/sfbonus.cpp b/src/mame/misc/sfbonus.cpp index 0f582a324d8..eecf2bb6550 100644 --- a/src/mame/misc/sfbonus.cpp +++ b/src/mame/misc/sfbonus.cpp @@ -1246,17 +1246,6 @@ void sfbonus_state::sfbonus_io(address_map &map) } -static const gfx_layout sfbonus_layout = -{ - 8,8, - RGN_FRAC(1,1), - 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 }, - { 0*64,1*64,2*64,3*64,4*64,5*64,6*64,7*64 }, - 8*64 -}; - static const gfx_layout sfbonus32_layout = { 8,32, @@ -1275,7 +1264,7 @@ static const gfx_layout sfbonus32_layout = static GFXDECODE_START( gfx_sfbonus ) - GFXDECODE_ENTRY( "gfx1", 0, sfbonus_layout, 0x0, 2 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x8_raw, 0x0, 2 ) GFXDECODE_ENTRY( "gfx2", 0, sfbonus32_layout, 0x0, 2 ) GFXDECODE_END diff --git a/src/mame/vsystem/crshrace.cpp b/src/mame/vsystem/crshrace.cpp index 19ee9b9edf2..020602b2bce 100644 --- a/src/mame/vsystem/crshrace.cpp +++ b/src/mame/vsystem/crshrace.cpp @@ -344,16 +344,6 @@ INPUT_PORTS_END -static const gfx_layout charlayout = -{ - 8,8, - RGN_FRAC(1,1), - 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 }, - { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 }, - 64*8 -}; static const gfx_layout tilelayout = { @@ -369,7 +359,7 @@ static const gfx_layout tilelayout = }; static GFXDECODE_START( gfx_crshrace ) - GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 1 ) + GFXDECODE_ENTRY( "chars", 0, gfx_8x8x8_raw, 0, 1 ) GFXDECODE_ENTRY( "tiles", 0, tilelayout, 256, 16 ) GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 512, 32 ) GFXDECODE_END