mirror of
https://github.com/holub/mame
synced 2025-05-29 09:03:08 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
16adb537bc
8
3rdparty/bgfx/src/renderer_null.cpp
vendored
8
3rdparty/bgfx/src/renderer_null.cpp
vendored
@ -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
|
||||
{
|
||||
}
|
||||
|
||||
|
5
3rdparty/bx/include/bx/os.h
vendored
5
3rdparty/bx/include/bx/os.h
vendored
@ -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
|
||||
|
7
3rdparty/bx/include/bx/platform.h
vendored
7
3rdparty/bx/include/bx/platform.h
vendored
@ -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
|
||||
|
12
3rdparty/portmidi/porttime/ptlinux.c
vendored
12
3rdparty/portmidi/porttime/ptlinux.c
vendored
@ -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;
|
||||
}
|
||||
|
||||
|
24
makefile
24
makefile
@ -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
|
||||
#-------------------------------------------------
|
||||
|
@ -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",
|
||||
|
@ -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
|
||||
|
@ -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",
|
||||
|
@ -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
175
src/emu/machine/68230pit.c
Normal 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;
|
||||
}
|
||||
|
||||
|
75
src/emu/machine/68230pit.h
Normal file
75
src/emu/machine/68230pit.h
Normal 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__
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
369
src/mess/drivers/force68k.c
Normal 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 )
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
//============================================================
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
.\"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user