mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
Merge pull request #2086 from kazblox/master
iNES Mapper 190 support, miscellanous cleanups in some drivers
This commit is contained in:
commit
a0aa981a6e
@ -1921,6 +1921,8 @@ if (BUSES["NES"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/nes/txc.h",
|
||||
MAME_DIR .. "src/devices/bus/nes/waixing.cpp",
|
||||
MAME_DIR .. "src/devices/bus/nes/waixing.h",
|
||||
MAME_DIR .. "src/devices/bus/nes/zemina.cpp",
|
||||
MAME_DIR .. "src/devices/bus/nes/zemina.h",
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -225,6 +225,7 @@ SLOT_INTERFACE_START(nes_cart)
|
||||
SLOT_INTERFACE_INTERNAL("unl_43272", NES_43272) // used in Gaau Hok Gwong Cheung
|
||||
SLOT_INTERFACE_INTERNAL("tf1201", NES_TF1201)
|
||||
SLOT_INTERFACE_INTERNAL("unl_cfight", NES_CITYFIGHT) // used by City Fighter IV
|
||||
SLOT_INTERFACE_INTERNAL("zemina", NES_ZEMINA) // mapper 190 - Magic Kid Googoo, etc.
|
||||
// misc bootleg boards
|
||||
SLOT_INTERFACE_INTERNAL("ax5705", NES_AX5705)
|
||||
SLOT_INTERFACE_INTERNAL("sc127", NES_SC127)
|
||||
|
@ -58,6 +58,7 @@
|
||||
#include "tengen.h"
|
||||
#include "txc.h"
|
||||
#include "waixing.h"
|
||||
#include "zemina.h"
|
||||
// misc unlicensed/bootleg/pirate PCBs
|
||||
#include "bootleg.h"
|
||||
#include "multigame.h"
|
||||
|
@ -221,7 +221,7 @@ static const nes_mmc mmc_list[] =
|
||||
{ 187, UNL_KOF96 },
|
||||
{ 188, BANDAI_KARAOKE },
|
||||
{ 189, TXC_TW },
|
||||
// 190 Unused
|
||||
{ 190, ZEMINA_BOARD },
|
||||
{ 191, WAIXING_TYPE_B },
|
||||
{ 192, WAIXING_TYPE_C },
|
||||
{ 193, NTDEC_FIGHTINGHERO },
|
||||
|
@ -190,6 +190,7 @@ static const nes_pcb pcb_list[] =
|
||||
{ "edu2k", UNL_EDU2K },
|
||||
{ "t230", UNL_T230 },
|
||||
{ "mk2", UNL_MK2 },
|
||||
{ "zemina", ZEMINA_BOARD },
|
||||
// misc bootleg boards
|
||||
{ "ax5705", UNL_AX5705 },
|
||||
{ "sc127", UNL_SC127 },
|
||||
|
@ -125,7 +125,7 @@ enum
|
||||
WAIXING_SGZLZ, WAIXING_SGZ, WAIXING_WXZS, WAIXING_SECURITY, WAIXING_SH2,
|
||||
WAIXING_DQ8, WAIXING_FFV, WAIXING_WXZS2, SUPERGAME_LIONKING, SUPERGAME_BOOGERMAN,
|
||||
KAY_BOARD, HOSENKAN_BOARD, NITRA_TDA, GOUDER_37017, NANJING_BOARD,
|
||||
WHIRLWIND_2706,
|
||||
WHIRLWIND_2706, ZEMINA_BOARD,
|
||||
NOCASH_NOCHR, // homebrew PCB design which uses NTRAM for CHRRAM
|
||||
BTL_ACTION53, // homebrew PCB for homebrew multicarts
|
||||
BTL_2A03_PURITANS, // homebrew PCB
|
||||
|
85
src/devices/bus/nes/zemina.cpp
Normal file
85
src/devices/bus/nes/zemina.cpp
Normal file
@ -0,0 +1,85 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Kaz
|
||||
/***********************************************************************************************************
|
||||
|
||||
NES/Famicom cartridge emulation for Zemina PCBs
|
||||
|
||||
***********************************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "zemina.h"
|
||||
|
||||
#ifdef NES_PCB_DEBUG
|
||||
#define VERBOSE 1
|
||||
#else
|
||||
#define VERBOSE 0
|
||||
#endif
|
||||
|
||||
#define LOG_MMC(x) do { if (VERBOSE) logerror x; } while (0)
|
||||
|
||||
//-------------------------------------------------
|
||||
// constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
const device_type NES_ZEMINA = &device_creator<nes_zemina_device>;
|
||||
|
||||
nes_zemina_device::nes_zemina_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: nes_nrom_device(mconfig, NES_ZEMINA, "NES Cart Zemina PCB", tag, owner, clock, "nes_zemina", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
void nes_zemina_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
}
|
||||
|
||||
void nes_zemina_device::pcb_reset()
|
||||
{
|
||||
set_nt_mirroring(PPU_MIRROR_VERT);
|
||||
chr2_0(0, CHRROM);
|
||||
chr2_2(0, CHRROM);
|
||||
chr2_4(0, CHRROM);
|
||||
chr2_6(0, CHRROM);
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(0);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
mapper specific handlers
|
||||
-------------------------------------------------*/
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
Zemina board emulation
|
||||
|
||||
Currently, this board is only known to be used
|
||||
by one game: Magic Kid Googoo.
|
||||
|
||||
Info from kevtris at NESDev, who dumped the game:
|
||||
https://wiki.nesdev.com/w/index.php/INES_Mapper_190
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
WRITE8_MEMBER(nes_zemina_device::write_h)
|
||||
{
|
||||
LOG_MMC(("zemina write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
if (offset >= 0x0000 && offset <= 0x1FFF)
|
||||
{
|
||||
prg16_89ab(data & 0x07);
|
||||
}
|
||||
else if (offset >= 0x4000 && offset <= 0x5FFF)
|
||||
{
|
||||
prg16_89ab((data & 0x07) | 0x08);
|
||||
}
|
||||
else if ((offset & 0x2000) == 0x2000) // 2K CHR banks
|
||||
{
|
||||
switch (offset & 0x03) // only A0, A1, A13, A14, and A15 are used to select the CHR bank
|
||||
{
|
||||
case 0x00: chr2_0(data, CHRROM); break;
|
||||
case 0x01: chr2_2(data, CHRROM); break;
|
||||
case 0x02: chr2_4(data, CHRROM); break;
|
||||
case 0x03: chr2_6(data, CHRROM); break;
|
||||
}
|
||||
}
|
||||
}
|
26
src/devices/bus/nes/zemina.h
Normal file
26
src/devices/bus/nes/zemina.h
Normal file
@ -0,0 +1,26 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Kaz
|
||||
#ifndef __NES_ZEMINA_H
|
||||
#define __NES_ZEMINA_H
|
||||
|
||||
#include "nxrom.h"
|
||||
|
||||
// ======================> nes_zemina_device
|
||||
|
||||
class nes_zemina_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_zemina_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual DECLARE_WRITE8_MEMBER(write_h) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
extern const device_type NES_ZEMINA;
|
||||
|
||||
#endif
|
@ -24,6 +24,7 @@ TODO:
|
||||
|
||||
#include "emu.h"
|
||||
#include "audio/galaxian.h"
|
||||
#include "includes/galaxian.h"
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -31,10 +32,8 @@ TODO:
|
||||
*
|
||||
*************************************/
|
||||
|
||||
#define XTAL 18432000
|
||||
|
||||
#define SOUND_CLOCK (XTAL/6/2) /* 1.536 MHz */
|
||||
#define RNG_RATE (XTAL/3*2) /* RNG clock is XTAL/3*2 see Aaron's note in video/galaxian.c */
|
||||
#define SOUND_CLOCK (GALAXIAN_MASTER_CLOCK/6/2) /* 1.536 MHz */
|
||||
#define RNG_RATE (GALAXIAN_MASTER_CLOCK/3*2) /* RNG clock is XTAL/3*2 see Aaron's note in video/galaxian.c */
|
||||
|
||||
/* 74LS259 */
|
||||
#define GAL_INP_BG_DAC NODE_10 /* at 9M Q4 to Q7 in schematics */
|
||||
|
@ -62,13 +62,15 @@ correctly.
|
||||
***************************************************************************/
|
||||
|
||||
/* 12mhz OSC */
|
||||
#define MAIN_CPU_CLOCK (XTAL_12MHz/3)
|
||||
#define SOUND_CPU_CLOCK (XTAL_12MHz/4)
|
||||
#define AUDIO_CLOCK (XTAL_12MHz/8)
|
||||
#define MASTER_CLOCK (XTAL_12MHz)
|
||||
#define MAIN_CPU_CLOCK (MASTER_CLOCK/3)
|
||||
#define SOUND_CPU_CLOCK (MASTER_CLOCK/4)
|
||||
#define AUDIO_CLOCK (MASTER_CLOCK/8)
|
||||
/* 20mhz OSC - both Z80s are 4 MHz */
|
||||
#define MAIN_CPU_CLOCK_1942P (XTAL_20MHz/5)
|
||||
#define SOUND_CPU_CLOCK_1942P (XTAL_20MHz/5)
|
||||
#define AUDIO_CLOCK_1942P (XTAL_20MHz/16)
|
||||
#define MASTER_CLOCK_1942P (XTAL_20MHz)
|
||||
#define MAIN_CPU_CLOCK_1942P (MASTER_CLOCK_1942P/5)
|
||||
#define SOUND_CPU_CLOCK_1942P (MASTER_CLOCK_1942P/5)
|
||||
#define AUDIO_CLOCK_1942P (MASTER_CLOCK_1942P/16)
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
|
@ -666,7 +666,7 @@ TODO:
|
||||
#include "sound/volt_reg.h"
|
||||
|
||||
|
||||
#define KONAMI_SOUND_CLOCK 14318000
|
||||
#define KONAMI_SOUND_CLOCK XTAL_14_31818MHz
|
||||
|
||||
|
||||
|
||||
@ -2822,6 +2822,47 @@ static INPUT_PORTS_START( batman2 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
/* verified from Z80 code */
|
||||
static INPUT_PORTS_START( ladybugg )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
|
||||
PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0xc0, DEF_STR( Free_Play ) )
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Medium ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Hard ) )
|
||||
PORT_DIPSETTING( 0x03, DEF_STR( Hardest ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_DIPSETTING( 0x04, "5" )
|
||||
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( streakng )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
@ -8687,6 +8728,27 @@ ROM_START( batman2 ) /* wasn't marked as artic multi-system, but it's basically
|
||||
ROM_LOAD( "l06_prom.bin", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ladybugg ) /* Arctic Multi-System? */
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "lbuggx.1", 0x0000, 0x0800, CRC(e67e241d) SHA1(42b8eaca71c6b346ab54bc722850d6e6d169c517) )
|
||||
ROM_LOAD( "lbuggx.2", 0x0800, 0x0800, CRC(3cb1fb9a) SHA1(ee76758c94329dfcc740571195a74d9242aaf49f) )
|
||||
ROM_LOAD( "lbuggx.3", 0x1000, 0x0800, CRC(0937009e) SHA1(ef57ebf3d6ab3d6ac0e1faa10c3109d2c80a1248) )
|
||||
ROM_LOAD( "lbuggx.4", 0x1800, 0x0800, CRC(3e773f62) SHA1(6348e61f48e5d1f04289098c4c0395335ea5e2a5) )
|
||||
ROM_LOAD( "lbuggx.5", 0x2000, 0x0800, CRC(2b0d42e5) SHA1(1547b8127f964eb10862b566f5779f8011c3441d) )
|
||||
ROM_LOAD( "lbuggx.6", 0x2800, 0x0800, CRC(159f9433) SHA1(93341a4de1e1e4a3fb004019fc1edba73db6a4c8) )
|
||||
ROM_LOAD( "lbuggx.7", 0x3000, 0x0800, CRC(f2be06d5) SHA1(1354332d2d107ad810aa2e261b595285394dfb49) )
|
||||
ROM_LOAD( "lbuggx.8", 0x3800, 0x0800, CRC(646fe79f) SHA1(03223d6c4f9050fd6c1c313f0e366ab4989feca4) )
|
||||
|
||||
ROM_REGION( 0x2000, "gfx1", 0 )
|
||||
ROM_LOAD( "lbuggx.a", 0x0800, 0x0800, CRC(7efb9dc5) SHA1(5e02ea8cd1a1c8efa6708a8615cc2dc9da65a455) )
|
||||
ROM_CONTINUE ( 0x0000, 0x0800)
|
||||
ROM_LOAD( "lbuggx.b", 0x1800, 0x0800, CRC(351d4ddc) SHA1(048e8a60e57c6eb0a4d7c2175ddd46c4273756c5) )
|
||||
ROM_CONTINUE ( 0x1000, 0x0800)
|
||||
|
||||
ROM_REGION( 0x0020, "proms", 0 )
|
||||
ROM_LOAD( "lbuggx.clr", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( atlantisb ) /* Artic Multi-System */
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "1", 0x0000, 0x0800, CRC(2b612351) SHA1(cfd244946190c062146716c0417c35be216943e4) ) /* aka "subfury" */
|
||||
@ -11667,6 +11729,7 @@ GAME( 1981, pacmanblb, puckman, pacmanbl, pacmanblb, galaxian_state, pacma
|
||||
GAME( 1981, ghostmun, puckman, pacmanbl, streakng, galaxian_state, ghostmun, ROT90, "bootleg (Leisure and Allied)", "Ghost Muncher", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1981, phoenxp2, phoenix, galaxian, phoenxp2, galaxian_state, batman2, ROT270, "bootleg", "Phoenix Part 2", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1981, batman2, phoenix, galaxian, batman2, galaxian_state, batman2, ROT270, "bootleg", "Batman Part 2", MACHINE_SUPPORTS_SAVE ) /* similar to pisces, but with different video banking characteristics */
|
||||
GAME( 1983, ladybugg, ladybug, galaxian, ladybugg, galaxian_state, batman2, ROT270, "bootleg", "Lady Bug (bootleg on Galaxian hardware)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1981, atlantisb, atlantis, galaxian, atlantib, galaxian_state, galaxian, ROT270, "bootleg", "Battle of Atlantis (bootleg)", MACHINE_SUPPORTS_SAVE ) // I don't know if this should have a starfield...
|
||||
GAME( 1982, tenspot, 0, tenspot, tenspot, galaxian_state, tenspot, ROT270, "Thomas Automatics", "Ten Spot", MACHINE_NOT_WORKING ) // work out how menu works
|
||||
|
||||
|
@ -637,7 +637,7 @@ static ADDRESS_MAP_START( hunchbkg, AS_PROGRAM, 8, galaxold_state )
|
||||
AM_RANGE(0x6000, 0x6fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* majorly shifted, hunchbkg style */
|
||||
/* hunchbkg style */
|
||||
static ADDRESS_MAP_START( spcwarp, AS_PROGRAM, 8, galaxold_state )
|
||||
AM_RANGE(0x0000, 0x0fff) AM_ROM
|
||||
AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
|
||||
@ -1761,48 +1761,6 @@ static INPUT_PORTS_START( ozon1 )
|
||||
PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
/* verified from Z80 code */
|
||||
static INPUT_PORTS_START( ladybugg )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
|
||||
PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coinage ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0xc0, DEF_STR( Free_Play ) )
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Easy ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Medium ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Hard ) )
|
||||
PORT_DIPSETTING( 0x03, DEF_STR( Hardest ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_DIPSETTING( 0x04, "5" )
|
||||
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 )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
@ -2251,16 +2209,7 @@ static MACHINE_CONFIG_DERIVED( galaxian, galaxold_base )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( batman2, galaxian )
|
||||
|
||||
/* basic machine hardware */
|
||||
|
||||
/* video hardware */
|
||||
MCFG_VIDEO_START_OVERRIDE(galaxold_state,batman2)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( mooncrst, galaxian )
|
||||
static MACHINE_CONFIG_DERIVED( mooncrst, galaxold_base )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
@ -2268,6 +2217,9 @@ static MACHINE_CONFIG_DERIVED( mooncrst, galaxian )
|
||||
|
||||
/* video hardware */
|
||||
MCFG_VIDEO_START_OVERRIDE(galaxold_state,mooncrst)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_FRAGMENT_ADD(mooncrst_audio)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
// 'Videotron'
|
||||
@ -2368,7 +2320,7 @@ static MACHINE_CONFIG_DERIVED( 4in1, galaxian )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( bagmanmc, galaxian )
|
||||
static MACHINE_CONFIG_DERIVED( bagmanmc, mooncrst )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
@ -2381,7 +2333,7 @@ static MACHINE_CONFIG_DERIVED( bagmanmc, galaxian )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( dkongjrm, galaxian )
|
||||
static MACHINE_CONFIG_DERIVED( dkongjrm, mooncrst )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
@ -2501,7 +2453,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( spcwarp, hunchbkg )
|
||||
/* hunchbkg but with different banking */
|
||||
/* hunchbkg, but with a different memory map */
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(spcwarp)
|
||||
@ -2581,7 +2533,7 @@ static MACHINE_CONFIG_DERIVED( ckongg, galaxian )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( ckongmc, galaxian )
|
||||
static MACHINE_CONFIG_DERIVED( ckongmc, mooncrst )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
@ -3176,27 +3128,6 @@ ROM_START( ozon1 )
|
||||
ROM_LOAD( "ozon1.clr", 0x0000, 0x0020, CRC(605ea6e9) SHA1(d3471e6ef756059c2f7feb32fb8e41181cc1718e) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( ladybugg )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "lbuggx.1", 0x0000, 0x0800, CRC(e67e241d) SHA1(42b8eaca71c6b346ab54bc722850d6e6d169c517) )
|
||||
ROM_LOAD( "lbuggx.2", 0x0800, 0x0800, CRC(3cb1fb9a) SHA1(ee76758c94329dfcc740571195a74d9242aaf49f) )
|
||||
ROM_LOAD( "lbuggx.3", 0x1000, 0x0800, CRC(0937009e) SHA1(ef57ebf3d6ab3d6ac0e1faa10c3109d2c80a1248) )
|
||||
ROM_LOAD( "lbuggx.4", 0x1800, 0x0800, CRC(3e773f62) SHA1(6348e61f48e5d1f04289098c4c0395335ea5e2a5) )
|
||||
ROM_LOAD( "lbuggx.5", 0x2000, 0x0800, CRC(2b0d42e5) SHA1(1547b8127f964eb10862b566f5779f8011c3441d) )
|
||||
ROM_LOAD( "lbuggx.6", 0x2800, 0x0800, CRC(159f9433) SHA1(93341a4de1e1e4a3fb004019fc1edba73db6a4c8) )
|
||||
ROM_LOAD( "lbuggx.7", 0x3000, 0x0800, CRC(f2be06d5) SHA1(1354332d2d107ad810aa2e261b595285394dfb49) )
|
||||
ROM_LOAD( "lbuggx.8", 0x3800, 0x0800, CRC(646fe79f) SHA1(03223d6c4f9050fd6c1c313f0e366ab4989feca4) )
|
||||
|
||||
ROM_REGION( 0x2000, "gfx1", 0 )
|
||||
ROM_LOAD( "lbuggx.a", 0x0800, 0x0800, CRC(7efb9dc5) SHA1(5e02ea8cd1a1c8efa6708a8615cc2dc9da65a455) )
|
||||
ROM_CONTINUE ( 0x0000, 0x0800)
|
||||
ROM_LOAD( "lbuggx.b", 0x1800, 0x0800, CRC(351d4ddc) SHA1(048e8a60e57c6eb0a4d7c2175ddd46c4273756c5) )
|
||||
ROM_CONTINUE ( 0x1000, 0x0800)
|
||||
|
||||
ROM_REGION( 0x0020, "proms", 0 )
|
||||
ROM_LOAD( "lbuggx.clr", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( hunchbkg )
|
||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||
ROM_LOAD( "gal_hb_1", 0x0000, 0x0800, CRC(46590e9b) SHA1(5d26578c91adec20d8d8a17d5dade9ef2febcbe5) )
|
||||
@ -3216,25 +3147,35 @@ ROM_START( hunchbkg )
|
||||
ROM_LOAD( "gal_hb_cp", 0x0000, 0x0020, CRC(cbff6762) SHA1(4515a6e12a0a5c485a55291feee17a571120a549) )
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
For all we know, this could be anything, but the text in ROM confirms the
|
||||
copyright (swarpt7f.bin):
|
||||
|
||||
"COPYRIGHT 1983"
|
||||
"CENTURY ELECTRONICS LTD"
|
||||
|
||||
...and the GFX ROMs contain graphics similar to Cosmos, so it could be
|
||||
Space Warp after all.
|
||||
|
||||
Due to how incomplete this dump is (missing ROM, one corrupted), there is
|
||||
very little to be worked on, but so far, using a variation of hunchbkg's
|
||||
memory map and inputs work, atleast until it crashes on the title screen.
|
||||
*/
|
||||
|
||||
ROM_START( spcwarp )
|
||||
// conversion of 'cosmos' (cvs.c) to Galaxian hardware
|
||||
// notes:
|
||||
// -came out of an unemulated games collection - may or may not be actually spcwarp but it's unique
|
||||
// -uses hunchbkg hardware with a different map
|
||||
// -the game likely calls a checksum check every 10 frames, causes game to freeze (probably because of bad ROM)
|
||||
// -so far using hunchbkg inputs work
|
||||
// -text in ROM confirms year of release and company; ASCII shows "COPYRIGHT 1983", "CENTURY ELECTRONICS UK LTD" in swarpt7f.bin
|
||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||
ROM_LOAD( "swarpt7f.bin", 0x0000, 0x1000, CRC(04d744e3) SHA1(db8218510052a05670cb0b722b73d3f10464788c) )
|
||||
ROM_LOAD( "swarpt7h.bin", 0x2000, 0x1000, CRC(34a36536) SHA1(bc438515618683b2a7c29637871ee00ed95ad7f8) )
|
||||
/* missing ROM at $4000 */
|
||||
ROM_LOAD( "swarpt7m.bin", 0x6000, 0x1000, BAD_DUMP CRC(a2dff6c8) SHA1(d1c72848450dc5ff386dc94a26e4bf704ccc7121) ) /* ROMCMP reports "BADADDR xxxxxx-xxxxx". Observed data sequence repeated every 32 bytes */
|
||||
|
||||
ROM_REGION( 0x1000, "gfx1", 0 )
|
||||
ROM_LOAD( "swarpb1h.bin", 0x0000, 0x0800, CRC(6ee3b5f7) SHA1(8150f2ecd59d3a165c0541b550664c56d049edd5) )
|
||||
ROM_LOAD( "swarpb1k.bin", 0x0800, 0x0800, CRC(da4cee6b) SHA1(28b91381658f598fa62049489beee443232825c6) )
|
||||
|
||||
/* using hunchbkg proms for now */
|
||||
ROM_REGION( 0x0020, "proms", 0 )
|
||||
ROM_LOAD( "clr", 0x0000, 0x0020, NO_DUMP )
|
||||
ROM_LOAD( "gal_hb_cp", 0x0000, 0x0020, BAD_DUMP CRC(cbff6762) SHA1(4515a6e12a0a5c485a55291feee17a571120a549) )
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -3511,7 +3452,6 @@ GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, driver_device, 0,
|
||||
GAME( 1982, tazzmang2, tazmania, tazzmang, tazzmang, driver_device, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware with Starfield)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1983, bongo, 0, bongo, bongo, driver_device, 0, ROT90, "Jetsoft", "Bongo", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1983, ozon1, 0, ozon1, ozon1, driver_device, 0, ROT90, "Proma", "Ozon I", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1983, ladybugg, ladybug, batman2, ladybugg, galaxold_state, ladybugg, ROT270, "bootleg", "Lady Bug (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1982, guttangt, locomotn, guttang, guttangt, galaxold_state, 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
|
||||
|
@ -534,7 +534,7 @@ INTERRUPT_GEN_MEMBER(marineb_state::wanted_vblank_irq)
|
||||
static MACHINE_CONFIG_START( marineb, marineb_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, 3072000) /* 3.072 MHz */
|
||||
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz? */
|
||||
MCFG_CPU_PROGRAM_MAP(marineb_map)
|
||||
MCFG_CPU_IO_MAP(marineb_io_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", marineb_state, marineb_vblank_irq)
|
||||
@ -555,7 +555,7 @@ static MACHINE_CONFIG_START( marineb, marineb_state )
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("ay1", AY8910, 1500000)
|
||||
MCFG_SOUND_ADD("ay1", AY8910, SOUND_CLOCK)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -606,10 +606,10 @@ static MACHINE_CONFIG_DERIVED( wanted, marineb )
|
||||
MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_springer)
|
||||
|
||||
// sound hardware (PSG type verified only for bcruzm12)
|
||||
MCFG_SOUND_REPLACE("ay1", AY8912, 1500000)
|
||||
MCFG_SOUND_REPLACE("ay1", AY8912, SOUND_CLOCK)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
|
||||
MCFG_SOUND_ADD("ay2", AY8912, 1500000)
|
||||
MCFG_SOUND_ADD("ay2", AY8912, SOUND_CLOCK)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
#define GALAXIAN_XSCALE 3
|
||||
|
||||
/* master clocks */
|
||||
#define GALAXIAN_MASTER_CLOCK (18432000)
|
||||
#define GALAXIAN_MASTER_CLOCK (XTAL_18_432MHz)
|
||||
#define GALAXIAN_PIXEL_CLOCK (GALAXIAN_XSCALE*GALAXIAN_MASTER_CLOCK/3)
|
||||
|
||||
/* H counts from 128->511, HBLANK starts at 130 and ends at 250 */
|
||||
|
@ -186,7 +186,6 @@ public:
|
||||
DECLARE_VIDEO_START(galaxold);
|
||||
DECLARE_VIDEO_START(drivfrcg);
|
||||
DECLARE_VIDEO_START(racknrol);
|
||||
DECLARE_VIDEO_START(batman2);
|
||||
DECLARE_VIDEO_START(mooncrst);
|
||||
DECLARE_VIDEO_START(scrambold);
|
||||
DECLARE_VIDEO_START(newsin7);
|
||||
@ -222,7 +221,6 @@ public:
|
||||
void video_start_common();
|
||||
void pisces_modify_spritecode(uint8_t *spriteram, int *code, int *flipx, int *flipy, int offs);
|
||||
void mooncrst_modify_spritecode(uint8_t *spriteram, int *code, int *flipx, int *flipy, int offs);
|
||||
void batman2_modify_charcode(uint16_t *code, uint8_t x);
|
||||
void rockclim_draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void rockclim_modify_spritecode(uint8_t *spriteram, int *code, int *flipx, int *flipy, int offs);
|
||||
void harem_modify_spritecode(uint8_t *spriteram, int *code, int *flipx, int *flipy, int offs);
|
||||
|
@ -1,5 +1,10 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Zsolt Vasvari
|
||||
|
||||
#define MASTER_CLOCK (XTAL_12MHz)
|
||||
#define CPU_CLOCK (MASTER_CLOCK/4)
|
||||
#define SOUND_CLOCK (MASTER_CLOCK/8)
|
||||
|
||||
class marineb_state : public driver_device
|
||||
{
|
||||
public:
|
||||
|
@ -174,12 +174,6 @@ INTERRUPT_GEN_MEMBER(galaxold_state::hunchbks_vh_interrupt)
|
||||
generic_pulse_irq_line_and_vector(device.execute(),0,0x03,1);
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(galaxold_state,ladybugg)
|
||||
{
|
||||
/* Doesn't actually use the bank, but it mustn't have a coin lock! */
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x6002, 0x6002, write8_delegate(FUNC(galaxold_state::galaxold_gfxbank_w),this));
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(galaxold_state,bullsdrtg)
|
||||
{
|
||||
int i;
|
||||
|
@ -600,24 +600,6 @@ VIDEO_START_MEMBER(galaxold_state,mooncrst)
|
||||
m_modify_spritecode = &galaxold_state::mooncrst_modify_spritecode;
|
||||
}
|
||||
|
||||
void galaxold_state::batman2_modify_charcode(uint16_t *code, uint8_t x)
|
||||
{
|
||||
if (*code & 0x80)
|
||||
{
|
||||
*code |= (m_gfxbank[0] << 8);
|
||||
}
|
||||
}
|
||||
|
||||
VIDEO_START_MEMBER(galaxold_state,batman2)
|
||||
{
|
||||
VIDEO_START_CALL_MEMBER(galaxold);
|
||||
|
||||
m_modify_charcode = &galaxold_state::batman2_modify_charcode;
|
||||
m_modify_spritecode = &galaxold_state::batman2_modify_spritecode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void galaxold_state::rockclim_draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
m_rockclim_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
||||
|
Loading…
Reference in New Issue
Block a user