From 7df48638591c500c97306b66160b0b84f30908f8 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 29 Nov 2024 21:54:35 +0100 Subject: galaxia: add dipswitches, add different address map for galaxiaa --- src/mame/misc/cvs.cpp | 7 +- src/mame/zaccaria/galaxia.cpp | 235 +++++++++++++++++++++++------------------ src/mame/zaccaria/quasar.cpp | 41 +++---- src/mame/zaccaria/zaccaria.cpp | 2 +- 4 files changed, 149 insertions(+), 136 deletions(-) diff --git a/src/mame/misc/cvs.cpp b/src/mame/misc/cvs.cpp index b330df52a56..4a83026e57f 100644 --- a/src/mame/misc/cvs.cpp +++ b/src/mame/misc/cvs.cpp @@ -220,7 +220,7 @@ private: u8 m_collision = 0; // stars - u8 m_stars_on = 0; + u8 m_stars_on = false; u16 m_stars_scroll = 0; u16 m_total_stars = 0; @@ -338,7 +338,7 @@ void cvs_state::video_fx_w(u8 data) if (data & 0xce) LOGMASKED(LOG_VIDEOFX, "%04x: Unimplemented CVS video fx = %2x\n", m_maincpu->pc(), data & 0xce); - m_stars_on = data & 0x01; + m_stars_on = bool(data & 0x01); if (data & 0x02) LOGMASKED(LOG_VIDEOFX, " SHADE BRIGHTER TO RIGHT\n"); if (data & 0x04) LOGMASKED(LOG_VIDEOFX, " SCREEN ROTATE\n"); @@ -790,7 +790,6 @@ void cvs_state::audio_command_w(u8 data) void cvs_state::main_cpu_map(address_map &map) { - map.global_mask(0x7fff); map(0x0000, 0x13ff).rom(); map(0x1400, 0x1bff).mirror(0x6000).view(m_ram_view); m_ram_view[0](0x1400, 0x14ff).ram().share(m_bullet_ram); @@ -1303,7 +1302,7 @@ void cvs_state::machine_reset() m_protection_counter = 0; m_scroll_reg = 0; m_collision = 0; - m_stars_on = 0; + m_stars_on = false; m_stars_scroll = 0; } diff --git a/src/mame/zaccaria/galaxia.cpp b/src/mame/zaccaria/galaxia.cpp index 5659a6d8458..035b4c0f050 100644 --- a/src/mame/zaccaria/galaxia.cpp +++ b/src/mame/zaccaria/galaxia.cpp @@ -66,7 +66,10 @@ remaining suspicion that it might be a bad dump. TODO: - astrowar resets at the boss fight, very likely a bad bit in one ROM (MT7016) -- fill in the remaining DIP switches +- verify if extended play dipswitch values are correct for astrowar, and + identify unknown dipswitch +- Are the unknown port reads in galaxia used for anything? Port 5 disables + collision detection, maybe for testing/debugging, the others are unknown. - Are there other versions of galaxia with different colors? The alternate sets in MAME took the gfx roms from the parent, but there are references online showing that not all versions look alike. @@ -74,8 +77,10 @@ TODO: and is needed to correct the speed in all machines - provide accurate sprite/bg sync in astrowar - improve starfield: density, blink rate, x repeat of 240, and the checkerboard - pattern (fast forward MAME to see) are all correct, the RNG is not right + pattern (fast forward MAME to see) are all correct, the RNG is not right? + It may differ per PCB, not all PCB videos have the same star RNG pattern. - add sound board emulation (info is in the schematics) +- add support for flip screen */ @@ -110,6 +115,7 @@ public: { } void galaxia(machine_config &config) ATTR_COLD; + void galaxiaa(machine_config &config) ATTR_COLD; protected: virtual void machine_start() override ATTR_COLD; @@ -138,6 +144,7 @@ protected: tilemap_t *m_bg_tilemap = nullptr; u8 m_collision = 0; + bool m_stars_on = false; u16 m_stars_scroll = 0; u16 m_total_stars = 0; @@ -150,8 +157,11 @@ protected: star_t m_stars[MAX_STARS]; template void video_w(offs_t offset, u8 data); - void data_map(address_map &map) ATTR_COLD; - void io_map(address_map &map) ATTR_COLD; + void galaxia_mem(address_map &map) ATTR_COLD; + void galaxiaa_mem(address_map &map) ATTR_COLD; + void galaxia_io(address_map &map) ATTR_COLD; + void galaxiaa_io(address_map &map) ATTR_COLD; + void galaxia_data(address_map &map) ATTR_COLD; TILE_GET_INFO_MEMBER(get_bg_tile_info); @@ -159,7 +169,6 @@ protected: virtual void palette(palette_device &palette) const ATTR_COLD; void draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); virtual u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - virtual void mem_map(address_map &map) ATTR_COLD; void scroll_stars(int state); void init_stars() ATTR_COLD; @@ -184,28 +193,30 @@ public: protected: virtual void palette(palette_device &palette) const override ATTR_COLD; virtual u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override; - virtual void mem_map(address_map &map) override ATTR_COLD; + +private: + void astrowar_mem(address_map &map) ATTR_COLD; }; void galaxia_state::machine_start() { save_item(NAME(m_collision)); + save_item(NAME(m_stars_on)); save_item(NAME(m_stars_scroll)); } void galaxia_state::machine_reset() { m_collision = 0; + m_stars_on = false; m_stars_scroll = 0; } /******************************************************************************* - - Palette - + Palette *******************************************************************************/ void galaxia_state::stars_palette(palette_device &palette) const @@ -262,9 +273,7 @@ void astrowar_state::palette(palette_device &palette) const /******************************************************************************* - - Stars - + Stars *******************************************************************************/ void galaxia_state::init_stars() @@ -319,9 +328,7 @@ void galaxia_state::scroll_stars(int state) /******************************************************************************* - - Background - + Background *******************************************************************************/ TILE_GET_INFO_MEMBER(galaxia_state::get_bg_tile_info) @@ -355,7 +362,9 @@ GFXDECODE_END void galaxia_state::draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(m_palette->black_pen(), cliprect); - update_stars(bitmap, cliprect); + + if (m_stars_on) + update_stars(bitmap, cliprect); // tilemap doesn't wrap rectangle bg_clip = cliprect; @@ -370,9 +379,7 @@ void galaxia_state::draw_background(screen_device &screen, bitmap_ind16 &bitmap, /******************************************************************************* - - Screen Update - + Screen Update *******************************************************************************/ u32 galaxia_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -493,9 +500,7 @@ u32 astrowar_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c /******************************************************************************* - - I/O - + I/O *******************************************************************************/ template @@ -531,7 +536,13 @@ void galaxia_state::ctrlport_w(u8 data) // d1: coin counter? if you put a coin in slot A, galaxia constantly // strobes sets and clears the bit. if you put a coin in slot B // however, the bit is set and cleared only once. - // d5: set as soon as the game completes selftest + + // d3: flip screen + //flip_screen_set(BIT(data, 3)); + + // d5: enable stars + m_stars_on = bool(BIT(data, 5)); + // other bits: unknown } @@ -540,7 +551,13 @@ void galaxia_state::dataport_w(u8 data) // seems to be related to sound board comms } -void galaxia_state::mem_map(address_map &map) + + +/******************************************************************************* + Address Maps +*******************************************************************************/ + +void galaxia_state::galaxia_mem(address_map &map) { map(0x0000, 0x13ff).rom(); map(0x1400, 0x14ff).mirror(0x6000).ram().share(m_bullet_ram); @@ -555,7 +572,13 @@ void galaxia_state::mem_map(address_map &map) map(0x7214, 0x7214).portr("IN0"); } -void astrowar_state::mem_map(address_map &map) +void galaxia_state::galaxiaa_mem(address_map &map) +{ + galaxia_state::galaxia_mem(map); + map(0x7214, 0x7214).unmapr(); +} + +void astrowar_state::astrowar_mem(address_map &map) { map(0x0000, 0x13ff).rom(); map(0x1400, 0x14ff).mirror(0x6000).ram(); @@ -567,18 +590,23 @@ void astrowar_state::mem_map(address_map &map) map(0x2000, 0x33ff).rom(); } -void galaxia_state::io_map(address_map &map) +void galaxia_state::galaxia_io(address_map &map) { - map.unmap_value_high(); - map(0x00, 0x00).w(FUNC(galaxia_state::scroll_w)).portr("IN0"); + map.global_mask(0x07); + map(0x00, 0x00).w(FUNC(galaxia_state::scroll_w)); map(0x02, 0x02).portr("IN1"); - map(0x05, 0x05).nopr(); + map(0x05, 0x05).lr8(NAME([] () { return 0xff; })); map(0x06, 0x06).portr("DSW0"); map(0x07, 0x07).portr("DSW1"); - map(0xac, 0xac).nopr(); } -void galaxia_state::data_map(address_map &map) +void galaxia_state::galaxiaa_io(address_map &map) +{ + galaxia_state::galaxia_io(map); + map(0x00, 0x00).portr("IN0"); +} + +void galaxia_state::galaxia_data(address_map &map) { map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(FUNC(galaxia_state::collision_r), FUNC(galaxia_state::ctrlport_w)); map(S2650_DATA_PORT, S2650_DATA_PORT).rw(FUNC(galaxia_state::collision_clear_r), FUNC(galaxia_state::dataport_w)); @@ -587,9 +615,7 @@ void galaxia_state::data_map(address_map &map) /******************************************************************************* - - Inputs - + Inputs *******************************************************************************/ static INPUT_PORTS_START( galaxia ) @@ -600,85 +626,80 @@ static INPUT_PORTS_START( galaxia ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN1") + PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY - PORT_BIT( 0xc3, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("DSW0") - PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x00, "A 1C_1C B 2C_1C" ) - PORT_DIPSETTING( 0x01, "A 1C_2C B 2C_1C" ) - PORT_DIPSETTING( 0x02, "A 1C_3C B 2C_1C" ) - PORT_DIPSETTING( 0x03, "A 1C_5C B 2C_1C" ) - PORT_DIPSETTING( 0x04, "A 1C_1C B 1C_1C" ) - PORT_DIPSETTING( 0x05, "A 1C_2C B 1C_1C" ) - PORT_DIPSETTING( 0x06, "A 1C_3C B 1C_1C" ) - PORT_DIPSETTING( 0x07, "A 1C_5C B 1C_1C" ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) ) + PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("3N:7,6") + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_5C ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("3N:5") + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_1C ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("3N:4") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x08, "5" ) - - PORT_DIPNAME( 0x10, 0x00, "UNK04" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "UNK05" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, "UNK06" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, "UNK07" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_DIPNAME( 0x30, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("3N:3,2") + PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x30, DEF_STR( Hard ) ) + PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x00, "UNK10" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, "UNK11" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, "UNK12" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, "UNK13" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - - PORT_DIPNAME( 0x10, 0x00, "UNK14" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "UNK15" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, "UNK16" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, "UNK17" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_DIPNAME( 0x01, 0x00, "High Score" ) PORT_DIPLOCATION("2N:7") + PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x01, "Random" ) + PORT_DIPNAME( 0x06, 0x00, "Random H.S." ) PORT_DIPLOCATION("2N:6,5") // only if high score is set to random + PORT_DIPSETTING( 0x00, DEF_STR( Low ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x04, "Medium-High" ) + PORT_DIPSETTING( 0x06, DEF_STR( High ) ) + PORT_DIPNAME( 0x18, 0x10, "Extended Play" ) PORT_DIPLOCATION("2N:4,3") + PORT_DIPSETTING( 0x00, DEF_STR( None ) ) + PORT_DIPSETTING( 0x08, "2500" ) + PORT_DIPSETTING( 0x10, "3500" ) + PORT_DIPSETTING( 0x18, "5500" ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("2N:2") + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( astrowar ) + PORT_INCLUDE( galaxia ) + + PORT_MODIFY("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END -/******************************************************************************* - - Machine Configs +/******************************************************************************* + Machine Configs *******************************************************************************/ void galaxia_state::galaxia(machine_config &config) { // basic machine hardware S2650(config, m_maincpu, 14.318181_MHz_XTAL / 8); - m_maincpu->set_addrmap(AS_PROGRAM, &galaxia_state::mem_map); - m_maincpu->set_addrmap(AS_IO, &galaxia_state::io_map); - m_maincpu->set_addrmap(AS_DATA, &galaxia_state::data_map); + m_maincpu->set_addrmap(AS_PROGRAM, &galaxia_state::galaxia_mem); + m_maincpu->set_addrmap(AS_IO, &galaxia_state::galaxia_io); + m_maincpu->set_addrmap(AS_DATA, &galaxia_state::galaxia_data); m_maincpu->sense_handler().set("screen", FUNC(screen_device::vblank)); m_maincpu->flag_handler().set([this] (int state) { m_ram_view.select(state); }); m_maincpu->intack_handler().set([this]() { m_maincpu->set_input_line(0, CLEAR_LINE); return 0x03; }); @@ -714,10 +735,22 @@ void galaxia_state::galaxia(machine_config &config) SPEAKER(config, "mono").front_center(); } -void astrowar_state::astrowar(machine_config &config) +void galaxia_state::galaxiaa(machine_config &config) { galaxia(config); + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &galaxia_state::galaxiaa_mem); + m_maincpu->set_addrmap(AS_IO, &galaxia_state::galaxiaa_io); +} + +void astrowar_state::astrowar(machine_config &config) +{ + galaxiaa(config); + + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &astrowar_state::astrowar_mem); + // video hardware GFXDECODE(config.replace(), m_gfxdecode, m_palette, gfx_astrowar); @@ -729,9 +762,7 @@ void astrowar_state::astrowar(machine_config &config) /******************************************************************************* - - Game drivers - + ROM Definitions *******************************************************************************/ ROM_START( galaxia ) @@ -842,14 +873,12 @@ ROM_END /******************************************************************************* - - Game Drivers - + Game Drivers *******************************************************************************/ -// YEAR, NAME, PARENT, MACHINE, INPUT, CLASS, INIT, SCREEN, COMPANY, FULLNAME, FLAGS -GAME( 1979, galaxia, 0, galaxia, galaxia, galaxia_state, empty_init, ROT90, "Zaccaria / Zelco", "Galaxia (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, galaxiaa, galaxia, galaxia, galaxia, galaxia_state, empty_init, ROT90, "Zaccaria / Zelco", "Galaxia (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, galaxiab, galaxia, galaxia, galaxia, galaxia_state, empty_init, ROT90, "Zaccaria / Zelco", "Galaxia (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1979, galaxiac, galaxia, galaxia, galaxia, galaxia_state, empty_init, ROT90, "Zaccaria / Zelco", "Galaxia (set 4)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -GAME( 1980, astrowar, 0, astrowar, galaxia, astrowar_state, empty_init, ROT90, "Zaccaria / Zelco", "Astro Wars", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, CLASS, INIT, SCREEN, COMPANY, FULLNAME, FLAGS +GAME( 1979, galaxia, 0, galaxia, galaxia, galaxia_state, empty_init, ROT90, "Zaccaria / Zelco", "Galaxia (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, galaxiaa, galaxia, galaxiaa, galaxia, galaxia_state, empty_init, ROT90, "Zaccaria / Zelco", "Galaxia (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, galaxiab, galaxia, galaxiaa, galaxia, galaxia_state, empty_init, ROT90, "Zaccaria / Zelco", "Galaxia (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1979, galaxiac, galaxia, galaxiaa, galaxia, galaxia_state, empty_init, ROT90, "Zaccaria / Zelco", "Galaxia (set 4)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) +GAME( 1980, astrowar, 0, astrowar, astrowar, astrowar_state, empty_init, ROT90, "Zaccaria / Zelco", "Astro Wars", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/zaccaria/quasar.cpp b/src/mame/zaccaria/quasar.cpp index 2282dc6b236..33113dda1c5 100644 --- a/src/mame/zaccaria/quasar.cpp +++ b/src/mame/zaccaria/quasar.cpp @@ -149,9 +149,7 @@ void quasar_state::machine_reset() /******************************************************************************* - - Video - + Video *******************************************************************************/ void quasar_state::palette(palette_device &palette) const @@ -312,12 +310,7 @@ u32 quasar_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, con /******************************************************************************* - - Quasar memory layout - - Paging for screen is controlled by OUT to 0,1,2 or 3 - Paging for IO ports is controlled by OUT to 8,9,A or B - + Quasar memory layout *******************************************************************************/ void quasar_state::video_page_select_w(offs_t offset, u8 data) @@ -339,6 +332,7 @@ void quasar_state::io_page_select_w(offs_t offset, u8 data) void quasar_state::video_w(offs_t offset, u8 data) { + // paging for screen is controlled by OUT to 0,1,2 or 3 switch (m_page) { case 0: m_video_ram[offset] = data; break; @@ -352,6 +346,7 @@ u8 quasar_state::io_r() { u8 data = 0; + // paging for IO ports is controlled by OUT to 8,9,A or B switch (m_io_page) { case 0: data = m_in[0]->read(); break; @@ -412,9 +407,7 @@ void quasar_state::data(address_map &map) /******************************************************************************* - - Sound board memory handlers - + Sound board memory handlers *******************************************************************************/ void quasar_state::sh_command_w(u8 data) @@ -451,9 +444,7 @@ void quasar_state::sound_portmap(address_map &map) /******************************************************************************* - - Input Ports - + Input Ports *******************************************************************************/ static INPUT_PORTS_START( quasar ) @@ -485,7 +476,7 @@ static INPUT_PORTS_START( quasar ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_5C ) ) - PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:3,4") + PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:3,4") PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x04, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) @@ -503,7 +494,7 @@ static INPUT_PORTS_START( quasar ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSW1") - PORT_DIPNAME( 0x01, 0x01, "High Score" ) PORT_DIPLOCATION("SW2:1") + PORT_DIPNAME( 0x01, 0x00, "High Score" ) PORT_DIPLOCATION("SW2:1") PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x01, "Random" ) PORT_DIPNAME( 0x06, 0x04, "Random H.S." ) PORT_DIPLOCATION("SW2:2,3") // only if high score is set to random @@ -511,7 +502,7 @@ static INPUT_PORTS_START( quasar ) PORT_DIPSETTING( 0x04, DEF_STR( Medium ) ) PORT_DIPSETTING( 0x06, "Medium-High" ) PORT_DIPSETTING( 0x00, DEF_STR( High ) ) - PORT_DIPNAME( 0x18, 0x08, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4,5") + PORT_DIPNAME( 0x18, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4,5") PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x08, DEF_STR( Medium ) ) PORT_DIPSETTING( 0x10, DEF_STR( Difficult ) ) @@ -531,7 +522,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 @@ -556,9 +547,7 @@ GFXDECODE_END /******************************************************************************* - - Machine Configuration - + Machine Configuration *******************************************************************************/ void quasar_state::quasar(machine_config &config) @@ -613,9 +602,7 @@ void quasar_state::quasar(machine_config &config) /******************************************************************************* - - ROM Definitions - + ROM Definitions *******************************************************************************/ ROM_START( quasar ) @@ -683,9 +670,7 @@ ROM_END /******************************************************************************* - - Game Drivers - + Game Drivers *******************************************************************************/ // YEAR, NAME, PARENT, MACHINE, INPUT, CLASS, INIT, SCREEN, COMPANY, FULLNAME, FLAGS diff --git a/src/mame/zaccaria/zaccaria.cpp b/src/mame/zaccaria/zaccaria.cpp index 156794a0825..c8693a7ae4e 100644 --- a/src/mame/zaccaria/zaccaria.cpp +++ b/src/mame/zaccaria/zaccaria.cpp @@ -27,7 +27,7 @@ TODO: (i.e. dip 5 in the UI causes dip 8 to change in service mode display). A dip listing is available online. -- get rid of (&machine().system() == &GAME_NAME(monymony)) and check and see if the +- get rid of (&machine().system() == &GAME_NAME(monymony)) and check and see if the protection handler should also apply to monymony2 that was added later -- cgit v1.2.3