ozon1: Transplant to modern galaxian.cpp driver; add PPI

This commit is contained in:
AJR 2020-11-28 13:42:54 -05:00
parent 005ebb35a9
commit 975bf2efae
6 changed files with 116 additions and 131 deletions

View File

@ -645,6 +645,24 @@ q) 'bongo'
- IN2 is read via code at 0x2426, but its contents is directly overwritten - IN2 is read via code at 0x2426, but its contents is directly overwritten
with value read from DSW (AY port A) via code at 0x3647. with value read from DSW (AY port A) via code at 0x3647.
r) 'ozon1'
- Player 2 controls are used for player 2 regardless of the "Cabinet" Dip Switch
(check code at 0x03c6 which changes player and routines that handle players inputs :
0x0dc3 and 0x1e31 LEFT and RIGHT - 0x0e76 BUTTON1).
- Credits are coded on 1 byte (range 0x00-0xff) and stored at 0x4002.
To display them, they are converted to BCD on 1 byte via routine at 0x1421.
As a result, it will always display 0 to 99 (eg: 0xf0 = 240 will display 40).
When you get 256 credits, 0x4002 = 0x00, so the game thinks you have no credit
at all and enters "attract mode" again (but the game does NOT reset).
- There's an ingame bug when you get 101 or 201 credits : due to code at 0x0239,
the game checks the BCD value (0x01) instead of the correct one at 0x4002,
so you can't start a 2 players game !
- There is another ingame bug when "Coinage" settings are "A 1C/2C B 1C/1C"
and you press COIN2 : due to code at 0x0473, contents of 0x4004 is NEVER reset
to 0x00, so routine at 0x042a ALWAYS thinks that you've pressed COIN2,
and as a consequence, it ALWAYS adds 1 credit (even when you are playing) !
TODO: TODO:
@ -1774,6 +1792,26 @@ void galaxian_state::zigzag_map(address_map &map)
map(0x7800, 0x7800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); map(0x7800, 0x7800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
} }
// not derived from schematics
void galaxian_state::ozon1_map(address_map &map)
{
map(0x0000, 0x2fff).rom();
map(0x4000, 0x43ff).ram();
map(0x4800, 0x4bff).mirror(0x0400).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
map(0x5000, 0x50ff).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
map(0x6801, 0x6801).w(FUNC(galaxian_state::irq_enable_w));
map(0x6802, 0x6802).w(FUNC(galaxian_state::coin_count_0_w));
map(0x6806, 0x6806).w(FUNC(galaxian_state::galaxian_flip_screen_x_w));
map(0x6807, 0x6807).w(FUNC(galaxian_state::galaxian_flip_screen_y_w));
map(0x8100, 0x8103).rw(m_ppi8255[0], FUNC(i8255_device::read), FUNC(i8255_device::write));
}
void galaxian_state::ozon1_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x01).w(m_ay8910[0], FUNC(ay8910_device::data_address_w));
}
/* map derived from schematics */ /* map derived from schematics */
void galaxian_state::theend_map(address_map &map) void galaxian_state::theend_map(address_map &map)
@ -4991,6 +5029,45 @@ static INPUT_PORTS_START( olmandingo )
INPUT_PORTS_END INPUT_PORTS_END
/* verified from Z80 code */
static INPUT_PORTS_START( ozon1 )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START("IN1")
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x01, "4" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x03, "6" )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, "A 1C/1C B 2C/1C" )
PORT_DIPSETTING( 0x02, "A 1C/2C B 1C/1C" ) /* see notes */
PORT_DIPSETTING( 0x04, "A 1C/3C B 3C/1C" )
PORT_DIPSETTING( 0x06, "A 1C/4C B 4C/1C" )
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( theend ) static INPUT_PORTS_START( theend )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
@ -6323,7 +6400,6 @@ void galaxian_state::konami_base(machine_config &config)
m_ppi8255[1]->out_pb_callback().set(FUNC(galaxian_state::konami_sound_control_w)); m_ppi8255[1]->out_pb_callback().set(FUNC(galaxian_state::konami_sound_control_w));
m_ppi8255[1]->in_pc_callback().set_ioport("IN3"); m_ppi8255[1]->in_pc_callback().set_ioport("IN3");
m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::konami_portc_1_w)); m_ppi8255[1]->out_pc_callback().set(FUNC(galaxian_state::konami_portc_1_w));
} }
@ -6785,6 +6861,25 @@ void galaxian_state::theend(machine_config &config)
} }
void galaxian_state::ozon1(machine_config &config)
{
konami_base(config);
// alternate memory map
m_maincpu->set_addrmap(AS_PROGRAM, &galaxian_state::ozon1_map);
m_maincpu->set_addrmap(AS_IO, &galaxian_state::ozon1_io_map);
// no watchdog?
config.device_remove("watchdog");
// only one PPI, used in input mode only
m_ppi8255[0]->out_pc_callback().set_nop();
config.device_remove("ppi8255_1");
AY8910(config, m_ay8910[0], GALAXIAN_PIXEL_CLOCK/3/4).add_route(ALL_OUTPUTS, "speaker", 0.5);
}
// TODO: should be derived from theend, re-sort machine configs later // TODO: should be derived from theend, re-sort machine configs later
void galaxian_state::scramble(machine_config &config) void galaxian_state::scramble(machine_config &config)
{ {
@ -12173,6 +12268,20 @@ ROM_START( theendss ) // The End (SegaSA / Sonic)
ROM_LOAD( "6331-1j.86", 0x0000, 0x0020, BAD_DUMP CRC(24652bc4) SHA1(d89575f3749c75dc963317fe451ffeffd9856e4d) ) // Not dumped on this set ROM_LOAD( "6331-1j.86", 0x0000, 0x0020, BAD_DUMP CRC(24652bc4) SHA1(d89575f3749c75dc963317fe451ffeffd9856e4d) ) // Not dumped on this set
ROM_END ROM_END
ROM_START( ozon1 )
ROM_REGION( 0x3000, "maincpu", 0 )
ROM_LOAD( "rom1.bin", 0x0000, 0x1000, CRC(54899e8b) SHA1(270af76ae4396ebda767f160535fa77c0b49726a) )
ROM_LOAD( "rom2.bin", 0x1000, 0x1000, CRC(3c90fbfc) SHA1(92da614dba3a644eac144bb0ed434d78a31fcb1a) )
ROM_LOAD( "rom3.bin", 0x2000, 0x1000, CRC(79fe313b) SHA1(ef8fd70f5669b7e7d7184eca2baaddcecb55c22d) )
ROM_REGION( 0x1000, "gfx1", 0 )
ROM_LOAD( "rom7.bin", 0x0000, 0x0800, CRC(464285e8) SHA1(fff36b034b95050219c70cdfe05ff3bbc452b73e) )
ROM_LOAD( "rom8.bin", 0x0800, 0x0800, CRC(92056dcc) SHA1(b162da8701bfee465205e8f274ee494063c52c7b) )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "ozon1.clr", 0x0000, 0x0020, CRC(605ea6e9) SHA1(d3471e6ef756059c2f7feb32fb8e41181cc1718e) )
ROM_END
ROM_START( takeoff ) ROM_START( takeoff )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "0p.t.o.10l", 0x0000, 0x1000, CRC(46712d43) SHA1(e1b84494b530dd96d8a51a3f8bd7d7d3ba7560a9) ) ROM_LOAD( "0p.t.o.10l", 0x0000, 0x1000, CRC(46712d43) SHA1(e1b84494b530dd96d8a51a3f8bd7d7d3ba7560a9) )
@ -13938,6 +14047,8 @@ GAME( 1981, astroamb, scramble, astroamb, astroamb, galaxian_state, init_
GAME( 1981, atlantis, 0, theend, atlantis, galaxian_state, init_atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, atlantis, 0, theend, atlantis, galaxian_state, init_atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, atlantis2, atlantis, theend, atlantis, galaxian_state, init_atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, atlantis2, atlantis, theend, atlantis, galaxian_state, init_atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, ozon1, 0, ozon1, ozon1, galaxian_state, init_galaxian, ROT90, "Proma", "Ozon I", MACHINE_SUPPORTS_SAVE )
// Konami L-1200-2 base board with custom Subelectro 113 rom board // Konami L-1200-2 base board with custom Subelectro 113 rom board
GAME( 1981, jungsub, jungler, jungsub, jungsub, galaxian_state, init_jungsub, ROT90, "bootleg (Subelectro)", "Jungler (Subelectro, bootleg on Scramble hardware)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // mostly works, bad GFX ROM causes lots of glitches GAME( 1981, jungsub, jungler, jungsub, jungsub, galaxian_state, init_jungsub, ROT90, "bootleg (Subelectro)", "Jungler (Subelectro, bootleg on Scramble hardware)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // mostly works, bad GFX ROM causes lots of glitches

View File

@ -64,24 +64,6 @@ Stephh's notes (based on the games Z80 code and some tests) for other games :
settings (code at 0x5805 for player 1 and player 2 in "Upright" cabinet, or settings (code at 0x5805 for player 1 and player 2 in "Upright" cabinet, or
0x5563 for player 2 in "Cocktail" cabinet). 0x5563 for player 2 in "Cocktail" cabinet).
4) 'ozon1'
- Player 2 controls are used for player 2 regardless of the "Cabinet" Dip Switch
(check code at 0x03c6 which changes player and routines that handle players inputs :
0x0dc3 and 0x1e31 LEFT and RIGHT - 0x0e76 BUTTON1).
- Credits are coded on 1 byte (range 0x00-0xff) and stored at 0x4002.
To display them, they are converted to BCD on 1 byte via routine at 0x1421.
As a result, it will always display 0 to 99 (eg: 0xf0 = 240 will display 40).
When you get 256 credits, 0x4002 = 0x00, so the game thinks you have no credit
at all and enters "attract mode" again (but the game does NOT reset).
- There's an ingame bug when you get 101 or 201 credits : due to code at 0x0239,
the game checks the BCD value (0x01) instead of the correct one at 0x4002,
so you can't start a 2 players game !
- There is another ingame bug when "Coinage" settings are "A 1C/2C B 1C/1C"
and you press COIN2 : due to code at 0x0473, contents of 0x4004 is NEVER reset
to 0x00, so routine at 0x042a ALWAYS thinks that you've pressed COIN2,
and as a consequence, it ALWAYS adds 1 credit (even when you are playing) !
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
@ -91,7 +73,6 @@ Stephh's notes (based on the games Z80 code and some tests) for other games :
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/s2650/s2650.h" #include "cpu/s2650/s2650.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "sound/ay8910.h"
#include "sound/sn76496.h" #include "sound/sn76496.h"
#include "speaker.h" #include "speaker.h"
@ -598,32 +579,6 @@ void galaxold_state::tazzmang_map(address_map &map)
} }
void galaxold_state::ozon1_map(address_map &map)
{
map(0x0000, 0x2fff).rom();
map(0x4000, 0x4200).ram();
map(0x4300, 0x43ff).ram();
map(0x4800, 0x4bff).rw(FUNC(galaxold_state::galaxold_videoram_r), FUNC(galaxold_state::galaxold_videoram_w)).share("videoram");
map(0x4c00, 0x4fff).w(FUNC(galaxold_state::galaxold_videoram_w));
map(0x5000, 0x503f).ram().w(FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram");
map(0x5040, 0x505f).ram().share("spriteram");
map(0x6801, 0x6801).nopw(); //continuosly 0 and 1
map(0x6802, 0x6802).w(FUNC(galaxold_state::galaxold_coin_counter_w));
map(0x6806, 0x6806).w(FUNC(galaxold_state::galaxold_flip_screen_x_w));
map(0x6807, 0x6807).w(FUNC(galaxold_state::galaxold_flip_screen_y_w));
map(0x8100, 0x8100).portr("IN0");
map(0x8101, 0x8101).portr("IN1");
map(0x8102, 0x8102).portr("IN2");
map(0x8103, 0x8103).nopw(); //only one 9b at reset
}
void galaxold_state::ozon1_io_map(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::data_address_w));
}
void galaxold_state::hunchbkg_map(address_map &map) void galaxold_state::hunchbkg_map(address_map &map)
{ {
map(0x0000, 0x0fff).rom(); map(0x0000, 0x0fff).rom();
@ -1794,44 +1749,6 @@ static INPUT_PORTS_START( tazzmang )
INPUT_PORTS_END INPUT_PORTS_END
/* verified from Z80 code */
static INPUT_PORTS_START( ozon1 )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START("IN1")
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x01, "4" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x03, "6" )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, "A 1C/1C B 2C/1C" )
PORT_DIPSETTING( 0x02, "A 1C/2C B 1C/1C" ) /* see notes */
PORT_DIPSETTING( 0x04, "A 1C/3C B 3C/1C" )
PORT_DIPSETTING( 0x06, "A 1C/4C B 4C/1C" )
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( hunchbkg ) static INPUT_PORTS_START( hunchbkg )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
@ -2463,26 +2380,6 @@ void galaxold_state::rockclim(machine_config &config)
} }
void galaxold_state::ozon1(machine_config &config)
{
galaxold_base(config);
/* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::ozon1_map);
m_maincpu->set_addrmap(AS_IO, &galaxold_state::ozon1_io_map);
m_maincpu->set_vblank_int("screen", FUNC(galaxold_state::nmi_line_pulse));
MCFG_MACHINE_RESET_REMOVE()
/* video hardware */
m_palette->set_entries(32);
m_palette->set_init(FUNC(galaxold_state::rockclim_palette));
MCFG_VIDEO_START_OVERRIDE(galaxold_state,ozon1)
AY8910(config, "aysnd", PIXEL_CLOCK/4).add_route(ALL_OUTPUTS, "speaker", 0.5);
}
void galaxold_state::drivfrcg(machine_config &config) void galaxold_state::drivfrcg(machine_config &config)
{ {
/* basic machine hardware */ /* basic machine hardware */
@ -3283,20 +3180,6 @@ ROM_START( tazzmang2 ) // Original Sparcade set
ROM_END ROM_END
ROM_START( ozon1 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "rom1.bin", 0x0000, 0x1000, CRC(54899e8b) SHA1(270af76ae4396ebda767f160535fa77c0b49726a) )
ROM_LOAD( "rom2.bin", 0x1000, 0x1000, CRC(3c90fbfc) SHA1(92da614dba3a644eac144bb0ed434d78a31fcb1a) )
ROM_LOAD( "rom3.bin", 0x2000, 0x1000, CRC(79fe313b) SHA1(ef8fd70f5669b7e7d7184eca2baaddcecb55c22d) )
ROM_REGION( 0x1000, "gfx1", 0 )
ROM_LOAD( "rom7.bin", 0x0000, 0x0800, CRC(464285e8) SHA1(fff36b034b95050219c70cdfe05ff3bbc452b73e) )
ROM_LOAD( "rom8.bin", 0x0800, 0x0800, CRC(92056dcc) SHA1(b162da8701bfee465205e8f274ee494063c52c7b) )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "ozon1.clr", 0x0000, 0x0020, CRC(605ea6e9) SHA1(d3471e6ef756059c2f7feb32fb8e41181cc1718e) )
ROM_END
ROM_START( hunchbkg ) ROM_START( hunchbkg )
ROM_REGION( 0x8000, "maincpu", 0 ) ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "gal_hb_1", 0x0000, 0x0800, CRC(46590e9b) SHA1(5d26578c91adec20d8d8a17d5dade9ef2febcbe5) ) ROM_LOAD( "gal_hb_1", 0x0000, 0x0800, CRC(46590e9b) SHA1(5d26578c91adec20d8d8a17d5dade9ef2febcbe5) )
@ -3679,7 +3562,6 @@ GAME( 1982, porter, dockman, porter, porter, galaxold_state, empty_ini
GAME( 1982, portera, dockman, porter, porter, galaxold_state, empty_init, ROT90, "bootleg", "El Estivador (Spanish bootleg of Port Man on Galaxian hardware)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL ) GAME( 1982, portera, dockman, porter, porter, galaxold_state, empty_init, ROT90, "bootleg", "El Estivador (Spanish bootleg of Port Man on Galaxian hardware)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL )
GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, galaxold_state, empty_init, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, galaxold_state, empty_init, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1982, tazzmang2, tazmania, tazzmang, tazzmang, galaxold_state, empty_init, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware with Starfield)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1982, tazzmang2, tazmania, tazzmang, tazzmang, galaxold_state, empty_init, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware with Starfield)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1983, ozon1, 0, ozon1, ozon1, galaxold_state, empty_init, ROT90, "Proma", "Ozon I", MACHINE_SUPPORTS_SAVE )
GAME( 1982, guttangt, locomotn, guttang, guttangt, galaxold_state, init_guttangt, ROT270, "bootleg (Recreativos Franco?)", "Guttang Gottong (bootleg on Galaxian type hardware)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // or by 'Tren' ? GAME( 1982, guttangt, locomotn, guttang, guttangt, galaxold_state, init_guttangt, ROT270, "bootleg (Recreativos Franco?)", "Guttang Gottong (bootleg on Galaxian type hardware)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // or by 'Tren' ?
// Videotron cartridge system // Videotron cartridge system

View File

@ -312,6 +312,7 @@ public:
void moonqsr(machine_config &config); void moonqsr(machine_config &config);
void frogger(machine_config &config); void frogger(machine_config &config);
void anteatergg(machine_config &config); void anteatergg(machine_config &config);
void ozon1(machine_config &config);
void theend(machine_config &config); void theend(machine_config &config);
void turtles(machine_config &config); void turtles(machine_config &config);
void fantastc(machine_config &config); void fantastc(machine_config &config);
@ -406,6 +407,8 @@ protected:
void mshuttle_decrypted_opcodes_map(address_map &map); void mshuttle_decrypted_opcodes_map(address_map &map);
void mshuttle_map(address_map &map); void mshuttle_map(address_map &map);
void mshuttle_portmap(address_map &map); void mshuttle_portmap(address_map &map);
void ozon1_map(address_map &map);
void ozon1_io_map(address_map &map);
void scobra_map(address_map &map); void scobra_map(address_map &map);
void scorpion_map(address_map &map); void scorpion_map(address_map &map);
void scorpion_sound_map(address_map &map); void scorpion_sound_map(address_map &map);

View File

@ -200,7 +200,6 @@ public:
DECLARE_VIDEO_START(dkongjrmc); DECLARE_VIDEO_START(dkongjrmc);
DECLARE_VIDEO_START(rockclim); DECLARE_VIDEO_START(rockclim);
DECLARE_VIDEO_START(galaxold_plain); DECLARE_VIDEO_START(galaxold_plain);
DECLARE_VIDEO_START(ozon1);
DECLARE_VIDEO_START(ckongs); DECLARE_VIDEO_START(ckongs);
DECLARE_VIDEO_START(darkplnt); DECLARE_VIDEO_START(darkplnt);
DECLARE_VIDEO_START(rescue); DECLARE_VIDEO_START(rescue);
@ -291,7 +290,6 @@ public:
void porter(machine_config &config); void porter(machine_config &config);
void scramb2(machine_config &config); void scramb2(machine_config &config);
void scramb3(machine_config &config); void scramb3(machine_config &config);
void ozon1(machine_config &config);
void mooncrst(machine_config &config); void mooncrst(machine_config &config);
void guttang(machine_config &config); void guttang(machine_config &config);
void ckongmc(machine_config &config); void ckongmc(machine_config &config);
@ -314,8 +312,6 @@ public:
void hunchbkg_data(address_map &map); void hunchbkg_data(address_map &map);
void hustlerb3_map(address_map &map); void hustlerb3_map(address_map &map);
void mooncrst_map(address_map &map); void mooncrst_map(address_map &map);
void ozon1_io_map(address_map &map);
void ozon1_map(address_map &map);
void racknrol_map(address_map &map); void racknrol_map(address_map &map);
void racknrol_io(address_map &map); void racknrol_io(address_map &map);
void rockclim_map(address_map &map); void rockclim_map(address_map &map);

View File

@ -14303,6 +14303,7 @@ olmandingc // bootleg (Calfesa)
omegab // bootleg omegab // bootleg
omni // bootleg omni // bootleg
orbitron // (c) 1982 Signatron USA (Arcade Tv Game List - P.160, Left, 22 from top) orbitron // (c) 1982 Signatron USA (Arcade Tv Game List - P.160, Left, 22 from top)
ozon1 // (c) 1983 Proma
pacmanbl // bootleg pacmanbl // bootleg
pacmanbla // bootleg pacmanbla // bootleg
pacmanblb // bootleg pacmanblb // bootleg
@ -14420,7 +14421,6 @@ hexpool // (c) 1986 Shinkia (Senko Kit)
hexpoola // (c) 1986 Shinkia (Senko Kit) hexpoola // (c) 1986 Shinkia (Senko Kit)
hunchbkg // (c) 1983 Century hunchbkg // (c) 1983 Century
hustlerb3 // bootleg hustlerb3 // bootleg
ozon1 // (c) 1983 Proma
porter // 1982 bootleg (Arcade TV Game List - P.98, Left, 15 from bottom) porter // 1982 bootleg (Arcade TV Game List - P.98, Left, 15 from bottom)
portera // bootleg portera // bootleg
racknrol // (c) 1986 Status (Shinkia license) (Senko Kit) racknrol // (c) 1986 Status (Shinkia license) (Senko Kit)

View File

@ -696,13 +696,6 @@ VIDEO_START_MEMBER(galaxold_state,harem)
m_modify_spritecode = &galaxold_state::harem_modify_spritecode; m_modify_spritecode = &galaxold_state::harem_modify_spritecode;
} }
VIDEO_START_MEMBER(galaxold_state,ozon1)
{
VIDEO_START_CALL_MEMBER(galaxold_plain);
m_bg_tilemap->set_scrolldx(0, 384-256);
}
TILE_GET_INFO_MEMBER(galaxold_state::dambustr_get_tile_info2) TILE_GET_INFO_MEMBER(galaxold_state::dambustr_get_tile_info2)
{ {
uint8_t x = tile_index & 0x1f; uint8_t x = tile_index & 0x1f;