This commit is contained in:
angelosa 2015-07-23 01:07:07 +02:00
commit 16adb537bc
42 changed files with 1270 additions and 281 deletions

View File

@ -33,7 +33,7 @@ namespace bgfx { namespace noop
{
}
void createIndexBuffer(IndexBufferHandle /*_handle*/, Memory* /*_mem*/, uint8_t /*_flags*/) BX_OVERRIDE
void createIndexBuffer(IndexBufferHandle /*_handle*/, Memory* /*_mem*/, uint16_t /*_flags*/) BX_OVERRIDE
{
}
@ -49,7 +49,7 @@ namespace bgfx { namespace noop
{
}
void createVertexBuffer(VertexBufferHandle /*_handle*/, Memory* /*_mem*/, VertexDeclHandle /*_declHandle*/, uint8_t /*_flags*/) BX_OVERRIDE
void createVertexBuffer(VertexBufferHandle /*_handle*/, Memory* /*_mem*/, VertexDeclHandle /*_declHandle*/, uint16_t /*_flags*/) BX_OVERRIDE
{
}
@ -57,7 +57,7 @@ namespace bgfx { namespace noop
{
}
void createDynamicIndexBuffer(IndexBufferHandle /*_handle*/, uint32_t /*_size*/, uint8_t /*_flags*/) BX_OVERRIDE
void createDynamicIndexBuffer(IndexBufferHandle /*_handle*/, uint32_t /*_size*/, uint16_t /*_flags*/) BX_OVERRIDE
{
}
@ -69,7 +69,7 @@ namespace bgfx { namespace noop
{
}
void createDynamicVertexBuffer(VertexBufferHandle /*_handle*/, uint32_t /*_size*/, uint8_t /*_flags*/) BX_OVERRIDE
void createDynamicVertexBuffer(VertexBufferHandle /*_handle*/, uint32_t /*_size*/, uint16_t /*_flags*/) BX_OVERRIDE
{
}

View File

@ -17,11 +17,12 @@
|| BX_PLATFORM_IOS \
|| BX_PLATFORM_LINUX \
|| BX_PLATFORM_NACL \
|| BX_PLATFORM_NETBSD \
|| BX_PLATFORM_OSX \
|| BX_PLATFORM_RPI
# include <sched.h> // sched_yield
# if BX_PLATFORM_FREEBSD || BX_PLATFORM_IOS || BX_PLATFORM_NACL || BX_PLATFORM_OSX
# if BX_PLATFORM_FREEBSD || BX_PLATFORM_IOS || BX_PLATFORM_NACL || BX_PLATFORM_NETBSD || BX_PLATFORM_OSX
# include <pthread.h> // mach_port_t
# endif // BX_PLATFORM_IOS || BX_PLATFORM_OSX || BX_PLATFORM_NACL
@ -93,7 +94,7 @@ namespace bx
return (pid_t)::syscall(SYS_gettid);
#elif BX_PLATFORM_IOS || BX_PLATFORM_OSX
return (mach_port_t)::pthread_mach_thread_np(pthread_self() );
#elif BX_PLATFORM_FREEBSD || BX_PLATFORM_NACL
#elif BX_PLATFORM_FREEBSD || BX_PLATFORM_NACL || BX_PLATFORM_NETBSD
// Casting __nc_basic_thread_data*... need better way to do this.
return *(uint32_t*)::pthread_self();
#else

View File

@ -18,6 +18,7 @@
#define BX_PLATFORM_IOS 0
#define BX_PLATFORM_LINUX 0
#define BX_PLATFORM_NACL 0
#define BX_PLATFORM_NETBSD 0
#define BX_PLATFORM_OSX 0
#define BX_PLATFORM_PS4 0
#define BX_PLATFORM_QNX 0
@ -187,6 +188,9 @@
#elif defined(__FreeBSD__)
# undef BX_PLATFORM_FREEBSD
# define BX_PLATFORM_FREEBSD 1
#elif defined(__NetBSD__)
# undef BX_PLATFORM_NETBSD
# define BX_PLATFORM_NETBSD 1
#else
# error "BX_PLATFORM_* is not defined!"
#endif //
@ -198,6 +202,7 @@
|| BX_PLATFORM_IOS \
|| BX_PLATFORM_LINUX \
|| BX_PLATFORM_NACL \
|| BX_PLATFORM_NETBSD \
|| BX_PLATFORM_OSX \
|| BX_PLATFORM_QNX \
|| BX_PLATFORM_RPI \
@ -250,6 +255,8 @@
#elif BX_PLATFORM_NACL
# define BX_PLATFORM_NAME "NaCl " \
BX_STRINGIZE(BX_PLATFORM_NACL)
#elif BX_PLATFORM_NETBSD
# define BX_PLATFORM_NAME "NetBSD"
#elif BX_PLATFORM_OSX
# define BX_PLATFORM_NAME "OSX"
#elif BX_PLATFORM_PS4

View File

@ -38,7 +38,7 @@ CHANGE LOG
#define FALSE 0
static int time_started_flag = FALSE;
static struct timeb time_offset = {0, 0, 0, 0};
static struct timeval time_offset = {0, 0};
static pthread_t pt_thread_pid;
static int pt_thread_created = FALSE;
@ -79,7 +79,7 @@ static void *Pt_CallbackProc(void *p)
PtError Pt_Start(int resolution, PtCallback *callback, void *userData)
{
if (time_started_flag) return ptNoError;
ftime(&time_offset); /* need this set before process runs */
gettimeofday(&time_offset, NULL); /* need this set before process runs */
if (callback) {
int res;
pt_callback_parameters *parms = (pt_callback_parameters *)
@ -121,10 +121,10 @@ int Pt_Started()
PtTimestamp Pt_Time()
{
long seconds, milliseconds;
struct timeb now;
ftime(&now);
seconds = now.time - time_offset.time;
milliseconds = now.millitm - time_offset.millitm;
struct timeval now;
gettimeofday(&now, NULL);
seconds = now.tv_sec - time_offset.tv_sec;
milliseconds = now.tv_usec - time_offset.tv_usec;
return seconds * 1000 + milliseconds;
}

View File

@ -297,6 +297,10 @@ ifeq ($(TARGETOS),freebsd)
OSD := sdl
endif
ifeq ($(TARGETOS),netbsd)
OSD := sdl
endif
ifeq ($(TARGETOS),solaris)
OSD := sdl
endif
@ -1006,6 +1010,26 @@ freebsd_x86: generate $(PROJECTDIR)/gmake-freebsd/Makefile
$(SILENT) $(MAKE) -C $(PROJECTDIR)/gmake-freebsd config=$(CONFIG)32
#-------------------------------------------------
# gmake-netbsd
#-------------------------------------------------
$(PROJECTDIR)/gmake-netbsd/Makefile: makefile $(SCRIPTS) $(GENIE)
$(SILENT) $(GENIE) $(PARAMS) --gcc=netbsd --gcc_version=$(GCC_VERSION) gmake
.PHONY: netbsd_x64
netbsd_x64: generate $(PROJECTDIR)/gmake-netbsd/Makefile
$(SILENT) $(MAKE) -C $(PROJECTDIR)/gmake-netbsd config=$(CONFIG)64
.PHONY: netbsd
netbsd: netbsd_x86
.PHONY: netbsd_x86
netbsd_x86: generate $(PROJECTDIR)/gmake-netbsd/Makefile
$(SILENT) $(MAKE) -C $(PROJECTDIR)/gmake-netbsd config=$(CONFIG)32
#-------------------------------------------------
# Clean/bootstrap
#-------------------------------------------------

View File

@ -534,6 +534,13 @@ project "portmidi"
MAME_DIR .. "3rdparty/portmidi/porttime/ptlinux.c",
}
end
if _OPTIONS["targetos"]=="netbsd" then
files {
MAME_DIR .. "3rdparty/portmidi/pm_linux/pmlinux.c",
MAME_DIR .. "3rdparty/portmidi/pm_linux/finddefault.c",
MAME_DIR .. "3rdparty/portmidi/porttime/ptlinux.c",
}
end
if _OPTIONS["targetos"]=="macosx" then
files {
MAME_DIR .. "3rdparty/portmidi/pm_mac/pmmac.c",
@ -591,6 +598,11 @@ project "bgfx"
MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
}
configuration { "netbsd" }
includedirs {
MAME_DIR .. "3rdparty/bx/include/compat/freebsd",
}
configuration { "gmake" }
buildoptions {
"-Wno-uninitialized",

View File

@ -188,7 +188,19 @@ end
---------------------------------------------------
--
--@src/emu/machine/68561mpcc.h,MACHINES["68561MPCC"] = true
--@src/emu/machine/68230pit.h,MACHINES["PIT68230"] = true
---------------------------------------------------
if (MACHINES["PIT68230"]~=null) then
files {
MAME_DIR .. "src/emu/machine/68230pit.c",
MAME_DIR .. "src/emu/machine/68230pit.h",
}
end
---------------------------------------------------
--
--@src/emu/machine/68561mpcc.h,MACHINES += 68561MPCC
---------------------------------------------------
if (MACHINES["68561MPCC"]~=null) then

View File

@ -485,6 +485,7 @@ MACHINES["PCCARD"] = true
MACHINES["PCF8593"] = true
MACHINES["PCKEYBRD"] = true
MACHINES["PIC8259"] = true
MACHINES["PIT68230"] = true
MACHINES["PIT8253"] = true
MACHINES["PLA"] = true
--MACHINES["PROFILE"] = true
@ -722,6 +723,7 @@ function linkProjects_mame_mess(_target, _subtarget)
"exidy",
"fairch",
"fidelity",
"force",
"fujitsu",
"funtech",
"galaxy",
@ -1509,6 +1511,11 @@ files {
MAME_DIR .. "src/mess/drivers/fidelz80.c",
}
createMESSProjects(_target, _subtarget, "force")
files {
MAME_DIR .. "src/mess/drivers/force68k.c",
}
createMESSProjects(_target, _subtarget, "fujitsu")
files {
MAME_DIR .. "src/mess/drivers/fmtowns.c",

View File

@ -24,6 +24,7 @@ newoption {
{ "mingw-clang", "MinGW (clang compiler)" },
{ "nacl", "Native Client" },
{ "nacl-arm", "Native Client - ARM" },
{ "netbsd", "NetBSD" },
{ "osx", "OSX (GCC compiler)" },
{ "osx-clang", "OSX (Clang compiler)" },
{ "pnacl", "Native Client - PNaCl" },
@ -147,6 +148,10 @@ function toolchain(_buildDir, _subDir)
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-freebsd")
end
if "netbsd" == _OPTIONS["gcc"] then
location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-netbsd")
end
if "ios-arm" == _OPTIONS["gcc"] then
premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
@ -590,7 +595,29 @@ function toolchain(_buildDir, _subDir)
configuration { "freebsd", "x64", "Debug" }
targetdir (_buildDir .. "freebsd" .. "/bin/x64/Debug")
configuration { "netbsd", "x32" }
objdir (_buildDir .. "netbsd" .. "/obj")
buildoptions {
"-m32",
}
configuration { "netbsd", "x32", "Release" }
targetdir (_buildDir .. "netbsd" .. "/bin/x32/Release")
configuration { "netbsd", "x32", "Debug" }
targetdir (_buildDir .. "netbsd" .. "/bin/x32/Debug")
configuration { "netbsd", "x64" }
objdir (_buildDir .. "netbsd" .. "/obj")
buildoptions {
"-m64",
}
configuration { "netbsd", "x64", "Release" }
targetdir (_buildDir .. "netbsd" .. "/bin/x64/Release")
configuration { "netbsd", "x64", "Debug" }
targetdir (_buildDir .. "netbsd" .. "/bin/x64/Debug")
configuration { "android-*" }
includedirs {
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/include",

175
src/emu/machine/68230pit.c Normal file
View File

@ -0,0 +1,175 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edström
/**********************************************************************
Motorola MC68230 PI/T Parallell Interface and Timer
Revisions
2015-07-15 JLE initial
Todo
- Add clock and timers
- Add all missing registers
- Add configuration
**********************************************************************/
/*
Force CPU-1 init sequence
0801EA 0E0000 W 0000 PGCR data_w: 0000 -> 0000 & 00ff
0801EA 0E0002 W 0000 PSRR data_w: 0000 -> 0001 & 00ff
0801EA 0E0004 W FFFF PADDR data_w: 00ff -> 0002 & 00ff
0801EA 0E0006 W 0000 PBDDR data_w: 0000 -> 0003 & 00ff
0801F0 0E000C W 6060 PACR data_w: 0060 -> 0006 & 00ff
0801F6 0E000E W A0A0 PBCR data_w: 00a0 -> 0007 & 00ff
0801FC 0E0000 W 3030 PGCR data_w: 0030 -> 0000 & 00ff
080202 0E000E W A8A8 PBCR data_w: 00a8 -> 0007 & 00ff
080210 0E000E W A0A0 PBCR data_w: 00a0 -> 0007 & 00ff
Force CPU-1 after one keypress in terminal
081DC0 0E000C W 6868 PACR
081DC8 0E000C W 6060 PACR
*/
#include "emu.h"
#include "68230pit.h"
/***************************************************************************
IMPLEMENTATION
***************************************************************************/
// device type definition
const device_type PIT68230 = &device_creator<pit68230_device>;
//-------------------------------------------------
// pit68230_device - constructor
//-------------------------------------------------
pit68230_device::pit68230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, PIT68230, "Motorola 68230 PI/T", tag, owner, clock, "pit68230", __FILE__)
{
}
void pit68230_device::device_start()
{
printf("PIT68230 device started\n");
}
void pit68230_device::device_reset()
{
printf("PIT68230 device reseted\n");
m_pgcr = 0;
m_psrr = 0;
m_paddr = 0;
m_pbddr = 0;
m_pcddr = 0;
m_pacr = 0;
m_pbcr = 0;
m_padr = 0;
m_pbdr = 0;
m_psr = 0;
}
WRITE8_MEMBER( pit68230_device::data_w )
{
printf("data_w: %04x -> ", data);
switch (offset)
{
case PIT_68230_PGCR:
printf("PGCR");
m_pgcr = data;
break;
case PIT_68230_PSRR:
printf("PSRR");
m_psrr = data;
break;
case PIT_68230_PADDR:
printf("PADDR");
m_paddr = data;
break;
case PIT_68230_PBDDR:
printf("PBDDR");
m_pbddr = data;
break;
case PIT_68230_PACR:
printf("PACR");
m_pacr = data;
break;
case PIT_68230_PBCR:
printf("PBCR");
m_pbcr = data;
break;
case PIT_68230_PADR:
printf("PADR");
m_padr = data;
break;
case PIT_68230_PSR:
printf("PSR");
m_padr = data;
break;
default:
printf("unhandled register %02x", offset);
}
printf("\n");
}
READ8_MEMBER( pit68230_device::data_r )
{
UINT8 data = 0;
printf("data_r: ");
switch (offset)
{
case PIT_68230_PGCR:
printf("PGCR");
data = m_pgcr;
break;
case PIT_68230_PSRR:
printf("PSRR");
data = m_psrr;
break;
case PIT_68230_PADDR:
printf("PADDR");
data = m_paddr;
break;
case PIT_68230_PBDDR:
printf("PBDDR");
data = m_pbddr;
break;
case PIT_68230_PACR:
printf("PACR");
data = m_pacr;
break;
case PIT_68230_PBCR:
printf("PBCR");
data = m_pbcr;
break;
case PIT_68230_PADR:
printf("PADR");
data = m_padr;
break;
case PIT_68230_PBDR:
/* 4.6.2. PORT B DATA REGISTER (PBDR). The port B data register is a holding register for moving data
to and from port B pins. The port B data direction register determines whether each pin is an input (zero)
or an output (one). This register is readable and writable at all times. Depending on the chosen mode/submode,
reading or writing may affect the double-buffered handshake mechanism. The port B data register is not affected
by the assertion of the RESET pin. PB0-PB7 sits on pins 17-24 on a 48 pin DIP package */
printf("PBDR");
data = m_pbdr;
// data = (m_pbdr & 0xfc) | 1; // CPU-1 centronics interface expects to see 2 lowest bits equal 1 for printer
break;
case PIT_68230_PSR:
printf("PSR");
data = m_psr;
// data = m_psr | 1; // CPU-1 centronics interface expects status to be non zero
break;
default:
printf("unhandled register %02x", offset);
data = 0;
}
printf("\n");
return data;
}

View File

@ -0,0 +1,75 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edström
/**********************************************************************
Motorola MC68230 PI/T Parallell Interface and Timer
**********************************************************************/
#pragma once
#ifndef __68230PIT_H__
#define __68230PIT_H__
#include "emu.h"
/*-----------------------------------------------------------------------
Registers RS1-RS5 R/W Description
-------------------------------------------------------------------------*/
#define PIT_68230_PGCR 0x00 /* RW Port General Control register */
#define PIT_68230_PSRR 0x01 /* RW Port Service Request register */
#define PIT_68230_PADDR 0x02 /* RW Port A Data Direction register */
#define PIT_68230_PBDDR 0x03 /* RW Port B Data Direction register */
#define PIT_68230_PCDDR 0x04 /* RW Port C Data Direction register */
#define PIT_68230_PIVR 0x05 /* RW Port Interrupt vector register */
#define PIT_68230_PACR 0x06 /* RW Port A Control register */
#define PIT_68230_PBCR 0x07 /* RW Port B Control register */
#define PIT_68230_PADR 0x08 /* RW Port A Data register */
#define PIT_68230_PBDR 0x09 /* RW Port B Data register */
#define PIT_68230_PAAR 0x0a /* RO Port A Alternate register */
#define PIT_68230_PBAR 0x0b /* RO Port B Alternate register */
#define PIT_68230_PCDR 0x0c /* RW Port C Data register */
#define PIT_68230_PSR 0x0d /* RW Port Status register */
#define PIT_68230_TCR 0x10 /* RW Timer Control Register */
#define PIT_68230_TIVR 0x11 /* RW Timer Interrupt Vector Register */
#define PIT_68230_CPRH 0x13 /* RW Counter Preload Register High */
#define PIT_68230_CPRM 0x14 /* RW Counter Preload Register Middle */
#define PIT_68230_CPRL 0x15 /* RW Counter Preload Register Low */
#define PIT_68230_CNTRH 0x17 /* RO Counter Register High */
#define PIT_68230_CNTRM 0x18 /* RO Counter Register Middle */
#define PIT_68230_CNTRL 0x19 /* RO Counter Register Low */
#define PIT_68230_TSR 0x1A /* RW Timer Status Register */
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
class pit68230_device : public device_t
{
public:
// construction/destruction
pit68230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
DECLARE_WRITE8_MEMBER( data_w );
DECLARE_READ8_MEMBER( data_r );
protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
private:
UINT8 m_pgcr; // Port General Control register
UINT8 m_psrr; // Port Service Request register
UINT8 m_paddr; // Port A Data Direction register
UINT8 m_pbddr; // Port B Data Direction register
UINT8 m_pcddr; // Port C Data Direction register
UINT8 m_pacr; // Port A Control register
UINT8 m_pbcr; // Port B Control register
UINT8 m_padr; // Port A Data register
UINT8 m_pbdr; // Port B Data register
UINT8 m_psr; // Port Status Register
};
// device type definition
extern const device_type PIT68230;
#endif // __68230PIT__

View File

@ -134,6 +134,26 @@ void c140_device::device_start()
/* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
m_mixer_buffer_left = auto_alloc_array(machine(), INT16, 2 * m_sample_rate);
m_mixer_buffer_right = m_mixer_buffer_left + m_sample_rate;
save_item(NAME(m_REG));
for (int i = 0; i < C140_MAX_VOICE; i++)
{
save_item(NAME(m_voi[i].ptoffset), i);
save_item(NAME(m_voi[i].pos), i);
save_item(NAME(m_voi[i].key), i);
save_item(NAME(m_voi[i].lastdt), i);
save_item(NAME(m_voi[i].prevdt), i);
save_item(NAME(m_voi[i].dltdt), i);
save_item(NAME(m_voi[i].rvol), i);
save_item(NAME(m_voi[i].lvol), i);
save_item(NAME(m_voi[i].frequency), i);
save_item(NAME(m_voi[i].bank), i);
save_item(NAME(m_voi[i].mode), i);
save_item(NAME(m_voi[i].sample_start), i);
save_item(NAME(m_voi[i].sample_end), i);
save_item(NAME(m_voi[i].sample_loop), i);
}
}

View File

@ -51,23 +51,23 @@ struct C140_VOICE
sample_end(0),
sample_loop(0) {}
long ptoffset;
long pos;
long key;
INT32 ptoffset;
INT32 pos;
INT32 key;
//--work
long lastdt;
long prevdt;
long dltdt;
INT32 lastdt;
INT32 prevdt;
INT32 dltdt;
//--reg
long rvol;
long lvol;
long frequency;
long bank;
long mode;
INT32 rvol;
INT32 lvol;
INT32 frequency;
INT32 bank;
INT32 mode;
long sample_start;
long sample_end;
long sample_loop;
INT32 sample_start;
INT32 sample_end;
INT32 sample_loop;
};

View File

@ -3279,6 +3279,7 @@ megamana // 06/10/1995 (c) 1995 (Asia)
rockmanj // 22/09/1995 (c) 1995 (Japan)
fcrash // bootleg of Final Fight
ffightbl // bootleg
ffightbla // bootleg
ganbare // 11/04/2000 (c) 2000 (Japan)
@ -4688,6 +4689,7 @@ passht4b // bootleg
passshtb // bootleg
shinoblb // (c) 1987 (but bootleg)
shinobld // (c) 1987 (but bootleg)
shinoblda //
tetrisbl // (c) 1988 (but bootleg)
beautyb // (c) 1991 AMT
iqpipe // (c) 1991 AMT
@ -6020,7 +6022,8 @@ secretab // bootleg
midres // (c) 1989 Data East Corporation (World)
midresu // (c) 1989 Data East USA (US)
midresj // (c) 1989 Data East Corporation (Japan)
midresb // (c) 1989 Data East Corporation (Japan)
midresb // bootleg
midresbj // bootleg
bouldash // (c) 1990 Data East Corporation (World)
bouldashj // (c) 1990 Data East Corporation (Japan)
// end of similar hardware

View File

@ -168,6 +168,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(_1942_state::c1942_scanline)
}
static ADDRESS_MAP_START( c1942_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
@ -203,6 +205,12 @@ WRITE8_MEMBER(_1942_state::c1942p_palette_w)
m_palette->set_indirect_color(offset, rgb_t(r<<5,g<<5,b<<6));
}
WRITE8_MEMBER(_1942_state::c1942p_soundlatch_w)
{
soundlatch_byte_w(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
static ADDRESS_MAP_START( c1942p_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
@ -221,7 +229,7 @@ static ADDRESS_MAP_START( c1942p_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_WRITE(c1942p_palette_w) AM_SHARE("protopal")
AM_RANGE(0xf400, 0xf400) AM_WRITE(c1942_bankswitch_w)
AM_RANGE(0xf500, 0xf500) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xf500, 0xf500) AM_WRITE(c1942p_soundlatch_w)
AM_RANGE(0xf600, 0xf600) AM_WRITE(c1942p_f600_w)
AM_RANGE(0xf700, 0xf700) AM_READ_PORT("DSWA")
@ -231,6 +239,23 @@ static ADDRESS_MAP_START( c1942p_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0xf704, 0xf704) AM_READ_PORT("P2")
ADDRESS_MAP_END
static ADDRESS_MAP_START(c1942p_sound_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( c1942p_sound_io, AS_IO, 8, _1942_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x0000, 0x0000) AM_WRITENOP
AM_RANGE(0x0014, 0x0015) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
AM_RANGE(0x0018, 0x0019) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM
@ -600,7 +625,8 @@ static MACHINE_CONFIG_START( 1942p, _1942_state )
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", _1942_state, c1942_scanline, "screen", 0, 1)
MCFG_CPU_ADD("audiocpu", Z80, SOUND_CPU_CLOCK) /* 3 MHz ??? */
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_CPU_PROGRAM_MAP(c1942p_sound_map)
MCFG_CPU_IO_MAP(c1942p_sound_io)
MCFG_CPU_PERIODIC_INT_DRIVER(_1942_state, irq0_line_hold, 4*60)
@ -891,8 +917,7 @@ ROM_START( 1942p )
ROM_LOAD( "3.bin", 0x14000, 0x4000, CRC(108fda63) SHA1(6ffdf57a04bcfae9fdb2343f30cff50926188cbf) ) // sldh
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "snd.bin", 0x0000, 0x4000, BAD_DUMP CRC(43d6df9f) SHA1(c34579c73faa7e9552a6721ef8050b33ca158588) ) // sldh - looks bad, window was smashed, likely dead.
ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) ) // works but we can't be 100% sure it was the same.
ROM_LOAD( "04.bin", 0x0000, 0x4000, CRC(b4efd1af) SHA1(015b687b1714f892c3b2528bceb2df8ca48b6b8e) )
ROM_REGION( 0x2000, "gfx1", ROMREGION_INVERT )
ROM_LOAD( "8.bin", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) ) /* characters */ // sldh
@ -926,4 +951,4 @@ GAME( 1984, 1942abl, 1942, 1942, 1942, _1942_state, 1942, ROT270, "bootleg", "1
GAME( 198?, 1942h, 1942, 1942, 1942, _1942_state, 1942, ROT270, "hack (Two Bit Score?)", "42", GAME_SUPPORTS_SAVE )
GAME( 1984, 1942b, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Capcom", "1942 (First Version)", GAME_SUPPORTS_SAVE )
GAME( 1985, 1942w, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Capcom (Williams Electronics license)", "1942 (Williams Electronics license)", GAME_SUPPORTS_SAVE ) /* Based on 1942 (Revision B) */
GAME( 1984, 1942p, 1942, 1942p,1942p,_1942_state, 1942, ROT270, "Capcom", "1942 (prototype)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1984, 1942p, 1942, 1942p,1942p,_1942_state, 1942, ROT270, "bootleg", "1942 (Tecfri PCB, bootleg?)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )

View File

@ -2941,6 +2941,53 @@ ROM_START( midresb )
ROM_END
ROM_START( midresbj )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "14", 0x00000, 0x10000, CRC(6b3bc886) SHA1(998ef6ae89565148bcb8909f21acbec378ed5f4f) )
ROM_LOAD16_BYTE( "11", 0x00001, 0x10000, CRC(9b6faab3) SHA1(b60e41972f52df910bfa09accd5fde7d858b55bf) )
ROM_LOAD16_BYTE( "13", 0x20000, 0x10000, CRC(d1bb2cd6) SHA1(6d4afd8dd8c4c3e90de199358da27108286637e2) )
ROM_LOAD16_BYTE( "10", 0x20001, 0x10000, CRC(42ccdd0d) SHA1(ef17cc984a8d57e9c52877f4e9b78e9976f99033) )
ROM_LOAD16_BYTE( "12", 0x40000, 0x10000, CRC(258b10b2) SHA1(f0849801ab2c72bc6e929b230d0c6d41823f18ae) )
ROM_LOAD16_BYTE( "9", 0x40001, 0x10000, CRC(dd6985d5) SHA1(bd58a1da2c5152464d7660f5b931d6257cb87c4e) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 6502 sound */
ROM_LOAD( "15", 0x0000, 0x10000, CRC(99d47166) SHA1(a9a1adfe47be8dd3e4d6f8c783447e09be1747b2) )
ROM_REGION( 0x10000, "cpu2", ROMREGION_ERASE00 ) /* 68705 MCU */
//ROM_LOAD( "68705r3.bin", 0x00000, 0x1000, CRC(ad5b1c13) SHA1(3616dc5969323a54e3e171d169f76250ae4e711a) ) // unpopulated socket
ROM_REGION( 0x20000, "gfx1", 0 ) /* chars */
ROM_LOAD( "23", 0x08000, 0x08000, CRC(d75aba06) SHA1(cb3b969db3dd8e0c5c3729482f7461cde3a961f3) )
ROM_CONTINUE( 0x00000, 0x08000 ) /* the two halves are swapped */
ROM_LOAD( "24", 0x18000, 0x08000, CRC(8f5bbb79) SHA1(cb10f68787606111ba5e9967bf0b0cd21269a902) )
ROM_CONTINUE( 0x10000, 0x08000 )
ROM_REGION( 0x80000, "gfx2", 0 ) /* tiles */
ROM_LOAD( "19", 0x00000, 0x20000, CRC(fd9ba1bd) SHA1(a105a4335eeed19662c89ab0f90485f1029cf03f) )
ROM_LOAD( "18", 0x20000, 0x20000, CRC(a936c03c) SHA1(293e69874ce9b2dfb1d605c9f988fa736b12bbcf) )
ROM_LOAD( "20", 0x40000, 0x20000, CRC(4d8e3cf1) SHA1(db804a608f6ba9ce4cedfec2581bcbb00de3f2ba) )
ROM_LOAD( "17", 0x60000, 0x20000, CRC(b7241ab9) SHA1(3e83f9285ff4c476f1287bf73b514eace482dccc) )
ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */
ROM_LOAD( "22", 0x10000, 0x10000, CRC(35a54bb4) SHA1(1869eb77a060e9df42b761b02e7fa5ecb7c414d1) )
ROM_CONTINUE(0x00000,0x10000)
ROM_LOAD( "21", 0x30000, 0x10000, CRC(4b9227b3) SHA1(7059f2d07fffa0468a45a42b87bf561da5e9c5a4) )
ROM_CONTINUE(0x20000,0x10000)
ROM_REGION( 0x80000, "gfx4", 0 ) /* sprites */
ROM_LOAD( "4", 0x00000, 0x10000, CRC(3f499acb) SHA1(1a22cfeed0497ddc2d571114d9f246b3ae18ede9) )
ROM_LOAD( "8", 0x10000, 0x10000, CRC(5e7a6800) SHA1(8dd5c9005b6804a30627644053f14e4477fe0074) )
ROM_LOAD( "2", 0x20000, 0x10000, CRC(897ba6e4) SHA1(70fd9cba3922751cb317770d6effdc2fb94c1324) )
ROM_LOAD( "6", 0x30000, 0x10000, CRC(9fefb810) SHA1(863a81540261e78de5c612dea807ba29b12054d4) )
ROM_LOAD( "3", 0x40000, 0x10000, CRC(ebafe720) SHA1(b9f76d2f1b59f1d028e6156b831c5c8ada033641) )
ROM_LOAD( "7", 0x50000, 0x10000, CRC(bb8cf641) SHA1(a22e47a15d38d4f33e5a2c90f3a90a16a4231d2c) ) // slight changes, check (equivalent to 3.bin in above)
ROM_LOAD( "1", 0x60000, 0x10000, CRC(fd0bd8d3) SHA1(d6b19869ddc2a8ed4f38ba9d613b71853f2d13c0) )
ROM_LOAD( "5", 0x70000, 0x10000, CRC(fc46d5ed) SHA1(20ddf3f67f0dfb222ad8d3fd464b892ec9c9e4f5) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "16", 0x00000, 0x10000, CRC(ccf24b52) SHA1(39b2663c548b30684197284cb8e7a6ca803330c9))
ROM_END
ROM_START( bouldash )
ROM_REGION( 0x60000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "fw-15-2.17l", 0x00000, 0x10000, CRC(ca19a967) SHA1(b9dc2b1323f19b6239e550ed020943bf13de8db0) )
@ -3082,7 +3129,8 @@ GAME( 1988, robocopb, robocop, robocopb, robocop, dec0_state, robocop, ROT0
GAME( 1988, drgninjab, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "bootleg", "Dragonninja (bootleg)", GAME_SUPPORTS_SAVE )
// this is a common bootleg board
GAME( 1989, midresb, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (bootleg with 68705)", GAME_SUPPORTS_SAVE ) // need to hook up 68705?
GAME( 1989, midresb, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (bootleg with 68705)", GAME_SUPPORTS_SAVE ) // need to hook up 68705? (probably unused)
GAME( 1989, midresbj, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (Joystick bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1989, ffantasybl, hippodrm, ffantasybl, ffantasybl, dec0_state, ffantasybl, ROT0, "bootleg", "Fighting Fantasy (bootleg with 68705)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 68705 not dumped, might be the same as midresb
/* A Bad Dudes bootleg with 68705 like the midres and ffantasy ones exists, but is not dumped */

View File

@ -29,13 +29,19 @@ public:
destroyr_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_alpha_num_ram(*this, "alpha_nuram"),
m_major_obj_ram(*this, "major_obj_ram"),
m_minor_obj_ram(*this, "minor_obj_ram"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_alpha_num_ram(*this, "alpha_nuram"),
m_major_obj_ram(*this, "major_obj_ram"),
m_minor_obj_ram(*this, "minor_obj_ram") { }
/* devices */
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
/* memory pointers */
required_shared_ptr<UINT8> m_alpha_num_ram;
@ -52,32 +58,31 @@ public:
int m_attract;
int m_motor_speed;
int m_noise;
emu_timer *m_dial_timer;
emu_timer *m_frame_timer;
/* devices */
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
DECLARE_WRITE8_MEMBER(misc_w);
DECLARE_WRITE8_MEMBER(cursor_load_w);
DECLARE_WRITE8_MEMBER(interrupt_ack_w);
DECLARE_WRITE8_MEMBER(output_w);
DECLARE_READ8_MEMBER(input_r);
DECLARE_READ8_MEMBER(scanline_r);
DECLARE_WRITE8_MEMBER(destroyr_misc_w);
DECLARE_WRITE8_MEMBER(destroyr_cursor_load_w);
DECLARE_WRITE8_MEMBER(destroyr_interrupt_ack_w);
DECLARE_WRITE8_MEMBER(destroyr_output_w);
DECLARE_READ8_MEMBER(destroyr_input_r);
DECLARE_READ8_MEMBER(destroyr_scanline_r);
virtual void machine_start();
virtual void machine_reset();
DECLARE_PALETTE_INIT(destroyr);
UINT32 screen_update_destroyr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(destroyr_dial_callback);
TIMER_CALLBACK_MEMBER(destroyr_frame_callback);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(dial_callback);
TIMER_CALLBACK_MEMBER(frame_callback);
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
};
UINT32 destroyr_state::screen_update_destroyr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 destroyr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i, j;
@ -149,10 +154,10 @@ void destroyr_state::device_timer(emu_timer &timer, device_timer_id id, int para
switch (id)
{
case TIMER_DESTROYR_DIAL:
destroyr_dial_callback(ptr, param);
dial_callback(ptr, param);
break;
case TIMER_DESTROYR_FRAME:
destroyr_frame_callback(ptr, param);
frame_callback(ptr, param);
break;
default:
assert_always(FALSE, "Unknown id in destroyr_state::device_timer");
@ -160,7 +165,7 @@ void destroyr_state::device_timer(emu_timer &timer, device_timer_id id, int para
}
TIMER_CALLBACK_MEMBER(destroyr_state::destroyr_dial_callback)
TIMER_CALLBACK_MEMBER(destroyr_state::dial_callback)
{
int dial = param;
@ -180,14 +185,14 @@ TIMER_CALLBACK_MEMBER(destroyr_state::destroyr_dial_callback)
}
TIMER_CALLBACK_MEMBER(destroyr_state::destroyr_frame_callback)
TIMER_CALLBACK_MEMBER(destroyr_state::frame_callback)
{
m_potsense[0] = 0;
m_potsense[1] = 0;
/* PCB supports two dials, but cab has only got one */
timer_set(m_screen->time_until_pos(ioport("PADDLE")->read()), TIMER_DESTROYR_DIAL);
timer_set(m_screen->time_until_pos(0), TIMER_DESTROYR_FRAME);
m_dial_timer->adjust(m_screen->time_until_pos(ioport("PADDLE")->read()));
m_frame_timer->adjust(m_screen->time_until_pos(0));
}
@ -207,7 +212,7 @@ void destroyr_state::machine_reset()
}
WRITE8_MEMBER(destroyr_state::destroyr_misc_w)
WRITE8_MEMBER(destroyr_state::misc_w)
{
/* bits 0 to 2 connect to the sound circuits */
m_attract = data & 0x01;
@ -222,22 +227,22 @@ WRITE8_MEMBER(destroyr_state::destroyr_misc_w)
}
WRITE8_MEMBER(destroyr_state::destroyr_cursor_load_w)
WRITE8_MEMBER(destroyr_state::cursor_load_w)
{
m_cursor = data;
watchdog_reset_w(space, offset, data);
}
WRITE8_MEMBER(destroyr_state::destroyr_interrupt_ack_w)
WRITE8_MEMBER(destroyr_state::interrupt_ack_w)
{
m_maincpu->set_input_line(0, CLEAR_LINE);
}
WRITE8_MEMBER(destroyr_state::destroyr_output_w)
WRITE8_MEMBER(destroyr_state::output_w)
{
if (offset & 8) destroyr_misc_w(space, 8, data);
if (offset & 8) misc_w(space, 8, data);
else switch (offset & 7)
{
@ -269,7 +274,7 @@ WRITE8_MEMBER(destroyr_state::destroyr_output_w)
}
READ8_MEMBER(destroyr_state::destroyr_input_r)
READ8_MEMBER(destroyr_state::input_r)
{
if (offset & 1)
{
@ -290,7 +295,7 @@ READ8_MEMBER(destroyr_state::destroyr_input_r)
}
READ8_MEMBER(destroyr_state::destroyr_scanline_r)
READ8_MEMBER(destroyr_state::scanline_r)
{
return m_screen->vpos();
}
@ -299,14 +304,14 @@ READ8_MEMBER(destroyr_state::destroyr_scanline_r)
static ADDRESS_MAP_START( destroyr_map, AS_PROGRAM, 8, destroyr_state )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0xf00) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_READWRITE(destroyr_input_r, destroyr_output_w)
AM_RANGE(0x1000, 0x1fff) AM_READWRITE(input_r, output_w)
AM_RANGE(0x2000, 0x2fff) AM_READ_PORT("IN2")
AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0xf00) AM_WRITEONLY AM_SHARE("alpha_nuram")
AM_RANGE(0x4000, 0x401f) AM_MIRROR(0xfe0) AM_WRITEONLY AM_SHARE("major_obj_ram")
AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xff8) AM_WRITE(destroyr_cursor_load_w)
AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xff8) AM_WRITE(destroyr_interrupt_ack_w)
AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xff8) AM_WRITE(cursor_load_w)
AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xff8) AM_WRITE(interrupt_ack_w)
AM_RANGE(0x5002, 0x5007) AM_MIRROR(0xff8) AM_WRITEONLY AM_SHARE("minor_obj_ram")
AM_RANGE(0x6000, 0x6fff) AM_READ(destroyr_scanline_r)
AM_RANGE(0x6000, 0x6fff) AM_READ(scanline_r)
AM_RANGE(0x7000, 0x7fff) AM_ROM
ADDRESS_MAP_END
@ -469,6 +474,9 @@ PALETTE_INIT_MEMBER(destroyr_state, destroyr)
void destroyr_state::machine_start()
{
m_dial_timer = timer_alloc(TIMER_DESTROYR_DIAL);
m_frame_timer = timer_alloc(TIMER_DESTROYR_FRAME);
save_item(NAME(m_cursor));
save_item(NAME(m_wavemod));
save_item(NAME(m_attract));
@ -491,7 +499,7 @@ static MACHINE_CONFIG_START( destroyr, destroyr_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(destroyr_state, screen_update_destroyr)
MCFG_SCREEN_UPDATE_DRIVER(destroyr_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", destroyr)
@ -552,5 +560,5 @@ ROM_START( destroyr1 )
ROM_END
GAMEL( 1977, destroyr, 0, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O2)", GAME_NO_SOUND, layout_destroyr )
GAMEL( 1977, destroyr1, destroyr, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O1)", GAME_NO_SOUND, layout_destroyr )
GAMEL( 1977, destroyr, 0, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O2)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_destroyr )
GAMEL( 1977, destroyr1, destroyr, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O1)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_destroyr )

View File

@ -1782,10 +1782,10 @@ ROM_START( fcrash )
ROMX_LOAD( "12.bin", 0x080001, 0x20000, CRC(25055642) SHA1(578cf6a436489cc1f2d1acdb0cba6c1cbee2e21f) , ROM_SKIP(3) )
ROMX_LOAD( "14.bin", 0x080002, 0x20000, CRC(b77d0328) SHA1(42eb1ebfda301f2b09f3add5932e8331f4790706) , ROM_SKIP(3) )
ROMX_LOAD( "16.bin", 0x080003, 0x20000, CRC(ea111a79) SHA1(1b86aa984d2d6c527e96b61274a82263f34d0d89) , ROM_SKIP(3) )
ROMX_LOAD( "19.bin", 0x100000, 0x20000, CRC(b3aa1f48) SHA1(411f3855739992f5967e915f2a5255afcedeac2e) , ROM_SKIP(3) )
ROMX_LOAD( "21.bin", 0x100001, 0x20000, CRC(04d175c9) SHA1(33e6e3fefae4e3977c8c954fbd7feff36e92d723) , ROM_SKIP(3) )
ROMX_LOAD( "23.bin", 0x100002, 0x20000, CRC(e592ba4f) SHA1(62559481e0da3954a90da0ab0fb51f87f1b3dd9d) , ROM_SKIP(3) )
ROMX_LOAD( "25.bin", 0x100003, 0x20000, CRC(b89a740f) SHA1(516d73c772e0a904dfb0bd84874919d78bbbd200) , ROM_SKIP(3) )
ROMX_LOAD( "19.bin", 0x100000, 0x20000, CRC(b3aa1f48) SHA1(411f3855739992f5967e915f2a5255afcedeac2e) , ROM_SKIP(3) ) // only these 4 differ from ffightbla (new title logo)
ROMX_LOAD( "21.bin", 0x100001, 0x20000, CRC(04d175c9) SHA1(33e6e3fefae4e3977c8c954fbd7feff36e92d723) , ROM_SKIP(3) ) // ^
ROMX_LOAD( "23.bin", 0x100002, 0x20000, CRC(e592ba4f) SHA1(62559481e0da3954a90da0ab0fb51f87f1b3dd9d) , ROM_SKIP(3) ) // ^
ROMX_LOAD( "25.bin", 0x100003, 0x20000, CRC(b89a740f) SHA1(516d73c772e0a904dfb0bd84874919d78bbbd200) , ROM_SKIP(3) ) // ^
ROMX_LOAD( "11.bin", 0x180000, 0x20000, CRC(d4457a60) SHA1(9e956efafa81a81aca92837df03968f5670ffc15) , ROM_SKIP(3) )
ROMX_LOAD( "13.bin", 0x180001, 0x20000, CRC(3b26a37d) SHA1(58d8d0cdef81c938fb1a5595f2d02b228865893b) , ROM_SKIP(3) )
ROMX_LOAD( "15.bin", 0x180002, 0x20000, CRC(6d837e09) SHA1(b4a133ab96c35b689ee692bfcc04981791099b6f) , ROM_SKIP(3) )
@ -1814,7 +1814,46 @@ ROM_START( ffightbl )
ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
ROM_END
// this is identical to the Final Crash bootleg but without the modified gfx.
// it's less common than Final Crash, but is either the original bootleg, or the bootleggers wanted to restore the
// original title.
ROM_START( ffightbla )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "9.bin", 0x00000, 0x20000, CRC(c6854c91) SHA1(29f01cc65be5eaa3f86e99eebdd284104623abb0) )
ROM_LOAD16_BYTE( "5.bin", 0x00001, 0x20000, CRC(77f7c2b3) SHA1(feea48d9555824a2e5bf5e99ce159edc015f0792) )
ROM_LOAD16_BYTE( "8.bin", 0x40000, 0x20000, CRC(1895b3df) SHA1(415a26050c50ed79a7ee5ddd1b8d61593b1ce876) )
ROM_LOAD16_BYTE( "4.bin", 0x40001, 0x20000, CRC(bbd411ee) SHA1(85d50ca72ec46d627f9c88ff0809aa30e164821a) )
ROM_LOAD16_BYTE( "7.bin", 0x80000, 0x20000, CRC(5b23ebf2) SHA1(8c28c21a72a28ad249170026891c6bb865943f84) )
ROM_LOAD16_BYTE( "3.bin", 0x80001, 0x20000, CRC(aba2aebe) SHA1(294109b5929ed63859a55bef16643e3ade7da16f) )
ROM_LOAD16_BYTE( "6.bin", 0xc0000, 0x20000, CRC(d4bf37f6) SHA1(f47e1cc9aa3b3019ee57f59715e3a611acf9fe3e) )
ROM_LOAD16_BYTE( "2.bin", 0xc0001, 0x20000, CRC(07ac8f43) SHA1(7a41b003c76adaabd3f94929cc163461b70e0ed9) )
//ROM_FILL(0x2610, 1, 7) // temporary patch to fix transitions
ROM_REGION( 0x30000, "audiocpu", 0 ) /* Audio CPU + Sample Data */
ROM_LOAD( "1.bin", 0x00000, 0x20000, CRC(5b276c14) SHA1(73e53c077d4e3c1b919eee28b29e34176ee204f8) )
ROM_RELOAD( 0x10000, 0x20000 )
ROM_REGION( 0x200000, "gfx", 0 )
ROMX_LOAD( "18.bin", 0x000000, 0x20000, CRC(f1eee6d9) SHA1(bee95efbff49c582cff1cc6d9bb5ef4ea5c4a074) , ROM_SKIP(3) )
ROMX_LOAD( "20.bin", 0x000001, 0x20000, CRC(675f4537) SHA1(acc68822da3aafbb62f76cbffa5f3389fcc91447) , ROM_SKIP(3) )
ROMX_LOAD( "22.bin", 0x000002, 0x20000, CRC(db8a32ac) SHA1(b95f73dff291acee239e22e5fd7efe15d0de23be) , ROM_SKIP(3) )
ROMX_LOAD( "24.bin", 0x000003, 0x20000, CRC(f4113e57) SHA1(ff1f443c13494a169b9be24abc361d27a6d01c09) , ROM_SKIP(3) )
ROMX_LOAD( "10.bin", 0x080000, 0x20000, CRC(d478853e) SHA1(91fcf8eb022ccea66d291bec84ace557181cf861) , ROM_SKIP(3) )
ROMX_LOAD( "12.bin", 0x080001, 0x20000, CRC(25055642) SHA1(578cf6a436489cc1f2d1acdb0cba6c1cbee2e21f) , ROM_SKIP(3) )
ROMX_LOAD( "14.bin", 0x080002, 0x20000, CRC(b77d0328) SHA1(42eb1ebfda301f2b09f3add5932e8331f4790706) , ROM_SKIP(3) )
ROMX_LOAD( "16.bin", 0x080003, 0x20000, CRC(ea111a79) SHA1(1b86aa984d2d6c527e96b61274a82263f34d0d89) , ROM_SKIP(3) )
ROMX_LOAD( "ff-19.bin", 0x100000, 0x20000, CRC(7bc03747) SHA1(6964e5c562d6af5b4327ff828f3d0522c34911bc) , ROM_SKIP(3) ) // only these 4 differ from fcrash
ROMX_LOAD( "ff-21.bin", 0x100001, 0x20000, CRC(0c248e2b) SHA1(28731fe25a8eb39c1e0822cf9074a7a32c6b2978) , ROM_SKIP(3) ) // ^
ROMX_LOAD( "ff-23.bin", 0x100002, 0x20000, CRC(53949d0e) SHA1(1b11134005a47c323917b9892fe44819c36c6ee2) , ROM_SKIP(3) ) // ^
ROMX_LOAD( "ff-25.bin", 0x100003, 0x20000, CRC(8d34a67d) SHA1(69e9f52efb73952313848a6d54dbdc17a2275c59) , ROM_SKIP(3) ) // ^
ROMX_LOAD( "11.bin", 0x180000, 0x20000, CRC(d4457a60) SHA1(9e956efafa81a81aca92837df03968f5670ffc15) , ROM_SKIP(3) )
ROMX_LOAD( "13.bin", 0x180001, 0x20000, CRC(3b26a37d) SHA1(58d8d0cdef81c938fb1a5595f2d02b228865893b) , ROM_SKIP(3) )
ROMX_LOAD( "15.bin", 0x180002, 0x20000, CRC(6d837e09) SHA1(b4a133ab96c35b689ee692bfcc04981791099b6f) , ROM_SKIP(3) )
ROMX_LOAD( "17.bin", 0x180003, 0x20000, CRC(c59a4d6c) SHA1(59e49c7d24dd333007de4bb621050011a5392bcc) , ROM_SKIP(3) )
ROM_REGION( 0x8000, "gfx2", 0 )
ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
ROM_END
@ -2903,6 +2942,7 @@ GAME( 1993, dinopic2, dino, dinopic, dino, cps_state, dinopic, ROT0,
GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE )
GAME( 1990, ffightbl, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg", "Final Fight (bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1990, ffightbla, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg", "Final Fight (bootleg on Final Crash PCB)", GAME_SUPPORTS_SAVE ) // same as Final Crash without the modified gfx
GAME( 1991, kodb, kod, kodb, kodb, cps_state, kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 910731 "ETC"
GAME( 1991, knightsb, knights, knightsb, knights, cps_state, dinopic, ROT0, "bootleg", "Knights of the Round (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 911127 - based on World version

View File

@ -2033,6 +2033,9 @@ GAME( 1987, stargrds, 0, mono_sg, stargrds, mcr3_state, stargrds, ROT0,
/* MCR scrolling games */
GAMEL(1983, spyhunt, 0, mcrsc_csd, spyhunt, mcr3_state, spyhunt, ROT90, "Bally Midway", "Spy Hunter", GAME_SUPPORTS_SAVE, layout_spyhunt )
GAMEL(1983, spyhuntp, spyhunt, mcrsc_csd, spyhunt, mcr3_state, spyhunt, ROT90, "Bally Midway (Playtronic license)", "Spy Hunter (Playtronic license)", GAME_SUPPORTS_SAVE, layout_spyhunt )
GAME (1983, spyhuntpr,spyhunt, spyhuntpr, spyhuntpr,mcr3_state, spyhuntpr,ROT90, "Bally Midway (Recreativos Franco S.A. license)", "Spy Hunter (Spain, Recreativos Franco S.A. PCB)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // PCB made by Recreativos Franco S.A. in Spain, has Bally Midway logo, board is dated '85' so seems to be a low-cost rebuild? it is unclear if it made it to market.
GAME( 1984, crater, 0, mcrscroll, crater, mcr3_state, crater, ORIENTATION_FLIP_X, "Bally Midway", "Crater Raider", GAME_SUPPORTS_SAVE )
GAMEL(1985, turbotag, 0, mcrsc_csd, turbotag, mcr3_state, turbotag, ROT90, "Bally Midway", "Turbo Tag (prototype)", GAME_SUPPORTS_SAVE, layout_turbotag )
// very different hardware, probably bootleg despite the license text printed on the PCB, similar to '1942p' in 1942.c. Probably should be put in separate driver.
// PCB made by Tecfri for Recreativos Franco S.A. in Spain, has Bally Midway logo, and licensing text on the PCB. Board is dated '85' so seems to be a low-cost rebuild? it is unclear if it made it to market.
GAME (1983, spyhuntpr,spyhunt, spyhuntpr, spyhuntpr,mcr3_state, spyhuntpr,ROT90, "Bally Midway (Recreativos Franco S.A. license)", "Spy Hunter (Spain, Tecfri / Recreativos Franco S.A. PCB)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )

View File

@ -319,15 +319,15 @@ int namcona1_state::transfer_dword( UINT32 dest, UINT32 source )
}
if( dest>=0xf00000 && dest<0xf02000 )
{
namcona1_paletteram_w(space, (dest-0xf00000)/2, data, 0xffff );
paletteram_w(space, (dest-0xf00000)/2, data, 0xffff );
}
else if( dest>=0xf40000 && dest<0xf80000 )
{
namcona1_gfxram_w(space, (dest-0xf40000)/2, data, 0xffff );
gfxram_w(space, (dest-0xf40000)/2, data, 0xffff );
}
else if( dest>=0xff0000 && dest<0xffc000 )
{
namcona1_videoram_w(space, (dest-0xff0000)/2, data, 0xffff );
videoram_w(space, (dest-0xff0000)/2, data, 0xffff );
}
else if( dest>=0xfff000 && dest<0x1000000 )
{
@ -412,7 +412,7 @@ static void blit_setup( int format, int *bytes_per_row, int *pitch, int mode )
}
} /* blit_setup */
void namcona1_state::namcona1_blit()
void namcona1_state::blit()
{
int src0 = m_vreg[0x0];
int src1 = m_vreg[0x1];
@ -487,16 +487,16 @@ void namcona1_state::namcona1_blit()
src_offset = 0;
}
}
} /* namcona1_blit */
} /* blit */
WRITE16_MEMBER(namcona1_state::namcona1_vreg_w)
WRITE16_MEMBER(namcona1_state::vreg_w)
{
COMBINE_DATA( &m_vreg[offset] );
switch( offset )
{
case 0x18/2:
namcona1_blit();
blit();
/* see also 0x1e */
break;
@ -505,7 +505,7 @@ WRITE16_MEMBER(namcona1_state::namcona1_vreg_w)
/* interrupt enable mask; 0 enables INT level */
break;
}
} /* namcona1_vreg_w */
} /* vreg_w */
/***************************************************************/
@ -546,10 +546,10 @@ static ADDRESS_MAP_START( namcona1_main_map, AS_PROGRAM, 16, namcona1_state )
AM_RANGE(0xc00000, 0xdfffff) AM_ROM AM_REGION("maincpu", 0) // code
AM_RANGE(0xe00000, 0xe00fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff)
AM_RANGE(0xe40000, 0xe4000f) AM_READWRITE(custom_key_r, custom_key_w)
AM_RANGE(0xefff00, 0xefffff) AM_RAM_WRITE(namcona1_vreg_w) AM_SHARE("vreg")
AM_RANGE(0xf00000, 0xf01fff) AM_RAM_WRITE(namcona1_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xf40000, 0xf7ffff) AM_READWRITE(namcona1_gfxram_r, namcona1_gfxram_w) AM_SHARE("cgram")
AM_RANGE(0xff0000, 0xffbfff) AM_RAM_WRITE(namcona1_videoram_w) AM_SHARE("videoram")
AM_RANGE(0xefff00, 0xefffff) AM_RAM_WRITE(vreg_w) AM_SHARE("vreg")
AM_RANGE(0xf00000, 0xf01fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xf40000, 0xf7ffff) AM_READWRITE(gfxram_r, gfxram_w) AM_SHARE("cgram")
AM_RANGE(0xff0000, 0xffbfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
AM_RANGE(0xffd000, 0xffdfff) AM_RAM /* unknown */
AM_RANGE(0xffe000, 0xffefff) AM_RAM AM_SHARE("scroll") /* scroll registers */
AM_RANGE(0xfff000, 0xffffff) AM_RAM AM_SHARE("spriteram") /* spriteram */
@ -694,6 +694,14 @@ void namcona1_state::machine_start()
m_maskrom = (UINT16 *)memregion("maskrom")->base();
m_mEnableInterrupts = 0;
m_c140->set_base(m_workram);
save_item(NAME(m_mEnableInterrupts));
save_item(NAME(m_count));
save_item(NAME(m_mcu_mailbox));
save_item(NAME(m_mcu_port4));
save_item(NAME(m_mcu_port5));
save_item(NAME(m_mcu_port6));
save_item(NAME(m_mcu_port8));
}
// the MCU boots the 68000
@ -893,7 +901,7 @@ GFXDECODE_END
// IRQ 1 =>
// IRQ 2 =>
TIMER_DEVICE_CALLBACK_MEMBER(namcona1_state::namcona1_interrupt)
TIMER_DEVICE_CALLBACK_MEMBER(namcona1_state::interrupt)
{
int scanline = param;
int enabled = m_mEnableInterrupts ? ~m_vreg[0x1a/2] : 0;
@ -933,7 +941,7 @@ static MACHINE_CONFIG_START( namcona1, namcona1_state )
MCFG_CPU_PROGRAM_MAP(namcona1_mcu_map)
MCFG_CPU_IO_MAP( namcona1_mcu_io_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_main", namcona1_state, namcona1_interrupt, "screen", 0, 1)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scan_main", namcona1_state, interrupt, "screen", 0, 1)
MCFG_EEPROM_2816_ADD("eeprom")
@ -943,7 +951,7 @@ static MACHINE_CONFIG_START( namcona1, namcona1_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8, 38*8-1-8, 4*8, 32*8-1)
MCFG_SCREEN_UPDATE_DRIVER(namcona1_state, screen_update_namcona1)
MCFG_SCREEN_UPDATE_DRIVER(namcona1_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 0x2000)
@ -992,7 +1000,7 @@ DRIVER_INIT_MEMBER(namcona1_state,knckhead) { m_gametype = NAMCO_KNCKHEAD; }
DRIVER_INIT_MEMBER(namcona1_state,numanath) { m_gametype = NAMCO_NUMANATH; }
DRIVER_INIT_MEMBER(namcona1_state,quiztou) { m_gametype = NAMCO_QUIZTOU; }
DRIVER_INIT_MEMBER(namcona1_state,swcourt) { m_gametype = NAMCO_SWCOURT; }
DRIVER_INIT_MEMBER(namcona1_state,tinklpit) { m_gametype = NAMCO_TINKLPIT; }
DRIVER_INIT_MEMBER(namcona1_state,tinklpit) { m_gametype = NAMCO_TINKLPIT; save_item(NAME(m_keyval)); }
DRIVER_INIT_MEMBER(namcona1_state,xday2) { m_gametype = NAMCO_XDAY2; }
ROM_START( bkrtmaq )
@ -1301,25 +1309,25 @@ ROM_START( xday2 )
ROM_END
// NA-1 (C69 MCU)
GAME( 1992, bkrtmaq, 0, namcona1w, namcona1_quiz, namcona1_state,bkrtmaq, ROT0, "Namco", "Bakuretsu Quiz Ma-Q Dai Bouken (Japan)", 0 )
GAME( 1992, cgangpzl, 0, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (US)", 0 )
GAME( 1992, cgangpzlj, cgangpzl, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (Japan)", 0 )
GAME( 1992, exvania, 0, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (World)", 0 )
GAME( 1992, exvaniaj, exvania, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (Japan)", 0 )
GAME( 1992, fghtatck, 0, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "Fighter & Attacker (US)", 0 )
GAME( 1992, fa, fghtatck, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "F/A (Japan)", 0 )
GAME( 1992, swcourt, 0, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (World)", 0 )
GAME( 1992, swcourtj, swcourt, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (Japan)", 0 )
GAME( 1993, emeraldaj, emeralda, namcona1w, namcona1_joy, namcona1_state, emeraldj, ROT0, "Namco", "Emeraldia (Japan Version B)", 0 ) /* Parent is below on NA-2 Hardware */
GAME( 1993, emeraldaja, emeralda, namcona1w, namcona1_joy, namcona1_state, emeraldj, ROT0, "Namco", "Emeraldia (Japan)", 0 ) /* Parent is below on NA-2 Hardware */
GAME( 1993, tinklpit, 0, namcona1w, namcona1_joy, namcona1_state, tinklpit, ROT0, "Namco", "Tinkle Pit (Japan)", 0 )
GAME( 1992, bkrtmaq, 0, namcona1w, namcona1_quiz, namcona1_state,bkrtmaq, ROT0, "Namco", "Bakuretsu Quiz Ma-Q Dai Bouken (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1992, cgangpzl, 0, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (US)", GAME_SUPPORTS_SAVE )
GAME( 1992, cgangpzlj, cgangpzl, namcona1w, namcona1_joy, namcona1_state, cgangpzl, ROT0, "Namco", "Cosmo Gang the Puzzle (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1992, exvania, 0, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (World)", GAME_SUPPORTS_SAVE )
GAME( 1992, exvaniaj, exvania, namcona1, namcona1_joy, namcona1_state, exbania, ROT0, "Namco", "Exvania (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1992, fghtatck, 0, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "Fighter & Attacker (US)", GAME_SUPPORTS_SAVE )
GAME( 1992, fa, fghtatck, namcona1, namcona1_joy, namcona1_state, fa, ROT90,"Namco", "F/A (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1992, swcourt, 0, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (World)", GAME_SUPPORTS_SAVE )
GAME( 1992, swcourtj, swcourt, namcona1w, namcona1_joy, namcona1_state, swcourt, ROT0, "Namco", "Super World Court (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1993, emeraldaj, emeralda, namcona1w, namcona1_joy, namcona1_state, emeraldj, ROT0, "Namco", "Emeraldia (Japan Version B)", GAME_SUPPORTS_SAVE ) /* Parent is below on NA-2 Hardware */
GAME( 1993, emeraldaja, emeralda, namcona1w, namcona1_joy, namcona1_state, emeraldj, ROT0, "Namco", "Emeraldia (Japan)", GAME_SUPPORTS_SAVE ) /* Parent is below on NA-2 Hardware */
GAME( 1993, tinklpit, 0, namcona1w, namcona1_joy, namcona1_state, tinklpit, ROT0, "Namco", "Tinkle Pit (Japan)", GAME_SUPPORTS_SAVE )
// NA-2 (C70 MCU)
GAME( 1992, knckhead, 0, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (World)", 0 )
GAME( 1992, knckheadj, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan)", 0 )
GAME( 1992, knckheadjp, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan, Prototype?)", 0 )
GAME( 1993, emeralda, 0, namcona2, namcona1_joy, namcona1_state, emeralda, ROT0, "Namco", "Emeraldia (World)", 0 )
GAME( 1993, numanath, 0, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (World)", 0 )
GAME( 1993, numanathj, numanath, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (Japan)", 0 )
GAME( 1993, quiztou, 0, namcona2, namcona1_quiz, namcona1_state,quiztou, ROT0, "Namco", "Nettou! Gekitou! Quiztou!! (Japan)", 0 )
GAME( 1995, xday2, 0, namcona2, namcona1_joy, namcona1_state, xday2, ROT0, "Namco", "X-Day 2 (Japan)", GAME_IMPERFECT_GRAPHICS )
GAME( 1992, knckhead, 0, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (World)", GAME_SUPPORTS_SAVE )
GAME( 1992, knckheadj, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1992, knckheadjp, knckhead, namcona2, namcona1_joy, namcona1_state, knckhead, ROT0, "Namco", "Knuckle Heads (Japan, Prototype?)", GAME_SUPPORTS_SAVE )
GAME( 1993, emeralda, 0, namcona2, namcona1_joy, namcona1_state, emeralda, ROT0, "Namco", "Emeraldia (World)", GAME_SUPPORTS_SAVE )
GAME( 1993, numanath, 0, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (World)", GAME_SUPPORTS_SAVE )
GAME( 1993, numanathj, numanath, namcona2, namcona1_joy, namcona1_state, numanath, ROT0, "Namco", "Numan Athletics (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1993, quiztou, 0, namcona2, namcona1_quiz, namcona1_state,quiztou, ROT0, "Namco", "Nettou! Gekitou! Quiztou!! (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1995, xday2, 0, namcona2, namcona1_joy, namcona1_state, xday2, ROT0, "Namco", "X-Day 2 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )

View File

@ -97,6 +97,7 @@
#include "sound/2612intf.h"
#include "sound/rf5c68.h"
#include "video/segaic16.h"
#include "sound/2203intf.h"
#define SHADOW_COLORS_MULTIPLIER 3
@ -118,6 +119,15 @@ WRITE16_MEMBER(segas1x_bootleg_state::sound_command_nmi_w)
}
}
WRITE16_MEMBER(segas1x_bootleg_state::sound_command_irq_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundcpu->set_input_line(0, HOLD_LINE);
}
}
static ADDRESS_MAP_START( shinobib_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
@ -127,7 +137,10 @@ static ADDRESS_MAP_START( shinobib_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0x412000, 0x412fff) AM_RAM AM_SHARE("bg1_tileram")
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sound_command_nmi_w)
// AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xC42006, 0xC42007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xC44000, 0xC44001) AM_READNOP
AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2")
@ -146,15 +159,6 @@ ADDRESS_MAP_END
/***************************************************************************/
WRITE16_MEMBER(segas1x_bootleg_state::sound_command_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundcpu->set_input_line(0, HOLD_LINE);
}
}
WRITE16_MEMBER(segas1x_bootleg_state::sys16_coinctrl_w)
{
if (ACCESSING_BITS_0_7)
@ -187,7 +191,7 @@ static ADDRESS_MAP_START( passshtb_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_w)
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w)
AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w)
AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w)
@ -265,7 +269,7 @@ static ADDRESS_MAP_START( passht4b_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0xc41006, 0xc41007) AM_READ(passht4b_io3_r)
AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_w)
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xc43000, 0xc43001) AM_READ_PORT("P1") // test mode only
AM_RANGE(0xc43002, 0xc43003) AM_READ_PORT("P2")
AM_RANGE(0xc43004, 0xc43005) AM_READ_PORT("P3")
@ -313,7 +317,7 @@ static ADDRESS_MAP_START( wb3bbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_w)
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xC44000, 0xC44001) AM_WRITENOP
AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w)
AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w)
@ -422,6 +426,24 @@ static ADDRESS_MAP_START( tturfbl_sound_io_map, AS_IO, 8, segas1x_bootleg_state
AM_RANGE(0x80, 0x80) AM_NOP
ADDRESS_MAP_END
/*******************************************************************************/
static ADDRESS_MAP_START(shinobi_datsu_sound_map, AS_PROGRAM, 8, segas1x_bootleg_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
AM_RANGE(0xe400, 0xe401) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( shinobi_datsu_sound_io, AS_IO, 8, segas1x_bootleg_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
ADDRESS_MAP_END
/*******************************************************************************/
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segas1x_bootleg_state )
@ -504,7 +526,7 @@ static ADDRESS_MAP_START( bayroute_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0x901000, 0x901001) AM_READ_PORT("SERVICE")
AM_RANGE(0x902002, 0x902003) AM_READ_PORT("DSW1")
AM_RANGE(0x902000, 0x902001) AM_READ_PORT("DSW2")
AM_RANGE(0xff0006, 0xff0007) AM_WRITE(sound_command_w)
AM_RANGE(0xff0006, 0xff0007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xff0020, 0xff003f) AM_WRITENOP // config regs
ADDRESS_MAP_END
#endif
@ -691,7 +713,7 @@ static ADDRESS_MAP_START( bayrouteb2_map, AS_PROGRAM, 16, segas1x_bootleg_state
AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW1")
AM_RANGE(0x900002, 0x900003) AM_READ_PORT("DSW2")
AM_RANGE(0x900006, 0x900007) AM_WRITE(sound_command_w)
AM_RANGE(0x900006, 0x900007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0x901000, 0x901001) AM_READ_PORT("SERVICE") AM_WRITE(sys16_coinctrl_w)
AM_RANGE(0x901002, 0x901003) AM_READ_PORT("P1")
AM_RANGE(0x901006, 0x901007) AM_READ_PORT("P2")
@ -705,7 +727,7 @@ static ADDRESS_MAP_START( dduxbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w)
AM_RANGE(0xc40006, 0xc40007) AM_WRITE(sound_command_w)
AM_RANGE(0xc40006, 0xc40007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
@ -825,7 +847,7 @@ static ADDRESS_MAP_START( fpointbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram")
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites")
AM_RANGE(0x600006, 0x600007) AM_WRITE(sound_command_w)
AM_RANGE(0x600006, 0x600007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0x601000, 0x601001) AM_READ_PORT("SERVICE")
AM_RANGE(0x601002, 0x601003) AM_READ_PORT("P1")
AM_RANGE(0x601004, 0x601005) AM_READ_PORT("P2")
@ -879,7 +901,7 @@ static ADDRESS_MAP_START( eswatbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_w)
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xc80000, 0xc80001) AM_WRITENOP
AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
ADDRESS_MAP_END
@ -906,7 +928,7 @@ static ADDRESS_MAP_START( tetrisbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2")
AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2")
AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1")
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_w)
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP
AM_RANGE(0xc80000, 0xc80001) AM_NOP
AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram
@ -943,7 +965,7 @@ static ADDRESS_MAP_START( beautyb_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE")
AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1")
AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2")
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_w)
AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0xc40000, 0xc40001) AM_WRITENOP
AM_RANGE(0xc80000, 0xc80001) AM_WRITENOP // vblank irq ack
@ -963,7 +985,7 @@ static ADDRESS_MAP_START( tturfbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0x600000, 0x600001) AM_WRITE(sys16_coinctrl_w)
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW2")
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW1")
AM_RANGE(0x600006, 0x600007) AM_WRITE(sound_command_w)
AM_RANGE(0x600006, 0x600007) AM_WRITE(sound_command_irq_w)
AM_RANGE(0x601000, 0x601001) AM_READ_PORT("SERVICE")
AM_RANGE(0x601002, 0x601003) AM_READ_PORT("P1")
AM_RANGE(0x601004, 0x601005) AM_READ_PORT("P2")
@ -1083,14 +1105,6 @@ ADDRESS_MAP_END
***************************************************************************/
WRITE16_MEMBER(segas1x_bootleg_state::sound_command_irq_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundcpu->set_input_line(0, HOLD_LINE);
}
}
static ADDRESS_MAP_START( shdancbl_map, AS_PROGRAM, 16, segas1x_bootleg_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
@ -2016,16 +2030,12 @@ GFXDECODE_END
*************************************/
/* System 16A/B Bootlegs */
static MACHINE_CONFIG_START( system16, segas1x_bootleg_state )
static MACHINE_CONFIG_START( system16_base, segas1x_bootleg_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, 10000000)
MCFG_CPU_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, sys16_interrupt)
MCFG_CPU_ADD("soundcpu", Z80, 4000000)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_CPU_IO_MAP(sound_io_map)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@ -2039,6 +2049,13 @@ static MACHINE_CONFIG_START( system16, segas1x_bootleg_state )
MCFG_PALETTE_ADD("palette", 2048*SHADOW_COLORS_MULTIPLIER)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( system16, system16_base )
MCFG_CPU_ADD("soundcpu", Z80, 4000000)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_CPU_IO_MAP(sound_io_map)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@ -2048,7 +2065,6 @@ static MACHINE_CONFIG_START( system16, segas1x_bootleg_state )
MCFG_SOUND_ROUTE(1, "rspeaker", 0.32)
MACHINE_CONFIG_END
WRITE_LINE_MEMBER(segas1x_bootleg_state::sound_cause_nmi)
{
/* upd7759 callback */
@ -2094,8 +2110,7 @@ static MACHINE_CONFIG_FRAGMENT( system16_datsu_sound )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( shinobib, system16 )
static MACHINE_CONFIG_DERIVED( shinobi_datsu, system16_base )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
@ -2107,8 +2122,33 @@ static MACHINE_CONFIG_DERIVED( shinobib, system16 )
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_shinobi )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg)
MCFG_CPU_ADD("soundcpu", Z80, 4000000)
MCFG_CPU_PERIODIC_INT_DRIVER(segas1x_bootleg_state, nmi_line_pulse, 3000) // or from the YM2203?
MCFG_CPU_PROGRAM_MAP(shinobi_datsu_sound_map)
MCFG_CPU_IO_MAP(shinobi_datsu_sound_io)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
// 2x YM2203C, one at U57, one at U56
MCFG_SOUND_ADD("ym1", YM2203, 4000000)
// MCFG_YM2203_IRQ_HANDLER(WRITELINE(segas1x_bootleg_state, datsu_irq_handler))
MCFG_SOUND_ROUTE(0, "mono", 0.50)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
MCFG_SOUND_ROUTE(2, "mono", 0.50)
MCFG_SOUND_ROUTE(3, "mono", 0.80)
MCFG_SOUND_ADD("ym2", YM2203, 4000000)
MCFG_SOUND_ROUTE(0, "mono", 0.50)
// MCFG_YM2203_IRQ_HANDLER(WRITELINE(segas1x_bootleg_state, datsu_irq_handler))
MCFG_SOUND_ROUTE(1, "mono", 0.50)
MCFG_SOUND_ROUTE(2, "mono", 0.50)
MCFG_SOUND_ROUTE(3, "mono", 0.80)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( passshtb, system16_7759 )
/* basic machine hardware */
@ -2431,6 +2471,32 @@ ROM_START( shinobld )
ROM_LOAD( "16.bin", 0x0000, 0x10000, CRC(52c8364e) SHA1(01d30b82f92498d155d2e31d43d58dff0285cce3) )
ROM_END
ROM_START( shinoblda )
ROM_REGION( 0x040000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "12.bin", 0x000001, 0x10000, CRC(68c91fd5) SHA1(54dc1d26711c73b30cbb5387dde27ba21cc102f4) ) // sldh
ROM_LOAD16_BYTE( "14.bin", 0x000000, 0x10000, CRC(9e887c80) SHA1(798a3dc499ef14b362bc37ff91b247e367f42ab9) ) // sldh
ROM_LOAD16_BYTE( "13.bin", 0x020001, 0x10000, CRC(c4334bcd) SHA1(ea1dd23ca6fbf632d8e10bbb9ced6515a69bd14a) )
ROM_LOAD16_BYTE( "15.bin", 0x020000, 0x10000, CRC(b70a6ec1) SHA1(79db41c36d6a053bcdc355b46b19ae938a7755a9) )
ROM_REGION( 0x30000, "gfx1", ROMREGION_INVERT ) /* tiles */
ROM_LOAD( "9.bin", 0x00000, 0x10000, CRC(565e11c6) SHA1(e063400b3d0470b932d75da0be9cd4b446189dea) )
ROM_LOAD( "10.bin", 0x10000, 0x10000, CRC(7cc40b6c) SHA1(ffad7eef7ab2ff9a2e49a8d71b5785a61fa3c675) )
ROM_LOAD( "11.bin", 0x20000, 0x10000, CRC(0f6c7b1c) SHA1(defc76592c285b3396e89a3cff7a73f3a948117f) )
ROM_REGION16_BE( 0x080000, "sprites", ROMREGION_ERASEFF ) /* sprites */
ROM_LOAD16_BYTE( "5.bin", 0x00001, 0x10000, CRC(611f413a) SHA1(180f83216e2dfbfd77b0fb3be83c3042954d12df) )
ROM_LOAD16_BYTE( "3.bin", 0x00000, 0x10000, CRC(5eb00fc1) SHA1(97e02eee74f61fabcad2a9e24f1868cafaac1d51) )
ROM_LOAD16_BYTE( "8.bin", 0x20001, 0x10000, CRC(3c0797c0) SHA1(df18c7987281bd9379026c6cf7f96f6ae49fd7f9) )
ROM_LOAD16_BYTE( "2.bin", 0x20000, 0x10000, CRC(25307ef8) SHA1(91ffbe436f80d583524ee113a8b7c0cf5d8ab286) )
ROM_LOAD16_BYTE( "6.bin", 0x40001, 0x10000, CRC(c29ac34e) SHA1(b5e9b8c3233a7d6797f91531a0d9123febcf1660) )
ROM_LOAD16_BYTE( "4.bin", 0x40000, 0x10000, CRC(04a437f8) SHA1(ea5fed64443236e3404fab243761e60e2e48c84c) )
ROM_LOAD16_BYTE( "7.bin", 0x60001, 0x10000, CRC(41f41063) SHA1(5cc461e9738dddf9eea06831fce3702d94674163) )
ROM_LOAD16_BYTE( "1.bin", 0x60000, 0x10000, CRC(b6e1fd72) SHA1(eb86e4bf880bd1a1d9bcab3f2f2e917bcaa06172) )
ROM_REGION( 0x10000, "soundcpu", 0 ) /* sound CPU + data */
ROM_LOAD( "16.bin", 0x0000, 0x10000, CRC(52c8364e) SHA1(01d30b82f92498d155d2e31d43d58dff0285cce3) )
ROM_END
/* Passing Shot Bootleg is a decrypted version of Passing Shot Japanese (passshtj). It has been heavily modified */
ROM_START( passshtb )
ROM_REGION( 0x020000, "maincpu", 0 ) /* 68000 code */
@ -3702,7 +3768,11 @@ DRIVER_INIT_MEMBER(segas1x_bootleg_state,astormbl)
*************************************/
/* System 16A based bootlegs (less complex tilemap system) */
GAME( 1987, shinobld, shinobi, shinobib, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND )
GAME( 1987, shinobld, shinobi, shinobi_datsu, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg, set 1)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND )
GAME( 1987, shinoblda, shinobi, shinobi_datsu, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg, set 2)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND )
GAME( 1988, passshtb, passsht, passshtb, passsht, segas1x_bootleg_state, passsht, ROT270, "bootleg", "Passing Shot (2 Players) (bootleg)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
GAME( 1988, passht4b, passsht, passsht4b, passht4b, segas1x_bootleg_state, shinobl, ROT270, "bootleg", "Passing Shot (4 Players) (bootleg)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND )
GAME( 1988, wb3bbl, wb3, wb3bb, wb3b, segas1x_bootleg_state, wb3bbl, ROT0, "bootleg", "Wonder Boy III - Monster Lair (bootleg)", GAME_NOT_WORKING )

View File

@ -31,7 +31,7 @@
_| 74LS244 74LS14N 74HC74 16MHz |D70116C-10 | |
|__________________________________________________|
The PCB is Spanish and manufacured by Gamart.
The PCB is Spanish and manufactured by Gamart.
Table tennis Championships by Gamart 1995
@ -46,7 +46,7 @@ Rom files definition:
ttennis2/3 main program
ttennis1 adpcm data
ttennis4/5 graphics
*there is a pic16c84 that i cannot dump because my programmer doesn't support it.
*there is a pic16c84 that I cannot dump because my programmer doesn't support it.
Dumped by tirino73
@ -59,7 +59,7 @@ Dumped by tirino73
- A bunch of spurious RAM writes to ROM area (genuine bug? left-overs?)
Notes
I think the PIC is used to interface with battry backed RAM instead of an EEPROM,
I think the PIC is used to interface with battery backed RAM instead of an EEPROM,
we currently simulate this as the PIC is read protected.
@ -71,6 +71,7 @@ we currently simulate this as the PIC is read protected.
#include "sound/okim6295.h"
#include "machine/nvram.h"
class ttchamp_state : public driver_device
{
public:
@ -79,37 +80,15 @@ public:
m_maincpu(*this, "maincpu"),
m_palette(*this, "palette") { }
UINT16* m_peno_mainram;
required_device<cpu_device> m_maincpu;
required_device<palette_device> m_palette;
UINT16 m_paloff;
DECLARE_WRITE16_MEMBER(paloff_w);
DECLARE_WRITE16_MEMBER(pcup_prgbank_w);
DECLARE_WRITE16_MEMBER(paldat_w);
DECLARE_WRITE16_MEMBER(port10_w);
DECLARE_WRITE16_MEMBER(port20_w);
DECLARE_WRITE16_MEMBER(port62_w);
DECLARE_READ16_MEMBER(port1e_r);
DECLARE_READ16_MEMBER(ttchamp_pic_r);
DECLARE_WRITE16_MEMBER(ttchamp_pic_w);
UINT16 m_port10;
UINT8 m_rombank;
DECLARE_DRIVER_INIT(ttchamp);
DECLARE_READ16_MEMBER(ttchamp_blit_start_r);
DECLARE_READ16_MEMBER(ttchamp_mem_r);
DECLARE_WRITE16_MEMBER(ttchamp_mem_w);
UINT16 m_videoram0[0x10000 / 2];
UINT16 m_videoram2[0x10000 / 2];
enum picmode
{
PIC_IDLE = 0,
@ -118,8 +97,9 @@ public:
PIC_SET_WRITELATCH = 3,
PIC_SET_READLATCH = 4
} picmodex;
};
picmode m_picmodex;
int m_pic_readaddr;
int m_pic_writeaddr;
@ -133,27 +113,63 @@ public:
int m_spritesinit;
int m_spriteswidth;
int m_spritesaddr;
virtual void machine_start();
UINT16* m_rom16;
UINT8* m_rom8;
DECLARE_WRITE16_MEMBER(paloff_w);
DECLARE_WRITE16_MEMBER(pcup_prgbank_w);
DECLARE_WRITE16_MEMBER(paldat_w);
DECLARE_WRITE16_MEMBER(port10_w);
DECLARE_WRITE16_MEMBER(port20_w);
DECLARE_WRITE16_MEMBER(port62_w);
DECLARE_READ16_MEMBER(port1e_r);
DECLARE_READ16_MEMBER(pic_r);
DECLARE_WRITE16_MEMBER(pic_w);
DECLARE_READ16_MEMBER(blit_start_r);
DECLARE_READ16_MEMBER(mem_r);
DECLARE_WRITE16_MEMBER(mem_w);
virtual void machine_start();
virtual void video_start();
UINT32 screen_update_ttchamp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(ttchamp_irq);
required_device<cpu_device> m_maincpu;
required_device<palette_device> m_palette;
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(irq);
};
ALLOW_SAVE_TYPE(ttchamp_state::picmode);
void ttchamp_state::machine_start()
{
m_rom16 = (UINT16*)memregion("maincpu")->base();
m_rom8 = memregion("maincpu")->base();
picmodex = PIC_IDLE;
m_picmodex = PIC_IDLE;
m_bakram = auto_alloc_array(machine(), UINT8, 0x100);
machine().device<nvram_device>("backram")->set_base(m_bakram, 0x100);
save_item(NAME(m_paloff));
save_item(NAME(m_port10));
save_item(NAME(m_rombank));
save_item(NAME(m_videoram0));
save_item(NAME(m_videoram2));
save_item(NAME(m_picmodex));
save_item(NAME(m_pic_readaddr));
save_item(NAME(m_pic_writeaddr));
save_item(NAME(m_pic_latched));
save_item(NAME(m_pic_writelatched));
save_item(NAME(m_mainram));
save_item(NAME(m_spritesinit));
save_item(NAME(m_spriteswidth));
save_item(NAME(m_spritesaddr));
}
@ -161,7 +177,7 @@ void ttchamp_state::video_start()
{
}
UINT32 ttchamp_state::screen_update_ttchamp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 ttchamp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
logerror("update\n");
int y,x,count;
@ -261,13 +277,13 @@ WRITE16_MEMBER(ttchamp_state::paldat_w)
m_palette->set_pen_color(m_paloff & 0x3ff,pal5bit(data>>0),pal5bit(data>>5),pal5bit(data>>10));
}
READ16_MEMBER(ttchamp_state::ttchamp_pic_r)
READ16_MEMBER(ttchamp_state::pic_r)
{
// printf("%06x: read from PIC (%04x)\n", space.device().safe_pc(),mem_mask);
if (picmodex == PIC_SET_READLATCH)
if (m_picmodex == PIC_SET_READLATCH)
{
// printf("read data %02x from %02x\n", m_pic_latched, m_pic_readaddr);
picmodex = PIC_IDLE;
m_picmodex = PIC_IDLE;
return m_pic_latched << 8;
@ -276,29 +292,29 @@ READ16_MEMBER(ttchamp_state::ttchamp_pic_r)
}
WRITE16_MEMBER(ttchamp_state::ttchamp_pic_w)
WRITE16_MEMBER(ttchamp_state::pic_w)
{
// printf("%06x: write to PIC %04x (%04x) (%d)\n", space.device().safe_pc(),data,mem_mask, picmodex);
if (picmodex == PIC_IDLE)
// printf("%06x: write to PIC %04x (%04x) (%d)\n", space.device().safe_pc(),data,mem_mask, m_picmodex);
if (m_picmodex == PIC_IDLE)
{
if (data == 0x11)
{
picmodex = PIC_SET_READADDRESS;
m_picmodex = PIC_SET_READADDRESS;
// printf("state = SET_READADDRESS\n");
}
else if (data == 0x12)
{
picmodex = PIC_SET_WRITELATCH;
m_picmodex = PIC_SET_WRITELATCH;
// printf("latch write data.. \n" );
}
else if (data == 0x20)
{
picmodex = PIC_SET_WRITEADDRESS;
m_picmodex = PIC_SET_WRITEADDRESS;
// printf("state = PIC_SET_WRITEADDRESS\n");
}
else if (data == 0x21) // write latched data
{
picmodex = PIC_IDLE;
m_picmodex = PIC_IDLE;
m_bakram[m_pic_writeaddr] = m_pic_writelatched;
// printf("wrote %02x to %02x\n", m_pic_writelatched, m_pic_writeaddr);
}
@ -309,33 +325,33 @@ WRITE16_MEMBER(ttchamp_state::ttchamp_pic_w)
m_pic_latched = m_bakram[m_pic_readaddr>>1];
// printf("latch read data %02x from %02x\n",m_pic_latched, m_pic_readaddr );
picmodex = PIC_SET_READLATCH; // waiting to read...
m_picmodex = PIC_SET_READLATCH; // waiting to read...
}
else
{
// printf("unknown\n");
}
}
else if (picmodex == PIC_SET_READADDRESS)
else if (m_picmodex == PIC_SET_READADDRESS)
{
m_pic_readaddr = data;
picmodex = PIC_IDLE;
m_picmodex = PIC_IDLE;
}
else if (picmodex == PIC_SET_WRITEADDRESS)
else if (m_picmodex == PIC_SET_WRITEADDRESS)
{
m_pic_writeaddr = data;
picmodex = PIC_IDLE;
m_picmodex = PIC_IDLE;
}
else if (picmodex == PIC_SET_WRITELATCH)
else if (m_picmodex == PIC_SET_WRITELATCH)
{
m_pic_writelatched = data;
picmodex = PIC_IDLE;
m_picmodex = PIC_IDLE;
}
}
READ16_MEMBER(ttchamp_state::ttchamp_mem_r)
READ16_MEMBER(ttchamp_state::mem_r)
{
// bits 0xf0 are used too, so this is likely wrong.
@ -367,7 +383,7 @@ READ16_MEMBER(ttchamp_state::ttchamp_mem_r)
}
}
WRITE16_MEMBER(ttchamp_state::ttchamp_mem_w)
WRITE16_MEMBER(ttchamp_state::mem_w)
{
// this is very strange, we use the offset (address bits) not data bits to set values..
// I get the impression this might actually overlay the entire address range, including RAM and regular VRAM?
@ -484,7 +500,7 @@ WRITE16_MEMBER(ttchamp_state::ttchamp_mem_w)
static ADDRESS_MAP_START( ttchamp_map, AS_PROGRAM, 16, ttchamp_state )
AM_RANGE(0x00000, 0xfffff) AM_READWRITE(ttchamp_mem_r, ttchamp_mem_w)
AM_RANGE(0x00000, 0xfffff) AM_READWRITE(mem_r, mem_w)
ADDRESS_MAP_END
/* Re-use same parameters as before (one-shot) */
@ -494,7 +510,7 @@ READ16_MEMBER(ttchamp_state::port1e_r)
return 0xff;
}
READ16_MEMBER(ttchamp_state::ttchamp_blit_start_r)
READ16_MEMBER(ttchamp_state::blit_start_r)
{
m_spritesinit = 1;
return 0xff;
@ -533,7 +549,7 @@ static ADDRESS_MAP_START( ttchamp_io, AS_IO, 16, ttchamp_state )
AM_RANGE(0x0006, 0x0007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x0018, 0x0019) AM_READ(ttchamp_blit_start_r) // read before using bus write offset as blit parameters
AM_RANGE(0x0018, 0x0019) AM_READ(blit_start_r) // read before using bus write offset as blit parameters
AM_RANGE(0x001e, 0x001f) AM_READ(port1e_r) // read before some blit operations (but not all)
AM_RANGE(0x0008, 0x0009) AM_WRITE(paldat_w)
@ -543,7 +559,7 @@ static ADDRESS_MAP_START( ttchamp_io, AS_IO, 16, ttchamp_state )
AM_RANGE(0x0020, 0x0021) AM_WRITE(port20_w)
AM_RANGE(0x0034, 0x0035) AM_READWRITE(ttchamp_pic_r, ttchamp_pic_w)
AM_RANGE(0x0034, 0x0035) AM_READWRITE(pic_r, pic_w)
AM_RANGE(0x0062, 0x0063) AM_WRITE(port62_w)
@ -616,7 +632,7 @@ static INPUT_PORTS_START(ttchamp)
INPUT_PORTS_END
INTERRUPT_GEN_MEMBER(ttchamp_state::ttchamp_irq)/* right? */
INTERRUPT_GEN_MEMBER(ttchamp_state::irq)/* right? */
{
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@ -626,7 +642,7 @@ static MACHINE_CONFIG_START( ttchamp, ttchamp_state )
MCFG_CPU_ADD("maincpu", V30, 8000000)
MCFG_CPU_PROGRAM_MAP(ttchamp_map)
MCFG_CPU_IO_MAP(ttchamp_io)
MCFG_CPU_VBLANK_INT_DRIVER("screen", ttchamp_state, ttchamp_irq)
MCFG_CPU_VBLANK_INT_DRIVER("screen", ttchamp_state, irq)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -634,7 +650,7 @@ static MACHINE_CONFIG_START( ttchamp, ttchamp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024,1024)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(ttchamp_state, screen_update_ttchamp)
MCFG_SCREEN_UPDATE_DRIVER(ttchamp_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 0x400)
@ -676,10 +692,7 @@ ROM_START( ttchampa )
ROM_LOAD( "27c020.1", 0x000000, 0x040000, CRC(e2c4fe95) SHA1(da349035cc348db220a1e12b4c2a6021e2168425) )
ROM_END
DRIVER_INIT_MEMBER(ttchamp_state,ttchamp)
{
}
// only the graphics differ between the two sets, code section is the same
GAME( 1995, ttchamp, 0, ttchamp, ttchamp, ttchamp_state, ttchamp, ROT0, "Gamart", "Table Tennis Champions", 0 ) // this has various advertising boards, including 'Electronic Devices' and 'Deniam'
GAME( 1995, ttchampa,ttchamp, ttchamp, ttchamp, ttchamp_state, ttchamp, ROT0, "Gamart (Palencia Elektronik license)", "Table Tennis Champions (Palencia Elektronik license)", 0 ) // this only has Palencia Elektronik advertising boards
GAME( 1995, ttchamp, 0, ttchamp, ttchamp, driver_device, 0, ROT0, "Gamart", "Table Tennis Champions", GAME_SUPPORTS_SAVE ) // this has various advertising boards, including 'Electronic Devices' and 'Deniam'
GAME( 1995, ttchampa,ttchamp, ttchamp, ttchamp, driver_device, 0, ROT0, "Gamart (Palencia Elektronik license)", "Table Tennis Champions (Palencia Elektronik license)", GAME_SUPPORTS_SAVE ) // this only has Palencia Elektronik advertising boards

View File

@ -13,7 +13,8 @@ prom, the 2x 256k roms, and the 1x 6264 ram.
Dip SW is 1 x 8-position
on the PCB is an empty socket. written next to the socket is 68705P3. "oh no" you
say..... well, its unpopulated, so maybe it was never used?
say..... well, its unpopulated, so maybe it was never used? (another PCB was
found with the 68705 populated)
TODO:
@ -259,6 +260,9 @@ ROM_START( xyonix )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "xyonix3.bin", 0x00000, 0x10000, CRC(1960a74e) SHA1(5fd7bc31ca2f5f1e114d3d0ccf6554ebd712cbd3) )
ROM_REGION( 0x10000, "mcu", 0 )
ROM_LOAD( "mc68705p3s.e7", 0x00000, 0x780, BAD_DUMP CRC(f60cdd86) SHA1(e18cc598153b3e108942328ee9c5b9f83b034c41) ) // FIXED BITS (xxxxxx0x)
ROM_REGION( 0x10000, "gfx1", 0 )
ROM_LOAD( "xyonix1.bin", 0x00000, 0x08000, CRC(3dfa9596) SHA1(52cdbbe18f83cea7248c29588ea3a18c4bb7984f) )
ROM_LOAD( "xyonix2.bin", 0x08000, 0x08000, CRC(db87343e) SHA1(62bc30cd65b2f8976cd73a0b349a9ccdb3faaad2) )
@ -270,3 +274,4 @@ ROM_END
/* GAME drivers **************************************************************/
GAME( 1989, xyonix, 0, xyonix, xyonix, driver_device, 0, ROT0, "Philko", "Xyonix", GAME_SUPPORTS_SAVE )

View File

@ -45,6 +45,7 @@ public:
DECLARE_WRITE8_MEMBER(c1942_scroll_w);
DECLARE_WRITE8_MEMBER(c1942_c804_w);
DECLARE_WRITE8_MEMBER(c1942p_f600_w);
DECLARE_WRITE8_MEMBER(c1942p_soundlatch_w);
DECLARE_DRIVER_INIT(1942);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);

View File

@ -85,7 +85,7 @@ public:
DECLARE_READ16_MEMBER(custom_key_r);
DECLARE_WRITE16_MEMBER(custom_key_w);
DECLARE_WRITE16_MEMBER(namcona1_vreg_w);
DECLARE_WRITE16_MEMBER(vreg_w);
DECLARE_READ16_MEMBER(mcu_mailbox_r);
DECLARE_WRITE16_MEMBER(mcu_mailbox_w_68k);
DECLARE_WRITE16_MEMBER(mcu_mailbox_w_mcu);
@ -105,18 +105,19 @@ public:
void simulate_mcu();
void write_version_info();
int transfer_dword(UINT32 dest, UINT32 source);
void namcona1_blit();
void blit();
void UpdatePalette(int offset);
DECLARE_WRITE16_MEMBER(namcona1_videoram_w);
DECLARE_WRITE16_MEMBER(namcona1_paletteram_w);
DECLARE_READ16_MEMBER(namcona1_gfxram_r);
DECLARE_WRITE16_MEMBER(namcona1_gfxram_w);
DECLARE_WRITE16_MEMBER(videoram_w);
DECLARE_WRITE16_MEMBER(paletteram_w);
DECLARE_READ16_MEMBER(gfxram_r);
DECLARE_WRITE16_MEMBER(gfxram_w);
void pdraw_tile( screen_device &screen, bitmap_ind16 &dest_bmp, const rectangle &clip, UINT32 code, int color,
int sx, int sy, int flipx, int flipy, int priority, int bShadow, int bOpaque, int gfx_region );
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int primask );
DECLARE_READ16_MEMBER(snd_r);
DECLARE_WRITE16_MEMBER(snd_w);
DECLARE_DRIVER_INIT(bkrtmaq);
DECLARE_DRIVER_INIT(quiztou);
DECLARE_DRIVER_INIT(emeralda);
@ -129,16 +130,20 @@ public:
DECLARE_DRIVER_INIT(xday2);
DECLARE_DRIVER_INIT(exbania);
DECLARE_DRIVER_INIT(emeraldj);
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
TILE_GET_INFO_MEMBER(tilemap_get_info0);
TILE_GET_INFO_MEMBER(tilemap_get_info1);
TILE_GET_INFO_MEMBER(tilemap_get_info2);
TILE_GET_INFO_MEMBER(tilemap_get_info3);
TILE_GET_INFO_MEMBER(roz_get_info);
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
UINT32 screen_update_namcona1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(namcona1_interrupt);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
void postload();
private:
void tilemap_get_info(tile_data &tileinfo, int tile_index, const UINT16 *tilemap_videoram, bool use_4bpp_gfx);

View File

@ -125,7 +125,7 @@ public:
optional_shared_ptr<UINT16> m_decrypted_opcodes;
DECLARE_WRITE16_MEMBER(sound_command_nmi_w);
DECLARE_WRITE16_MEMBER(sound_command_w);
DECLARE_WRITE16_MEMBER(sound_command_irq_w);
DECLARE_WRITE16_MEMBER(sys16_coinctrl_w);
DECLARE_READ16_MEMBER(passht4b_service_r);
DECLARE_READ16_MEMBER(passht4b_io1_r);
@ -159,7 +159,6 @@ public:
DECLARE_WRITE16_MEMBER(sys18_tilebank_w);
DECLARE_READ8_MEMBER(system18_bank_r);
DECLARE_WRITE8_MEMBER(sys18_soundbank_w);
DECLARE_WRITE16_MEMBER(sound_command_irq_w);
DECLARE_WRITE8_MEMBER(shdancbl_msm5205_data_w);
DECLARE_READ8_MEMBER(shdancbl_soundbank_r);
DECLARE_WRITE8_MEMBER(shdancbl_bankctrl_w);

View File

@ -327,7 +327,6 @@ mu100r // 1997 MU-100 Rackable version
fb01 // 1986 FB-01
// Roland
tb303
mt32
cm32l
d110
@ -1043,16 +1042,6 @@ avigo_es // 1997 Avigo (Spanish)
avigo_it // 1997 Avigo (Italian)
// Texas Instruments Calculators
tisr16 // 1974 SR-16
tisr16ii
ti1270
ti1000
ti30 // 1976 TI-30
tiprog
tibusan1
wizatron
lilprof
lilprof78
ti73 // 1990 TI-73
ti74 // 1985 TI-74
ti95 // 1986 TI-95
@ -2235,7 +2224,7 @@ tbreakup // Tomy
elecbowl // Marx
mbdtower // Milton Bradley
// TI snspell
// hh_tms1k tispeak.c
snspell
snspella
snspellb
@ -2248,6 +2237,18 @@ snmathp
snread
lantutor
// hh_tms1k ticalc1x.c
tisr16
tisr16ii
ti1270
ti1000
ti30
tiprog
tibusan1
wizatron
lilprof
lilprof78
// hh_ucom4
ufombs // Bambino
ssfball // Bambino
@ -2267,6 +2268,9 @@ tmscramb // Tomy
tcaveman // Tomy
alnchase // Tomy
// hh_ucom4 derivatives
tb303 // Roland
// other
tama // Bandai
advision // Entex
@ -2585,6 +2589,7 @@ prose2ko
eacc
argo
applix
fccpu1
68ksbc
lcmate2
cm1800

View File

@ -36,26 +36,22 @@ void namcona1_state::tilemap_get_info(
TILE_GET_INFO_MEMBER(namcona1_state::tilemap_get_info0)
{
UINT16 *videoram = m_videoram;
tilemap_get_info(tileinfo,tile_index,0*0x1000+videoram,m_vreg[0xbc/2]&1);
tilemap_get_info(tileinfo,tile_index,0*0x1000+m_videoram,m_vreg[0xbc/2]&1);
}
TILE_GET_INFO_MEMBER(namcona1_state::tilemap_get_info1)
{
UINT16 *videoram = m_videoram;
tilemap_get_info(tileinfo,tile_index,1*0x1000+videoram,m_vreg[0xbc/2]&2);
tilemap_get_info(tileinfo,tile_index,1*0x1000+m_videoram,m_vreg[0xbc/2]&2);
}
TILE_GET_INFO_MEMBER(namcona1_state::tilemap_get_info2)
{
UINT16 *videoram = m_videoram;
tilemap_get_info(tileinfo,tile_index,2*0x1000+videoram,m_vreg[0xbc/2]&4);
tilemap_get_info(tileinfo,tile_index,2*0x1000+m_videoram,m_vreg[0xbc/2]&4);
}
TILE_GET_INFO_MEMBER(namcona1_state::tilemap_get_info3)
{
UINT16 *videoram = m_videoram;
tilemap_get_info(tileinfo,tile_index,3*0x1000+videoram,m_vreg[0xbc/2]&8);
tilemap_get_info(tileinfo,tile_index,3*0x1000+m_videoram,m_vreg[0xbc/2]&8);
}
TILE_GET_INFO_MEMBER(namcona1_state::roz_get_info)
@ -82,10 +78,9 @@ TILE_GET_INFO_MEMBER(namcona1_state::roz_get_info)
/*************************************************************************/
WRITE16_MEMBER(namcona1_state::namcona1_videoram_w)
WRITE16_MEMBER(namcona1_state::videoram_w)
{
UINT16 *videoram = m_videoram;
COMBINE_DATA( &videoram[offset] );
COMBINE_DATA( &m_videoram[offset] );
if( offset<0x8000/2 )
{
m_bg_tilemap[offset/0x1000]->mark_tile_dirty(offset&0xfff);
@ -94,7 +89,7 @@ WRITE16_MEMBER(namcona1_state::namcona1_videoram_w)
{
m_bg_tilemap[4]->mark_all_dirty();
}
} /* namcona1_videoram_w */
} /* videoram_w */
/*************************************************************************/
@ -113,9 +108,9 @@ void namcona1_state::UpdatePalette( int offset )
m_palette->set_pen_color(offset+0x1000, r, g, b);
m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
} /* namcona1_paletteram_w */
}
WRITE16_MEMBER(namcona1_state::namcona1_paletteram_w)
WRITE16_MEMBER(namcona1_state::paletteram_w)
{
COMBINE_DATA( &m_paletteram[offset] );
if( m_vreg[0x8e/2] )
@ -129,7 +124,7 @@ WRITE16_MEMBER(namcona1_state::namcona1_paletteram_w)
}
READ16_MEMBER(namcona1_state::namcona1_gfxram_r)
READ16_MEMBER(namcona1_state::gfxram_r)
{
UINT16 type = m_vreg[0x0c/2];
if( type == 0x03 )
@ -145,9 +140,9 @@ READ16_MEMBER(namcona1_state::namcona1_gfxram_r)
return m_cgram[offset];
}
return 0x0000;
} /* namcona1_gfxram_r */
} /* gfxram_r */
WRITE16_MEMBER(namcona1_state::namcona1_gfxram_w)
WRITE16_MEMBER(namcona1_state::gfxram_w)
{
UINT16 type = m_vreg[0x0c/2];
UINT16 old_word;
@ -174,7 +169,7 @@ WRITE16_MEMBER(namcona1_state::namcona1_gfxram_w)
m_gfxdecode->gfx(1)->mark_dirty(offset/0x20);
}
}
} /* namcona1_gfxram_w */
} /* gfxram_w */
void namcona1_state::video_start()
{
@ -190,7 +185,19 @@ void namcona1_state::video_start()
m_shaperam.resize(0x8000);
m_gfxdecode->gfx(2)->set_source(&m_shaperam[0]);
} /* namcona1_vh_start */
save_item(NAME(m_shaperam));
save_item(NAME(m_palette_is_dirty));
machine().save().register_postload(save_prepost_delegate(FUNC(namcona1_state::postload), this));
} /* video_start */
void namcona1_state::postload()
{
for (int i = 0; i < 3; i++)
m_gfxdecode->gfx(i)->mark_all_dirty();
}
/*************************************************************************/
@ -510,7 +517,7 @@ void namcona1_state::draw_background(screen_device &screen, bitmap_ind16 &bitmap
}
} /* draw_background */
UINT32 namcona1_state::screen_update_namcona1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 namcona1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int which;
int priority;

369
src/mess/drivers/force68k.c Normal file
View File

@ -0,0 +1,369 @@
// license:BSD-3-Clause
// copyright-holders:Joakim Larsson Edström
/***************************************************************************
Force SYS68K CPU-1/CPU-6 VME SBC drivers, initially based on the 68ksbc.c
13/06/2015
The info found on the links below is for a later revisions of the board I have
but I hope it is somewhat compatible so I can get it up and running at least.
My CPU-1 board has proms from 1983 and no rev markings so probably the original.
http://bitsavers.trailing-edge.com/pdf/forceComputers/1988_Force_VMEbus_Products.pdf
http://www.artisantg.com/info/P_wUovN.pdf
Some info from those documents:
Address Map
----------------------------------------------------------
Address Range Description
----------------------------------------------------------
000 000 - 000 007 Initialisation vectors from system EPROM
000 008 - 01F FFF Dynamic RAM on CPU-1 B
000 008 - 07F FFF Dynamic RAM on CPU-1 D
080 008 - 09F FFF SYSTEM EPROM Area
OAO 000 - OBF FFF USER EPROMArea
0C0 041 - 0C0 043 ACIA (P3) Host
0C0 080 - 0C0 082 ACIA (P4) Terminal
0C0 101 - 0C0 103 ACIA (P5) Remote device (eg serial printer)
0C0 401 - 0C0 42F RTC
OEO 001 - 0E0 035 PI/T (eg centronics printer)
OEO 200 - 0E0 2FF FPU
OEO 300 - 0E0 300 Reset Off
OEO 380 - 0E0 380 Reset On
100 000 - FEF FFF VMEbus addresses (A24)
FFO 000 - FFF FFF VMEbus Short I/O (A16)
----------------------------------------------------------
Interrupt sources
----------------------------------------------------------
Description Device Lvl IRQ VME board
/Board Vector Address
----------------------------------------------------------
On board Sources
ABORT Switch 7 31
Real Time Clock (RTC) 58167A 6 30
Parallel/Timer (PI/T) 68230 5 29
Terminal ACIA 6850 4 28
Remote ACIA 6850 3 27
Host ACIA 6850 2 26
ACFAIL, SYSFAIL VME 5 29
Off board Sources (other VME boards)
6 Port Serial I/O board SIO 4 64-75 0xb00000
8 Port Serial I/O board ISIO 4 76-83 0x960000
Disk Controller WFC 3 119 0xb01000
SCSI Controller ISCSI 4 119 0xa00000
Slot 1 Controller Board ASCU 7 31 0xb02000
----------------------------------------------------------
10. The VMEbus
---------------
The implemented VMEbus Interface includes 24 address, 16 data,
6 address modifier and the asynchronous control signals.
A single level bus arbiter is provided to build multi master
systems. In addition to the bus arbiter, a separate slave bus
arbitration allows selection of the arbitration level (0-3).
The address modifier range .,Short 110 Access« can be selected
via a jumper for variable system generation. The 7 interrupt
request levels of the VMEbus are fully supported from the
SYS68K1CPU-1 B/D. For multi-processing, each IRQ signal can be
enabled/disabled via a jumper field.
Additionally, the SYS68K1CPU-1 B/D supports the ACFAIL, SYSRESET,
SYSFAIL and SYSCLK signal (16 MHz).
TODO:
- Finish 2 x ACIA6850, host and remote interface left, terminal works
- Finish 1 x 68230 Motorola, Parallel Interface / Timer
- Connect Port B to a Centronics printer interface
- Add 1 x Abort Switch
- Add configurable serial connector between ACIA:s and
- Real terminal emulator, ie rs232 "socket"
- Debug console
- Add VME bus driver
****************************************************************************/
#include "emu.h"
#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
#include "machine/mm58167.h"
#include "machine/68230pit.h"
#include "machine/6850acia.h"
#include "machine/clock.h"
#define BAUDGEN_CLOCK XTAL_1_8432MHz
/*
The baudrate on the Force68k CPU-1 to CPU-6 is generated by a
Motorola 14411 bitrate generator, the CPU-6 documents matches the circuits
that I could find on the CPU-1 board. Here how I calculated the clock for
the factory settings. No need to add selectors until terminal.c supports
configurable baudrates. Fortunality CPU-1 was shipped with 9600N8!
From the documents:
3 RS232C interfaces, strap selectable baud rate from 110-9600 or 600-19200 baud
Default Jumper Settings of B7:
--------------------------------
GND 10 - 11 RSA input on 14411
F1 on 14411 1 - 20 Baud selector of the terminal port
F1 on 14411 3 - 18 Baud selector of the host port
F1 on 14411 5 - 16 Baud selector of the remote port
The RSB input on the 14411 is kept high always so RSA=0, RSB=1 and a 1.8432MHz crystal
generates 153600 on the F1 output pin which by default strapping is connected to all
three 6850 acias on the board. These can be strapped separatelly to speedup downloads.
The selectable outputs from 14411, F1-F16:
X16 RSA=0,RSB=1: 153600, 115200, 76800, 57600, 38400, 28800, 19200, 9600, 4800, 3200, 2153.3, 1758.8, 1200, 921600, 1843000
X64 RSA=1,RSB=1: 614400, 460800, 307200, 230400, 153600, 115200, 76800, 57600, 38400, 28800, 19200, 9600, 4800, 921600, 1843000
However, the datasheet says baudrate is strapable for 110-9600 but the output is 153600
so the system rom MUST setup the acia to divide by 16 to generate the correct baudrate.
*/
#define ACIA_CLOCK (BAUDGEN_CLOCK / 12)
class force68k_state : public driver_device
{
public:
force68k_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
// m_rtc(*this, "rtc")
m_maincpu(*this, "maincpu"),
m_rtc(*this, "rtc"),
m_pit(*this, "pit"),
m_aciahost(*this, "aciahost"),
m_aciaterm(*this, "aciaterm"),
m_aciaremt(*this, "aciaremt")
{
}
DECLARE_READ16_MEMBER(bootvect_r);
virtual void machine_start();
DECLARE_WRITE_LINE_MEMBER(write_aciahost_clock);
DECLARE_WRITE_LINE_MEMBER(write_aciaterm_clock);
DECLARE_WRITE_LINE_MEMBER(write_aciaremt_clock);
private:
required_device<cpu_device> m_maincpu;
required_device<mm58167_device> m_rtc;
required_device<pit68230_device> m_pit;
required_device<acia6850_device> m_aciahost;
required_device<acia6850_device> m_aciaterm;
required_device<acia6850_device> m_aciaremt;
// Pointer to System ROMs needed by bootvect_r
UINT16 *m_sysrom;
};
static ADDRESS_MAP_START(force68k_mem, AS_PROGRAM, 16, force68k_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x000007) AM_ROM AM_READ(bootvect_r) /* Vectors mapped from System EPROM */
AM_RANGE(0x000008, 0x01ffff) AM_RAM /* DRAM */
AM_RANGE(0x080000, 0x09ffff) AM_ROM /* System EPROM Area */
// AM_RANGE(0x0a0000, 0x0bffff) AM_ROM /* User EPROM Area */
AM_RANGE(0x0c0040, 0x0c0041) AM_DEVREADWRITE8("aciahost", acia6850_device, status_r, control_w, 0x00ff)
AM_RANGE(0x0c0042, 0x0c0043) AM_DEVREADWRITE8("aciahost", acia6850_device, data_r, data_w, 0x00ff)
AM_RANGE(0x0c0080, 0x0c0081) AM_DEVREADWRITE8("aciaterm", acia6850_device, status_r, control_w, 0xff00)
AM_RANGE(0x0c0082, 0x0c0083) AM_DEVREADWRITE8("aciaterm", acia6850_device, data_r, data_w, 0xff00)
AM_RANGE(0x0c0100, 0x0c0101) AM_DEVREADWRITE8("aciaremt", acia6850_device, status_r, control_w, 0x00ff)
AM_RANGE(0x0c0102, 0x0c0103) AM_DEVREADWRITE8("aciaremt", acia6850_device, data_r, data_w, 0x00ff)
AM_RANGE(0x0c0400, 0x0c042f) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff)
AM_RANGE(0x0e0000, 0x0e0035) AM_DEVREADWRITE8("pit", pit68230_device, data_r, data_w, 0x00ff)
// AM_RANGE(0x0e0200, 0x0e0380) AM_READWRITE(fpu_r, fpu_w) /* optional FPCP 68881 FPU interface */
// AM_RANGE(0x100000, 0xfeffff) /* VMEbus Rev B addresses (24 bits) */
// AM_RANGE(0xff0000, 0xffffff) /* VMEbus Rev B addresses (16 bits) */
ADDRESS_MAP_END
/* Input ports */
static INPUT_PORTS_START( force68k )
INPUT_PORTS_END
void force68k_state::machine_start()
{
m_sysrom = (UINT16*)(memregion("maincpu")->base() + 0x080000);
}
READ16_MEMBER(force68k_state::bootvect_r)
{
return m_sysrom[offset];
}
WRITE_LINE_MEMBER(force68k_state::write_aciahost_clock)
{
m_aciahost->write_txc(state);
m_aciahost->write_rxc(state);
}
WRITE_LINE_MEMBER(force68k_state::write_aciaterm_clock)
{
m_aciaterm->write_txc(state);
m_aciaterm->write_rxc(state);
}
WRITE_LINE_MEMBER(force68k_state::write_aciaremt_clock)
{
m_aciaremt->write_txc(state);
m_aciaremt->write_rxc(state);
}
static MACHINE_CONFIG_START( fccpu1, force68k_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz / 2)
MCFG_CPU_PROGRAM_MAP(force68k_mem)
/* P3/Host Port config */
MCFG_DEVICE_ADD("aciahost", ACIA6850, 0)
MCFG_DEVICE_ADD("aciahost_clock", CLOCK, ACIA_CLOCK)
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(force68k_state, write_aciahost_clock))
/* P4/Terminal Port config */
MCFG_DEVICE_ADD("aciaterm", ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232trm", rs232_port_device, write_txd))
MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232trm", rs232_port_device, write_rts))
MCFG_RS232_PORT_ADD("rs232trm", default_rs232_devices, "terminal")
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("aciaterm", acia6850_device, write_rxd))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("aciaterm", acia6850_device, write_cts))
MCFG_DEVICE_ADD("aciaterm_clock", CLOCK, ACIA_CLOCK)
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(force68k_state, write_aciaterm_clock))
/* P5/Remote Port config */
MCFG_DEVICE_ADD("aciaremt", ACIA6850, 0)
#define PRINTER 0
#if PRINTER
MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232rmt", rs232_port_device, write_txd))
MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232rmt", rs232_port_device, write_rts))
MCFG_RS232_PORT_ADD("rs232rmt", default_rs232_devices, "printer")
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("aciaremt", acia6850_device, write_rxd))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("aciaremt", acia6850_device, write_cts))
#endif
MCFG_DEVICE_ADD("aciaremt_clock", CLOCK, ACIA_CLOCK)
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(force68k_state, write_aciaterm_clock))
/* RTC Real Time Clock device */
MCFG_DEVICE_ADD("rtc", MM58167, XTAL_32_768kHz)
/* PIT Parallel Interface and Timer device, assuming strapped for on board clock */
MCFG_DEVICE_ADD("pit", PIT68230, XTAL_16MHz / 2)
MACHINE_CONFIG_END
#if 0
static MACHINE_CONFIG_START( fccpu6, force68k_state )
MCFG_CPU_ADD("maincpu", M68000, XTAL_8MHz) /* Jumper B10 Mode B */
MCFG_CPU_PROGRAM_MAP(force68k_mem)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( fccpu6a, force68k_state )
MCFG_CPU_ADD("maincpu", M68000, XTAL_12_5MHz) /* Jumper B10 Mode A */
MCFG_CPU_PROGRAM_MAP(force68k_mem)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( fccpu6v, force68k_state )
MCFG_CPU_ADD("maincpu", M68010, XTAL_8MHz) /* Jumper B10 Mode B */
MCFG_CPU_PROGRAM_MAP(force68k_mem)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( fccpu6va, force68k_state )
MCFG_CPU_ADD("maincpu", M68010, XTAL_12_5MHz) /* Jumper B10 Mode A */
MCFG_CPU_PROGRAM_MAP(force68k_mem)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( fccpu6vb, force68k_state )
MCFG_CPU_ADD("maincpu", M68010, XTAL_12_5MHz) /* Jumper B10 Mode A */
MCFG_CPU_PROGRAM_MAP(force68k_mem)
MACHINE_CONFIG_END
#endif
/* ROM definitions */
ROM_START( fccpu1 )
ROM_REGION(0x1000000, "maincpu", 0)
ROM_LOAD16_BYTE( "fccpu1V1.0L.j8.bin", 0x080001, 0x2000, CRC(3ac6f08f) SHA1(502f6547b508d8732bd68bbbb2402d8c30fefc3b) )
ROM_LOAD16_BYTE( "fccpu1V1.0L.j9.bin", 0x080000, 0x2000, CRC(035315fb) SHA1(90dc44d9c25d28428233e6846da6edce2d69e440) )
/* COMMAND SUMMARY DESCRIPTION (From CPU-1B datasheet, ROMs were dumped
from a CPU-1 board so some features might be missing or different)
---------------------------------------------------------------------------
BF <address1> <address2> <data> <CR> Block Fill memory - from addr1 through addr2 with data
BM <address1> <address2> <address 3> <CR> Block Move - move from addr1 through addr2to addr3
BR [<address> [; <count>] ... ] <CR> Set/display Breakpoint
BS <address1> <address2> <data> <CR> Block Search - search addr1 through addr2 for data
BT <address1> <address2> <CR> Block Test of memory
DC <expression> <CR> Data Conversion
DF <CR> Display Formatted registers
DU [n] <address1> <address2>[<string>] <CR> Dump memory to object file
GO [<address] <CR> Execute program
GD [<address] <CR> Go Direct
GT <address> <CR> Exec prog: temporary breakpoint
HE<CR> Help; display monitor commands
LO [n] [;<options] <CR> Load Object file
MD <address> [<count» <CR> Memory Display
MM <address> [<data» [;<options» <CR> Memory Modify
MS <address> <data1 > <data2> < ... <CR> Memory Set - starting at addr with data 1. data 2 ...
NOBR [<address> ... ] <CR> Remove Breakpoint
NOPA <CR> Printer Detach (Centronics on PIT/P2)
OF <CR> Offset
PA <CR> Printer Attach (Centronics on PIT/P2)
PF[n] <CR> Set/display Port Format
RM <CR> Register Modify
TM [<exit character» <CR> Transparent Mode
TR [<count] <CR> Trace
TT <address> <CR> Trace: temporary breakpoint
VE [n] [<string] <CR> Verify memory/object file
----------------------------------------------------------------------------
.AO - .A7 [<expression] <CR> Display/set address register
.00 - .07 [<expression] <CR> Display/set data register
.RO - .R6 [<expression] <CR> Display/set offset register
.PC [<expression] <CR> Display/set program counter
.SR [<expression] <CR> Display/set status register
.SS [<expression] <CR> Display/set supervisor stack
.US [<expression] <CR> Display/set user stack
----------------------------------------------------------------------------
MD <address> [<count>]; D1 <CR> Disassemble memory location
MM <address>; DI <CR> Disassemble/Assemble memory location
----------------------------------------------------------------------------
*/
ROM_END
#if 0
ROM_START( fccpu6 )
ROM_REGION(0x1000000, "maincpu", 0)
ROM_END
ROM_START( fccpu6a )
ROM_REGION(0x1000000, "maincpu", 0)
ROM_END
ROM_START( fccpu6v )
ROM_REGION(0x1000000, "maincpu", 0)
ROM_END
ROM_START( fccpu6va )
ROM_REGION(0x1000000, "maincpu", 0)
ROM_END
ROM_START( fccpu6vb )
ROM_REGION(0x1000000, "maincpu", 0)
ROM_END
#endif
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP( 1983, fccpu1, 0, 0, fccpu1, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-1", GAME_NO_SOUND_HW | GAME_TYPE_COMPUTER )
//COMP( 1989, fccpu6, 0, 0, fccpu6, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6", GAME_IS_SKELETON )
//COMP( 1989, fccpu6a, 0, 0, fccpu6a, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6a", GAME_IS_SKELETON )
//COMP( 1989, fccpu6v, 0, 0, fccpu6v, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6v", GAME_IS_SKELETON )
//COMP( 1989, fccpu6va, 0, 0, fccpu6va, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6va", GAME_IS_SKELETON )
//COMP( 1989, fccpu6vb, 0, 0, fccpu6vb, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6vb", GAME_IS_SKELETON )

View File

@ -197,7 +197,7 @@ ROM_START( sdk80 )
ROM_LOAD("s2513.d2", 0x0000, 0x0200, CRC(a7e567fc) SHA1(b18aae0a2d4f92f5a7e22640719bbc4652f3f4ee))
/* 256x4 PROM located on the video board, schematic location P7, to be moved into separate device later */
ROM_REGION( 0x0100, "proms", 0 )
ROM_REGION( 0x0120, "proms", 0 )
ROM_LOAD( "6300__d7.p7", 0x0020, 0x0100, CRC(3eb3a8e4) SHA1(19097b5f60d1030f8b82d9f1d3a241f93e5c75d6) )
ROM_END

View File

@ -9,7 +9,8 @@
* 3*uPD444C 1024x4 Static CMOS SRAM
* board is packed with discrete components
x
TODO:
- still too much to list here
***************************************************************************/
@ -162,7 +163,7 @@ WRITE8_MEMBER(tb303_state::switch_w)
// MCU G: leds state
// MCU H: input/led mux
if (offset == NEC_UCOM4_PORTH)
m_inp_mux = data;
m_inp_mux = data = data ^ 0xf;
m_port[offset] = data;
update_leds();
@ -304,7 +305,7 @@ MACHINE_CONFIG_END
ROM_START( tb303 )
ROM_REGION( 0x0800, "maincpu", 0 )
ROM_LOAD( "d650c-133.ic8", 0x0000, 0x0800, CRC(0805b37a) SHA1(9a0c1891b56446535cef66a11b8366e1b22cc23f) )
ROM_LOAD( "d650c-133.ic8", 0x0000, 0x0800, CRC(268a8d8b) SHA1(7a4236b2bc9a5cd4c80c63ca1a193e03becfcb4c) )
ROM_END

View File

@ -101,6 +101,25 @@ file_error osd_write(osd_file *file, const void *buffer, UINT64 offset, UINT32 l
}
//============================================================
// osd_truncate
//============================================================
file_error osd_truncate(osd_file *file, UINT64 offset)
{
UINT32 result;
if (!file)
return FILERR_FAILURE;
result = ftruncate(fileno((FILE *)file), offset);
if (result)
return FILERR_FAILURE;
return FILERR_NONE;
}
//============================================================
// osd_rmfile
//============================================================

View File

@ -6,7 +6,7 @@
.\" Cesare Falco <c.falco@ubuntu.com>, February 2011
.\"
.\"
.TH CASTOOL 1 2015-05-20 0.162 "MESS Generic cassette manipulation tool"
.TH CASTOOL 1 2015-07-22 0.164 "MESS Generic cassette manipulation tool"
.\"
.\"
.\" NAME chapter

View File

@ -6,7 +6,7 @@
.\" Ashley T. Howes <debiandev@ashleyhowes.com>, February 2005
.\" updated by Cesare Falco <c.falco@ubuntu.com>, February 2007
.\"
.TH CHDMAN 1 2015-05-20 0.162 "MAME Compressed Hunks of Data (CHD) manager"
.TH CHDMAN 1 2015-07-22 0.164 "MAME Compressed Hunks of Data (CHD) manager"
.\"
.\" NAME chapter
.SH NAME

View File

@ -6,7 +6,7 @@
.\" Cesare Falco <c.falco@ubuntu.com>, April 2014
.\"
.\"
.TH FLOPTOOL 1 2015-05-20 0.162 "MESS Generic floppy manipulation tool"
.TH FLOPTOOL 1 2015-07-22 0.164 "MESS Generic floppy manipulation tool"
.\"
.\"
.\" NAME chapter

View File

@ -6,7 +6,7 @@
.\" Cesare Falco <c.falco@ubuntu.com>, February 2011
.\"
.\"
.TH IMGTOOL 1 2015-05-20 0.162 "MESS media image manipulation tool"
.TH IMGTOOL 1 2015-07-22 0.164 "MESS media image manipulation tool"
.\"
.\"
.\" NAME chapter

View File

@ -8,7 +8,7 @@
.\" References
.\" http://aarongiles.com/?p=159
.\"
.TH JEDUTIL 1 2015-05-20 0.162 "MAME JEDEC file utilities"
.TH JEDUTIL 1 2015-07-22 0.164 "MAME JEDEC file utilities"
.\"
.\" NAME chapter
.SH NAME

View File

@ -3,7 +3,7 @@
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.\"
.TH LDRESAMPLE 1 2015-05-20 0.162 "MAME laserdisc audio manipulation tool"
.TH LDRESAMPLE 1 2015-07-22 0.164 "MAME laserdisc audio manipulation tool"
.\"
.\" Please adjust this date whenever revising the manpage.
.\"

View File

@ -5,7 +5,7 @@
.\" Man page created from source and usage information by
.\" Cesare Falco <c.falco@ubuntu.com>, August 2008
.\"
.TH LDVERIFY 1 2015-05-20 0.162 "MAME laserdisc data checker"
.TH LDVERIFY 1 2015-07-22 0.164 "MAME laserdisc data checker"
.\"
.\" NAME chapter
.SH NAME

View File

@ -13,7 +13,7 @@
.\" and updated by Andrew Burton <burtona@gol.com>, July 2003
.\"
.\"
.TH MAME 6 2015-05-20 0.162 "MAME \- The Multiple Arcade Machine Emulator"
.TH MAME 6 2015-07-22 0.164 "MAME \- The Multiple Arcade Machine Emulator"
.\"
.\"
.\" NAME chapter

View File

@ -9,7 +9,7 @@
.\" References
.\" http://www.mame.net/mamefaq.html
.\"
.TH ROMCMP 1 2015-05-20 0.162 "MAME romset checking tool"
.TH ROMCMP 1 2015-07-22 0.164 "MAME romset checking tool"
.\"
.\" NAME chapter
.SH NAME

View File

@ -5,7 +5,7 @@
.\" Man page created from source and usage information
.\" Cesare Falco <c.falco@ubuntu.com>, February 2007
.\"
.TH TESTKEYS 1 2015-05-20 0.162 "MAME SDL keycode scanner"
.TH TESTKEYS 1 2015-07-22 0.164 "MAME SDL keycode scanner"
.\"
.\" NAME chapter
.SH NAME