summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--3rdparty/lua-linenoise/linenoise.c198
-rw-r--r--3rdparty/pugixml/.gitignore1
-rw-r--r--3rdparty/pugixml/CMakeLists.txt23
-rw-r--r--3rdparty/pugixml/docs/quickstart.adoc2
-rw-r--r--3rdparty/pugixml/scripts/pugixml.pc.in11
-rw-r--r--3rdparty/pugixml/src/pugixml.hpp15
-rw-r--r--3rdparty/pugixml/tests/test.hpp2
-rw-r--r--3rdparty/pugixml/tests/test_document.cpp2
-rw-r--r--3rdparty/pugixml/tests/test_dom_traverse.cpp6
-rw-r--r--3rdparty/pugixml/tests/test_write.cpp4
-rw-r--r--3rdparty/pugixml/tests/writer_string.hpp2
-rw-r--r--plugins/data/data_hiscore.lua26
-rw-r--r--plugins/hiscore/hiscore.dat48
-rw-r--r--scripts/src/3rdparty.lua2
-rw-r--r--scripts/src/mame/frontend.lua5
-rw-r--r--src/devices/bus/apricot/keyboard/hle.cpp4
-rw-r--r--src/devices/bus/ti99_peb/tn_ide.cpp16
-rw-r--r--src/devices/bus/ti99x/998board.cpp5
-rw-r--r--src/devices/bus/ti99x/998board.h2
-rw-r--r--src/devices/bus/ti99x/genboard.cpp64
-rw-r--r--src/devices/bus/ti99x/genboard.h18
-rw-r--r--src/devices/cpu/m6502/n2a03.cpp2
-rw-r--r--src/devices/cpu/sc61860/scdasm.cpp34
-rw-r--r--src/devices/cpu/tms32010/32010dsm.cpp22
-rw-r--r--src/devices/cpu/tms32025/32025dsm.cpp22
-rw-r--r--src/devices/cpu/tms7000/7000dasm.cpp30
-rw-r--r--src/devices/cpu/ucom4/ucom4d.cpp21
-rw-r--r--src/devices/cpu/unsp/unspdasm.cpp126
-rw-r--r--src/devices/cpu/v810/v810dasm.cpp202
-rw-r--r--src/devices/cpu/z180/z180dasm.cpp45
-rw-r--r--src/devices/cpu/z8/z8dasm.cpp23
-rw-r--r--src/devices/machine/6840ptm.h4
-rw-r--r--src/devices/machine/8042kbdc.cpp2
-rw-r--r--src/devices/machine/latch8.cpp16
-rw-r--r--src/devices/machine/mm58274c.cpp3
-rw-r--r--src/devices/machine/tms9901.cpp14
-rw-r--r--src/devices/machine/z80dart.cpp47
-rw-r--r--src/devices/machine/z80dart.h7
-rw-r--r--src/devices/sound/msm5232.cpp4
-rw-r--r--src/devices/sound/nes_apu.cpp12
-rw-r--r--src/devices/sound/nes_apu.h9
-rw-r--r--src/devices/video/huc6261.cpp2
-rw-r--r--src/emu/debug/dvmemory.cpp15
-rw-r--r--src/emu/driver.cpp43
-rw-r--r--src/emu/driver.h14
-rw-r--r--src/emu/drivers/xtal.h1
-rw-r--r--src/emu/emumem.cpp24
-rw-r--r--src/emu/emumem.h1
-rw-r--r--src/emu/machine.cpp49
-rw-r--r--src/emu/machine.h31
-rw-r--r--src/frontend/mame/console.cpp65
-rw-r--r--src/frontend/mame/console.h9
-rw-r--r--src/frontend/mame/luaengine.cpp27
-rw-r--r--src/frontend/mame/luaengine.h4
-rw-r--r--src/lib/util/coretmpl.h18
-rw-r--r--src/mame/audio/cage.cpp2
-rw-r--r--src/mame/audio/dcs.cpp4
-rw-r--r--src/mame/audio/mw8080bw.cpp2
-rw-r--r--src/mame/drivers/apple2gs.cpp18
-rw-r--r--src/mame/drivers/fidel6502.cpp2
-rw-r--r--src/mame/drivers/fidel68k.cpp202
-rw-r--r--src/mame/drivers/gb.cpp10
-rw-r--r--src/mame/drivers/gei.cpp2
-rw-r--r--src/mame/drivers/geneve.cpp2
-rw-r--r--src/mame/drivers/hp64k.cpp4
-rw-r--r--src/mame/drivers/ibmpcjr.cpp2
-rw-r--r--src/mame/drivers/itech32.cpp4
-rw-r--r--src/mame/drivers/itech8.cpp2
-rw-r--r--src/mame/drivers/kron.cpp2
-rw-r--r--src/mame/drivers/mgavegas.cpp2
-rw-r--r--src/mame/drivers/midyunit.cpp4
-rw-r--r--src/mame/drivers/mirage.cpp2
-rw-r--r--src/mame/drivers/model2.cpp5
-rw-r--r--src/mame/drivers/model3.cpp105
-rw-r--r--src/mame/drivers/ms0515.cpp2
-rw-r--r--src/mame/drivers/mustache.cpp30
-rw-r--r--src/mame/drivers/naomi.cpp15
-rw-r--r--src/mame/drivers/pcw16.cpp2
-rw-r--r--src/mame/drivers/quizpun2.cpp8
-rw-r--r--src/mame/drivers/r2dtank.cpp2
-rw-r--r--src/mame/drivers/risc2500.cpp39
-rw-r--r--src/mame/drivers/rollrace.cpp6
-rw-r--r--src/mame/drivers/seta.cpp13
-rw-r--r--src/mame/drivers/ti99_4p.cpp2
-rw-r--r--src/mame/drivers/ti99_4x.cpp12
-rw-r--r--src/mame/drivers/ti99_8.cpp4
-rw-r--r--src/mame/drivers/tumbleb.cpp53
-rw-r--r--src/mame/drivers/vcombat.cpp10
-rw-r--r--src/mame/drivers/videopin.cpp4
-rw-r--r--src/mame/drivers/vip.cpp4
-rw-r--r--src/mame/includes/apple2gs.h6
-rw-r--r--src/mame/includes/model2.h7
-rw-r--r--src/mame/includes/model3.h7
-rw-r--r--src/mame/includes/rollrace.h1
-rw-r--r--src/mame/includes/seta.h1
-rw-r--r--src/mame/includes/ti85.h1
-rw-r--r--src/mame/includes/tumbleb.h1
-rw-r--r--src/mame/layout/chessmst.lay113
-rw-r--r--src/mame/layout/chessmstdm.lay72
-rw-r--r--src/mame/layout/fidel_ex_68k.lay528
-rw-r--r--src/mame/layout/risc2500.lay92
-rw-r--r--src/mame/machine/apple2gs.cpp29
-rw-r--r--src/mame/machine/midwayic.cpp2
-rw-r--r--src/mame/machine/nitedrvr.cpp2
-rw-r--r--src/mame/machine/ti85.cpp5
-rw-r--r--src/mame/machine/ticket.cpp2
-rw-r--r--src/mame/machine/williams.cpp4
-rw-r--r--src/mame/mame.lst7
-rw-r--r--src/mame/video/8080bw.cpp2
-rw-r--r--src/mame/video/boogwing.cpp4
-rw-r--r--src/mame/video/cbuster.cpp2
-rw-r--r--src/mame/video/cninja.cpp10
-rw-r--r--src/mame/video/combatsc.cpp4
-rw-r--r--src/mame/video/contra.cpp4
-rw-r--r--src/mame/video/darkseal.cpp2
-rw-r--r--src/mame/video/dassault.cpp2
-rw-r--r--src/mame/video/dec0.cpp4
-rw-r--r--src/mame/video/deco32.cpp2
-rw-r--r--src/mame/video/dietgo.cpp2
-rw-r--r--src/mame/video/dkong.cpp2
-rw-r--r--src/mame/video/fastlane.cpp2
-rw-r--r--src/mame/video/flkatck.cpp2
-rw-r--r--src/mame/video/funkyjet.cpp2
-rw-r--r--src/mame/video/gradius3.cpp2
-rw-r--r--src/mame/video/groundfx.cpp2
-rw-r--r--src/mame/video/gtia.cpp2
-rw-r--r--src/mame/video/hcastle.cpp4
-rw-r--r--src/mame/video/labyrunr.cpp2
-rw-r--r--src/mame/video/model2.cpp28
-rw-r--r--src/mame/video/pktgaldx.cpp2
-rw-r--r--src/mame/video/rohga.cpp6
-rw-r--r--src/mame/video/slapshot.cpp2
-rw-r--r--src/mame/video/sprint4.cpp2
-rw-r--r--src/mame/video/sshangha.cpp2
-rw-r--r--src/mame/video/subs.cpp2
-rw-r--r--src/mame/video/supbtime.cpp2
-rw-r--r--src/mame/video/taito_b.cpp8
-rw-r--r--src/mame/video/taito_f2.cpp10
-rw-r--r--src/mame/video/taito_h.cpp6
-rw-r--r--src/mame/video/taito_o.cpp2
-rw-r--r--src/mame/video/taitoair.cpp2
-rw-r--r--src/mame/video/triplhnt.cpp2
-rw-r--r--src/mame/video/tumblep.cpp2
-rw-r--r--src/mame/video/ultratnk.cpp2
-rw-r--r--src/mame/video/undrfire.cpp4
-rw-r--r--src/mame/video/vaportra.cpp2
-rw-r--r--src/mame/video/xmen.cpp2
147 files changed, 2082 insertions, 930 deletions
diff --git a/3rdparty/lua-linenoise/linenoise.c b/3rdparty/lua-linenoise/linenoise.c
new file mode 100644
index 00000000000..670a71c2b22
--- /dev/null
+++ b/3rdparty/lua-linenoise/linenoise.c
@@ -0,0 +1,198 @@
+/* vim:sts=4 sw=4 expandtab
+ */
+
+/*
+* Copyright (c) 2011-2015 Rob Hoelz <rob@hoelz.ro>
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documentation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the Software is furnished
+* to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all
+* copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include <lua.h>
+#include <lauxlib.h>
+#include <stdlib.h>
+#include "linenoise.h"
+
+#define LN_COMPLETION_TYPE "linenoiseCompletions*"
+
+static int completion_func_ref;
+static lua_State *completion_state;
+
+static int handle_ln_error(lua_State *L)
+{
+ lua_pushnil(L);
+ return 1;
+}
+
+static int handle_ln_ok(lua_State *L)
+{
+ lua_pushboolean(L, 1);
+ return 1;
+}
+
+static void completion_callback_wrapper(const char *line, linenoiseCompletions *completions)
+{
+ lua_State *L = completion_state;
+
+ lua_rawgeti(L, LUA_REGISTRYINDEX, completion_func_ref);
+ *((linenoiseCompletions **) lua_newuserdata(L, sizeof(linenoiseCompletions *))) = completions;
+ luaL_getmetatable(L, LN_COMPLETION_TYPE);
+ lua_setmetatable(L, -2);
+
+ lua_pushstring(L, line);
+
+ lua_pcall(L, 2, 0, 0);
+}
+
+static int l_linenoise(lua_State *L)
+{
+ const char *prompt = luaL_checkstring(L, 1);
+ char *line;
+
+ completion_state = L;
+ line = linenoise(prompt);
+ completion_state = NULL;
+
+ if(! line) {
+ return handle_ln_error(L);
+ }
+ lua_pushstring(L, line);
+ free(line);
+ return 1;
+}
+
+static int lines_next(lua_State *L)
+{
+ lua_pushcfunction(L, l_linenoise);
+ lua_pushvalue(L, lua_upvalueindex(1));
+ lua_call(L, 1, 1);
+ return 1;
+}
+
+static int l_lines(lua_State *L)
+{
+ luaL_checkstring(L, 1);
+ lua_pushcclosure(L, lines_next, 1);
+ return 1;
+}
+
+static int l_historyadd(lua_State *L)
+{
+ const char *line = luaL_checkstring(L, 1);
+
+ if(! linenoiseHistoryAdd(line)) {
+ return handle_ln_error(L);
+ }
+
+ return handle_ln_ok(L);
+}
+
+static int l_historysetmaxlen(lua_State *L)
+{
+ int len = luaL_checkinteger(L, 1);
+
+ if(! linenoiseHistorySetMaxLen(len)) {
+ return handle_ln_error(L);
+ }
+
+ return handle_ln_ok(L);
+}
+
+static int l_historysave(lua_State *L)
+{
+ const char *filename = luaL_checkstring(L, 1);
+
+ if(linenoiseHistorySave((char *) filename) < 0) {
+ return handle_ln_error(L);
+ }
+ return handle_ln_ok(L);
+}
+
+static int l_historyload(lua_State *L)
+{
+ const char *filename = luaL_checkstring(L, 1);
+
+ if(linenoiseHistoryLoad((char *) filename) < 0) {
+ return handle_ln_error(L);
+ }
+ return handle_ln_ok(L);
+}
+
+static int l_clearscreen(lua_State *L)
+{
+ linenoiseClearScreen();
+ return handle_ln_ok(L);
+}
+
+static int l_setcompletion(lua_State *L)
+{
+ luaL_checktype(L, 1, LUA_TFUNCTION);
+
+ lua_pushvalue(L, 1);
+ completion_func_ref = luaL_ref(L, LUA_REGISTRYINDEX);
+ linenoiseSetCompletionCallback(completion_callback_wrapper);
+
+ return handle_ln_ok(L);
+}
+
+static int l_addcompletion(lua_State *L)
+{
+ linenoiseCompletions *completions = *((linenoiseCompletions **) luaL_checkudata(L, 1, LN_COMPLETION_TYPE));
+ const char *entry = luaL_checkstring(L, 2);
+
+ linenoiseAddCompletion(completions, (char *) entry);
+
+ return handle_ln_ok(L);
+}
+
+luaL_Reg linenoise_funcs[] = {
+ { "linenoise", l_linenoise },
+ { "historyadd", l_historyadd },
+ { "historysetmaxlen", l_historysetmaxlen },
+ { "historysave", l_historysave },
+ { "historyload", l_historyload },
+ { "clearscreen", l_clearscreen },
+ { "setcompletion", l_setcompletion},
+ { "addcompletion", l_addcompletion },
+
+ /* Aliases for more consistent function names */
+ { "addhistory", l_historyadd },
+ { "sethistorymaxlen", l_historysetmaxlen },
+ { "savehistory", l_historysave },
+ { "loadhistory", l_historyload },
+
+ { "line", l_linenoise },
+ { "lines", l_lines },
+
+ { NULL, NULL }
+};
+
+int luaopen_linenoise(lua_State *L)
+{
+ lua_newtable(L);
+
+ luaL_newmetatable(L, LN_COMPLETION_TYPE);
+ lua_pushboolean(L, 0);
+ lua_setfield(L, -2, "__metatable");
+ lua_pop(L, 1);
+#if LUA_VERSION_NUM > 501
+ luaL_setfuncs(L,linenoise_funcs,0);
+#else
+ luaL_register(L, NULL, linenoise_funcs);
+#endif
+ return 1;
+}
diff --git a/3rdparty/pugixml/.gitignore b/3rdparty/pugixml/.gitignore
index 567609b1234..01f9cb9fbe0 100644
--- a/3rdparty/pugixml/.gitignore
+++ b/3rdparty/pugixml/.gitignore
@@ -1 +1,2 @@
build/
+.vscode/ \ No newline at end of file
diff --git a/3rdparty/pugixml/CMakeLists.txt b/3rdparty/pugixml/CMakeLists.txt
index 018e728eaf2..3dbdd6f00e2 100644
--- a/3rdparty/pugixml/CMakeLists.txt
+++ b/3rdparty/pugixml/CMakeLists.txt
@@ -4,6 +4,8 @@ cmake_minimum_required(VERSION 2.6)
option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF)
option(BUILD_TESTS "Build tests" OFF)
+option(BUILD_PKGCONFIG "Build in PKGCONFIG mode" OFF)
+
set(BUILD_DEFINES "" CACHE STRING "Build defines")
if(MSVC)
@@ -46,16 +48,25 @@ if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1 AND ";${CMAKE_C
endif()
set_target_properties(pugixml PROPERTIES VERSION 1.7 SOVERSION 1)
+get_target_property(PUGIXML_VERSION_STRING pugixml VERSION)
-install(TARGETS pugixml EXPORT pugixml-config
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-)
+if(BUILD_PKGCONFIG)
+ # Install library into its own directory under LIBDIR
+ set(INSTALL_SUFFIX /pugixml-${PUGIXML_VERSION_STRING})
+endif()
-install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+install(TARGETS pugixml EXPORT pugixml-config
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${INSTALL_SUFFIX}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${INSTALL_SUFFIX}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}${INSTALL_SUFFIX})
install(EXPORT pugixml-config DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pugixml)
+if(BUILD_PKGCONFIG)
+ configure_file(scripts/pugixml.pc.in ${PROJECT_BINARY_DIR}/pugixml.pc @ONLY)
+ install(FILES ${PROJECT_BINARY_DIR}/pugixml.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
+endif()
+
if(BUILD_TESTS)
file(GLOB TEST_SOURCES tests/*.cpp)
file(GLOB FUZZ_SOURCES tests/fuzz_*.cpp)
diff --git a/3rdparty/pugixml/docs/quickstart.adoc b/3rdparty/pugixml/docs/quickstart.adoc
index 3fe29b103a1..fe5eac63474 100644
--- a/3rdparty/pugixml/docs/quickstart.adoc
+++ b/3rdparty/pugixml/docs/quickstart.adoc
@@ -25,7 +25,7 @@ The distribution contains library source, documentation (the guide you're readin
The complete pugixml source consists of three files - one source file, `pugixml.cpp`, and two header files, `pugixml.hpp` and `pugiconfig.hpp`. `pugixml.hpp` is the primary header which you need to include in order to use pugixml classes/functions. The rest of this guide assumes that `pugixml.hpp` is either in the current directory or in one of include directories of your projects, so that `#include "pugixml.hpp"` can find the header; however you can also use relative path (i.e. `#include "../libs/pugixml/src/pugixml.hpp"`) or include directory-relative path (i.e. `#include <xml/thirdparty/pugixml/src/pugixml.hpp>`).
-The easiest way to build pugixml is to compile the source file, `pugixml.cpp`, along with the existing library/executable. This process depends on the method of building your application; for example, if you're using Microsoft Visual Studio footnote:[All trademarks used are properties of their respective owners.], Apple Xcode, Code::Blocks or any other IDE, just add `pugixml.cpp` to one of your projects. There are other building methods available, including building pugixml as a standalone static/shared library; link:manual/install.html#install.building[read the manual] for further information.
+The easiest way to build pugixml is to compile the source file, `pugixml.cpp`, along with the existing library/executable. This process depends on the method of building your application; for example, if you're using Microsoft Visual Studio footnote:[All trademarks used are properties of their respective owners.], Apple Xcode, Code::Blocks or any other IDE, just add `pugixml.cpp` to one of your projects. There are other building methods available, including building pugixml as a standalone static/shared library; link:manual.html#install.building[read the manual] for further information.
[[dom]]
== Document object model
diff --git a/3rdparty/pugixml/scripts/pugixml.pc.in b/3rdparty/pugixml/scripts/pugixml.pc.in
new file mode 100644
index 00000000000..3c97c28d2fa
--- /dev/null
+++ b/3rdparty/pugixml/scripts/pugixml.pc.in
@@ -0,0 +1,11 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+includedir=${prefix}/include/pugixml-@PUGIXML_VERSION_STRING@
+libdir=${exec_prefix}/lib/pugixml-@PUGIXML_VERSION_STRING@
+
+Name: pugixml
+Description: Light-weight, simple and fast XML parser for C++ with XPath support.
+URL: http://pugixml.org/
+Version: @PUGIXML_VERSION_STRING@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lpugixml \ No newline at end of file
diff --git a/3rdparty/pugixml/src/pugixml.hpp b/3rdparty/pugixml/src/pugixml.hpp
index 9c41b14643c..c4d44e6fbee 100644
--- a/3rdparty/pugixml/src/pugixml.hpp
+++ b/3rdparty/pugixml/src/pugixml.hpp
@@ -72,6 +72,15 @@
# endif
#endif
+// If C++ is 2011 or higher, add 'override' qualifiers
+#ifndef PUGIXML_OVERRIDE
+# if __cplusplus >= 201103
+# define PUGIXML_OVERRIDE override
+# else
+# define PUGIXML_OVERRIDE
+# endif
+#endif
+
// Character interface macros
#ifdef PUGIXML_WCHAR_MODE
# define PUGIXML_TEXT(t) L ## t
@@ -273,7 +282,7 @@ namespace pugi
// Construct writer from a FILE* object; void* is used to avoid header dependencies on stdio
xml_writer_file(void* file);
- virtual void write(const void* data, size_t size) override;
+ virtual void write(const void* data, size_t size) PUGIXML_OVERRIDE;
private:
void* file;
@@ -288,7 +297,7 @@ namespace pugi
xml_writer_stream(std::basic_ostream<char, std::char_traits<char> >& stream);
xml_writer_stream(std::basic_ostream<wchar_t, std::char_traits<wchar_t> >& stream);
- virtual void write(const void* data, size_t size) override;
+ virtual void write(const void* data, size_t size) PUGIXML_OVERRIDE;
private:
std::basic_ostream<char, std::char_traits<char> >* narrow_stream;
@@ -1214,7 +1223,7 @@ namespace pugi
explicit xpath_exception(const xpath_parse_result& result);
// Get error message
- virtual const char* what() const throw() override;
+ virtual const char* what() const throw() PUGIXML_OVERRIDE;
// Get parse result
const xpath_parse_result& result() const;
diff --git a/3rdparty/pugixml/tests/test.hpp b/3rdparty/pugixml/tests/test.hpp
index e700826ad96..f88c909c3c2 100644
--- a/3rdparty/pugixml/tests/test.hpp
+++ b/3rdparty/pugixml/tests/test.hpp
@@ -78,7 +78,7 @@ struct dummy_fixture {};
{ \
test_runner_##name(): test_runner(#name) {} \
\
- virtual void run() \
+ virtual void run() PUGIXML_OVERRIDE \
{ \
test_runner_helper_##name helper; \
helper.run(); \
diff --git a/3rdparty/pugixml/tests/test_document.cpp b/3rdparty/pugixml/tests/test_document.cpp
index 73a36f561ff..c7219e1b92b 100644
--- a/3rdparty/pugixml/tests/test_document.cpp
+++ b/3rdparty/pugixml/tests/test_document.cpp
@@ -187,7 +187,7 @@ public:
this->setg(begin, begin, end);
}
- typename std::basic_streambuf<T>::int_type underflow()
+ typename std::basic_streambuf<T>::int_type underflow() PUGIXML_OVERRIDE
{
return this->gptr() == this->egptr() ? std::basic_streambuf<T>::traits_type::eof() : std::basic_streambuf<T>::traits_type::to_int_type(*this->gptr());
}
diff --git a/3rdparty/pugixml/tests/test_dom_traverse.cpp b/3rdparty/pugixml/tests/test_dom_traverse.cpp
index 25774a585af..f977e1515ea 100644
--- a/3rdparty/pugixml/tests/test_dom_traverse.cpp
+++ b/3rdparty/pugixml/tests/test_dom_traverse.cpp
@@ -798,7 +798,7 @@ struct test_walker: xml_tree_walker
#endif
}
- virtual bool begin(xml_node& node)
+ virtual bool begin(xml_node& node) PUGIXML_OVERRIDE
{
log += STR("|");
log += depthstr();
@@ -810,7 +810,7 @@ struct test_walker: xml_tree_walker
return ++call_count != stop_count && xml_tree_walker::begin(node);
}
- virtual bool for_each(xml_node& node)
+ virtual bool for_each(xml_node& node) PUGIXML_OVERRIDE
{
log += STR("|");
log += depthstr();
@@ -822,7 +822,7 @@ struct test_walker: xml_tree_walker
return ++call_count != stop_count && xml_tree_walker::end(node);
}
- virtual bool end(xml_node& node)
+ virtual bool end(xml_node& node) PUGIXML_OVERRIDE
{
log += STR("|");
log += depthstr();
diff --git a/3rdparty/pugixml/tests/test_write.cpp b/3rdparty/pugixml/tests/test_write.cpp
index 341a4f0f971..bf45e313977 100644
--- a/3rdparty/pugixml/tests/test_write.cpp
+++ b/3rdparty/pugixml/tests/test_write.cpp
@@ -213,7 +213,7 @@ struct test_writer: xml_writer
{
std::basic_string<pugi::char_t> contents;
- virtual void write(const void* data, size_t size)
+ virtual void write(const void* data, size_t size) PUGIXML_OVERRIDE
{
CHECK(size % sizeof(pugi::char_t) == 0);
contents.append(static_cast<const pugi::char_t*>(data), size / sizeof(pugi::char_t));
@@ -604,7 +604,7 @@ TEST_XML_FLAGS(write_mixed, "<node><child1/><child2>pre<![CDATA[data]]>mid<!--co
#ifndef PUGIXML_NO_EXCEPTIONS
struct throwing_writer: pugi::xml_writer
{
- virtual void write(const void*, size_t)
+ virtual void write(const void*, size_t) PUGIXML_OVERRIDE
{
throw std::runtime_error("write failed");
}
diff --git a/3rdparty/pugixml/tests/writer_string.hpp b/3rdparty/pugixml/tests/writer_string.hpp
index 0c1089d818a..539377c939e 100644
--- a/3rdparty/pugixml/tests/writer_string.hpp
+++ b/3rdparty/pugixml/tests/writer_string.hpp
@@ -9,7 +9,7 @@ struct xml_writer_string: public pugi::xml_writer
{
std::string contents;
- virtual void write(const void* data, size_t size);
+ virtual void write(const void* data, size_t size) PUGIXML_OVERRIDE;
std::string as_narrow() const;
std::basic_string<wchar_t> as_wide() const;
diff --git a/plugins/data/data_hiscore.lua b/plugins/data/data_hiscore.lua
index 5f2214d814d..c2dcf0ca370 100644
--- a/plugins/data/data_hiscore.lua
+++ b/plugins/data/data_hiscore.lua
@@ -11,13 +11,8 @@ function dat.check(set, softlist)
return nil
end
local datpath
- local function xml_parse()
- local file = emu.file(lfs.env_replace(mame_manager:ui():options().entries.historypath:value():gsub("([^;]+)", "%1/hi2txt")), 1)
- local ret = file:open(set .. ".xml")
+ local function xml_parse(file)
local table
- if ret then
- return nil
- end
datpath = file:fullpath():gsub(".zip", "/")
local data = file:read(file:size())
data = data:match("<hi2txt>(.*)</ *hi2txt>")
@@ -494,6 +489,9 @@ function dat.check(set, softlist)
if fld["line-ignore"] then
igncol, ignval = fld["line-ignore"]:match("([^:]*):(.*)")
end
+ if fld["field"] and not fld["column"] then -- ????
+ fld["column"] = fld["field"]
+ end
for num2, col in ipairs(fld["column"]) do
if not col["display"] or col["display"] == "always" then
if not col["src"] then
@@ -501,7 +499,7 @@ function dat.check(set, softlist)
end
if not loopcnt and col["src"] ~= "index" then
table.insert(dat, 1, "for i = 1, #arr['" .. col["src"] .. "'] do")
- table.insert(dat, 2, "index = arr['" .. col["src"] .. "'][i].index")
+ table.insert(dat, 2, "index = arr['" .. col["src"] .. "'][i].index or i - 1")
table.insert(dat, 3, "line = ''")
loopcnt = true
end
@@ -768,10 +766,22 @@ function dat.check(set, softlist)
local ret = scrfile:open(set .. ".lua")
local script
if ret then
- local xml = xml_parse()
+ function get_xml_table(fileset)
+ local file = emu.file(lfs.env_replace(mame_manager:ui():options().entries.historypath:value():gsub("([^;]+)", "%1/hi2txt")), 1)
+ local ret = file:open(fileset .. ".xml")
+ if ret then
+ return nil
+ end
+ local xml = xml_parse(file)
+ return xml
+ end
+ local xml = get_xml_table(set)
if not xml then
return nil
end
+ if xml.sameas then
+ xml = get_xml_table(xml.sameas[1].id)
+ end
local status
status, script = pcall(parse_table, xml)
if not status then
diff --git a/plugins/hiscore/hiscore.dat b/plugins/hiscore/hiscore.dat
index 10809192b78..5a55b8b119e 100644
--- a/plugins/hiscore/hiscore.dat
+++ b/plugins/hiscore/hiscore.dat
@@ -4851,6 +4851,26 @@ eprom:
;@s:equites.cpp
+;*** Splendor Blast II - you must exit game with top score on screen for save to work ***
+splndrbt2:
+@:maincpu,program,40020,3,01,00
+@:maincpu,program,40840,168,53,01
+@:maincpu,program,201611,1,20,20
+@:maincpu,program,201691,1,01,01
+@:maincpu,program,201711,1,00,00
+@:maincpu,program,201791,1,00,00
+@:maincpu,program,201811,1,00,00
+@:maincpu,program,201891,1,00,00
+@:maincpu,program,201911,1,00,00
+@:maincpu,program,201921,1,20,20
+
+
+splndrbta:
+splndrbtb:
+@:maincpu,program,40840,168,53,01
+@:maincpu,program,40020,3,01,00
+
+
;(splendor blast) (by GeoMan)
splndrbt:
@:maincpu,program,40840,168,53,01
@@ -5632,6 +5652,10 @@ galaxiac:
;@s:galaxian.cpp
+uniwarsa:
+@:maincpu,program,40a8,3,00,00
+
+
anteatergg:
@:maincpu,program,40ef,3c,00,20
@@ -9682,6 +9706,11 @@ newsa:
;@s:ninjakd2.cpp
+mnightj:
+@:maincpu,program,c099,41,00,20
+@:maincpu,program,c0e6,3,00,00
+
+
;(ninja kid ii (set 1)) and clones (by GeoMan)
ninjakd2:
ninjakd2a:
@@ -9769,6 +9798,10 @@ pclubysa:
;@s:nmk16.cpp
+bjtwinpa:
+@:maincpu,program,f9100,a0,00,4c
+
+
;tdragon:******Thunder Dragon (9th Jan. 1992)
;tdragon1:******Thunder Dragon (4th Jun. 1991)
tdragon:
@@ -11493,6 +11526,12 @@ sbrkoutct:
;@s:scobra.cpp
+hustlerb5:
+@:maincpu,program,84c0,f,00,00
+@:maincpu,program,80a8,3,00,02
+@:maincpu,program,8003,1,0a,0a
+
+
;(video hustler)
hustler:
hustlerb3:
@@ -15602,6 +15641,10 @@ timepltc:
;@s:tmnt.cpp
+tmnta:
+@:maincpu,program,63500,f3,03,41
+
+
tmntub:
@:maincpu,program,63500,f3,03,41
@@ -15768,6 +15811,11 @@ tnzsjo:
;@s:toaplan1.cpp
+demonwld4:
+@:maincpu,program,c001c2,c8,00,2d
+@:maincpu,program,c001be,4,00,00
+
+
;***** truxton fixed (delete old truxton entry and replace).
truxton:
@:maincpu,program,0819de,16c,00,0b
diff --git a/scripts/src/3rdparty.lua b/scripts/src/3rdparty.lua
index db9b94d6adc..9925f0821dd 100644
--- a/scripts/src/3rdparty.lua
+++ b/scripts/src/3rdparty.lua
@@ -555,6 +555,7 @@ project "lualibs"
includedirs {
MAME_DIR .. "3rdparty",
+ MAME_DIR .. "3rdparty/linenoise-ng/include",
}
includedirs {
ext_includedir("lua"),
@@ -564,6 +565,7 @@ project "lualibs"
files {
MAME_DIR .. "3rdparty/lua-zlib/lua_zlib.c",
MAME_DIR .. "3rdparty/luafilesystem/src/lfs.c",
+ MAME_DIR .. "3rdparty/lua-linenoise/linenoise.c",
}
end
diff --git a/scripts/src/mame/frontend.lua b/scripts/src/mame/frontend.lua
index 93129cf85d9..bb89b1b3350 100644
--- a/scripts/src/mame/frontend.lua
+++ b/scripts/src/mame/frontend.lua
@@ -42,6 +42,11 @@ includedirs {
ext_includedir("flac"),
}
+configuration { "vs*" }
+ buildoptions {
+ "/bigobj",
+ }
+configuration { }
if (_OPTIONS["targetos"] == "windows") then
defines {
"UI_WINDOWS",
diff --git a/src/devices/bus/apricot/keyboard/hle.cpp b/src/devices/bus/apricot/keyboard/hle.cpp
index 8fbbb796ef1..08ba47cc4f0 100644
--- a/src/devices/bus/apricot/keyboard/hle.cpp
+++ b/src/devices/bus/apricot/keyboard/hle.cpp
@@ -266,7 +266,7 @@ void apricot_keyboard_hle_device::received_byte(uint8_t byte)
if (m_rtc_index >= 0)
{
m_rtc->address_w(m_rtc_index--);
- m_rtc->data_w(machine().driver_data()->generic_space(), 0, byte);
+ m_rtc->data_w(machine().dummy_space(), 0, byte);
}
}
else
@@ -290,7 +290,7 @@ void apricot_keyboard_hle_device::received_byte(uint8_t byte)
for (int i = 12; i >= 0; i--)
{
m_rtc->address_w(i);
- transmit_byte(0xf0 | m_rtc->data_r(machine().driver_data()->generic_space(), 0));
+ transmit_byte(0xf0 | m_rtc->data_r(machine().dummy_space(), 0));
}
break;
diff --git a/src/devices/bus/ti99_peb/tn_ide.cpp b/src/devices/bus/ti99_peb/tn_ide.cpp
index 371802d4d99..dfe277ea6df 100644
--- a/src/devices/bus/ti99_peb/tn_ide.cpp
+++ b/src/devices/bus/ti99_peb/tn_ide.cpp
@@ -141,18 +141,18 @@ READ8Z_MEMBER(nouspikel_ide_interface_device::readz)
case 0: /* RTC RAM */
if (addr & 0x80)
/* RTC RAM page register */
- reply = m_rtc->xram_r(machine().driver_data()->generic_space(),(addr & 0x1f) | 0x20);
+ reply = m_rtc->xram_r(machine().dummy_space(), (addr & 0x1f) | 0x20);
else
/* RTC RAM read */
- reply = m_rtc->xram_r(machine().driver_data()->generic_space(),addr);
+ reply = m_rtc->xram_r(machine().dummy_space(), addr);
break;
case 1: /* RTC registers */
if (addr & 0x10)
/* register data */
- reply = m_rtc->rtc_r(machine().driver_data()->generic_space(),1);
+ reply = m_rtc->rtc_r(machine().dummy_space(), 1);
else
/* register select */
- reply = m_rtc->rtc_r(machine().driver_data()->generic_space(),0);
+ reply = m_rtc->rtc_r(machine().dummy_space(), 0);
break;
case 2: /* IDE registers set 1 (CS1Fx) */
if (m_tms9995_mode ? (!(addr & 1)) : (addr & 1))
@@ -212,18 +212,18 @@ WRITE8_MEMBER(nouspikel_ide_interface_device::write)
case 0: /* RTC RAM */
if (addr & 0x80)
/* RTC RAM page register */
- m_rtc->xram_w(machine().driver_data()->generic_space(),(addr & 0x1f) | 0x20, data);
+ m_rtc->xram_w(machine().dummy_space(), (addr & 0x1f) | 0x20, data);
else
/* RTC RAM write */
- m_rtc->xram_w(machine().driver_data()->generic_space(),addr, data);
+ m_rtc->xram_w(machine().dummy_space(), addr, data);
break;
case 1: /* RTC registers */
if (addr & 0x10)
/* register data */
- m_rtc->rtc_w(machine().driver_data()->generic_space(),1, data);
+ m_rtc->rtc_w(machine().dummy_space(), 1, data);
else
/* register select */
- m_rtc->rtc_w(machine().driver_data()->generic_space(),0, data);
+ m_rtc->rtc_w(machine().dummy_space(), 0, data);
break;
case 2: /* IDE registers set 1 (CS1Fx) */
/*
diff --git a/src/devices/bus/ti99x/998board.cpp b/src/devices/bus/ti99x/998board.cpp
index fc16e9f23cb..c9db9fc34fd 100644
--- a/src/devices/bus/ti99x/998board.cpp
+++ b/src/devices/bus/ti99x/998board.cpp
@@ -1192,6 +1192,11 @@ void vaquerro_device::device_start()
save_item(NAME(m_sry));
save_item(NAME(m_a14));
save_item(NAME(m_dbin_level));
+
+ // FIXME: In rare occasions, the saved state is invalid and restoring
+ // may crash the emulated 99/8 (e.g. with invalid opcodes)
+ // Saving the wait state logic does not affect the operation, as it seems,
+ // so we leave it out.
}
void vaquerro_device::device_reset()
diff --git a/src/devices/bus/ti99x/998board.h b/src/devices/bus/ti99x/998board.h
index 3d974d87e73..f8ca54e640c 100644
--- a/src/devices/bus/ti99x/998board.h
+++ b/src/devices/bus/ti99x/998board.h
@@ -238,7 +238,7 @@ private:
// DRAM access
bool m_skdrcs;
- // Holds the decoding result; essentially names the selected line
+ // Indicates the UP level of the GROMCLK
bool m_gromclk_up;
// Have we got the upper word of the address?
diff --git a/src/devices/bus/ti99x/genboard.cpp b/src/devices/bus/ti99x/genboard.cpp
index 581b829c08e..3878f95bd77 100644
--- a/src/devices/bus/ti99x/genboard.cpp
+++ b/src/devices/bus/ti99x/genboard.cpp
@@ -211,17 +211,40 @@
geneve_mapper_device::geneve_mapper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, GENEVE_MAPPER, "Geneve Gate Array", tag, owner, clock, "geneve_mapper", __FILE__), m_gromwaddr_LSB(false),
- m_gromraddr_LSB(false), m_grom_address(0), m_video_waitstates(false),
- m_extra_waitstates(false), m_ready_asserted(false), m_read_mode(false),
- m_debug_no_ws(false), m_geneve_mode(false), m_direct_mode(false),
- m_cartridge_size(0), m_cartridge_secondpage(false),
- m_cartridge6_writable(false), m_cartridge7_writable(false),
- m_turbo(false), m_genmod(false), m_timode(false), m_pfm_mode(0),
- m_pfm_bank(0), m_pfm_output_enable(false), m_sram_mask(0), m_sram_val(0),
- m_ready(*this), m_waitcount(0), m_ext_waitcount(0),
- m_clock(nullptr), m_cpu(nullptr), m_pfm512(nullptr),
- m_pfm512a(nullptr), m_sound(nullptr), m_keyboard(nullptr),
- m_video(nullptr), m_peribox(nullptr), m_sram(*this, SRAM_PAR_TAG), m_dram(*this, DRAM_PAR_TAG)
+ m_gromraddr_LSB(false),
+ m_grom_address(0),
+ m_video_waitstates(false),
+ m_extra_waitstates(false),
+ m_ready_asserted(false),
+ m_read_mode(false),
+ m_debug_no_ws(false),
+ m_geneve_mode(false),
+ m_direct_mode(false),
+ m_cartridge_size(0),
+ m_cartridge_secondpage(false),
+ m_cartridge6_writable(false),
+ m_cartridge7_writable(false),
+ m_turbo(false),
+ m_genmod(false),
+ m_timode(false),
+ m_pfm_mode(0),
+ m_pfm_bank(0),
+ m_pfm_output_enable(false),
+ m_sram_mask(0),
+ m_sram_val(0),
+ m_ready(*this),
+ m_waitcount(0),
+ m_ext_waitcount(0),
+ m_clock(*owner, GCLOCK_TAG),
+ m_cpu(*owner, "maincpu"),
+ m_pfm512(*owner, PFM512_TAG),
+ m_pfm512a(*owner, PFM512A_TAG),
+ m_sound(*owner, TISOUNDCHIP_TAG),
+ m_keyboard(*owner, GKEYBOARD_TAG),
+ m_video(*owner, VDP_TAG),
+ m_peribox(*owner, PERIBOX_TAG),
+ m_sram(*this, SRAM_PAR_TAG),
+ m_dram(*this, DRAM_PAR_TAG)
{
m_eprom = nullptr;
}
@@ -1384,19 +1407,7 @@ WRITE_LINE_MEMBER( geneve_mapper_device::pfm_output_enable )
void geneve_mapper_device::device_start()
{
- // Get pointers
- m_peribox = machine().device<peribox_device>(PERIBOX_TAG);
- m_keyboard = machine().device<geneve_keyboard_device>(GKEYBOARD_TAG);
- m_video = machine().device<v9938_device>(VDP_TAG);
- m_sound = machine().device<sn76496_base_device>(TISOUNDCHIP_TAG);
- m_clock = machine().device<mm58274c_device>(GCLOCK_TAG);
-
- // PFM expansion
- m_pfm512 = machine().device<at29c040_device>(PFM512_TAG);
- m_pfm512a = machine().device<at29c040a_device>(PFM512A_TAG);
-
m_ready.resolve();
- m_cpu = static_cast<tms9995_device*>(machine().device("maincpu"));
m_geneve_mode = false;
m_direct_mode = true;
@@ -1416,6 +1427,13 @@ void geneve_mapper_device::device_start()
save_item(NAME(m_cartridge_secondpage));
save_item(NAME(m_cartridge6_writable));
save_item(NAME(m_cartridge7_writable));
+ save_pointer(NAME(m_map), 8);
+ save_item(NAME(m_decoded.function));
+ save_item(NAME(m_decoded.offset));
+ save_item(NAME(m_decoded.physaddr));
+ save_item(NAME(m_turbo));
+ save_item(NAME(m_genmod));
+ save_item(NAME(m_timode));
save_item(NAME(m_pfm_mode));
save_item(NAME(m_pfm_bank));
save_item(NAME(m_pfm_output_enable));
diff --git a/src/devices/bus/ti99x/genboard.h b/src/devices/bus/ti99x/genboard.h
index 17683ba0358..a54d0d3337e 100644
--- a/src/devices/bus/ti99x/genboard.h
+++ b/src/devices/bus/ti99x/genboard.h
@@ -203,15 +203,15 @@ private:
int m_ext_waitcount;
// Devices
- mm58274c_device* m_clock;
- tms9995_device* m_cpu;
- at29c040_device* m_pfm512;
- at29c040a_device* m_pfm512a;
- sn76496_base_device* m_sound;
-
- geneve_keyboard_device* m_keyboard;
- v9938_device* m_video;
- peribox_device* m_peribox;
+ required_device<mm58274c_device> m_clock;
+ required_device<tms9995_device> m_cpu;
+ required_device<at29c040_device> m_pfm512;
+ required_device<at29c040a_device> m_pfm512a;
+ required_device<sn76496_base_device> m_sound;
+
+ required_device<geneve_keyboard_device> m_keyboard;
+ required_device<v9938_device> m_video;
+ required_device<peribox_device> m_peribox;
uint8_t* m_eprom;
required_device<ram_device> m_sram;
required_device<ram_device> m_dram;
diff --git a/src/devices/cpu/m6502/n2a03.cpp b/src/devices/cpu/m6502/n2a03.cpp
index fb237cee295..d818813540d 100644
--- a/src/devices/cpu/m6502/n2a03.cpp
+++ b/src/devices/cpu/m6502/n2a03.cpp
@@ -71,8 +71,6 @@ void n2a03_device::device_start()
else
mintf = new mi_2a03_normal;
- m_apu->set_tag_memory(tag());
-
init();
}
diff --git a/src/devices/cpu/sc61860/scdasm.cpp b/src/devices/cpu/sc61860/scdasm.cpp
index c49ad9c77b4..fce5b8cd608 100644
--- a/src/devices/cpu/sc61860/scdasm.cpp
+++ b/src/devices/cpu/sc61860/scdasm.cpp
@@ -152,7 +152,7 @@ static const struct { const char *mnemonic; Adr adr; } table[]={
{ nullptr }, { nullptr }, { nullptr }, { nullptr }, { nullptr }, { nullptr }, { nullptr }, { nullptr },
};
-CPU_DISASSEMBLE( sc61860 )
+static offs_t internal_disasm_sc61860(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
const uint8_t *base_oprom = oprom;
int oper=*(oprom++);
@@ -161,42 +161,42 @@ CPU_DISASSEMBLE( sc61860 )
switch(oper&0xc0) {
case 0x80:
- sprintf(buffer,"%-6s%.2x",table[oper&0x80].mnemonic, oper&0x3f);
+ util::stream_format(stream,"%-6s%02x",table[oper&0x80].mnemonic, oper&0x3f);
break;
default:
switch(oper&0xe0) {
case 0xe0:
- sprintf(buffer,"%-6s%.4x",table[oper&0xe0].mnemonic,
+ util::stream_format(stream,"%-6s%04x",table[oper&0xe0].mnemonic,
*(oprom++)|((oper&0x1f)<<8));
break;
default:
switch (table[oper].adr) {
- case Ill: sprintf(buffer,"?%.2x",oper);break;
- case Imp: sprintf(buffer,"%s",table[oper].mnemonic); break;
- case Imm: sprintf(buffer,"%-6s%.2x",table[oper].mnemonic, *(oprom++)); break;
+ case Ill: util::stream_format(stream,"?%02x",oper);break;
+ case Imp: util::stream_format(stream,"%s",table[oper].mnemonic); break;
+ case Imm: util::stream_format(stream,"%-6s%02x",table[oper].mnemonic, *(oprom++)); break;
case ImmW:
adr=(oprom[0]<<8)|oprom[1];oprom+=2;
- sprintf(buffer,"%-6s%.4x",table[oper].mnemonic, adr);
+ util::stream_format(stream,"%-6s%04x",table[oper].mnemonic, adr);
break;
case Abs:
adr=(oprom[0]<<8)|oprom[1];oprom+=2;
- sprintf(buffer,"%-6s%.4x",table[oper].mnemonic, adr);
+ util::stream_format(stream,"%-6s%04x",table[oper].mnemonic, adr);
break;
case RelM:
adr=pc-*(oprom++);
- sprintf(buffer,"%-6s%.4x",table[oper].mnemonic, adr&0xffff);
+ util::stream_format(stream,"%-6s%04x",table[oper].mnemonic, adr&0xffff);
break;
case RelP:
adr=pc+*(oprom++);
- sprintf(buffer,"%-6s%.4x",table[oper].mnemonic, adr&0xffff);
+ util::stream_format(stream,"%-6s%04x",table[oper].mnemonic, adr&0xffff);
break;
case Ptc:
t=*(oprom++);
adr=(oprom[0]<<8)|oprom[1];oprom+=2;
- sprintf(buffer,"%-6s%.2x,%.4x",table[oper].mnemonic,t, adr);
+ util::stream_format(stream,"%-6s%02x,%04x",table[oper].mnemonic,t, adr);
break;
case Etc:
- sprintf(buffer,"%-6s",table[oper].mnemonic);
+ util::stream_format(stream,"%-6s",table[oper].mnemonic);
/*H imm, abs */
/* abs */
break;
@@ -208,3 +208,13 @@ CPU_DISASSEMBLE( sc61860 )
}
return oprom - base_oprom;
}
+
+
+CPU_DISASSEMBLE(sc61860)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_sc61860(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/cpu/tms32010/32010dsm.cpp b/src/devices/cpu/tms32010/32010dsm.cpp
index bea830175d6..c1a8f13a914 100644
--- a/src/devices/cpu/tms32010/32010dsm.cpp
+++ b/src/devices/cpu/tms32010/32010dsm.cpp
@@ -222,7 +222,7 @@ static void InitDasm32010(void)
OpInizialized = 1;
}
-CPU_DISASSEMBLE( tms32010 )
+static offs_t internal_disasm_tms32010(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
uint32_t flags = 0;
int a, b, d, k, m, n, p, r, s, w; /* these can all be filled in by parsing an instruction */
@@ -252,7 +252,7 @@ CPU_DISASSEMBLE( tms32010 )
}
if (op == -1)
{
- sprintf(buffer, "dw %04Xh *(invalid op)", code);
+ util::stream_format(stream, "dw %04Xh *(invalid op)", code);
return cnt | DASMFLAG_SUPPORTED;
}
//buffertmp = buffer;
@@ -306,7 +306,7 @@ CPU_DISASSEMBLE( tms32010 )
{
if (*cp == '%')
{
- char num[20], *q;
+ char num[20];
cp++;
switch (*cp++)
{
@@ -323,14 +323,22 @@ CPU_DISASSEMBLE( tms32010 )
default:
fatalerror("illegal escape character in format '%s'\n",Op[op].fmt);
}
- q = num; while (*q) *buffer++ = *q++;
- *buffer = '\0';
+ stream << num;
}
else
{
- *buffer++ = *cp++;
- *buffer = '\0';
+ stream << *cp++;
}
}
return cnt | flags | DASMFLAG_SUPPORTED;
}
+
+
+CPU_DISASSEMBLE(tms32010)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_tms32010(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/cpu/tms32025/32025dsm.cpp b/src/devices/cpu/tms32025/32025dsm.cpp
index 8c9a0405eca..1299f2a7f19 100644
--- a/src/devices/cpu/tms32025/32025dsm.cpp
+++ b/src/devices/cpu/tms32025/32025dsm.cpp
@@ -387,7 +387,7 @@ static void InitDasm32025(void)
OpInizialized = 1;
}
-CPU_DISASSEMBLE( tms32025 )
+static offs_t internal_disasm_tms32025(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
uint32_t flags = 0;
int a, b, c, d, k, m, n, p, r, s, t, w; /* these can all be filled in by parsing an instruction */
@@ -417,7 +417,7 @@ CPU_DISASSEMBLE( tms32025 )
}
if (op == -1)
{
- sprintf(buffer,"???? dw %04Xh",code);
+ util::stream_format(stream, "???? dw %04Xh",code);
return cnt | DASMFLAG_SUPPORTED;
}
//buffertmp = buffer;
@@ -474,7 +474,7 @@ CPU_DISASSEMBLE( tms32025 )
{
if (*cp == '%')
{
- char num[30], *q;
+ char num[30];
cp++;
switch (*cp++)
{
@@ -494,14 +494,22 @@ CPU_DISASSEMBLE( tms32025 )
default:
fatalerror("illegal escape character in format '%s'\n",Op[op].fmt);
}
- q = num; while (*q) *buffer++ = *q++;
- *buffer = '\0';
+ stream << num;
}
else
{
- *buffer++ = *cp++;
- *buffer = '\0';
+ stream << *cp++;
}
}
return cnt | flags | DASMFLAG_SUPPORTED;
}
+
+
+CPU_DISASSEMBLE(tms32025)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_tms32025(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/cpu/tms7000/7000dasm.cpp b/src/devices/cpu/tms7000/7000dasm.cpp
index 5240cf1fc37..12ae32d4dab 100644
--- a/src/devices/cpu/tms7000/7000dasm.cpp
+++ b/src/devices/cpu/tms7000/7000dasm.cpp
@@ -367,7 +367,7 @@ static const tms7000_opcodeinfo opcodes[] = {
{0x00, "NOP", 23, 0 }
};
-CPU_DISASSEMBLE( tms7000 )
+static offs_t internal_disasm_tms7000(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
int opcode, i/*, size = 1*/;
int pos = 0;
@@ -387,7 +387,7 @@ CPU_DISASSEMBLE( tms7000 )
uint16_t c;
int16_t d;
- buffer += sprintf (buffer, "%s", opcodes[i].name);
+ util::stream_format(stream, "%s", opcodes[i].name);
j=opcodes[i].operand;
@@ -398,39 +398,39 @@ CPU_DISASSEMBLE( tms7000 )
case DONE:
break;
case NONE:
- buffer += sprintf (buffer, "%s", of[j].opstr[k]);
+ util::stream_format(stream, "%s", of[j].opstr[k]);
break;
case UI8:
a = (uint8_t)opram[pos++];
- buffer += sprintf(buffer, of[j].opstr[k], (unsigned int)a);
+ util::stream_format(stream, of[j].opstr[k], (unsigned int)a);
break;
case I8:
b = (int8_t)opram[pos++];
- buffer += sprintf (buffer, of[j].opstr[k], (int8_t)b);
+ util::stream_format(stream, of[j].opstr[k], (int8_t)b);
break;
case UI16:
c = (uint16_t)opram[pos++];
c <<= 8;
c += opram[pos++];
- buffer += sprintf (buffer, of[j].opstr[k], (unsigned int)c);
+ util::stream_format(stream, of[j].opstr[k], (unsigned int)c);
break;
case I16:
d = (int16_t)opram[pos++];
d <<= 8;
d += opram[pos++];
- buffer += sprintf (buffer, of[j].opstr[k], (signed int)d);
+ util::stream_format(stream, of[j].opstr[k], (signed int)d);
break;
case PCREL:
b = (int8_t)opram[pos++];
sprintf(tmpbuf, "$%04X", pc+2+k+b);
- buffer += sprintf (buffer, of[j].opstr[k], tmpbuf);
+ util::stream_format(stream, of[j].opstr[k], tmpbuf);
break;
case PCABS:
c = (uint16_t)opram[pos++];
c <<= 8;
c += opram[pos++];
sprintf(tmpbuf, "$%04X", c);
- buffer += sprintf (buffer, of[j].opstr[k], tmpbuf);
+ util::stream_format(stream, of[j].opstr[k], tmpbuf);
break;
case TRAP:
vector = 0xffff - ((0xff - opcode) * 2);
@@ -443,6 +443,16 @@ CPU_DISASSEMBLE( tms7000 )
}
/* No Match */
- strcpy (buffer, "Illegal Opcode");
+ stream << "Illegal Opcode";
return pos | DASMFLAG_SUPPORTED;
}
+
+
+CPU_DISASSEMBLE(tms7000)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_tms7000(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/cpu/ucom4/ucom4d.cpp b/src/devices/cpu/ucom4/ucom4d.cpp
index 32284002e91..d1df0ebb5ce 100644
--- a/src/devices/cpu/ucom4/ucom4d.cpp
+++ b/src/devices/cpu/ucom4/ucom4d.cpp
@@ -113,14 +113,13 @@ static const uint8_t ucom4_mnemonic[0x100] =
-CPU_DISASSEMBLE(ucom4)
+static offs_t internal_disasm_ucom4(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
int pos = 0;
uint8_t op = oprom[pos++];
uint8_t instr = ucom4_mnemonic[op];
- char *dst = buffer;
- dst += sprintf(dst, "%-4s ", s_mnemonics[instr]);
+ util::stream_format(stream,"%-4s ", s_mnemonics[instr]);
// opcode parameter
int bits = s_bits[instr];
@@ -142,12 +141,22 @@ CPU_DISASSEMBLE(ucom4)
}
if (bits <= 4)
- dst += sprintf(dst, "%d", param);
+ util::stream_format(stream, "%d", param);
else if (bits <= 8)
- dst += sprintf(dst, "$%02X", param);
+ util::stream_format(stream, "$%02X", param);
else
- dst += sprintf(dst, "$%03X", param);
+ util::stream_format(stream, "$%03X", param);
}
return pos | s_flags[instr] | DASMFLAG_SUPPORTED;
}
+
+
+CPU_DISASSEMBLE(ucom4)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_ucom4(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/cpu/unsp/unspdasm.cpp b/src/devices/cpu/unsp/unspdasm.cpp
index 50ae51c29a9..8694b3b433b 100644
--- a/src/devices/cpu/unsp/unspdasm.cpp
+++ b/src/devices/cpu/unsp/unspdasm.cpp
@@ -11,17 +11,6 @@
#include "emu.h"
#include <stdarg.h>
-static char *output;
-
-static void ATTR_PRINTF(1,2) print(const char *fmt, ...)
-{
- va_list vl;
-
- va_start(vl, fmt);
- vsprintf(output, fmt, vl);
- va_end(vl);
-}
-
/*****************************************************************************/
static const char *reg[] =
@@ -57,20 +46,16 @@ static const char *alu[] =
#define UNSP_DASM_OK ((OP2X ? 2 : 1) | DASMFLAG_SUPPORTED)
-CPU_DISASSEMBLE( unsp )
+static offs_t internal_disasm_unsp(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
uint16_t op = *(uint16_t *)oprom;
uint16_t imm16 = *(uint16_t *)(oprom + 2);
op = big_endianize_int16(op);
imm16 = big_endianize_int16(imm16);
- output = buffer;
-
- print("<inv>");
-
if(OP0 < 0xf && OPA == 0x7 && OP1 < 2)
{
- print("%s %04x", jmp[OP0], OP1 ? (pc - OPIMM + 1) : (pc + OPIMM + 1));
+ util::stream_format(stream, "%s %04x", jmp[OP0], OP1 ? (pc - OPIMM + 1) : (pc + OPIMM + 1));
return UNSP_DASM_OK;
}
@@ -78,29 +63,29 @@ CPU_DISASSEMBLE( unsp )
{
// ALU, Indexed
case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x06: case 0x08: case 0x09: case 0x0a: case 0x0b: case 0x0c: case 0x0d:
- print("%s %s, [bp+%02x]", alu[OP0], reg[OPA], OPIMM);
+ util::stream_format(stream, "%s %s, [bp+%02x]", alu[OP0], reg[OPA], OPIMM);
return UNSP_DASM_OK;
// ALU, Immediate
case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x16: case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c:
- print("%s %s, %02x", alu[OP0], reg[OPA], OPIMM);
+ util::stream_format(stream, "%s %s, %02x", alu[OP0], reg[OPA], OPIMM);
return UNSP_DASM_OK;
// Pop / Interrupt return
case 0x29:
if(op == 0x9a90)
{
- print("retf");
+ util::stream_format(stream, "retf");
return UNSP_DASM_OK;
}
else if(op == 0x9a98)
{
- print("reti");
+ util::stream_format(stream, "reti");
return UNSP_DASM_OK;
}
else if((OPA + 1) < 8 && ((OPA + OPN) < 8))
{
- print("pop %s, %s [%s]", reg[OPA+1], reg[OPA+OPN], reg[OPB]);
+ util::stream_format(stream, "pop %s, %s [%s]", reg[OPA+1], reg[OPA+OPN], reg[OPB]);
return UNSP_DASM_OK;
}
break;
@@ -109,7 +94,7 @@ CPU_DISASSEMBLE( unsp )
case 0x2d:
if((OPA + 1) >= OPN && OPA < (OPN + 7))
{
- print("push %s, %s [%s]", reg[(OPA+1)-OPN], reg[OPA], reg[OPB]);
+ util::stream_format(stream, "push %s, %s [%s]", reg[(OPA+1)-OPN], reg[OPA], reg[OPB]);
return UNSP_DASM_OK;
}
break;
@@ -119,16 +104,16 @@ CPU_DISASSEMBLE( unsp )
switch(OPN & 3)
{
case 0:
- print("%s %s, [%s%s]", alu[OP0], reg[OPA], (OPN & 4) ? "ds:" : "", reg[OPB]);
+ util::stream_format(stream, "%s %s, [%s%s]", alu[OP0], reg[OPA], (OPN & 4) ? "ds:" : "", reg[OPB]);
return UNSP_DASM_OK;
case 1:
- print("%s %s, [%s%s--]", alu[OP0], reg[OPA], (OPN & 4) ? "ds:" : "", reg[OPB]);
+ util::stream_format(stream, "%s %s, [%s%s--]", alu[OP0], reg[OPA], (OPN & 4) ? "ds:" : "", reg[OPB]);
return UNSP_DASM_OK;
case 2:
- print("%s %s, [%s%s++]", alu[OP0], reg[OPA], (OPN & 4) ? "ds:" : "", reg[OPB]);
+ util::stream_format(stream, "%s %s, [%s%s++]", alu[OP0], reg[OPA], (OPN & 4) ? "ds:" : "", reg[OPB]);
return UNSP_DASM_OK;
case 3:
- print("%s %s, [%s++%s]", alu[OP0], reg[OPA], (OPN & 4) ? "ds:" : "", reg[OPB]);
+ util::stream_format(stream, "%s %s, [%s++%s]", alu[OP0], reg[OPA], (OPN & 4) ? "ds:" : "", reg[OPB]);
return UNSP_DASM_OK;
}
return UNSP_DASM_OK;
@@ -139,7 +124,7 @@ CPU_DISASSEMBLE( unsp )
{
// ALU, Register
case 0:
- print("%s %s, %s", alu[OP0], reg[OPA], reg[OPB]);
+ util::stream_format(stream, "%s %s, %s", alu[OP0], reg[OPA], reg[OPB]);
return UNSP_DASM_OK;
// ALU, 16-bit Immediate
@@ -148,12 +133,12 @@ CPU_DISASSEMBLE( unsp )
{
if(OP0 != 4 && OP0 != 12)
{
- print("%s %s, %s, %04x", alu[OP0], reg[OPA], reg[OPB], imm16);
+ util::stream_format(stream, "%s %s, %s, %04x", alu[OP0], reg[OPA], reg[OPB], imm16);
return UNSP_DASM_OK;
}
else
{
- print("%s %s, %04x", alu[OP0], reg[OPB], imm16);
+ util::stream_format(stream, "%s %s, %04x", alu[OP0], reg[OPB], imm16);
return UNSP_DASM_OK;
}
}
@@ -161,74 +146,71 @@ CPU_DISASSEMBLE( unsp )
// ALU, Direct 16
case 2:
- print("%s %s, [%04x]", alu[OP0], reg[OPA], imm16);
+ util::stream_format(stream, "%s %s, [%04x]", alu[OP0], reg[OPA], imm16);
return UNSP_DASM_OK;
// ALU, Direct 16
case 3:
- print("%s [%04x], %s, %s", alu[OP0], imm16, reg[OPA], reg[OPB]);
+ util::stream_format(stream, "%s [%04x], %s, %s", alu[OP0], imm16, reg[OPA], reg[OPB]);
return UNSP_DASM_OK;
// ALU, Shifted
default:
- print("%s %s, %s asr %d", alu[OP0], reg[OPA], reg[OPB], (OPN & 3) + 1);
+ util::stream_format(stream, "%s %s, %s asr %d", alu[OP0], reg[OPA], reg[OPB], (OPN & 3) + 1);
return UNSP_DASM_OK;
}
case 0x4d:
- if(OPN == 3)
- {
- if(OPA == OPB)
- {
- print("store [%04x], %s", imm16, reg[OPB]);
- }
- }
+ if((OPN == 3) && (OPA == OPB))
+ util::stream_format(stream, "store [%04x], %s", imm16, reg[OPB]);
+ else
+ util::stream_format(stream, "<inv>");
return UNSP_DASM_OK;
// ALU, Shifted
case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x56: case 0x58: case 0x59: case 0x5a: case 0x5b: case 0x5c:
- print("%s %s, %s %s %d", alu[OP0], reg[OPA], reg[OPB], (OPN & 4) ? ">>" : "<<", (OPN & 3) + 1);
+ util::stream_format(stream, "%s %s, %s %s %d", alu[OP0], reg[OPA], reg[OPB], (OPN & 4) ? ">>" : "<<", (OPN & 3) + 1);
return UNSP_DASM_OK;
// ALU, Rotated
case 0x60: case 0x61: case 0x62: case 0x63: case 0x64: case 0x66: case 0x68: case 0x69: case 0x6a: case 0x6b: case 0x6c:
- print("%s %s, %s %s %d", alu[OP0], reg[OPA], reg[OPB], (OPN & 4) ? "ror" : "rol", (OPN & 3) + 1);
+ util::stream_format(stream, "%s %s, %s %s %d", alu[OP0], reg[OPA], reg[OPB], (OPN & 4) ? "ror" : "rol", (OPN & 3) + 1);
return UNSP_DASM_OK;
// ALU, Direct 8
case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x76: case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c:
- print("%s %s, [%02x]", alu[OP0], reg[OPA], OPIMM);
+ util::stream_format(stream, "%s %s, [%02x]", alu[OP0], reg[OPA], OPIMM);
return UNSP_DASM_OK;
// Call
case 0x1f:
if(OPA == 0)
- {
- print("call %06x", ((OPIMM << 16) | imm16) << 1);
- }
+ util::stream_format(stream, "call %06x", ((OPIMM << 16) | imm16) << 1);
+ else
+ util::stream_format(stream, "<inv>");
return UNSP_DASM_OK;
// Far Jump
case 0x2f: case 0x3f: case 0x6f: case 0x7f:
if (OPA == 7 && OP1 == 2)
- {
- print("goto %06x", ((OPIMM << 16) | imm16) << 1);
- }
+ util::stream_format(stream, "goto %06x", ((OPIMM << 16) | imm16) << 1);
+ else
+ util::stream_format(stream, "<inv>");
return UNSP_DASM_OK;
// Multiply, Unsigned * Signed
case 0x0f:
if(OPN == 1 && OPA != 7)
- {
- print("mulus %s, %s", reg[OPA], reg[OPB]);
- }
+ util::stream_format(stream, "mulus %s, %s", reg[OPA], reg[OPB]);
+ else
+ util::stream_format(stream, "<inv>");
return UNSP_DASM_OK;
// Multiply, Signed * Signed
case 0x4f:
if(OPN == 1 && OPA != 7)
- {
- print("mulss %s, %s", reg[OPA], reg[OPB]);
- }
+ util::stream_format(stream, "mulss %s, %s", reg[OPA], reg[OPB]);
+ else
+ util::stream_format(stream, "<inv>");
return UNSP_DASM_OK;
// Interrupt flags
@@ -238,35 +220,51 @@ CPU_DISASSEMBLE( unsp )
switch(OPIMM)
{
case 0:
- print("int off");
+ util::stream_format(stream, "int off");
break;
case 1:
- print("int irq");
+ util::stream_format(stream, "int irq");
break;
case 2:
- print("int fiq");
+ util::stream_format(stream, "int fiq");
break;
case 3:
- print("int irq,fiq");
+ util::stream_format(stream, "int irq,fiq");
break;
case 8:
- print("irq off");
+ util::stream_format(stream, "irq off");
break;
case 9:
- print("irq on");
+ util::stream_format(stream, "irq on");
break;
case 12:
- print("fiq off");
+ util::stream_format(stream, "fiq off");
break;
case 14:
- print("fiq on");
+ util::stream_format(stream, "fiq on");
break;
case 37:
- print("nop");
+ util::stream_format(stream, "nop");
+ break;
+ default:
+ util::stream_format(stream, "<inv>");
break;
}
}
+ else
+ util::stream_format(stream, "<inv>");
return UNSP_DASM_OK;
}
+ util::stream_format(stream, "<inv>");
return UNSP_DASM_OK;
}
+
+
+CPU_DISASSEMBLE(unsp)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_unsp(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/cpu/v810/v810dasm.cpp b/src/devices/cpu/v810/v810dasm.cpp
index d45ff377f43..e4760f9a8e6 100644
--- a/src/devices/cpu/v810/v810dasm.cpp
+++ b/src/devices/cpu/v810/v810dasm.cpp
@@ -39,7 +39,7 @@ static const char *const dRegs[]=
#define GET2s(opcode) dRegs[((opcode)>>5)&0x1f]
#define GETRs(opcode) dRegs[32+((opcode)&0x1f)]
-CPU_DISASSEMBLE( v810 )
+static offs_t internal_disasm_v810(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
uint32_t flags = 0;
uint32_t opc,opc2;
@@ -49,56 +49,56 @@ CPU_DISASSEMBLE( v810 )
switch(opc>>10)
{
- case 0x00: sprintf(buffer,"MOV %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x01: sprintf(buffer,"ADD %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x02: sprintf(buffer,"SUB %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x03: sprintf(buffer,"CMP %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x04: sprintf(buffer,"SHL %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x05: sprintf(buffer,"SHR %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x06: sprintf(buffer,"JMP [%s]",GET1s(opc)); size=2; if ((opc&0x1f) == 31) flags = DASMFLAG_STEP_OUT; break;
- case 0x07: sprintf(buffer,"SAR %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x08: sprintf(buffer,"MUL %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x09: sprintf(buffer,"DIV %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x0a: sprintf(buffer,"MULU %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x0b: sprintf(buffer,"DIVU %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x0c: sprintf(buffer,"OR %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x0d: sprintf(buffer,"AND %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x0e: sprintf(buffer,"XOR %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x0f: sprintf(buffer,"NOT %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
- case 0x10: sprintf(buffer,"MOV %X,%s",I5(opc),GET2s(opc)); size=2; break;
- case 0x11: sprintf(buffer,"ADD %X,%s",I5(opc),GET2s(opc)); size=2; break;
- case 0x12: sprintf(buffer,"SETF %X,%s",I5(opc),GET2s(opc)); size=2; break;
- case 0x13: sprintf(buffer,"CMP %X,%s",I5(opc),GET2s(opc)); size=2; break;
- case 0x14: sprintf(buffer,"SHL %X,%s",UI5(opc),GET2s(opc)); size=2; break;
- case 0x15: sprintf(buffer,"SHR %X,%s",UI5(opc),GET2s(opc)); size=2; break;
- case 0x16: sprintf(buffer,"EI"); size=2; break;
- case 0x17: sprintf(buffer,"SAR %X,%s",UI5(opc),GET2s(opc)); size=2; break;
- case 0x18: sprintf(buffer,"TRAP %X",I5(opc)); size=2; break;
- case 0x19: sprintf(buffer,"RETI"); size=2; flags = DASMFLAG_STEP_OUT; break;
- case 0x1a: sprintf(buffer,"HALT"); size=2; break;
- case 0x1b: sprintf(buffer,"Unk 0x1B"); size=2; break;
- case 0x1c: sprintf(buffer,"LDSR %s,%s",GET2s(opc),GETRs(opc));size=2; break;
- case 0x1d: sprintf(buffer,"STSR %s,%s",GETRs(opc),GET2s(opc));size=2; break;
- case 0x1e: sprintf(buffer,"DI"); size=2; break;
+ case 0x00: util::stream_format(stream,"MOV %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x01: util::stream_format(stream,"ADD %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x02: util::stream_format(stream,"SUB %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x03: util::stream_format(stream,"CMP %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x04: util::stream_format(stream,"SHL %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x05: util::stream_format(stream,"SHR %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x06: util::stream_format(stream,"JMP [%s]",GET1s(opc)); size=2; if ((opc&0x1f) == 31) flags = DASMFLAG_STEP_OUT; break;
+ case 0x07: util::stream_format(stream,"SAR %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x08: util::stream_format(stream,"MUL %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x09: util::stream_format(stream,"DIV %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x0a: util::stream_format(stream,"MULU %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x0b: util::stream_format(stream,"DIVU %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x0c: util::stream_format(stream,"OR %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x0d: util::stream_format(stream,"AND %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x0e: util::stream_format(stream,"XOR %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x0f: util::stream_format(stream,"NOT %s,%s",GET1s(opc),GET2s(opc)); size=2; break;
+ case 0x10: util::stream_format(stream,"MOV %X,%s",I5(opc),GET2s(opc)); size=2; break;
+ case 0x11: util::stream_format(stream,"ADD %X,%s",I5(opc),GET2s(opc)); size=2; break;
+ case 0x12: util::stream_format(stream,"SETF %X,%s",I5(opc),GET2s(opc)); size=2; break;
+ case 0x13: util::stream_format(stream,"CMP %X,%s",I5(opc),GET2s(opc)); size=2; break;
+ case 0x14: util::stream_format(stream,"SHL %X,%s",UI5(opc),GET2s(opc)); size=2; break;
+ case 0x15: util::stream_format(stream,"SHR %X,%s",UI5(opc),GET2s(opc)); size=2; break;
+ case 0x16: util::stream_format(stream,"EI"); size=2; break;
+ case 0x17: util::stream_format(stream,"SAR %X,%s",UI5(opc),GET2s(opc)); size=2; break;
+ case 0x18: util::stream_format(stream,"TRAP %X",I5(opc)); size=2; break;
+ case 0x19: util::stream_format(stream,"RETI"); size=2; flags = DASMFLAG_STEP_OUT; break;
+ case 0x1a: util::stream_format(stream,"HALT"); size=2; break;
+ case 0x1b: util::stream_format(stream,"Unk 0x1B"); size=2; break;
+ case 0x1c: util::stream_format(stream,"LDSR %s,%s",GET2s(opc),GETRs(opc));size=2; break;
+ case 0x1d: util::stream_format(stream,"STSR %s,%s",GETRs(opc),GET2s(opc));size=2; break;
+ case 0x1e: util::stream_format(stream,"DI"); size=2; break;
case 0x1f:
switch(opc&0x1f)
{
- case 0x00: sprintf(buffer,"SCH0BSU"); break;
- case 0x01: sprintf(buffer,"SCH0BSD"); break;
- case 0x02: sprintf(buffer,"SCH1BSU"); break;
- case 0x03: sprintf(buffer,"SCH1BSD"); break;
- case 0x04: sprintf(buffer,"UnkS 4"); break;
- case 0x05: sprintf(buffer,"UnkS 5"); break;
- case 0x06: sprintf(buffer,"UnkS 6"); break;
- case 0x08: sprintf(buffer,"ORBSU"); break;
- case 0x09: sprintf(buffer,"ANDBSU"); break;
- case 0x0a: sprintf(buffer,"XORBSU"); break;
- case 0x0b: sprintf(buffer,"MOVBSU"); break;
- case 0x0c: sprintf(buffer,"ORNBSU"); break;
- case 0x0d: sprintf(buffer,"ANDNBSU"); break;
- case 0x0e: sprintf(buffer,"XORNBSU"); break;
- case 0x0f: sprintf(buffer,"NOTBSU"); break;
- default: sprintf(buffer,"UnkBS 0x%X",opc&0x1f); break;
+ case 0x00: util::stream_format(stream,"SCH0BSU"); break;
+ case 0x01: util::stream_format(stream,"SCH0BSD"); break;
+ case 0x02: util::stream_format(stream,"SCH1BSU"); break;
+ case 0x03: util::stream_format(stream,"SCH1BSD"); break;
+ case 0x04: util::stream_format(stream,"UnkS 4"); break;
+ case 0x05: util::stream_format(stream,"UnkS 5"); break;
+ case 0x06: util::stream_format(stream,"UnkS 6"); break;
+ case 0x08: util::stream_format(stream,"ORBSU"); break;
+ case 0x09: util::stream_format(stream,"ANDBSU"); break;
+ case 0x0a: util::stream_format(stream,"XORBSU"); break;
+ case 0x0b: util::stream_format(stream,"MOVBSU"); break;
+ case 0x0c: util::stream_format(stream,"ORNBSU"); break;
+ case 0x0d: util::stream_format(stream,"ANDNBSU"); break;
+ case 0x0e: util::stream_format(stream,"XORNBSU"); break;
+ case 0x0f: util::stream_format(stream,"NOTBSU"); break;
+ default: util::stream_format(stream,"UnkBS 0x%X",opc&0x1f); break;
}
size=2;
break;
@@ -111,67 +111,77 @@ CPU_DISASSEMBLE( v810 )
case 0x26:
case 0x27: switch( (opc>>9) &0xf)
{
- case 0x0: sprintf(buffer,"BV %X",pc+D9(opc)); break;
- case 0x1: sprintf(buffer,"BL %X",pc+D9(opc)); break;
- case 0x2: sprintf(buffer,"BE %X",pc+D9(opc)); break;
- case 0x3: sprintf(buffer,"BNH %X",pc+D9(opc)); break;
- case 0x4: sprintf(buffer,"BN %X",pc+D9(opc)); break;
- case 0x5: sprintf(buffer,"BR %X",pc+D9(opc)); break;
- case 0x6: sprintf(buffer,"BLT %X",pc+D9(opc)); break;
- case 0x7: sprintf(buffer,"BLE %X",pc+D9(opc)); break;
- case 0x8: sprintf(buffer,"BNV %X",pc+D9(opc)); break;
- case 0x9: sprintf(buffer,"BNL %X",pc+D9(opc)); break;
- case 0xa: sprintf(buffer,"BNE %X",pc+D9(opc)); break;
- case 0xb: sprintf(buffer,"BH %X",pc+D9(opc)); break;
- case 0xc: sprintf(buffer,"BP %X",pc+D9(opc)); break;
- case 0xd: sprintf(buffer,"NOP"); break;
- case 0xe: sprintf(buffer,"BGE %X",pc+D9(opc)); break;
- case 0xf: sprintf(buffer,"BGT %X",pc+D9(opc)); break;
+ case 0x0: util::stream_format(stream,"BV %X",pc+D9(opc)); break;
+ case 0x1: util::stream_format(stream,"BL %X",pc+D9(opc)); break;
+ case 0x2: util::stream_format(stream,"BE %X",pc+D9(opc)); break;
+ case 0x3: util::stream_format(stream,"BNH %X",pc+D9(opc)); break;
+ case 0x4: util::stream_format(stream,"BN %X",pc+D9(opc)); break;
+ case 0x5: util::stream_format(stream,"BR %X",pc+D9(opc)); break;
+ case 0x6: util::stream_format(stream,"BLT %X",pc+D9(opc)); break;
+ case 0x7: util::stream_format(stream,"BLE %X",pc+D9(opc)); break;
+ case 0x8: util::stream_format(stream,"BNV %X",pc+D9(opc)); break;
+ case 0x9: util::stream_format(stream,"BNL %X",pc+D9(opc)); break;
+ case 0xa: util::stream_format(stream,"BNE %X",pc+D9(opc)); break;
+ case 0xb: util::stream_format(stream,"BH %X",pc+D9(opc)); break;
+ case 0xc: util::stream_format(stream,"BP %X",pc+D9(opc)); break;
+ case 0xd: util::stream_format(stream,"NOP"); break;
+ case 0xe: util::stream_format(stream,"BGE %X",pc+D9(opc)); break;
+ case 0xf: util::stream_format(stream,"BGT %X",pc+D9(opc)); break;
}
size=2;
break;
- case 0x28: sprintf(buffer,"MOVEA %X, %s, %s",I16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x29: sprintf(buffer,"ADDI %X, %s, %s",I16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x2a: sprintf(buffer,"JR %X",pc+D26(opc,opc2));size=4; break;
- case 0x2b: sprintf(buffer,"JAL %X",pc+D26(opc,opc2));size=4; flags = DASMFLAG_STEP_OVER; break;
- case 0x2c: sprintf(buffer,"ORI %X, %s, %s",UI16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x2d: sprintf(buffer,"ANDI %X, %s, %s",UI16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x2e: sprintf(buffer,"XORI %X, %s, %s",UI16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x2f: sprintf(buffer,"MOVHI %X, %s, %s",UI16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x30: sprintf(buffer,"LDB %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x31: sprintf(buffer,"LDH %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x32: sprintf(buffer,"Unk 0x32"); size=2; break;
- case 0x33: sprintf(buffer,"LDW %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x34: sprintf(buffer,"STB %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
- case 0x35: sprintf(buffer,"STH %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
- case 0x36: sprintf(buffer,"Unk 0x36"); size=2; break;
- case 0x37: sprintf(buffer,"STW %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
- case 0x38: sprintf(buffer,"INB %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x39: sprintf(buffer,"INH %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x3a: sprintf(buffer,"CAXI %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x3b: sprintf(buffer,"INW %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x28: util::stream_format(stream,"MOVEA %X, %s, %s",I16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x29: util::stream_format(stream,"ADDI %X, %s, %s",I16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x2a: util::stream_format(stream,"JR %X",pc+D26(opc,opc2));size=4; break;
+ case 0x2b: util::stream_format(stream,"JAL %X",pc+D26(opc,opc2));size=4; flags = DASMFLAG_STEP_OVER; break;
+ case 0x2c: util::stream_format(stream,"ORI %X, %s, %s",UI16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x2d: util::stream_format(stream,"ANDI %X, %s, %s",UI16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x2e: util::stream_format(stream,"XORI %X, %s, %s",UI16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x2f: util::stream_format(stream,"MOVHI %X, %s, %s",UI16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x30: util::stream_format(stream,"LDB %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x31: util::stream_format(stream,"LDH %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x32: util::stream_format(stream,"Unk 0x32"); size=2; break;
+ case 0x33: util::stream_format(stream,"LDW %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x34: util::stream_format(stream,"STB %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
+ case 0x35: util::stream_format(stream,"STH %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
+ case 0x36: util::stream_format(stream,"Unk 0x36"); size=2; break;
+ case 0x37: util::stream_format(stream,"STW %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
+ case 0x38: util::stream_format(stream,"INB %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x39: util::stream_format(stream,"INH %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x3a: util::stream_format(stream,"CAXI %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
+ case 0x3b: util::stream_format(stream,"INW %X[%s], %s",D16(opc2),GET1s(opc),GET2s(opc));size=4; break;
- case 0x3c: sprintf(buffer,"OUTB %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
- case 0x3d: sprintf(buffer,"OUTH %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
+ case 0x3c: util::stream_format(stream,"OUTB %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
+ case 0x3d: util::stream_format(stream,"OUTH %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
case 0x3e:
switch((opc2&0xfc00)>>10)
{
- case 0x0: sprintf(buffer,"CMPF.S %s, %s",GET1s(opc),GET2s(opc)); break;
- case 0x2: sprintf(buffer,"CVT.WS %s, %s",GET1s(opc),GET2s(opc)); break;
- case 0x3: sprintf(buffer,"CVT.SW %s, %s",GET1s(opc),GET2s(opc)); break;
- case 0x4: sprintf(buffer,"ADDF.S %s, %s",GET1s(opc),GET2s(opc)); break;
- case 0x5: sprintf(buffer,"SUBF.S %s, %s",GET1s(opc),GET2s(opc)); break;
- case 0x6: sprintf(buffer,"MULF.S %s, %s",GET1s(opc),GET2s(opc)); break;
- case 0x7: sprintf(buffer,"DIVF.S %s, %s",GET1s(opc),GET2s(opc)); break;
- case 0xb: sprintf(buffer,"TRNC.SW %s, %s",GET1s(opc),GET2s(opc)); break;
- default : sprintf(buffer,"Unkf 0x%X",(opc2&0xfc00)>>10); break;
+ case 0x0: util::stream_format(stream,"CMPF.S %s, %s",GET1s(opc),GET2s(opc)); break;
+ case 0x2: util::stream_format(stream,"CVT.WS %s, %s",GET1s(opc),GET2s(opc)); break;
+ case 0x3: util::stream_format(stream,"CVT.SW %s, %s",GET1s(opc),GET2s(opc)); break;
+ case 0x4: util::stream_format(stream,"ADDF.S %s, %s",GET1s(opc),GET2s(opc)); break;
+ case 0x5: util::stream_format(stream,"SUBF.S %s, %s",GET1s(opc),GET2s(opc)); break;
+ case 0x6: util::stream_format(stream,"MULF.S %s, %s",GET1s(opc),GET2s(opc)); break;
+ case 0x7: util::stream_format(stream,"DIVF.S %s, %s",GET1s(opc),GET2s(opc)); break;
+ case 0xb: util::stream_format(stream,"TRNC.SW %s, %s",GET1s(opc),GET2s(opc)); break;
+ default : util::stream_format(stream,"Unkf 0x%X",(opc2&0xfc00)>>10); break;
}
size=4;
break;
- case 0x3f: sprintf(buffer,"OUTW %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
+ case 0x3f: util::stream_format(stream,"OUTW %s, %X[%s]",GET2s(opc),D16(opc2),GET1s(opc));size=4; break;
default : size=2;
}
return size | flags | DASMFLAG_SUPPORTED;
}
+
+
+CPU_DISASSEMBLE(v810)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_v810(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/cpu/z180/z180dasm.cpp b/src/devices/cpu/z180/z180dasm.cpp
index b4b4b6571a7..038b1a5d23d 100644
--- a/src/devices/cpu/z180/z180dasm.cpp
+++ b/src/devices/cpu/z180/z180dasm.cpp
@@ -391,11 +391,10 @@ static int offs(int8_t offset)
/****************************************************************************
* Disassemble opcode at PC and return number of bytes it takes
****************************************************************************/
-CPU_DISASSEMBLE( z180 )
+static offs_t internal_disasm_z180(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
const z80dasm *d;
const char *src, *ixy;
- char *dst;
unsigned PC = pc;
int8_t offset = 0;
uint8_t op, op1 = 0;
@@ -404,7 +403,6 @@ CPU_DISASSEMBLE( z180 )
uint32_t flags = 0;
ixy = "oops!!";
- dst = buffer;
op = oprom[pos++];
@@ -447,64 +445,63 @@ CPU_DISASSEMBLE( z180 )
if( d->arguments )
{
- dst += sprintf(dst, "%-5s ", s_mnemonic[d->mnemonic]);
+ util::stream_format(stream, "%-5s ", s_mnemonic[d->mnemonic]);
src = d->arguments;
while( *src )
{
switch( *src )
{
case '?': /* illegal opcode */
- dst += sprintf( dst, "$%02x,$%02x", op, op1);
+ util::stream_format(stream, "$%02x,$%02x", op, op1);
break;
case 'A':
- ea = opram[pos] + ( opram[pos+1] << 8);
+ ea = opram[pos] + (opram[pos+1] << 8);
pos += 2;
- dst += sprintf( dst, "$%04X", ea );
+ util::stream_format(stream, "$%04X", ea);
break;
case 'B': /* Byte op arg */
ea = opram[pos++];
- dst += sprintf( dst, "$%02X", ea );
+ util::stream_format(stream, "$%02X", ea);
break;
case 'N': /* Immediate 16 bit */
ea = opram[pos] + ( opram[pos+1] << 8 );
pos += 2;
- dst += sprintf( dst, "$%04X", ea );
+ util::stream_format(stream, "$%04X", ea);
break;
case 'O': /* Offset relative to PC */
offset = (int8_t) opram[pos++];
- dst += sprintf( dst, "$%05X", PC + offset + 2 );
+ util::stream_format(stream, "$%05X", PC + offset + 2);
break;
case 'P': /* Port number */
ea = opram[pos++];
- dst += sprintf( dst, "$%02X", ea );
+ util::stream_format(stream, "$%02X", ea);
break;
case 'V': /* Restart vector */
ea = op & 0x38;
- dst += sprintf( dst, "$%02X", ea );
+ util::stream_format(stream, "$%02X", ea);
break;
case 'W': /* Memory address word */
- ea = opram[pos] + ( opram[pos+1] << 8);
+ ea = opram[pos] + (opram[pos+1] << 8);
pos += 2;
- dst += sprintf( dst, "$%05X", ea );
+ util::stream_format(stream, "$%05X", ea);
break;
case 'X':
offset = (int8_t) opram[pos++];
case 'Y':
- dst += sprintf( dst,"(%s%c$%02x)", ixy, sign(offset), offs(offset) );
+ util::stream_format(stream,"(%s%c$%02x)", ixy, sign(offset), offs(offset));
break;
case 'I':
- dst += sprintf( dst, "%s", ixy);
+ util::stream_format(stream, "%s", ixy);
break;
default:
- *dst++ = *src;
+ stream << *src;
}
src++;
}
- *dst = '\0';
}
else
{
- dst += sprintf(dst, "%s", s_mnemonic[d->mnemonic]);
+ util::stream_format(stream, "%s", s_mnemonic[d->mnemonic]);
}
if (d->mnemonic == zCALL || d->mnemonic == zCPDR || d->mnemonic == zCPIR || d->mnemonic == zDJNZ ||
@@ -516,3 +513,13 @@ CPU_DISASSEMBLE( z180 )
return pos | flags | DASMFLAG_SUPPORTED;
}
+
+
+CPU_DISASSEMBLE(z180)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_z180(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/cpu/z8/z8dasm.cpp b/src/devices/cpu/z8/z8dasm.cpp
index 3b342d98628..d6eccb080fb 100644
--- a/src/devices/cpu/z8/z8dasm.cpp
+++ b/src/devices/cpu/z8/z8dasm.cpp
@@ -56,7 +56,7 @@ static const char *const CONDITION_CODE[16] =
#define B0L (B0 & 0x0f)
#define OPH (opcode >> 4)
-#define ARG(_formatting, _value) { if (argc) dst += sprintf(dst, ", "); dst += sprintf(dst, _formatting, _value); argc++; }
+#define ARG(_formatting, _value) { if (argc) util::stream_format(stream, ", "); util::stream_format(stream, _formatting, _value); argc++; }
#define arg_name(_value) ARG("%s", REGISTER_NAME[_value])
#define arg_cc ARG("%s", CONDITION_CODE[OPH])
@@ -70,10 +70,10 @@ static const char *const CONDITION_CODE[16] =
#define arg_IM(_value) ARG(IM, _value)
#define arg_RA ARG(RA, pc + (int8_t)B0 + 2)
#define arg_DA ARG(DA, B0 << 8 | B1)
-#define arg_X(_value1, _value2) { if (argc) dst += sprintf(dst, ", "); dst += sprintf(dst, X, _value1, _value2); argc++; }
+#define arg_X(_value1, _value2) { if (argc) util::stream_format(stream, ", "); util::stream_format(stream, X, _value1, _value2); argc++; }
-#define illegal dst += sprintf(dst, "Illegal")
-#define mnemonic(_mnemonic) dst += sprintf(dst, "%-5s", _mnemonic)
+#define illegal util::stream_format(stream, "Illegal")
+#define mnemonic(_mnemonic) util::stream_format(stream, "%-5s", _mnemonic)
#define bytes(_count) oprom += (_count - 1)
#define step_over flags = DASMFLAG_STEP_OVER
#define step_out flags = DASMFLAG_STEP_OUT
@@ -82,12 +82,11 @@ static const char *const CONDITION_CODE[16] =
DISASSEMBLER
***************************************************************************/
-CPU_DISASSEMBLE( z8 )
+static offs_t internal_disasm_z8(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
const uint8_t *startrom = oprom;
uint32_t flags = 0;
uint8_t opcode = *oprom++;
- char *dst = buffer;
int argc = 0;
switch (pc)
@@ -98,7 +97,7 @@ CPU_DISASSEMBLE( z8 )
case 0x0006:
case 0x0008:
case 0x000a:
- sprintf(buffer, "IRQ%u Vector %04Xh", pc / 2, opcode << 8 | *oprom++); break;
+ util::stream_format(stream, "IRQ%u Vector %04Xh", pc / 2, opcode << 8 | *oprom++); break;
default:
switch (opcode)
{
@@ -378,3 +377,13 @@ CPU_DISASSEMBLE( z8 )
return (oprom - startrom) | flags | DASMFLAG_SUPPORTED;
}
+
+
+CPU_DISASSEMBLE(z8)
+{
+ std::ostringstream stream;
+ offs_t result = internal_disasm_z8(device, stream, pc, oprom, opram, options);
+ std::string stream_str = stream.str();
+ strcpy(buffer, stream_str.c_str());
+ return result;
+}
diff --git a/src/devices/machine/6840ptm.h b/src/devices/machine/6840ptm.h
index 0362ded05f6..e567a64da8f 100644
--- a/src/devices/machine/6840ptm.h
+++ b/src/devices/machine/6840ptm.h
@@ -63,9 +63,9 @@ public:
int ext_clock(int counter) const { return m_external_clock[counter]; } // get clock frequency
DECLARE_WRITE8_MEMBER( write );
- void write(offs_t offset, uint8_t data) { write(machine().driver_data()->generic_space(), offset, data); }
+ void write(offs_t offset, uint8_t data) { write(machine().dummy_space(), offset, data); }
DECLARE_READ8_MEMBER( read );
- uint8_t read(offs_t offset) { return read(machine().driver_data()->generic_space(), offset); }
+ uint8_t read(offs_t offset) { return read(machine().dummy_space(), offset); }
void set_gate(int idx, int state);
DECLARE_WRITE_LINE_MEMBER( set_g1 );
diff --git a/src/devices/machine/8042kbdc.cpp b/src/devices/machine/8042kbdc.cpp
index bbd3ea3e469..6ab08b53386 100644
--- a/src/devices/machine/8042kbdc.cpp
+++ b/src/devices/machine/8042kbdc.cpp
@@ -288,7 +288,7 @@ void kbdc8042_device::at_8042_check_keyboard()
if (!m_keyboard.received && !m_mouse.received)
{
- if((data = m_keyboard_dev->read(machine().driver_data()->generic_space(), 0)))
+ if((data = m_keyboard_dev->read(machine().dummy_space(), 0)))
at_8042_receive(data);
}
}
diff --git a/src/devices/machine/latch8.cpp b/src/devices/machine/latch8.cpp
index f201c6a95d1..ff01e9113a2 100644
--- a/src/devices/machine/latch8.cpp
+++ b/src/devices/machine/latch8.cpp
@@ -23,14 +23,14 @@ void latch8_device::update(uint8_t new_val, uint8_t mask)
uint8_t changed = old_val ^ m_value;
for (i=0; i<8; i++)
if (((changed & (1<<i)) != 0)) {
- if (i==0 && !m_write_0.isnull()) m_write_0(machine().driver_data()->generic_space(), m_offset[i] , (m_value >> i) & 1);
- if (i==1 && !m_write_1.isnull()) m_write_1(machine().driver_data()->generic_space(), m_offset[i] , (m_value >> i) & 1);
- if (i==2 && !m_write_2.isnull()) m_write_2(machine().driver_data()->generic_space(), m_offset[i] , (m_value >> i) & 1);
- if (i==3 && !m_write_3.isnull()) m_write_3(machine().driver_data()->generic_space(), m_offset[i] , (m_value >> i) & 1);
- if (i==4 && !m_write_4.isnull()) m_write_4(machine().driver_data()->generic_space(), m_offset[i] , (m_value >> i) & 1);
- if (i==5 && !m_write_5.isnull()) m_write_5(machine().driver_data()->generic_space(), m_offset[i] , (m_value >> i) & 1);
- if (i==6 && !m_write_6.isnull()) m_write_6(machine().driver_data()->generic_space(), m_offset[i] , (m_value >> i) & 1);
- if (i==7 && !m_write_7.isnull()) m_write_7(machine().driver_data()->generic_space(), m_offset[i] , (m_value >> i) & 1);
+ if (i==0 && !m_write_0.isnull()) m_write_0(machine().dummy_space(), m_offset[i] , (m_value >> i) & 1);
+ if (i==1 && !m_write_1.isnull()) m_write_1(machine().dummy_space(), m_offset[i] , (m_value >> i) & 1);
+ if (i==2 && !m_write_2.isnull()) m_write_2(machine().dummy_space(), m_offset[i] , (m_value >> i) & 1);
+ if (i==3 && !m_write_3.isnull()) m_write_3(machine().dummy_space(), m_offset[i] , (m_value >> i) & 1);
+ if (i==4 && !m_write_4.isnull()) m_write_4(machine().dummy_space(), m_offset[i] , (m_value >> i) & 1);
+ if (i==5 && !m_write_5.isnull()) m_write_5(machine().dummy_space(), m_offset[i] , (m_value >> i) & 1);
+ if (i==6 && !m_write_6.isnull()) m_write_6(machine().dummy_space(), m_offset[i] , (m_value >> i) & 1);
+ if (i==7 && !m_write_7.isnull()) m_write_7(machine().dummy_space(), m_offset[i] , (m_value >> i) & 1);
}
}
}
diff --git a/src/devices/machine/mm58274c.cpp b/src/devices/machine/mm58274c.cpp
index 412b5ac5239..fe29117ce3a 100644
--- a/src/devices/machine/mm58274c.cpp
+++ b/src/devices/machine/mm58274c.cpp
@@ -66,6 +66,9 @@ void mm58274c_device::device_start()
m_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mm58274c_device::rtc_interrupt_cb),this));
// register for state saving
+ save_item(NAME(m_mode24));
+ save_item(NAME(m_day1));
+
save_item(NAME(m_status));
save_item(NAME(m_control));
save_item(NAME(m_clk_set));
diff --git a/src/devices/machine/tms9901.cpp b/src/devices/machine/tms9901.cpp
index 76a67caec7b..a00b12693e4 100644
--- a/src/devices/machine/tms9901.cpp
+++ b/src/devices/machine/tms9901.cpp
@@ -654,6 +654,20 @@ void tms9901_device::device_start(void)
m_interrupt.resolve();
m_clock_register = 0;
+
+ save_item(NAME(m_int_state));
+ save_item(NAME(m_old_int_state));
+ save_item(NAME(m_enabled_ints));
+ save_item(NAME(m_int_pending));
+ save_item(NAME(m_timer_int_pending));
+ save_item(NAME(m_pio_direction));
+ save_item(NAME(m_pio_output));
+ save_item(NAME(m_pio_direction_mirror));
+ save_item(NAME(m_pio_output_mirror));
+ save_item(NAME(m_clock_mode));
+ save_item(NAME(m_clock_register));
+ save_item(NAME(m_decrementer_value));
+ save_item(NAME(m_clock_read_register));
}
const device_type TMS9901 = &device_creator<tms9901_device>;
diff --git a/src/devices/machine/z80dart.cpp b/src/devices/machine/z80dart.cpp
index 72086d5e00f..59f6dccabba 100644
--- a/src/devices/machine/z80dart.cpp
+++ b/src/devices/machine/z80dart.cpp
@@ -31,21 +31,21 @@
#include "z80dart.h"
-
-
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
#define VERBOSE 0
+#define LOGPRINT(x) do { if (VERBOSE) logerror x; } while (0)
+#define LOG(x) {} LOGPRINT(x)
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#if VERBOSE == 2
+#define logerror printf
+#endif
#define CHANA_TAG "cha"
#define CHANB_TAG "chb"
-
-
//**************************************************************************
// DEVICE DEFINITIONS
//**************************************************************************
@@ -503,7 +503,6 @@ z80dart_channel::z80dart_channel(const machine_config &mconfig, const char *tag,
: device_t(mconfig, Z80DART_CHANNEL, "Z80 DART channel", tag, owner, clock, "z80dart_channel", __FILE__),
device_serial_interface(mconfig, *this),
m_rx_error(0),
- m_rx_fifo(-1),
m_rx_clock(0),
m_rx_first(0),
m_rx_break(0),
@@ -523,12 +522,6 @@ z80dart_channel::z80dart_channel(const machine_config &mconfig, const char *tag,
for (auto & elem : m_wr)
elem = 0;
-
- for (int i = 0; i < 3; i++)
- {
- m_rx_data_fifo[i] = 0;
- m_rx_error_fifo[i] = 0;
- }
}
@@ -544,10 +537,8 @@ void z80dart_channel::device_start()
// state saving
save_item(NAME(m_rr));
save_item(NAME(m_wr));
- save_item(NAME(m_rx_data_fifo));
- save_item(NAME(m_rx_error_fifo));
- save_item(NAME(m_rx_error));
- save_item(NAME(m_rx_fifo));
+ // save_item(NAME(m_rx_data_fifo));
+ // save_item(NAME(m_rx_error_fifo));
save_item(NAME(m_rx_clock));
save_item(NAME(m_rx_first));
save_item(NAME(m_rx_break));
@@ -1001,18 +992,15 @@ uint8_t z80dart_channel::data_read()
{
uint8_t data = 0;
- if (m_rx_fifo >= 0)
+ if (!m_rx_data_fifo.empty())
{
// load data from the FIFO
- data = m_rx_data_fifo[m_rx_fifo];
+ data = m_rx_data_fifo.dequeue();
// load error status from the FIFO
- m_rr[1] = (m_rr[1] & ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR)) | m_rx_error_fifo[m_rx_fifo];
+ m_rr[1] = (m_rr[1] & ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR)) | m_rx_error_fifo.dequeue();
- // decrease FIFO pointer
- m_rx_fifo--;
-
- if (m_rx_fifo < 0)
+ if (m_rx_data_fifo.empty())
{
// no more characters available in the FIFO
m_rr[0] &= ~ RR0_RX_CHAR_AVAILABLE;
@@ -1064,7 +1052,7 @@ void z80dart_channel::receive_data(uint8_t data)
{
LOG(("Z80DART \"%s\" Channel %c : Receive Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, data));
- if (m_rx_fifo == 2)
+ if (m_rx_data_fifo.full())
{
// receive overrun error detected
m_rx_error |= RR1_RX_OVERRUN_ERROR;
@@ -1083,16 +1071,17 @@ void z80dart_channel::receive_data(uint8_t data)
m_uart->trigger_interrupt(m_index, INT_SPECIAL);
break;
}
+ // overwrite last character/error with received character and error status into FIFO
+ m_rx_data_fifo.poke(data);
+ m_rx_error_fifo.poke(m_rx_error);
}
else
{
- m_rx_fifo++;
+ // store received character and error status into FIFO
+ m_rx_data_fifo.enqueue(data);
+ m_rx_error_fifo.enqueue(m_rx_error);
}
- // store received character and error status into FIFO
- m_rx_data_fifo[m_rx_fifo] = data;
- m_rx_error_fifo[m_rx_fifo] = m_rx_error;
-
m_rr[0] |= RR0_RX_CHAR_AVAILABLE;
// receive interrupt
diff --git a/src/devices/machine/z80dart.h b/src/devices/machine/z80dart.h
index a7eba9f8ac1..a70bd0fac33 100644
--- a/src/devices/machine/z80dart.h
+++ b/src/devices/machine/z80dart.h
@@ -428,11 +428,10 @@ protected:
int get_tx_word_length();
// receiver state
- uint8_t m_rx_data_fifo[3]; // receive data FIFO
- uint8_t m_rx_error_fifo[3]; // receive error FIFO
- uint8_t m_rx_error; // current receive error
- int m_rx_fifo; // receive FIFO pointer
+ util::fifo<uint8_t, 3> m_rx_data_fifo;
+ util::fifo<uint8_t, 3> m_rx_error_fifo;
+ uint8_t m_rx_error; // current receive error
int m_rx_clock; // receive clock pulse count
int m_rx_first; // first character received
int m_rx_break; // receive break condition
diff --git a/src/devices/sound/msm5232.cpp b/src/devices/sound/msm5232.cpp
index ed8adaa5415..bae848d5414 100644
--- a/src/devices/sound/msm5232.cpp
+++ b/src/devices/sound/msm5232.cpp
@@ -84,8 +84,8 @@ void msm5232_device::device_reset()
for (i=0; i<8; i++)
{
- write(machine().driver_data()->generic_space(),i,0x80);
- write(machine().driver_data()->generic_space(),i,0x00);
+ write(machine().dummy_space(), i, 0x80);
+ write(machine().dummy_space(), i, 0x00);
}
m_noise_cnt = 0;
m_noise_rng = 1;
diff --git a/src/devices/sound/nes_apu.cpp b/src/devices/sound/nes_apu.cpp
index 46bc67a5596..3c5004ea2b3 100644
--- a/src/devices/sound/nes_apu.cpp
+++ b/src/devices/sound/nes_apu.cpp
@@ -110,8 +110,7 @@ nesapu_device::nesapu_device(const machine_config &mconfig, const char *tag, dev
m_samps_per_sync(0),
m_buffer_size(0),
m_real_rate(0),
- m_stream(nullptr),
- m_cpu_tag("")
+ m_stream(nullptr)
{
for (auto & elem : m_noise_lut)
{
@@ -134,13 +133,6 @@ nesapu_device::nesapu_device(const machine_config &mconfig, const char *tag, dev
}
}
-void nesapu_device::set_tag_memory(const char *tag)
-{
- /* Initialize individual chips */
- if (tag)
- (m_APU.dpcm).memory = &machine().device(tag)->memory().space(AS_PROGRAM);
-}
-
void nesapu_device::device_clock_changed()
{
calculate_rates();
@@ -184,7 +176,7 @@ void nesapu_device::device_start()
{
create_noise(m_noise_lut, 13, NOISE_LONG);
- set_tag_memory(m_cpu_tag);
+ (m_APU.dpcm).memory = &downcast<n2a03_device &>(*owner()).space(AS_PROGRAM);
calculate_rates();
diff --git a/src/devices/sound/nes_apu.h b/src/devices/sound/nes_apu.h
index d1caa1c7fbc..62e07499646 100644
--- a/src/devices/sound/nes_apu.h
+++ b/src/devices/sound/nes_apu.h
@@ -50,9 +50,6 @@ public:
nesapu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
~nesapu_device() {}
- static void set_cpu_tag(device_t &device, const char *tag) { downcast<nesapu_device &>(device).m_cpu_tag = tag; }
- void set_tag_memory(const char *tag);
-
virtual void device_clock_changed() override;
DECLARE_READ8_MEMBER( read );
@@ -78,8 +75,6 @@ private:
uint32 m_sync_times2[SYNCS_MAX2]; /* Samples per sync table */
sound_stream *m_stream;
- const char *m_cpu_tag;
-
void calculate_rates();
void create_syncs(unsigned long sps);
int8 apu_square(square_t *chan);
@@ -93,8 +88,4 @@ private:
extern const device_type NES_APU;
-#define MCFG_NES_APU_CPU(_tag) \
- nesapu_device::set_cpu_tag(*device, _tag);
-
-
#endif /* __NES_APU_H__ */
diff --git a/src/devices/video/huc6261.cpp b/src/devices/video/huc6261.cpp
index 91e02b86654..ddd11783131 100644
--- a/src/devices/video/huc6261.cpp
+++ b/src/devices/video/huc6261.cpp
@@ -84,7 +84,7 @@ void huc6261_device::device_timer(emu_timer &timer, device_timer_id id, int para
{
g_profiler.start( PROFILER_VIDEO );
/* Get next pixel information */
- m_pixel_data = m_huc6270_b->next_pixel( machine().driver_data()->generic_space(), 0, 0xffff );
+ m_pixel_data = m_huc6270_b->next_pixel( machine().dummy_space(), 0, 0xffff );
g_profiler.stop();
}
diff --git a/src/emu/debug/dvmemory.cpp b/src/emu/debug/dvmemory.cpp
index 8a6b1db1ee9..5b828c989bb 100644
--- a/src/emu/debug/dvmemory.cpp
+++ b/src/emu/debug/dvmemory.cpp
@@ -137,14 +137,13 @@ void debug_view_memory::enumerate_sources()
// first add all the devices' address spaces
for (device_memory_interface &memintf : memory_interface_iterator(machine().root_device()))
- if (&memintf.device() != &machine().root_device())
- for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum)
- if (memintf.has_space(spacenum))
- {
- address_space &space = memintf.space(spacenum);
- name = string_format("%s '%s' %s space memory", memintf.device().name(), memintf.device().tag(), space.name());
- m_source_list.append(*global_alloc(debug_view_memory_source(name.c_str(), space)));
- }
+ for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum)
+ if (memintf.has_space(spacenum))
+ {
+ address_space &space = memintf.space(spacenum);
+ name = string_format("%s '%s' %s space memory", memintf.device().name(), memintf.device().tag(), space.name());
+ m_source_list.append(*global_alloc(debug_view_memory_source(name.c_str(), space)));
+ }
// then add all the memory regions
for (auto &region : machine().memory().regions())
diff --git a/src/emu/driver.cpp b/src/emu/driver.cpp
index b6365bc261e..a954738a557 100644
--- a/src/emu/driver.cpp
+++ b/src/emu/driver.cpp
@@ -14,17 +14,6 @@
//**************************************************************************
-// ADDRESS_MAPS
-//**************************************************************************
-
-// default address map
-static ADDRESS_MAP_START( generic, AS_0, 8, driver_device )
- AM_RANGE(0x00000000, 0xffffffff) AM_DEVREADWRITE(":", driver_device, fatal_generic_read, fatal_generic_write)
-ADDRESS_MAP_END
-
-
-
-//**************************************************************************
// DRIVER DEVICE
//**************************************************************************
@@ -34,8 +23,6 @@ ADDRESS_MAP_END
driver_device::driver_device(const machine_config &mconfig, device_type type, const char *tag)
: device_t(mconfig, type, "Driver Device", tag, nullptr, 0, "", __FILE__),
- device_memory_interface(mconfig, *this),
- m_space_config("generic", ENDIANNESS_LITTLE, 8, 32, 0, nullptr, *ADDRESS_MAP_NAME(generic)),
m_system(nullptr),
m_flip_screen_x(0),
m_flip_screen_y(0)
@@ -261,17 +248,6 @@ void driver_device::device_reset_after_children()
}
-//-------------------------------------------------
-// memory_space_config - return a description of
-// any address spaces owned by this device
-//-------------------------------------------------
-
-const address_space_config *driver_device::memory_space_config(address_spacenum spacenum) const
-{
- return (spacenum == 0) ? &m_space_config : nullptr;
-}
-
-
//**************************************************************************
// INTERRUPT ENABLE AND VECTOR HELPERS
@@ -476,22 +452,3 @@ CUSTOM_INPUT_MEMBER(driver_device::custom_port_read)
const char *tag = (const char *)param;
return ioport(tag)->read();
}
-
-
-//**************************************************************************
-// MISC READ/WRITE HANDLERS
-//**************************************************************************
-
-//-------------------------------------------------
-// generic space fatal error handlers
-//-------------------------------------------------
-
-READ8_MEMBER( driver_device::fatal_generic_read )
-{
- throw emu_fatalerror("Attempted to read from generic address space (offs %X)\n", offset);
-}
-
-WRITE8_MEMBER( driver_device::fatal_generic_write )
-{
- throw emu_fatalerror("Attempted to write to generic address space (offs %X = %02X)\n", offset, data);
-}
diff --git a/src/emu/driver.h b/src/emu/driver.h
index 2b63367ddb1..e5760e821a4 100644
--- a/src/emu/driver.h
+++ b/src/emu/driver.h
@@ -97,8 +97,7 @@ typedef delegate<void ()> driver_callback_delegate;
// ======================> driver_device
// base class for machine driver-specific devices
-class driver_device : public device_t,
- public device_memory_interface
+class driver_device : public device_t
{
public:
// construction/destruction
@@ -135,7 +134,7 @@ public:
void init_0() { }
// memory helpers
- address_space &generic_space() const { return space(AS_PROGRAM); }
+ address_space &generic_space() const { return machine().dummy_space(); }
// output heler
output_manager &output() const { return machine().output(); }
@@ -192,10 +191,6 @@ public:
// generic input port helpers
DECLARE_CUSTOM_INPUT_MEMBER( custom_port_read );
- // general fatal error handlers
- DECLARE_READ8_MEMBER( fatal_generic_read );
- DECLARE_WRITE8_MEMBER( fatal_generic_write );
-
protected:
// helpers called at startup
virtual void driver_start();
@@ -215,16 +210,11 @@ protected:
virtual void device_start() override;
virtual void device_reset_after_children() override;
- // device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
private:
// helpers
void irq_pulse_clear(void *ptr, int32_t param);
void updateflip();
- // configuration state
- const address_space_config m_space_config;
-
// internal state
const game_driver * m_system; // pointer to the game driver
driver_callback_delegate m_callbacks[CB_COUNT]; // start/reset callbacks
diff --git a/src/emu/drivers/xtal.h b/src/emu/drivers/xtal.h
index a4f00cd82f4..8747ec25c0f 100644
--- a/src/emu/drivers/xtal.h
+++ b/src/emu/drivers/xtal.h
@@ -186,6 +186,7 @@ enum
XTAL_27_164MHz = 27164000, /* Typically used on 90's Taito PCBs to drive the custom chips */
XTAL_27_2109MHz = 27210900, /* LA Girl */
XTAL_28MHz = 28000000,
+ XTAL_28_322MHz = 28322000, /* Saitek RISC 2500, Mephisto Montreux */
XTAL_28_37516MHz = 28375160, /* Amiga PAL systems */
XTAL_28_48MHz = 28480000, /* Chromatics CGC-7900 */
XTAL_28_63636MHz = 28636363, /* Later Leland games and Atari GT, Amiga NTSC, Raiden2 h/w (8x NTSC subcarrier)*/
diff --git a/src/emu/emumem.cpp b/src/emu/emumem.cpp
index fac6d1cca27..27dc67a9385 100644
--- a/src/emu/emumem.cpp
+++ b/src/emu/emumem.cpp
@@ -1553,6 +1553,20 @@ memory_manager::memory_manager(running_machine &machine)
memset(m_bank_ptr, 0, sizeof(m_bank_ptr));
}
+//-------------------------------------------------
+// allocate - allocate memory spaces
+//-------------------------------------------------
+
+void memory_manager::allocate(device_memory_interface &memory)
+{
+ for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum)
+ {
+ // if there is a configuration for this space, we need an address space
+ const address_space_config *spaceconfig = memory.space_config(spacenum);
+ if (spaceconfig != nullptr)
+ address_space::allocate(m_spacelist, *this, *spaceconfig, memory, spacenum);
+ }
+}
//-------------------------------------------------
// initialize - initialize the memory system
@@ -1563,13 +1577,9 @@ void memory_manager::initialize()
// loop over devices and spaces within each device
memory_interface_iterator iter(machine().root_device());
for (device_memory_interface &memory : iter)
- for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum)
- {
- // if there is a configuration for this space, we need an address space
- const address_space_config *spaceconfig = memory.space_config(spacenum);
- if (spaceconfig != nullptr)
- address_space::allocate(m_spacelist,*this, *spaceconfig, memory, spacenum);
- }
+ allocate(memory);
+
+ allocate(m_machine.m_dummy_space);
// construct and preprocess the address_map for each space
for (auto &space : m_spacelist)
diff --git a/src/emu/emumem.h b/src/emu/emumem.h
index 3bad3d4da23..72b7c58b81c 100644
--- a/src/emu/emumem.h
+++ b/src/emu/emumem.h
@@ -734,6 +734,7 @@ public:
private:
// internal helpers
void bank_reattach();
+ void allocate(device_memory_interface &memory);
// internal state
running_machine & m_machine; // reference to the machine
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp
index 94c331eac8d..4871e004d82 100644
--- a/src/emu/machine.cpp
+++ b/src/emu/machine.cpp
@@ -130,10 +130,13 @@ running_machine::running_machine(const machine_config &_config, machine_manager
m_memory(*this),
m_ioport(*this),
m_parameters(*this),
- m_scheduler(*this)
+ m_scheduler(*this),
+ m_dummy_space(_config, "dummy_space", &root_device(), 0)
{
memset(&m_base_time, 0, sizeof(m_base_time));
+ m_dummy_space.set_machine(*this);
+
// set the machine on all devices
device_iterator iter(root_device());
for (device_t &device : iter)
@@ -963,6 +966,8 @@ void running_machine::logfile_callback(const char *buffer)
void running_machine::start_all_devices()
{
+ m_dummy_space.start();
+
// iterate through the devices
int last_failed_starts = -1;
while (last_failed_starts != 0)
@@ -1228,6 +1233,48 @@ void system_time::full_time::set(struct tm &t)
//**************************************************************************
+// DUMMY ADDRESS SPACE
+//**************************************************************************
+
+READ8_MEMBER(dummy_space_device::read)
+{
+ throw emu_fatalerror("Attempted to read from generic address space (offs %X)\n", offset);
+}
+
+WRITE8_MEMBER(dummy_space_device::write)
+{
+ throw emu_fatalerror("Attempted to write to generic address space (offs %X = %02X)\n", offset, data);
+}
+
+static ADDRESS_MAP_START(dummy, AS_0, 8, dummy_space_device)
+ AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(read, write)
+ADDRESS_MAP_END
+
+const device_type DUMMY_SPACE = &device_creator<dummy_space_device>;
+
+dummy_space_device::dummy_space_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, DUMMY_SPACE, "Dummy Space", tag, owner, clock, "dummy_space", __FILE__),
+ device_memory_interface(mconfig, *this),
+ m_space_config("dummy", ENDIANNESS_LITTLE, 8, 32, 0, nullptr, *ADDRESS_MAP_NAME(dummy))
+{
+}
+
+void dummy_space_device::device_start()
+{
+}
+
+//-------------------------------------------------
+// memory_space_config - return a description of
+// any address spaces owned by this device
+//-------------------------------------------------
+
+const address_space_config *dummy_space_device::memory_space_config(address_spacenum spacenum) const
+{
+ return (spacenum == 0) ? &m_space_config : nullptr;
+}
+
+
+//**************************************************************************
// JAVASCRIPT PORT-SPECIFIC
//**************************************************************************
diff --git a/src/emu/machine.h b/src/emu/machine.h
index 5818e86bc87..6f9e26b24f5 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -132,6 +132,32 @@ public:
+// ======================> dummy_space_device
+
+// a dummy address space for passing to handlers outside of the memory system
+
+class dummy_space_device : public device_t,
+ public device_memory_interface
+{
+public:
+ dummy_space_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ DECLARE_READ8_MEMBER(read);
+ DECLARE_WRITE8_MEMBER(write);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+
+ // device_memory_interface overrides
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
+
+private:
+ const address_space_config m_space_config;
+};
+
+
+
// ======================> running_machine
typedef delegate<void ()> machine_notify_delegate;
@@ -142,6 +168,7 @@ class running_machine
DISABLE_COPYING(running_machine);
friend class sound_manager;
+ friend class memory_manager;
typedef std::function<void(const char*)> logerror_callback;
@@ -230,6 +257,7 @@ public:
void set_rtc_datetime(const system_time &systime);
// misc
+ address_space &dummy_space() const { return m_dummy_space.space(AS_PROGRAM); }
void popmessage() const { popmessage(static_cast<char const *>(nullptr)); }
template <typename Format, typename... Params> void popmessage(Format &&fmt, Params &&... args) const;
template <typename Format, typename... Params> void logerror(Format &&fmt, Params &&... args) const;
@@ -356,6 +384,9 @@ private:
// string formatting buffer
mutable util::ovectorstream m_string_buffer;
+
+ // configuration state
+ dummy_space_device m_dummy_space;
};
diff --git a/src/frontend/mame/console.cpp b/src/frontend/mame/console.cpp
index f3feb048f43..2bc834f5ad5 100644
--- a/src/frontend/mame/console.cpp
+++ b/src/frontend/mame/console.cpp
@@ -9,6 +9,7 @@
***************************************************************************/
#include "emu.h"
+#include "luaengine.h"
#include "console.h"
#include "linenoise-ng/include/linenoise.h"
#include "mame.h"
@@ -28,9 +29,10 @@ console_frontend::console_frontend(emu_options &options, osd_interface &osd)
m_wait(false),
m_prompt("\x1b[1;36m[MAME]\x1b[0m> ")
{
- using namespace std::placeholders;
- m_commands.insert(std::make_pair("quit", std::bind(&console_frontend::cmd_quit, this, _1)));
- m_commands.insert(std::make_pair("exit", std::bind(&console_frontend::cmd_quit, this, _1)));
+ mame_machine_manager::instance()->lua()->sol()["quit"] = [this]() { cmd_quit(); };
+ m_commands.push_back("quit()");
+ mame_machine_manager::instance()->lua()->sol()["exit"] = [this]() { cmd_quit(); };
+ m_commands.push_back("exit()");
gConsole = this;
}
@@ -47,14 +49,14 @@ void console_frontend::completion(char const* prefix, linenoiseCompletions* lc)
{
for (auto cmd : m_commands)
{
- if (strncmp(prefix, cmd.first.c_str(), strlen(prefix)) == 0)
+ if (strncmp(prefix, cmd.c_str(), strlen(prefix)) == 0)
{
- linenoiseAddCompletion(lc, cmd.first.c_str());
+ linenoiseAddCompletion(lc, cmd.c_str());
}
}
}
-void console_frontend::cmd_quit(std::vector<std::string>& arg)
+void console_frontend::cmd_quit()
{
printf("Exiting application\n");
m_run.store(false);
@@ -89,46 +91,6 @@ void console_frontend::read_console(std::string &cmdLine)
}
}
-void console_frontend::split_command(std::vector<std::string>& arg, std::string command)
-{
- int len = command.length();
- bool qot = false, sqot = false;
- int arglen;
- for (int i = 0; i < len; i++) {
- int start = i;
- if (command[i] == '\"') {
- qot = true;
- }
- else if (command[i] == '\'') sqot = true;
-
- if (qot) {
- i++;
- start++;
- while (i<len && command[i] != '\"')
- i++;
- if (i<len)
- qot = false;
- arglen = i - start;
- i++;
- }
- else if (sqot) {
- i++;
- while (i<len && command[i] != '\'')
- i++;
- if (i<len)
- sqot = false;
- arglen = i - start;
- i++;
- }
- else {
- while (i<len && command[i] != ' ')
- i++;
- arglen = i - start;
- }
- arg.push_back(command.substr(start, arglen));
- }
-}
-
static void completionHook(char const* prefix, linenoiseCompletions* lc)
{
gConsole->completion(prefix, lc);
@@ -159,16 +121,7 @@ void console_frontend::start_console()
{
if (m_wait.load())
{
- std::vector<std::string> arg;
- split_command(arg, cmdLine);
- auto command = m_commands.find(arg[0]);
- if (command != m_commands.end())
- {
- command->second(arg);
- }
- else {
- printf("Unknown command: %s\n", arg[0].c_str());
- }
+ mame_machine_manager::instance()->lua()->load_string(cmdLine.c_str());
cmdLine.clear();
m_wait.store(false);
} else {
diff --git a/src/frontend/mame/console.h b/src/frontend/mame/console.h
index e33b272b83d..94405c7dc60 100644
--- a/src/frontend/mame/console.h
+++ b/src/frontend/mame/console.h
@@ -28,17 +28,14 @@ public:
private:
void read_console(std::string &cmdLine);
- void split_command(std::vector<std::string>& arg, std::string command);
- void cmd_quit(std::vector<std::string>& arg);
+ void cmd_quit();
// internal state
- //emu_options & m_options;
- //osd_interface & m_osd;
std::atomic<bool> m_run;
std::atomic<bool> m_wait;
std::string m_prompt;
-
- std::unordered_map<std::string, std::function<void(std::vector<std::string>& arg)>> m_commands;
+
+ std::vector<std::string> m_commands;
};
#endif /* MAME_FRONTEND_CONSOLE_H */
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index 9cacb72d4a8..b9ca13e17f0 100644
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -8,10 +8,7 @@
***************************************************************************/
-#include <limits>
-#include <thread>
#include <lua.hpp>
-#include <signal.h>
#include "emu.h"
#include "mame.h"
#include "drivenum.h"
@@ -21,7 +18,6 @@
#include "natkeyboard.h"
#include "uiinput.h"
#include "pluginopts.h"
-#include <mutex>
#ifdef __clang__
#pragma clang diagnostic ignored "-Wshift-count-overflow"
@@ -37,6 +33,7 @@
extern "C" {
int luaopen_zlib(lua_State *L);
int luaopen_lfs(lua_State *L);
+ int luaopen_linenoise(lua_State *L);
}
namespace sol
@@ -527,6 +524,7 @@ lua_engine::lua_engine()
// Get package.preload so we can store builtins in it.
sol()["package"]["preload"]["zlib"] = &luaopen_zlib;
sol()["package"]["preload"]["lfs"] = &luaopen_lfs;
+ sol()["package"]["preload"]["linenoise"] = &luaopen_linenoise;
lua_gc(m_lua_state, LUA_GCRESTART, 0);
}
@@ -758,6 +756,17 @@ void lua_engine::initialize()
return sol::make_object(sol(), sol::nil);
return sol::make_object(sol(), driver_list::driver(i));
};
+ // this throws an error when implemented as an initializer
+ emu["item"] = [this](int index) {
+ save_item *item = new save_item;
+ if(!machine().save().indexed_item(index, item->base, item->size, item->count))
+ {
+ item->base = nullptr;
+ item->size = 0;
+ item->count= 0;
+ }
+ return item;
+ };
emu.new_usertype<emu_file>("file", sol::call_constructor, sol::constructors<sol::types<const char *, uint32_t>>(),
"read", [](emu_file &file, sol::buffer *buff) { buff->set_len(file.read(buff->get_ptr(), buff->get_len())); return buff; },
@@ -768,14 +777,8 @@ void lua_engine::initialize()
"filename", &emu_file::filename,
"fullpath", &emu_file::fullpath);
- emu.new_usertype<save_item>("item", sol::call_constructor, sol::factories([this](save_item &item, int index) {
- if(!machine().save().indexed_item(index, item.base, item.size, item.count))
- {
- item.base = nullptr;
- item.size = 0;
- item.count= 0;
- }
- }),
+ sol().new_usertype<save_item>("item",
+ sol::meta_function::garbage_collect, sol::destructor([](save_item *item) { delete item; }),
"size", sol::readonly(&save_item::size),
"count", sol::readonly(&save_item::count),
"read", [this](save_item &item, int offset) -> sol::object {
diff --git a/src/frontend/mame/luaengine.h b/src/frontend/mame/luaengine.h
index f381edcfc87..b360d932514 100644
--- a/src/frontend/mame/luaengine.h
+++ b/src/frontend/mame/luaengine.h
@@ -100,17 +100,15 @@ public:
call_plugin(name, sol::make_object(sol(), in));
}
+ sol::state_view &sol() const { return *m_sol_state; }
private:
// internal state
lua_State *m_lua_state;
sol::state_view *m_sol_state;
- sol::state_view &sol() const { return *m_sol_state; }
running_machine *m_machine;
std::vector<std::string> m_menu;
- std::map<lua_State *, std::pair<lua_State *, int> > thread_registry;
-
running_machine &machine() const { return *m_machine; }
void on_machine_prestart();
diff --git a/src/lib/util/coretmpl.h b/src/lib/util/coretmpl.h
index 19a0a95cf09..86f242422ac 100644
--- a/src/lib/util/coretmpl.h
+++ b/src/lib/util/coretmpl.h
@@ -428,7 +428,7 @@ public:
fifo()
: std::array<T, N>()
, m_head(this->begin())
- , m_tail(this->end())
+ , m_tail(this->begin())
, m_empty(true)
{
static_assert(0U < N, "FIFO must have at least one element");
@@ -513,11 +513,27 @@ public:
return result;
}
+ void poke(T &v)
+ {
+ *m_tail = v;
+ }
+
+ void poke(T &&v)
+ {
+ *m_tail = std::move(v);
+ }
+
T const &peek() const
{
return *m_head;
}
+ void clear()
+ {
+ m_head = m_tail = this->begin();
+ m_empty = true;
+ }
+
private:
typename fifo::iterator m_head, m_tail;
bool m_empty;
diff --git a/src/mame/audio/cage.cpp b/src/mame/audio/cage.cpp
index 7d5c2d2deac..1398a52e954 100644
--- a/src/mame/audio/cage.cpp
+++ b/src/mame/audio/cage.cpp
@@ -448,7 +448,7 @@ void atari_cage_device::update_control_lines()
if ((m_control & 2) && m_cage_to_cpu_ready)
reason |= CAGE_IRQ_REASON_DATA_READY;
- m_irqhandler(machine().driver_data()->generic_space(), 0, reason);
+ m_irqhandler(machine().dummy_space(), 0, reason);
/* set the IOF input lines */
val = m_cpu->state_int(TMS3203X_IOF);
val &= ~0x88;
diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp
index 2369a52d259..876393c13f8 100644
--- a/src/mame/audio/dcs.cpp
+++ b/src/mame/audio/dcs.cpp
@@ -2142,7 +2142,7 @@ void dcs_audio_device::fifo_notify(int count, int max)
if (transfer.state != 5 || transfer.fifo_entries == transfer.writes_left || transfer.fifo_entries >= 256)
{
for ( ; transfer.fifo_entries; transfer.fifo_entries--)
- preprocess_write(m_fifo_data_r(machine().driver_data()->generic_space(),0, 0xffff));
+ preprocess_write(m_fifo_data_r(machine().dummy_space(), 0, 0xffff));
}
}
@@ -2155,7 +2155,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( dcs_audio_device::transfer_watchdog_callback )
if (transfer.fifo_entries && starting_writes_left == transfer.writes_left)
{
for ( ; transfer.fifo_entries; transfer.fifo_entries--)
- preprocess_write(m_fifo_data_r(machine().driver_data()->generic_space(),0, 0xffff));
+ preprocess_write(m_fifo_data_r(machine().dummy_space(), 0, 0xffff));
}
if (transfer.watchdog != nullptr)
transfer.watchdog->adjust(attotime::from_msec(1), transfer.writes_left);
diff --git a/src/mame/audio/mw8080bw.cpp b/src/mame/audio/mw8080bw.cpp
index db0807bb522..8a8085e5b48 100644
--- a/src/mame/audio/mw8080bw.cpp
+++ b/src/mame/audio/mw8080bw.cpp
@@ -565,7 +565,7 @@ void mw8080bw_state::maze_write_discrete(uint8_t maze_tone_timing_state)
/* controls need to be active low */
int controls = ~ioport("IN0")->read() & 0xff;
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_discrete->write(space, MAZE_TONE_TIMING, maze_tone_timing_state);
m_discrete->write(space, MAZE_P1_DATA, controls & 0x0f);
m_discrete->write(space, MAZE_P2_DATA, (controls >> 4) & 0x0f);
diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp
index 38bffaf20cb..6e87452f8ca 100644
--- a/src/mame/drivers/apple2gs.cpp
+++ b/src/mame/drivers/apple2gs.cpp
@@ -55,7 +55,7 @@
#include "machine/appldriv.h"
#include "sound/es5503.h"
#include "machine/applefdc.h"
-#include "machine/8530scc.h"
+#include "machine/z80scc.h"
#include "sound/speaker.h"
#include "machine/ram.h"
@@ -79,6 +79,8 @@
//#include "bus/a2bus/a2udrive.h"
#include "bus/a2bus/a2hsscsi.h"
+#include "bus/rs232/rs232.h"
+
#include "softlist.h"
static const gfx_layout apple2gs_text_layout =
@@ -386,7 +388,19 @@ static MACHINE_CONFIG_START( apple2gs, apple2gs_state )
MCFG_IWM_ADD("fdc", apple2_fdc_interface)
/* SCC */
- MCFG_DEVICE_ADD("scc", SCC8530, APPLE2GS_14M/2)
+ MCFG_SCC85C30_ADD(SCC_TAG, APPLE2GS_14M/2, 0, 0, 0, 0)
+ MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE(RS232A_TAG, rs232_port_device, write_txd))
+ MCFG_Z80SCC_OUT_TXDB_CB(DEVWRITELINE(RS232B_TAG, rs232_port_device, write_txd))
+
+ MCFG_RS232_PORT_ADD(RS232A_TAG, default_rs232_devices, nullptr)
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE(SCC_TAG, z80scc_device, rxa_w))
+ MCFG_RS232_DCD_HANDLER(DEVWRITELINE(SCC_TAG, z80scc_device, dcda_w))
+ MCFG_RS232_CTS_HANDLER(DEVWRITELINE(SCC_TAG, z80scc_device, ctsa_w))
+
+ MCFG_RS232_PORT_ADD(RS232B_TAG, default_rs232_devices, nullptr)
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE(SCC_TAG, z80scc_device, rxb_w))
+ MCFG_RS232_DCD_HANDLER(DEVWRITELINE(SCC_TAG, z80scc_device, dcdb_w))
+ MCFG_RS232_CTS_HANDLER(DEVWRITELINE(SCC_TAG, z80scc_device, ctsb_w))
MCFG_LEGACY_FLOPPY_APPLE_2_DRIVES_ADD(apple2gs_floppy525_floppy_interface,15,16)
MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADDITIONAL_ADD(apple2gs_floppy35_floppy_interface)
diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp
index 71e60956e63..d499359e4bc 100644
--- a/src/mame/drivers/fidel6502.cpp
+++ b/src/mame/drivers/fidel6502.cpp
@@ -2229,7 +2229,7 @@ CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, driver_device, 0
CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, driver_device, 0, "Fidelity Electronics", "Excel Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1985, fexcela, fexcel, 0, fexcel, fexcel, driver_device, 0, "Fidelity Electronics", "The Excellence (model EP12)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // 1st version of The Excellence
CONS( 1985, fexcelb, fexcel, 0, fexcel, fexcel, driver_device, 0, "Fidelity Electronics", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1986, fexcelp, fexcel, 0, fexcelp, fexcel, driver_device, 0, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1986, fexcelp, 0, 0, fexcelp, fexcel, driver_device, 0, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1989, fdes2000, 0, 0, fdes2000, fdes, driver_device, 0, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // Excellence series hardware
diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp
index 856aa6bc89b..e6343581e9c 100644
--- a/src/mame/drivers/fidel68k.cpp
+++ b/src/mame/drivers/fidel68k.cpp
@@ -12,7 +12,7 @@
TODO:
- how does dual-CPU work?
- - IRQ level/timing is unknown
+ - EAG IRQ level/timing is unknown
- USART is not emulated
- V9(68030 @ 32MHz) is faster than V10(68040 @ 25MHz) but it should be the other
way around, culprit is unemulated cache?
@@ -22,6 +22,18 @@
******************************************************************************
+Excel 68000 (model 6094)
+------------------------
+16KB RAM(2*SRM2264C-10), 64KB ROM(2*AT27C256-15DC)
+HD68HC000P12 CPU, 12MHz XTAL
+PCB label 510-1129A01
+PCB has edge connector for module, but no external slot
+
+I/O is via TTL, overall very similar to EAG.
+
+
+******************************************************************************
+
Elite Avant Garde (EAG, model 6114)
-----------------------------------
@@ -34,7 +46,7 @@ V3: 512KB DRAM
V4: 1MB DRAM
V5: 128KB+64KB DRAM, dual-CPU! (2*68K @ 16MHz)
-V6-V11 are on model 6117. Older 1986 model 6081 uses a 6502 CPU.
+V6-V11 are on model 6117. Older 1986 model 6081/6088/6089 uses a 6502 CPU.
Hardware info:
--------------
@@ -149,6 +161,7 @@ B0000x-xxxxxx: see V7, -800000
#include "sound/volt_reg.h"
// internal artwork
+#include "fidel_ex_68k.lh" // clickable
#include "fidel_eag_68k.lh" // clickable
@@ -159,7 +172,11 @@ public:
: fidelz80base_state(mconfig, type, tag)
{ }
- // devices/pointers
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M68K_IRQ_2, ASSERT_LINE); }
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE); }
+
+ // Excel 68000
+ DECLARE_WRITE8_MEMBER(fexcel68k_mux_w);
// EAG(6114/6117)
void eag_prepare_display();
@@ -176,22 +193,36 @@ public:
// Devices, I/O
/******************************************************************************
+ Excel 68000
+******************************************************************************/
+
+WRITE8_MEMBER(fidel68k_state::fexcel68k_mux_w)
+{
+ // a1-a3,d0: 74259
+ uint8_t mask = 1 << offset;
+ m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
+
+ // 74259 Q0-Q3: 74145 A-D (Q4-Q7 N/C)
+ eag_mux_w(space, offset, m_led_select & 0xf);
+}
+
+
+
+/******************************************************************************
EAG
******************************************************************************/
-// misc handlers
+// TTL/generic
void fidel68k_state::eag_prepare_display()
{
- // 8*7seg leds, (8+1)*8 chessboard leds
+ // Excel 68000: 4*7seg leds, 8*8 chessboard leds
+ // EAG: 8*7seg leds(2 panels), (8+1)*8 chessboard leds
uint8_t seg_data = BITSWAP8(m_7seg_data,0,1,3,2,7,5,6,4);
- set_display_segmask(0x1ef, 0x7f);
+ set_display_segmask(0x1ff, 0x7f);
display_matrix(16, 9, m_led_data << 8 | seg_data, m_inp_mux);
}
-
-// TTL/generic
-
READ8_MEMBER(fidel68k_state::eag_input1_r)
{
// a1-a3,d7: multiplexed inputs (active low)
@@ -243,6 +274,18 @@ READ8_MEMBER(fidel68k_state::eag_cart_r)
Address Maps
******************************************************************************/
+// Excel 68000
+
+static ADDRESS_MAP_START( fexcel68k_map, AS_PROGRAM, 16, fidel68k_state )
+ AM_RANGE(0x000000, 0x00ffff) AM_ROM
+ AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_leds_w, 0x00ff)
+ AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_7seg_w, 0xff00)
+ AM_RANGE(0x044000, 0x047fff) AM_RAM
+ AM_RANGE(0x100000, 0x10000f) AM_MIRROR(0x03fff0) AM_READ8(eag_input1_r, 0x00ff)
+ AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x03fff0) AM_WRITE8(fexcel68k_mux_w, 0x00ff)
+ADDRESS_MAP_END
+
+
// EAG
static ADDRESS_MAP_START( eag_map, AS_PROGRAM, 16, fidel68k_state )
@@ -291,6 +334,88 @@ ADDRESS_MAP_END
Input Ports
******************************************************************************/
+static INPUT_PORTS_START( cb_buttons )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
+INPUT_PORTS_END
+
static INPUT_PORTS_START( cb_magnets )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
@@ -373,6 +498,22 @@ static INPUT_PORTS_START( cb_magnets )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
INPUT_PORTS_END
+
+static INPUT_PORTS_START( fexcel68k )
+ PORT_INCLUDE( cb_buttons )
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Move / Pawn")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hint / Knight")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Take Back / Bishop")
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Level / Rook")
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Options / Queen")
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Verify / King")
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( eag )
PORT_INCLUDE( cb_magnets )
@@ -402,6 +543,25 @@ INPUT_PORTS_END
Machine Drivers
******************************************************************************/
+static MACHINE_CONFIG_START( fexcel68k, fidel68k_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz)
+ MCFG_CPU_PROGRAM_MAP(fexcel68k_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel68k_state, irq_on, attotime::from_hz(618)) // theoretical frequency from 556 timer (22nf, 91K + 20K POT @ 14.8K, 0.1K), measurement was 580Hz
+ MCFG_TIMER_START_DELAY(attotime::from_hz(618) - attotime::from_nsec(1525)) // active for 1.525us
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(618))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_fidel_ex_68k)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("speaker")
+ MCFG_SOUND_ADD("dac", DAC_1BIT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25)
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( eag, fidel68k_state )
/* basic machine hardware */
@@ -465,27 +625,31 @@ MACHINE_CONFIG_END
ROM Definitions
******************************************************************************/
+ROM_START( fexcel68k ) // model 6094, PCB label 510.1120B01
+ ROM_REGION16_BE( 0x10000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("e3_yellow.u6", 0x00000, 0x08000, CRC(a8a27714) SHA1(bc42a561eb39dd389c7831f1a25ad260510085d8) ) // AT27C256-15
+ ROM_LOAD16_BYTE("04_red.u7", 0x00001, 0x08000, CRC(560a14b7) SHA1(11f2375255bfa229314697f103e891ba1cf0c715) ) // "
+ROM_END
+
+
ROM_START( feagv2 )
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
ROM_LOAD16_BYTE("6114_e5.u18", 0x00000, 0x10000, CRC(f9c7bada) SHA1(60e545f829121b9a4f1100d9e85ac83797715e80) ) // 27c512
ROM_LOAD16_BYTE("6114_o5.u19", 0x00001, 0x10000, CRC(04f97b22) SHA1(8b2845dd115498f7b385e8948eca6a5893c223d1) ) // "
ROM_END
-
ROM_START( feagv7 )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD16_BYTE("eag-v7b", 0x00000, 0x10000, CRC(f2f68b63) SHA1(621e5073e9c5083ac9a9b467f3ef8aa29beac5ac) )
ROM_LOAD16_BYTE("eag-v7a", 0x00001, 0x10000, CRC(506b688f) SHA1(0a091c35d0f01166b57f964b111cde51c5720d58) )
ROM_END
-
ROM_START( feagv9 )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD16_BYTE("eag-v9b", 0x00000, 0x10000, CRC(60523199) SHA1(a308eb6b782732af1ab2fd0ed8b046de7a8dd24b) )
ROM_LOAD16_BYTE("eag-v9a", 0x00001, 0x10000, CRC(255c63c0) SHA1(8aa0397bdb3731002f5b066cd04ec62531267e22) )
ROM_END
-
ROM_START( feagv11 )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD32_BYTE("16", 0x00000, 0x08000, CRC(8375d61f) SHA1(e042f6f01480c59ee09a458cf34f135664479824) ) // 27c256
@@ -502,9 +666,11 @@ ROM_END
Drivers
******************************************************************************/
-/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1989, feagv2, 0, 0, eag, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1990, feagv7, feagv2, 0, eagv7, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1990, feagv9, feagv2, 0, eagv9, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 1990, feagv10, feagv2, 0, eagv10, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
-CONS( 2002, feagv11, feagv2, 0, eagv11, eag, driver_device, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
+CONS( 1987, fexcel68k, 0, 0, fexcel68k, fexcel68k, driver_device, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
+CONS( 1989, feagv2, 0, 0, eag, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1990, feagv7, feagv2, 0, eagv7, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1990, feagv9, feagv2, 0, eagv9, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1990, feagv10, feagv2, 0, eagv10, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+CONS( 2002, feagv11, feagv2, 0, eagv11, eag, driver_device, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/gb.cpp b/src/mame/drivers/gb.cpp
index 50f23ee8211..f7e21388537 100644
--- a/src/mame/drivers/gb.cpp
+++ b/src/mame/drivers/gb.cpp
@@ -865,11 +865,11 @@ ROM_START(megaduck)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-CONS(1990, gameboy, 0, 0, gameboy, gameboy, driver_device, 0, "Nintendo", "Game Boy", MACHINE_SUPPORTS_SAVE)
-CONS(1994, supergb, gameboy, 0, supergb, gameboy, driver_device, 0, "Nintendo", "Super Game Boy", MACHINE_SUPPORTS_SAVE)
-CONS(1998, supergb2, gameboy, 0, supergb2, gameboy, driver_device, 0, "Nintendo", "Super Game Boy 2", MACHINE_SUPPORTS_SAVE)
-CONS(1996, gbpocket, gameboy, 0, gbpocket, gameboy, driver_device, 0, "Nintendo", "Game Boy Pocket", MACHINE_SUPPORTS_SAVE)
-CONS(1998, gbcolor, 0, 0, gbcolor, gameboy, driver_device, 0, "Nintendo", "Game Boy Color", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+CONS(1990, gameboy, 0, 0, gameboy, gameboy, driver_device, 0, "Nintendo", "Game Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+CONS(1994, supergb, gameboy, 0, supergb, gameboy, driver_device, 0, "Nintendo", "Super Game Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+CONS(1998, supergb2, gameboy, 0, supergb2, gameboy, driver_device, 0, "Nintendo", "Super Game Boy 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+CONS(1996, gbpocket, gameboy, 0, gbpocket, gameboy, driver_device, 0, "Nintendo", "Game Boy Pocket", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+CONS(1998, gbcolor, 0, 0, gbcolor, gameboy, driver_device, 0, "Nintendo", "Game Boy Color", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
// Sound is not 100% yet, it generates some sounds which could be ok. Since we're lacking a real system there's no way to verify.
CONS( 1993, megaduck, 0, 0, megaduck, gameboy, driver_device, 0, "Welback Holdings (Timlex International) / Creatronic / Videojet / Cougar USA", "Mega Duck / Cougar Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp
index cc682611981..e253782dc07 100644
--- a/src/mame/drivers/gei.cpp
+++ b/src/mame/drivers/gei.cpp
@@ -211,7 +211,7 @@ WRITE8_MEMBER(gei_state::sound_w)
/* bit 5 - ticket out in trivia games */
if (m_ticket != nullptr)
- m_ticket->write(machine().driver_data()->generic_space(), 0, (data & 0x20)<< 2);
+ m_ticket->write(machine().dummy_space(), 0, (data & 0x20)<< 2);
/* bit 6 enables NMI */
m_nmi_mask = data & 0x40;
diff --git a/src/mame/drivers/geneve.cpp b/src/mame/drivers/geneve.cpp
index 1e54a336e6f..89a3699d2e2 100644
--- a/src/mame/drivers/geneve.cpp
+++ b/src/mame/drivers/geneve.cpp
@@ -773,4 +773,4 @@ ROM_START(geneve)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1987,geneve, 0, 0, geneve_60hz, geneve, geneve_state, geneve, "Myarc", "Geneve 9640" , 0)
+COMP( 1987,geneve, 0, 0, geneve_60hz, geneve, geneve_state, geneve, "Myarc", "Geneve 9640" , MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp
index ef43a24e820..da247cd93ec 100644
--- a/src/mame/drivers/hp64k.cpp
+++ b/src/mame/drivers/hp64k.cpp
@@ -895,9 +895,9 @@ WRITE8_MEMBER(hp64k_state::hp64k_floppy1_rdy)
void hp64k_state::hp64k_floppy_idx_cb(floppy_image_device *floppy , int state)
{
if (floppy == m_floppy0->get_device()) {
- m_ss0->a_w(machine().driver_data()->generic_space() , 0 , !state);
+ m_ss0->a_w(machine().dummy_space(), 0, !state);
} else if (floppy == m_floppy1->get_device()) {
- m_ss1->a_w(machine().driver_data()->generic_space() , 0 , !state);
+ m_ss1->a_w(machine().dummy_space(), 0, !state);
}
if (floppy == m_current_floppy) {
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp
index dcb8d3dd39c..1a79d4eec40 100644
--- a/src/mame/drivers/ibmpcjr.cpp
+++ b/src/mame/drivers/ibmpcjr.cpp
@@ -256,7 +256,7 @@ WRITE_LINE_MEMBER(pcjr_state::keyb_interrupt)
{
int data;
- if(state && (data = m_keyboard->read(machine().driver_data()->generic_space(), 0)))
+ if(state && (data = m_keyboard->read(machine().dummy_space(), 0)))
{
uint8_t parity = 0;
int i;
diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp
index b38d9b19d01..06317dc0b72 100644
--- a/src/mame/drivers/itech32.cpp
+++ b/src/mame/drivers/itech32.cpp
@@ -739,7 +739,7 @@ WRITE8_MEMBER(itech32_state::drivedge_portb_out)
output().set_led_value(1, data & 0x01);
output().set_led_value(2, data & 0x02);
output().set_led_value(3, data & 0x04);
- machine().device<ticket_dispenser_device>("ticket")->write(machine().driver_data()->generic_space(), 0, (data & 0x10) << 3);
+ machine().device<ticket_dispenser_device>("ticket")->write(machine().dummy_space(), 0, (data & 0x10) << 3);
machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5);
}
@@ -757,7 +757,7 @@ WRITE8_MEMBER(itech32_state::pia_portb_out)
/* bit 4 controls the ticket dispenser */
/* bit 5 controls the coin counter */
/* bit 6 controls the diagnostic sound LED */
- machine().device<ticket_dispenser_device>("ticket")->write(machine().driver_data()->generic_space(), 0, (data & 0x10) << 3);
+ machine().device<ticket_dispenser_device>("ticket")->write(machine().dummy_space(), 0, (data & 0x10) << 3);
machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5);
}
diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp
index f6db97c176c..d6852ec9661 100644
--- a/src/mame/drivers/itech8.cpp
+++ b/src/mame/drivers/itech8.cpp
@@ -760,7 +760,7 @@ WRITE8_MEMBER(itech8_state::ym2203_portb_out)
/* bit 6 controls the diagnostic sound LED */
/* bit 7 controls the ticket dispenser */
m_pia_portb_data = data;
- m_ticket->write(machine().driver_data()->generic_space(), 0, data & 0x80);
+ m_ticket->write(machine().dummy_space(), 0, data & 0x80);
machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5);
}
diff --git a/src/mame/drivers/kron.cpp b/src/mame/drivers/kron.cpp
index 22dfebd6f17..57170193403 100644
--- a/src/mame/drivers/kron.cpp
+++ b/src/mame/drivers/kron.cpp
@@ -278,7 +278,7 @@ INTERRUPT_GEN_MEMBER(kron180_state::interrupt)
WRITE_LINE_MEMBER(kron180_state::keyb_interrupt)
{
- if(state && (m_kbd_data = m_keyboard->read(machine().driver_data()->generic_space(), 0)))
+ if(state && (m_kbd_data = m_keyboard->read(machine().dummy_space(), 0)))
{
LOGKBD(("%s(%02x)\n", FUNCNAME, m_kbd_data));
m_maincpu->set_input_line(2, ASSERT_LINE);
diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp
index 410359dc040..e7a52b1f92e 100644
--- a/src/mame/drivers/mgavegas.cpp
+++ b/src/mame/drivers/mgavegas.cpp
@@ -369,7 +369,7 @@ WRITE8_MEMBER(mgavegas_state::cso1_w)
update_custom();
hopper_data=(m_hop&0x01)<<7;
- m_ticket->write(machine().driver_data()->generic_space(), 0, hopper_data);
+ m_ticket->write(machine().dummy_space(), 0, hopper_data);
}
WRITE8_MEMBER(mgavegas_state::cso2_w)
diff --git a/src/mame/drivers/midyunit.cpp b/src/mame/drivers/midyunit.cpp
index a74d34f5eca..4c802f59c4b 100644
--- a/src/mame/drivers/midyunit.cpp
+++ b/src/mame/drivers/midyunit.cpp
@@ -152,13 +152,13 @@ WRITE8_MEMBER(midyunit_state::yawdim_oki_bank_w)
CUSTOM_INPUT_MEMBER(midyunit_state::narc_talkback_strobe_r)
{
- return (m_narc_sound->read(machine().driver_data()->generic_space(), 0) >> 8) & 1;
+ return (m_narc_sound->read(machine().dummy_space(), 0) >> 8) & 1;
}
CUSTOM_INPUT_MEMBER(midyunit_state::narc_talkback_data_r)
{
- return m_narc_sound->read(machine().driver_data()->generic_space(), 0) & 0xff;
+ return m_narc_sound->read(machine().dummy_space(), 0) & 0xff;
}
diff --git a/src/mame/drivers/mirage.cpp b/src/mame/drivers/mirage.cpp
index ebb325659ab..387d1dd51c0 100644
--- a/src/mame/drivers/mirage.cpp
+++ b/src/mame/drivers/mirage.cpp
@@ -92,7 +92,7 @@ void miragemi_state::video_start()
uint32_t miragemi_state::screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp
index bfb82e5be50..ea97f95c87c 100644
--- a/src/mame/drivers/model2.cpp
+++ b/src/mame/drivers/model2.cpp
@@ -1406,11 +1406,6 @@ WRITE32_MEMBER(model2_state::model2o_luma_w)
}
}
-WRITE32_MEMBER(model2_state::model2_3d_zclip_w)
-{
- model2_3d_set_zclip( machine(), data & 0xFF );
-}
-
/* Top Skater reads here and discards the result */
READ8_MEMBER(model2_state::tgpid_r)
{
diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp
index 640235eeb13..8801481f34f 100644
--- a/src/mame/drivers/model3.cpp
+++ b/src/mame/drivers/model3.cpp
@@ -733,7 +733,6 @@ JP4/5/6/7 - Jumpers to configure ROMs
#include "emu.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/powerpc/ppc.h"
#include "machine/eepromser.h"
#include "machine/53c810.h"
#include "machine/nvram.h"
@@ -952,20 +951,19 @@ WRITE64_MEMBER(model3_state::mpc105_reg_w)
m_mpc105_regs[(offset*2)+1] = (uint32_t)data;
}
-static void mpc105_init(running_machine &machine)
+void model3_state::mpc105_init()
{
- model3_state *state = machine.driver_data<model3_state>();
/* set reset values */
- memset(state->m_mpc105_regs, 0, sizeof(state->m_mpc105_regs));
- state->m_mpc105_regs[0x00/4] = 0x00011057; /* Vendor ID & Device ID */
- state->m_mpc105_regs[0x04/4] = 0x00800006; /* PCI Command & PCI Status */
- state->m_mpc105_regs[0x08/4] = 0x00060000; /* Class code */
- state->m_mpc105_regs[0xa8/4] = 0x0010ff00; /* Processor interface configuration 1 */
- state->m_mpc105_regs[0xac/4] = 0x060c000c; /* Processor interface configuration 2 */
- state->m_mpc105_regs[0xb8/4] = 0x04000000;
- state->m_mpc105_regs[0xf0/4] = 0x0000ff02; /* Memory control configuration 1 */
- state->m_mpc105_regs[0xf4/4] = 0x00030000; /* Memory control configuration 2 */
- state->m_mpc105_regs[0xfc/4] = 0x00000010; /* Memory control configuration 4 */
+ memset(m_mpc105_regs, 0, sizeof(m_mpc105_regs));
+ m_mpc105_regs[0x00/4] = 0x00011057; /* Vendor ID & Device ID */
+ m_mpc105_regs[0x04/4] = 0x00800006; /* PCI Command & PCI Status */
+ m_mpc105_regs[0x08/4] = 0x00060000; /* Class code */
+ m_mpc105_regs[0xa8/4] = 0x0010ff00; /* Processor interface configuration 1 */
+ m_mpc105_regs[0xac/4] = 0x060c000c; /* Processor interface configuration 2 */
+ m_mpc105_regs[0xb8/4] = 0x04000000;
+ m_mpc105_regs[0xf0/4] = 0x0000ff02; /* Memory control configuration 1 */
+ m_mpc105_regs[0xf4/4] = 0x00030000; /* Memory control configuration 2 */
+ m_mpc105_regs[0xfc/4] = 0x00000010; /* Memory control configuration 4 */
}
/*****************************************************************************/
@@ -1044,25 +1042,24 @@ WRITE64_MEMBER(model3_state::mpc106_reg_w)
m_mpc106_regs[(offset*2)+1] = (uint32_t)data;
}
-static void mpc106_init(running_machine &machine)
+void model3_state::mpc106_init()
{
- model3_state *state = machine.driver_data<model3_state>();
/* set reset values */
- memset(state->m_mpc106_regs, 0, sizeof(state->m_mpc106_regs));
- state->m_mpc106_regs[0x00/4] = 0x00021057; /* Vendor ID & Device ID */
- state->m_mpc106_regs[0x04/4] = 0x00800006; /* PCI Command & PCI Status */
- state->m_mpc106_regs[0x08/4] = 0x00060000; /* Class code */
- state->m_mpc106_regs[0x0c/4] = 0x00000800; /* Cache line size */
- state->m_mpc106_regs[0x70/4] = 0x00cd0000; /* Output driver control */
- state->m_mpc106_regs[0xa8/4] = 0x0010ff00; /* Processor interface configuration 1 */
- state->m_mpc106_regs[0xac/4] = 0x060c000c; /* Processor interface configuration 2 */
- state->m_mpc106_regs[0xb8/4] = 0x04000000;
- state->m_mpc106_regs[0xc0/4] = 0x00000100; /* Error enabling 1 */
- state->m_mpc106_regs[0xe0/4] = 0x00420fff; /* Emulation support configuration 1 */
- state->m_mpc106_regs[0xe8/4] = 0x00200000; /* Emulation support configuration 2 */
- state->m_mpc106_regs[0xf0/4] = 0x0000ff02; /* Memory control configuration 1 */
- state->m_mpc106_regs[0xf4/4] = 0x00030000; /* Memory control configuration 2 */
- state->m_mpc106_regs[0xfc/4] = 0x00000010; /* Memory control configuration 4 */
+ memset(m_mpc106_regs, 0, sizeof(m_mpc106_regs));
+ m_mpc106_regs[0x00/4] = 0x00021057; /* Vendor ID & Device ID */
+ m_mpc106_regs[0x04/4] = 0x00800006; /* PCI Command & PCI Status */
+ m_mpc106_regs[0x08/4] = 0x00060000; /* Class code */
+ m_mpc106_regs[0x0c/4] = 0x00000800; /* Cache line size */
+ m_mpc106_regs[0x70/4] = 0x00cd0000; /* Output driver control */
+ m_mpc106_regs[0xa8/4] = 0x0010ff00; /* Processor interface configuration 1 */
+ m_mpc106_regs[0xac/4] = 0x060c000c; /* Processor interface configuration 2 */
+ m_mpc106_regs[0xb8/4] = 0x04000000;
+ m_mpc106_regs[0xc0/4] = 0x00000100; /* Error enabling 1 */
+ m_mpc106_regs[0xe0/4] = 0x00420fff; /* Emulation support configuration 1 */
+ m_mpc106_regs[0xe8/4] = 0x00200000; /* Emulation support configuration 2 */
+ m_mpc106_regs[0xf0/4] = 0x0000ff02; /* Memory control configuration 1 */
+ m_mpc106_regs[0xf4/4] = 0x00030000; /* Memory control configuration 2 */
+ m_mpc106_regs[0xfc/4] = 0x00000010; /* Memory control configuration 4 */
}
/*****************************************************************************/
@@ -1260,14 +1257,13 @@ LSI53C810_DMA_CB(model3_state::real3d_dma_callback)
/*****************************************************************************/
-static void configure_fast_ram(running_machine &machine)
+void model3_state::configure_fast_ram()
{
- model3_state *state = machine.driver_data<model3_state>();
/* set conservative DRC options */
- machine.device<ppc_device>("maincpu")->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
+ m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
/* configure fast RAM regions for DRC */
- machine.device<ppc_device>("maincpu")->ppcdrc_add_fastram(0x00000000, 0x007fffff, false, state->m_work_ram);
+ m_maincpu->ppcdrc_add_fastram(0x00000000, 0x007fffff, false, m_work_ram);
}
TIMER_CALLBACK_MEMBER(model3_state::model3_sound_timer_tick)
@@ -1285,28 +1281,28 @@ TIMER_CALLBACK_MEMBER(model3_state::real3d_dma_timer_callback)
MACHINE_START_MEMBER(model3_state,model3_10)
{
- configure_fast_ram(machine());
+ configure_fast_ram();
m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::model3_sound_timer_tick),this));
m_real3d_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::real3d_dma_timer_callback),this));
}
MACHINE_START_MEMBER(model3_state,model3_15)
{
- configure_fast_ram(machine());
+ configure_fast_ram();
m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::model3_sound_timer_tick),this));
m_real3d_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::real3d_dma_timer_callback),this));
}
MACHINE_START_MEMBER(model3_state,model3_20)
{
- configure_fast_ram(machine());
+ configure_fast_ram();
m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::model3_sound_timer_tick),this));
m_real3d_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::real3d_dma_timer_callback),this));
}
MACHINE_START_MEMBER(model3_state,model3_21)
{
- configure_fast_ram(machine());
+ configure_fast_ram();
m_sound_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::model3_sound_timer_tick),this));
m_real3d_dma_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(model3_state::real3d_dma_timer_callback),this));
@@ -1338,17 +1334,17 @@ void model3_state::model3_init(int step)
{
if (m_step15_with_mpc106)
{
- mpc106_init(machine());
+ mpc106_init();
}
else
{
- mpc105_init(machine());
+ mpc105_init();
}
m_real3d_device_id = 0x16c311db; /* PCI Vendor ID (11db = SEGA), Device ID (16c3 = 315-5827) */
}
else
{
- mpc106_init(machine());
+ mpc106_init();
// some step 2+ games need the older PCI ID (obvious symptom:
// vbl is enabled briefly then disabled so the game hangs)
if (m_step20_with_old_real3d)
@@ -5740,18 +5736,17 @@ static MACHINE_CONFIG_DERIVED( model3_21_5881, model3_21 )
MACHINE_CONFIG_END
-static void interleave_vroms(running_machine &machine)
+void model3_state::interleave_vroms()
{
- model3_state *state = machine.driver_data<model3_state>();
int start;
int i,j,x;
- uint16_t *vrom1 = (uint16_t*)state->memregion("user3")->base();
- uint16_t *vrom2 = (uint16_t*)state->memregion("user4")->base();
- int vrom_length = state->memregion("user3")->bytes();
+ uint16_t *vrom1 = (uint16_t*)memregion("user3")->base();
+ uint16_t *vrom2 = (uint16_t*)memregion("user4")->base();
+ int vrom_length = memregion("user3")->bytes();
uint16_t *vrom;
- state->m_vrom = std::make_unique<uint32_t[]>(0x4000000/4);
- vrom = (uint16_t *)state->m_vrom.get();
+ m_vrom = std::make_unique<uint32_t[]>(0x4000000/4);
+ vrom = (uint16_t *)m_vrom.get();
if( vrom_length <= 0x1000000 ) {
start = 0x1000000;
@@ -5783,7 +5778,7 @@ DRIVER_INIT_MEMBER(model3_state, genprot)
DRIVER_INIT_MEMBER(model3_state,model3_10)
{
- interleave_vroms(machine());
+ interleave_vroms();
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc0000000, 0xc00000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this));
@@ -5796,7 +5791,7 @@ DRIVER_INIT_MEMBER(model3_state,model3_10)
DRIVER_INIT_MEMBER(model3_state,model3_15)
{
- interleave_vroms(machine());
+ interleave_vroms();
m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" );
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(FUNC(model3_state::mpc105_addr_r),this), write64_delegate(FUNC(model3_state::mpc105_addr_w),this));
@@ -5806,7 +5801,7 @@ DRIVER_INIT_MEMBER(model3_state,model3_15)
DRIVER_INIT_MEMBER(model3_state,model3_20)
{
- interleave_vroms(machine());
+ interleave_vroms();
m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" );
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc2000000, 0xc20000ff, read64_delegate(FUNC(model3_state::real3d_dma_r),this), write64_delegate(FUNC(model3_state::real3d_dma_w),this));
@@ -5875,7 +5870,7 @@ DRIVER_INIT_MEMBER(model3_state,vs215)
{
m_step15_with_mpc106 = true;
- interleave_vroms(machine());
+ interleave_vroms();
m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" );
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this));
@@ -5896,7 +5891,7 @@ DRIVER_INIT_MEMBER(model3_state,vs29815)
rom[(0x6028ec^4)/4] = 0x60000000;
rom[(0x60290c^4)/4] = 0x60000000;
- interleave_vroms(machine());
+ interleave_vroms();
m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" );
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this));
@@ -5912,7 +5907,7 @@ DRIVER_INIT_MEMBER(model3_state,bass)
{
m_step15_with_mpc106 = true;
- interleave_vroms(machine());
+ interleave_vroms();
m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" );
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this));
@@ -5926,7 +5921,7 @@ DRIVER_INIT_MEMBER(model3_state,bass)
DRIVER_INIT_MEMBER(model3_state,getbass)
{
- interleave_vroms(machine());
+ interleave_vroms();
m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" );
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this));
diff --git a/src/mame/drivers/ms0515.cpp b/src/mame/drivers/ms0515.cpp
index d4c852a1f9b..601a62afc2a 100644
--- a/src/mame/drivers/ms0515.cpp
+++ b/src/mame/drivers/ms0515.cpp
@@ -123,7 +123,7 @@ WRITE8_MEMBER(ms0515_state::ms0515_sys_w)
void ms0515_state::machine_reset()
{
uint8_t *ram = m_ram->pointer();
- ms0515_bank_w(machine().driver_data()->generic_space(),0,0);
+ ms0515_bank_w(machine().dummy_space(), 0, 0);
m_video_ram = ram + 0000000 + 0340000;
m_blink = 0;
diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp
index 2ed632e1d72..0d11f09cdbe 100644
--- a/src/mame/drivers/mustache.cpp
+++ b/src/mame/drivers/mustache.cpp
@@ -231,6 +231,33 @@ ROM_START( mustache )
ROM_LOAD( "mustache.b6",0x0300, 0x1000, CRC(5f83fa35) SHA1(cb13e63577762d818e5dcbb52b8a53f66e284e8f) ) /* 63S281N near SEI0070BU */
ROM_END
+ROM_START( mustachei )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "1.h18", 0x0000, 0x8000, CRC(22893fbc) SHA1(724ea50642aec9be10547bd86fae5e1ebfe54685) )
+ ROM_LOAD( "2.h16", 0x8000, 0x4000, CRC(ec70cfd3) SHA1(0476eab03b907778ea488c802b79da99bf376eb6) )
+
+ ROM_REGION( 0x8000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */
+ ROM_LOAD( "10.e5", 0x0000, 0x8000, CRC(efbb1943) SHA1(3320e9eaeb776d09ed63f7dedc79e720674e6718) )
+
+ ROM_REGION( 0x0c000, "gfx1",0) /* BG tiles */
+ ROM_LOAD( "5.a13", 0x0000, 0x4000, CRC(9baee4a7) SHA1(31bcec838789462e67e54ebe7256db9fc4e51b69) )
+ ROM_LOAD( "4.a15", 0x4000, 0x4000, CRC(8155387d) SHA1(5f0a394c7671442519a831b0eeeaba4eecd5a406) )
+ ROM_LOAD( "3.a16", 0x8000, 0x4000, CRC(4db4448d) SHA1(50a94fd65c263d95fd24b4009dbb87707929fdcb) )
+
+ ROM_REGION( 0x20000, "gfx2",0 ) /* sprites */
+ ROM_LOAD( "6.a4", 0x00000, 0x8000, CRC(4a95a89c) SHA1(b34ebbda9b0e591876988e42bd36fd505452f38c) )
+ ROM_LOAD( "8.a7", 0x08000, 0x8000, CRC(3e6be0fb) SHA1(319ea59107e37953c31f59f5f635fc520682b09f) )
+ ROM_LOAD( "7.a5", 0x10000, 0x8000, CRC(8ad38884) SHA1(e11f1e1db6d5d119afedbe6604d10a6fd6049f12) )
+ ROM_LOAD( "9.a8", 0x18000, 0x8000, CRC(3568c158) SHA1(c3a2120086befe396a112bd62f032638011cb47a) )
+
+ ROM_REGION( 0x1300, "proms",0 ) /* proms */
+ ROM_LOAD( "d.c3",0x0000, 0x0100, CRC(68575300) SHA1(bc93a38df91ad8c2f335f9bccc98b52376f9b483) )
+ ROM_LOAD( "c.c2",0x0100, 0x0100, CRC(eb008d62) SHA1(a370fbd1affaa489210ea36eb9e365263fb4e232) )
+ ROM_LOAD( "b.c1",0x0200, 0x0100, CRC(65da3604) SHA1(e4874d4152a57944d4e47306250833ea5cd0d89b) )
+
+ ROM_LOAD( "a.b6",0x0300, 0x1000, CRC(5f83fa35) SHA1(cb13e63577762d818e5dcbb52b8a53f66e284e8f) ) /* 63S281N near SEI0070BU */
+ROM_END
+
DRIVER_INIT_MEMBER(mustache_state,mustache)
{
int i;
@@ -279,4 +306,5 @@ DRIVER_INIT_MEMBER(mustache_state,mustache)
}
-GAME( 1987, mustache, 0, mustache, mustache, mustache_state, mustache, ROT90, "Seibu Kaihatsu (March license)", "Mustache Boy", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, mustache, 0, mustache, mustache, mustache_state, mustache, ROT90, "Seibu Kaihatsu (March license)", "Mustache Boy (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, mustachei, mustache, mustache, mustache, mustache_state, mustache, ROT90, "Seibu Kaihatsu (IG SPA license)", "Mustache Boy (Italy)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp
index bad64424c78..d53d5634114 100644
--- a/src/mame/drivers/naomi.cpp
+++ b/src/mame/drivers/naomi.cpp
@@ -715,6 +715,7 @@ Notes:
/Shin Nihon Prowrestling Toukon /FL0 & FL1 have pin55 raised from PCB.
\Retsuden 4 Arcade Edition (Japan, Ver.A) F2X 25349801 2 (64Mb) 15 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM TRF1 \They are connected together and go to pin89 on 2K.
World Kicks PCB (Japan, WKC1 Ver.A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1 uses Namco V226 JVS I/O (not dumped)
+World Kicks (Japan, WK1 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK1 not dumped, FL1.2D sums E8F1 B057
World Kicks (Asia, WK2 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2
World Kicks (US, WK3 Ver.A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK3
@@ -9686,10 +9687,10 @@ ROM_END
/* 0130 */ GAME( 2002, hopper, naomi, naomi, naomi, naomi_state, naomi, ROT0, "Sega", "SWP Hopper Board", GAME_FLAGS )
/* 0136 */ GAME( 2004, shootplm, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool The Medal Version B / Shootout Pool Prize Version B (Export, Japan)", GAME_FLAGS )
/* 0140 */ GAME( 2004, kick4csh, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Kick '4' Cash (Export)", GAME_FLAGS )
-/* 0150 */ GAME( 2003, mtkob2, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K3 2nd (USA, EXP, KOR, AUS)", GAME_FLAGS )
+/* 0150 */ GAME( 2003, mtkob2, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K3 2nd (World)", GAME_FLAGS ) // not for Japan
/* 0158 */ GAME( 2005, mushi2k5, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K5 1st (Japan)", GAME_FLAGS )
-/* 0164 */ GAME( 2005, mushi2eo, mushik2e, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "MushiKing II - The King Of Beetle II ENG (Ver. 1.001) (USA, EXP, AUS)", GAME_FLAGS )
-/* 0164 */ GAME( 2005, mushik2e, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "MushiKing II - The King Of Beetle II ENG (Ver. 2.001) (USA, EXP, AUS)", GAME_FLAGS )
+/* 0164 */ GAME( 2005, mushi2eo, mushik2e, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "MushiKing II - The King Of Beetle II ENG (Ver. 1.001) (World)", GAME_FLAGS ) // not for Japan
+/* 0164 */ GAME( 2005, mushik2e, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "MushiKing II - The King Of Beetle II ENG (Ver. 2.001) (World)", GAME_FLAGS ) // not for Japan
/* 0166 */ GAME( 2006, zunou, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Touch De Zunou (Japan, Rev A)", GAME_FLAGS )
/* 0170-01*/GAME( 2007,manicpnc, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Manic Panic Ghosts! (USA, Export)", GAME_FLAGS )
/* 0170 */ GAME( 2007, pokasuka, manicpnc, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Pokasuka Ghost! (Japan)", GAME_FLAGS )
@@ -9703,15 +9704,15 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 840-xxxxx (Sega Naomi 2 cart games) */
/* 0046 */ GAME( 2001, wldrider, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Wild Riders", GAME_FLAGS )
-/* 0061 */ GAME( 2001, vstrik3co,vstrik3c,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS)", GAME_FLAGS )
-/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (Rev B) (USA, EXP, KOR, AUS)", GAME_FLAGS )
+/* 0061 */ GAME( 2001, vstrik3co,vstrik3c,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (World)", GAME_FLAGS ) // not for Japan
+/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (World, Rev B)", GAME_FLAGS ) // not for Japan
/* 0062 */ GAME( 2001, clubkrto, clubkrt, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
/* 0062 */ GAME( 2001, clubkrtc, clubkrt, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS )
/* 0062 */ GAME( 2001, clubkrt, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
-/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (USA, EXP, KOR, AUS)", GAME_FLAGS )
+/* 0080 */ GAME( 2002, vf4cart, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 (World)", GAME_FLAGS ) // not for Japan
/* 0087 */ GAME( 2002, kingrt66, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "The King of Route 66 (Rev A)", GAME_FLAGS )
/* 0095 */ GAME( 2002, soulsurf, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Soul Surfer (Rev A)", GAME_FLAGS )
-/* 0106 */ GAME( 2002, vf4evoct, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (USA, EXP, KOR, AUS)", GAME_FLAGS )
+/* 0106 */ GAME( 2002, vf4evoct, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Evolution (World)", GAME_FLAGS ) // not for Japan
/* 0129 */ GAME( 2003, clubkprz, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart Prize (Export, Japan)", GAME_FLAGS )
/* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart Prize Version B (Export, Japan)", GAME_FLAGS )
/* 0139 */ GAME( 2003, clubk2k3, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, Rev A)", GAME_FLAGS )
diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp
index a67756fe547..bd8e60054d0 100644
--- a/src/mame/drivers/pcw16.cpp
+++ b/src/mame/drivers/pcw16.cpp
@@ -528,7 +528,7 @@ WRITE_LINE_MEMBER(pcw16_state::pcw16_keyboard_callback)
{
int data;
- data = m_keyboard->read(machine().driver_data()->generic_space(), 0);
+ data = m_keyboard->read(machine().dummy_space(), 0);
if (data)
{
diff --git a/src/mame/drivers/quizpun2.cpp b/src/mame/drivers/quizpun2.cpp
index 8d1f8b0aa94..3545ef5ab06 100644
--- a/src/mame/drivers/quizpun2.cpp
+++ b/src/mame/drivers/quizpun2.cpp
@@ -118,6 +118,7 @@ public:
DECLARE_WRITE8_MEMBER(quizpun2_soundlatch_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
+ void log_protection(address_space &space, const char *warning);
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_quizpun2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -213,11 +214,10 @@ void quizpun2_state::machine_reset()
prot.addr = 0;
}
-static void log_protection( address_space &space, const char *warning )
+void quizpun2_state::log_protection( address_space &space, const char *warning )
{
- quizpun2_state *state = space.machine().driver_data<quizpun2_state>();
- struct prot_t &prot = state->m_prot;
- state->logerror("%04x: protection - %s (state %x, wait %x, param %02x, cmd %02x, addr %02x)\n", space.device().safe_pc(), warning,
+ struct prot_t &prot = m_prot;
+ logerror("%04x: protection - %s (state %x, wait %x, param %02x, cmd %02x, addr %02x)\n", space.device().safe_pc(), warning,
prot.state,
prot.wait_param,
prot.param,
diff --git a/src/mame/drivers/r2dtank.cpp b/src/mame/drivers/r2dtank.cpp
index d789df975f3..869cb28f145 100644
--- a/src/mame/drivers/r2dtank.cpp
+++ b/src/mame/drivers/r2dtank.cpp
@@ -323,7 +323,7 @@ WRITE_LINE_MEMBER(r2dtank_state::display_enable_changed)
WRITE8_MEMBER(r2dtank_state::pia_comp_w)
{
device_t *device = machine().device("pia_main");
- downcast<pia6821_device *>(device)->write(machine().driver_data()->generic_space(), offset, ~data);
+ downcast<pia6821_device *>(device)->write(machine().dummy_space(), offset, ~data);
}
diff --git a/src/mame/drivers/risc2500.cpp b/src/mame/drivers/risc2500.cpp
index a148a9b93ab..0c0d60fe1cc 100644
--- a/src/mame/drivers/risc2500.cpp
+++ b/src/mame/drivers/risc2500.cpp
@@ -5,7 +5,8 @@
Saitek RISC 2500
TODO:
- - sound
+ - Sound is too short and high pitch, better when you underclock the cpu.
+ Is cpu cycle timing wrong? or waitstate on p1000_w?
******************************************************************************/
@@ -14,6 +15,8 @@
#include "cpu/arm/arm.h"
#include "machine/ram.h"
#include "machine/nvram.h"
+#include "sound/dac.h"
+#include "sound/volt_reg.h"
#include "risc2500.lh"
@@ -26,6 +29,7 @@ public:
m_maincpu(*this, "maincpu"),
m_ram(*this, "ram"),
m_nvram(*this, "nvram"),
+ m_dac(*this, "dac"),
m_inputs(*this, "P%u", 0)
{ }
@@ -44,6 +48,7 @@ private:
required_device<cpu_device> m_maincpu;
required_device<ram_device> m_ram;
required_device<nvram_device> m_nvram;
+ required_device<dac_byte_interface> m_dac;
required_ioport_array<8> m_inputs;
uint32_t m_p1000;
@@ -237,7 +242,9 @@ WRITE32_MEMBER(risc2500_state::p1000_w)
{
memset(m_vram, 0, sizeof(m_vram));
}
-
+
+ m_dac->write(data >> 28 & 3); // Speaker
+
m_p1000 = data;
}
@@ -273,12 +280,12 @@ static ADDRESS_MAP_START(risc2500_mem, AS_PROGRAM, 32, risc2500_state )
AM_RANGE( 0x00000000, 0x0001ffff ) AM_RAM
AM_RANGE( 0x01800000, 0x01800003 ) AM_READ(disable_boot_rom)
AM_RANGE( 0x01000000, 0x01000003 ) AM_READWRITE(p1000_r, p1000_w)
- AM_RANGE( 0x02000000, 0x0201ffff ) AM_ROM AM_REGION("maincpu", 0)
+ AM_RANGE( 0x02000000, 0x0203ffff ) AM_ROM AM_REGION("maincpu", 0)
ADDRESS_MAP_END
static MACHINE_CONFIG_START( risc2500, risc2500_state )
- MCFG_CPU_ADD("maincpu", ARM, 14000000) // VY86C010
+ MCFG_CPU_ADD("maincpu", ARM, XTAL_28_322MHz / 2) // VY86C010
MCFG_CPU_PROGRAM_MAP(risc2500_mem)
MCFG_ARM_COPRO(ARM_COPRO_TYPE_VL86C020)
MCFG_CPU_PERIODIC_INT_DRIVER(risc2500_state, irq1_line_hold, 250)
@@ -300,16 +307,32 @@ static MACHINE_CONFIG_START( risc2500, risc2500_state )
MCFG_RAM_EXTRA_OPTIONS("128K, 256K, 512K, 1M, 2M")
MCFG_NVRAM_ADD_NO_FILL("nvram")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("speaker")
+ MCFG_SOUND_ADD("dac", DAC_2BIT_BINARY_WEIGHTED_ONES_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC
+ MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
+ MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
/* ROM definitions */
ROM_START( risc )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD("s2500.bin", 0x000000, 0x20000, CRC(7a707e82) SHA1(87187fa58117a442f3abd30092cfcc2a4d7c7efc))
+ ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASE )
+ ROM_SYSTEM_BIOS( 0, "v104", "v1.04" )
+ ROMX_LOAD("s2500_v104.bin", 0x000000, 0x020000, CRC(84a06178) SHA1(66f4d9f53de6da865a3ebb4af1d6a3e245c59a3c), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS( 1, "v103", "v1.03" )
+ ROMX_LOAD("s2500_v103.bin", 0x000000, 0x020000, CRC(7a707e82) SHA1(87187fa58117a442f3abd30092cfcc2a4d7c7efc), ROM_BIOS(2))
+ROM_END
+
+ROM_START( montreux )
+ ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASE )
+ ROM_SYSTEM_BIOS( 0, "v100", "v1.00" )
+ ROMX_LOAD("montreux.bin", 0x000000, 0x040000, CRC(db374cf3) SHA1(44dd60d56779084326c3dfb41d2137ebf0b4e0ac), ROM_BIOS(1))
ROM_END
-/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-CONS( 1992, risc, 0, 0, risc2500, risc2500, driver_device, 0, "Saitek", "RISC 2500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+CONS( 1992, risc, 0, 0, risc2500, risc2500, driver_device, 0, "Saitek" , "RISC 2500", MACHINE_CLICKABLE_ARTWORK )
+CONS( 1995, montreux, 0, 0, risc2500, risc2500, driver_device, 0, "Mephisto", "Montreux" , MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/rollrace.cpp b/src/mame/drivers/rollrace.cpp
index bfe3488b678..91ef405f523 100644
--- a/src/mame/drivers/rollrace.cpp
+++ b/src/mame/drivers/rollrace.cpp
@@ -51,6 +51,10 @@ WRITE8_MEMBER(rollrace_state::sound_nmi_mask_w)
m_sound_nmi_mask = data & 1;
}
+WRITE8_MEMBER(rollrace_state::coin_w)
+{
+ machine().bookkeeping().coin_counter_w(offset, data);
+}
static ADDRESS_MAP_START( rollrace_map, AS_PROGRAM, 8, rollrace_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
@@ -72,7 +76,7 @@ static ADDRESS_MAP_START( rollrace_map, AS_PROGRAM, 8, rollrace_state )
AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flipx_w)
AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_mask_w)
- AM_RANGE(0xfc02, 0xfc03) AM_WRITENOP /* coin counters */
+ AM_RANGE(0xfc02, 0xfc03) AM_WRITE(coin_w)
AM_RANGE(0xfc04, 0xfc05) AM_WRITE(charbank_w)
AM_RANGE(0xfc06, 0xfc06) AM_WRITE(spritebank_w)
ADDRESS_MAP_END
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index d44f01199d4..fb42f5b85b1 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -1386,18 +1386,17 @@ Note: on screen copyright is (c)1998 Coinmaster.
/*------------------------------
update timer
------------------------------*/
-static void uPD71054_update_timer( running_machine &machine, device_t *cpu, int no )
+void seta_state::uPD71054_update_timer(device_t *cpu, int no)
{
- seta_state *state = machine.driver_data<seta_state>();
- uPD71054_state *uPD71054 = &state->m_uPD71054;
+ uPD71054_state *uPD71054 = &m_uPD71054;
uint16_t max = uPD71054->max[no]&0xffff;
if( max != 0 ) {
- attotime period = attotime::from_hz(machine.device("maincpu")->unscaled_clock()) * (16 * max);
+ attotime period = attotime::from_hz(m_maincpu->unscaled_clock()) * (16 * max);
uPD71054->timer[no]->adjust( period, no );
} else {
uPD71054->timer[no]->adjust( attotime::never, no);
- state->logerror( "CPU #0 PC %06X: uPD71054 error, timer %d duration is 0\n",
+ logerror( "CPU #0 PC %06X: uPD71054 error, timer %d duration is 0\n",
(cpu != nullptr) ? cpu->safe_pc() : -1, no );
}
}
@@ -1410,7 +1409,7 @@ static void uPD71054_update_timer( running_machine &machine, device_t *cpu, int
TIMER_CALLBACK_MEMBER(seta_state::uPD71054_timer_callback)
{
m_maincpu->set_input_line(4, HOLD_LINE );
- uPD71054_update_timer( machine(), nullptr, param );
+ uPD71054_update_timer( nullptr, param );
}
@@ -1459,7 +1458,7 @@ WRITE16_MEMBER(seta_state::timer_regs_w)
uPD71054->max[offset] = (uPD71054->max[offset]&0x00ff)+(data<<8);
}
if( uPD71054->max[offset] != 0 ) {
- uPD71054_update_timer( machine(), &space.device(), offset );
+ uPD71054_update_timer( &space.device(), offset );
}
break;
case 0x0003:
diff --git a/src/mame/drivers/ti99_4p.cpp b/src/mame/drivers/ti99_4p.cpp
index 2c949331c8f..a4e43e1c0b8 100644
--- a/src/mame/drivers/ti99_4p.cpp
+++ b/src/mame/drivers/ti99_4p.cpp
@@ -1050,4 +1050,4 @@ ROM_START(ti99_4p)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1996, ti99_4p, 0, 0, ti99_4p_60hz, ti99_4p, driver_device, 0, "System-99 User Group", "SGCPU (aka TI-99/4P)" , 0 )
+COMP( 1996, ti99_4p, 0, 0, ti99_4p_60hz, ti99_4p, driver_device, 0, "System-99 User Group", "SGCPU (aka TI-99/4P)" , MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ti99_4x.cpp b/src/mame/drivers/ti99_4x.cpp
index aae0849ec61..cb5a11ea054 100644
--- a/src/mame/drivers/ti99_4x.cpp
+++ b/src/mame/drivers/ti99_4x.cpp
@@ -1244,9 +1244,9 @@ ROM_START(ti99_4ev)
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1979, ti99_4, 0, 0, ti99_4_60hz, ti99_4, driver_device, 0, "Texas Instruments", "TI-99/4 Home Computer (US)", 0)
-COMP( 1980, ti99_4e, ti99_4, 0, ti99_4_50hz, ti99_4, driver_device, 0, "Texas Instruments", "TI-99/4 Home Computer (Europe)", 0)
-COMP( 1981, ti99_4a, 0, 0, ti99_4a_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer (US)", 0)
-COMP( 1981, ti99_4ae, ti99_4a, 0, ti99_4a_50hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer (Europe)", 0)
-COMP( 1983, ti99_4qi, ti99_4a, 0, ti99_4qi_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4QI Home Computer (US)", 0)
-COMP( 1994, ti99_4ev, ti99_4a, 0, ti99_4ev_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer with EVPC", 0)
+COMP( 1979, ti99_4, 0, 0, ti99_4_60hz, ti99_4, driver_device, 0, "Texas Instruments", "TI-99/4 Home Computer (US)", MACHINE_SUPPORTS_SAVE)
+COMP( 1980, ti99_4e, ti99_4, 0, ti99_4_50hz, ti99_4, driver_device, 0, "Texas Instruments", "TI-99/4 Home Computer (Europe)", MACHINE_SUPPORTS_SAVE)
+COMP( 1981, ti99_4a, 0, 0, ti99_4a_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer (US)", MACHINE_SUPPORTS_SAVE)
+COMP( 1981, ti99_4ae, ti99_4a, 0, ti99_4a_50hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer (Europe)", MACHINE_SUPPORTS_SAVE)
+COMP( 1983, ti99_4qi, ti99_4a, 0, ti99_4qi_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4QI Home Computer (US)", MACHINE_SUPPORTS_SAVE)
+COMP( 1994, ti99_4ev, ti99_4a, 0, ti99_4ev_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer with EVPC", MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/ti99_8.cpp b/src/mame/drivers/ti99_8.cpp
index 578451594ae..8cc915b6a64 100644
--- a/src/mame/drivers/ti99_8.cpp
+++ b/src/mame/drivers/ti99_8.cpp
@@ -912,5 +912,5 @@ ROM_END
#define rom_ti99_8e rom_ti99_8
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1983, ti99_8, 0, 0, ti99_8_60hz,ti99_8, driver_device, 0, "Texas Instruments", "TI-99/8 Computer (US)" , 0)
-COMP( 1983, ti99_8e, ti99_8, 0, ti99_8_50hz,ti99_8, driver_device, 0, "Texas Instruments", "TI-99/8 Computer (Europe)" , 0 )
+COMP( 1983, ti99_8, 0, 0, ti99_8_60hz,ti99_8, driver_device, 0, "Texas Instruments", "TI-99/8 Computer (US)" , MACHINE_SUPPORTS_SAVE )
+COMP( 1983, ti99_8e, ti99_8, 0, ti99_8_50hz,ti99_8, driver_device, 0, "Texas Instruments", "TI-99/8 Computer (Europe)" , MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/tumbleb.cpp b/src/mame/drivers/tumbleb.cpp
index f1185ba0e0f..bfee0959c6e 100644
--- a/src/mame/drivers/tumbleb.cpp
+++ b/src/mame/drivers/tumbleb.cpp
@@ -425,17 +425,15 @@ command 1 - stop?
*/
-static void tumbleb2_playmusic( device_t *device )
+void tumbleb_state::tumbleb2_playmusic(okim6295_device *oki)
{
- tumbleb_state *state = device->machine().driver_data<tumbleb_state>();
- okim6295_device *oki = downcast<okim6295_device *>(device);
int status = oki->read_status();
- if (state->m_music_is_playing)
+ if (m_music_is_playing)
{
if (!BIT(status, 3))
{
- oki->write_command(0x80 | state->m_music_command);
+ oki->write_command(0x80 | m_music_command);
oki->write_command(0x00 | 0x82);
}
}
@@ -2190,15 +2188,13 @@ static MACHINE_CONFIG_START( fncywld, tumbleb_state )
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,fncywld)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_YM2151_ADD("ymsnd", 32220000/9)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
MCFG_OKIM6295_ADD("oki", 1023924, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@@ -2252,21 +2248,18 @@ static MACHINE_CONFIG_START( htchctch, tumbleb_state )
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,tumblepb)
/* sound hardware - same as hyperpac */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
- /* on at least hatch catch, cookie & bibi and choky choky the YM2151 clock is connected
- directly to the Z80 clock so the speed should match */
- MCFG_YM2151_ADD("ymsnd", 15000000/4)
+ /* on at least hatch catch, cookie & bibi and choky choky the YM2151 clock is connected directly to the Z80 clock so the speed should match */
+ MCFG_YM2151_ADD("ymsnd", 15000000/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.10)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
/* correct for cookie & bibi and hatch catch, (4096000/4) */
MCFG_OKIM6295_ADD("oki", 1024000, OKIM6295_PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cookbib, htchctch )
@@ -2275,12 +2268,13 @@ static MACHINE_CONFIG_DERIVED( cookbib, htchctch )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( chokchok, htchctch )
- MCFG_PALETTE_MODIFY("palette")
- MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
-
- MCFG_OKIM6295_REPLACE("oki", 3579545/4, OKIM6295_PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
+ // some PCBs have left factory with a 3.57mhz while some have a 4.096 which matches other games, assuming the former are factory errors
+ // TODO: MAME sound cores doesn't handle on-the-fly sound frequency changes, I guess best action here is to make the sound chip a slot option,
+ // assuming it's worth emulating a factory error in the first place.
+ MCFG_OKIM6295_REPLACE("oki", 4096000/4, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cookbib_mcu, htchctch )
@@ -2301,8 +2295,7 @@ static MACHINE_CONFIG_DERIVED( bcstory, htchctch )
MCFG_SOUND_REPLACE("ymsnd", YM2151, 3427190)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.10)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( semibase, bcstory )
@@ -2323,8 +2316,7 @@ static MACHINE_CONFIG_DERIVED( metlsavr, cookbib )
MCFG_SOUND_REPLACE("ymsnd", YM2151, 3427190)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.10)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
MACHINE_CONFIG_END
@@ -2364,13 +2356,12 @@ static MACHINE_CONFIG_START( suprtrio, tumbleb_state )
MCFG_VIDEO_START_OVERRIDE(tumbleb_state,suprtrio)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 875000, OKIM6295_PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( pangpang, tumbleb_state )
diff --git a/src/mame/drivers/vcombat.cpp b/src/mame/drivers/vcombat.cpp
index f0e33d74228..84682063c58 100644
--- a/src/mame/drivers/vcombat.cpp
+++ b/src/mame/drivers/vcombat.cpp
@@ -128,6 +128,7 @@ public:
DECLARE_DRIVER_INIT(vcombat);
DECLARE_MACHINE_RESET(vcombat);
DECLARE_MACHINE_RESET(shadfgtr);
+ uint32_t update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int index);
uint32_t screen_update_vcombat_main(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_vcombat_aux(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
@@ -137,14 +138,13 @@ public:
required_device<dac_word_interface> m_dac;
};
-static uint32_t update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int index)
+uint32_t vcombat_state::update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int index)
{
- vcombat_state *state = screen.machine().driver_data<vcombat_state>();
int y;
- const rgb_t *const pens = state->m_tlc34076->get_pens();
+ const rgb_t *const pens = m_tlc34076->get_pens();
- uint16_t *m68k_buf = state->m_m68k_framebuffer[(*state->m_framebuffer_ctrl & 0x20) ? 1 : 0].get();
- uint16_t *i860_buf = state->m_i860_framebuffer[index][0].get();
+ uint16_t *m68k_buf = m_m68k_framebuffer[(*m_framebuffer_ctrl & 0x20) ? 1 : 0].get();
+ uint16_t *i860_buf = m_i860_framebuffer[index][0].get();
/* TODO: It looks like the leftmost chunk of the ground should really be on the right side? */
/* But the i860 draws the background correctly, so it may be an original game issue. */
diff --git a/src/mame/drivers/videopin.cpp b/src/mame/drivers/videopin.cpp
index c7e607114e5..083befd86e5 100644
--- a/src/mame/drivers/videopin.cpp
+++ b/src/mame/drivers/videopin.cpp
@@ -93,8 +93,8 @@ void videopin_state::machine_reset()
/* both output latches are cleared on reset */
- out1_w(machine().driver_data()->generic_space(), 0, 0);
- out2_w(machine().driver_data()->generic_space(), 0, 0);
+ out1_w(machine().dummy_space(), 0, 0);
+ out2_w(machine().dummy_space(), 0, 0);
}
diff --git a/src/mame/drivers/vip.cpp b/src/mame/drivers/vip.cpp
index 77113d34aa1..933d57527d0 100644
--- a/src/mame/drivers/vip.cpp
+++ b/src/mame/drivers/vip.cpp
@@ -477,7 +477,7 @@ READ_LINE_MEMBER( vip_state::ef4_r )
WRITE_LINE_MEMBER( vip_state::q_w )
{
// sound output
- m_beeper->write(machine().driver_data()->generic_space(), NODE_01, state);
+ m_beeper->write(machine().dummy_space(), NODE_01, state);
// Q led
output().set_led_value(LED_Q, state);
@@ -620,7 +620,7 @@ void vip_state::machine_start()
output().set_led_value(LED_POWER, 1);
// reset sound
- m_beeper->write(machine().driver_data()->generic_space(), NODE_01, 0);
+ m_beeper->write(machine().dummy_space(), NODE_01, 0);
// state saving
save_item(NAME(m_8000));
diff --git a/src/mame/includes/apple2gs.h b/src/mame/includes/apple2gs.h
index b72dc4b08e6..26e3a5895c6 100644
--- a/src/mame/includes/apple2gs.h
+++ b/src/mame/includes/apple2gs.h
@@ -18,8 +18,12 @@
#include "machine/nvram.h"
#include "cpu/g65816/g65816.h"
#include "cpu/m6502/m5074x.h"
+#include "machine/z80scc.h"
#define ADBMICRO_TAG "adbmicro"
+#define SCC_TAG "scc"
+#define RS232A_TAG "printer"
+#define RS232B_TAG "modem"
// IIgs clocks as marked on the schematics
#define APPLE2GS_28M (XTAL_28_63636MHz) // IIGS master clock
@@ -95,6 +99,7 @@ public:
m_maincpu(*this, "maincpu"),
m_es5503(*this, "es5503"),
m_fdc(*this, "fdc"),
+ m_scc(*this, "scc"),
#if RUN_ADB_MICRO
m_adbmicro(*this, ADBMICRO_TAG),
#endif
@@ -106,6 +111,7 @@ public:
required_device<g65816_device> m_maincpu;
required_device<es5503_device> m_es5503;
required_device<applefdc_base_device> m_fdc;
+ required_device<z80scc_device> m_scc;
#if RUN_ADB_MICRO
optional_device<m5074x_device> m_adbmicro;
#endif
diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h
index 213b9097b42..09348dd51af 100644
--- a/src/mame/includes/model2.h
+++ b/src/mame/includes/model2.h
@@ -165,6 +165,8 @@ public:
DECLARE_WRITE32_MEMBER(model2_5881prot_w);
int first_read;
+ void model2_3d_init(uint16_t *texture_rom);
+ void geo_init(uint32_t *polygon_rom);
DECLARE_READ32_MEMBER(maxx_r);
DECLARE_WRITE32_MEMBER(mode_w);
DECLARE_WRITE32_MEMBER(model2o_tex_w0);
@@ -396,8 +398,3 @@ struct quad_m2
uint16_t texheader[4];
uint8_t luma;
};
-
-
-
-/*----------- defined in video/model2.c -----------*/
-void model2_3d_set_zclip( running_machine &machine, uint8_t clip );
diff --git a/src/mame/includes/model3.h b/src/mame/includes/model3.h
index 021583fb9a1..8b4dadb09fb 100644
--- a/src/mame/includes/model3.h
+++ b/src/mame/includes/model3.h
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:R. Belmont, Ville Linde
+#include "cpu/powerpc/ppc.h"
#include "video/poly.h"
#include "bus/scsi/scsi.h"
#include "machine/53c810.h"
@@ -72,7 +73,7 @@ public:
m_step20_with_old_real3d = false;
}
- required_device<cpu_device> m_maincpu;
+ required_device<ppc_device> m_maincpu;
optional_device<lsi53c810_device> m_lsi53c810;
required_device<cpu_device> m_audiocpu;
required_device<scsp_device> m_scsp1;
@@ -198,12 +199,14 @@ public:
DECLARE_WRITE64_MEMBER(mpc105_data_w);
DECLARE_READ64_MEMBER(mpc105_reg_r);
DECLARE_WRITE64_MEMBER(mpc105_reg_w);
+ void mpc105_init();
DECLARE_READ64_MEMBER(mpc106_addr_r);
DECLARE_WRITE64_MEMBER(mpc106_addr_w);
DECLARE_READ64_MEMBER(mpc106_data_r);
DECLARE_WRITE64_MEMBER(mpc106_data_w);
DECLARE_READ64_MEMBER(mpc106_reg_r);
DECLARE_WRITE64_MEMBER(mpc106_reg_w);
+ void mpc106_init();
DECLARE_READ64_MEMBER(scsi_r);
DECLARE_WRITE64_MEMBER(scsi_w);
DECLARE_READ64_MEMBER(real3d_dma_r);
@@ -222,6 +225,8 @@ public:
DECLARE_WRITE16_MEMBER(model3snd_ctrl);
uint32_t pci_device_get_reg();
void pci_device_set_reg(uint32_t value);
+ void configure_fast_ram();
+ void interleave_vroms();
DECLARE_DRIVER_INIT(genprot);
DECLARE_DRIVER_INIT(lemans24);
DECLARE_DRIVER_INIT(vs298);
diff --git a/src/mame/includes/rollrace.h b/src/mame/includes/rollrace.h
index 1c95eea6331..f066376edd5 100644
--- a/src/mame/includes/rollrace.h
+++ b/src/mame/includes/rollrace.h
@@ -37,6 +37,7 @@ public:
DECLARE_WRITE8_MEMBER(fake_d800_w);
DECLARE_WRITE8_MEMBER(nmi_mask_w);
DECLARE_WRITE8_MEMBER(sound_nmi_mask_w);
+ DECLARE_WRITE8_MEMBER(coin_w);
DECLARE_WRITE8_MEMBER(charbank_w);
DECLARE_WRITE8_MEMBER(bkgpen_w);
DECLARE_WRITE8_MEMBER(spritebank_w);
diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h
index e7d0c7f58dd..2b70602b519 100644
--- a/src/mame/includes/seta.h
+++ b/src/mame/includes/seta.h
@@ -250,6 +250,7 @@ public:
uint32_t screen_update_seta_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_seta_buffer_sprites(screen_device &screen, bool state);
void screen_eof_setaroul(screen_device &screen, bool state);
+ void uPD71054_update_timer(device_t *cpu, int no);
INTERRUPT_GEN_MEMBER(wrofaero_interrupt);
TIMER_CALLBACK_MEMBER(uPD71054_timer_callback);
TIMER_CALLBACK_MEMBER(keroppi_prize_hop_callback);
diff --git a/src/mame/includes/ti85.h b/src/mame/includes/ti85.h
index 94e542c6859..f7347f98610 100644
--- a/src/mame/includes/ti85.h
+++ b/src/mame/includes/ti85.h
@@ -211,6 +211,7 @@ public:
DECLARE_WRITE8_MEMBER( ti83pse_ctimer3_count_w );
+ void ti8x_update_bank(address_space &space, uint8_t bank, uint8_t *base, uint8_t page, bool is_ram);
void update_ti85_memory ();
void update_ti83p_memory ();
void update_ti83pse_memory ();
diff --git a/src/mame/includes/tumbleb.h b/src/mame/includes/tumbleb.h
index ee4c2a86d17..5a5796978da 100644
--- a/src/mame/includes/tumbleb.h
+++ b/src/mame/includes/tumbleb.h
@@ -128,6 +128,7 @@ public:
void tumbleb_draw_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pf1x_offs, int pf1y_offs, int pf2x_offs, int pf2y_offs);
void tumbleb2_set_music_bank( int bank );
void tumbleb2_play_sound( okim6295_device *oki, int data );
+ void tumbleb2_playmusic(okim6295_device *oki);
void process_tumbleb2_music_command( okim6295_device *oki, int data );
void tumblepb_gfx_rearrange(int rgn);
void suprtrio_decrypt_code();
diff --git a/src/mame/layout/chessmst.lay b/src/mame/layout/chessmst.lay
index 1c29ce7b78e..6fb7883b80b 100644
--- a/src/mame/layout/chessmst.lay
+++ b/src/mame/layout/chessmst.lay
@@ -157,48 +157,55 @@
<element name="black"><rect><color red="0.64" green="0.08" blue="0.11" /></rect></element>
<element name="white"><rect><color red="1.00" green="0.88" blue="0.55" /></rect></element>
- <element name="text_1"> <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_2"> <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_3"> <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_4"> <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_5"> <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_6"> <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_7"> <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_8"> <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
-
- <element name="text_a"> <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_b"> <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_c"> <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_d"> <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_e"> <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_f"> <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_g"> <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_h"> <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
-
- <element name="text_chessmaster"> <text string="CHESS-MASTER" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_newgame"> <text string="NEW GAME" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_level"> <text string="LEVEL" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_color"> <text string="COLOR" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_board"> <text string="BOARD" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_selfplay"> <text string="SELF PLAY" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_referee"> <text string="REFEREE" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_random"> <text string="RANDOM" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_hint"> <text string="HINT" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_white"> <text string="WHITE" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_black"> <text string="BLACK" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_king" > <text string="&#x2654;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_queen" > <text string="&#x2655;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_rook" > <text string="&#x2656;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_bishop" > <text string="&#x2657;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_knight" > <text string="&#x2658;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_pawn" > <text string="&#x2659;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_change"> <text string="CHANGE" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_board"> <text string="BOARD" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_halt"> <text string="HALT" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_reset"> <text string="RESET" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_check"> <text string="CHECK" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_your"> <text string="YOUR" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_cms"> <text string="CM'S" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_1"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_2"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_3"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_4"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_5"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_6"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_7"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_8"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+
+ <element name="text_a"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_c"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_d"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_e"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_f"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_g"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_h"> <rect><color red="0.64" green="0.08" blue="0.11" /></rect> <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+
+ <element name="text_b1"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b2"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b3"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b4"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b5"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b6"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b7"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b8"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_chessmaster"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="CHESS-MASTER" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_newgame"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="NEW GAME" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_level"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="LEVEL" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_color"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="COLOR" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_board"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="BOARD" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_selfplay"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="SELF PLAY" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_referee"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="REFEREE" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_random"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="RANDOM" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_hint"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="HINT" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_white"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="WHITE" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_black"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="BLACK" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_king" > <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="&#x2654;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_queen" > <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="&#x2655;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_rook" > <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="&#x2656;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_bishop" > <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="&#x2657;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_knight" > <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="&#x2658;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_pawn" > <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="&#x2659;" align="2"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_change"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="CHANGE" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_halt"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="HALT" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_reset"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="RESET" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_check"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="CHECK" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_your"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="YOUR" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_cms"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="CM'S" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
<element name="piece" defstate="0">
<text string="&#x265a;" state="1"><color red="0.27" green="0.25" blue="0.25" /></text>
@@ -557,23 +564,23 @@
<bezel element="text_rook"> <bounds x="95" y="39" width="4" height="4" /></bezel>
<bezel element="text_queen"> <bounds x="95" y="46" width="4" height="4" /></bezel>
<bezel element="text_king"> <bounds x="95" y="53" width="4" height="4" /></bezel>
- <bezel element="text_white"> <bounds x="88" y="61" width="10" height="1.8" /></bezel>
- <bezel element="text_black"> <bounds x="88" y="68" width="10" height="1.8" /></bezel>
+ <bezel element="text_white"> <bounds x="90" y="61" width="9" height="1.8" /></bezel>
+ <bezel element="text_black"> <bounds x="90" y="68" width="9" height="1.8" /></bezel>
<bezel element="text_check"> <bounds x="91" y="6" width="10" height="1.8" /></bezel>
- <bezel element="text_your"> <bounds x="98" y="6" width="8" height="1.8" /></bezel>
+ <bezel element="text_your"> <bounds x="99" y="6" width="6" height="1.8" /></bezel>
<bezel element="text_cms"> <bounds x="104" y="6" width="8" height="1.8" /></bezel>
<bezel element="text_change"> <bounds x="95.3" y="73" width="12" height="1.8" /></bezel>
<bezel element="text_board"> <bounds x="103" y="73" width="10" height="1.8" /></bezel>
- <bezel element="text_1"><bounds x="111" y="19" width="2" height="1.8" /></bezel>
- <bezel element="text_2"><bounds x="111" y="26" width="2" height="1.8" /></bezel>
- <bezel element="text_3"><bounds x="111" y="33" width="2" height="1.8" /></bezel>
- <bezel element="text_4"><bounds x="111" y="40" width="2" height="1.8" /></bezel>
- <bezel element="text_5"><bounds x="111" y="47" width="2" height="1.8" /></bezel>
- <bezel element="text_6"><bounds x="111" y="54" width="2" height="1.8" /></bezel>
- <bezel element="text_7"><bounds x="111" y="62" width="2" height="1.8" /></bezel>
- <bezel element="text_8"><bounds x="111" y="69" width="2" height="1.8" /></bezel>
+ <bezel element="text_b1"><bounds x="111" y="19" width="2" height="1.8" /></bezel>
+ <bezel element="text_b2"><bounds x="111" y="26" width="2" height="1.8" /></bezel>
+ <bezel element="text_b3"><bounds x="111" y="33" width="2" height="1.8" /></bezel>
+ <bezel element="text_b4"><bounds x="111" y="40" width="2" height="1.8" /></bezel>
+ <bezel element="text_b5"><bounds x="111" y="47" width="2" height="1.8" /></bezel>
+ <bezel element="text_b6"><bounds x="111" y="54" width="2" height="1.8" /></bezel>
+ <bezel element="text_b7"><bounds x="111" y="62" width="2" height="1.8" /></bezel>
+ <bezel element="text_b8"><bounds x="111" y="69" width="2" height="1.8" /></bezel>
<bezel name="led_i1" element="led"> <bounds x="100" y="19" width="2" height="2" /></bezel>
<bezel name="led_i2" element="led"> <bounds x="100" y="26" width="2" height="2" /></bezel>
diff --git a/src/mame/layout/chessmstdm.lay b/src/mame/layout/chessmstdm.lay
index f94fbd98b00..82ea39b96e5 100644
--- a/src/mame/layout/chessmstdm.lay
+++ b/src/mame/layout/chessmstdm.lay
@@ -167,42 +167,42 @@
<element name="black"><rect><color red="0.44" green="0.08" blue="0.01" /></rect></element>
<element name="white"><rect><color red="1.00" green="0.88" blue="0.55" /></rect></element>
- <element name="text_1"> <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_2"> <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_3"> <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_4"> <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_5"> <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_6"> <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_7"> <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_8"> <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
-
- <element name="text_a"> <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_b"> <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_c"> <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_d"> <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_e"> <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_f"> <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_g"> <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_h"> <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
-
- <element name="text_chessmaster"> <text string="CHESS-MASTER" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_diamond"> <text string="diamond" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_monitor"> <text string="MONITOR" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_view"> <text string="VIEW" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_reset"> <text string="RESET" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_selection"> <text string="SELECTION" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_dialogue"> <text string="DIALOGUE" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_function"> <text string="FUNCTION" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_notation"> <text string="NOTATION" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_parameter"> <text string="PARAMETER" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_information"> <text string="INFORMATION" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_board"> <text string="BOARD" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_match"> <text string="MATCH" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_time"> <text string="TIME" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_enter"> <text string="ENTER" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_playmode"> <text string="PLAYMODE" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_move_fore"> <text string="MOVE FORE" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_move_back"> <text string="MOVE BACK" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_1"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_2"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_3"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_4"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_5"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_6"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_7"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_8"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+
+ <element name="text_a"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_c"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_d"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_e"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_f"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_g"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_h"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+
+ <element name="text_chessmaster"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="CHESS-MASTER" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_diamond"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="diamond" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_monitor"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="MONITOR" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_view"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="VIEW" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_reset"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="RESET" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_selection"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="SELECTION" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_dialogue"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="DIALOGUE" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_function"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="FUNCTION" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_notation"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="NOTATION" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_parameter"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="PARAMETER" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_information"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="INFORMATION" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_board"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="BOARD" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_match"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="MATCH" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_time"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="TIME" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_enter"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="ENTER" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_playmode"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="PLAYMODE" align="1"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_move_fore"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="MOVE FORE" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_move_back"> <rect><color red="1.00" green="0.88" blue="0.55" /></rect> <text string="MOVE BACK" align="0"><color red="0.17" green="0.15" blue="0.15" /></text> </element>
<element name="piece" defstate="0">
<text string="&#x265a;" state="1"><color red="0.27" green="0.25" blue="0.25" /></text>
diff --git a/src/mame/layout/fidel_ex_68k.lay b/src/mame/layout/fidel_ex_68k.lay
new file mode 100644
index 00000000000..5429357f828
--- /dev/null
+++ b/src/mame/layout/fidel_ex_68k.lay
@@ -0,0 +1,528 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
+ </element>
+
+ <element name="led" defstate="0">
+ <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
+ <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
+ </element>
+
+ <element name="hl" defstate="0">
+ <text string=" ">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </text>
+ <disk state="1">
+ <bounds x="0.12" y="0.12" width="0.76" height="0.76" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </disk>
+ </element>
+ <element name="hlb" defstate="0">
+ <text string=" ">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </text>
+ <rect state="1">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="1.0" green="1.0" blue="1.0" />
+ </rect>
+ </element>
+
+ <element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
+ <element name="white"><rect><color red="0.81" green="0.8" blue="0.79" /></rect></element>
+ <element name="redb"><rect><color red="0.81" green="0.3" blue="0.29" /></rect></element>
+
+ <element name="text_1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="1" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="2" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="3" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_4">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="4" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_5">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="5" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_6">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="6" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_7">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="7" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_8">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="8" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_9">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="9" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_10">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="10" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_11">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="11" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_12">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="12" align="2"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_a">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_b">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_c">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_d">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_e">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_f">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_g">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_h">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_lb">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CHECK"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_lc">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="MATE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_ld">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="WHITE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_le">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="BLACK"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_lf">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="STALEMATE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_lg">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="DRAW"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+ <element name="text_lh">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="I LOSE"><color red="0.01" green="0.01" blue="0.01" /></text>
+ </element>
+
+ <element name="text_t81">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="NEW"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t82">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="GAME"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t7">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="VERIFY"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t6">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="OPTIONS"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t5">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="LEVEL"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t41">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="TAKE"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t42">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="BACK"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t3">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="HINT"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t2">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="MOVE"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+ <element name="text_t1">
+ <rect><color red="0.81" green="0.8" blue="0.79" /></rect>
+ <text string="CLEAR"><color red="0.17" green="0.15" blue="0.15" /></text>
+ </element>
+
+ <element name="text_tl7">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="&#x265a;"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl6">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="&#x265b;"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl5">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="&#x265c;"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl4">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="&#x265d;"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl3">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="&#x265e;"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+ <element name="text_tl2">
+ <rect><color red="0.17" green="0.15" blue="0.15" /></rect>
+ <text string="&#x265f;"><color red="0.65" green="0.15" blue="0.14" /></text>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="-2" right="98" top="-14.5" bottom="89" />
+
+ <bezel element="white"><bounds x="-2.5" y="-2" width="101" height="91.5" /></bezel>
+
+ <!-- chessboard coords -->
+
+ <bezel element="text_8"><bounds x="-0.3" y="9" width="2" height="2" /></bezel>
+ <bezel element="text_7"><bounds x="-0.3" y="19" width="2" height="2" /></bezel>
+ <bezel element="text_6"><bounds x="-0.3" y="29" width="2" height="2" /></bezel>
+ <bezel element="text_5"><bounds x="-0.3" y="39" width="2" height="2" /></bezel>
+ <bezel element="text_4"><bounds x="-0.3" y="49" width="2" height="2" /></bezel>
+ <bezel element="text_3"><bounds x="-0.3" y="59" width="2" height="2" /></bezel>
+ <bezel element="text_2"><bounds x="-0.3" y="69" width="2" height="2" /></bezel>
+ <bezel element="text_1"><bounds x="-0.3" y="79" width="2" height="2" /></bezel>
+
+ <bezel element="text_a"><bounds x="5" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_b"><bounds x="15" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_c"><bounds x="25" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_d"><bounds x="35" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_e"><bounds x="45" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_f"><bounds x="55" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_g"><bounds x="65" y="84.2" width="2" height="2" /></bezel>
+ <bezel element="text_h"><bounds x="75" y="84.2" width="2" height="2" /></bezel>
+
+ <!-- left side labels -->
+
+ <bezel element="text_9"><bounds x="-4.3" y="12" width="5" height="2" /></bezel>
+ <bezel element="text_10"><bounds x="-4.3" y="22" width="5" height="2" /></bezel>
+ <bezel element="text_11"><bounds x="-4.3" y="32" width="5" height="2" /></bezel>
+ <bezel element="text_12"><bounds x="-4.3" y="42" width="5" height="2" /></bezel>
+
+ <!-- bottom side labels -->
+
+ <bezel element="text_lb"><bounds x="13" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_lc"><bounds x="23" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_ld"><bounds x="33" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_le"><bounds x="43" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_lf"><bounds x="53" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_lh"><bounds x="73" y="86.3" width="10" height="2" /></bezel>
+ <bezel element="text_lg"><bounds x="62" y="86.3" width="12" height="2" /></bezel>
+
+ <!-- chessboard bezel -->
+
+ <bezel element="black"><bounds x="2" y="2" width="82" height="82" /></bezel>
+ <bezel element="white"><bounds x="3" y="3" width="80" height="80" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="33" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="53" y="2.5" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="73" y="2.5" width="10.5" height="10.5" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="13" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="13" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="13" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="23" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="23" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="33" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="33" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="33" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="43" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="43" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="53" width="10.5" height="10" /></bezel>
+ <bezel element="black"><bounds x="23" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="43" y="53" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="63" y="53" width="10" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="13" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="33" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="53" y="63" width="10" height="10" /></bezel>
+ <bezel element="black"><bounds x="73" y="63" width="10.5" height="10" /></bezel>
+
+ <bezel element="black"><bounds x="2.5" y="73" width="10.5" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="23" y="73" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="43" y="73" width="10" height="10.5" /></bezel>
+ <bezel element="black"><bounds x="63" y="73" width="10" height="10.5" /></bezel>
+
+ <!-- chessboard leds -->
+
+ <bezel name="0.15" element="led"><bounds x="11.3" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.15" element="led"><bounds x="21.3" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.15" element="led"><bounds x="31.3" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.15" element="led"><bounds x="41.3" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.15" element="led"><bounds x="51.3" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.15" element="led"><bounds x="61.3" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.15" element="led"><bounds x="71.3" y="11.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.15" element="led"><bounds x="81.3" y="11.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.14" element="led"><bounds x="11.3" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.14" element="led"><bounds x="21.3" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.14" element="led"><bounds x="31.3" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.14" element="led"><bounds x="41.3" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.14" element="led"><bounds x="51.3" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.14" element="led"><bounds x="61.3" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.14" element="led"><bounds x="71.3" y="21.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.14" element="led"><bounds x="81.3" y="21.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.13" element="led"><bounds x="11.3" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.13" element="led"><bounds x="21.3" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.13" element="led"><bounds x="31.3" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.13" element="led"><bounds x="41.3" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.13" element="led"><bounds x="51.3" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.13" element="led"><bounds x="61.3" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.13" element="led"><bounds x="71.3" y="31.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.13" element="led"><bounds x="81.3" y="31.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.12" element="led"><bounds x="11.3" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.12" element="led"><bounds x="21.3" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.12" element="led"><bounds x="31.3" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.12" element="led"><bounds x="41.3" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.12" element="led"><bounds x="51.3" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.12" element="led"><bounds x="61.3" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.12" element="led"><bounds x="71.3" y="41.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.12" element="led"><bounds x="81.3" y="41.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.11" element="led"><bounds x="11.3" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.11" element="led"><bounds x="21.3" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.11" element="led"><bounds x="31.3" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.11" element="led"><bounds x="41.3" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.11" element="led"><bounds x="51.3" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.11" element="led"><bounds x="61.3" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.11" element="led"><bounds x="71.3" y="51.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.11" element="led"><bounds x="81.3" y="51.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.10" element="led"><bounds x="11.3" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.10" element="led"><bounds x="21.3" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.10" element="led"><bounds x="31.3" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.10" element="led"><bounds x="41.3" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.10" element="led"><bounds x="51.3" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.10" element="led"><bounds x="61.3" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.10" element="led"><bounds x="71.3" y="61.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.10" element="led"><bounds x="81.3" y="61.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.9" element="led"><bounds x="11.3" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.9" element="led"><bounds x="21.3" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.9" element="led"><bounds x="31.3" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.9" element="led"><bounds x="41.3" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.9" element="led"><bounds x="51.3" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.9" element="led"><bounds x="61.3" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.9" element="led"><bounds x="71.3" y="71.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.9" element="led"><bounds x="81.3" y="71.3" width="1.5" height="1.5" /></bezel>
+
+ <bezel name="0.8" element="led"><bounds x="11.3" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="1.8" element="led"><bounds x="21.3" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="2.8" element="led"><bounds x="31.3" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="3.8" element="led"><bounds x="41.3" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="4.8" element="led"><bounds x="51.3" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="5.8" element="led"><bounds x="61.3" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="6.8" element="led"><bounds x="71.3" y="81.3" width="1.5" height="1.5" /></bezel>
+ <bezel name="7.8" element="led"><bounds x="81.3" y="81.3" width="1.5" height="1.5" /></bezel>
+
+ <!-- chessboard sensors -->
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x80"><bounds x="3" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x80"><bounds x="13" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x80"><bounds x="23" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x80"><bounds x="33" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x80"><bounds x="43" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x80"><bounds x="53" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x80"><bounds x="63" y="3" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x80"><bounds x="73" y="3" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x40"><bounds x="3" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x40"><bounds x="13" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x40"><bounds x="23" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x40"><bounds x="33" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x40"><bounds x="43" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x40"><bounds x="53" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x40"><bounds x="63" y="13" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x40"><bounds x="73" y="13" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x20"><bounds x="3" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x20"><bounds x="13" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x20"><bounds x="23" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x20"><bounds x="33" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x20"><bounds x="43" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x20"><bounds x="53" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x20"><bounds x="63" y="23" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x20"><bounds x="73" y="23" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x10"><bounds x="3" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x10"><bounds x="13" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x10"><bounds x="23" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x10"><bounds x="33" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x10"><bounds x="43" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x10"><bounds x="53" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x10"><bounds x="63" y="33" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x10"><bounds x="73" y="33" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="3" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="13" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="23" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="33" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="43" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x08"><bounds x="53" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x08"><bounds x="63" y="43" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x08"><bounds x="73" y="43" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="3" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="13" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="23" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="33" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x04"><bounds x="43" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x04"><bounds x="53" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x04"><bounds x="63" y="53" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x04"><bounds x="73" y="53" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="3" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="13" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="23" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="33" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x02"><bounds x="43" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x02"><bounds x="53" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x02"><bounds x="63" y="63" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x02"><bounds x="73" y="63" width="10" height="10" /><color alpha="0.2" /></bezel>
+
+ <bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="3" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="13" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="23" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="33" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="43" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.5" inputmask="0x01"><bounds x="53" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+ <bezel element="hl" inputtag="IN.6" inputmask="0x01"><bounds x="63" y="73" width="10" height="10" /><color alpha="0.2" /></bezel>
+ <bezel element="hl" inputtag="IN.7" inputmask="0x01"><bounds x="73" y="73" width="10" height="10" /><color alpha="0.4" /></bezel>
+
+ <!-- 7seg leds -->
+
+ <bezel name="digit6" element="digit">
+ <bounds x="64.18" y="-12.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit4" element="digit">
+ <bounds x="69.84" y="-12.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit2" element="digit">
+ <bounds x="78.34" y="-12.5" width="5.66" height="8.5" />
+ </bezel>
+ <bezel name="digit0" element="digit">
+ <bounds x="84" y="-12.5" width="5.66" height="8.5" />
+ </bezel>
+
+ <bezel name="4.7" element="led">
+ <bounds x="76.76" y="-11" width="0.85" height="0.85" />
+ </bezel>
+ <bezel name="6.7" element="led">
+ <bounds x="76.31" y="-6.35" width="0.85" height="0.85" />
+ </bezel>
+
+ <!-- right side -->
+
+ <bezel element="black"><bounds x="86" y="2" width="10" height="82" /></bezel>
+
+ <bezel element="text_tl7"><bounds x="87" y="16" width="8" height="3" /></bezel>
+ <bezel element="text_tl6"><bounds x="87" y="25" width="8" height="3" /></bezel>
+ <bezel element="text_tl5"><bounds x="87" y="34" width="8" height="3" /></bezel>
+ <bezel element="text_tl4"><bounds x="87" y="43" width="8" height="3" /></bezel>
+ <bezel element="text_tl3"><bounds x="87" y="52" width="8" height="3" /></bezel>
+ <bezel element="text_tl2"><bounds x="87" y="61" width="8" height="3" /></bezel>
+
+ <bezel element="redb"><bounds x="87" y="9" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="19" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="28" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="37" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="46" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="55" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="64" width="8" height="4" /></bezel>
+ <bezel element="redb"><bounds x="87" y="73" width="8" height="4" /></bezel>
+
+ <bezel element="white"><bounds x="87.3" y="9.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="19.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="28.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="37.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="46.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="55.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="64.3" width="7.4" height="3.4" /></bezel>
+ <bezel element="white"><bounds x="87.3" y="73.3" width="7.4" height="3.4" /></bezel>
+
+ <bezel element="text_t81"><bounds x="87.35" y="9.5" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t82"><bounds x="87.35" y="11" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t7"><bounds x="87.35" y="20.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t6"><bounds x="87.35" y="29.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t5"><bounds x="87.35" y="38.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t41"><bounds x="87.35" y="46.5" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t42"><bounds x="87.35" y="48" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t3"><bounds x="87.35" y="56.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t2"><bounds x="87.35" y="65.25" width="7.3" height="1.5" /></bezel>
+ <bezel element="text_t1"><bounds x="87.35" y="74.25" width="7.3" height="1.5" /></bezel>
+
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x80"><bounds x="87" y="9" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x40"><bounds x="87" y="19" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x20"><bounds x="87" y="28" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x10"><bounds x="87" y="37" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x08"><bounds x="87" y="46" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x04"><bounds x="87" y="55" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x02"><bounds x="87" y="64" width="8" height="4" /><color alpha="0.4" /></bezel>
+ <bezel element="hlb" inputtag="IN.8" inputmask="0x01"><bounds x="87" y="73" width="8" height="4" /><color alpha="0.4" /></bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/risc2500.lay b/src/mame/layout/risc2500.lay
index b571da46d1b..e5dedf9fe1f 100644
--- a/src/mame/layout/risc2500.lay
+++ b/src/mame/layout/risc2500.lay
@@ -154,50 +154,50 @@
</rect>
</element>
- <element name="text_1"> <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_2"> <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_3"> <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_4"> <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_5"> <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_6"> <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_7"> <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_8"> <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_a"> <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_b"> <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_c"> <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_d"> <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_e"> <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_f"> <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_g"> <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_h"> <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
- <element name="text_on"> <text string="ON" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_off"> <text string="OFF" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_newgame"> <text string="NEW GAME" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_play"> <text string="PLAY" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_back"> <text string="BACK" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_left"> <text string="&#x2190;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_right"> <text string="&#x2192;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_menu"> <text string="MENU" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_up"> <text string="&#x2191;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_down"> <text string="&#x2193;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_enter"> <text string="ENTER" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_p1"> <text string="&#x265a;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_p2"> <text string="&#x265b;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_p3"> <text string="&#x265c;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_p4"> <text string="&#x265d;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_p5"> <text string="&#x265e;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="text_p6"> <text string="&#x265f;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
- <element name="sym_colon"> <text string=":" state="1"> <color red="1.0" green="1.0" blue="1.0" /></text> </element>
- <element name="sym_left"> <text string="&#x2190;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_right"> <text string="&#x2192;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_p1"> <text string="&#x265a;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_p2"> <text string="&#x265b;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_p3"> <text string="&#x265c;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_p4"> <text string="&#x265d;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_p5"> <text string="&#x265e;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_p6"> <text string="&#x265f;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_black"> <text string="&#x25cf;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
- <element name="sym_white"> <text string="&#x25cb;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="text_1"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="1"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_2"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="2"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_3"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="3"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_4"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="4"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_5"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="5"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_6"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="6"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_7"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="7"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_8"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="8"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_a"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="A"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_b"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="B"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_c"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="C"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_d"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="D"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_e"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="E"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_f"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="F"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_g"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="G"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_h"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="H"><color red="0.01" green="0.01" blue="0.01" /></text> </element>
+ <element name="text_on"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="ON" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_off"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="OFF" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_newgame"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="NEW GAME" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_play"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="PLAY" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_back"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="BACK" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_left"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x2190;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_right"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x2192;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_menu"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="MENU" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_up"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x2191;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_down"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x2193;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_enter"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="ENTER" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p1"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x265a;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p2"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x265b;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p3"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x265c;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p4"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x265d;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p5"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x265e;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="text_p6"> <rect><color red="0.63" green="0.63" blue="0.63" /></rect> <text string="&#x265f;" > <color red="0.17" green="0.15" blue="0.15" /></text> </element>
+ <element name="sym_colon"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string=":" state="1"> <color red="1.0" green="1.0" blue="1.0" /></text> </element>
+ <element name="sym_left"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x2190;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_right"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x2192;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p1"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x265a;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p2"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x265b;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p3"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x265c;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p4"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x265d;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p5"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x265e;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_p6"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x265f;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_white"> <rect><color red="0.00" green="0.00" blue="0.00" /></rect> <text string="&#x25cb;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
+ <element name="sym_black"> <text string="&#x25cf;" state="1"> <color red="1.0" green="1.0" blue="1.0" /> </text> </element>
<element name="white"><rect><color red="1" green="1" blue="1" /></rect></element>
<element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="background"><rect><color red="0.63" green="0.63" blue="0.63" /></rect></element>
@@ -463,6 +463,8 @@
<!-- LCD panel -->
<screen index="0"><bounds x="95" y="4.5" width="30" height="4" /></screen>
+ <bezel name="sym12" element="sym_colon" ><bounds x="107.0" y="9" width="1.5" height="3" /></bezel>
+ <bezel name="sym13" element="sym_colon" ><bounds x="119.2" y="9" width="1.5" height="3" /></bezel>
<bezel name="digit11" element="digit" ><bounds x="95.9" y="9" width="1.6" height="3" /></bezel>
<bezel name="digit10" element="digit" ><bounds x="98.35" y="9" width="1.6" height="3" /></bezel>
<bezel name="digit9" element="digit" ><bounds x="100.8" y="9" width="1.6" height="3" /></bezel>
@@ -475,8 +477,6 @@
<bezel name="digit2" element="digit" ><bounds x="117.95" y="9" width="1.6" height="3" /></bezel>
<bezel name="digit1" element="digit" ><bounds x="120.4" y="9" width="1.6" height="3" /></bezel>
<bezel name="digit0" element="digit" ><bounds x="122.85" y="9" width="1.6" height="3" /></bezel>
- <bezel name="sym12" element="sym_colon" ><bounds x="107.0" y="9" width="1.5" height="3" /></bezel>
- <bezel name="sym13" element="sym_colon" ><bounds x="119.2" y="9" width="1.5" height="3" /></bezel>
<bezel name="sym1" element="sym_right" > <bounds x="121.60" y="12.7" width="3" height="3" /></bezel>
<bezel name="sym2" element="sym_p6" > <bounds x="116.60" y="12.5" width="5" height="3" /></bezel>
diff --git a/src/mame/machine/apple2gs.cpp b/src/mame/machine/apple2gs.cpp
index 37cee8f58e5..3e20664986f 100644
--- a/src/mame/machine/apple2gs.cpp
+++ b/src/mame/machine/apple2gs.cpp
@@ -895,7 +895,6 @@ int apple2gs_state::apple2gs_get_vpos()
READ8_MEMBER( apple2gs_state::apple2gs_c0xx_r )
{
uint8_t result;
- scc8530_t *scc;
if(space.debugger_access())
{
@@ -1051,11 +1050,19 @@ READ8_MEMBER( apple2gs_state::apple2gs_c0xx_r )
break;
case 0x38: /* C038 - SCCBREG */
+ result = m_scc->cb_r(space, 0, mem_mask);
+ break;
+
case 0x39: /* C039 - SCCAREG */
+ result = m_scc->ca_r(space, 0, mem_mask);
+ break;
+
case 0x3A: /* C03A - SCCBDATA */
+ result = m_scc->db_r(space, 0, mem_mask);
+ break;
+
case 0x3B: /* C03B - SCCADATA */
- scc = space.machine().device<scc8530_t>("scc");
- result = scc->reg_r(space, offset & 0x03);
+ result = m_scc->da_r(space, 0, mem_mask);
break;
case 0x3C: /* C03C - SOUNDCTL */
@@ -1131,8 +1138,6 @@ READ8_MEMBER( apple2gs_state::apple2gs_c0xx_r )
WRITE8_MEMBER( apple2gs_state::apple2gs_c0xx_w )
{
- scc8530_t *scc;
-
offset &= 0xFF;
if (LOG_C0XX)
@@ -1226,12 +1231,20 @@ WRITE8_MEMBER( apple2gs_state::apple2gs_c0xx_w )
break;
case 0x38: /* C038 - SCCBREG */
+ m_scc->cb_w(space, 0, data);
+ break;
+
case 0x39: /* C039 - SCCAREG */
+ m_scc->ca_w(space, 0, data);
+ break;
+
case 0x3A: /* C03A - SCCBDATA */
+ m_scc->db_w(space, 0, data);
+ break;
+
case 0x3B: /* C03B - SCCADATA */
- scc = space.machine().device<scc8530_t>("scc");
- scc->reg_w(space, offset & 0x03, data);
- break;
+ m_scc->da_w(space, 0, data);
+ break;
case 0x3C: /* C03C - SOUNDCTL */
case 0x3D: /* C03D - SOUNDDATA */
diff --git a/src/mame/machine/midwayic.cpp b/src/mame/machine/midwayic.cpp
index 2d88912deba..52247aac96a 100644
--- a/src/mame/machine/midwayic.cpp
+++ b/src/mame/machine/midwayic.cpp
@@ -700,7 +700,7 @@ void midway_ioasic_device::ioasic_reset()
void midway_ioasic_device::update_ioasic_irq()
{
- uint16_t fifo_state = fifo_status_r(machine().driver_data()->generic_space(),0);
+ uint16_t fifo_state = fifo_status_r(machine().dummy_space(), 0);
uint16_t irqbits = 0x2000;
uint8_t new_state;
diff --git a/src/mame/machine/nitedrvr.cpp b/src/mame/machine/nitedrvr.cpp
index e4538038014..a7e97f5832c 100644
--- a/src/mame/machine/nitedrvr.cpp
+++ b/src/mame/machine/nitedrvr.cpp
@@ -252,7 +252,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(nitedrvr_state::nitedrvr_crash_toggle_callback)
if (m_crash_en && m_crash_data_en)
{
m_crash_data--;
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_discrete->write(space, NITEDRVR_BANG_DATA, m_crash_data); // Crash Volume
if (!m_crash_data)
m_crash_data_en = 0; // Done counting?
diff --git a/src/mame/machine/ti85.cpp b/src/mame/machine/ti85.cpp
index 4ae8d786174..3832b4b7395 100644
--- a/src/mame/machine/ti85.cpp
+++ b/src/mame/machine/ti85.cpp
@@ -134,12 +134,11 @@ void ti85_state::device_timer(emu_timer &timer, device_timer_id id, int param, v
}
}
-inline void ti8x_update_bank(address_space &space, uint8_t bank, uint8_t *base, uint8_t page, bool is_ram)
+void ti85_state::ti8x_update_bank(address_space &space, uint8_t bank, uint8_t *base, uint8_t page, bool is_ram)
{
- ti85_state *state = space.machine().driver_data<ti85_state>();
static const char *const tag[] = {"bank1", "bank2", "bank3", "bank4"};
- state->membank(tag[bank&3])->set_base(base + (0x4000 * page));
+ membank(tag[bank&3])->set_base(base + (0x4000 * page));
if (is_ram)
space.install_write_bank(bank * 0x4000, bank * 0x4000 + 0x3fff, tag[bank&3]);
diff --git a/src/mame/machine/ticket.cpp b/src/mame/machine/ticket.cpp
index 133f01a5e89..81db8e0caf0 100644
--- a/src/mame/machine/ticket.cpp
+++ b/src/mame/machine/ticket.cpp
@@ -155,7 +155,7 @@ WRITE8_MEMBER( ticket_dispenser_device::write )
WRITE_LINE_MEMBER( ticket_dispenser_device::motor_w )
{
- write(machine().driver_data()->generic_space(), 0, state ? m_active_bit : 0);
+ write(machine().dummy_space(), 0, state ? m_active_bit : 0);
}
diff --git a/src/mame/machine/williams.cpp b/src/mame/machine/williams.cpp
index 4bcc94211a2..88357e63dfd 100644
--- a/src/mame/machine/williams.cpp
+++ b/src/mame/machine/williams.cpp
@@ -693,13 +693,13 @@ TIMER_CALLBACK_MEMBER(joust2_state::joust2_deferred_snd_cmd_w)
WRITE_LINE_MEMBER(joust2_state::joust2_pia_3_cb1_w)
{
m_joust2_current_sound_data = (m_joust2_current_sound_data & ~0x100) | ((state << 8) & 0x100);
- m_cvsd_sound->write(machine().driver_data()->generic_space(), 0, m_joust2_current_sound_data);
+ m_cvsd_sound->write(machine().dummy_space(), 0, m_joust2_current_sound_data);
}
WRITE8_MEMBER(joust2_state::joust2_snd_cmd_w)
{
m_joust2_current_sound_data = (m_joust2_current_sound_data & ~0xff) | (data & 0xff);
- m_cvsd_sound->write(machine().driver_data()->generic_space(), 0, m_joust2_current_sound_data);
+ m_cvsd_sound->write(machine().dummy_space(), 0, m_joust2_current_sound_data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(joust2_state::joust2_deferred_snd_cmd_w),this), m_joust2_current_sound_data);
}
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index e3004b8be5e..172d38b2ab7 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -12260,6 +12260,7 @@ feagv11 //
feagv2 //
feagv7 //
feagv9 //
+fexcel68k //
@source:fidelz80.cpp
bridgec3 //
@@ -20422,7 +20423,6 @@ megaiv // 1989 Mephisto Mega IV Schachcomputer
milano // 1989 Mephisto Milano Schachcomputer
monteciv // 1990 Mephisto Monte Carlo IV LE Schachcomputer
polgar // 1986 Mephisto Polgar Schachcomputer
-risc // Saitek 2500 14MHZ (skeleton)
sexpertb // 1988 Novag Expert B Chess Computer
sexpertc // 1989 Novag Super Expert C Chess Computer
sfortea // 1987 Novag Super Forte A Chess Computer
@@ -27602,6 +27602,7 @@ murogmbl // ???
@source:mustache.cpp
mustache // (c) 1987 March
+mustachei // (c) 1987 IG SPA
@source:mvme147.cpp
mvme147 // (c) 1989 Motorola
@@ -31537,6 +31538,10 @@ rex6000 //
@source:rgum.cpp
rgum //
+@source:risc2500.cpp
+risc //
+montreux //
+
@source:riscpc.cpp
a7000 // 1995 Acorn Archimedes 7000
a7000p // 1997 Acorn Archimedes 7000+
diff --git a/src/mame/video/8080bw.cpp b/src/mame/video/8080bw.cpp
index ae063eb69fc..4f213e05648 100644
--- a/src/mame/video/8080bw.cpp
+++ b/src/mame/video/8080bw.cpp
@@ -57,7 +57,7 @@ inline void _8080bw_state::set_pixel( bitmap_rgb32 &bitmap, uint8_t y, uint8_t x
if (y >= MW8080BW_VCOUNTER_START_NO_VBLANK)
{
if (m_flip_screen)
- bitmap.pix32(MW8080BW_VBSTART - 1 - (y - MW8080BW_VCOUNTER_START_NO_VBLANK), MW8080BW_HPIXCOUNT - 1 - x) = color;
+ bitmap.pix32(MW8080BW_VBSTART - 1 - (y - MW8080BW_VCOUNTER_START_NO_VBLANK), MW8080BW_HPIXCOUNT - 1 - x) = m_palette->pen_color(color);
else
bitmap.pix32(y - MW8080BW_VCOUNTER_START_NO_VBLANK, x) = m_palette->pen_color(color);
}
diff --git a/src/mame/video/boogwing.cpp b/src/mame/video/boogwing.cpp
index 5c0d94e0424..f969686845e 100644
--- a/src/mame/video/boogwing.cpp
+++ b/src/mame/video/boogwing.cpp
@@ -27,7 +27,7 @@ void boogwing_state::mix_boogwing(screen_device &screen, bitmap_rgb32 &bitmap, c
bitmap_ind16 *sprite_bitmap1, *sprite_bitmap2;
bitmap_ind8* priority_bitmap;
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t priority = m_decocomn->priority_r(space, 0, 0xffff);
sprite_bitmap1 = &m_sprgen1->get_sprite_temp_bitmap();
@@ -179,7 +179,7 @@ void boogwing_state::mix_boogwing(screen_device &screen, bitmap_rgb32 &bitmap, c
uint32_t boogwing_state::screen_update_boogwing(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
uint16_t priority = m_decocomn->priority_r(space, 0, 0xffff);
diff --git a/src/mame/video/cbuster.cpp b/src/mame/video/cbuster.cpp
index a91e9e910cf..cd72fbad4a5 100644
--- a/src/mame/video/cbuster.cpp
+++ b/src/mame/video/cbuster.cpp
@@ -24,7 +24,7 @@ void cbuster_state::video_start()
uint32_t cbuster_state::screen_update_twocrude(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(!BIT(flip, 7));
diff --git a/src/mame/video/cninja.cpp b/src/mame/video/cninja.cpp
index 94980cf1ab5..3116f59711f 100644
--- a/src/mame/video/cninja.cpp
+++ b/src/mame/video/cninja.cpp
@@ -123,7 +123,7 @@ void cninja_state::cninjabl_draw_sprites( screen_device &screen, bitmap_ind16 &b
uint32_t cninja_state::screen_update_cninja(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
@@ -155,7 +155,7 @@ uint32_t cninja_state::screen_update_cninjabl2(screen_device &screen, bitmap_ind
uint32_t cninja_state::screen_update_cninjabl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
/* force layers to be enabled */
@@ -180,7 +180,7 @@ uint32_t cninja_state::screen_update_cninjabl(screen_device &screen, bitmap_ind1
uint32_t cninja_state::screen_update_edrandy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
@@ -199,7 +199,7 @@ uint32_t cninja_state::screen_update_edrandy(screen_device &screen, bitmap_ind16
uint32_t cninja_state::screen_update_robocop2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
uint16_t priority = m_decocomn->priority_r(space, 0, 0xffff);
@@ -256,7 +256,7 @@ VIDEO_START_MEMBER(cninja_state,mutantf)
uint32_t cninja_state::screen_update_mutantf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
uint16_t priority = m_decocomn->priority_r(space, 0, 0xffff);
diff --git a/src/mame/video/combatsc.cpp b/src/mame/video/combatsc.cpp
index 2c1d609d111..ea839d681b9 100644
--- a/src/mame/video/combatsc.cpp
+++ b/src/mame/video/combatsc.cpp
@@ -357,7 +357,7 @@ WRITE8_MEMBER(combatsc_state::combatsc_scrollram_w)
void combatsc_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, const uint8_t *source, int circuit, bitmap_ind8 &priority_bitmap, uint32_t pri_mask )
{
k007121_device *k007121 = circuit ? m_k007121_2 : m_k007121_1;
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
int base_color = (circuit * 4) * 16 + (k007121->ctrlram_r(space, 6) & 0x10) * 2;
k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(circuit), *m_palette, source, base_color, 0, 0, priority_bitmap, pri_mask);
@@ -368,7 +368,7 @@ uint32_t combatsc_state::screen_update_combatsc(screen_device &screen, bitmap_in
{
int i;
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
if (m_k007121_1->ctrlram_r(space, 1) & 0x02)
{
m_bg_tilemap[0]->set_scroll_rows(32);
diff --git a/src/mame/video/contra.cpp b/src/mame/video/contra.cpp
index cedc44e7335..2de1f8062ad 100644
--- a/src/mame/video/contra.cpp
+++ b/src/mame/video/contra.cpp
@@ -265,7 +265,7 @@ WRITE8_MEMBER(contra_state::contra_K007121_ctrl_1_w)
void contra_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int bank )
{
k007121_device *k007121 = bank ? m_k007121_2 : m_k007121_1;
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
int base_color = (k007121->ctrlram_r(space, 6) & 0x30) * 2;
const uint8_t *source;
@@ -279,7 +279,7 @@ void contra_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
uint32_t contra_state::screen_update_contra(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t ctrl_1_0 = m_k007121_1->ctrlram_r(space, 0);
uint8_t ctrl_1_2 = m_k007121_1->ctrlram_r(space, 2);
uint8_t ctrl_2_0 = m_k007121_2->ctrlram_r(space, 0);
diff --git a/src/mame/video/darkseal.cpp b/src/mame/video/darkseal.cpp
index 69f3d8a66d2..f7cea12a8da 100644
--- a/src/mame/video/darkseal.cpp
+++ b/src/mame/video/darkseal.cpp
@@ -60,7 +60,7 @@ void darkseal_state::video_start()
uint32_t darkseal_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen2->pf_control_r(space, 0, 0xffff);
flip_screen_set(!BIT(flip, 7));
diff --git a/src/mame/video/dassault.cpp b/src/mame/video/dassault.cpp
index 40cc383cfc1..07f5e0bf2d2 100644
--- a/src/mame/video/dassault.cpp
+++ b/src/mame/video/dassault.cpp
@@ -75,7 +75,7 @@ void dassault_state::mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite
/* are the priorities 100% correct? they're the same as they were before conversion to DECO52 sprite device, but if (for example) you walk to the side of the crates in the first part of the game you appear over them... */
uint32_t dassault_state::screen_update_dassault(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
uint16_t priority = m_decocomn->priority_r(space, 0, 0xffff);
diff --git a/src/mame/video/dec0.cpp b/src/mame/video/dec0.cpp
index e517f450ee9..1f828d558e7 100644
--- a/src/mame/video/dec0.cpp
+++ b/src/mame/video/dec0.cpp
@@ -127,7 +127,7 @@ uint32_t dec0_automat_state::screen_update_automat(screen_device &screen, bitmap
// layer enables seem different... where are they?
// the bootleg doesn't write these registers, I think they're hardcoded?, so fake them for compatibility with our implementation..
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_tilegen1->pf_control_0_w(space,0,0x0003, 0x00ff); // 8x8
m_tilegen1->pf_control_0_w(space,1,0x0003, 0x00ff);
m_tilegen1->pf_control_0_w(space,2,0x0000, 0x00ff);
@@ -194,7 +194,7 @@ uint32_t dec0_automat_state::screen_update_secretab(screen_device &screen, bitma
// layer enables seem different... where are they?
// the bootleg doesn't write these registers, I think they're hardcoded?, so fake them for compatibility with our implementation..
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_tilegen1->pf_control_0_w(space,0,0x0003, 0x00ff); // 8x8
m_tilegen1->pf_control_0_w(space,1,0x0003, 0x00ff);
m_tilegen1->pf_control_0_w(space,2,0x0000, 0x00ff);
diff --git a/src/mame/video/deco32.cpp b/src/mame/video/deco32.cpp
index 6a1d652457d..beea4ddaa30 100644
--- a/src/mame/video/deco32.cpp
+++ b/src/mame/video/deco32.cpp
@@ -233,7 +233,7 @@ VIDEO_START_MEMBER(dragngun_state,lockload)
uint32_t deco32_state::screen_update_captaven(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
diff --git a/src/mame/video/dietgo.cpp b/src/mame/video/dietgo.cpp
index 28dddd0315f..db2afdee85d 100644
--- a/src/mame/video/dietgo.cpp
+++ b/src/mame/video/dietgo.cpp
@@ -5,7 +5,7 @@
uint32_t dietgo_state::screen_update_dietgo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
diff --git a/src/mame/video/dkong.cpp b/src/mame/video/dkong.cpp
index 4eb1f54361d..91f5123ef53 100644
--- a/src/mame/video/dkong.cpp
+++ b/src/mame/video/dkong.cpp
@@ -708,7 +708,7 @@ void dkong_state::radarscp_step(int line_cnt)
*/
/* Now mix with SND02 (sound 2) line - on 74ls259, bit2 */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_rflip_sig = m_dev_6h->bit2_r(space, 0) & m_lfsr_5I;
/* blue background generation */
diff --git a/src/mame/video/fastlane.cpp b/src/mame/video/fastlane.cpp
index ffce0ad3613..94add71d39b 100644
--- a/src/mame/video/fastlane.cpp
+++ b/src/mame/video/fastlane.cpp
@@ -139,7 +139,7 @@ uint32_t fastlane_state::screen_update_fastlane(screen_device &screen, bitmap_in
finalclip1 &= cliprect;
/* set scroll registers */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
xoffs = m_k007121->ctrlram_r(space, 0);
for (i = 0; i < 32; i++)
m_layer0->set_scrollx(i, m_k007121_regs[0x20 + i] + xoffs - 40);
diff --git a/src/mame/video/flkatck.cpp b/src/mame/video/flkatck.cpp
index 40aa4928999..e2ca207badf 100644
--- a/src/mame/video/flkatck.cpp
+++ b/src/mame/video/flkatck.cpp
@@ -129,7 +129,7 @@ uint32_t flkatck_state::screen_update_flkatck(screen_device &screen, bitmap_ind1
rectangle clip[2];
const rectangle &visarea = screen.visible_area();
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
if (m_flipscreen)
{
clip[0] = visarea;
diff --git a/src/mame/video/funkyjet.cpp b/src/mame/video/funkyjet.cpp
index a2838d86176..f18380faaf2 100644
--- a/src/mame/video/funkyjet.cpp
+++ b/src/mame/video/funkyjet.cpp
@@ -13,7 +13,7 @@
uint32_t funkyjet_state::screen_update_funkyjet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
diff --git a/src/mame/video/gradius3.cpp b/src/mame/video/gradius3.cpp
index 79def9f9175..762be53a29f 100644
--- a/src/mame/video/gradius3.cpp
+++ b/src/mame/video/gradius3.cpp
@@ -98,7 +98,7 @@ WRITE16_MEMBER(gradius3_state::gradius3_gfxram_w)
uint32_t gradius3_state::screen_update_gradius3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* TODO: this kludge enforces the char banks. For some reason, they don't work otherwise. */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_k052109->write(space, 0x1d80, 0x10);
m_k052109->write(space, 0x1f00, 0x32);
diff --git a/src/mame/video/groundfx.cpp b/src/mame/video/groundfx.cpp
index dd3dd01bbfd..d6444f792bc 100644
--- a/src/mame/video/groundfx.cpp
+++ b/src/mame/video/groundfx.cpp
@@ -197,7 +197,7 @@ void groundfx_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
uint32_t groundfx_state::screen_update_groundfx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t layer[5];
uint8_t scclayer[3];
uint16_t priority;
diff --git a/src/mame/video/gtia.cpp b/src/mame/video/gtia.cpp
index 8dfd8b4c5c6..6b7162da6a7 100644
--- a/src/mame/video/gtia.cpp
+++ b/src/mame/video/gtia.cpp
@@ -250,7 +250,7 @@ void gtia_device::device_reset()
/* reset the GTIA read/write/helper registers */
for (int i = 0; i < 32; i++)
- write(machine().driver_data()->generic_space(), i, 0);
+ write(machine().dummy_space(), i, 0);
if (is_ntsc())
m_r.pal = 0xff;
diff --git a/src/mame/video/hcastle.cpp b/src/mame/video/hcastle.cpp
index 0fe7390a66b..998334b32e6 100644
--- a/src/mame/video/hcastle.cpp
+++ b/src/mame/video/hcastle.cpp
@@ -182,7 +182,7 @@ WRITE8_MEMBER(hcastle_state::hcastle_pf2_control_w)
void hcastle_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, uint8_t *sbank, int bank )
{
k007121_device *k007121 = bank ? m_k007121_2 : m_k007121_1;
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
int base_color = (k007121->ctrlram_r(space, 6) & 0x30) * 2;
int bank_base = (bank == 0) ? 0x4000 * (m_gfx_bank & 1) : 0;
@@ -193,7 +193,7 @@ void hcastle_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
uint32_t hcastle_state::screen_update_hcastle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t ctrl_1_0 = m_k007121_1->ctrlram_r(space, 0);
uint8_t ctrl_1_1 = m_k007121_1->ctrlram_r(space, 1);
diff --git a/src/mame/video/labyrunr.cpp b/src/mame/video/labyrunr.cpp
index dbae3a8f523..9f6bcb1deed 100644
--- a/src/mame/video/labyrunr.cpp
+++ b/src/mame/video/labyrunr.cpp
@@ -158,7 +158,7 @@ WRITE8_MEMBER(labyrunr_state::labyrunr_vram2_w)
uint32_t labyrunr_state::screen_update_labyrunr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t ctrl_0 = m_k007121->ctrlram_r(space, 0);
rectangle finalclip0, finalclip1;
diff --git a/src/mame/video/model2.cpp b/src/mame/video/model2.cpp
index 205955beaa0..b6ce47a42d2 100644
--- a/src/mame/video/model2.cpp
+++ b/src/mame/video/model2.cpp
@@ -275,13 +275,11 @@ struct raster_state
*
*******************************************/
-static void model2_3d_init( running_machine &machine, uint16_t *texture_rom )
+void model2_state::model2_3d_init( uint16_t *texture_rom )
{
- model2_state *state = machine.driver_data<model2_state>();
+ m_raster = auto_alloc_clear(machine(), <raster_state>());
- state->m_raster = auto_alloc_clear( machine, <raster_state>() );
-
- state->m_raster->texture_rom = texture_rom;
+ m_raster->texture_rom = texture_rom;
}
/*******************************************
@@ -290,10 +288,9 @@ static void model2_3d_init( running_machine &machine, uint16_t *texture_rom )
*
*******************************************/
-void model2_3d_set_zclip( running_machine &machine, uint8_t clip )
+WRITE32_MEMBER(model2_state::model2_3d_zclip_w)
{
- model2_state *state = machine.driver_data<model2_state>();
- state->m_raster->master_z_clip = clip;
+ m_raster->master_z_clip = data;
}
/*******************************************
@@ -1194,14 +1191,13 @@ struct geo_state
*
*******************************************/
-static void geo_init( running_machine &machine, uint32_t *polygon_rom )
+void model2_state::geo_init( uint32_t *polygon_rom )
{
- model2_state *state = machine.driver_data<model2_state>();
- state->m_geo = auto_alloc_clear(machine, <geo_state>());
- state->m_geo->state = state;
+ m_geo = auto_alloc_clear(machine(), <geo_state>());
+ m_geo->state = this;
- state->m_geo->raster = state->m_raster;
- state->m_geo->polygon_rom = polygon_rom;
+ m_geo->raster = m_raster;
+ m_geo->polygon_rom = polygon_rom;
}
/*******************************************
@@ -2595,10 +2591,10 @@ VIDEO_START_MEMBER(model2_state,model2)
m_poly = auto_alloc(machine(), model2_renderer(*this));
/* initialize the hardware rasterizer */
- model2_3d_init( machine(), (uint16_t*)memregion("user3")->base() );
+ model2_3d_init( (uint16_t*)memregion("user3")->base() );
/* initialize the geometry engine */
- geo_init( machine(), (uint32_t*)memregion("user2")->base() );
+ geo_init( (uint32_t*)memregion("user2")->base() );
/* init various video-related pointers */
m_palram = make_unique_clear<uint16_t[]>(0x2000);
diff --git a/src/mame/video/pktgaldx.cpp b/src/mame/video/pktgaldx.cpp
index 3542ceac7de..0e3a39022f4 100644
--- a/src/mame/video/pktgaldx.cpp
+++ b/src/mame/video/pktgaldx.cpp
@@ -7,7 +7,7 @@
uint32_t pktgaldx_state::screen_update_pktgaldx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
diff --git a/src/mame/video/rohga.cpp b/src/mame/video/rohga.cpp
index 15a4ab12498..73886784c1b 100644
--- a/src/mame/video/rohga.cpp
+++ b/src/mame/video/rohga.cpp
@@ -21,7 +21,7 @@ WRITE16_MEMBER(rohga_state::rohga_buffer_spriteram16_w)
uint32_t rohga_state::screen_update_rohga(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
uint16_t priority = m_decocomn->priority_r(space, 0, 0xffff);
@@ -124,7 +124,7 @@ void rohga_state::mixwizdfirelayer(bitmap_rgb32 &bitmap, const rectangle &clipre
uint32_t rohga_state::screen_update_wizdfire(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
uint16_t priority = m_decocomn->priority_r(space, 0, 0xffff);
@@ -160,7 +160,7 @@ uint32_t rohga_state::screen_update_wizdfire(screen_device &screen, bitmap_rgb32
uint32_t rohga_state::screen_update_nitrobal(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
/* draw sprite gfx to temp bitmaps */
diff --git a/src/mame/video/slapshot.cpp b/src/mame/video/slapshot.cpp
index ab40578ca9a..c58de8242e8 100644
--- a/src/mame/video/slapshot.cpp
+++ b/src/mame/video/slapshot.cpp
@@ -448,7 +448,7 @@ a bg layer given priority over some sprites.
uint32_t slapshot_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t layer[5];
uint8_t tilepri[5];
uint8_t spritepri[4];
diff --git a/src/mame/video/sprint4.cpp b/src/mame/video/sprint4.cpp
index ad909dd1b56..3ae0f5219c9 100644
--- a/src/mame/video/sprint4.cpp
+++ b/src/mame/video/sprint4.cpp
@@ -134,7 +134,7 @@ void sprint4_state::screen_eof_sprint4(screen_device &screen, bool state)
/* update sound status */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_discrete->write(space, SPRINT4_MOTOR_DATA_1, videoram[0x391] & 15);
m_discrete->write(space, SPRINT4_MOTOR_DATA_2, videoram[0x393] & 15);
m_discrete->write(space, SPRINT4_MOTOR_DATA_3, videoram[0x395] & 15);
diff --git a/src/mame/video/sshangha.cpp b/src/mame/video/sshangha.cpp
index 1c517929835..a586dfcb531 100644
--- a/src/mame/video/sshangha.cpp
+++ b/src/mame/video/sshangha.cpp
@@ -39,7 +39,7 @@ uint32_t sshangha_state::screen_update_sshangha(screen_device &screen, bitmap_rg
m_sprgen2->draw_sprites(bitmap, cliprect, m_spriteram2, 0x800, true);
// flip screen
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
diff --git a/src/mame/video/subs.cpp b/src/mame/video/subs.cpp
index 2dffdcf4f9c..513ab9ff8c6 100644
--- a/src/mame/video/subs.cpp
+++ b/src/mame/video/subs.cpp
@@ -109,7 +109,7 @@ uint32_t subs_state::screen_update_left(screen_device &screen, bitmap_ind16 &bit
}
/* Update sound */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_discrete->write(space, SUBS_LAUNCH_DATA, m_spriteram[5] & 0x0f); // Launch data
m_discrete->write(space, SUBS_CRASH_DATA, m_spriteram[5] >> 4); // Crash/explode data
return 0;
diff --git a/src/mame/video/supbtime.cpp b/src/mame/video/supbtime.cpp
index aa85a40328b..95ae2ce5c9c 100644
--- a/src/mame/video/supbtime.cpp
+++ b/src/mame/video/supbtime.cpp
@@ -24,7 +24,7 @@ End sequence uses rowscroll '98 c0' on pf1 (jmp to 1d61a on supbtimj)
uint32_t supbtime_state::screen_update_supbtime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
diff --git a/src/mame/video/taito_b.cpp b/src/mame/video/taito_b.cpp
index a70ed366489..5935e46ba21 100644
--- a/src/mame/video/taito_b.cpp
+++ b/src/mame/video/taito_b.cpp
@@ -258,7 +258,7 @@ void taitob_state::draw_framebuffer( bitmap_ind16 &bitmap, const rectangle &clip
{
rectangle myclip = cliprect;
int x, y;
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t video_control = m_tc0180vcu->get_videoctrl(space, 0);
uint8_t framebuffer_page = m_tc0180vcu->get_fb_page(space, 0);
@@ -361,7 +361,7 @@ g_profiler.stop();
uint32_t taitob_state::screen_update_taitob(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t video_control = m_tc0180vcu->get_videoctrl(space, 0);
if ((video_control & 0x20) == 0)
@@ -397,7 +397,7 @@ uint32_t taitob_state::screen_update_taitob(screen_device &screen, bitmap_ind16
uint32_t taitob_state::screen_update_realpunc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
const pen_t *palette = m_palette->pens();
uint8_t video_control = m_tc0180vcu->get_videoctrl(space, 0);
int x, y;
@@ -486,7 +486,7 @@ void taitob_state::screen_eof_taitob(screen_device &screen, bool state)
// rising edge
if (state)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t video_control = m_tc0180vcu->get_videoctrl(space, 0);
uint8_t framebuffer_page = m_tc0180vcu->get_fb_page(space, 0);
diff --git a/src/mame/video/taito_f2.cpp b/src/mame/video/taito_f2.cpp
index c8a9da5844f..4600a3afa18 100644
--- a/src/mame/video/taito_f2.cpp
+++ b/src/mame/video/taito_f2.cpp
@@ -1016,7 +1016,7 @@ uint32_t taitof2_state::screen_update_taitof2(screen_device &screen, bitmap_ind1
uint32_t taitof2_state::screen_update_taitof2_pri(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
int layer[3];
taitof2_handle_sprite_buffering();
@@ -1061,7 +1061,7 @@ void taitof2_state::draw_roz_layer( screen_device &screen, bitmap_ind16 &bitmap,
uint32_t taitof2_state::screen_update_taitof2_pri_roz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
int tilepri[3];
int rozpri;
int layer[3];
@@ -1130,7 +1130,7 @@ uint32_t taitof2_state::screen_update_taitof2_pri_roz(screen_device &screen, bit
/* Thunderfox */
uint32_t taitof2_state::screen_update_taitof2_thundfox(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
int tilepri[2][3];
int spritepri[4];
int layer[2][3];
@@ -1267,7 +1267,7 @@ and it changes these (and the sprite pri settings) a lot.
uint32_t taitof2_state::screen_update_taitof2_metalb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t layer[5], invlayer[4];
uint16_t priority;
@@ -1318,7 +1318,7 @@ uint32_t taitof2_state::screen_update_taitof2_metalb(screen_device &screen, bitm
/* Deadconx, Footchmp */
uint32_t taitof2_state::screen_update_taitof2_deadconx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t layer[5];
uint8_t tilepri[5];
uint8_t spritepri[4];
diff --git a/src/mame/video/taito_h.cpp b/src/mame/video/taito_h.cpp
index d8ff7e48e79..b8384c36aef 100644
--- a/src/mame/video/taito_h.cpp
+++ b/src/mame/video/taito_h.cpp
@@ -76,7 +76,7 @@ void taitoh_state::syvalion_draw_sprites( bitmap_ind16 &bitmap, const rectangle
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
static const int size[] = { 1, 2, 4, 4 };
int x0, y0, x, y, dx, ex, zx;
int ysize;
@@ -169,7 +169,7 @@ void taitoh_state::recordbr_draw_sprites( bitmap_ind16 &bitmap, const rectangle
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
static const int size[] = { 1, 2, 4, 4 };
int x0, y0, x, y, dx, dy, ex, ey, zx, zy;
int ysize;
@@ -281,7 +281,7 @@ void taitoh_state::dleague_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
static const int size[] = { 1, 2, 4, 4 };
int x0, y0, x, y, dx, ex, zx;
int ysize;
diff --git a/src/mame/video/taito_o.cpp b/src/mame/video/taito_o.cpp
index 12c2197d6e7..6756262b41b 100644
--- a/src/mame/video/taito_o.cpp
+++ b/src/mame/video/taito_o.cpp
@@ -31,7 +31,7 @@ void taitoo_state::parentj_draw_sprites( bitmap_ind16 &bitmap, const rectangle &
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
static const int size[] = { 1, 2, 4, 4 };
int x0, y0, x, y, dx, dy, ex, ey, zx, zy;
int ysize;
diff --git a/src/mame/video/taitoair.cpp b/src/mame/video/taitoair.cpp
index 9c6e7d80aec..81597a912f1 100644
--- a/src/mame/video/taitoair.cpp
+++ b/src/mame/video/taitoair.cpp
@@ -84,7 +84,7 @@ int taitoair_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
/* Y chain size is 16/32?/64/64? pixels. X chain size
is always 64 pixels. */
//const uint16_t stop_values[4] = { 0xc00, 0, 0, 0 };
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
static const int size[] = { 1, 2, 4, 4 };
int x0, y0, x, y, dx, dy, ex, ey, zx, zy;
int ysize;
diff --git a/src/mame/video/triplhnt.cpp b/src/mame/video/triplhnt.cpp
index 93a46f5bce6..b4d2be82e17 100644
--- a/src/mame/video/triplhnt.cpp
+++ b/src/mame/video/triplhnt.cpp
@@ -119,7 +119,7 @@ uint32_t triplhnt_state::screen_update_triplhnt(screen_device &screen, bitmap_in
draw_sprites(bitmap, cliprect);
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_discrete->write(space, TRIPLHNT_BEAR_ROAR_DATA, m_playfield_ram[0xfa] & 15);
m_discrete->write(space, TRIPLHNT_SHOT_DATA, m_playfield_ram[0xfc] & 15);
return 0;
diff --git a/src/mame/video/tumblep.cpp b/src/mame/video/tumblep.cpp
index 2fdf832e4b7..ee209b12120 100644
--- a/src/mame/video/tumblep.cpp
+++ b/src/mame/video/tumblep.cpp
@@ -21,7 +21,7 @@ to switch between 8*8 tiles and 16*16 tiles.
uint32_t tumblep_state::screen_update_tumblep(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
flip_screen_set(BIT(flip, 7));
diff --git a/src/mame/video/ultratnk.cpp b/src/mame/video/ultratnk.cpp
index 810a7017cb3..48a207f1e96 100644
--- a/src/mame/video/ultratnk.cpp
+++ b/src/mame/video/ultratnk.cpp
@@ -139,7 +139,7 @@ void ultratnk_state::screen_eof_ultratnk(screen_device &screen, bool state)
/* update sound status */
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
m_discrete->write(space, ULTRATNK_MOTOR_DATA_1, videoram[0x391] & 15);
m_discrete->write(space, ULTRATNK_MOTOR_DATA_2, videoram[0x393] & 15);
}
diff --git a/src/mame/video/undrfire.cpp b/src/mame/video/undrfire.cpp
index f129e4d54ba..c14c66328d7 100644
--- a/src/mame/video/undrfire.cpp
+++ b/src/mame/video/undrfire.cpp
@@ -347,7 +347,7 @@ void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &
uint32_t undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t layer[5];
uint8_t scclayer[3];
uint16_t priority;
@@ -488,7 +488,7 @@ uint32_t undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_in
uint32_t undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint8_t layer[5];
uint8_t scclayer[3];
uint16_t priority;
diff --git a/src/mame/video/vaportra.cpp b/src/mame/video/vaportra.cpp
index 6c1c3ff02b7..56ff437dbb3 100644
--- a/src/mame/video/vaportra.cpp
+++ b/src/mame/video/vaportra.cpp
@@ -51,7 +51,7 @@ WRITE16_MEMBER(vaportra_state::vaportra_palette_24bit_b_w)
uint32_t vaportra_state::screen_update_vaportra(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff);
int pri = m_priority[0] & 0x03;
diff --git a/src/mame/video/xmen.cpp b/src/mame/video/xmen.cpp
index 8931559b038..9cc6991194b 100644
--- a/src/mame/video/xmen.cpp
+++ b/src/mame/video/xmen.cpp
@@ -151,7 +151,7 @@ void xmen_state::screen_eof_xmen6p(screen_device &screen, bool state)
cliprect.set(0, 64 * 8 - 1, 2 * 8, 30 * 8 - 1);
- address_space &space = machine().driver_data()->generic_space();
+ address_space &space = machine().dummy_space();
if (m_screen->frame_number() & 0x01)
{
/* copy the desired spritelist to the chip */