This commit is contained in:
Miodrag Milanovic 2015-04-04 14:44:22 +02:00
commit 6f0fd1a366
23 changed files with 1704 additions and 1142 deletions

View File

@ -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

View File

@ -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 {

View File

@ -181,6 +181,14 @@ function osdmodulestargetconf()
end
end
if _OPTIONS["targetos"]=="windows" then
links {
"gdi32",
"dsound",
"dxguid",
}
end
end

View File

@ -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",
}

View File

@ -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")

View File

@ -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",
}

View File

@ -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

View File

@ -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",
}

View File

@ -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 )

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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));

View File

@ -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 )

View File

@ -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 )

View File

@ -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();

View File

@ -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

View File

@ -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;
}

View File

@ -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)

View File

@ -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"
//============================================================

View File

@ -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