mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
6f0fd1a366
10
makefile
10
makefile
@ -28,6 +28,7 @@
|
||||
# NO_OPENGL = 1
|
||||
# USE_DISPATCH_GL = 0
|
||||
# DIRECTINPUT = 7
|
||||
# USE_SDL = 1
|
||||
# SDL2_MULTIAPI = 1
|
||||
# NO_USE_MIDI = 1
|
||||
# DONT_USE_NETWORK = 1
|
||||
@ -57,6 +58,7 @@
|
||||
# SDL_FRAMEWORK_PATH = $(HOME)/Library/Frameworks
|
||||
# SDL_LIBVER = sdl
|
||||
# MACOSX_USE_LIBSDL = 1
|
||||
# CYGWIN_BUILD = 1
|
||||
|
||||
# TARGETOS = windows
|
||||
# CROSS_BUILD = 1
|
||||
@ -406,6 +408,14 @@ ifdef DIRECTINPUT
|
||||
PARAMS += --DIRECTINPUT='$(DIRECTINPUT)'
|
||||
endif
|
||||
|
||||
ifdef USE_SDL
|
||||
PARAMS += --USE_SDL='$(USE_SDL)'
|
||||
endif
|
||||
|
||||
ifdef CYGWIN_BUILD
|
||||
PARAMS += --CYGWIN_BUILD='$(CYGWIN_BUILD)'
|
||||
endif
|
||||
|
||||
ifdef MESA_INSTALL_ROOT
|
||||
PARAMS += --MESA_INSTALL_ROOT='$(MESA_INSTALL_ROOT)'
|
||||
endif
|
||||
|
@ -56,7 +56,7 @@ newoption {
|
||||
|
||||
newoption {
|
||||
trigger = "osd",
|
||||
description = "Choose target OSD",
|
||||
description = "Choose OSD layer implementation",
|
||||
}
|
||||
|
||||
newoption {
|
||||
@ -68,14 +68,17 @@ newoption {
|
||||
{ "android-x86", "Android - x86" },
|
||||
{ "asmjs", "Emscripten/asm.js" },
|
||||
{ "freebsd", "FreeBSD" },
|
||||
{ "netbsd", "NetBSD" },
|
||||
{ "openbsd", "OpenBSD" },
|
||||
{ "nacl", "Native Client" },
|
||||
{ "nacl-arm", "Native Client - ARM" },
|
||||
{ "pnacl", "Native Client - PNaCl" },
|
||||
{ "linux", "Linux" },
|
||||
{ "ios", "iOS" },
|
||||
{ "linux", "Linux" },
|
||||
{ "ios", "iOS" },
|
||||
{ "macosx", "OSX" },
|
||||
{ "windows", "Windows" },
|
||||
|
||||
{ "os2", "OS/2 eComStation" },
|
||||
{ "haiku", "Haiku" },
|
||||
},
|
||||
}
|
||||
|
||||
@ -783,26 +786,12 @@ configuration { "mingw*" }
|
||||
"-static-libgcc",
|
||||
"-static-libstdc++",
|
||||
}
|
||||
if _OPTIONS["osd"]=="sdl" then
|
||||
links {
|
||||
"SDL2",
|
||||
"imm32",
|
||||
"version",
|
||||
"ole32",
|
||||
"oleaut32",
|
||||
}
|
||||
end
|
||||
links {
|
||||
"user32",
|
||||
"gdi32",
|
||||
"dsound",
|
||||
"dxguid",
|
||||
"winmm",
|
||||
"advapi32",
|
||||
"comctl32",
|
||||
"shlwapi",
|
||||
"wsock32",
|
||||
"comdlg32",
|
||||
}
|
||||
|
||||
configuration { "vs*" }
|
||||
@ -815,15 +804,10 @@ configuration { "vs*" }
|
||||
}
|
||||
links {
|
||||
"user32",
|
||||
"gdi32",
|
||||
"dsound",
|
||||
"dxguid",
|
||||
"winmm",
|
||||
"advapi32",
|
||||
"comctl32",
|
||||
"shlwapi",
|
||||
"wsock32",
|
||||
"comdlg32",
|
||||
}
|
||||
|
||||
buildoptions {
|
||||
|
@ -181,6 +181,14 @@ function osdmodulestargetconf()
|
||||
end
|
||||
end
|
||||
|
||||
if _OPTIONS["targetos"]=="windows" then
|
||||
links {
|
||||
"gdi32",
|
||||
"dsound",
|
||||
"dxguid",
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
@ -43,6 +43,16 @@ function maintargetosdoptions(_target)
|
||||
end
|
||||
|
||||
if _OPTIONS["targetos"]=="windows" then
|
||||
if _OPTIONS["SDL_LIBVER"]=="sdl2" then
|
||||
links {
|
||||
"SDL2.dll",
|
||||
}
|
||||
else
|
||||
links {
|
||||
"SDL.dll",
|
||||
}
|
||||
end
|
||||
|
||||
configuration { "mingw*" }
|
||||
linkoptions{
|
||||
"-municode",
|
||||
@ -59,10 +69,6 @@ function maintargetosdoptions(_target)
|
||||
libdirs {
|
||||
path.join(_OPTIONS["SDL_INSTALL_ROOT"],"lib","x64")
|
||||
}
|
||||
configuration { "vs*" }
|
||||
links {
|
||||
"SDL2",
|
||||
}
|
||||
configuration {}
|
||||
elseif _OPTIONS["targetos"]=="haiku" then
|
||||
links {
|
||||
@ -102,7 +108,7 @@ newoption {
|
||||
}
|
||||
|
||||
if not _OPTIONS["NO_X11"] then
|
||||
if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="haiku" or _OPTIONS["targetos"]=="emscripten" or _OPTIONS["targetos"]=="os2" then
|
||||
if _OPTIONS["targetos"]=="windows" or _OPTIONS["targetos"]=="macosx" or _OPTIONS["targetos"]=="haiku" or _OPTIONS["targetos"]=="asmjs" or _OPTIONS["targetos"]=="os2" then
|
||||
_OPTIONS["NO_X11"] = "1"
|
||||
else
|
||||
_OPTIONS["NO_X11"] = "0"
|
||||
@ -193,7 +199,7 @@ elseif _OPTIONS["targetos"]=="netbsd" then
|
||||
SDL_NETWORK = "pcap"
|
||||
elseif _OPTIONS["targetos"]=="haiku" then
|
||||
SYNC_IMPLEMENTATION = "ntc"
|
||||
elseif _OPTIONS["targetos"]=="emscripten" then
|
||||
elseif _OPTIONS["targetos"]=="asmjs" then
|
||||
SYNC_IMPLEMENTATION = "mini"
|
||||
elseif _OPTIONS["targetos"]=="windows" then
|
||||
BASE_TARGETOS = "win32"
|
||||
@ -282,13 +288,6 @@ elseif BASE_TARGETOS=="os2" then
|
||||
}
|
||||
end
|
||||
|
||||
configuration { "mingw*" }
|
||||
linkoptions {
|
||||
"-static"
|
||||
}
|
||||
|
||||
configuration { }
|
||||
|
||||
|
||||
project ("osd_" .. _OPTIONS["osd"])
|
||||
uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
|
||||
@ -442,6 +441,15 @@ if _OPTIONS["with-tools"] then
|
||||
}
|
||||
|
||||
if _OPTIONS["targetos"]=="windows" then
|
||||
if _OPTIONS["SDL_LIBVER"]=="sdl2" then
|
||||
links {
|
||||
"SDL2.dll",
|
||||
}
|
||||
else
|
||||
links {
|
||||
"SDL.dll",
|
||||
}
|
||||
end
|
||||
linkoptions{
|
||||
"-municode",
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ if BASE_TARGETOS=="unix" then
|
||||
buildoptions {
|
||||
backtick(sdlconfigcmd() .. " --cflags"),
|
||||
}
|
||||
if _OPTIONS["targetos"]~="emscripten" then
|
||||
if _OPTIONS["targetos"]~="asmjs" then
|
||||
buildoptions {
|
||||
backtick("pkg-config --cflags fontconfig"),
|
||||
}
|
||||
@ -105,6 +105,10 @@ if _OPTIONS["targetos"]=="windows" then
|
||||
"main=utf8_main",
|
||||
}
|
||||
|
||||
configuration { "Debug" }
|
||||
defines {
|
||||
"MALLOC_DEBUG",
|
||||
}
|
||||
configuration { "vs*" }
|
||||
includedirs {
|
||||
path.join(_OPTIONS["SDL_INSTALL_ROOT"],"include")
|
||||
|
@ -21,6 +21,18 @@ function maintargetosdoptions(_target)
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
if _OPTIONS["USE_SDL"] == "1" then
|
||||
links {
|
||||
"SDL.dll",
|
||||
}
|
||||
end
|
||||
|
||||
links {
|
||||
"comctl32",
|
||||
"comdlg32",
|
||||
}
|
||||
|
||||
local rcfile = MAME_DIR .. "src/" .. _target .. "/osd/windows/" .. _target ..".rc"
|
||||
|
||||
if os.isfile(rcfile) then
|
||||
@ -46,7 +58,7 @@ newoption {
|
||||
description = "Minimum DirectInput version to support",
|
||||
allowed = {
|
||||
{ "7", "Support DirectInput 7 or later" },
|
||||
{ "8", "Support DirectInput 8 or later" },
|
||||
{ "8", "Support DirectInput 8 or later" },
|
||||
},
|
||||
}
|
||||
|
||||
@ -54,6 +66,42 @@ if not _OPTIONS["DIRECTINPUT"] then
|
||||
_OPTIONS["DIRECTINPUT"] = "8"
|
||||
end
|
||||
|
||||
newoption {
|
||||
trigger = "USE_SDL",
|
||||
description = "Enable SDL sound output",
|
||||
allowed = {
|
||||
{ "0", "Disable SDL sound output" },
|
||||
{ "1", "Enable SDL sound output" },
|
||||
},
|
||||
}
|
||||
|
||||
if not _OPTIONS["USE_SDL"] then
|
||||
_OPTIONS["USE_SDL"] = "0"
|
||||
end
|
||||
|
||||
newoption {
|
||||
trigger = "CYGWIN_BUILD",
|
||||
description = "Build with Cygwin tools",
|
||||
allowed = {
|
||||
{ "0", "Build with MinGW tools" },
|
||||
{ "1", "Build with Cygwin tools" },
|
||||
},
|
||||
}
|
||||
|
||||
if not _OPTIONS["CYGWIN_BUILD"] then
|
||||
_OPTIONS["CYGWIN_BUILD"] = "0"
|
||||
end
|
||||
|
||||
|
||||
if _OPTIONS["CYGWIN_BUILD"] == "1" then
|
||||
buildoptions {
|
||||
"-mmo-cygwin",
|
||||
}
|
||||
linkoptions {
|
||||
"-mno-cygwin",
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
project ("osd_" .. _OPTIONS["osd"])
|
||||
uuid (os.uuid("osd_" .. _OPTIONS["osd"]))
|
||||
@ -163,7 +211,7 @@ project ("ocore_" .. _OPTIONS["osd"])
|
||||
MAME_DIR .. "src/osd/modules/lib/osdlib_win32.c",
|
||||
}
|
||||
|
||||
if _OPTIONS["NOASM"]=="1" then
|
||||
if _OPTIONS["NOASM"] == "1" then
|
||||
files {
|
||||
MAME_DIR .. "src/osd/modules/sync/work_mini.c",
|
||||
}
|
||||
|
@ -2,11 +2,15 @@ defines {
|
||||
"UNICODE",
|
||||
"_UNICODE",
|
||||
"OSD_WINDOWS",
|
||||
"USE_SDL=0",
|
||||
"main=utf8_main",
|
||||
"_WIN32_WINNT=0x0501",
|
||||
}
|
||||
|
||||
configuration { "Debug" }
|
||||
defines {
|
||||
"MALLOC_DEBUG",
|
||||
}
|
||||
|
||||
configuration { "vs*" }
|
||||
flags {
|
||||
"Unicode",
|
||||
@ -20,3 +24,16 @@ if not _OPTIONS["DONT_USE_NETWORK"] then
|
||||
"OSD_NET_USE_PCAP",
|
||||
}
|
||||
end
|
||||
|
||||
if _OPTIONS["USE_SDL"]=="1" then
|
||||
defines {
|
||||
"SDLMAME_SDL2=0",
|
||||
"USE_XINPUT=0",
|
||||
"USE_SDL=1",
|
||||
"USE_SDL_SOUND",
|
||||
}
|
||||
else
|
||||
defines {
|
||||
"USE_SDL=0",
|
||||
}
|
||||
end
|
||||
|
@ -489,12 +489,13 @@ function toolchain(_buildDir, _subDir)
|
||||
objdir (_buildDir .. "android-arm" .. "/obj")
|
||||
libdirs {
|
||||
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib",
|
||||
}
|
||||
includedirs {
|
||||
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/include",
|
||||
}
|
||||
buildoptions {
|
||||
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm",
|
||||
"-mthumb",
|
||||
"-march=armv7-a",
|
||||
"-mfloat-abi=softfp",
|
||||
@ -503,7 +504,6 @@ function toolchain(_buildDir, _subDir)
|
||||
"-Wundef",
|
||||
}
|
||||
linkoptions {
|
||||
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtbegin_so.o",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-arm/usr/lib/crtend_so.o",
|
||||
"-march=armv7-a",
|
||||
@ -515,17 +515,17 @@ function toolchain(_buildDir, _subDir)
|
||||
objdir (_buildDir .. "android-mips" .. "/obj")
|
||||
libdirs {
|
||||
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/mips",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/",
|
||||
}
|
||||
includedirs {
|
||||
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/mips/include",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/include",
|
||||
}
|
||||
buildoptions {
|
||||
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips",
|
||||
"-Wunused-value",
|
||||
"-Wundef",
|
||||
}
|
||||
linkoptions {
|
||||
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/crtbegin_so.o",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-mips/usr/lib/crtend_so.o",
|
||||
}
|
||||
@ -535,12 +535,13 @@ function toolchain(_buildDir, _subDir)
|
||||
objdir (_buildDir .. "android-x86" .. "/obj")
|
||||
libdirs {
|
||||
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/x86",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib",
|
||||
}
|
||||
includedirs {
|
||||
"$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/x86/include",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/include",
|
||||
}
|
||||
buildoptions {
|
||||
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86",
|
||||
"-march=i686",
|
||||
"-mtune=atom",
|
||||
"-mstackrealign",
|
||||
@ -550,7 +551,6 @@ function toolchain(_buildDir, _subDir)
|
||||
"-Wundef",
|
||||
}
|
||||
linkoptions {
|
||||
"--sysroot=$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtbegin_so.o",
|
||||
"$(ANDROID_NDK_ROOT)/platforms/" .. androidPlatform .. "/arch-x86/usr/lib/crtend_so.o",
|
||||
}
|
||||
|
@ -1196,7 +1196,7 @@ static INPUT_PORTS_START( cmv4_service )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats") // on some sets a DSW must be on/off to access this menu
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( cmv4_dsw1 )
|
||||
@ -3467,7 +3467,7 @@ static INPUT_PORTS_START( bingowng )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_PORTS_START( bingownga )
|
||||
static INPUT_PORTS_START( bingownga )
|
||||
PORT_INCLUDE( bingowng )
|
||||
|
||||
PORT_MODIFY("DSW4")
|
||||
@ -3995,16 +3995,18 @@ static INPUT_PORTS_START( nfb96 )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/* Displays tkt info on screen but has no settings or hopper controls */
|
||||
|
||||
/* Displays tkt info on screen but has no settings or hopper controls other than "Ticket Out By" DSW */
|
||||
/* All marked as "Unknown" until a manual or more information is found */
|
||||
static INPUT_PORTS_START( nfb96tx )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused coin switch
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused coin switch */
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP_ALL ) PORT_NAME("Stop All / Big")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop 1 / D-UP")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop 3 / Take / Select Card")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play (Bet)")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop 2 / Small")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop 2 / Small / Info")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start")
|
||||
|
||||
PORT_START("IN1")
|
||||
@ -4014,15 +4016,15 @@ static INPUT_PORTS_START( nfb96tx )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) PORT_NAME("Ticket In")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) /* Key In shows in test mode but not used by game */
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused keyin? - causes counter errors */
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused coin switch */
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused coin switch */
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused keyout? */
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")
|
||||
@ -4071,7 +4073,7 @@ static INPUT_PORTS_START( nfb96tx )
|
||||
PORT_DIPSETTING( 0x28, "125" )
|
||||
PORT_DIPSETTING( 0x30, "250" )
|
||||
PORT_DIPSETTING( 0x38, "500" )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:7") /* unknown */
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:7") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, "WARNING: Always Off" ) PORT_DIPLOCATION("DSW2:8") /* Listed that way in other manuals */
|
||||
@ -4079,91 +4081,80 @@ static INPUT_PORTS_START( nfb96tx )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DSW3")
|
||||
PORT_DIPNAME( 0x03, 0x02, "Minimum Play to Start" ) PORT_DIPLOCATION("DSW3:1,2") /* OK */
|
||||
PORT_DIPNAME( 0x03, 0x00, "Minimum Play to Start" ) PORT_DIPLOCATION("DSW3:1,2") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "1" )
|
||||
PORT_DIPSETTING( 0x01, "8" )
|
||||
PORT_DIPSETTING( 0x02, "16" )
|
||||
PORT_DIPSETTING( 0x03, "24" )
|
||||
PORT_DIPNAME( 0x0c, 0x08, "Max Coin In & Note In Points" ) PORT_DIPLOCATION("DSW3:3,4") /* OK */
|
||||
PORT_DIPNAME( 0x0c, 0x08, "Coin In Limit" ) PORT_DIPLOCATION("DSW3:3,4") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "1000" )
|
||||
PORT_DIPSETTING( 0x04, "5000" )
|
||||
PORT_DIPSETTING( 0x08, "10000" )
|
||||
PORT_DIPSETTING( 0x0c, "90000" )
|
||||
PORT_DIPNAME( 0xf0, 0x00, "Clear / Ticket Unit" ) PORT_DIPLOCATION("DSW3:5,6,7,8") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "1" )
|
||||
PORT_DIPSETTING( 0x10, "4" )
|
||||
PORT_DIPSETTING( 0x20, "5" )
|
||||
PORT_DIPSETTING( 0x30, "10" )
|
||||
PORT_DIPSETTING( 0x40, "15" )
|
||||
PORT_DIPSETTING( 0x50, "20" )
|
||||
PORT_DIPSETTING( 0x60, "25" )
|
||||
PORT_DIPSETTING( 0x70, "30" )
|
||||
PORT_DIPSETTING( 0x80, "40" )
|
||||
PORT_DIPSETTING( 0x90, "50" )
|
||||
PORT_DIPSETTING( 0xa0, "60" )
|
||||
PORT_DIPSETTING( 0xb0, "75" )
|
||||
PORT_DIPSETTING( 0xc0, "80" )
|
||||
PORT_DIPSETTING( 0xd0, "100" )
|
||||
PORT_DIPSETTING( 0xe0, "200" )
|
||||
PORT_DIPSETTING( 0xf0, "500" )
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW3:5") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW3:6") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW3:7") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW3:8") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DSW4")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Check Account" ) PORT_DIPLOCATION("DSW4:1") /* OK */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, "Show In Confirm Screen" ) PORT_DIPLOCATION("DSW4:2") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "Level of Difficulty" ) /* percentage in the manual */
|
||||
PORT_DIPSETTING( 0x02, "Percentage" ) /* level of difficulty in the manual */
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:2") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, "Initial Bonus Settings After Reset" ) PORT_DIPLOCATION("DSW4:3") /* OK (need a reset after change) */
|
||||
PORT_DIPSETTING( 0x00, "Type 1" )
|
||||
PORT_DIPSETTING( 0x04, "Type 2" )
|
||||
PORT_DIPNAME( 0x08, 0x08, "Bonus Accumulation" ) PORT_DIPLOCATION("DSW4:4") /* OK (need a reset after change) */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, "Auto Ticket Dispense" ) PORT_DIPLOCATION("DSW4:5") /* OK (need a reset after change) */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0xe0, 0xe0, "Ticket Dispense Mode" ) PORT_DIPLOCATION("DSW4:6,7,8") /* OK */
|
||||
PORT_DIPSETTING( 0xe0, "Continuous" )
|
||||
PORT_DIPSETTING( 0xc0, "Max 1 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0xa0, "Max 2 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x80, "Max 3 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x60, "Max 4 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x40, "Max 5 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x20, "Max 8 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x00, "Max 10 Ticket Per Game" )
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:5") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:6") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:7") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:8") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DSW5")
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW5:1") /* OK */
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW5:1") /* OK */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, "Limit Score of Each Game to Max 10x Bet or $5.00" ) PORT_DIPLOCATION("DSW5:2") /* OK */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Unused ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Unused ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
|
||||
PORT_DIPNAME( 0x04, 0x00, "Use Printer" ) PORT_DIPLOCATION("DSW5:3") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "Interfase" )
|
||||
PORT_DIPSETTING( 0x04, "Direct Driver" )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:4") /* OK */
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:5") /* OK */
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, "Play Score when no point left" ) PORT_DIPLOCATION("DSW5:6") /* OK (turn the machine off/on after change) */
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( No ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Unused ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Unused ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
|
||||
PORT_DIPNAME( 0x40, 0x00, "Reset Remaining Score when Game Over" ) PORT_DIPLOCATION("DSW5:7") /* OK (turn the machine off/on after change) */
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( No ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x10)
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Unused ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Unused ) ) PORT_CONDITION("DSW4",0x10,EQUALS,0x00)
|
||||
PORT_DIPNAME( 0x80, 0x00, "Advanced Count Game" ) PORT_DIPLOCATION("DSW5:8") /* OK (turn the machine off/on after change) */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:2") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, "Ticket Out By" ) PORT_DIPLOCATION("DSW5:3") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "Interface" )
|
||||
PORT_DIPSETTING( 0x04, "Direct Drive" )
|
||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:4") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:5") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:6") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:7") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:8") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( roypok96 )
|
||||
@ -4690,10 +4681,10 @@ static INPUT_PORTS_START( nfb96bl )
|
||||
PORT_DIPSETTING( 0xc0, "32" )
|
||||
|
||||
PORT_START("DSW2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Double-Up Game" ) PORT_DIPLOCATION("DSW2:1") /* OK */
|
||||
PORT_DIPNAME( 0x01, 0x01, "Double-Up Game" ) PORT_DIPLOCATION("DSW2:1") /* OK */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, "Skill Spinning" ) PORT_DIPLOCATION("DSW2:2") /* OK */
|
||||
PORT_DIPNAME( 0x02, 0x02, "Skill Spinning" ) PORT_DIPLOCATION("DSW2:2") /* OK */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x1c, 0x10, "Coin In" ) PORT_DIPLOCATION("DSW2:3,4,5") /* OK */
|
||||
@ -4705,12 +4696,12 @@ static INPUT_PORTS_START( nfb96bl )
|
||||
PORT_DIPSETTING( 0x14, "1 Coin/20 Credits" )
|
||||
PORT_DIPSETTING( 0x18, "1 Coin/25 Credits" )
|
||||
PORT_DIPSETTING( 0x1c, "1 Coin/100 Credits" )
|
||||
PORT_DIPNAME( 0x60, 0x00, "Note In Value" ) PORT_DIPLOCATION("DSW2:6,7") /* OK */
|
||||
PORT_DIPNAME( 0x60, 0x00, "Note In Value" ) PORT_DIPLOCATION("DSW2:6,7") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "100" )
|
||||
PORT_DIPSETTING( 0x20, "200" )
|
||||
PORT_DIPSETTING( 0x40, "500" )
|
||||
PORT_DIPSETTING( 0x60, "1000" )
|
||||
PORT_DIPNAME( 0x80, 0x00, "WARNING: Always Off" ) PORT_DIPLOCATION("DSW2:8") /* Listed that way in the manual */
|
||||
PORT_DIPNAME( 0x80, 0x00, "WARNING: Always Off" ) PORT_DIPLOCATION("DSW2:8") /* Listed that way in the manual */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
@ -4720,7 +4711,7 @@ static INPUT_PORTS_START( nfb96bl )
|
||||
PORT_DIPSETTING( 0x01, "8" )
|
||||
PORT_DIPSETTING( 0x02, "16" )
|
||||
PORT_DIPSETTING( 0x03, "24" )
|
||||
PORT_DIPNAME( 0x0c, 0x08, "Max Coin In & Note In Point" ) PORT_DIPLOCATION("DSW3:3,4") /* OK */
|
||||
PORT_DIPNAME( 0x0c, 0x08, "Max Coin In & Note In Points" ) PORT_DIPLOCATION("DSW3:3,4") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "1000" )
|
||||
PORT_DIPSETTING( 0x04, "5000" )
|
||||
PORT_DIPSETTING( 0x08, "10000" )
|
||||
@ -4744,35 +4735,57 @@ static INPUT_PORTS_START( nfb96bl )
|
||||
PORT_DIPSETTING( 0xf0, "500" )
|
||||
|
||||
PORT_START("DSW4")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Check Account" ) PORT_DIPLOCATION("DSW4:1") /* OK */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:2") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, "Initial Bonus Settings After Reset" ) PORT_DIPLOCATION("DSW4:3") /* not checked */
|
||||
PORT_DIPNAME( 0x01, 0x01, "Check Account" ) PORT_DIPLOCATION("DSW4:1") /* OK */
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, "Show Coin In Limit On Screen" ) PORT_DIPLOCATION("DSW4:2") /* OK */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, "Initial Bonus Settings After Reset" ) PORT_DIPLOCATION("DSW4:3") /* OK (need a reset after change) */
|
||||
PORT_DIPSETTING( 0x00, "Type 1" )
|
||||
PORT_DIPSETTING( 0x04, "Type 2" )
|
||||
PORT_DIPNAME( 0x08, 0x08, "Bonus Accumulation" ) PORT_DIPLOCATION("DSW4:4") /* not checked */
|
||||
PORT_DIPNAME( 0x08, 0x08, "Bonus Accumulation" ) PORT_DIPLOCATION("DSW4:4") /* OK (need a reset after change) */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, "Auto Ticket Dispense" ) PORT_DIPLOCATION("DSW4:5") /* not checked */
|
||||
PORT_DIPNAME( 0x10, 0x10, "Auto Ticket Dispense" ) PORT_DIPLOCATION("DSW4:5") /* OK (need a reset after change) */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0xe0, 0xe0, "Ticket Dispense Mode" ) PORT_DIPLOCATION("DSW4:6,7,8") /* OK */
|
||||
PORT_DIPSETTING( 0xe0, "Continuous" )
|
||||
PORT_DIPSETTING( 0xc0, "Max 1 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0xa0, "Max 2 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x80, "Max 3 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x60, "Max 4 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x40, "Max 5 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x20, "Max 8 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x00, "Max 10 Ticket Per Game" )
|
||||
PORT_DIPNAME( 0x60, 0x00, "Ticket Dispense Mode" ) PORT_DIPLOCATION("DSW4:6,7") /* OK */
|
||||
PORT_DIPSETTING( 0x60, "Continuous" )
|
||||
PORT_DIPSETTING( 0x40, "Max 1 Ticket Per Game" )
|
||||
PORT_DIPSETTING( 0x20, "Max 5 Tickets Per Game" )
|
||||
PORT_DIPSETTING( 0x00, "Max 10 Tickets Per Game" )
|
||||
PORT_DIPNAME( 0x80, 0x00, "Show In Confirm Screen" ) PORT_DIPLOCATION("DSW4:8") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "Level of Difficulty" )
|
||||
PORT_DIPSETTING( 0x80, "Percentage" )
|
||||
|
||||
PORT_START("DSW5")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/* no manual - similiar to nfb96 sets */
|
||||
static INPUT_PORTS_START( nfm )
|
||||
PORT_INCLUDE( nfb96bl )
|
||||
|
||||
PORT_MODIFY( "IN2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* tied to hopper somehow? fill/empty switch? */
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* display ticket value? */
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* keyin? tied to ticket clear value */
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats") /* DSW4-1 must be on to access account menu */
|
||||
|
||||
PORT_MODIFY( "DSW2" )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:2") /* unknown */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, "Spin Length" ) PORT_DIPLOCATION("DSW2:8") /* OK */
|
||||
PORT_DIPSETTING( 0x00, "Long" )
|
||||
PORT_DIPSETTING( 0x80, "Short" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( unkch_controls )
|
||||
PORT_START("IN0")
|
||||
@ -13135,7 +13148,7 @@ GAME( 1996, nfb96seb, nfb96, amcoe2, nfb96bl, driver_device, 0,
|
||||
GAME( 2002, carb2002, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "Carriage Bonus 2002 (bootleg)", GAME_WRONG_COLORS )
|
||||
GAME( 2003, carb2003, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "Carriage Bonus 2003 (bootleg)", GAME_WRONG_COLORS )
|
||||
|
||||
GAME( 2003, nfm, 0, nfm, nfb96bl, driver_device, 0, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", GAME_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06"
|
||||
GAME( 2003, nfm, 0, nfm, nfm, driver_device, 0, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", GAME_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06"
|
||||
|
||||
// these have 'cherry 1994' in the program roms, but also "Super Cherry / New Cherry Gold '99" probably hacks of a 1994 version of Cherry Bonus / Cherry Master (Super Cherry Master?)
|
||||
GAMEL(1999, unkch1, 0, unkch, unkch, unkch_state, unkch1, ROT0, "bootleg", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 1)", 0, layout_unkch )
|
||||
|
@ -146,10 +146,10 @@ Super PE+
|
||||
XMP00002 through XMP00006 & XMP00024 Use the XM000xxP Multi-Poker Data
|
||||
XMP00014, XMP00017 & XMP00030 Use the WING Board add-on and use the XnnnnnnP Poker Data (Not all are compatible!)
|
||||
XMP00013, XMP00022 & XMP00026 Use the WING Board add-on & CG2346 + CAPX2346 for Spanish paytables
|
||||
XMP00025 Uses the Wing Board add-on and is for the International markets. Auto Hold always enabled.
|
||||
XMP00025 Uses the XM000xxP Multi-Poker Data roms and is for the International markets. Auto Hold always enabled.
|
||||
XMnnnnnP Multi-Poker Data. Contains poker games + paytable percentages: Requires specific CG graphics + CAP color prom
|
||||
XKnnnnnn Spot Keno Programs. Different options for each set, but all use the same XnnnnnnK data roms
|
||||
XnnnnnnK Spot Keno Data. Uses CG2120 with CAP1267
|
||||
XnnnnnnK Spot Keno Data. Uses CG2120 with CAPX1267
|
||||
XSnnnnnn Slot Programs. Different options for each set, but all use the same XnnnnnnS data roms
|
||||
XnnnnnnT Tournament Slot Programs? Different options for each set, but all use the same XnnnnnnS data roms
|
||||
XnnnnnnS Slot Data. Each set requires specific CG graphics + CAP color prom
|
||||
@ -9723,9 +9723,9 @@ GAMEL(1995, pex0053p, 0, peplus, peplus_poker, peplus_state, peplussb,
|
||||
GAMEL(1995, pex0054p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex0055p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex0055pa, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000022) Deuces Wild Poker (The Orleans)", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex0055pb, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker (The Fun Ships)", GAME_WRONG_COLORS, layout_pe_poker ) /* CAP2399 not dumped */
|
||||
GAMEL(1995, pex0055pb, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker (The Fun Ships)", GAME_WRONG_COLORS, layout_pe_poker ) /* CAPX2399 not dumped */
|
||||
GAMEL(1995, pex0055pc, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker (Horseshoe)", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex0055pd, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker (The Wild Wild West Casino)", GAME_WRONG_COLORS, layout_pe_poker ) /* CAP2389 not dumped */
|
||||
GAMEL(1995, pex0055pd, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker (The Wild Wild West Casino)", GAME_WRONG_COLORS, layout_pe_poker ) /* CAPX2389 not dumped */
|
||||
GAMEL(1995, pex0055pe, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex0055pf, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex0055pg, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
|
||||
@ -9821,8 +9821,8 @@ GAMEL(1995, pex2251p, 0, peplus, peplus_poker, peplus_state, peplussb,
|
||||
GAMEL(1995, pex2272p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002272P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex2275p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002275P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex2276p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002276P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex2283p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002283P+XP000057) Dealt Deuces Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAP but should have correct colors anyways */
|
||||
GAMEL(1995, pex2284p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAP but should have correct colors anyways */
|
||||
GAMEL(1995, pex2283p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002283P+XP000057) Dealt Deuces Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAPX but should have correct colors anyways */
|
||||
GAMEL(1995, pex2284p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAPX but should have correct colors anyways */
|
||||
GAMEL(1995, pex2302p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex2303p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002303P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
|
||||
GAMEL(1995, pex2306p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002306P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -51,8 +51,6 @@ public:
|
||||
UINT8 m_b; // MCU port B data
|
||||
UINT8 m_c; // MCU port C data
|
||||
|
||||
virtual void machine_start();
|
||||
|
||||
// display common
|
||||
int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
|
||||
int m_display_maxy; // display matrix number of rows
|
||||
@ -68,11 +66,14 @@ public:
|
||||
void set_display_size(int maxx, int maxy);
|
||||
void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
|
||||
|
||||
// game-specific handlers
|
||||
DECLARE_WRITE8_MEMBER(maniac_output_w);
|
||||
protected:
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
};
|
||||
|
||||
|
||||
// machine start/reset
|
||||
|
||||
void hh_pic16_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
@ -98,6 +99,10 @@ void hh_pic16_state::machine_start()
|
||||
save_item(NAME(m_c));
|
||||
}
|
||||
|
||||
void hh_pic16_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@ -124,7 +129,7 @@ void hh_pic16_state::display_update()
|
||||
m_display_decay[y][x] = m_display_wait;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_display_decay[y][x] != 0) ? 1 : 0;
|
||||
UINT32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
|
||||
active_state[y] |= (ds << x);
|
||||
}
|
||||
}
|
||||
@ -195,7 +200,7 @@ void hh_pic16_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Minidrivers (I/O, Inputs, Machine Config)
|
||||
Minidrivers (subclass, I/O, Inputs, Machine Config)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -207,7 +212,19 @@ void hh_pic16_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(hh_pic16_state::maniac_output_w)
|
||||
class maniac_state : public hh_pic16_state
|
||||
{
|
||||
public:
|
||||
maniac_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_pic16_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE8_MEMBER(output_w);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE8_MEMBER(maniac_state::output_w)
|
||||
{
|
||||
// B,C: outputs
|
||||
offset -= PIC16C5x_PORTB;
|
||||
@ -228,6 +245,8 @@ WRITE8_MEMBER(hh_pic16_state::maniac_output_w)
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( maniac )
|
||||
PORT_START("IN.0") // port A
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) // bottom-right
|
||||
@ -239,13 +258,13 @@ INPUT_PORTS_END
|
||||
|
||||
static const INT16 maniac_speaker_levels[] = { 0, 32767, -32768, 0 };
|
||||
|
||||
static MACHINE_CONFIG_START( maniac, hh_pic16_state )
|
||||
static MACHINE_CONFIG_START( maniac, maniac_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", PIC16C55, 850000) // RC osc. R=13.4K, C=470pf, but unknown RC curve - measured 800-890kHz
|
||||
MCFG_PIC16C5x_READ_A_CB(IOPORT("IN.0"))
|
||||
MCFG_PIC16C5x_WRITE_B_CB(WRITE8(hh_pic16_state, maniac_output_w))
|
||||
MCFG_PIC16C5x_WRITE_C_CB(WRITE8(hh_pic16_state, maniac_output_w))
|
||||
MCFG_PIC16C5x_WRITE_B_CB(WRITE8(maniac_state, output_w))
|
||||
MCFG_PIC16C5x_WRITE_C_CB(WRITE8(maniac_state, output_w))
|
||||
MCFG_PIC16C5x_SET_CONFIG(0) // ?
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_pic16_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -54,13 +54,11 @@ public:
|
||||
optional_device<speaker_sound_device> m_speaker;
|
||||
|
||||
// misc common
|
||||
UINT8 m_port[9]; // MCU port A-I write data
|
||||
UINT8 m_port[9]; // MCU port A-I write data (optional)
|
||||
UINT16 m_inp_mux; // multiplexed inputs mask
|
||||
|
||||
UINT8 read_inputs(int columns);
|
||||
|
||||
virtual void machine_start();
|
||||
|
||||
// display common
|
||||
int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
|
||||
int m_display_maxy; // display matrix number of rows
|
||||
@ -79,41 +77,14 @@ public:
|
||||
void set_display_size(int maxx, int maxy);
|
||||
void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
|
||||
|
||||
// game-specific handlers
|
||||
void ssfball_display();
|
||||
DECLARE_WRITE8_MEMBER(ssfball_grid_w);
|
||||
DECLARE_WRITE8_MEMBER(ssfball_plate_w);
|
||||
DECLARE_READ8_MEMBER(ssfball_input_b_r);
|
||||
|
||||
void splasfgt_display();
|
||||
DECLARE_WRITE8_MEMBER(splasfgt_grid_w);
|
||||
DECLARE_WRITE8_MEMBER(splasfgt_plate_w);
|
||||
DECLARE_READ8_MEMBER(splasfgt_input_b_r);
|
||||
|
||||
void astrocmd_display();
|
||||
DECLARE_WRITE8_MEMBER(astrocmd_grid_w);
|
||||
DECLARE_WRITE8_MEMBER(astrocmd_plate_w);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(edracula_grid_w);
|
||||
DECLARE_WRITE8_MEMBER(edracula_plate_w);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(tmtennis_grid_w);
|
||||
DECLARE_WRITE8_MEMBER(tmtennis_plate_w);
|
||||
DECLARE_WRITE8_MEMBER(tmtennis_port_e_w);
|
||||
DECLARE_READ8_MEMBER(tmtennis_input_r);
|
||||
void tmtennis_set_clock();
|
||||
DECLARE_INPUT_CHANGED_MEMBER(tmtennis_difficulty_switch);
|
||||
DECLARE_MACHINE_RESET(tmtennis);
|
||||
|
||||
void tmpacman_display();
|
||||
DECLARE_WRITE8_MEMBER(tmpacman_grid_w);
|
||||
DECLARE_WRITE8_MEMBER(tmpacman_plate_w);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(alnchase_output_w);
|
||||
DECLARE_READ8_MEMBER(alnchase_input_r);
|
||||
protected:
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
};
|
||||
|
||||
|
||||
// machine start/reset
|
||||
|
||||
void hh_ucom4_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
@ -143,6 +114,10 @@ void hh_ucom4_state::machine_start()
|
||||
save_item(NAME(m_plate));
|
||||
}
|
||||
|
||||
void hh_ucom4_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@ -169,7 +144,7 @@ void hh_ucom4_state::display_update()
|
||||
m_display_decay[y][x] = m_display_wait;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_display_decay[y][x] != 0) ? 1 : 0;
|
||||
UINT32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
|
||||
active_state[y] |= (ds << x);
|
||||
}
|
||||
}
|
||||
@ -253,7 +228,7 @@ UINT8 hh_ucom4_state::read_inputs(int columns)
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Minidrivers (I/O, Inputs, Machine Config)
|
||||
Minidrivers (subclass, I/O, Inputs, Machine Config)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -272,23 +247,36 @@ UINT8 hh_ucom4_state::read_inputs(int columns)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void hh_ucom4_state::ssfball_display()
|
||||
class ssfball_state : public hh_ucom4_state
|
||||
{
|
||||
public:
|
||||
ssfball_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_ucom4_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE8_MEMBER(grid_w);
|
||||
DECLARE_WRITE8_MEMBER(plate_w);
|
||||
DECLARE_READ8_MEMBER(input_b_r);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void ssfball_state::prepare_display()
|
||||
{
|
||||
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,10,9,8,0,1,2,4,5,6);
|
||||
|
||||
display_matrix(16, 9, plate, m_grid);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::ssfball_grid_w)
|
||||
WRITE8_MEMBER(ssfball_state::grid_w)
|
||||
{
|
||||
// C,D(,E): vfd matrix grid 0-7(,8)
|
||||
// C,D(,E3): vfd matrix grid 0-7(,8)
|
||||
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
||||
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
ssfball_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::ssfball_plate_w)
|
||||
WRITE8_MEMBER(ssfball_state::plate_w)
|
||||
{
|
||||
m_port[offset] = data;
|
||||
|
||||
@ -302,18 +290,20 @@ WRITE8_MEMBER(hh_ucom4_state::ssfball_plate_w)
|
||||
|
||||
// E3: vfd matrix grid 8
|
||||
if (offset == NEC_UCOM4_PORTE)
|
||||
ssfball_grid_w(space, offset, data >> 3 & 1);
|
||||
grid_w(space, offset, data >> 3 & 1);
|
||||
else
|
||||
ssfball_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(hh_ucom4_state::ssfball_input_b_r)
|
||||
READ8_MEMBER(ssfball_state::input_b_r)
|
||||
{
|
||||
// B: input port 2, where B3 is multiplexed
|
||||
return m_inp_matrix[2]->read() | read_inputs(2);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( ssfball )
|
||||
PORT_START("IN.0") // F3 port B3
|
||||
PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
@ -341,19 +331,19 @@ INPUT_PORTS_END
|
||||
|
||||
static const INT16 ssfball_speaker_levels[] = { 0, 32767, -32768, 0 };
|
||||
|
||||
static MACHINE_CONFIG_START( ssfball, hh_ucom4_state )
|
||||
static MACHINE_CONFIG_START( ssfball, ssfball_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
|
||||
MCFG_UCOM4_READ_A_CB(IOPORT("IN.3"))
|
||||
MCFG_UCOM4_READ_B_CB(READ8(hh_ucom4_state, ssfball_input_b_r))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, ssfball_grid_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, ssfball_grid_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, ssfball_plate_w))
|
||||
MCFG_UCOM4_READ_B_CB(READ8(ssfball_state, input_b_r))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(ssfball_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(ssfball_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(ssfball_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(ssfball_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(ssfball_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(ssfball_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(ssfball_state, plate_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
|
||||
@ -382,14 +372,28 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void hh_ucom4_state::splasfgt_display()
|
||||
class splasfgt_state : public hh_ucom4_state
|
||||
{
|
||||
public:
|
||||
splasfgt_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_ucom4_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE8_MEMBER(grid_w);
|
||||
DECLARE_WRITE8_MEMBER(plate_w);
|
||||
DECLARE_READ8_MEMBER(input_b_r);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void splasfgt_state::prepare_display()
|
||||
{
|
||||
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,13,1,0,8,6,0,10,11,14,15,16,9,5,7,4,2,3);
|
||||
|
||||
display_matrix(16, 9, plate, m_grid);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::splasfgt_grid_w)
|
||||
WRITE8_MEMBER(splasfgt_state::grid_w)
|
||||
{
|
||||
// G,H,I0: vfd matrix grid
|
||||
int shift = (offset - NEC_UCOM4_PORTG) * 4;
|
||||
@ -400,31 +404,32 @@ WRITE8_MEMBER(hh_ucom4_state::splasfgt_grid_w)
|
||||
|
||||
// I2: vfd matrix plate 6
|
||||
if (offset == NEC_UCOM4_PORTI)
|
||||
m_plate = (m_plate & 0xffff) | (data << 14 & 0x10000);
|
||||
|
||||
splasfgt_display();
|
||||
plate_w(space, 4 + NEC_UCOM4_PORTC, data >> 2 & 1);
|
||||
else
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::splasfgt_plate_w)
|
||||
WRITE8_MEMBER(splasfgt_state::plate_w)
|
||||
{
|
||||
// C,D,E,F23: vfd matrix plate
|
||||
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
// F01: speaker out
|
||||
if (offset == NEC_UCOM4_PORTF)
|
||||
m_speaker->level_w(data & 3);
|
||||
|
||||
ssfball_display();
|
||||
// C,D,E,F23(,I2): vfd matrix plate
|
||||
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(hh_ucom4_state::splasfgt_input_b_r)
|
||||
READ8_MEMBER(splasfgt_state::input_b_r)
|
||||
{
|
||||
// B: multiplexed buttons
|
||||
return read_inputs(4);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
/* physical button layout and labels is like this:
|
||||
|
||||
* left = P1 side * * right = P2 side * (note: in 1P mode, switch sides between turns)
|
||||
@ -475,19 +480,19 @@ INPUT_PORTS_END
|
||||
|
||||
static const INT16 splasfgt_speaker_levels[] = { 0, 32767, -32768, 0 };
|
||||
|
||||
static MACHINE_CONFIG_START( splasfgt, hh_ucom4_state )
|
||||
static MACHINE_CONFIG_START( splasfgt, splasfgt_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
|
||||
MCFG_UCOM4_READ_A_CB(IOPORT("IN.4"))
|
||||
MCFG_UCOM4_READ_B_CB(READ8(hh_ucom4_state, splasfgt_input_b_r))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, splasfgt_plate_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, splasfgt_plate_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, splasfgt_plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, splasfgt_plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, splasfgt_grid_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, splasfgt_grid_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, splasfgt_grid_w))
|
||||
MCFG_UCOM4_READ_B_CB(READ8(splasfgt_state, input_b_r))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(splasfgt_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(splasfgt_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(splasfgt_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(splasfgt_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(splasfgt_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(splasfgt_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(splasfgt_state, grid_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
|
||||
@ -521,24 +526,36 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void hh_ucom4_state::astrocmd_display()
|
||||
class astrocmd_state : public hh_ucom4_state
|
||||
{
|
||||
public:
|
||||
astrocmd_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_ucom4_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE8_MEMBER(grid_w);
|
||||
DECLARE_WRITE8_MEMBER(plate_w);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void astrocmd_state::prepare_display()
|
||||
{
|
||||
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,4,5,6,7,0,1,2,3);
|
||||
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,3,2,12,13,14,15,16,17,18,0,1,4,8,5,9,7,11,6,10);
|
||||
|
||||
display_matrix(17, 9, plate, grid);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::astrocmd_grid_w)
|
||||
WRITE8_MEMBER(astrocmd_state::grid_w)
|
||||
{
|
||||
// C,D(,E3): vfd matrix grid
|
||||
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
||||
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
astrocmd_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::astrocmd_plate_w)
|
||||
WRITE8_MEMBER(astrocmd_state::plate_w)
|
||||
{
|
||||
// E01,F,G,H,I: vfd matrix plate
|
||||
int shift = (offset - NEC_UCOM4_PORTE) * 4;
|
||||
@ -550,13 +567,15 @@ WRITE8_MEMBER(hh_ucom4_state::astrocmd_plate_w)
|
||||
m_speaker->level_w(data >> 2 & 1);
|
||||
|
||||
// E3: vfd matrix grid 8
|
||||
astrocmd_grid_w(space, offset, data >> 3 & 1);
|
||||
grid_w(space, offset, data >> 3 & 1);
|
||||
}
|
||||
else
|
||||
astrocmd_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( astrocmd )
|
||||
PORT_START("IN.0") // port A
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
|
||||
@ -571,20 +590,19 @@ static INPUT_PORTS_START( astrocmd )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( astrocmd, hh_ucom4_state )
|
||||
static MACHINE_CONFIG_START( astrocmd, astrocmd_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
|
||||
MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
|
||||
MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, astrocmd_grid_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, astrocmd_grid_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, astrocmd_plate_w))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(astrocmd_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(astrocmd_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(astrocmd_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(astrocmd_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(astrocmd_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(astrocmd_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(astrocmd_state, plate_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
|
||||
@ -617,16 +635,28 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::edracula_grid_w)
|
||||
class edracula_state : public hh_ucom4_state
|
||||
{
|
||||
public:
|
||||
edracula_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_ucom4_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE8_MEMBER(grid_w);
|
||||
DECLARE_WRITE8_MEMBER(plate_w);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE8_MEMBER(edracula_state::grid_w)
|
||||
{
|
||||
// C,D: vfd matrix grid
|
||||
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
||||
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
display_matrix(18+1, 8, m_plate, m_grid);
|
||||
display_matrix(18, 8, m_plate, m_grid);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::edracula_plate_w)
|
||||
WRITE8_MEMBER(edracula_state::plate_w)
|
||||
{
|
||||
// I2: speaker out
|
||||
if (offset == NEC_UCOM4_PORTI)
|
||||
@ -635,11 +665,12 @@ WRITE8_MEMBER(hh_ucom4_state::edracula_plate_w)
|
||||
// E,F,G,H,I01: vfd matrix plate
|
||||
int shift = (offset - NEC_UCOM4_PORTE) * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
display_matrix(18, 8, m_plate, m_grid);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( edracula )
|
||||
PORT_START("IN.0") // port A
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
|
||||
@ -654,20 +685,19 @@ static INPUT_PORTS_START( edracula )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( edracula, hh_ucom4_state )
|
||||
static MACHINE_CONFIG_START( edracula, edracula_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
|
||||
MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
|
||||
MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, edracula_grid_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, edracula_grid_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, edracula_plate_w))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(edracula_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(edracula_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(edracula_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(edracula_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(edracula_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(edracula_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(edracula_state, plate_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
|
||||
@ -701,26 +731,45 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::tmtennis_grid_w)
|
||||
class tmtennis_state : public hh_ucom4_state
|
||||
{
|
||||
public:
|
||||
tmtennis_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_ucom4_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE8_MEMBER(grid_w);
|
||||
DECLARE_WRITE8_MEMBER(plate_w);
|
||||
DECLARE_WRITE8_MEMBER(port_e_w);
|
||||
DECLARE_READ8_MEMBER(input_r);
|
||||
|
||||
void set_clock();
|
||||
DECLARE_INPUT_CHANGED_MEMBER(difficulty_switch);
|
||||
|
||||
protected:
|
||||
virtual void machine_reset();
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE8_MEMBER(tmtennis_state::grid_w)
|
||||
{
|
||||
// G,H,I: vfd matrix grid
|
||||
int shift = (offset - NEC_UCOM4_PORTG) * 4;
|
||||
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
display_matrix(12, 12, m_plate, m_grid);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::tmtennis_plate_w)
|
||||
WRITE8_MEMBER(tmtennis_state::plate_w)
|
||||
{
|
||||
// C,D,F: vfd matrix plate
|
||||
if (offset == NEC_UCOM4_PORTF) offset--;
|
||||
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
display_matrix(12, 12, m_plate, m_grid);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::tmtennis_port_e_w)
|
||||
WRITE8_MEMBER(tmtennis_state::port_e_w)
|
||||
{
|
||||
// E01: input mux
|
||||
// E2: speaker out
|
||||
@ -729,13 +778,15 @@ WRITE8_MEMBER(hh_ucom4_state::tmtennis_port_e_w)
|
||||
m_speaker->level_w(data >> 2 & 1);
|
||||
}
|
||||
|
||||
READ8_MEMBER(hh_ucom4_state::tmtennis_input_r)
|
||||
READ8_MEMBER(tmtennis_state::input_r)
|
||||
{
|
||||
// A,B: multiplexed buttons
|
||||
return ~read_inputs(2) >> (offset*4);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
/* Pro-Tennis physical button layout and labels is like this:
|
||||
|
||||
* left = P2/CPU side * * right = P1 side *
|
||||
@ -758,9 +809,9 @@ static INPUT_PORTS_START( tmtennis )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("P1 Button 6")
|
||||
|
||||
PORT_START("IN.1") // E1 port A/B
|
||||
PORT_CONFNAME( 0x101, 0x100, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_ucom4_state, tmtennis_difficulty_switch, NULL)
|
||||
PORT_CONFNAME( 0x101, 0x100, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, tmtennis_state, difficulty_switch, NULL)
|
||||
PORT_CONFSETTING( 0x001, "Practice" )
|
||||
PORT_CONFSETTING( 0x100, "Pro 1" ) // -> tmtennis_difficulty_switch
|
||||
PORT_CONFSETTING( 0x100, "Pro 1" ) // -> difficulty_switch
|
||||
PORT_CONFSETTING( 0x000, "Pro 2" )
|
||||
PORT_CONFNAME( 0x02, 0x00, "Players" )
|
||||
PORT_CONFSETTING( 0x00, "1" )
|
||||
@ -773,8 +824,13 @@ static INPUT_PORTS_START( tmtennis )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("P2 Button 6")
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_CHANGED_MEMBER(tmtennis_state::difficulty_switch)
|
||||
{
|
||||
set_clock();
|
||||
}
|
||||
|
||||
void hh_ucom4_state::tmtennis_set_clock()
|
||||
|
||||
void tmtennis_state::set_clock()
|
||||
{
|
||||
// MCU clock is from an LC circuit oscillating by default at ~360kHz,
|
||||
// but on PRO1, the difficulty switch puts a capacitor across the LC circuit
|
||||
@ -782,35 +838,29 @@ void hh_ucom4_state::tmtennis_set_clock()
|
||||
m_maincpu->set_unscaled_clock((m_inp_matrix[1]->read() & 0x100) ? 260000 : 360000);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER(hh_ucom4_state::tmtennis_difficulty_switch)
|
||||
void tmtennis_state::machine_reset()
|
||||
{
|
||||
tmtennis_set_clock();
|
||||
hh_ucom4_state::machine_reset();
|
||||
set_clock();
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(hh_ucom4_state, tmtennis)
|
||||
{
|
||||
tmtennis_set_clock();
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( tmtennis, hh_ucom4_state )
|
||||
static MACHINE_CONFIG_START( tmtennis, tmtennis_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", NEC_D552, 360000) // see tmtennis_set_clock
|
||||
MCFG_UCOM4_READ_A_CB(READ8(hh_ucom4_state, tmtennis_input_r))
|
||||
MCFG_UCOM4_READ_B_CB(READ8(hh_ucom4_state, tmtennis_input_r))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, tmtennis_plate_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, tmtennis_plate_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, tmtennis_port_e_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, tmtennis_plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, tmtennis_grid_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, tmtennis_grid_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, tmtennis_grid_w))
|
||||
MCFG_CPU_ADD("maincpu", NEC_D552, 360000) // see set_clock
|
||||
MCFG_UCOM4_READ_A_CB(READ8(tmtennis_state, input_r))
|
||||
MCFG_UCOM4_READ_B_CB(READ8(tmtennis_state, input_r))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(tmtennis_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(tmtennis_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(tmtennis_state, port_e_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(tmtennis_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(tmtennis_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(tmtennis_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(tmtennis_state, grid_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(hh_ucom4_state, tmtennis)
|
||||
|
||||
/* no video! */
|
||||
|
||||
/* sound hardware */
|
||||
@ -844,24 +894,36 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void hh_ucom4_state::tmpacman_display()
|
||||
class tmpacman_state : public hh_ucom4_state
|
||||
{
|
||||
public:
|
||||
tmpacman_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_ucom4_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE8_MEMBER(grid_w);
|
||||
DECLARE_WRITE8_MEMBER(plate_w);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void tmpacman_state::prepare_display()
|
||||
{
|
||||
UINT16 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
|
||||
UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15);
|
||||
|
||||
display_matrix(19, 8, plate, grid);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::tmpacman_grid_w)
|
||||
WRITE8_MEMBER(tmpacman_state::grid_w)
|
||||
{
|
||||
// C,D: vfd matrix grid
|
||||
int shift = (offset - NEC_UCOM4_PORTC) * 4;
|
||||
m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
tmpacman_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::tmpacman_plate_w)
|
||||
WRITE8_MEMBER(tmpacman_state::plate_w)
|
||||
{
|
||||
// E1: speaker out
|
||||
if (offset == NEC_UCOM4_PORTE)
|
||||
@ -870,11 +932,12 @@ WRITE8_MEMBER(hh_ucom4_state::tmpacman_plate_w)
|
||||
// E023,F,G,H,I: vfd matrix plate
|
||||
int shift = (offset - NEC_UCOM4_PORTE) * 4;
|
||||
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
|
||||
|
||||
tmpacman_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( tmpacman )
|
||||
PORT_START("IN.0") // port A
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // separate directional buttons, hence 16way
|
||||
@ -889,20 +952,19 @@ static INPUT_PORTS_START( tmpacman )
|
||||
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( tmpacman, hh_ucom4_state )
|
||||
static MACHINE_CONFIG_START( tmpacman, tmpacman_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_430kHz)
|
||||
MCFG_UCOM4_READ_A_CB(IOPORT("IN.0"))
|
||||
MCFG_UCOM4_READ_B_CB(IOPORT("IN.1"))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, tmpacman_grid_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, tmpacman_grid_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, tmpacman_plate_w))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(tmpacman_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(tmpacman_state, grid_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(tmpacman_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(tmpacman_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(tmpacman_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(tmpacman_state, plate_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(tmpacman_state, plate_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
|
||||
@ -937,7 +999,20 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(hh_ucom4_state::alnchase_output_w)
|
||||
class alnchase_state : public hh_ucom4_state
|
||||
{
|
||||
public:
|
||||
alnchase_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: hh_ucom4_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE8_MEMBER(output_w);
|
||||
DECLARE_READ8_MEMBER(input_r);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE8_MEMBER(alnchase_state::output_w)
|
||||
{
|
||||
if (offset <= NEC_UCOM4_PORTE)
|
||||
{
|
||||
@ -964,13 +1039,15 @@ WRITE8_MEMBER(hh_ucom4_state::alnchase_output_w)
|
||||
display_matrix(17, 9, m_plate, m_grid);
|
||||
}
|
||||
|
||||
READ8_MEMBER(hh_ucom4_state::alnchase_input_r)
|
||||
READ8_MEMBER(alnchase_state::input_r)
|
||||
{
|
||||
// A: buttons
|
||||
return read_inputs(2);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
/* physical button layout and labels is like this:
|
||||
|
||||
POWER SOUND LEVEL PLAYER
|
||||
@ -1008,20 +1085,19 @@ static INPUT_PORTS_START( alnchase )
|
||||
PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( alnchase, hh_ucom4_state )
|
||||
static MACHINE_CONFIG_START( alnchase, alnchase_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz)
|
||||
MCFG_UCOM4_READ_A_CB(READ8(hh_ucom4_state, alnchase_input_r))
|
||||
MCFG_UCOM4_READ_A_CB(READ8(alnchase_state, input_r))
|
||||
MCFG_UCOM4_READ_B_CB(IOPORT("IN.2"))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(hh_ucom4_state, alnchase_output_w))
|
||||
MCFG_UCOM4_WRITE_C_CB(WRITE8(alnchase_state, output_w))
|
||||
MCFG_UCOM4_WRITE_D_CB(WRITE8(alnchase_state, output_w))
|
||||
MCFG_UCOM4_WRITE_E_CB(WRITE8(alnchase_state, output_w))
|
||||
MCFG_UCOM4_WRITE_F_CB(WRITE8(alnchase_state, output_w))
|
||||
MCFG_UCOM4_WRITE_G_CB(WRITE8(alnchase_state, output_w))
|
||||
MCFG_UCOM4_WRITE_H_CB(WRITE8(alnchase_state, output_w))
|
||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(alnchase_state, output_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
|
||||
|
@ -8,7 +8,7 @@
|
||||
* TMS1400NLL MP7332-N1.U1(Rev. B) or MP7332-N2LL(Rev. C), die labeled MP7332
|
||||
(assume same ROM contents between revisions)
|
||||
* SN75494N MOS-to-LED digit driver
|
||||
* rotating reel + lightsensor
|
||||
* rotating reel + lightsensor, 1bit-sound
|
||||
|
||||
This is a board game, it obviously requires game pieces and the board.
|
||||
The emulated part is the centerpiece, a black tower with a rotating card
|
||||
@ -32,7 +32,7 @@ public:
|
||||
: hh_tms1k_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void mbdtower_display();
|
||||
void prepare_display();
|
||||
bool sensor_led_on() { return m_display_decay[0][0] != 0; }
|
||||
|
||||
int m_motor_pos;
|
||||
@ -58,7 +58,7 @@ protected:
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void mbdtower_state::mbdtower_display()
|
||||
void mbdtower_state::prepare_display()
|
||||
{
|
||||
// declare display matrix size and the 2 7segs
|
||||
set_display_size(7, 3);
|
||||
@ -148,7 +148,7 @@ WRITE16_MEMBER(mbdtower_state::write_r)
|
||||
// R5-R7: tower lamps
|
||||
// R8: rotation sensor led
|
||||
m_r = data;
|
||||
mbdtower_display();
|
||||
prepare_display();
|
||||
|
||||
// R10: speaker out
|
||||
m_speaker->level_w(~data >> 4 & data >> 10 & 1);
|
||||
@ -159,7 +159,7 @@ WRITE16_MEMBER(mbdtower_state::write_o)
|
||||
// O0-O6: led segments A-G
|
||||
// O7: digit select
|
||||
m_o = data;
|
||||
mbdtower_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(mbdtower_state::read_k)
|
||||
@ -226,13 +226,14 @@ void mbdtower_state::machine_start()
|
||||
{
|
||||
hh_tms1k_state::machine_start();
|
||||
|
||||
// zerofill/register for savestates
|
||||
// zerofill
|
||||
m_motor_pos = 0;
|
||||
m_motor_pos_prev = -1;
|
||||
m_motor_decay = 0;
|
||||
m_motor_on = false;
|
||||
m_sensor_blind = false;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_motor_pos));
|
||||
/* save_item(NAME(m_motor_pos_prev)); */ // don't save!
|
||||
save_item(NAME(m_motor_decay));
|
||||
|
@ -31,37 +31,6 @@ public:
|
||||
: hh_tms1k_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
|
||||
|
||||
// calculator-specific handlers
|
||||
void tisr16_display();
|
||||
DECLARE_WRITE16_MEMBER(tisr16_write_o);
|
||||
DECLARE_WRITE16_MEMBER(tisr16_write_r);
|
||||
DECLARE_READ8_MEMBER(tisr16_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(ti1270_write_o);
|
||||
DECLARE_WRITE16_MEMBER(ti1270_write_r);
|
||||
DECLARE_READ8_MEMBER(ti1270_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(ti1000_write_o);
|
||||
DECLARE_WRITE16_MEMBER(ti1000_write_r);
|
||||
DECLARE_READ8_MEMBER(ti1000_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(wizatron_write_o);
|
||||
DECLARE_WRITE16_MEMBER(wizatron_write_r);
|
||||
DECLARE_READ8_MEMBER(wizatron_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(lilprof_write_o);
|
||||
DECLARE_READ8_MEMBER(lilprof_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(lilprof78_write_o);
|
||||
DECLARE_WRITE16_MEMBER(lilprof78_write_r);
|
||||
DECLARE_READ8_MEMBER(lilprof78_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(ti30_write_o);
|
||||
DECLARE_WRITE16_MEMBER(ti30_write_r);
|
||||
DECLARE_READ8_MEMBER(ti30_read_k);
|
||||
|
||||
protected:
|
||||
virtual void machine_start();
|
||||
};
|
||||
@ -73,31 +42,41 @@ void ticalc1x_state::machine_start()
|
||||
memset(m_display_segmask, ~0, sizeof(m_display_segmask)); // !
|
||||
}
|
||||
|
||||
void ticalc1x_state::display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask)
|
||||
{
|
||||
for (int y = 0; y < maxy; y++)
|
||||
m_display_segmask[y] &= segmask;
|
||||
|
||||
display_matrix(maxx, maxy, setx, sety);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Minidrivers (I/O, Inputs, Machine Config)
|
||||
Minidrivers (subclass, I/O, Inputs, Machine Config)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
TI SR-16
|
||||
* TMS1000 MCU labeled TMS1001NL. die labeled 1000, 1001A
|
||||
TI SR-16, SR-16 II
|
||||
* SR-16: TMS1000 MCU labeled TMS1001NL. die labeled 1000, 1001A
|
||||
* SR-16 II: TMS1000 MCU labeled TMS1016NL. die labeled 1000B, 1016A
|
||||
* 12-digit 7seg LED display
|
||||
|
||||
SR-16 II is a cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void ticalc1x_state::tisr16_display()
|
||||
class tisr16_state : public ticalc1x_state
|
||||
{
|
||||
public:
|
||||
tisr16_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: ticalc1x_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void prepare_display();
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
void tisr16_state::prepare_display()
|
||||
{
|
||||
// update leds state
|
||||
for (int y = 0; y < 11; y++)
|
||||
@ -111,27 +90,29 @@ void ticalc1x_state::tisr16_display()
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::tisr16_write_r)
|
||||
WRITE16_MEMBER(tisr16_state::write_r)
|
||||
{
|
||||
// R0-R10: input mux
|
||||
// R0-R10: select digit (right-to-left)
|
||||
m_r = m_inp_mux = data;
|
||||
tisr16_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
|
||||
WRITE16_MEMBER(tisr16_state::write_o)
|
||||
{
|
||||
// O0-O7: digit segments
|
||||
m_o = data;
|
||||
tisr16_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(ticalc1x_state::tisr16_read_k)
|
||||
READ8_MEMBER(tisr16_state::read_k)
|
||||
{
|
||||
return read_inputs(11);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( tisr16 )
|
||||
PORT_START("IN.0") // R0
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
@ -201,38 +182,6 @@ static INPUT_PORTS_START( tisr16 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( tisr16, ticalc1x_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS1000, 300000) // RC osc. R=43K, C=68pf -> ~300kHz
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, tisr16_read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, tisr16_write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, tisr16_write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_tisr16)
|
||||
|
||||
/* no video! */
|
||||
|
||||
/* no sound! */
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
TI SR-16 II
|
||||
* TMS1000 MCU labeled TMS1016NL. die labeled 1000B, 1016A
|
||||
* 12-digit 7seg LED display
|
||||
|
||||
A cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// hardware is nearly identical to TI SR-16 above, so we simply use those handlers
|
||||
|
||||
static INPUT_PORTS_START( tisr16ii )
|
||||
PORT_START("IN.0") // R0
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
@ -302,10 +251,20 @@ static INPUT_PORTS_START( tisr16ii )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( tisr16ii, tisr16 )
|
||||
static MACHINE_CONFIG_START( tisr16, tisr16_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
// the MCU RC osc. is different: R=30K, C=100pf -> ~300kHz(same freq as tisr16, no change needed)
|
||||
MCFG_CPU_ADD("maincpu", TMS1000, 300000) // RC osc. R=43K, C=68pf -> ~300kHz (note: tisr16ii MCU RC osc. is different: R=30K, C=100pf -> also ~300kHz)
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(tisr16_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tisr16_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tisr16_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_tisr16)
|
||||
|
||||
/* no video! */
|
||||
|
||||
/* no sound! */
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -320,13 +279,27 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::ti1270_write_r)
|
||||
class ti1270_state : public ticalc1x_state
|
||||
{
|
||||
public:
|
||||
ti1270_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: ticalc1x_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE16_MEMBER(ti1270_state::write_r)
|
||||
{
|
||||
// R0-R7: select digit (right-to-left)
|
||||
display_matrix_seg(8, 8, m_o, data, 0xff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
|
||||
WRITE16_MEMBER(ti1270_state::write_o)
|
||||
{
|
||||
// O1-O5,O7: input mux
|
||||
// O0-O7: digit segments
|
||||
@ -334,12 +307,14 @@ WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
|
||||
m_o = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(ticalc1x_state::ti1270_read_k)
|
||||
READ8_MEMBER(ti1270_state::read_k)
|
||||
{
|
||||
return read_inputs(6);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( ti1270 )
|
||||
PORT_START("IN.0") // O1
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CE/C")
|
||||
@ -378,14 +353,13 @@ static INPUT_PORTS_START( ti1270 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( ti1270, ticalc1x_state )
|
||||
static MACHINE_CONFIG_START( ti1270, ti1270_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1270_read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1270_write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1270_write_r))
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ti1270_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1270_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1270_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_ti1270)
|
||||
@ -407,14 +381,28 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::ti1000_write_r)
|
||||
class ti1000_state : public ticalc1x_state
|
||||
{
|
||||
public:
|
||||
ti1000_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: ticalc1x_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE16_MEMBER(ti1000_state::write_r)
|
||||
{
|
||||
// R0-R7: select digit (right-to-left)
|
||||
UINT8 o = BITSWAP8(m_o,7,4,3,2,1,0,6,5);
|
||||
display_matrix_seg(8, 8, o, data, 0xff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::ti1000_write_o)
|
||||
WRITE16_MEMBER(ti1000_state::write_o)
|
||||
{
|
||||
// O0-O3,O5(?): input mux
|
||||
// O0-O7: digit segments
|
||||
@ -422,12 +410,14 @@ WRITE16_MEMBER(ticalc1x_state::ti1000_write_o)
|
||||
m_o = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(ticalc1x_state::ti1000_read_k)
|
||||
READ8_MEMBER(ti1000_state::read_k)
|
||||
{
|
||||
return read_inputs(5);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( ti1000 )
|
||||
PORT_START("IN.0") // O0
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
|
||||
@ -449,26 +439,25 @@ static INPUT_PORTS_START( ti1000 )
|
||||
|
||||
// note: even though power buttons are on the matrix, they are not CPU-controlled
|
||||
PORT_START("IN.3") // O3 or O4?
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
|
||||
|
||||
PORT_START("IN.4") // O5
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( ti1000, ticalc1x_state )
|
||||
static MACHINE_CONFIG_START( ti1000, ti1000_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti1000_read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti1000_write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti1000_write_r))
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ti1000_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1000_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1000_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_ti1270)
|
||||
@ -490,7 +479,21 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
|
||||
class wizatron_state : public ticalc1x_state
|
||||
{
|
||||
public:
|
||||
wizatron_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: ticalc1x_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
virtual DECLARE_WRITE16_MEMBER(write_o);
|
||||
virtual DECLARE_WRITE16_MEMBER(write_r);
|
||||
virtual DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE16_MEMBER(wizatron_state::write_r)
|
||||
{
|
||||
// 6th digit is custom(not 7seg), for math symbols, like this:
|
||||
// \./ GAB
|
||||
@ -505,7 +508,7 @@ WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
|
||||
display_matrix_seg(7, 9, m_o, data, 0x7f);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
|
||||
WRITE16_MEMBER(wizatron_state::write_o)
|
||||
{
|
||||
// O1-O4: input mux
|
||||
// O0-O6: digit segments A-G
|
||||
@ -514,12 +517,14 @@ WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
|
||||
m_o = data & 0x7f;
|
||||
}
|
||||
|
||||
READ8_MEMBER(ticalc1x_state::wizatron_read_k)
|
||||
READ8_MEMBER(wizatron_state::read_k)
|
||||
{
|
||||
return read_inputs(4);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( wizatron )
|
||||
PORT_START("IN.0") // O1
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
|
||||
@ -546,14 +551,13 @@ static INPUT_PORTS_START( wizatron )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( wizatron, ticalc1x_state )
|
||||
static MACHINE_CONFIG_START( wizatron, wizatron_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, wizatron_read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, wizatron_write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(wizatron_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(wizatron_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_wizatron)
|
||||
@ -578,7 +582,20 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::lilprof_write_o)
|
||||
class lilprof_state : public wizatron_state
|
||||
{
|
||||
public:
|
||||
lilprof_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: wizatron_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
virtual DECLARE_WRITE16_MEMBER(write_o);
|
||||
virtual DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE16_MEMBER(lilprof_state::write_o)
|
||||
{
|
||||
// O1-O4,O7: input mux
|
||||
// O0-O6: digit segments A-G
|
||||
@ -586,12 +603,14 @@ WRITE16_MEMBER(ticalc1x_state::lilprof_write_o)
|
||||
m_o = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(ticalc1x_state::lilprof_read_k)
|
||||
READ8_MEMBER(lilprof_state::read_k)
|
||||
{
|
||||
return read_inputs(5);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( lilprof )
|
||||
PORT_INCLUDE( wizatron )
|
||||
|
||||
@ -607,14 +626,13 @@ static INPUT_PORTS_START( lilprof )
|
||||
PORT_CONFSETTING( 0x08, "4" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( lilprof, ticalc1x_state )
|
||||
static MACHINE_CONFIG_START( lilprof, lilprof_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof_read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof_write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, wizatron_write_r))
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(lilprof_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_wizatron)
|
||||
@ -639,7 +657,21 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::lilprof78_write_r)
|
||||
class lilprof78_state : public ticalc1x_state
|
||||
{
|
||||
public:
|
||||
lilprof78_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: ticalc1x_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE16_MEMBER(lilprof78_state::write_r)
|
||||
{
|
||||
// update leds state
|
||||
UINT8 o = BITSWAP8(m_o,7,4,3,2,1,0,6,5) & 0x7f;
|
||||
@ -651,14 +683,14 @@ WRITE16_MEMBER(ticalc1x_state::lilprof78_write_r)
|
||||
// 3rd digit A/G(equals sign) is from O7
|
||||
m_display_state[3] = (m_o & 0x80) ? 0x41 : 0;
|
||||
|
||||
// 6th digit is a custom 7seg for math symbols (see wizatron_write_r)
|
||||
// 6th digit is a custom 7seg for math symbols (see wizatron_state write_r)
|
||||
m_display_state[6] = BITSWAP8(m_display_state[6],7,6,1,4,2,3,5,0);
|
||||
|
||||
set_display_size(7, 9);
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::lilprof78_write_o)
|
||||
WRITE16_MEMBER(lilprof78_state::write_o)
|
||||
{
|
||||
// O0-O3,O5(?): input mux
|
||||
// O0-O6: digit segments A-G
|
||||
@ -667,12 +699,14 @@ WRITE16_MEMBER(ticalc1x_state::lilprof78_write_o)
|
||||
m_o = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(ticalc1x_state::lilprof78_read_k)
|
||||
READ8_MEMBER(lilprof78_state::read_k)
|
||||
{
|
||||
return read_inputs(5);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( lilprof78 )
|
||||
PORT_START("IN.0") // O0
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
|
||||
@ -694,26 +728,25 @@ static INPUT_PORTS_START( lilprof78 )
|
||||
|
||||
// note: even though power buttons are on the matrix, they are not CPU-controlled
|
||||
PORT_START("IN.3") // O3 or O4?
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Set")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
|
||||
|
||||
PORT_START("IN.4") // O5
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Go")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( lilprof78, ticalc1x_state )
|
||||
static MACHINE_CONFIG_START( lilprof78, lilprof78_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, lilprof78_read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, lilprof78_write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, lilprof78_write_r))
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(lilprof78_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof78_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(lilprof78_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_wizatron)
|
||||
@ -737,7 +770,21 @@ MACHINE_CONFIG_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
|
||||
class majestic_state : public ticalc1x_state
|
||||
{
|
||||
public:
|
||||
majestic_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: ticalc1x_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
};
|
||||
|
||||
// handlers
|
||||
|
||||
WRITE16_MEMBER(majestic_state::write_r)
|
||||
{
|
||||
// note: 1st digit only has segments B,F,G,DP
|
||||
m_display_segmask[0] = 0xe2;
|
||||
@ -747,7 +794,7 @@ WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
|
||||
display_matrix_seg(8, 9, o, data, 0xff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
|
||||
WRITE16_MEMBER(majestic_state::write_o)
|
||||
{
|
||||
// O0-O2,O4-O7: input mux
|
||||
// O0-O7: digit segments
|
||||
@ -755,13 +802,15 @@ WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
|
||||
m_o = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(ticalc1x_state::ti30_read_k)
|
||||
READ8_MEMBER(majestic_state::read_k)
|
||||
{
|
||||
// note: the Vss row is always on
|
||||
return m_inp_matrix[7]->read() | read_inputs(7);
|
||||
}
|
||||
|
||||
|
||||
// config
|
||||
|
||||
static INPUT_PORTS_START( ti30 )
|
||||
PORT_START("IN.0") // O0
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("y" UTF8_POW_X)
|
||||
@ -814,11 +863,11 @@ static INPUT_PORTS_START( ti30 )
|
||||
|
||||
// note: even though power buttons are on the matrix, they are not CPU-controlled
|
||||
PORT_START("IN.7") // Vss!
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -874,11 +923,11 @@ static INPUT_PORTS_START( tiprog )
|
||||
|
||||
// note: even though power buttons are on the matrix, they are not CPU-controlled
|
||||
PORT_START("IN.7") // Vss!
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_NAME("DEC")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_NAME("OCT")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_NAME("HEX")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -935,22 +984,22 @@ static INPUT_PORTS_START( tibusan1 )
|
||||
|
||||
// note: even though power buttons are on the matrix, they are not CPU-controlled
|
||||
PORT_START("IN.7") // Vss!
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)true)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("2nd")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2" " UTF8_SQUAREROOT"x")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_NAME("ln(x) e" UTF8_POW_X)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( ti30, ticalc1x_state )
|
||||
static MACHINE_CONFIG_START( majestic, majestic_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti30_read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti30_write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti30_write_r))
|
||||
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(ticalc1x_state, auto_power_off))
|
||||
MCFG_TMS1XXX_READ_K_CB(READ8(majestic_state, read_k))
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(majestic_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(majestic_state, write_r))
|
||||
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_ti30)
|
||||
@ -1114,7 +1163,7 @@ ROM_END
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
COMP( 1974, tisr16, 0, 0, tisr16, tisr16, driver_device, 0, "Texas Instruments", "SR-16", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1975, tisr16ii, 0, 0, tisr16ii, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1975, tisr16ii, 0, 0, tisr16, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
|
||||
COMP( 1976, ti1270, 0, 0, ti1270, ti1270, driver_device, 0, "Texas Instruments", "TI-1270", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1977, ti1000, 0, 0, ti1000, ti1000, driver_device, 0, "Texas Instruments", "TI-1000", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
@ -1122,6 +1171,6 @@ COMP( 1977, wizatron, 0, 0, wizatron, wizatron, driver_device, 0, "Tex
|
||||
COMP( 1976, lilprof, 0, 0, lilprof, lilprof, driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1978, lilprof78, lilprof, 0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
|
||||
COMP( 1976, ti30, 0, 0, ti30, ti30, driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1977, tiprog, 0, 0, ti30, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1979, tibusan1, 0, 0, ti30, tibusan1, driver_device, 0, "Texas Instruments", "TI Business Analyst-I", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1976, ti30, 0, 0, majestic, ti30, driver_device, 0, "Texas Instruments", "TI-30", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1977, tiprog, 0, 0, majestic, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
COMP( 1979, tibusan1, 0, 0, majestic, tibusan1, driver_device, 0, "Texas Instruments", "TI Business Analyst-I", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
|
||||
|
@ -314,6 +314,7 @@ public:
|
||||
// cartridge
|
||||
UINT32 m_cart_max_size;
|
||||
UINT8* m_cart_base;
|
||||
void init_cartridge();
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(tispeak_cartridge);
|
||||
DECLARE_DRIVER_INIT(snspell);
|
||||
DECLARE_DRIVER_INIT(lantutor);
|
||||
@ -326,20 +327,40 @@ public:
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(snspell_power_button);
|
||||
void snspell_power_off();
|
||||
void snspell_display();
|
||||
void prepare_display();
|
||||
|
||||
protected:
|
||||
virtual void machine_start();
|
||||
};
|
||||
|
||||
|
||||
void tispeak_state::machine_start()
|
||||
{
|
||||
hh_tms1k_state::machine_start();
|
||||
memset(m_display_segmask, ~0, sizeof(m_display_segmask)); // !
|
||||
|
||||
init_cartridge();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
File Handling
|
||||
Cartridge Handling
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void tispeak_state::init_cartridge()
|
||||
{
|
||||
if (m_cart != NULL && m_cart->exists())
|
||||
{
|
||||
astring region_tag;
|
||||
memory_region *src = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
|
||||
if (src)
|
||||
memcpy(m_cart_base, src->base(), src->bytes());
|
||||
}
|
||||
}
|
||||
|
||||
DEVICE_IMAGE_LOAD_MEMBER(tispeak_state, tispeak_cartridge)
|
||||
{
|
||||
UINT32 size = m_cart->common_get_size("rom");
|
||||
@ -379,18 +400,9 @@ DRIVER_INIT_MEMBER(tispeak_state, lantutor)
|
||||
|
||||
// common/snspell
|
||||
|
||||
void tispeak_state::snspell_display()
|
||||
void tispeak_state::prepare_display()
|
||||
{
|
||||
for (int y = 0; y < 16; y++)
|
||||
m_display_segmask[y] = 0x3fff;
|
||||
|
||||
display_matrix(16, 16, m_o, (m_r & 0x8000) ? (m_r & 0x21ff) : 0);
|
||||
}
|
||||
|
||||
READ8_MEMBER(tispeak_state::snspell_read_k)
|
||||
{
|
||||
// note: the Vss row is always on
|
||||
return m_inp_matrix[8]->read() | read_inputs(8);
|
||||
display_matrix_seg(16, 16, m_o, (m_r & 0x8000) ? (m_r & 0x21ff) : 0, 0x3fff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tispeak_state::snspell_write_r)
|
||||
@ -403,7 +415,7 @@ WRITE16_MEMBER(tispeak_state::snspell_write_r)
|
||||
// R15: filament on
|
||||
// other bits: MCU internal use
|
||||
m_r = m_inp_mux = data;
|
||||
snspell_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tispeak_state::snspell_write_o)
|
||||
@ -411,7 +423,13 @@ WRITE16_MEMBER(tispeak_state::snspell_write_o)
|
||||
// reorder opla to led14seg, plus DP as d14 and AP as d15:
|
||||
// E,D,C,G,B,A,I,M,L,K,N,J,[AP],H,F,[DP] (sidenote: TI KLMN = MAME MLNK)
|
||||
m_o = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
|
||||
snspell_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(tispeak_state::snspell_read_k)
|
||||
{
|
||||
// note: the Vss row is always on
|
||||
return m_inp_matrix[8]->read() | read_inputs(8);
|
||||
}
|
||||
|
||||
|
||||
@ -432,7 +450,7 @@ WRITE16_MEMBER(tispeak_state::snmath_write_o)
|
||||
// reorder opla to led14seg, plus DP as d14 and AP as d15:
|
||||
// [DP],D,C,H,F,B,I,M,L,K,N,J,[AP],E,G,A (sidenote: TI KLMN = MAME MLNK)
|
||||
m_o = BITSWAP16(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
|
||||
snspell_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
|
||||
@ -442,7 +460,7 @@ WRITE16_MEMBER(tispeak_state::lantutor_write_r)
|
||||
{
|
||||
// same as default, except R13 is used for an extra digit
|
||||
m_r = m_inp_mux = data;
|
||||
snspell_display();
|
||||
prepare_display();
|
||||
}
|
||||
|
||||
|
||||
@ -639,21 +657,6 @@ INPUT_PORTS_END
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void tispeak_state::machine_start()
|
||||
{
|
||||
hh_tms1k_state::machine_start();
|
||||
|
||||
// init cartridge
|
||||
if (m_cart != NULL && m_cart->exists())
|
||||
{
|
||||
astring region_tag;
|
||||
memory_region *src = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
|
||||
if (src)
|
||||
memcpy(m_cart_base, src->base(), src->bytes());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( snmath, tispeak_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -919,17 +922,18 @@ ROM_END
|
||||
|
||||
|
||||
|
||||
COMP( 1978, snspell, 0, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1978 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
|
||||
COMP( 1979, snspella, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1980, snspellb, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1980 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1978, snspelluk, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1978 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1981, snspelluka, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1981 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1979, snspelljp, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (Japan)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1980, ladictee, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "La Dictee Magique (France)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // doesn't work due to missing CD2702 MCU dump, German/Italian version has CD2702 too
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
COMP( 1978, snspell, 0, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1978 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
|
||||
COMP( 1979, snspella, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1979 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1980, snspellb, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1980 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1978, snspelluk, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1978 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1981, snspelluka, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (UK, 1981 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1979, snspelljp, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (Japan)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // incomplete dump, uses prototype MCU ROM
|
||||
COMP( 1980, ladictee, snspell, 0, snspell, snspell, tispeak_state, snspell, "Texas Instruments", "La Dictee Magique (France)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // doesn't work due to missing CD2702 MCU dump, German/Italian version has CD2702 too
|
||||
|
||||
COMP( 1986, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
|
||||
COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
|
||||
COMP( 1986, snmath, 0, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1986 version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
|
||||
COMP( 1980, snmathp, snmath, 0, snmath, snmath, driver_device, 0, "Texas Instruments", "Speak & Math (US, 1980 version/prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
|
||||
|
||||
COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, snspell, "Texas Instruments", "Speak & Read (US)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
|
||||
COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, snspell, "Texas Instruments", "Speak & Read (US)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
|
||||
|
||||
COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
|
||||
COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
|
||||
|
@ -57,94 +57,7 @@ public:
|
||||
void display_update();
|
||||
void set_display_size(int maxx, int maxy);
|
||||
void display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety);
|
||||
|
||||
// game-specific handlers
|
||||
void mathmagi_display();
|
||||
DECLARE_WRITE16_MEMBER(mathmagi_write_r);
|
||||
DECLARE_WRITE16_MEMBER(mathmagi_write_o);
|
||||
DECLARE_READ8_MEMBER(mathmagi_read_k);
|
||||
|
||||
void amaztron_display();
|
||||
DECLARE_WRITE16_MEMBER(amaztron_write_r);
|
||||
DECLARE_WRITE16_MEMBER(amaztron_write_o);
|
||||
DECLARE_READ8_MEMBER(amaztron_read_k);
|
||||
|
||||
void tc4_display();
|
||||
DECLARE_WRITE16_MEMBER(tc4_write_r);
|
||||
DECLARE_WRITE16_MEMBER(tc4_write_o);
|
||||
DECLARE_READ8_MEMBER(tc4_read_k);
|
||||
|
||||
void ebball_display();
|
||||
DECLARE_WRITE16_MEMBER(ebball_write_r);
|
||||
DECLARE_WRITE16_MEMBER(ebball_write_o);
|
||||
DECLARE_READ8_MEMBER(ebball_read_k);
|
||||
|
||||
void ebball2_display();
|
||||
DECLARE_WRITE16_MEMBER(ebball2_write_r);
|
||||
DECLARE_WRITE16_MEMBER(ebball2_write_o);
|
||||
DECLARE_READ8_MEMBER(ebball2_read_k);
|
||||
|
||||
void ebball3_display();
|
||||
DECLARE_WRITE16_MEMBER(ebball3_write_r);
|
||||
DECLARE_WRITE16_MEMBER(ebball3_write_o);
|
||||
DECLARE_READ8_MEMBER(ebball3_read_k);
|
||||
void ebball3_set_clock();
|
||||
DECLARE_INPUT_CHANGED_MEMBER(ebball3_difficulty_switch);
|
||||
DECLARE_MACHINE_RESET(ebball3);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(elecdet_write_r);
|
||||
DECLARE_WRITE16_MEMBER(elecdet_write_o);
|
||||
DECLARE_READ8_MEMBER(elecdet_read_k);
|
||||
|
||||
void starwbc_display();
|
||||
DECLARE_WRITE16_MEMBER(starwbc_write_r);
|
||||
DECLARE_WRITE16_MEMBER(starwbc_write_o);
|
||||
DECLARE_READ8_MEMBER(starwbc_read_k);
|
||||
|
||||
void astro_display();
|
||||
DECLARE_WRITE16_MEMBER(astro_write_r);
|
||||
DECLARE_WRITE16_MEMBER(astro_write_o);
|
||||
DECLARE_READ8_MEMBER(astro_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(comp4_write_r);
|
||||
DECLARE_WRITE16_MEMBER(comp4_write_o);
|
||||
DECLARE_READ8_MEMBER(comp4_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(simon_write_r);
|
||||
DECLARE_WRITE16_MEMBER(simon_write_o);
|
||||
DECLARE_READ8_MEMBER(simon_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(ssimon_write_r);
|
||||
DECLARE_WRITE16_MEMBER(ssimon_write_o);
|
||||
DECLARE_READ8_MEMBER(ssimon_read_k);
|
||||
void ssimon_set_clock();
|
||||
DECLARE_INPUT_CHANGED_MEMBER(ssimon_speed_switch);
|
||||
DECLARE_MACHINE_RESET(ssimon);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(cnsector_write_r);
|
||||
DECLARE_WRITE16_MEMBER(cnsector_write_o);
|
||||
DECLARE_READ8_MEMBER(cnsector_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(merlin_write_r);
|
||||
DECLARE_WRITE16_MEMBER(merlin_write_o);
|
||||
DECLARE_READ8_MEMBER(merlin_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(stopthief_write_r);
|
||||
DECLARE_WRITE16_MEMBER(stopthief_write_o);
|
||||
DECLARE_READ8_MEMBER(stopthief_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(bankshot_write_r);
|
||||
DECLARE_WRITE16_MEMBER(bankshot_write_o);
|
||||
DECLARE_READ8_MEMBER(bankshot_read_k);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(splitsec_write_r);
|
||||
DECLARE_WRITE16_MEMBER(splitsec_write_o);
|
||||
DECLARE_READ8_MEMBER(splitsec_read_k);
|
||||
|
||||
void tandy12_display();
|
||||
DECLARE_WRITE16_MEMBER(tandy12_write_r);
|
||||
DECLARE_WRITE16_MEMBER(tandy12_write_o);
|
||||
DECLARE_READ8_MEMBER(tandy12_read_k);
|
||||
void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
|
||||
|
||||
protected:
|
||||
virtual void machine_start();
|
||||
|
@ -32,8 +32,8 @@
|
||||
#include "modules/lib/osdlib.h"
|
||||
#include "modules/lib/osdobj_common.h"
|
||||
|
||||
#ifdef OSD_WINDOWS
|
||||
#define SDLMAME_SDL2 1
|
||||
#if defined(OSD_WINDOWS) && !defined(SDLMAME_SDL2)
|
||||
#define SDLMAME_SDL2 0
|
||||
#endif
|
||||
|
||||
// OpenGL headers
|
||||
@ -189,9 +189,8 @@ enum
|
||||
// TYPES
|
||||
//============================================================
|
||||
|
||||
#if (SDLMAME_SDL2)
|
||||
#if defined(OSD_WINDOWS)
|
||||
|
||||
#ifdef OSD_WINDOWS
|
||||
class win_gl_context : public osd_gl_context
|
||||
{
|
||||
public:
|
||||
@ -347,7 +346,8 @@ private:
|
||||
HMODULE win_gl_context::m_module;
|
||||
|
||||
|
||||
#else
|
||||
#elif SDLMAME_SDL2
|
||||
|
||||
class sdl_gl_context : public osd_gl_context
|
||||
{
|
||||
public:
|
||||
@ -396,7 +396,7 @@ private:
|
||||
SDL_Window *m_window;
|
||||
char m_error[256];
|
||||
};
|
||||
#endif
|
||||
|
||||
#else
|
||||
// SDL 1.2
|
||||
class sdl12_gl_context : public osd_gl_context
|
||||
@ -442,7 +442,6 @@ private:
|
||||
char m_error[256];
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
//============================================================
|
||||
@ -763,12 +762,13 @@ int drawogl_init(running_machine &machine, osd_draw_callbacks *callbacks)
|
||||
dll_loaded = 0;
|
||||
|
||||
load_gl_lib(machine);
|
||||
if (SDLMAME_SDL2)
|
||||
{
|
||||
osd_printf_verbose("Using SDL multi-window OpenGL driver (SDL 2.0+)\n");
|
||||
}
|
||||
else
|
||||
osd_printf_verbose("Using SDL single-window OpenGL driver (SDL 1.2)\n");
|
||||
#if defined(OSD_WINDOWS)
|
||||
osd_printf_verbose("Using Windows OpenGL driver\n");
|
||||
#elif SDLMAME_SDL2
|
||||
osd_printf_verbose("Using SDL multi-window OpenGL driver (SDL 2.0+)\n");
|
||||
#else
|
||||
osd_printf_verbose("Using SDL single-window OpenGL driver (SDL 1.2)\n");
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1030,13 +1030,11 @@ void sdl_info_ogl::initialize_gl()
|
||||
|
||||
int sdl_info_ogl::create()
|
||||
{
|
||||
#if (SDLMAME_SDL2)
|
||||
// create renderer
|
||||
#ifdef OSD_WINDOWS
|
||||
#if defined(OSD_WINDOWS)
|
||||
m_gl_context = global_alloc(win_gl_context(window().m_hwnd));
|
||||
#else
|
||||
#elif SDLMAME_SDL2
|
||||
m_gl_context = global_alloc(sdl_gl_context(window().sdl_window()));
|
||||
#endif
|
||||
#else
|
||||
m_gl_context = global_alloc(sdl12_gl_context(window().sdl_surface()));
|
||||
#endif
|
||||
@ -1530,7 +1528,7 @@ int sdl_info_ogl::draw(const int update)
|
||||
if (m_init_context)
|
||||
{
|
||||
// do some one-time OpenGL setup
|
||||
#if (SDLMAME_SDL2)
|
||||
#if SDLMAME_SDL2
|
||||
// FIXME: SRGB conversion is working on SDL2, may be of use
|
||||
// when we eventually target gamma and monitor profiles.
|
||||
//glEnable(GL_FRAMEBUFFER_SRGB);
|
||||
@ -1560,7 +1558,7 @@ int sdl_info_ogl::draw(const int update)
|
||||
loadGLExtensions();
|
||||
}
|
||||
|
||||
#if (!SDLMAME_SDL2)
|
||||
#if !defined(OSD_WINDOWS) && !SDLMAME_SDL2
|
||||
// force all textures to be regenerated
|
||||
destroy_all_textures();
|
||||
#endif
|
||||
|
@ -37,14 +37,6 @@ extern "C" int _tmain(int argc, TCHAR **argv)
|
||||
int i, rc;
|
||||
char **utf8_argv;
|
||||
|
||||
#ifdef OSD_SDL
|
||||
#ifdef MALLOC_DEBUG
|
||||
{
|
||||
extern int winalloc_in_main_code;
|
||||
winalloc_in_main_code = TRUE;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* convert arguments to UTF-8 */
|
||||
utf8_argv = (char **) malloc(argc * sizeof(*argv));
|
||||
if (utf8_argv == NULL)
|
||||
@ -64,16 +56,5 @@ extern "C" int _tmain(int argc, TCHAR **argv)
|
||||
osd_free(utf8_argv[i]);
|
||||
free(utf8_argv);
|
||||
|
||||
#ifdef OSD_SDL
|
||||
#ifdef MALLOC_DEBUG
|
||||
{
|
||||
void check_unfreed_mem(void);
|
||||
check_unfreed_mem();
|
||||
}
|
||||
winalloc_in_main_code = FALSE;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
@ -290,13 +290,6 @@ int main(int argc, char *argv[])
|
||||
res = frontend.execute(argc, argv);
|
||||
}
|
||||
|
||||
#ifdef MALLOC_DEBUG
|
||||
{
|
||||
void check_unfreed_mem(void);
|
||||
check_unfreed_mem();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SDLMAME_UNIX
|
||||
#if (!defined(SDLMAME_MACOSX)) && (!defined(SDLMAME_HAIKU)) && (!defined(SDLMAME_EMSCRIPTEN))
|
||||
if (!sdl_entered_debugger)
|
||||
|
@ -12,6 +12,11 @@
|
||||
#ifndef __SDLVIDEO__
|
||||
#define __SDLVIDEO__
|
||||
|
||||
#if defined(SDLMAME_WIN32) && !(SDLMAME_SDL2)
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#include "osdsdl.h"
|
||||
|
||||
//============================================================
|
||||
|
@ -9,6 +9,11 @@
|
||||
//
|
||||
//============================================================
|
||||
|
||||
#ifdef SDLMAME_WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
// standard SDL headers
|
||||
#include "sdlinc.h"
|
||||
|
||||
@ -60,16 +65,16 @@
|
||||
// minimum window dimension
|
||||
#define MIN_WINDOW_DIM 200
|
||||
|
||||
//#ifndef SDLMAME_WIN32
|
||||
#define WMSZ_TOP (0)
|
||||
#define WMSZ_BOTTOM (1)
|
||||
#ifndef SDLMAME_WIN32
|
||||
#define WMSZ_TOP (0)
|
||||
#define WMSZ_BOTTOM (1)
|
||||
#define WMSZ_BOTTOMLEFT (2)
|
||||
#define WMSZ_BOTTOMRIGHT (3)
|
||||
#define WMSZ_LEFT (4)
|
||||
#define WMSZ_LEFT (4)
|
||||
#define WMSZ_TOPLEFT (5)
|
||||
#define WMSZ_TOPRIGHT (6)
|
||||
#define WMSZ_RIGHT (7)
|
||||
//#endif
|
||||
#define WMSZ_RIGHT (7)
|
||||
#endif
|
||||
|
||||
//============================================================
|
||||
// GLOBAL VARIABLES
|
||||
|
Loading…
Reference in New Issue
Block a user