mirror of
https://github.com/holub/mame
synced 2025-07-06 18:39:28 +03:00
Merge remote-tracking branch 'origin/master' into netlist_dev
This commit is contained in:
commit
e67b71e671
@ -1415,9 +1415,9 @@ void ImGui::ShowTestWindow(bool* p_open)
|
||||
ImGui::InputFloat("blue", &bar, 0.05f, 0, 3);
|
||||
ImGui::NextColumn();
|
||||
|
||||
if (ImGui::CollapsingHeader("Category A")) ImGui::Text("Blah blah blah"); ImGui::NextColumn();
|
||||
if (ImGui::CollapsingHeader("Category B")) ImGui::Text("Blah blah blah"); ImGui::NextColumn();
|
||||
if (ImGui::CollapsingHeader("Category C")) ImGui::Text("Blah blah blah"); ImGui::NextColumn();
|
||||
if (ImGui::CollapsingHeader("Category A")) { ImGui::Text("Blah blah blah"); } ImGui::NextColumn();
|
||||
if (ImGui::CollapsingHeader("Category B")) { ImGui::Text("Blah blah blah"); } ImGui::NextColumn();
|
||||
if (ImGui::CollapsingHeader("Category C")) { ImGui::Text("Blah blah blah"); } ImGui::NextColumn();
|
||||
ImGui::Columns(1);
|
||||
ImGui::Separator();
|
||||
ImGui::TreePop();
|
||||
@ -1873,9 +1873,9 @@ static void ShowExampleAppConstrainedResize(bool* p_open)
|
||||
"Custom: Fixed Steps (100)",
|
||||
};
|
||||
ImGui::Combo("Constraint", &type, desc, IM_ARRAYSIZE(desc));
|
||||
if (ImGui::Button("200x200")) ImGui::SetWindowSize(ImVec2(200,200)); ImGui::SameLine();
|
||||
if (ImGui::Button("500x500")) ImGui::SetWindowSize(ImVec2(500,500)); ImGui::SameLine();
|
||||
if (ImGui::Button("800x200")) ImGui::SetWindowSize(ImVec2(800,200));
|
||||
if (ImGui::Button("200x200")) { ImGui::SetWindowSize(ImVec2(200,200)); } ImGui::SameLine();
|
||||
if (ImGui::Button("500x500")) { ImGui::SetWindowSize(ImVec2(500,500)); } ImGui::SameLine();
|
||||
if (ImGui::Button("800x200")) { ImGui::SetWindowSize(ImVec2(800,200)); }
|
||||
for (int i = 0; i < 10; i++)
|
||||
ImGui::Text("Hello, sailor! Making this line long enough for the example.");
|
||||
}
|
||||
@ -2088,8 +2088,8 @@ struct ExampleAppConsole
|
||||
// TODO: display items starting from the bottom
|
||||
|
||||
if (ImGui::SmallButton("Add Dummy Text")) { AddLog("%d some text", Items.Size); AddLog("some more text"); AddLog("display very important message here!"); } ImGui::SameLine();
|
||||
if (ImGui::SmallButton("Add Dummy Error")) AddLog("[error] something went wrong"); ImGui::SameLine();
|
||||
if (ImGui::SmallButton("Clear")) ClearLog(); ImGui::SameLine();
|
||||
if (ImGui::SmallButton("Add Dummy Error")) { AddLog("[error] something went wrong"); } ImGui::SameLine();
|
||||
if (ImGui::SmallButton("Clear")) { ClearLog(); } ImGui::SameLine();
|
||||
if (ImGui::SmallButton("Scroll to bottom")) ScrollToBottom = true;
|
||||
//static float t = 0.0f; if (ImGui::GetTime() - t > 0.02f) { t = ImGui::GetTime(); AddLog("Spam %f", t); }
|
||||
|
||||
@ -2143,7 +2143,7 @@ struct ExampleAppConsole
|
||||
if (ImGui::InputText("Input", InputBuf, IM_ARRAYSIZE(InputBuf), ImGuiInputTextFlags_EnterReturnsTrue|ImGuiInputTextFlags_CallbackCompletion|ImGuiInputTextFlags_CallbackHistory, &TextEditCallbackStub, (void*)this))
|
||||
{
|
||||
char* input_end = InputBuf+strlen(InputBuf);
|
||||
while (input_end > InputBuf && input_end[-1] == ' ') input_end--; *input_end = 0;
|
||||
while (input_end > InputBuf && input_end[-1] == ' ') { input_end--; } *input_end = 0;
|
||||
if (InputBuf[0])
|
||||
ExecCommand(InputBuf);
|
||||
strcpy(InputBuf, "");
|
||||
|
50
3rdparty/bgfx/3rdparty/stb/stb_image.c
vendored
50
3rdparty/bgfx/3rdparty/stb/stb_image.c
vendored
@ -1375,18 +1375,18 @@ static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int r
|
||||
// convert source image with img_n components to one with req_comp components;
|
||||
// avoid switch per pixel, so use switch per scanline and massive macros
|
||||
switch (COMBO(img_n, req_comp)) {
|
||||
CASE(1,2) dest[0]=src[0], dest[1]=255; break;
|
||||
CASE(1,3) dest[0]=dest[1]=dest[2]=src[0]; break;
|
||||
CASE(1,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; break;
|
||||
CASE(2,1) dest[0]=src[0]; break;
|
||||
CASE(2,3) dest[0]=dest[1]=dest[2]=src[0]; break;
|
||||
CASE(2,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; break;
|
||||
CASE(3,4) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; break;
|
||||
CASE(3,1) dest[0]=stbi__compute_y(src[0],src[1],src[2]); break;
|
||||
CASE(3,2) dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; break;
|
||||
CASE(4,1) dest[0]=stbi__compute_y(src[0],src[1],src[2]); break;
|
||||
CASE(4,2) dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; break;
|
||||
CASE(4,3) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; break;
|
||||
CASE(1,2) { dest[0]=src[0]; dest[1]=255; } break;
|
||||
CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break;
|
||||
CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255; } break;
|
||||
CASE(2,1) { dest[0]=src[0]; } break;
|
||||
CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break;
|
||||
CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break;
|
||||
CASE(3,4) { dest[0]=src[0]; dest[1]=src[1]; dest[2]=src[2]; dest[3]=255; } break;
|
||||
CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break;
|
||||
CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255; } break;
|
||||
CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break;
|
||||
CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break;
|
||||
CASE(4,3) { dest[0]=src[0]; dest[1]=src[1]; dest[2]=src[2]; } break;
|
||||
default: STBI_ASSERT(0);
|
||||
}
|
||||
#undef CASE
|
||||
@ -4101,12 +4101,12 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r
|
||||
switch (filter) {
|
||||
// "none" filter turns into a memcpy here; make that explicit.
|
||||
case STBI__F_none: memcpy(cur, raw, nk); break;
|
||||
CASE(STBI__F_sub) cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); break;
|
||||
CASE(STBI__F_up) cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break;
|
||||
CASE(STBI__F_avg) cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); break;
|
||||
CASE(STBI__F_paeth) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); break;
|
||||
CASE(STBI__F_avg_first) cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); break;
|
||||
CASE(STBI__F_paeth_first) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); break;
|
||||
CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break;
|
||||
CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;
|
||||
CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break;
|
||||
CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break;
|
||||
CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break;
|
||||
CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break;
|
||||
}
|
||||
#undef CASE
|
||||
raw += nk;
|
||||
@ -4117,13 +4117,13 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r
|
||||
for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \
|
||||
for (k=0; k < filter_bytes; ++k)
|
||||
switch (filter) {
|
||||
CASE(STBI__F_none) cur[k] = raw[k]; break;
|
||||
CASE(STBI__F_sub) cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); break;
|
||||
CASE(STBI__F_up) cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break;
|
||||
CASE(STBI__F_avg) cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); break;
|
||||
CASE(STBI__F_paeth) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); break;
|
||||
CASE(STBI__F_avg_first) cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); break;
|
||||
CASE(STBI__F_paeth_first) cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); break;
|
||||
CASE(STBI__F_none) { cur[k] = raw[k]; } break;
|
||||
CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break;
|
||||
CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;
|
||||
CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break;
|
||||
CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break;
|
||||
CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break;
|
||||
CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break;
|
||||
}
|
||||
#undef CASE
|
||||
|
||||
|
11
3rdparty/genie/src/_premake_main.lua
vendored
11
3rdparty/genie/src/_premake_main.lua
vendored
@ -4,6 +4,7 @@
|
||||
-- Copyright (c) 2002-2011 Jason Perkins and the Premake project
|
||||
--
|
||||
|
||||
|
||||
_WORKING_DIR = os.getcwd()
|
||||
|
||||
|
||||
@ -151,19 +152,11 @@
|
||||
ok, err = premake.checkprojects()
|
||||
if (not ok) then error("Error: " .. err, 0) end
|
||||
|
||||
premake.stats = { }
|
||||
|
||||
premake.stats.num_generated = 0
|
||||
premake.stats.num_skipped = 0
|
||||
|
||||
-- Hand over control to the action
|
||||
printf("Running action '%s'...", action.trigger)
|
||||
premake.action.call(action.trigger)
|
||||
|
||||
printf("Done. Generated %d/%d projects."
|
||||
, premake.stats.num_generated
|
||||
, premake.stats.num_generated+premake.stats.num_skipped
|
||||
)
|
||||
print("Done.")
|
||||
return 0
|
||||
|
||||
end
|
||||
|
40
3rdparty/genie/src/base/premake.lua
vendored
40
3rdparty/genie/src/base/premake.lua
vendored
@ -22,46 +22,18 @@
|
||||
|
||||
function premake.generate(obj, filename, callback)
|
||||
filename = premake.project.getfilename(obj, filename)
|
||||
printf("Generating %s...", filename)
|
||||
|
||||
io.capture()
|
||||
callback(obj)
|
||||
local new = io.endcapture()
|
||||
|
||||
local delta = false
|
||||
|
||||
local f, err = io.open(filename, "rb")
|
||||
local f, err = io.open(filename, "wb")
|
||||
if (not f) then
|
||||
if string.find(err, "No such file or directory") then
|
||||
delta = true
|
||||
else
|
||||
error(err, 0)
|
||||
end
|
||||
else
|
||||
local existing = f:read("*all")
|
||||
if existing ~= new then
|
||||
delta = true
|
||||
end
|
||||
f:close()
|
||||
error(err, 0)
|
||||
end
|
||||
|
||||
if delta then
|
||||
printf("Generating %s...", filename)
|
||||
local f, err = io.open(filename, "wb")
|
||||
if (not f) then
|
||||
error(err, 0)
|
||||
end
|
||||
|
||||
f:write(new)
|
||||
f:close()
|
||||
|
||||
premake.stats.num_generated = premake.stats.num_generated + 1
|
||||
else
|
||||
-- printf("Skipping %s as its contents would not change.", filename)
|
||||
premake.stats.num_skipped = premake.stats.num_skipped + 1
|
||||
end
|
||||
io.output(f)
|
||||
callback(obj)
|
||||
f:close()
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Finds a valid premake build file in the specified directory
|
||||
-- Used by both the main genie process, and include commands
|
||||
|
5
3rdparty/genie/src/host/scripts.c
vendored
5
3rdparty/genie/src/host/scripts.c
vendored
@ -171,8 +171,7 @@ const char* builtin_scripts[] = {
|
||||
"function premake.showhelp()\nprintf(\"\")\nprintf(\"Usage: genie [options] action [arguments]\")\nprintf(\"\")\nprintf(\"OPTIONS\")\nprintf(\"\")\nfor option in premake.option.each() do\nlocal trigger = option.trigger\nlocal description = option.description\nif (option.value) then trigger = trigger .. \"=\" .. option.value end\nif (option.allowed) then description = description .. \"; one of:\" end\nprintf(\" --%-15s %s\", trigger, description)\nif (option.allowed) then\nfor _, value in ipairs(option.allowed) do\nprintf(\" %-14s %s\", value[1], value[2])\nend\nend\nprintf(\"\")\nend\nprintf(\"ACTIONS\")\nprintf(\"\")\nfor action in premake.action.each() do\nprintf(\" %-17s %s\", action.trigger, action.description)\nend\nprintf(\"\")\nprintf(\"For additional information, see https://github.com/bkaradzic/genie\")\nend\n",
|
||||
|
||||
/* base/premake.lua */
|
||||
"premake._filelevelconfig = false\nfunction premake.generate(obj, filename, callback)\nfilename = premake.project.getfilename(obj, filename)\nio.capture()\ncallback(obj)\nlocal new = io.endcapture()\nlocal delta = false\nlocal f, err = io.open(filename, \"rb\")\nif (not f) then\nif string.find(err, \"No such file or directory\") then\ndelta = true\nelse\nerror(err, 0)\nend\nelse\nlocal existing = f:read(\"*all\")\nif existing ~= new then\ndelta = true\nend\nf:close()\nend\nif delta then\nprintf(\"Generating %s...\", filename)\nlocal f, err = io.open(filename, \"wb\")\nif (not f) then\nerror(err, 0)\nend\nf:write(new)\nf:close()\npremake.stats.num_generated = premake.stats.num_generated + 1\nelse\npremake.stats.num_skipped = premake.stats.num_skipped + 1\nend\nend\nfunction premake.findDefaultScript(dir, search_upwards)\nsearch_upwards = search_upwards or true\nlocal last = \"\"\nwhile dir ~= last do\nfor _, name in ipairs({ \"genie.lua\", \"solution.lua\", \"premake4.lua\" }) do\nlocal script0 = dir .. \"/\" .."
|
||||
" name\nif (os.isfile(script0)) then\nreturn dir, name\nend\nlocal script1 = dir .. \"/scripts/\" .. name\nif (os.isfile(script1)) then\nreturn dir .. \"/scripts/\", name\nend\nend\nlast = dir\ndir = path.getabsolute(dir .. \"/..\")\nif dir == \".\" or not search_upwards then break end\nend\nreturn nil, nil\nend\n",
|
||||
"premake._filelevelconfig = false\nfunction premake.generate(obj, filename, callback)\nfilename = premake.project.getfilename(obj, filename)\nprintf(\"Generating %s...\", filename)\nlocal f, err = io.open(filename, \"wb\")\nif (not f) then\nerror(err, 0)\nend\nio.output(f)\ncallback(obj)\nf:close()\nend\nfunction premake.findDefaultScript(dir, search_upwards)\nsearch_upwards = search_upwards or true\nlocal last = \"\"\nwhile dir ~= last do\nfor _, name in ipairs({ \"genie.lua\", \"solution.lua\", \"premake4.lua\" }) do\nlocal script0 = dir .. \"/\" .. name\nif (os.isfile(script0)) then\nreturn dir, name\nend\nlocal script1 = dir .. \"/scripts/\" .. name\nif (os.isfile(script1)) then\nreturn dir .. \"/scripts/\", name\nend\nend\nlast = dir\ndir = path.getabsolute(dir .. \"/..\")\nif dir == \".\" or not search_upwards then break end\nend\nreturn nil, nil\nend\n",
|
||||
|
||||
/* base/iter.lua */
|
||||
"iter = {}\nfunction iter.sortByKeys(arr, f)\nlocal a = table.keys(arr)\ntable.sort(a, f)\nlocal i = 0\nreturn function()\ni = i + 1\nif a[i] ~= nil then \nreturn a[i], arr[a[i]]\nend\nend\nend\n",
|
||||
@ -454,7 +453,7 @@ const char* builtin_scripts[] = {
|
||||
/* _premake_main.lua */
|
||||
"_WORKING_DIR = os.getcwd()\nlocal function injectplatform(platform)\nif not platform then return true end\nplatform = premake.checkvalue(platform, premake.fields.platforms.allowed)\nfor sln in premake.solution.each() do\nlocal platforms = sln.platforms or { }\nif #platforms == 0 then\ntable.insert(platforms, \"Native\")\nend\nif not table.contains(platforms, \"Native\") then\nreturn false, sln.name .. \" does not target native platform\\nNative platform settings are required for the --platform feature.\"\nend\nif not table.contains(platforms, platform) then\ntable.insert(platforms, platform)\nend\nsln.platforms = platforms\nend\nreturn true\nend\nfunction _premake_main(scriptpath)\nif (scriptpath) then\nlocal scripts = dofile(scriptpath .. \"/_manifest.lua\")\nfor _,v in ipairs(scripts) do\ndofile(scriptpath .. \"/\" .. v)\nend\nend\n_PREMAKE_COMMAND = path.getabsolute(_PREMAKE_COMMAND)\npremake.action.set(_ACTION)\nmath.randomseed(os.time())\nif (nil ~= _OPTIONS[\"file\"]) then\nlocal fname = _OPTIONS"
|
||||
"[\"file\"]\nif (os.isfile(fname)) then\ndofile(fname)\nelse\nerror(\"No genie script '\" .. fname .. \"' found!\", 2)\nend\nelse\nlocal dir, name = premake.findDefaultScript(path.getabsolute(\"./\"))\nif dir ~= nil then\nos.chdir(dir)\ndofile(name)\nend\nend\nif (_OPTIONS[\"version\"] or _OPTIONS[\"help\"] or not _ACTION) then\nprintf(\"GENie - Project generator tool %s\", _GENIE_VERSION_STR)\nprintf(\"https://github.com/bkaradzic/GENie\")\nif (not _OPTIONS[\"version\"]) then\npremake.showhelp()\nend\nreturn 1\nend\naction = premake.action.current()\nif (not action) then\nerror(\"Error: no such action '\" .. _ACTION .. \"'\", 0)\nend\nok, err = premake.option.validate(_OPTIONS)\nif (not ok) then error(\"Error: \" .. err, 0) end\nok, err = premake.checktools()\nif (not ok) then error(\"Error: \" .. err, 0) end\nok, err = injectplatform(_OPTIONS[\"platform\"])\nif (not ok) then error(\"Error: \" .. err, 0) end\nlocal profiler = newProfiler()\nif (nil ~= _OPTIONS[\"debug-profiler\"]) then\nprofiler:start()\nend\n"
|
||||
"print(\"Building configurations...\")\npremake.bake.buildconfigs()\nif (nil ~= _OPTIONS[\"debug-profiler\"]) then\nprofiler:stop()\nlocal filePath = path.getabsolute(\"GENie-profiler-bake.txt\")\nprint(\"Writing debug-profiler report \" .. filePath .. \".\")\nlocal outfile = io.open(filePath, \"w+\")\nprofiler:report(outfile)\noutfile:close()\nend\nok, err = premake.checkprojects()\nif (not ok) then error(\"Error: \" .. err, 0) end\npremake.stats = { }\npremake.stats.num_generated = 0\npremake.stats.num_skipped = 0\nprintf(\"Running action '%s'...\", action.trigger)\npremake.action.call(action.trigger)\nprintf(\"Done. Generated %d/%d projects.\"\n, premake.stats.num_generated\n, premake.stats.num_generated+premake.stats.num_skipped\n)\nreturn 0\nend\n",
|
||||
"print(\"Building configurations...\")\npremake.bake.buildconfigs()\nif (nil ~= _OPTIONS[\"debug-profiler\"]) then\nprofiler:stop()\nlocal filePath = path.getabsolute(\"GENie-profiler-bake.txt\")\nprint(\"Writing debug-profiler report \" .. filePath .. \".\")\nlocal outfile = io.open(filePath, \"w+\")\nprofiler:report(outfile)\noutfile:close()\nend\nok, err = premake.checkprojects()\nif (not ok) then error(\"Error: \" .. err, 0) end\nprintf(\"Running action '%s'...\", action.trigger)\npremake.action.call(action.trigger)\nprint(\"Done.\")\nreturn 0\nend\n",
|
||||
|
||||
0
|
||||
};
|
||||
|
3485
hash/cdi.xml
3485
hash/cdi.xml
File diff suppressed because it is too large
Load Diff
@ -322,7 +322,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="3x3 Eyes - Sanjiyan Henjou.iso" size="165578788" crc="1a2395ea" sha1="005f8a9444cccb45a5f3ac38c20edb9a503faab7"/>
|
||||
<rom name="3x3 eyes - sanjiyan henjou.cue" size="87" crc="b30ce569" sha1="16a9005a30fac9a4684df886393e39f101f843e2"/>
|
||||
-->
|
||||
<description>3x3 Eyes: Sanjiyan Henjou</description>
|
||||
<description>3x3 Eyes - Sanjiyan Henjou</description>
|
||||
<year>1993</year>
|
||||
<publisher>日本クリエイト (Nihon Create)</publisher>
|
||||
<info name="release" value="199310xx" />
|
||||
@ -409,7 +409,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="The 4th Unit 1-2 - Linkage.img" size="292577040" crc="e52e5890" sha1="8f3d4eb225a4b5da34f40986d43f026f01f9e347"/>
|
||||
<rom name="The 4th Unit 1-2 - Linkage.sub" size="11941920" crc="b5d29977" sha1="c594da0071fada271ad2caa708b30cc9724f9616"/>
|
||||
-->
|
||||
<description>The 4th Unit 1-2 Towns: Linkage</description>
|
||||
<description>The 4th Unit 1-2 Towns - Linkage</description>
|
||||
<year>1989</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="198907xx" />
|
||||
@ -428,7 +428,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="The 4th Unit 3 - Dual Targets.img" size="180539520" crc="be6650ef" sha1="a3f9b4359118123a8b783cad76b6930de13ece07"/>
|
||||
<rom name="The 4th Unit 3 - Dual Targets.sub" size="7368960" crc="02a9e1a7" sha1="5258d1713b7088bd0fe0a01b06eb6e3001c07c45"/>
|
||||
-->
|
||||
<description>The 4th Unit 3: Dual Targets</description>
|
||||
<description>The 4th Unit 3 - Dual Targets</description>
|
||||
<year>1989</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="198911xx" />
|
||||
@ -447,7 +447,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="The 4th Unit 4 - Zero.img" size="334995360" crc="60aea3fe" sha1="7ba2c22fafc4c470005aee16f77dcba6fab48b7e"/>
|
||||
<rom name="The 4th Unit 4 - Zero.sub" size="13673280" crc="df9b7f1f" sha1="adf49681f66af20c85985fbab09286ed401f5f22"/>
|
||||
-->
|
||||
<description>The 4th Unit 4: Zero</description>
|
||||
<description>The 4th Unit 4 - Zero</description>
|
||||
<year>1989</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="198912xx" />
|
||||
@ -466,7 +466,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="The 4th Unit 5 - D-Again.img" size="371886480" crc="70c2e2bd" sha1="be920e5e1f1bfcb8492ecf06342029999ee088e2"/>
|
||||
<rom name="The 4th Unit 5 - D-Again.sub" size="15179040" crc="0e12788a" sha1="bacc25e3cda1f26b09a9fb4d17662975f5da05f8"/>
|
||||
-->
|
||||
<description>The 4th Unit 5: D-Again</description>
|
||||
<description>The 4th Unit 5 - D-Again</description>
|
||||
<year>1990</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199004xx" />
|
||||
@ -485,7 +485,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="The 4th Unit 6 - Merry-Go-Round.img" size="306964224" crc="e02f30f9" sha1="860ce4bafc860974f711889c2ccb4eb81e0c45f8"/>
|
||||
<rom name="The 4th Unit 6 - Merry-Go-Round.sub" size="12529152" crc="115531c6" sha1="7c90f76dc92aa503a5599d74226919f2c60b1c73"/>
|
||||
-->
|
||||
<description>The 4th Unit 6: Merry-Go-Round</description>
|
||||
<description>The 4th Unit 6 - Merry-Go-Round</description>
|
||||
<year>1990</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199012xx" />
|
||||
@ -504,7 +504,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="The 4th Unit 7 - Wyatt.img" size="579899712" crc="f6ff2208" sha1="2ca5d141a3f17c03362699dc032310d15a5ba6f7"/>
|
||||
<rom name="The 4th Unit 7 - Wyatt.sub" size="23669376" crc="a317d739" sha1="a7f01abfcea8b0a7b9bfee62e35136a2335fee27"/>
|
||||
-->
|
||||
<description>The 4th Unit 7: Wyatt</description>
|
||||
<description>The 4th Unit 7 - Wyatt</description>
|
||||
<year>1992</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199204xx" />
|
||||
@ -629,7 +629,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Abel.img" size="311764656" crc="c90bd8da" sha1="80e7940930b7c6330098e548a1cadd40bff29be9"/>
|
||||
<rom name="Abel.sub" size="12725088" crc="63e70daa" sha1="373a0ebfe67c903c61d04fcbb69f21a1bfcfa450"/>
|
||||
-->
|
||||
<description>Abel: Shin Mokushiroku Taisen</description>
|
||||
<description>Abel - Shin Mokushiroku Taisen</description>
|
||||
<year>1995</year>
|
||||
<publisher>ファミリーソフト (Family Soft)</publisher>
|
||||
<info name="release" value="199511xx" />
|
||||
@ -990,7 +990,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Aoki Ookami to Shiroki Mejika - Genchou Hishi.img" size="530387760" crc="18044a4e" sha1="c42c5bf43c64025e801046b847ae65f39ac592a6"/>
|
||||
<rom name="Aoki Ookami to Shiroki Mejika - Genchou Hishi.sub" size="21648480" crc="fa1cd6bf" sha1="93857a5c366722623dedf0e29d9a31fc6426ee6a"/>
|
||||
-->
|
||||
<description>Aoki Ookami to Shiroki Mejika: Genchou Hishi</description>
|
||||
<description>Aoki Ookami to Shiroki Mejika - Genchou Hishi</description>
|
||||
<year>1993</year>
|
||||
<publisher>光栄 (Koei)</publisher>
|
||||
<info name="release" value="199302xx" />
|
||||
@ -1332,7 +1332,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Blue - Will to Power.img" size="29282400" crc="af71e078" sha1="f5b4103b20f847bde4e9218879101e08c9669975"/>
|
||||
<rom name="Blue - Will to Power.sub" size="1195200" crc="a1b15f22" sha1="40ccdbd81c602ca69249b8dc960efff2a639a986"/>
|
||||
-->
|
||||
<description>Blue: Will to Power</description>
|
||||
<description>Blue - Will to Power</description>
|
||||
<year>1992</year>
|
||||
<publisher>Sofcom</publisher>
|
||||
<info name="release" value="199204xx" />
|
||||
@ -1349,7 +1349,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Bomberman - Panic Bomber.bin" size="189806400" crc="7ed8cc7a" sha1="65dd63bd618dfbdccd82bb7b5b7d6a024025a681"/>
|
||||
<rom name="Bomberman - Panic Bomber.cue" size="614" crc="f6601687" sha1="a926cc21f244c8558787735559cd6a86161344c3"/>
|
||||
-->
|
||||
<description>Bomberman: Panic Bomber</description>
|
||||
<description>Bomberman - Panic Bomber</description>
|
||||
<year>1995</year>
|
||||
<publisher>アスキー (ASCII)</publisher>
|
||||
<info name="release" value="199504xx" />
|
||||
@ -1501,7 +1501,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Tiny Steps - Cal Gaiden.img" size="194929056" crc="6f8b3267" sha1="6140d4655dc29b0631dd9afc37e798971e2e0cb3"/>
|
||||
<rom name="Tiny Steps - Cal Gaiden.sub" size="7956288" crc="b09a6744" sha1="f41121849b37ba69ee8dafc2996ae1142c9d7cf1"/>
|
||||
-->
|
||||
<description>Cal Gaiden: Tiny Steps Behind the Cal</description>
|
||||
<description>Cal Gaiden - Tiny Steps Behind the Cal</description>
|
||||
<year>1993</year>
|
||||
<publisher>バーディーソフト (Birdy Soft)</publisher>
|
||||
<info name="release" value="199307xx" />
|
||||
@ -1718,7 +1718,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="D.O. Kanshuu Premium Box - Touch My Heart.bin" size="610252272" crc="6a32d7dc" sha1="ecffb1505b683fefec7a3829c1ca5b9703b41db5"/>
|
||||
<rom name="D.O. Kanshuu Premium Box - Touch My Heart.cue" size="592" crc="aaf9a496" sha1="d2ce8e5f0a4df14f41fed42466c44f9968513bc1"/>
|
||||
-->
|
||||
<description>D.O. Kanshuu Premium Box: Touch My Heart</description>
|
||||
<description>D.O. Kanshuu Premium Box - Touch My Heart</description>
|
||||
<year>1995</year>
|
||||
<publisher>ディー・オー (D.O.)</publisher>
|
||||
<info name="release" value="199505xx" />
|
||||
@ -2040,7 +2040,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Desire.img" size="525627312" crc="eda711e8" sha1="2f6e316e60146a6a5b762d29b0cc4a210987c95c"/>
|
||||
<rom name="Desire.sub" size="21454176" crc="fea510bb" sha1="e5d36eba6a606b50d4459102e33f94dd9cca2111"/>
|
||||
-->
|
||||
<description>Desire: Haitoku no Rasen</description>
|
||||
<description>Desire - Haitoku no Rasen</description>
|
||||
<year>1994</year>
|
||||
<publisher>シーズウェア (C's Ware)</publisher>
|
||||
<info name="release" value="199411xx" />
|
||||
@ -2345,7 +2345,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Dungeon Master II - Skullkeep.img" size="196688352" crc="7100cde1" sha1="07cdb37aadb3962fe760611830d4386f17e60e48"/>
|
||||
<rom name="Dungeon Master II - Skullkeep.sub" size="8028096" crc="e050038e" sha1="d52107b7a6a8b4812dd7beff0314367f7abb6af8"/>
|
||||
-->
|
||||
<description>Dungeon Master II: Skullkeep</description>
|
||||
<description>Dungeon Master II - Skullkeep</description>
|
||||
<year>1994</year>
|
||||
<publisher>ビクター音楽産業 (Victor Musical Industries)</publisher>
|
||||
<info name="release" value="199401xx" />
|
||||
@ -2577,7 +2577,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Eye of the Beholder II.img" size="313110000" crc="008b5913" sha1="4c3230e0d8105255ca1a41fa325932f238867508"/>
|
||||
<rom name="Eye of the Beholder II.sub" size="12780000" crc="0ca139f6" sha1="5bd0d38213a11453e80d598f3f098773e06a1fe4"/>
|
||||
-->
|
||||
<description>Eye of the Beholder II: The Legend of Darkmoon</description>
|
||||
<description>Eye of the Beholder II - The Legend of Darkmoon</description>
|
||||
<year>1993</year>
|
||||
<publisher>サイベル (Cybelle)</publisher>
|
||||
<info name="release" value="199311xx" />
|
||||
@ -3125,7 +3125,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="track07.bin" size="67914000" crc="a7b4166a" sha1="7527949412eb9a5d13cc95532a1fba69890f5b21"/>
|
||||
<rom name="track08.bin" size="41454000" crc="4cdb5716" sha1="ba0c418704891605dbfcd40f3cd40b855560154d"/>
|
||||
-->
|
||||
<description>Gekirin: Ushinawareshi Houken</description>
|
||||
<description>Gekirin - Ushinawareshi Houken</description>
|
||||
<year>1994</year>
|
||||
<publisher>日本アプリケーション (Nihon Application)</publisher>
|
||||
<info name="release" value="199412xx" />
|
||||
@ -3284,7 +3284,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Mobile Suit Gundam Hyper Classic Operation.img" size="266745024" crc="d99bd13a" sha1="139c1c8c34b443c9888a6ce3d8584599a4e39fec"/>
|
||||
<rom name="Mobile Suit Gundam Hyper Classic Operation.sub" size="10887552" crc="46761a4e" sha1="c960498b2bd3161662f5f650a81c96f60d6fa5a6"/>
|
||||
-->
|
||||
<description>Mobile Suit Gundam: Hyper Classic Operation</description>
|
||||
<description>Mobile Suit Gundam - Hyper Classic Operation</description>
|
||||
<year>1992</year>
|
||||
<publisher>ファミリーソフト (Family Soft)</publisher>
|
||||
<info name="release" value="199208xx" />
|
||||
@ -3303,7 +3303,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Mobile Suit Gundam Hyper Desert Operation.img" size="251633424" crc="44eb68ec" sha1="5e8827afe57acf7de620c468c9cd6bd3903dea9c"/>
|
||||
<rom name="Mobile Suit Gundam Hyper Desert Operation.sub" size="10270752" crc="e9e722da" sha1="6a695055bdc6f144e532271952bc785bb3d5c9b3"/>
|
||||
-->
|
||||
<description>Mobile Suit Gundam: Hyper Desert Operation</description>
|
||||
<description>Mobile Suit Gundam - Hyper Desert Operation</description>
|
||||
<year>1992</year>
|
||||
<publisher>ファミリーソフト (Family Soft)</publisher>
|
||||
<info name="release" value="199209xx" />
|
||||
@ -3320,7 +3320,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Gunship - The Helicopter Simulation.cue" size="370" crc="258b11b0" sha1="146fb88fc218b94c5b04c8eb08fd04d4523dde44"/>
|
||||
<rom name="Gunship - The Helicopter Simulation.img" size="376437600" crc="989f159f" sha1="74d836bff0beabbcd76a4c9a6362136c38cb2641"/>
|
||||
-->
|
||||
<description>Gunship: The Helicopter Simulation</description>
|
||||
<description>Gunship - The Helicopter Simulation</description>
|
||||
<year>1990</year>
|
||||
<publisher>マイクロプローズジャパン (MicroProse Japan)</publisher>
|
||||
<info name="release" value="199010xx" />
|
||||
@ -3596,7 +3596,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<!--
|
||||
Origin: Neo Kobe Collection
|
||||
-->
|
||||
<description>Igo Doujou: Honkakuha Yose Tsumego Shinan</description>
|
||||
<description>Igo Doujou - Honkakuha Yose Tsumego Shinan</description>
|
||||
<year>1989</year>
|
||||
<publisher>富士通 (Fujitsu)</publisher>
|
||||
<info name="release" value="198903xx" />
|
||||
@ -3707,7 +3707,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Infestation.bin" size="381826032" crc="47a91fb4" sha1="f6217f804e32b399daabaafb3d05fe0f7d8690a3"/>
|
||||
<rom name="Infestation.cue" size="133" crc="eadc045d" sha1="ba7fd71706c190b4e2dfd5751f56ff54d2b2158e"/>
|
||||
-->
|
||||
<description>Infestation: Chinmoku no Wakusei</description>
|
||||
<description>Infestation - Chinmoku no Wakusei</description>
|
||||
<year>1992</year>
|
||||
<publisher>ビクター音楽産業 (Victor Musical Industries)</publisher>
|
||||
<info name="release" value="199203xx" />
|
||||
@ -3726,7 +3726,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Injuu Gakuen - La Blue Girl.img" size="434842464" crc="dabf93e2" sha1="98be7d7dff583dd1282300ce109ac1d834325579"/>
|
||||
<rom name="Injuu Gakuen - La Blue Girl.sub" size="17748672" crc="71d12240" sha1="092006bffc923e803d204978f3b4921e34efb918"/>
|
||||
-->
|
||||
<description>Injuu Gakuen: La Blue Girl</description>
|
||||
<description>Injuu Gakuen - La Blue Girl</description>
|
||||
<year>1994</year>
|
||||
<publisher>DEZ</publisher>
|
||||
<info name="release" value="199407xx" />
|
||||
@ -3894,7 +3894,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Kigen.bin" size="133005600" crc="f7e06793" sha1="51462a9ae88c7ad0546622ca94f5fae9c0259bea"/>
|
||||
<rom name="Kigen.cue" size="379" crc="90afe3a2" sha1="9bef33cecf72c9b888303fe8f1f9ce36c4959562"/>
|
||||
-->
|
||||
<description>Kigen: Kagayaki no Hasha</description>
|
||||
<description>Kigen - Kagayaki no Hasha</description>
|
||||
<year>1992</year>
|
||||
<publisher>リバーヒルソフト (Riverhill Soft)</publisher>
|
||||
<info name="release" value="199205xx" />
|
||||
@ -3953,7 +3953,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="king's quest v.bin" size="287461440" crc="0171b747" sha1="b1b7a2dfbe361cc2b5c71ddfaca2b1790d77532d"/>
|
||||
<rom name="king's quest v.cue" size="75" crc="93f65862" sha1="8137c3086aa1c4a921e6cb91b8828885669160db"/>
|
||||
-->
|
||||
<description>King's Quest V: Absence Makes the Heart Go Yonder</description>
|
||||
<description>King's Quest V - Absence Makes the Heart Go Yonder</description>
|
||||
<year>1991</year>
|
||||
<publisher>シエラオンラインジャパン (Sierra On-Line Japan)</publisher>
|
||||
<info name="release" value="199108xx" />
|
||||
@ -4088,7 +4088,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="The Legend of Kyrandia 2.cue" size="3557" crc="026fe47d" sha1="47fc6d71fa56421115f59791322fe54a41f4f863"/>
|
||||
<rom name="The Legend of Kyrandia 2.img" size="494331600" crc="77d255b4" sha1="21f426eb2e0900a5df98fe714bd6608c82fae2a6"/>
|
||||
-->
|
||||
<description>Kyrandia II: The Hand of Fate</description>
|
||||
<description>Kyrandia II - The Hand of Fate</description>
|
||||
<year>1995</year>
|
||||
<publisher>スタークラフト (Starcraft)</publisher>
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
@ -4098,12 +4098,11 @@ User/save disks that can be created from the game itself are not included.
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Originally labeled as "mp3 source". It probably needs a redump. -->
|
||||
<software name="ktiger">
|
||||
<!--
|
||||
Origin: Neo Kobe Collection
|
||||
<rom name="Kyuukyoku Tiger.bin" size="757515696" crc="98453ddc" sha1="cf311208d424de01ef60a43c2f3422fc1f8ef288"/>
|
||||
<rom name="Kyuukyoku Tiger.cue" size="1045" crc="6e3c9b99" sha1="4a70a94f2afb0c1b16e38099babdb3c53bd6ecda"/>
|
||||
Origin: Tokugawa Corporate Forums (wushu)
|
||||
<rom name="Tiger.bin" size="757692096" crc="131e7221" sha1="e300709315d53e06fdc64eed31159da25d68e357"/>
|
||||
<rom name="Tiger.cue" size="1014" crc="4311440c" sha1="001497dfb09e3dcba86491efb4335974c3a0cd96"/>
|
||||
-->
|
||||
<description>Kyuukyoku Tiger</description>
|
||||
<year>1994</year>
|
||||
@ -4111,7 +4110,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<info name="release" value="199402xx" />
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
<diskarea name="cdrom">
|
||||
<disk name="kyuukyoku tiger" sha1="187e052a9e699571bcd904a1e5cf18e3f0fcd9aa" status="baddump" />
|
||||
<disk name="kyuukyoku tiger" sha1="7c0f1c42dba49fe71114d21ad2f604dabe729196" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -4126,7 +4125,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="lands of lore.bin" size="20815200" crc="84903d38" sha1="b90ab7dfbe70a07276569aee59c5d64e8b2d5546"/>
|
||||
<rom name="lands of lore.cue" size="74" crc="95020903" sha1="994125d8e7d1be1ebe0728e1bdb4258f648ef50a"/>
|
||||
-->
|
||||
<description>Lands of Lore: The Throne of Chaos</description>
|
||||
<description>Lands of Lore - The Throne of Chaos</description>
|
||||
<year>1993</year>
|
||||
<publisher>スタークラフト (Starcraft)</publisher>
|
||||
<info name="release" value="199501xx" />
|
||||
@ -4249,7 +4248,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Lemmings 2 - The Tribes (En).mdf" size="324691248" crc="72bfb72d" sha1="17cbcd5e720a949fe87c433126ab0f90a37a8533"/>
|
||||
<rom name="Lemmings 2 - The Tribes (En).mds" size="1806" crc="4c0dfb47" sha1="e74c9dd6fcce3b1d4a063549beb7eeffb5a3cc8d"/>
|
||||
-->
|
||||
<description>Lemmings 2: The Tribes (English)</description>
|
||||
<description>Lemmings 2 - The Tribes (English)</description>
|
||||
<year>1994</year>
|
||||
<publisher>富士通 (Fujitsu)</publisher>
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
@ -4267,7 +4266,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Lemmings 2 - The Tribes.img" size="335865600" crc="b92ab9cc" sha1="1b45b55ccb0cd2df1cce6475221204deb2d17984"/>
|
||||
<rom name="Lemmings 2 - The Tribes.sub" size="13708800" crc="fe714f95" sha1="1be99f829fdc8926a8a8a879706e66cc0c258b05"/>
|
||||
-->
|
||||
<description>Lemmings 2: The Tribes (Japanese)</description>
|
||||
<description>Lemmings 2 - The Tribes (Japanese)</description>
|
||||
<year>1994</year>
|
||||
<publisher>富士通 (Fujitsu)</publisher>
|
||||
<info name="release" value="199406xx" />
|
||||
@ -4367,7 +4366,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Life & Death II.img" size="322282800" crc="41a68591" sha1="a0dc83c794fb66b8e5b4baebf46ad55dc43f102c"/>
|
||||
<rom name="Life & Death II.sub" size="13154400" crc="d94d1d54" sha1="080fc8e4a9867fa359dd72ef493b228b0eb98d0b"/>
|
||||
-->
|
||||
<description>Life & Death II: The Brain</description>
|
||||
<description>Life & Death II - The Brain</description>
|
||||
<year>1992</year>
|
||||
<publisher>ビング (Ving)</publisher>
|
||||
<info name="release" value="199211xx" />
|
||||
@ -4462,7 +4461,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Record of Lodoss War - Haiiro no Majo.img" size="119636832" crc="fd25dfb0" sha1="543bb5edea022390cda6fc90ef84db8fc63e1848"/>
|
||||
<rom name="Record of Lodoss War - Haiiro no Majo.sub" size="4883136" crc="1405c0ea" sha1="c6fdd87b5ebce3e307b3d2216dba57867f2a2059"/>
|
||||
-->
|
||||
<description>Record of Lodoss War: Haiiro no Majo</description>
|
||||
<description>Record of Lodoss War - Haiiro no Majo</description>
|
||||
<year>1994</year>
|
||||
<publisher>ハミングバード (HummingBird)</publisher>
|
||||
<info name="release" value="199404xx" />
|
||||
@ -4561,7 +4560,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Lupin III - Hong Kong no Mashu.img" size="341315184" crc="7fbe9b86" sha1="810defb7503665f185c868dc24e4eca2647f108a"/>
|
||||
<rom name="Lupin III - Hong Kong no Mashu.sub" size="13931232" crc="31cd1f8d" sha1="1a6cbbae19217e1150190c8e60b4d920256609b6"/>
|
||||
-->
|
||||
<description>Lupin Sansei: Hong Kong no Mashu: Fukushuu wa Meikyuu no Hate ni</description>
|
||||
<description>Lupin Sansei - Hong Kong no Mashu - Fukushuu wa Meikyuu no Hate ni</description>
|
||||
<year>1990</year>
|
||||
<publisher>CRI</publisher>
|
||||
<info name="release" value="199006xx" />
|
||||
@ -4836,7 +4835,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Muscle Bomber.mdf" size="579201696" crc="2383cfb2" sha1="1da7b2822c496bd727dfa1d4c67a266f5719d01e"/>
|
||||
<rom name="Muscle Bomber.mds" size="3038" crc="403bad3d" sha1="7abc6f7ca827e6c87ee1b48e162fa1ba9b6f0524"/>
|
||||
-->
|
||||
<description>Muscle Bomber: The Body Explosion</description>
|
||||
<description>Muscle Bomber - The Body Explosion</description>
|
||||
<year>1993</year>
|
||||
<publisher>カプコン (Capcom)</publisher>
|
||||
<info name="release" value="199311xx" />
|
||||
@ -4934,7 +4933,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="My Fair Lady CAN II - Elementary.img" size="595378224" crc="6a1d3222" sha1="8c4a883fe787620a4673c9b53ed59de870c60e60"/>
|
||||
<rom name="My Fair Lady CAN II - Elementary.sub" size="24301152" crc="e9d48db2" sha1="cbc2b3d81aad1dd0d498df91230f139daafb4a38"/>
|
||||
-->
|
||||
<description>My Fair Lady CAN II: Elementary</description>
|
||||
<description>My Fair Lady CAN II - Elementary</description>
|
||||
<year>1990</year>
|
||||
<publisher>CRI</publisher>
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
@ -5019,13 +5018,33 @@ User/save disks that can be created from the game itself are not included.
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mmagic3">
|
||||
<!--
|
||||
Origin: Tokugawa Corporate Forums (yukin)
|
||||
<rom name="MM3.mdf" size="15523200" crc="926d169b" sha1="107090bdd34e831f27ea979e3fd6a24c86aa418a"/>
|
||||
<rom name="MM3.mds" size="500" crc="99adcc2f" sha1="1d6b9f2257f821d06d0f85a021e5be5a2f448f03"/>
|
||||
|
||||
CUE file used for CHD conversion:
|
||||
<rom name="MM3.cue" size="64" crc="5c30fa2b" sha1="7b53d089cbc4fb4fa0d517adafd8f74f8c94a652"/>
|
||||
-->
|
||||
<description>Might and Magic III - Isles of Terra</description>
|
||||
<year>1992</year>
|
||||
<publisher>スタークラフト (Starcraft)</publisher>
|
||||
<info name="release" value="199210xx" />
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
<diskarea name="cdrom">
|
||||
<disk name="mm3" sha1="fcab3ac89b001b394071798511ccb8692926818f" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mmagic4">
|
||||
<!--
|
||||
Origin: Neo Kobe Collection
|
||||
<rom name="Might and Magic IV - Clouds of Xeen.mdf" size="249429600" crc="d80dd9ac" sha1="3aaf6421375508cc7ea75e754185df3302b411dc"/>
|
||||
<rom name="Might and Magic IV - Clouds of Xeen.mds" size="1718" crc="f0d179a2" sha1="8950d463d656e3d9fc8898ce3f3eceec73c55ad9"/>
|
||||
-->
|
||||
<description>Might and Magic: Clouds of Xeen</description>
|
||||
<description>Might and Magic - Clouds of Xeen</description>
|
||||
<year>1993</year>
|
||||
<publisher>スタークラフト (Starcraft)</publisher>
|
||||
<info name="release" value="199309xx" />
|
||||
@ -5042,7 +5061,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Might and Magic V - Darkside of Xeen.mdf" size="36691200" crc="c1bf597c" sha1="f0c3c649a77242223076ccafc608a702ede112db"/>
|
||||
<rom name="Might and Magic V - Darkside of Xeen.mds" size="486" crc="974ae3fc" sha1="5bda8dd2b65112d77a3c8cc341ecb2f5e39f05e8"/>
|
||||
-->
|
||||
<description>Might and Magic: Darkside of Xeen</description>
|
||||
<description>Might and Magic - Darkside of Xeen</description>
|
||||
<year>1994</year>
|
||||
<publisher>スタークラフト (Starcraft)</publisher>
|
||||
<info name="release" value="199405xx" />
|
||||
@ -5143,7 +5162,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="monkey island 2 - lechuck's revenge.bin" size="41983200" crc="4722bcbf" sha1="46af7a3b0217d6ebfec41938e7b28b0a6677956e"/>
|
||||
<rom name="monkey island 2 - lechuck's revenge.cue" size="96" crc="c52ca81e" sha1="9f7d201c41ea984ecf68bf8bc67005de465dfe3e"/>
|
||||
-->
|
||||
<description>Monkey Island 2: LeChuck's Revenge</description>
|
||||
<description>Monkey Island 2 - LeChuck's Revenge</description>
|
||||
<year>1994</year>
|
||||
<publisher>ビクター音楽産業 (Victor Musical Industries)</publisher>
|
||||
<info name="release" value="199402xx" />
|
||||
@ -5205,7 +5224,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Ms. Detective File #1 (Disc 2).img" size="518860608" crc="6579dddc" sha1="a9920e6d9c65f7ff412358d27e8565c60c0786a8"/>
|
||||
<rom name="Ms. Detective File #1 (Disc 2).sub" size="21177984" crc="56eac6c0" sha1="ca2dea4d6d25e269edb950b9b6c033755baf10ae"/>
|
||||
-->
|
||||
<description>Ms. Detective File #1: Iwami Ginzan Satsujin Jiken</description>
|
||||
<description>Ms. Detective File #1 - Iwami Ginzan Satsujin Jiken</description>
|
||||
<year>1992</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199209xx" />
|
||||
@ -5230,7 +5249,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Ms. Detective File #2.img" size="474174960" crc="a810c9f2" sha1="7bfe20007b1473bb55a849685bd1258939c540f9"/>
|
||||
<rom name="Ms. Detective File #2.sub" size="19354080" crc="0dfa8820" sha1="20be48fb8f6ecee27d31fb10269e8a175991d003"/>
|
||||
-->
|
||||
<description>Ms. Detective File #2: Sugata-naki Irainin</description>
|
||||
<description>Ms. Detective File #2 - Sugata-naki Irainin</description>
|
||||
<year>1993</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199310xx" />
|
||||
@ -5421,7 +5440,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Nihon no Rekishi - Kizoku-hen.img" size="534310896" crc="d32b3404" sha1="7c51507d212d94ad47ed84dea16c7d1573a3af71"/>
|
||||
<rom name="Nihon no Rekishi - Kizoku-hen.sub" size="21808608" crc="0babca94" sha1="a0fbb8a32d1ab606a837601e1023ebd6b55d09d9"/>
|
||||
-->
|
||||
<description>Nihon no Rekishi: Kizoku-hen</description>
|
||||
<description>Nihon no Rekishi - Kizoku-hen</description>
|
||||
<year>1990</year>
|
||||
<publisher>CRI</publisher>
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
@ -5439,7 +5458,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Nihon no Rekishi - Kodai-hen.img" size="632718576" crc="245c0277" sha1="ac4857a0985acda75b732a3590a2278d8628f0fb"/>
|
||||
<rom name="Nihon no Rekishi - Kodai-hen.sub" size="25825248" crc="4d377848" sha1="1f4cb424de7625b41d865c395a7ec6882cf2f984"/>
|
||||
-->
|
||||
<description>Nihon no Rekishi: Kodai-hen</description>
|
||||
<description>Nihon no Rekishi - Kodai-hen</description>
|
||||
<year>1990</year>
|
||||
<publisher>CRI</publisher>
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
@ -5496,7 +5515,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Nobunaga no Yabou - Haou-den.img" size="621283152" crc="43ae963f" sha1="a6b620bca6f5b282c6461e0bc7e66de20d6b61c0"/>
|
||||
<rom name="Nobunaga no Yabou - Haou-den.sub" size="25358496" crc="f5b33009" sha1="f7951f9056c1c44f1e8d42fb646505298ccb75bf"/>
|
||||
-->
|
||||
<description>Nobunaga no Yabou: Haouden</description>
|
||||
<description>Nobunaga no Yabou - Haouden</description>
|
||||
<year>1993</year>
|
||||
<publisher>光栄 (Koei)</publisher>
|
||||
<info name="release" value="199304xx" />
|
||||
@ -5519,7 +5538,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Nobunaga no Yabou - Tenshouki.bin" size="478798992" crc="17ba5021" sha1="936b1f97562762df23cad7d0880bfce31e8e7c73"/>
|
||||
<rom name="Nobunaga no Yabou - Tenshouki.cue" size="628" crc="8652e29d" sha1="3ed6d965bdc9cf9deed37ccbe829d87e525fad68"/>
|
||||
-->
|
||||
<description>Nobunaga no Yabou: Tenshouki</description>
|
||||
<description>Nobunaga no Yabou - Tenshouki</description>
|
||||
<year>1995</year>
|
||||
<publisher>光栄 (Koei)</publisher>
|
||||
<info name="release" value="199503xx" />
|
||||
@ -5891,7 +5910,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Prince of Persia 2.bin" size="537667200" crc="691de262" sha1="5813739a84322a52aa9a311ce67d173cba155e69"/>
|
||||
<rom name="Prince of Persia 2.cue" size="125" crc="25a122a8" sha1="e7bfebff079701b0b6e886e320923dc7c511f00b"/>
|
||||
-->
|
||||
<description>Prince of Persia 2: The Shadow and the Flame</description>
|
||||
<description>Prince of Persia 2 - The Shadow and the Flame</description>
|
||||
<year>1994</year>
|
||||
<publisher>インタープログ (Interprog)</publisher>
|
||||
<info name="release" value="199407xx" />
|
||||
@ -5935,7 +5954,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Provvidenza.img" size="64562400" crc="ce38ece3" sha1="e10bd585a8e60c806e5cfba2129d79e3bdfb975b"/>
|
||||
<rom name="Provvidenza.sub" size="2635200" crc="8da409c6" sha1="1db91a5e42f8df0ece1a3762a52a465d1422994b"/>
|
||||
-->
|
||||
<description>Provvidenza: Legenda la Spada di Alfa</description>
|
||||
<description>Provvidenza - Legenda la Spada di Alfa</description>
|
||||
<year>1991</year>
|
||||
<publisher>Sofcom</publisher>
|
||||
<info name="release" value="199109xx" />
|
||||
@ -5955,7 +5974,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Psychic Detective Series Vol. 1 - Invitation (Track 4).bin" size="4233600" crc="4580866a" sha1="aaefaba5020efb03452df764e2897d0f278e3151"/>
|
||||
<rom name="Psychic Detective Series Vol. 1 - Invitation.cue" size="534" crc="3312b6bd" sha1="4a420300e0aebd9b7e971047c9ecddf0ce5ba43f"/>
|
||||
-->
|
||||
<description>Psychic Detective Series Vol. 1: Invitation</description>
|
||||
<description>Psychic Detective Series Vol. 1 - Invitation</description>
|
||||
<year>1989</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="198903xx" />
|
||||
@ -5989,7 +6008,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Psychic Detective Series Vol. 2 - Memories (Track 18).bin" size="4233600" crc="4580866a" sha1="aaefaba5020efb03452df764e2897d0f278e3151"/>
|
||||
<rom name="Psychic Detective Series Vol. 2 - Memories.cue" size="2448" crc="f97a66f6" sha1="c6a3b4621c40dffdbcdcf699e223e003439f5cb4"/>
|
||||
-->
|
||||
<description>Psychic Detective Series Vol. 2: Memories</description>
|
||||
<description>Psychic Detective Series Vol. 2 - Memories</description>
|
||||
<year>1989</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
@ -6012,7 +6031,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Psychic Detective Series Vol. 3 - Aya (Track 8).bin" size="4233600" crc="4580866a" sha1="aaefaba5020efb03452df764e2897d0f278e3151"/>
|
||||
<rom name="Psychic Detective Series Vol. 3 - Aya.cue" size="1030" crc="7ee451c0" sha1="7a78f47a67a0ec1c21f95902d3a3d97206d8949b"/>
|
||||
-->
|
||||
<description>Psychic Detective Series Vol. 3: Aya</description>
|
||||
<description>Psychic Detective Series Vol. 3 - Aya</description>
|
||||
<year>1990</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199006xx" />
|
||||
@ -6036,7 +6055,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Psychic Detective Series Vol. 4 - Orgel (Track 8).bin" size="36197280" crc="732a69ae" sha1="81551f723c0f79d1e8e7c4ad2dc71cd9d0dbede4"/>
|
||||
<rom name="Psychic Detective Series Vol. 4 - Orgel.cue" size="1046" crc="043a8cbc" sha1="2a6d1f743f3cff9f2147f8c4c746737086432de9"/>
|
||||
-->
|
||||
<description>Psychic Detective Series Vol. 4: Orgel</description>
|
||||
<description>Psychic Detective Series Vol. 4 - Orgel</description>
|
||||
<year>1991</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199104xx" />
|
||||
@ -6060,7 +6079,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Psychic Detective Series Vol. 5 - Nightmare.img" size="376790400" crc="45450153" sha1="f0b30fe77076028a3d8d68b41b8a03faf4ae363b"/>
|
||||
<rom name="Psychic Detective Series Vol. 5 - Nightmare.sub" size="15379200" crc="dfd9f75a" sha1="719fda535ec124596e4280ef0d82b08f40435c70"/>
|
||||
-->
|
||||
<description>Psychic Detective Series Vol. 5: Nightmare</description>
|
||||
<description>Psychic Detective Series Vol. 5 - Nightmare</description>
|
||||
<year>1991</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199111xx" />
|
||||
@ -6089,7 +6108,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Psychic Detective Series Final - Solitude Joukan (Track 7).bin" size="49074480" crc="26509472" sha1="2009d73fd1536f47056e84076bd43d95a338cde0"/>
|
||||
<rom name="Psychic Detective Series Final - Solitude Joukan.cue" size="976" crc="c0b0ba63" sha1="c9827261a2c1a9e5e71152bf806e0fefba106173"/>
|
||||
-->
|
||||
<description>Psychic Detective Series Final: Solitude Joukan</description>
|
||||
<description>Psychic Detective Series Final - Solitude Joukan</description>
|
||||
<year>1992</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199212xx" />
|
||||
@ -6115,7 +6134,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Psychic Detective Series Final - Solitude Gekan (Track 5).bin" size="51910992" crc="988d84a3" sha1="b97e6b1f060ef12ed47fc239265ca27124178bc1"/>
|
||||
<rom name="Psychic Detective Series Final - Solitude Gekan.cue" size="687" crc="d6efb6e2" sha1="c5007c6443420cc91328aacea84a36d3b90ad4eb"/>
|
||||
-->
|
||||
<description>Psychic Detective Series Final: Solitude Gekan</description>
|
||||
<description>Psychic Detective Series Final - Solitude Gekan</description>
|
||||
<year>1993</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199303xx" />
|
||||
@ -6323,7 +6342,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Rance III.img" size="602231952" crc="3f27e7f4" sha1="5d5f5ccf8e02eb4cfb75fef9c6c39e24e953dd1b"/>
|
||||
<rom name="Rance III.sub" size="24580896" crc="5fd3a83c" sha1="ed46131da5956d324f4b68a1f3590c4ac6a4ad6f"/>
|
||||
-->
|
||||
<description>Rance III: Leazas Kanraku</description>
|
||||
<description>Rance III - Leazas Kanraku</description>
|
||||
<year>1992</year>
|
||||
<publisher>アリスソフト (AliceSoft)</publisher>
|
||||
<info name="release" value="199205xx" />
|
||||
@ -6342,7 +6361,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Rance IV.img" size="400921920" crc="5ea9daf3" sha1="9df5dd75f4eb2e1e34a39245b51ffd67a7c4ed34"/>
|
||||
<rom name="Rance IV.sub" size="16364160" crc="b9f43d38" sha1="6f42e82164320a093d5c74776fb57813c045eb42"/>
|
||||
-->
|
||||
<description>Rance IV: Kyoudan no Isan</description>
|
||||
<description>Rance IV - Kyoudan no Isan</description>
|
||||
<year>1994</year>
|
||||
<publisher>アリスソフト (AliceSoft)</publisher>
|
||||
<info name="release" value="199403xx" />
|
||||
@ -6367,7 +6386,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Rance 4.1.img" size="628325040" crc="b53d7ecc" sha1="6dc3f45ea6d7efecd0ae7c2714cf84117a291935"/>
|
||||
<rom name="Rance 4.1.sub" size="25645920" crc="ea974b09" sha1="142042fd520b06432f3deaa474ecd9a46b4058f1"/>
|
||||
-->
|
||||
<description>Rance 4.1: Okusuri Koujou wo Sukue!</description>
|
||||
<description>Rance 4.1 - Okusuri Koujou wo Sukue!</description>
|
||||
<year>1995</year>
|
||||
<publisher>アリスソフト (AliceSoft)</publisher>
|
||||
<info name="release" value="199512xx" />
|
||||
@ -6387,7 +6406,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Rance 4.2.img" size="732104688" crc="d0e4dc53" sha1="441f7f3846e005f23a539c623c735786e8b1335a"/>
|
||||
<rom name="Rance 4.2.sub" size="29881824" crc="5c096184" sha1="425aa6d1d738cd73d69b811e468c7e9eb5ca5e8b"/>
|
||||
-->
|
||||
<description>Rance 4.2: Angel-gumi</description>
|
||||
<description>Rance 4.2 - Angel-gumi</description>
|
||||
<year>1995</year>
|
||||
<publisher>アリスソフト (AliceSoft)</publisher>
|
||||
<info name="release" value="199512xx" />
|
||||
@ -6491,7 +6510,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Rejection - Denno Senshi.img" size="270138960" crc="29b9fa04" sha1="bb1a04a652862a0ebc33367c92c6f25ab483ca4b"/>
|
||||
<rom name="Rejection - Denno Senshi.sub" size="11026080" crc="f4fbbf12" sha1="02a7fc2bf9a3c1190d2b3d840a1cd408230565f4"/>
|
||||
-->
|
||||
<description>Rejection: Den-no Senshi</description>
|
||||
<description>Rejection - Den-no Senshi</description>
|
||||
<year>1992</year>
|
||||
<publisher>シュールド・ウェーブ (Sur De Wave)</publisher>
|
||||
<info name="release" value="199212xx" />
|
||||
@ -6743,7 +6762,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Sherlock Holmes no Tantei Kouza.img" size="719359200" crc="b99d4037" sha1="45bf55fd953f81e5dc241e40dc236e0a12403c3f"/>
|
||||
<rom name="Sherlock Holmes no Tantei Kouza.sub" size="29361600" crc="eec3883e" sha1="f7155ecc42b6552b73124a262b29347f98d8ccd8"/>
|
||||
-->
|
||||
<description>Sherlock Holmes: Consulting Detective</description>
|
||||
<description>Sherlock Holmes - Consulting Detective</description>
|
||||
<year>1991</year>
|
||||
<publisher>富士通 (Fujitsu)</publisher>
|
||||
<info name="release" value="199106xx" />
|
||||
@ -6913,7 +6932,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Sotsugyou '93 - Graduation.img" size="153044640" crc="15b362eb" sha1="3390ca78f2dbadfd353081f41977b35d84fb7647"/>
|
||||
<rom name="Sotsugyou '93 - Graduation.sub" size="6246720" crc="3370d136" sha1="e06d6c05ab7a830015e147c6f0d3200ae4434988"/>
|
||||
-->
|
||||
<description>Sotsugyou '93: Graduation</description>
|
||||
<description>Sotsugyou '93 - Graduation</description>
|
||||
<year>1993</year>
|
||||
<publisher>JHV</publisher>
|
||||
<info name="release" value="199310xx" />
|
||||
@ -6994,7 +7013,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Shadow of the Beast.bin" size="496152048" crc="c641b3e1" sha1="2d89c60f9890bad31de4fa7b99a9717ef50700d9"/>
|
||||
<rom name="Shadow of the Beast.cue" size="372" crc="f5b6be57" sha1="9c0528ecc6b4693cf064084ade0cfaca7d1eeccf"/>
|
||||
-->
|
||||
<description>Shadow of the Beast: Mashou no Okite</description>
|
||||
<description>Shadow of the Beast - Mashou no Okite</description>
|
||||
<year>1991</year>
|
||||
<publisher>ビクター音楽産業 (Victor Musical Industries)</publisher>
|
||||
<info name="release" value="199109xx" />
|
||||
@ -7005,7 +7024,6 @@ User/save disks that can be created from the game itself are not included.
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Original image from the redump.org database -->
|
||||
<software name="sotb2">
|
||||
<!--
|
||||
Origin: redump.org
|
||||
@ -7025,7 +7043,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="shadow of the beast ii - juushin no jubaku (japan) (track 14).bin" size="9525600" crc="304265dd" sha1="aa67c9461d147add5444612c96a851e2402944ce"/>
|
||||
<rom name="shadow of the beast ii - juushin no jubaku (japan).cue" size="2035" crc="ae3b3ca9" sha1="c91ca1a0b2255feecc05aea14e0b615dace51cac"/>
|
||||
-->
|
||||
<description>Shadow of the Beast II: Juushin no Jubaku</description>
|
||||
<description>Shadow of the Beast II - Juushin no Jubaku</description>
|
||||
<year>1993</year>
|
||||
<publisher>ビクター音楽産業 (Victor Musical Industries)</publisher>
|
||||
<info name="release" value="199306xx" />
|
||||
@ -7120,7 +7138,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Super Street Fighter II.img" size="465733632" crc="ccc32114" sha1="cbe65c9f0839339a74867ac1758b9de441c96fdd"/>
|
||||
<rom name="Super Street Fighter II.sub" size="19009536" crc="e0c73ae0" sha1="871fb0e535d2418ac8008d5b9817f09f7e9db37c"/>
|
||||
-->
|
||||
<description>Super Street Fighter II: The New Challengers</description>
|
||||
<description>Super Street Fighter II - The New Challengers</description>
|
||||
<year>1994</year>
|
||||
<publisher>カプコン (Capcom)</publisher>
|
||||
<info name="release" value="199410xx" />
|
||||
@ -7137,7 +7155,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Super Street Fighter II (Sample Disc).bin" size="33311376" crc="e51369b5" sha1="813e8435518d71468f05fe1b2977a71a304ee4a8"/>
|
||||
<rom name="Super Street Fighter II (Sample Disc).cue" size="421" crc="df35d025" sha1="a3aaa59d86716feda3b29e594d456810c2b703db"/>
|
||||
-->
|
||||
<description>Super Street Fighter II: The New Challengers (Sample Disc)</description>
|
||||
<description>Super Street Fighter II - The New Challengers (Sample Disc)</description>
|
||||
<year>1994</year>
|
||||
<publisher>カプコン (Capcom)</publisher>
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
@ -7155,7 +7173,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Super Shanghai - Dragon's Eye.img" size="499917600" crc="1d6e5c1e" sha1="8d5056af7328d2e00ba9e9cb57bd880060c2c64f"/>
|
||||
<rom name="Super Shanghai - Dragon's Eye.sub" size="20404800" crc="cc998f20" sha1="a55336efbd1ce9261a1efa159cf7d13b00b22c0b"/>
|
||||
-->
|
||||
<description>Super Shanghai: Dragon's Eye</description>
|
||||
<description>Super Shanghai - Dragon's Eye</description>
|
||||
<year>1991</year>
|
||||
<publisher>HOT・B</publisher>
|
||||
<info name="release" value="199111xx" />
|
||||
@ -7220,7 +7238,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Star Cruiser 2.img" size="241849104" crc="de3aeac6" sha1="d452aa0f644f737a87137327a4b80931b8e0bddb"/>
|
||||
<rom name="Star Cruiser 2.sub" size="9871392" crc="fcc2e4d4" sha1="62a5d3b88563dc365298ca59ee60b664f0726d66"/>
|
||||
-->
|
||||
<description>Star Cruiser II: The Odysseus Project</description>
|
||||
<description>Star Cruiser II - The Odysseus Project</description>
|
||||
<year>1994</year>
|
||||
<publisher>JHV</publisher>
|
||||
<info name="release" value="199404xx" />
|
||||
@ -7360,7 +7378,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Takamizawa Kyosuke - Nekketsu!! Kyouiku Kenshuu.img" size="445943904" crc="0f83a769" sha1="b417cc433d6946ea6939e4f80b722bccb038318f"/>
|
||||
<rom name="Takamizawa Kyosuke - Nekketsu!! Kyouiku Kenshuu.sub" size="18201792" crc="1412cb19" sha1="28071814e73145f6e9ca4eb16a1704fb00ab6109"/>
|
||||
-->
|
||||
<description>Takamizawa Kyosuke: Nekketsu!! Kyouiku Kenshuu</description>
|
||||
<description>Takamizawa Kyosuke - Nekketsu!! Kyouiku Kenshuu</description>
|
||||
<year>1995</year>
|
||||
<publisher>ジックス (ZyX)</publisher>
|
||||
<info name="release" value="199501xx" />
|
||||
@ -7379,7 +7397,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Tanjou - Debut.img" size="55401360" crc="e7fa4c3b" sha1="1387e54fad5bd7636afee3d7a0b9ac1c8baecd3f"/>
|
||||
<rom name="Tanjou - Debut.sub" size="2261280" crc="d37b24b0" sha1="9a288b4a6d53e9edf3b4f4b15e3a5c695bf0645b"/>
|
||||
-->
|
||||
<description>Tanjou: Debut</description>
|
||||
<description>Tanjou - Debut</description>
|
||||
<year>1994</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199404xx" />
|
||||
@ -7423,7 +7441,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="TDF - Terrestrial Defense Force.img" size="160606320" crc="1adea170" sha1="79296eec6cbc866e81ff1b862deedc1d723331e4"/>
|
||||
<rom name="TDF - Terrestrial Defense Force.sub" size="6555360" crc="589616ea" sha1="f63ee1d3114a90445a6765c8afd9fb691b231f57"/>
|
||||
-->
|
||||
<description>TDF: Terrestrial Defense Force</description>
|
||||
<description>TDF - Terrestrial Defense Force</description>
|
||||
<year>1990</year>
|
||||
<publisher>データウエスト (Data West)</publisher>
|
||||
<info name="release" value="199009xx" />
|
||||
@ -7577,7 +7595,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Toushin Toshi II - Soshite Sorekara....img" size="340814208" crc="b51f44d5" sha1="c5595ca4e7db9b15b4b802b1c8d94decf9f56b35"/>
|
||||
<rom name="Toushin Toshi II - Soshite Sorekara....sub" size="13910784" crc="b64a2761" sha1="c1c3ad052d27c34c7f2a4fdd731e52d0a33fd27d"/>
|
||||
-->
|
||||
<description>Toushin Toshi II: Soshite, Sorekara...</description>
|
||||
<description>Toushin Toshi II - Soshite, Sorekara...</description>
|
||||
<year>1995</year>
|
||||
<publisher>アリスソフト (AliceSoft)</publisher>
|
||||
<info name="release" value="199512xx" />
|
||||
@ -7843,7 +7861,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Ultima IV - Quest of the Avatar.bin" size="83260800" crc="cacc08b9" sha1="9194eb85d514e71e07ea3b1e0615a01c9d09f416"/>
|
||||
<rom name="Ultima IV - Quest of the Avatar.cue" size="200" crc="8f8e7041" sha1="e70d908fa5fe464e6d88c6d14a5110e9c7b243f3"/>
|
||||
-->
|
||||
<description>Ultima IV: Quest of the Avatar</description>
|
||||
<description>Ultima IV - Quest of the Avatar</description>
|
||||
<year>1992</year>
|
||||
<publisher>富士通 (Fujitsu)</publisher>
|
||||
<info name="release" value="199204xx" />
|
||||
@ -7862,7 +7880,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Ultima V - Warriors of Destiny.img" size="128595600" crc="dfc1dbe5" sha1="a0cfebf22f4b0563fb12f7c745305b45cd458f73"/>
|
||||
<rom name="Ultima V - Warriors of Destiny.sub" size="5248800" crc="57c99837" sha1="086b83fe4b0303cd0cb11dd0fa68a71a2186c56b"/>
|
||||
-->
|
||||
<description>Ultima V: Warriors of Destiny</description>
|
||||
<description>Ultima V - Warriors of Destiny</description>
|
||||
<year>1992</year>
|
||||
<publisher>富士通 (Fujitsu)</publisher>
|
||||
<info name="release" value="199208xx" />
|
||||
@ -7881,7 +7899,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Ultima VI - The False Prophet.img" size="503090448" crc="045e6cf8" sha1="7b96e1c090e870edcc6661d93d9651afcf500683"/>
|
||||
<rom name="Ultima VI - The False Prophet.sub" size="20534304" crc="c6918e77" sha1="cb33c7f8f54252b6609722601c5960c5be3576ef"/>
|
||||
-->
|
||||
<description>Ultima VI: The False Prophet</description>
|
||||
<description>Ultima VI - The False Prophet</description>
|
||||
<year>1991</year>
|
||||
<publisher>富士通 (Fujitsu)</publisher>
|
||||
<info name="release" value="199112xx" />
|
||||
@ -7919,7 +7937,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Ultima Underworld.img" size="87527328" crc="9c4e58f3" sha1="1602c3f7cf668319f2e2cbba2ef925ed2e79a1db"/>
|
||||
<rom name="Ultima Underworld.sub" size="3572544" crc="4fc2ecd4" sha1="6ede888227097aa54c0fa333474f0d5dee70b687"/>
|
||||
-->
|
||||
<description>Ultima Underworld: The Stygian Abyss</description>
|
||||
<description>Ultima Underworld - The Stygian Abyss</description>
|
||||
<year>1993</year>
|
||||
<publisher>エレクトロニック・アーツ・ビクター (Electronic Arts Victor)</publisher>
|
||||
<info name="release" value="199312xx" />
|
||||
@ -7940,7 +7958,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="ultima underworld 2.bin" size="67140192" crc="2f005f36" sha1="fbdd8df467050403bc7047239418284ab4173847"/>
|
||||
<rom name="ultima underworld 2.cue" size="80" crc="d6b87614" sha1="1f12d627578632ef2e9e7667e27cf1ebb7744263"/>
|
||||
-->
|
||||
<description>Ultima Underworld II: Labyrinth of Worlds</description>
|
||||
<description>Ultima Underworld II - Labyrinth of Worlds</description>
|
||||
<year>1995</year>
|
||||
<publisher>エレクトロニック・アーツ・ビクター (Electronic Arts Victor)</publisher>
|
||||
<info name="release" value="199502xx" />
|
||||
@ -8034,7 +8052,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Vastness.img" size="463666224" crc="ff249f28" sha1="21c024c9f4bc2fcfaadf84072e094998facad4a7"/>
|
||||
<rom name="Vastness.sub" size="18925152" crc="1f3a4a5d" sha1="7d26e94d29997ae4c1f204a143194c9a08c74860"/>
|
||||
-->
|
||||
<description>Vastness: Kuukyo no Ikenie-tachi</description>
|
||||
<description>Vastness - Kuukyo no Ikenie-tachi</description>
|
||||
<year>1993</year>
|
||||
<publisher>CD Bros.</publisher>
|
||||
<info name="release" value="199309xx" />
|
||||
@ -8066,12 +8084,13 @@ User/save disks that can be created from the game itself are not included.
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- Originally labeled as "mp3 source". It probably needs a redump. -->
|
||||
<software name="viewpoin">
|
||||
<!--
|
||||
Origin: Neo Kobe Collection
|
||||
<rom name="Viewpoint.bin" size="478711968" crc="76e247e4" sha1="5fdc1c4d99544b0b7ae9a78bfc9bd2c218f6bee9"/>
|
||||
<rom name="Viewpoint.cue" size="629" crc="55900cea" sha1="fd17d8ca5820d319032136a162366265bd8929a4"/>
|
||||
Origin: Tokugawa Corporate Forums (wushu)
|
||||
<rom name="Viewpoint.ccd" size="3443" crc="7540457a" sha1="64a84097b761edeaf13ccdfb5ef7b146de7fa078"/>
|
||||
<rom name="Viewpoint.cue" size="858" crc="ca18b334" sha1="850438e7d1332871cccf38fa91b159cbeaf702bc"/>
|
||||
<rom name="Viewpoint.img" size="478961280" crc="fd8a4b22" sha1="c4771fc1db50dba1fc57f8aa10482e8ebf680cd8"/>
|
||||
<rom name="Viewpoint.sub" size="19549440" crc="d15c8b5a" sha1="ff4cbd245aaee1acd1ef44db63a8d4a101c7a3a8"/>
|
||||
-->
|
||||
<description>Viewpoint</description>
|
||||
<year>1993</year>
|
||||
@ -8079,7 +8098,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<info name="release" value="199311xx" />
|
||||
<part name="cdrom" interface="fmt_cdrom">
|
||||
<diskarea name="cdrom">
|
||||
<disk name="viewpoint" sha1="f5d017b08a34eaadfab6e4f4c272d574a09d1718" status="baddump" />
|
||||
<disk name="viewpoint" sha1="c977abc3e3ab7d675b6be7aacac69a57bc6e52be" />
|
||||
</diskarea>
|
||||
</part>
|
||||
</software>
|
||||
@ -8272,7 +8291,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Wing Commander - Secret Missions.mdf" size="10231200" crc="f75ba7a5" sha1="63b8d24b3f376edef3ca0363aa9cfec0d0908d6a"/>
|
||||
<rom name="Wing Commander - Secret Missions.mds" size="486" crc="15e78ee3" sha1="c0b6da8915c861eb0f826689efb7b6b237f25f2b"/>
|
||||
-->
|
||||
<description>Wing Commander: Secret Missions</description>
|
||||
<description>Wing Commander - Secret Missions</description>
|
||||
<year>1994</year>
|
||||
<publisher>富士通 (Fujitsu)</publisher>
|
||||
<info name="release" value="199411xx" />
|
||||
@ -8307,7 +8326,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Wizardry V - Heart of the Maelstrom.mdf" size="242197200" crc="fe7c9dfa" sha1="45c01ea042b534a4b91fb0aeb5b4e5af4a510cb3"/>
|
||||
<rom name="Wizardry V - Heart of the Maelstrom.mds" size="1982" crc="eff072ba" sha1="ebfb946672e85270336f864d9a67c83dfb4a2c2e"/>
|
||||
-->
|
||||
<description>Wizardry V: Heart of the Maelstrom</description>
|
||||
<description>Wizardry V - Heart of the Maelstrom</description>
|
||||
<year>1990</year>
|
||||
<publisher>アスキー (ASCII)</publisher>
|
||||
<info name="release" value="199012xx" />
|
||||
@ -8332,7 +8351,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Wizardry VI - Bane of the Cosmic Forge.img" size="153468000" crc="33b91709" sha1="09ac3f62a16dd7fcdcb9270a347505c98b98719b"/>
|
||||
<rom name="Wizardry VI - Bane of the Cosmic Forge.sub" size="6264000" crc="d7b1b7b0" sha1="20845962384bc0043cf0b5c0b3ed1c449fd6e423"/>
|
||||
-->
|
||||
<description>Wizardry VI: Bane of the Cosmic Forge</description>
|
||||
<description>Wizardry VI - Bane of the Cosmic Forge</description>
|
||||
<year>1991</year>
|
||||
<publisher>アスキー (ASCII)</publisher>
|
||||
<info name="release" value="199112xx" />
|
||||
@ -8355,7 +8374,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Wizardry VII - Crusaders of the Dark Savant.mdf" size="45689952" crc="5146397e" sha1="cf1d06bbdf340de84ae3dd41af7f6ebf0919e4f4"/>
|
||||
<rom name="Wizardry VII - Crusaders of the Dark Savant.mds" size="574" crc="b1adbcf4" sha1="e3391b016ffd3779032df192ad2595196091417d"/>
|
||||
-->
|
||||
<description>Wizardry VII: Crusaders of the Dark Savant</description>
|
||||
<description>Wizardry VII - Crusaders of the Dark Savant</description>
|
||||
<year>1994</year>
|
||||
<publisher>アスキー (ASCII)</publisher>
|
||||
<info name="release" value="199409xx" />
|
||||
@ -8467,7 +8486,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Xak II - Rising of the Redmoon.img" size="737681280" crc="97a091d7" sha1="8754a54544277acf76e34b160fcffc0f966438b5"/>
|
||||
<rom name="Xak II - Rising of the Redmoon.sub" size="30109440" crc="138201f9" sha1="4cbc46c52275ee709da5960fff8cce2f913d5ace"/>
|
||||
-->
|
||||
<description>Xak II: Rising of the Redmoon</description>
|
||||
<description>Xak II - Rising of the Redmoon</description>
|
||||
<year>1991</year>
|
||||
<publisher>マイクロキャビン (Micro Cabin)</publisher>
|
||||
<info name="release" value="199107xx" />
|
||||
@ -8486,7 +8505,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Xak III - The Eternal Recurrence.img" size="160124160" crc="0540cc47" sha1="67922d84c5612465991e42b53be5534da7593fdc"/>
|
||||
<rom name="Xak III - The Eternal Recurrence.sub" size="6535680" crc="05a826ad" sha1="2cd50216b025cfb095fc23be1d7b99d6f137db59"/>
|
||||
-->
|
||||
<description>Xak III: The Eternal Recurrence</description>
|
||||
<description>Xak III - The Eternal Recurrence</description>
|
||||
<year>1993</year>
|
||||
<publisher>マイクロキャビン (Micro Cabin)</publisher>
|
||||
<info name="release" value="199309xx" />
|
||||
@ -8549,7 +8568,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Youjuu Senki - A.D. 2048.img" size="73735200" crc="c564c47f" sha1="74cb81be807b323f0abf8de633ae4c00dfe9b486"/>
|
||||
<rom name="Youjuu Senki - A.D. 2048.sub" size="3009600" crc="7f503cf3" sha1="4e802b74e492bd1321f932de6c0bfdc473a5ebfb"/>
|
||||
-->
|
||||
<description>Yojuu Senki: A.D. 2048</description>
|
||||
<description>Yojuu Senki - A.D. 2048</description>
|
||||
<year>1993</year>
|
||||
<publisher>ディー・オー (D.O.)</publisher>
|
||||
<info name="release" value="199311xx" />
|
||||
@ -8634,7 +8653,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="track04.bin" size="73911600" crc="e6694e61" sha1="9c1611325495fdb80e957cc4eb5da819f4a4c10e"/>
|
||||
<rom name="zan 2 towns special.cue" size="690" crc="a07806e3" sha1="02cf38214074c540b51eccb3642950957e12a2ef"/>
|
||||
-->
|
||||
<description>Zan II: Towns Special</description>
|
||||
<description>Zan II - Towns Special</description>
|
||||
<year>1992</year>
|
||||
<publisher>ウルフチーム (WolfTeam)</publisher>
|
||||
<info name="release" value="199204xx" />
|
||||
@ -8696,7 +8715,7 @@ User/save disks that can be created from the game itself are not included.
|
||||
<rom name="Zoku Dungeon Master - Chaos no Gyakushuu.img" size="507062976" crc="c99fc7ea" sha1="c03933fbc0c6a761a2ea56909b08c5439f9016c5"/>
|
||||
<rom name="Zoku Dungeon Master - Chaos no Gyakushuu.sub" size="20696448" crc="85a1d575" sha1="7c1a263a45d652c298d130dc44a3ba79baa8495c"/>
|
||||
-->
|
||||
<description>Zoku Dungeon Master: Chaos no Gyakushuu</description>
|
||||
<description>Zoku Dungeon Master - Chaos no Gyakushuu</description>
|
||||
<year>1990</year>
|
||||
<publisher>ビクター音楽産業 (Victor Musical Industries)</publisher>
|
||||
<info name="release" value="199012xx" />
|
||||
|
@ -2006,7 +2006,7 @@ Published by Others (T-yyy*** serial codes, for yyy depending on the publisher)
|
||||
<feature name="pcb" value="" />
|
||||
<feature name="ic1" value="PICO-9515I" />
|
||||
<dataarea name="flop" size="2097152">
|
||||
<rom name="pico-9515i.ic1" size="2097152" crc="63e37ab9" sha1="a7ff319deaffbb27d732d86ad42458f26e4fcb12" offset="0" loadflag="load16_word_swap" />
|
||||
<rom name="pico-9515i.ic1" size="1048576" crc="c7eb7f24" sha1="5058640eb70268345e6e630ac78958c99121e294" offset="0" loadflag="load16_word_swap" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
@ -901,7 +901,18 @@ V.Baby (NOT V.Smile Baby)
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="cinderlaa" cloneof="cinderla" supported="no">
|
||||
<description>Cinderella - Cinderella's Magic Wishes (USA, Alt)</description>
|
||||
<year>200?</year>
|
||||
<publisher>VTech</publisher>
|
||||
<part name="cart" interface="vsmile_cart">
|
||||
<dataarea name="rom" size="8388608">
|
||||
<rom name="disney princess cinderella - cinderella's magic wishes [52-92240(us)].bin" size="8388608" crc="0a89723c" sha1="15082b565f6f71a0f993c2734cb807f37611eb17" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="cinderlaf" cloneof="cinderla" supported="no">
|
||||
<description>Cendrillon - Le Rêve Enchanté de Cendrillon (Fra)</description>
|
||||
<year>200?</year>
|
||||
@ -1111,8 +1122,19 @@ V.Baby (NOT V.Smile Baby)
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="mickymag" supported="no">
|
||||
<description>Disney's Mickey Mouse - Mickey's Magical Adventure (USA)</description>
|
||||
<year>200?</year>
|
||||
<publisher>VTech</publisher>
|
||||
<part name="cart" interface="vsmile_cart">
|
||||
<dataarea name="rom" size="8388608">
|
||||
<rom name="disney's mickey mouse - mickey's magical adventure [no id].bin" size="8388608" crc="997a8a07" sha1="cd70c7249e25a37aeb3a3b85f56bd2b39dbf3d73" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mickymagg" cloneof="mickymag" supported="no">
|
||||
<description>Micky - Mickys magisches Abenteuer (Ger)</description>
|
||||
<year>200?</year>
|
||||
<publisher>VTech</publisher>
|
||||
@ -1452,8 +1474,19 @@ V.Baby (NOT V.Smile Baby)
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="toystor2" supported="no">
|
||||
<description>Toy Story 2 - Operation: Rescue Woody! (USA)</description>
|
||||
<year>2005</year>
|
||||
<publisher>VTech</publisher>
|
||||
<part name="cart" interface="vsmile_cart">
|
||||
<dataarea name="rom" size="8388608">
|
||||
<rom name="toy story 2 - operation- rescue woody! [52-92220(us)] (2005).bin" size="8388608" crc="6335b0e1" sha1="ddb4bcc5f9b155041bf4ffce236f57cfae3fdec2" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="toystor2g" cloneof="toystor2" supported="no">
|
||||
<description>Toy Story 2 - Woodys Spannende Rettung (Ger)</description>
|
||||
<year>200?</year>
|
||||
<publisher>VTech</publisher>
|
||||
@ -1584,8 +1617,19 @@ V.Baby (NOT V.Smile Baby)
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="zayzoo" supported="no">
|
||||
<description>Zayzoo - My Alien Classmate (USA)</description>
|
||||
<year>200?</year>
|
||||
<publisher>VTech</publisher>
|
||||
<part name="cart" interface="vsmile_cart">
|
||||
<dataarea name="rom" size="8388608">
|
||||
<rom name="zayzoo - my alien classmate [52-92360(us)].bin" size="8388608" crc="76ff9718" sha1="be783c1abe96f785564f5b5b6b4ea089b799c1d4" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="zayzoog" cloneof="zayzoo" supported="no">
|
||||
<description>Zayzoo's Lernall (Ger)</description>
|
||||
<year>200?</year>
|
||||
<publisher>VTech</publisher>
|
||||
@ -1621,8 +1665,19 @@ V.Baby (NOT V.Smile Baby)
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="poohhawa" supported="no">
|
||||
<description>Pooh's Hundred Acre Wood Adventure (USA) (V.Smile Baby)</description>
|
||||
<year>2007</year>
|
||||
<publisher>VTech</publisher>
|
||||
<part name="cart" interface="vsmile_cart">
|
||||
<dataarea name="rom" size="8388608">
|
||||
<rom name="pooh's hundred acre wood adventure [099020] (2007) (baby).bin" size="8388608" crc="a3ac4cd4" sha1="3562c632e0a1e70cb9e382ebb823449757afed67" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="poohvb" supported="no">
|
||||
<software name="poohvb" cloneof="poohhawa" supported="no">
|
||||
<description>Nalle Puhs Aeventyr i Sjumilaskogen (Swe) (V.Smile Baby)</description>
|
||||
<year>200?</year>
|
||||
<publisher>VTech</publisher>
|
||||
|
@ -795,15 +795,12 @@ end
|
||||
MAME_DIR .. "3rdparty/bgfx/examples/common/font/utf8.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/examples/common/imgui/imgui.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/examples/common/imgui/ocornut_imgui.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/examples/common/imgui/scintilla.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/examples/common/nanovg/nanovg.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/3rdparty/ib-compress/indexbuffercompression.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/3rdparty/ib-compress/indexbufferdecompression.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_draw.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_node_graph_test.cpp",
|
||||
MAME_DIR .. "3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_wm.cpp",
|
||||
}
|
||||
if _OPTIONS["targetos"]=="macosx" then
|
||||
|
@ -2117,6 +2117,9 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/ddribble.cpp",
|
||||
MAME_DIR .. "src/mame/includes/ddribble.h",
|
||||
MAME_DIR .. "src/mame/video/ddribble.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/divebomb.cpp",
|
||||
MAME_DIR .. "src/mame/includes/divebomb.h",
|
||||
MAME_DIR .. "src/mame/video/divebomb.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/djmain.cpp",
|
||||
MAME_DIR .. "src/mame/includes/djmain.h",
|
||||
MAME_DIR .. "src/mame/video/djmain.cpp",
|
||||
|
@ -72,7 +72,7 @@ machine_config_constructor z88_1024k_flash_device::device_mconfig_additions() co
|
||||
|
||||
UINT8* z88_1024k_flash_device::get_cart_base()
|
||||
{
|
||||
return (UINT8*)m_flash->space().get_read_ptr(0);
|
||||
return m_flash->base();
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
@ -90,7 +90,8 @@ CPU_DISASSEMBLE( asap )
|
||||
else if (rsrc2_iszero)
|
||||
sprintf(buffer, "mov%s %s,%s", setcond[cond], reg[rsrc1], reg[rdst]);
|
||||
else
|
||||
sprintf(buffer, "add%s %s,%s,%s", setcond[cond], reg[rsrc1], src2(op,0), reg[rdst]); break;
|
||||
sprintf(buffer, "add%s %s,%s,%s", setcond[cond], reg[rsrc1], src2(op,0), reg[rdst]);
|
||||
break;
|
||||
case 0x09: sprintf(buffer, "sub%s %s,%s,%s", setcond[cond], reg[rsrc1], src2(op,0), reg[rdst]); break;
|
||||
case 0x0a: sprintf(buffer, "addc%s %s,%s,%s", setcond[cond], reg[rsrc1], src2(op,0), reg[rdst]); break;
|
||||
case 0x0b: sprintf(buffer, "subc%s %s,%s,%s", setcond[cond], reg[rsrc1], src2(op,0), reg[rdst]); break;
|
||||
@ -103,7 +104,8 @@ CPU_DISASSEMBLE( asap )
|
||||
else if (rsrc2_iszero)
|
||||
sprintf(buffer, "mov%s %s,%s", setcond[cond], reg[rsrc1], reg[rdst]);
|
||||
else
|
||||
sprintf(buffer, "or%s %s,%s,%s", setcond[cond], reg[rsrc1], src2(op,0), reg[rdst]); break;
|
||||
sprintf(buffer, "or%s %s,%s,%s", setcond[cond], reg[rsrc1], src2(op,0), reg[rdst]);
|
||||
break;
|
||||
case 0x0f: sprintf(buffer, "orn%s %s,%s,%s", setcond[cond], reg[rsrc1], src2(op,0), reg[rdst]); break;
|
||||
case 0x10: sprintf(buffer, "ld%s %s[%s],%s", setcond[cond], reg[rsrc1], src2(op,2), reg[rdst]); break;
|
||||
case 0x11: sprintf(buffer, "ldh%s %s[%s],%s", setcond[cond], reg[rsrc1], src2(op,1), reg[rdst]); break;
|
||||
@ -137,7 +139,7 @@ CPU_DISASSEMBLE( asap )
|
||||
}
|
||||
else
|
||||
sprintf(buffer, "jmp%s %s[%s]", setcond[cond], reg[rsrc1], src2(op,2));
|
||||
break;
|
||||
break;
|
||||
case 0x1f: sprintf(buffer, "trap $1f"); flags = DASMFLAG_STEP_OVER; break;
|
||||
}
|
||||
return 4 | flags | DASMFLAG_SUPPORTED;
|
||||
|
@ -57,7 +57,7 @@ def save_full_one(f, t, name, source):
|
||||
print(line, file=f)
|
||||
substate += 1
|
||||
elif has_eat(line):
|
||||
print("\tif(icount) icount = bcount; inst_substate = %d; return;" % substate, file=f)
|
||||
print("\tif(icount) { icount = bcount; } inst_substate = %d; return;" % substate, file=f)
|
||||
substate += 1
|
||||
else:
|
||||
print(line, file=f)
|
||||
@ -77,7 +77,7 @@ def save_partial_one(f, t, name, source):
|
||||
print(line, file=f)
|
||||
substate += 1
|
||||
elif has_eat(line):
|
||||
print("\tif(icount) icount = bcount; inst_substate = %d; return;" % substate, file=f)
|
||||
print("\tif(icount) { icount = bcount; } inst_substate = %d; return;" % substate, file=f)
|
||||
print("case %d:;" % substate, file=f)
|
||||
substate += 1
|
||||
else:
|
||||
|
@ -24,7 +24,8 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0x02: if (!upi41)
|
||||
sprintf(buffer, "out bus,a");
|
||||
else
|
||||
sprintf(buffer, "out dbb,a"); break;
|
||||
sprintf(buffer, "out dbb,a");
|
||||
break;
|
||||
case 0x03: sprintf(buffer, "add a,#$%02X", *opram++); break;
|
||||
case 0x04: sprintf(buffer, "jmp $0%02X", *opram++); break;
|
||||
case 0x05: sprintf(buffer, "en i"); break;
|
||||
@ -32,7 +33,8 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0x08: if (!upi41)
|
||||
sprintf(buffer, "in a,bus");
|
||||
else
|
||||
sprintf(buffer, "illegal"); break;
|
||||
sprintf(buffer, "illegal");
|
||||
break;
|
||||
case 0x09: sprintf(buffer, "in a,p1"); break;
|
||||
case 0x0a: sprintf(buffer, "in a,p2"); break;
|
||||
case 0x0c: sprintf(buffer, "movd a,p4"); break;
|
||||
@ -60,7 +62,8 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0x22: if (!upi41)
|
||||
sprintf(buffer, "illegal");
|
||||
else
|
||||
sprintf(buffer, "in a,dbb"); break;
|
||||
sprintf(buffer, "in a,dbb");
|
||||
break;
|
||||
case 0x23: sprintf(buffer, "mov a,#$%02X", *opram++); break;
|
||||
case 0x24: sprintf(buffer, "jmp $1%02X", *opram++); break;
|
||||
case 0x25: sprintf(buffer, "en tcnti"); break;
|
||||
@ -140,7 +143,8 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0x75: if (!upi41)
|
||||
sprintf(buffer, "ent0 clk");
|
||||
else
|
||||
sprintf(buffer, "illegal"); break;
|
||||
sprintf(buffer, "illegal");
|
||||
break;
|
||||
case 0x76: sprintf(buffer, "jf1 $%03X", (pc & 0xf00) | *opram++); break;
|
||||
case 0x77: sprintf(buffer, "rr a"); break;
|
||||
case 0x78: sprintf(buffer, "addc a,r0"); break;
|
||||
@ -154,22 +158,26 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0x80: if (!upi41)
|
||||
sprintf(buffer, "movx a,@r0");
|
||||
else
|
||||
sprintf(buffer, "illegal"); break;
|
||||
sprintf(buffer, "illegal");
|
||||
break;
|
||||
case 0x81: if (!upi41)
|
||||
sprintf(buffer, "movx a,@r1");
|
||||
else
|
||||
sprintf(buffer, "illegal"); break;
|
||||
sprintf(buffer, "illegal");
|
||||
break;
|
||||
case 0x83: sprintf(buffer, "ret"); flags = DASMFLAG_STEP_OUT; break;
|
||||
case 0x84: sprintf(buffer, "jmp $4%02X", *opram++); break;
|
||||
case 0x85: sprintf(buffer, "clr f0"); break;
|
||||
case 0x86: if (!upi41)
|
||||
sprintf(buffer, "jni $%03X", (pc & 0xf00) | *opram++);
|
||||
else
|
||||
sprintf(buffer, "jobf $%03X", (pc & 0xf00) | *opram++); break;
|
||||
sprintf(buffer, "jobf $%03X", (pc & 0xf00) | *opram++);
|
||||
break;
|
||||
case 0x88: if (!upi41)
|
||||
sprintf(buffer, "orl bus,#$%02X", *opram++);
|
||||
else
|
||||
sprintf(buffer, "illegal"); break;
|
||||
sprintf(buffer, "illegal");
|
||||
break;
|
||||
case 0x89: sprintf(buffer, "orl p1,#$%02X", *opram++); break;
|
||||
case 0x8a: sprintf(buffer, "orl p2,#$%02X", *opram++); break;
|
||||
case 0x8c: sprintf(buffer, "orld p4,a"); break;
|
||||
@ -179,11 +187,13 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0x90: if (!upi41)
|
||||
sprintf(buffer, "movx @r0,a");
|
||||
else
|
||||
sprintf(buffer, "mov sts,a"); break;
|
||||
sprintf(buffer, "mov sts,a");
|
||||
break;
|
||||
case 0x91: if (!upi41)
|
||||
sprintf(buffer, "movx @r1,a");
|
||||
else
|
||||
sprintf(buffer, "illegal"); break;
|
||||
sprintf(buffer, "illegal");
|
||||
break;
|
||||
case 0x92: sprintf(buffer, "jb4 $%03X", (pc & 0xf00) | *opram++); break;
|
||||
case 0x93: sprintf(buffer, "retr"); flags = DASMFLAG_STEP_OUT; break;
|
||||
case 0x94: sprintf(buffer, "call $4%02X", *opram++); flags = DASMFLAG_STEP_OVER; break;
|
||||
@ -193,7 +203,8 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0x98: if (!upi41)
|
||||
sprintf(buffer, "anl bus,#$%02X", *opram++);
|
||||
else
|
||||
sprintf(buffer, "illegal"); break;
|
||||
sprintf(buffer, "illegal");
|
||||
break;
|
||||
case 0x99: sprintf(buffer, "anl p1,#$%02X", *opram++); break;
|
||||
case 0x9a: sprintf(buffer, "anl p2,#$%02X", *opram++); break;
|
||||
case 0x9c: sprintf(buffer, "anld p4,a"); break;
|
||||
@ -250,7 +261,8 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0xd6: if (!upi41)
|
||||
sprintf(buffer, "illegal");
|
||||
else
|
||||
sprintf(buffer, "jnibf $%03X", (pc & 0xf00) | *opram++); break;
|
||||
sprintf(buffer, "jnibf $%03X", (pc & 0xf00) | *opram++);
|
||||
break;
|
||||
case 0xd7: sprintf(buffer, "mov psw,a"); break;
|
||||
case 0xd8: sprintf(buffer, "xrl a,r0"); break;
|
||||
case 0xd9: sprintf(buffer, "xrl a,r1"); break;
|
||||
@ -265,7 +277,8 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0xe5: if (!upi41)
|
||||
sprintf(buffer, "sel mb0");
|
||||
else
|
||||
sprintf(buffer, "en dma"); break;
|
||||
sprintf(buffer, "en dma");
|
||||
break;
|
||||
case 0xe6: sprintf(buffer, "jnc $%03X", (pc & 0xf00) | *opram++); break;
|
||||
case 0xe7: sprintf(buffer, "rl a"); break;
|
||||
case 0xe8: sprintf(buffer, "djnz r0,$%03X", (pc & 0xf00) | *opram++); flags = DASMFLAG_STEP_OVER; break;
|
||||
@ -283,7 +296,8 @@ static UINT32 common_dasm(device_t *device, char *buffer, offs_t pc, const UINT8
|
||||
case 0xf5: if (!upi41)
|
||||
sprintf(buffer, "sel mb1");
|
||||
else
|
||||
sprintf(buffer, "en flags"); break;
|
||||
sprintf(buffer, "en flags");
|
||||
break;
|
||||
case 0xf6: sprintf(buffer, "jc $%03X", (pc & 0xf00) | *opram++); break;
|
||||
case 0xf7: sprintf(buffer, "rlc a"); break;
|
||||
case 0xf8: sprintf(buffer, "mov a,r0"); break;
|
||||
|
@ -373,7 +373,8 @@ unsigned dasmmips3(char *buffer, unsigned pc, UINT32 op)
|
||||
case 0x00: if (op == 0)
|
||||
sprintf(buffer, "nop");
|
||||
else
|
||||
sprintf(buffer, "sll %s,%s,%d", reg[rd], reg[rt], shift); break;
|
||||
sprintf(buffer, "sll %s,%s,%d", reg[rd], reg[rt], shift);
|
||||
break;
|
||||
case 0x01: sprintf(buffer, "mov%c %s,%s,%d", ((op >> 16) & 1) ? 't' : 'f', reg[rd], reg[rs], (op >> 18) & 7); break;
|
||||
case 0x02: sprintf(buffer, "srl %s,%s,%d", reg[rd], reg[rt], shift); break;
|
||||
case 0x03: sprintf(buffer, "sra %s,%s,%d", reg[rd], reg[rt], shift); break;
|
||||
@ -384,7 +385,9 @@ unsigned dasmmips3(char *buffer, unsigned pc, UINT32 op)
|
||||
case 0x09: if (rd == 31)
|
||||
sprintf(buffer, "jalr %s", reg[rs]);
|
||||
else
|
||||
sprintf(buffer, "jalr %s,%s", reg[rs], reg[rd]); flags = DASMFLAG_STEP_OVER | DASMFLAG_STEP_OVER_EXTRA(1); break;
|
||||
sprintf(buffer, "jalr %s,%s", reg[rs], reg[rd]);
|
||||
flags = DASMFLAG_STEP_OVER | DASMFLAG_STEP_OVER_EXTRA(1);
|
||||
break;
|
||||
case 0x0a: sprintf(buffer, "movz %s,%s,%s", reg[rd], reg[rs], reg[rt]); break;
|
||||
case 0x0b: sprintf(buffer, "movn %s,%s,%s", reg[rd], reg[rs], reg[rt]); break;
|
||||
case 0x0c: sprintf(buffer, "syscall"); flags = DASMFLAG_STEP_OVER; break;
|
||||
@ -461,7 +464,8 @@ unsigned dasmmips3(char *buffer, unsigned pc, UINT32 op)
|
||||
case 0x04: if (rs == 0 && rt == 0)
|
||||
sprintf(buffer, "b $%08x", pc + 4 + ((INT16)op << 2));
|
||||
else
|
||||
sprintf(buffer, "beq %s,%s,$%08x", reg[rs], reg[rt], pc + 4 + ((INT16)op << 2));break;
|
||||
sprintf(buffer, "beq %s,%s,$%08x", reg[rs], reg[rt], pc + 4 + ((INT16)op << 2));
|
||||
break;
|
||||
case 0x05: sprintf(buffer, "bne %s,%s,$%08x", reg[rs], reg[rt], pc + 4 + ((INT16)op << 2));break;
|
||||
case 0x06: sprintf(buffer, "blez %s,$%08x", reg[rs], pc + 4 + ((INT16)op << 2)); break;
|
||||
case 0x07: sprintf(buffer, "bgtz %s,$%08x", reg[rs], pc + 4 + ((INT16)op << 2)); break;
|
||||
|
@ -144,7 +144,8 @@ static UINT32 dasm_cop(UINT32 pc, int cop, UINT32 op, char *buffer)
|
||||
}
|
||||
}
|
||||
else
|
||||
sprintf(buffer, "cop%d $%07x", cop, op & 0x01ffffff); break;
|
||||
sprintf(buffer, "cop%d $%07x", cop, op & 0x01ffffff);
|
||||
break;
|
||||
default: sprintf(buffer, "dc.l $%08x [invalid]", op); break;
|
||||
}
|
||||
|
||||
@ -250,7 +251,8 @@ static unsigned dasmr3k(char *buffer, unsigned pc, UINT32 op)
|
||||
case 0x00: if (op == 0)
|
||||
sprintf(buffer, "nop");
|
||||
else
|
||||
sprintf(buffer, "sll %s,%s,%d", reg[rd], reg[rt], shift); break;
|
||||
sprintf(buffer, "sll %s,%s,%d", reg[rd], reg[rt], shift);
|
||||
break;
|
||||
case 0x02: sprintf(buffer, "srl %s,%s,%d", reg[rd], reg[rt], shift); break;
|
||||
case 0x03: sprintf(buffer, "sra %s,%s,%d", reg[rd], reg[rt], shift); break;
|
||||
case 0x04: sprintf(buffer, "sllv %s,%s,%s", reg[rd], reg[rt], reg[rs]); break;
|
||||
@ -260,7 +262,9 @@ static unsigned dasmr3k(char *buffer, unsigned pc, UINT32 op)
|
||||
case 0x09: if (rd == 31)
|
||||
sprintf(buffer, "jalr %s", reg[rs]);
|
||||
else
|
||||
sprintf(buffer, "jalr %s,%s", reg[rs], reg[rd]); flags = DASMFLAG_STEP_OVER | DASMFLAG_STEP_OVER_EXTRA(1); break;
|
||||
sprintf(buffer, "jalr %s,%s", reg[rs], reg[rd]);
|
||||
flags = DASMFLAG_STEP_OVER | DASMFLAG_STEP_OVER_EXTRA(1);
|
||||
break;
|
||||
case 0x0c: sprintf(buffer, "syscall"); flags = DASMFLAG_STEP_OVER; break;
|
||||
case 0x0d: sprintf(buffer, "break"); flags = DASMFLAG_STEP_OVER; break;
|
||||
case 0x0f: sprintf(buffer, "sync [invalid]"); break;
|
||||
@ -318,7 +322,8 @@ static unsigned dasmr3k(char *buffer, unsigned pc, UINT32 op)
|
||||
case 0x04: if (rs == 0 && rt == 0)
|
||||
sprintf(buffer, "b $%08x", pc + 4 + ((INT16)op << 2));
|
||||
else
|
||||
sprintf(buffer, "beq %s,%s,$%08x", reg[rs], reg[rt], pc + 4 + ((INT16)op << 2));break;
|
||||
sprintf(buffer, "beq %s,%s,$%08x", reg[rs], reg[rt], pc + 4 + ((INT16)op << 2));
|
||||
break;
|
||||
case 0x05: sprintf(buffer, "bne %s,%s,$%08x", reg[rs], reg[rt], pc + 4 + ((INT16)op << 2));break;
|
||||
case 0x06: sprintf(buffer, "blez %s,$%08x", reg[rs], pc + 4 + ((INT16)op << 2)); break;
|
||||
case 0x07: sprintf(buffer, "bgtz %s,$%08x", reg[rs], pc + 4 + ((INT16)op << 2)); break;
|
||||
|
@ -444,7 +444,7 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
|
||||
case 1:
|
||||
/* opcode is dcs */
|
||||
opc = _dcs;
|
||||
break;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case 3: /* should be 2, but instruction decoding is incomplete */
|
||||
@ -458,11 +458,11 @@ unsigned Dasm9900 (char *buffer, unsigned pc, int model_id, const UINT8 *oprom,
|
||||
instead of the immediate. Since I do not know, I handle this
|
||||
as an illegal instruction. */
|
||||
opc = _ill;
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
/* this is still a software xop */
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -438,10 +438,10 @@ bool floppy_image_device::call_load()
|
||||
if (!cur_load_cb.isnull())
|
||||
return cur_load_cb(this);
|
||||
|
||||
if (motor_always_on) {
|
||||
// When disk is inserted, start motor
|
||||
mon_w(0);
|
||||
} else if(!mon)
|
||||
if (motor_always_on) {
|
||||
// When disk is inserted, start motor
|
||||
mon_w(0);
|
||||
} else if(!mon)
|
||||
ready_counter = 2;
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
@ -469,10 +469,10 @@ void floppy_image_device::call_unload()
|
||||
if (!cur_unload_cb.isnull())
|
||||
cur_unload_cb(this);
|
||||
|
||||
if (motor_always_on) {
|
||||
// When disk is removed, stop motor
|
||||
mon_w(1);
|
||||
} else if(!ready) {
|
||||
if (motor_always_on) {
|
||||
// When disk is removed, stop motor
|
||||
mon_w(1);
|
||||
} else if(!ready) {
|
||||
ready = true;
|
||||
if(!cur_ready_cb.isnull())
|
||||
cur_ready_cb(this, ready);
|
||||
|
@ -105,6 +105,10 @@ void cs8221_device::device_reset()
|
||||
//**************************************************************************
|
||||
// READ/WRITE HANDLERS
|
||||
//**************************************************************************
|
||||
DEVICE_ADDRESS_MAP_START( map, 16, cs8221_device )
|
||||
AM_RANGE(0x0022, 0x0023) AM_DEVWRITE8("cs8221", cs8221_device, address_w, 0x00ff)
|
||||
AM_RANGE(0x0022, 0x0023) AM_DEVREADWRITE8("cs8221", cs8221_device, data_r, data_w, 0xff00)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
WRITE8_MEMBER( cs8221_device::address_w )
|
||||
{
|
||||
|
@ -49,6 +49,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER( address_w );
|
||||
DECLARE_READ8_MEMBER( data_r );
|
||||
DECLARE_WRITE8_MEMBER( data_w );
|
||||
DECLARE_ADDRESS_MAP(map, 16);
|
||||
|
||||
// inline configuration
|
||||
static void static_set_cputag(device_t &device, const char *tag);
|
||||
|
@ -21,21 +21,6 @@
|
||||
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// GLOBAL VARIABLES
|
||||
//**************************************************************************
|
||||
|
||||
static ADDRESS_MAP_START( eeprom_map8, AS_PROGRAM, 8, eeprom_base_device )
|
||||
AM_RANGE(0x00000, 0xfffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( eeprom_map16, AS_PROGRAM, 16, eeprom_base_device )
|
||||
AM_RANGE(0x00000, 0x7ffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
@ -46,7 +31,6 @@ ADDRESS_MAP_END
|
||||
|
||||
eeprom_base_device::eeprom_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file)
|
||||
: device_t(mconfig, devtype, name, tag, owner, 0, shortname, file),
|
||||
device_memory_interface(mconfig, *this),
|
||||
device_nvram_interface(mconfig, *this),
|
||||
m_region(*this, DEVICE_SELF),
|
||||
m_cells(0),
|
||||
@ -85,12 +69,6 @@ void eeprom_base_device::static_set_size(device_t &device, int cells, int cellbi
|
||||
cells >>= 1;
|
||||
eeprom.m_address_bits++;
|
||||
}
|
||||
|
||||
// describe our address space
|
||||
if (eeprom.m_data_bits == 8)
|
||||
eeprom.m_space_config = address_space_config("eeprom", ENDIANNESS_BIG, 8, eeprom.m_address_bits, 0, *ADDRESS_MAP_NAME(eeprom_map8));
|
||||
else
|
||||
eeprom.m_space_config = address_space_config("eeprom", ENDIANNESS_BIG, 16, eeprom.m_address_bits * 2, 0, *ADDRESS_MAP_NAME(eeprom_map16));
|
||||
}
|
||||
|
||||
|
||||
@ -231,8 +209,12 @@ void eeprom_base_device::device_validity_check(validity_checker &valid) const
|
||||
|
||||
void eeprom_base_device::device_start()
|
||||
{
|
||||
UINT32 size = (m_data_bits == 8 ? 1 : 2) << m_address_bits;
|
||||
m_data = std::make_unique<UINT8 []>(size);
|
||||
|
||||
// save states
|
||||
save_item(NAME(m_completion_time));
|
||||
save_pointer(m_data.get(), "m_data", size);
|
||||
}
|
||||
|
||||
|
||||
@ -247,17 +229,6 @@ void eeprom_base_device::device_reset()
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// memory_space_config - return a description of
|
||||
// any address spaces owned by this device
|
||||
//-------------------------------------------------
|
||||
|
||||
const address_space_config *eeprom_base_device::memory_space_config(address_spacenum spacenum) const
|
||||
{
|
||||
return (spacenum == 0) ? &m_space_config : nullptr;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// nvram_default - called to initialize NVRAM to
|
||||
// its default state
|
||||
@ -271,10 +242,7 @@ void eeprom_base_device::nvram_default()
|
||||
// initialize to the default value
|
||||
UINT32 default_value = m_default_value_set ? m_default_value : ~0;
|
||||
for (offs_t offs = 0; offs < eeprom_length; offs++)
|
||||
if (m_data_bits == 8)
|
||||
space(AS_PROGRAM).write_byte(offs, default_value);
|
||||
else
|
||||
space(AS_PROGRAM).write_word(offs * 2, default_value);
|
||||
internal_write(offs, default_value);
|
||||
|
||||
// handle hard-coded data from the driver
|
||||
if (m_default_data.u8 != nullptr)
|
||||
@ -283,9 +251,9 @@ void eeprom_base_device::nvram_default()
|
||||
for (offs_t offs = 0; offs < m_default_data_size; offs++)
|
||||
{
|
||||
if (m_data_bits == 8)
|
||||
space(AS_PROGRAM).write_byte(offs, m_default_data.u8[offs]);
|
||||
internal_write(offs, m_default_data.u8[offs]);
|
||||
else
|
||||
space(AS_PROGRAM).write_word(offs * 2, m_default_data.u16[offs]);
|
||||
internal_write(offs, m_default_data.u16[offs]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -300,18 +268,7 @@ void eeprom_base_device::nvram_default()
|
||||
fatalerror("eeprom region '%s' needs to be a 16-bit big-endian region\n", tag());
|
||||
osd_printf_verbose("Loading data from EEPROM region '%s'\n", tag());
|
||||
|
||||
if (m_data_bits == 8)
|
||||
{
|
||||
UINT8 *default_data = m_region->base();
|
||||
for (offs_t offs = 0; offs < eeprom_length; offs++)
|
||||
space(AS_PROGRAM).write_byte(offs, default_data[offs]);
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT16 *default_data = (UINT16 *)(m_region->base());
|
||||
for (offs_t offs = 0; offs < eeprom_length; offs++)
|
||||
space(AS_PROGRAM).write_word(offs * 2, default_data[offs]);
|
||||
}
|
||||
memcpy(&m_data[0], m_region->base(), eeprom_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
@ -326,10 +283,7 @@ void eeprom_base_device::nvram_read(emu_file &file)
|
||||
UINT32 eeprom_length = 1 << m_address_bits;
|
||||
UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8;
|
||||
|
||||
dynamic_buffer buffer(eeprom_bytes);
|
||||
file.read(&buffer[0], eeprom_bytes);
|
||||
for (offs_t offs = 0; offs < eeprom_bytes; offs++)
|
||||
space(AS_PROGRAM).write_byte(offs, buffer[offs]);
|
||||
file.read(&m_data[0], eeprom_bytes);
|
||||
}
|
||||
|
||||
|
||||
@ -343,10 +297,7 @@ void eeprom_base_device::nvram_write(emu_file &file)
|
||||
UINT32 eeprom_length = 1 << m_address_bits;
|
||||
UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8;
|
||||
|
||||
dynamic_buffer buffer(eeprom_bytes);
|
||||
for (offs_t offs = 0; offs < eeprom_bytes; offs++)
|
||||
buffer[offs] = space(AS_PROGRAM).read_byte(offs);
|
||||
file.write(&buffer[0], eeprom_bytes);
|
||||
file.write(&m_data[0], eeprom_bytes);
|
||||
}
|
||||
|
||||
|
||||
@ -357,9 +308,9 @@ void eeprom_base_device::nvram_write(emu_file &file)
|
||||
UINT32 eeprom_base_device::internal_read(offs_t address)
|
||||
{
|
||||
if (m_data_bits == 16)
|
||||
return space(AS_PROGRAM).read_word(address * 2);
|
||||
return m_data[address * 2] | (m_data[address * 2 + 1] << 8);
|
||||
else
|
||||
return space(AS_PROGRAM).read_byte(address);
|
||||
return m_data[address];
|
||||
}
|
||||
|
||||
|
||||
@ -371,7 +322,9 @@ UINT32 eeprom_base_device::internal_read(offs_t address)
|
||||
void eeprom_base_device::internal_write(offs_t address, UINT32 data)
|
||||
{
|
||||
if (m_data_bits == 16)
|
||||
space(AS_PROGRAM).write_word(address * 2, data);
|
||||
else
|
||||
space(AS_PROGRAM).write_byte(address, data);
|
||||
{
|
||||
m_data[address*2] = data;
|
||||
m_data[address*2+1] = data >> 8;
|
||||
} else
|
||||
m_data[address] = data;
|
||||
}
|
||||
|
@ -44,8 +44,7 @@
|
||||
// ======================> eeprom_base_device
|
||||
|
||||
class eeprom_base_device : public device_t,
|
||||
public device_memory_interface,
|
||||
public device_nvram_interface
|
||||
public device_nvram_interface
|
||||
{
|
||||
protected:
|
||||
// construction/destruction
|
||||
@ -79,31 +78,29 @@ public:
|
||||
// status
|
||||
bool ready() const { return machine().time() >= m_completion_time; }
|
||||
|
||||
// internal read/write without side-effects
|
||||
UINT32 internal_read(offs_t address);
|
||||
void internal_write(offs_t address, UINT32 data);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_validity_check(validity_checker &valid) const override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
|
||||
|
||||
// device_nvram_interface overrides
|
||||
virtual void nvram_default() override;
|
||||
virtual void nvram_read(emu_file &file) override;
|
||||
virtual void nvram_write(emu_file &file) override;
|
||||
|
||||
// internal read/write without side-effects
|
||||
UINT32 internal_read(offs_t address);
|
||||
void internal_write(offs_t address, UINT32 data);
|
||||
|
||||
optional_memory_region m_region;
|
||||
|
||||
std::unique_ptr<UINT8 []> m_data;
|
||||
|
||||
// configuration state
|
||||
UINT32 m_cells;
|
||||
UINT8 m_address_bits;
|
||||
UINT8 m_data_bits;
|
||||
address_space_config m_space_config;
|
||||
generic_ptr m_default_data;
|
||||
UINT32 m_default_data_size;
|
||||
UINT32 m_default_value;
|
||||
|
@ -60,11 +60,6 @@ static inline void ATTR_PRINTF( 3, 4 ) verboselog( device_t *device, int n_level
|
||||
// device type definition
|
||||
const device_type I2CMEM = &device_creator<i2cmem_device>;
|
||||
|
||||
static ADDRESS_MAP_START( i2cmem_map8, AS_PROGRAM, 8, i2cmem_device )
|
||||
AM_RANGE(0x0000, 0x0fff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
@ -76,7 +71,6 @@ ADDRESS_MAP_END
|
||||
|
||||
i2cmem_device::i2cmem_device( const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock )
|
||||
: device_t(mconfig, I2CMEM, "I2C Memory", tag, owner, clock, "i2cmem", __FILE__),
|
||||
device_memory_interface(mconfig, *this),
|
||||
device_nvram_interface(mconfig, *this),
|
||||
m_region(*this, DEVICE_SELF),
|
||||
m_slave_address( I2CMEM_SLAVE_ADDRESS ),
|
||||
@ -96,25 +90,6 @@ i2cmem_device::i2cmem_device( const machine_config &mconfig, const char *tag, de
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void i2cmem_device::device_config_complete()
|
||||
{
|
||||
int address_bits = 0;
|
||||
|
||||
int i = m_data_size - 1;
|
||||
while( i > 0 )
|
||||
{
|
||||
address_bits++;
|
||||
i >>= 1;
|
||||
}
|
||||
|
||||
m_space_config = address_space_config( "i2cmem", ENDIANNESS_BIG, 8, address_bits, 0, *ADDRESS_MAP_NAME( i2cmem_map8 ) );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -123,6 +98,7 @@ void i2cmem_device::device_config_complete()
|
||||
|
||||
void i2cmem_device::device_start()
|
||||
{
|
||||
m_data = std::make_unique<UINT8 []>(m_data_size);
|
||||
m_page.resize( m_page_size );
|
||||
|
||||
save_item( NAME(m_scl) );
|
||||
@ -137,6 +113,7 @@ void i2cmem_device::device_start()
|
||||
save_item( NAME(m_shift) );
|
||||
save_item( NAME(m_devsel) );
|
||||
save_item( NAME(m_byteaddr) );
|
||||
save_pointer( &m_data[0], "m_data", m_data_size );
|
||||
if ( m_page_size > 0 )
|
||||
{
|
||||
save_item( NAME(m_page) );
|
||||
@ -153,17 +130,6 @@ void i2cmem_device::device_reset()
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// memory_space_config - return a description of
|
||||
// any address spaces owned by this device
|
||||
//-------------------------------------------------
|
||||
|
||||
const address_space_config *i2cmem_device::memory_space_config( address_spacenum spacenum ) const
|
||||
{
|
||||
return ( spacenum == 0 ) ? &m_space_config : nullptr;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// nvram_default - called to initialize NVRAM to
|
||||
// its default state
|
||||
@ -171,20 +137,14 @@ const address_space_config *i2cmem_device::memory_space_config( address_spacenum
|
||||
|
||||
void i2cmem_device::nvram_default()
|
||||
{
|
||||
int i2cmem_bytes = m_data_size;
|
||||
|
||||
UINT16 default_value = 0xff;
|
||||
for( offs_t offs = 0; offs < i2cmem_bytes; offs++ )
|
||||
{
|
||||
space(AS_PROGRAM).write_byte( offs, default_value );
|
||||
}
|
||||
memset(&m_data[0], 0xff, m_data_size);
|
||||
|
||||
/* populate from a memory region if present */
|
||||
if (m_region.found())
|
||||
{
|
||||
if( m_region->bytes() != i2cmem_bytes )
|
||||
if( m_region->bytes() != m_data_size )
|
||||
{
|
||||
fatalerror( "i2cmem region '%s' wrong size (expected size = 0x%X)\n", tag(), i2cmem_bytes );
|
||||
fatalerror( "i2cmem region '%s' wrong size (expected size = 0x%X)\n", tag(), m_data_size );
|
||||
}
|
||||
|
||||
if( m_region->bytewidth() != 1 )
|
||||
@ -192,9 +152,7 @@ void i2cmem_device::nvram_default()
|
||||
fatalerror( "i2cmem region '%s' needs to be an 8-bit region\n", tag() );
|
||||
}
|
||||
|
||||
UINT8 *default_data = m_region->base();
|
||||
for( offs_t offs = 0; offs < i2cmem_bytes; offs++ )
|
||||
space(AS_PROGRAM).write_byte( offs, default_data[offs] );
|
||||
memcpy(&m_data[0], m_region->base(), m_data_size);
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,15 +164,7 @@ void i2cmem_device::nvram_default()
|
||||
|
||||
void i2cmem_device::nvram_read( emu_file &file )
|
||||
{
|
||||
int i2cmem_bytes = m_data_size;
|
||||
dynamic_buffer buffer ( i2cmem_bytes );
|
||||
|
||||
file.read( &buffer[0], i2cmem_bytes );
|
||||
|
||||
for( offs_t offs = 0; offs < i2cmem_bytes; offs++ )
|
||||
{
|
||||
space(AS_PROGRAM).write_byte( offs, buffer[ offs ] );
|
||||
}
|
||||
file.read( &m_data[0], m_data_size );
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -224,15 +174,7 @@ void i2cmem_device::nvram_read( emu_file &file )
|
||||
|
||||
void i2cmem_device::nvram_write( emu_file &file )
|
||||
{
|
||||
int i2cmem_bytes = m_data_size;
|
||||
dynamic_buffer buffer ( i2cmem_bytes );
|
||||
|
||||
for( offs_t offs = 0; offs < i2cmem_bytes; offs++ )
|
||||
{
|
||||
buffer[ offs ] = space(AS_PROGRAM).read_byte( offs );
|
||||
}
|
||||
|
||||
file.write( &buffer[0], i2cmem_bytes );
|
||||
file.write( &m_data[0], m_data_size );
|
||||
}
|
||||
|
||||
|
||||
@ -376,7 +318,7 @@ WRITE_LINE_MEMBER( i2cmem_device::write_scl )
|
||||
|
||||
for( int i = 0; i < m_page_size; i++ )
|
||||
{
|
||||
space(AS_PROGRAM).write_byte( offset + i, m_page[ i ] );
|
||||
m_data[offset + i] = m_page[ i ];
|
||||
}
|
||||
|
||||
m_page_offset = 0;
|
||||
@ -387,7 +329,7 @@ WRITE_LINE_MEMBER( i2cmem_device::write_scl )
|
||||
int offset = data_offset();
|
||||
|
||||
verboselog( this, 1, "data[ %04x ] <- %02x\n", offset, m_shift );
|
||||
space(AS_PROGRAM).write_byte( offset, m_shift );
|
||||
m_data[ offset ] = m_shift;
|
||||
|
||||
m_byteaddr++;
|
||||
}
|
||||
@ -420,7 +362,7 @@ WRITE_LINE_MEMBER( i2cmem_device::write_scl )
|
||||
{
|
||||
int offset = data_offset();
|
||||
|
||||
m_shift = space(AS_PROGRAM).read_byte( offset );
|
||||
m_shift = m_data[offset];
|
||||
verboselog( this, 1, "data[ %04x ] -> %02x\n", offset, m_shift );
|
||||
m_byteaddr++;
|
||||
}
|
||||
|
@ -85,7 +85,6 @@
|
||||
|
||||
class i2cmem_device :
|
||||
public device_t,
|
||||
public device_memory_interface,
|
||||
public device_nvram_interface
|
||||
{
|
||||
public:
|
||||
@ -111,13 +110,9 @@ public:
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete() override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual const address_space_config *memory_space_config( address_spacenum spacenum = AS_0 ) const override;
|
||||
|
||||
// device_nvram_interface overrides
|
||||
virtual void nvram_default() override;
|
||||
virtual void nvram_read( emu_file &file ) override;
|
||||
@ -130,10 +125,8 @@ protected:
|
||||
|
||||
optional_memory_region m_region;
|
||||
|
||||
// device-specific configuration
|
||||
address_space_config m_space_config;
|
||||
|
||||
// internal state
|
||||
std::unique_ptr<UINT8[]> m_data;
|
||||
int m_slave_address;
|
||||
int m_page_size;
|
||||
int m_data_size;
|
||||
|
@ -205,21 +205,20 @@ void i8251_device::transmit_clock()
|
||||
else
|
||||
return;
|
||||
|
||||
if (is_transmit_register_empty()) {
|
||||
if ((m_status & I8251_STATUS_TX_READY) == 0 && (is_tx_enabled() || (m_flags & I8251_DELAYED_TX_EN) != 0)) {
|
||||
start_tx();
|
||||
} else {
|
||||
m_status |= I8251_STATUS_TX_EMPTY;
|
||||
}
|
||||
update_tx_ready();
|
||||
update_tx_empty();
|
||||
if (is_transmit_register_empty()) {
|
||||
if ((m_status & I8251_STATUS_TX_READY) == 0 && (is_tx_enabled() || (m_flags & I8251_DELAYED_TX_EN) != 0)) {
|
||||
start_tx();
|
||||
} else {
|
||||
m_status |= I8251_STATUS_TX_EMPTY;
|
||||
}
|
||||
/* if diserial has bits to send, make them so */
|
||||
if (!is_transmit_register_empty())
|
||||
{
|
||||
UINT8 data = transmit_register_get_data_bit();
|
||||
m_txd_handler(data);
|
||||
}
|
||||
update_tx_ready();
|
||||
update_tx_empty();
|
||||
}
|
||||
/* if diserial has bits to send, make them so */
|
||||
if (!is_transmit_register_empty()) {
|
||||
UINT8 data = transmit_register_get_data_bit();
|
||||
m_txd_handler(data);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* hunt mode? */
|
||||
|
@ -110,48 +110,6 @@ const device_type INTEL_28F320J5 = &device_creator<intel_28f320j5_device>;
|
||||
|
||||
const device_type SST_39VF400A = &device_creator<sst_39vf400a_device>;
|
||||
|
||||
static ADDRESS_MAP_START( memory_map8_512Kb, AS_PROGRAM, 8, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x00ffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( memory_map8_1Mb, AS_PROGRAM, 8, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x01ffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( memory_map8_2Mb, AS_PROGRAM, 8, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x03ffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( memory_map8_4Mb, AS_PROGRAM, 8, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x07ffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( memory_map8_8Mb, AS_PROGRAM, 8, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x0fffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( memory_map8_16Mb, AS_PROGRAM, 8, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x1fffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( memory_map16_4Mb, AS_PROGRAM, 16, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x03ffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( memory_map16_16Mb, AS_PROGRAM, 16, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x0fffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( memory_map16_32Mb, AS_PROGRAM, 16, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x1fffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( memory_map16_64Mb, AS_PROGRAM, 16, intelfsh_device )
|
||||
AM_RANGE(0x00000, 0x3fffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
@ -163,7 +121,6 @@ ADDRESS_MAP_END
|
||||
|
||||
intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source)
|
||||
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
|
||||
device_memory_interface(mconfig, *this),
|
||||
device_nvram_interface(mconfig, *this),
|
||||
m_region(*this, DEVICE_SELF),
|
||||
m_type(variant),
|
||||
@ -182,8 +139,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_timer(nullptr),
|
||||
m_bank(0)
|
||||
{
|
||||
address_map_constructor map = nullptr;
|
||||
|
||||
switch( variant )
|
||||
{
|
||||
case FLASH_INTEL_28F016S5:
|
||||
@ -192,7 +147,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_size = 0x200000;
|
||||
m_maker_id = MFG_INTEL;
|
||||
m_device_id = 0xaa;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_16Mb );
|
||||
break;
|
||||
case FLASH_ATMEL_29C010:
|
||||
m_bits = 8;
|
||||
@ -200,21 +154,18 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_page_size = 0x80;
|
||||
m_maker_id = MFG_ATMEL;
|
||||
m_device_id = 0xd5;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_1Mb );
|
||||
break;
|
||||
case FLASH_AMD_29F010:
|
||||
m_bits = 8;
|
||||
m_size = 0x20000;
|
||||
m_maker_id = MFG_AMD;
|
||||
m_device_id = 0x20;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_1Mb );
|
||||
break;
|
||||
case FLASH_AMD_29F040:
|
||||
m_bits = 8;
|
||||
m_size = 0x80000;
|
||||
m_maker_id = MFG_AMD;
|
||||
m_device_id = 0xa4;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_4Mb );
|
||||
break;
|
||||
case FLASH_AMD_29F080:
|
||||
m_bits = 8;
|
||||
@ -222,7 +173,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_addrmask = 0x7ff;
|
||||
m_maker_id = MFG_AMD;
|
||||
m_device_id = 0xd5;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_8Mb );
|
||||
break;
|
||||
case FLASH_AMD_29F400T:
|
||||
m_bits = 8;
|
||||
@ -230,7 +180,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_AMD;
|
||||
m_device_id = 0x23;
|
||||
m_top_boot_sector = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_4Mb );
|
||||
break;
|
||||
case FLASH_AMD_29F800T:
|
||||
m_bits = 8;
|
||||
@ -238,14 +187,12 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_AMD;
|
||||
m_device_id = 0xda;
|
||||
m_top_boot_sector = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_8Mb );
|
||||
break;
|
||||
case FLASH_AMD_29LV200T:
|
||||
m_bits = 8;
|
||||
m_size = 0x40000;
|
||||
m_maker_id = MFG_AMD;
|
||||
m_device_id = 0x3b;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_2Mb );
|
||||
break;
|
||||
case FLASH_INTEL_28F320J3D:
|
||||
m_bits = 16;
|
||||
@ -253,7 +200,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_INTEL;
|
||||
m_device_id = 0x16;
|
||||
m_sector_is_4k = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map16_32Mb );
|
||||
break;
|
||||
case FLASH_INTEL_28F320J5: // funkball
|
||||
m_bits = 16;
|
||||
@ -261,7 +207,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_INTEL;
|
||||
m_device_id = 0x14;
|
||||
// m_sector_is_4k = true; 128kb?
|
||||
map = ADDRESS_MAP_NAME( memory_map16_32Mb );
|
||||
break;
|
||||
case FLASH_SST_39VF020:
|
||||
m_bits = 8;
|
||||
@ -269,7 +214,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_SST;
|
||||
m_device_id = 0xd6;
|
||||
m_sector_is_4k = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_2Mb );
|
||||
break;
|
||||
case FLASH_SST_39VF400A:
|
||||
m_bits = 16;
|
||||
@ -277,21 +221,18 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_SST;
|
||||
m_device_id = 0xd6;
|
||||
m_sector_is_4k = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map16_4Mb );
|
||||
break;
|
||||
case FLASH_SHARP_LH28F400:
|
||||
m_bits = 16;
|
||||
m_size = 0x80000;
|
||||
m_maker_id = MFG_SHARP;
|
||||
m_device_id = 0xed;
|
||||
map = ADDRESS_MAP_NAME( memory_map16_4Mb );
|
||||
break;
|
||||
case FLASH_INTEL_E28F400B:
|
||||
m_bits = 16;
|
||||
m_size = 0x80000;
|
||||
m_maker_id = MFG_INTEL;
|
||||
m_device_id = 0x4471;
|
||||
map = ADDRESS_MAP_NAME( memory_map16_4Mb );
|
||||
break;
|
||||
case FLASH_FUJITSU_29F160T:
|
||||
m_bits = 8;
|
||||
@ -299,56 +240,48 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_FUJITSU;
|
||||
m_device_id = 0xad;
|
||||
m_top_boot_sector = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_16Mb );
|
||||
break;
|
||||
case FLASH_FUJITSU_29F016A:
|
||||
m_bits = 8;
|
||||
m_size = 0x200000;
|
||||
m_maker_id = MFG_FUJITSU;
|
||||
m_device_id = 0xad;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_16Mb );
|
||||
break;
|
||||
case FLASH_FUJITSU_29DL16X:
|
||||
m_bits = 8;
|
||||
m_size = 0x200000;
|
||||
m_maker_id = MFG_FUJITSU;
|
||||
m_device_id = 0x35;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_16Mb );
|
||||
break;
|
||||
case FLASH_INTEL_E28F008SA:
|
||||
m_bits = 8;
|
||||
m_size = 0x100000;
|
||||
m_maker_id = MFG_INTEL;
|
||||
m_device_id = 0xa2;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_8Mb );
|
||||
break;
|
||||
case FLASH_INTEL_TE28F160:
|
||||
m_bits = 16;
|
||||
m_size = 0x200000;
|
||||
m_maker_id = MFG_SHARP;
|
||||
m_device_id = 0xd0;
|
||||
map = ADDRESS_MAP_NAME( memory_map16_16Mb );
|
||||
break;
|
||||
case FLASH_INTEL_TE28F320:
|
||||
m_bits = 16;
|
||||
m_size = 0x400000;
|
||||
m_maker_id = MFG_INTEL;
|
||||
m_device_id = 0x8896;
|
||||
map = ADDRESS_MAP_NAME( memory_map16_32Mb );
|
||||
break;
|
||||
case FLASH_SHARP_UNK128MBIT:
|
||||
m_bits = 16;
|
||||
m_size = 0x800000;
|
||||
m_maker_id = MFG_SHARP;
|
||||
m_device_id = 0xb0;
|
||||
map = ADDRESS_MAP_NAME( memory_map16_64Mb );
|
||||
break;
|
||||
case FLASH_MACRONIX_29L001MC:
|
||||
m_bits = 8;
|
||||
m_size = 0x20000;
|
||||
m_maker_id = MFG_MACRONIX;
|
||||
m_device_id = 0x51;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_1Mb );
|
||||
break;
|
||||
case FLASH_MACRONIX_29LV160TMC:
|
||||
m_bits = 8;
|
||||
@ -356,7 +289,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_MACRONIX;
|
||||
m_device_id = 0x49;
|
||||
m_sector_is_16k = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_1Mb );
|
||||
break;
|
||||
case FLASH_PANASONIC_MN63F805MNP:
|
||||
m_bits = 8;
|
||||
@ -364,7 +296,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_PANASONIC;
|
||||
m_device_id = 0x1b;
|
||||
m_sector_is_4k = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_512Kb );
|
||||
break;
|
||||
case FLASH_SANYO_LE26FV10N1TS:
|
||||
m_bits = 8;
|
||||
@ -372,14 +303,12 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_SANYO;
|
||||
m_device_id = 0x13;
|
||||
m_sector_is_4k = true;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_1Mb );
|
||||
break;
|
||||
case FLASH_SST_28SF040:
|
||||
m_bits = 8;
|
||||
m_size = 0x80000;
|
||||
m_maker_id = MFG_SST;
|
||||
m_device_id = 0x04;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_4Mb );
|
||||
break;
|
||||
case FLASH_TMS_29F040:
|
||||
m_bits = 8;
|
||||
@ -387,7 +316,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_size = 0x80000;
|
||||
m_maker_id = MFG_AMD;
|
||||
m_device_id = 0xa4;
|
||||
map = ADDRESS_MAP_NAME( memory_map8_4Mb );
|
||||
break;
|
||||
}
|
||||
|
||||
@ -395,8 +323,6 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
for (addrbits = 24; addrbits > 0; addrbits--)
|
||||
if ((m_size & (1 << addrbits)) != 0)
|
||||
break;
|
||||
|
||||
m_space_config = address_space_config("flash", ENDIANNESS_BIG, m_bits, addrbits, (m_bits == 8) ? 0 : -1, map);
|
||||
}
|
||||
|
||||
intelfsh8_device::intelfsh8_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source)
|
||||
@ -498,11 +424,13 @@ tms_29f040_device::tms_29f040_device(const machine_config &mconfig, const char *
|
||||
|
||||
void intelfsh_device::device_start()
|
||||
{
|
||||
m_data = std::make_unique<UINT8 []>(m_size);
|
||||
m_timer = timer_alloc();
|
||||
|
||||
save_item( NAME(m_status) );
|
||||
save_item( NAME(m_flash_mode) );
|
||||
save_item( NAME(m_flash_master_lock) );
|
||||
save_pointer( &m_data[0], "m_data", m_size);
|
||||
}
|
||||
|
||||
|
||||
@ -525,17 +453,6 @@ void intelfsh_device::device_timer(emu_timer &timer, device_timer_id id, int par
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// memory_space_config - return a description of
|
||||
// any address spaces owned by this device
|
||||
//-------------------------------------------------
|
||||
|
||||
const address_space_config *intelfsh_device::memory_space_config(address_spacenum spacenum) const
|
||||
{
|
||||
return (spacenum == 0) ? &m_space_config : nullptr;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// nvram_default - called to initialize NVRAM to
|
||||
// its default state
|
||||
@ -553,19 +470,21 @@ void intelfsh_device::nvram_default()
|
||||
if (m_bits == 8)
|
||||
{
|
||||
for (offs_t offs = 0; offs < bytes; offs++)
|
||||
space(AS_PROGRAM).write_byte(offs, m_region->u8(offs));
|
||||
m_data[offs] = m_region->u8(offs);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (offs_t offs = 0; offs < bytes; offs += 2)
|
||||
space(AS_PROGRAM).write_word(offs, m_region->u16(offs / 2));
|
||||
for (offs_t offs = 0; offs < bytes; offs += 2) {
|
||||
UINT16 v = m_region->u16(offs / 2);
|
||||
m_data[offs] = v >> 8;
|
||||
m_data[offs+1] = v;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// otherwise, default to 0xff
|
||||
for (offs_t offs = 0; offs < m_size; offs++)
|
||||
space(AS_PROGRAM).write_byte(offs, 0xff);
|
||||
memset(&m_data[0], 0xff, m_size);
|
||||
}
|
||||
|
||||
|
||||
@ -576,10 +495,7 @@ void intelfsh_device::nvram_default()
|
||||
|
||||
void intelfsh_device::nvram_read(emu_file &file)
|
||||
{
|
||||
dynamic_buffer buffer(m_size);
|
||||
file.read(&buffer[0], m_size);
|
||||
for (int byte = 0; byte < m_size; byte++)
|
||||
space(AS_PROGRAM).write_byte(byte, buffer[byte]);
|
||||
file.read(&m_data[0], m_size);
|
||||
}
|
||||
|
||||
|
||||
@ -590,10 +506,7 @@ void intelfsh_device::nvram_read(emu_file &file)
|
||||
|
||||
void intelfsh_device::nvram_write(emu_file &file)
|
||||
{
|
||||
dynamic_buffer buffer(m_size);
|
||||
for (int byte = 0; byte < m_size; byte++)
|
||||
buffer[byte] = space(AS_PROGRAM).read_byte(byte);
|
||||
file.write(&buffer[0], m_size);
|
||||
file.write(&m_data[0], m_size);
|
||||
}
|
||||
|
||||
|
||||
@ -614,12 +527,12 @@ UINT32 intelfsh_device::read_full(UINT32 address)
|
||||
{
|
||||
case 8:
|
||||
{
|
||||
data = space(AS_PROGRAM).read_byte(address);
|
||||
data = m_data[address];
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
{
|
||||
data = space(AS_PROGRAM).read_word(address * 2);
|
||||
data = m_data[address*2+1] | (m_data[address*2] << 8);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -693,12 +606,12 @@ UINT32 intelfsh_device::read_full(UINT32 address)
|
||||
{
|
||||
case 8:
|
||||
{
|
||||
data = space(AS_PROGRAM).read_byte(address);
|
||||
data = m_data[address];
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
{
|
||||
data = space(AS_PROGRAM).read_word(address * 2);
|
||||
data = m_data[address*2+1] | (m_data[address*2] << 8);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -921,8 +834,7 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
(( address & 0xfff ) == 0xaaa && ( data & 0xff ) == 0x10 ) )
|
||||
{
|
||||
// chip erase
|
||||
for (offs_t offs = 0; offs < m_size; offs++)
|
||||
space(AS_PROGRAM).write_byte(offs, 0xff);
|
||||
memset(&m_data[0], 0, m_size);
|
||||
|
||||
m_status = 1 << 3;
|
||||
m_flash_mode = FM_ERASEAMD4;
|
||||
@ -947,15 +859,13 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
UINT32 base = address * ((m_bits == 16) ? 2 : 1);
|
||||
if (m_sector_is_4k)
|
||||
{
|
||||
for (offs_t offs = 0; offs < 4 * 1024; offs++)
|
||||
space(AS_PROGRAM).write_byte((base & ~0xfff) + offs, 0xff);
|
||||
memset(&m_data[base & ~0xfff], 0xff, 4 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0x7ff : ~0xfff);
|
||||
m_timer->adjust( attotime::from_msec( 125 ) );
|
||||
}
|
||||
else if(m_sector_is_16k)
|
||||
{
|
||||
for (offs_t offs = 0; offs < 16 * 1024; offs++)
|
||||
space(AS_PROGRAM).write_byte((base & ~0x3fff) + offs, 0xff);
|
||||
memset(&m_data[base & ~0x3fff], 0xff, 16 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0x1fff : ~0x3fff);
|
||||
m_timer->adjust( attotime::from_msec( 500 ) );
|
||||
}
|
||||
@ -963,30 +873,26 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
{
|
||||
if (address >= (m_size - (16*1024)))
|
||||
{
|
||||
for (offs_t offs = 0; offs < 16 * 1024; offs++)
|
||||
space(AS_PROGRAM).write_byte((base & ~0x3fff) + offs, 0xff);
|
||||
memset(&m_data[base & ~0x3fff], 0xff, 16 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0x1fff : ~0x3fff);
|
||||
m_timer->adjust( attotime::from_msec( 500 ) );
|
||||
}
|
||||
else if (address >= (m_size - (32*1024)))
|
||||
{
|
||||
for (offs_t offs = 0; offs < 8 * 1024; offs++)
|
||||
space(AS_PROGRAM).write_byte((base & ~0x1fff) + offs, 0xff);
|
||||
memset(&m_data[base & ~0x1fff], 0xff, 8 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0xfff : ~0x1fff);
|
||||
m_timer->adjust( attotime::from_msec( 250 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
for (offs_t offs = 0; offs < 32 * 1024; offs++)
|
||||
space(AS_PROGRAM).write_byte((base & ~0x7fff) + offs, 0xff);
|
||||
memset(&m_data[base & ~0x7fff], 0xff, 32 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0x3fff : ~0x7fff);
|
||||
m_timer->adjust( attotime::from_msec( 500 ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (offs_t offs = 0; offs < 64 * 1024; offs++)
|
||||
space(AS_PROGRAM).write_byte((base & ~0xffff) + offs, 0xff);
|
||||
memset(&m_data[base & ~0xffff], 0xff, 64 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0x7fff : ~0xffff);
|
||||
m_timer->adjust( attotime::from_seconds( 1 ) );
|
||||
}
|
||||
@ -1004,7 +910,7 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
{
|
||||
case 8:
|
||||
{
|
||||
space(AS_PROGRAM).write_byte(address, data);
|
||||
m_data[address] = data;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -1017,10 +923,11 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
switch( m_bits )
|
||||
{
|
||||
case 8:
|
||||
space(AS_PROGRAM).write_byte(address, data);
|
||||
m_data[address] = data;
|
||||
break;
|
||||
case 16:
|
||||
space(AS_PROGRAM).write_word(address * 2, data);
|
||||
m_data[address*2] = data >> 8;
|
||||
m_data[address] = data;
|
||||
break;
|
||||
default:
|
||||
logerror( "FM_WRITEPART1 not supported when m_bits == %d\n", m_bits );
|
||||
@ -1036,10 +943,11 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
switch( m_bits )
|
||||
{
|
||||
case 8:
|
||||
space(AS_PROGRAM).write_byte(address, data);
|
||||
m_data[address] = data;
|
||||
break;
|
||||
case 16:
|
||||
space(AS_PROGRAM).write_word(address * 2, data);
|
||||
m_data[address*2] = data >> 8;
|
||||
m_data[address] = data;
|
||||
break;
|
||||
default:
|
||||
logerror( "FM_WRITEPAGEATMEL not supported when m_bits == %d\n", m_bits );
|
||||
@ -1060,8 +968,7 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
{
|
||||
// clear the 256 bytes block containing the current address to all 0xffs
|
||||
UINT32 base = address * ((m_bits == 16) ? 2 : 1);
|
||||
for (offs_t offs = 0; offs < 256; offs++)
|
||||
space(AS_PROGRAM).write_byte((base & ~0xff) + offs, 0xff);
|
||||
memset(&m_data[base & ~0xff], 0xff, 256);
|
||||
|
||||
m_timer->adjust( attotime::from_msec( 4 ) );
|
||||
}
|
||||
@ -1103,8 +1010,7 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
}
|
||||
|
||||
// clear the block containing the current address to all 0xffffs
|
||||
for (offs_t offs = 0; offs < size / 2; offs += 2)
|
||||
space(AS_PROGRAM).write_word(base | offs, 0xffff);
|
||||
memset(&m_data[2*base], 0xff, size);
|
||||
|
||||
m_timer->adjust( attotime::from_msec( duration ) );
|
||||
}
|
||||
@ -1112,8 +1018,7 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
|
||||
{
|
||||
// clear the 64k block containing the current address to all 0xffs
|
||||
UINT32 base = address * ((m_bits == 16) ? 2 : 1);
|
||||
for (offs_t offs = 0; offs < 64 * 1024; offs++)
|
||||
space(AS_PROGRAM).write_byte((base & ~0xffff) + offs, 0xff);
|
||||
memset(&m_data[base & ~0xffff], 0xff, 64 * 1024);
|
||||
|
||||
m_timer->adjust( attotime::from_seconds( 1 ) );
|
||||
}
|
||||
|
@ -106,7 +106,6 @@ class intelfsh_device;
|
||||
// ======================> intelfsh_device
|
||||
|
||||
class intelfsh_device : public device_t,
|
||||
public device_memory_interface,
|
||||
public device_nvram_interface
|
||||
{
|
||||
public:
|
||||
@ -145,6 +144,8 @@ public:
|
||||
FLASH_SST_39VF400A
|
||||
};
|
||||
|
||||
UINT8 *base() { return &m_data[0]; }
|
||||
|
||||
protected:
|
||||
// construction/destruction
|
||||
intelfsh_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source);
|
||||
@ -154,9 +155,6 @@ protected:
|
||||
virtual void device_start() override;
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
|
||||
// device_memory_interface overrides
|
||||
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
|
||||
|
||||
// device_nvram_interface overrides
|
||||
virtual void nvram_default() override;
|
||||
virtual void nvram_read(emu_file &file) override;
|
||||
@ -166,29 +164,29 @@ protected:
|
||||
UINT32 read_full(UINT32 offset);
|
||||
void write_full(UINT32 offset, UINT32 data);
|
||||
|
||||
optional_memory_region m_region;
|
||||
optional_memory_region m_region;
|
||||
|
||||
// configuration state
|
||||
address_space_config m_space_config;
|
||||
UINT32 m_type;
|
||||
INT32 m_size;
|
||||
UINT8 m_bits;
|
||||
UINT32 m_addrmask;
|
||||
UINT16 m_device_id;
|
||||
UINT8 m_maker_id;
|
||||
bool m_sector_is_4k;
|
||||
bool m_sector_is_16k;
|
||||
bool m_top_boot_sector;
|
||||
UINT8 m_page_size;
|
||||
UINT32 m_type;
|
||||
INT32 m_size;
|
||||
UINT8 m_bits;
|
||||
UINT32 m_addrmask;
|
||||
UINT16 m_device_id;
|
||||
UINT8 m_maker_id;
|
||||
bool m_sector_is_4k;
|
||||
bool m_sector_is_16k;
|
||||
bool m_top_boot_sector;
|
||||
UINT8 m_page_size;
|
||||
|
||||
// internal state
|
||||
UINT8 m_status;
|
||||
INT32 m_erase_sector;
|
||||
INT32 m_flash_mode;
|
||||
bool m_flash_master_lock;
|
||||
emu_timer * m_timer;
|
||||
INT32 m_bank;
|
||||
UINT8 m_byte_count;
|
||||
std::unique_ptr<UINT8[]> m_data;
|
||||
UINT8 m_status;
|
||||
INT32 m_erase_sector;
|
||||
INT32 m_flash_mode;
|
||||
bool m_flash_master_lock;
|
||||
emu_timer * m_timer;
|
||||
INT32 m_bank;
|
||||
UINT8 m_byte_count;
|
||||
};
|
||||
|
||||
|
||||
@ -207,8 +205,8 @@ public:
|
||||
DECLARE_READ8_MEMBER(read) { return read_full(offset); }
|
||||
DECLARE_WRITE8_MEMBER(write) { write_full(offset, data); }
|
||||
|
||||
UINT8 read_raw(offs_t offset) { return space(AS_PROGRAM).read_byte(offset); }
|
||||
void write_raw(offs_t offset, UINT8 data) { space(AS_PROGRAM).write_byte(offset, data); }
|
||||
UINT8 read_raw(offs_t offset) { return m_data[offset]; }
|
||||
void write_raw(offs_t offset, UINT8 data) { m_data[offset] = data; }
|
||||
};
|
||||
|
||||
|
||||
@ -227,8 +225,8 @@ public:
|
||||
DECLARE_READ16_MEMBER(read) { return read_full(offset); }
|
||||
DECLARE_WRITE16_MEMBER(write) { write_full(offset, data); }
|
||||
|
||||
UINT16 read_raw(offs_t offset) { return space(AS_PROGRAM).read_word(offset * 2); }
|
||||
void write_raw(offs_t offset, UINT16 data) { space(AS_PROGRAM).write_word(offset * 2, data); }
|
||||
UINT16 read_raw(offs_t offset) { return m_data[offset*2] | (m_data[offset*2+1] << 8); }
|
||||
void write_raw(offs_t offset, UINT16 data) { m_data[offset*2] = data; m_data[offset*2+1] = data >> 8; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -79,6 +79,8 @@ enum laserdisc_field_code
|
||||
laserdisc_device::static_set_overlay_palette(*device, "^" _palette_tag);
|
||||
|
||||
// use these to add laserdisc screens with proper video update parameters
|
||||
// TODO: actually move these SCREEN_RAW_PARAMS to a common screen info header
|
||||
// TODO: someday we'll kill the pixel clock hack ...
|
||||
#define MCFG_LASERDISC_SCREEN_ADD_NTSC(_tag, _ldtag) \
|
||||
MCFG_DEVICE_MODIFY(_ldtag) \
|
||||
laserdisc_device::static_set_screen(*device, _tag); \
|
||||
@ -86,13 +88,13 @@ enum laserdisc_field_code
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER) \
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz*2, 910, 0, 704, 525, 44, 524) \
|
||||
MCFG_SCREEN_UPDATE_DEVICE(_ldtag, laserdisc_device, screen_update)
|
||||
// not correct yet; fix me...
|
||||
|
||||
#define MCFG_LASERDISC_SCREEN_ADD_PAL(_tag, _ldtag) \
|
||||
MCFG_DEVICE_MODIFY(_ldtag) \
|
||||
laserdisc_device::static_set_screen(*device, _tag); \
|
||||
MCFG_SCREEN_ADD(_tag, RASTER) \
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER) \
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz, 910, 0, 704, 525.0/2, 0, 480/2) \
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL_17_73447MHz*2, 1135, 0, 768, 625, 48, 624) \
|
||||
MCFG_SCREEN_UPDATE_DEVICE(_ldtag, laserdisc_device, screen_update)
|
||||
|
||||
|
||||
|
@ -411,37 +411,53 @@ WRITE8_MEMBER ( tms9901_device::write )
|
||||
switch (offset)
|
||||
{
|
||||
case 0x10:
|
||||
if (!m_write_p0.isnull()) m_write_p0(data); break;
|
||||
if (!m_write_p0.isnull()) m_write_p0(data);
|
||||
break;
|
||||
case 0x11:
|
||||
if (!m_write_p1.isnull()) m_write_p1(data); break;
|
||||
if (!m_write_p1.isnull()) m_write_p1(data);
|
||||
break;
|
||||
case 0x12:
|
||||
if (!m_write_p2.isnull()) m_write_p2(data); break;
|
||||
if (!m_write_p2.isnull()) m_write_p2(data);
|
||||
break;
|
||||
case 0x13:
|
||||
if (!m_write_p3.isnull()) m_write_p3(data); break;
|
||||
if (!m_write_p3.isnull()) m_write_p3(data);
|
||||
break;
|
||||
case 0x14:
|
||||
if (!m_write_p4.isnull()) m_write_p4(data); break;
|
||||
if (!m_write_p4.isnull()) m_write_p4(data);
|
||||
break;
|
||||
case 0x15:
|
||||
if (!m_write_p5.isnull()) m_write_p5(data); break;
|
||||
if (!m_write_p5.isnull()) m_write_p5(data);
|
||||
break;
|
||||
case 0x16:
|
||||
if (!m_write_p6.isnull()) m_write_p6(data); break;
|
||||
if (!m_write_p6.isnull()) m_write_p6(data);
|
||||
break;
|
||||
case 0x17:
|
||||
if (!m_write_p7.isnull()) m_write_p7(data); break;
|
||||
if (!m_write_p7.isnull()) m_write_p7(data);
|
||||
break;
|
||||
case 0x18:
|
||||
if (!m_write_p8.isnull()) m_write_p8(data); break;
|
||||
if (!m_write_p8.isnull()) m_write_p8(data);
|
||||
break;
|
||||
case 0x19:
|
||||
if (!m_write_p9.isnull()) m_write_p9(data); break;
|
||||
if (!m_write_p9.isnull()) m_write_p9(data);
|
||||
break;
|
||||
case 0x1A:
|
||||
if (!m_write_p10.isnull()) m_write_p10(data); break;
|
||||
if (!m_write_p10.isnull()) m_write_p10(data);
|
||||
break;
|
||||
case 0x1B:
|
||||
if (!m_write_p11.isnull()) m_write_p11(data); break;
|
||||
if (!m_write_p11.isnull()) m_write_p11(data);
|
||||
break;
|
||||
case 0x1C:
|
||||
if (!m_write_p12.isnull()) m_write_p12(data); break;
|
||||
if (!m_write_p12.isnull()) m_write_p12(data);
|
||||
break;
|
||||
case 0x1D:
|
||||
if (!m_write_p13.isnull()) m_write_p13(data); break;
|
||||
if (!m_write_p13.isnull()) m_write_p13(data);
|
||||
break;
|
||||
case 0x1E:
|
||||
if (!m_write_p14.isnull()) m_write_p14(data); break;
|
||||
if (!m_write_p14.isnull()) m_write_p14(data);
|
||||
break;
|
||||
case 0x1F:
|
||||
if (!m_write_p15.isnull()) m_write_p15(data); break;
|
||||
if (!m_write_p15.isnull()) m_write_p15(data);
|
||||
break;
|
||||
|
||||
}
|
||||
return;
|
||||
|
@ -11,17 +11,6 @@
|
||||
// DEVICE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#ifdef LEGACY_WATCHDOG
|
||||
#undef MCFG_WATCHDOG_VBLANK_INIT
|
||||
#undef MCFG_WATCHDOG_TIME_INIT
|
||||
#define watchdog_reset_r MUST_USE_WATCHDOG_DEVICE_INSTEAD
|
||||
#define watchdog_reset_w MUST_USE_WATCHDOG_DEVICE_INSTEAD
|
||||
#define watchdog_reset16_r MUST_USE_WATCHDOG_DEVICE_INSTEAD
|
||||
#define watchdog_reset16_w MUST_USE_WATCHDOG_DEVICE_INSTEAD
|
||||
#define watchdog_reset32_r MUST_USE_WATCHDOG_DEVICE_INSTEAD
|
||||
#define watchdog_reset32_w MUST_USE_WATCHDOG_DEVICE_INSTEAD
|
||||
#endif
|
||||
|
||||
#define MCFG_WATCHDOG_ADD(_tag) \
|
||||
MCFG_DEVICE_ADD(_tag, WATCHDOG_TIMER, 0)
|
||||
#define MCFG_WATCHDOG_MODIFY(_tag) \
|
||||
|
@ -170,17 +170,19 @@ void wd7600_device::device_start()
|
||||
|
||||
// install BIOS ROM at cpu inital pc
|
||||
m_space->install_rom(0x000f0000, 0x000fffff, m_bios + 0x10000);
|
||||
m_space->install_rom(0xffff0000, 0xffffffff, m_bios + 0x10000);
|
||||
if(m_space->addrmask() == 0xffffffff) // 32-bit address space only
|
||||
m_space->install_rom(0xffff0000, 0xffffffff, m_bios + 0x10000);
|
||||
else
|
||||
m_space->install_rom(0x00ff0000, 0x00ffffff, m_bios + 0x10000);
|
||||
|
||||
// install i/o accesses
|
||||
m_space_io->install_readwrite_handler(0x0000, 0x000f, read8_delegate(FUNC(am9517a_device::read), &(*m_dma1)), write8_delegate(FUNC(am9517a_device::write), &(*m_dma1)), 0xffffffff);
|
||||
m_space_io->install_readwrite_handler(0x0020, 0x003f, read8_delegate(FUNC(pic8259_device::read), &(*m_pic1)), write8_delegate(FUNC(pic8259_device::write), &(*m_pic1)), 0x0000ffff);
|
||||
m_space_io->install_readwrite_handler(0x0040, 0x0043, read8_delegate(FUNC(pit8254_device::read), &(*m_ctc)), write8_delegate(FUNC(pit8254_device::write), &(*m_ctc)), 0xffffffff);
|
||||
m_space_io->install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(wd7600_device::keyb_data_r), this), write8_delegate(FUNC(wd7600_device::keyb_data_w), this), 0x000000ff);
|
||||
m_space_io->install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(wd7600_device::portb_r), this), write8_delegate(FUNC(wd7600_device::portb_w), this), 0x0000ff00);
|
||||
m_space_io->install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(wd7600_device::keyb_data_r), this), write8_delegate(FUNC(wd7600_device::keyb_data_w), this), 0x0000ffff);
|
||||
m_space_io->install_readwrite_handler(0x0064, 0x0067, read8_delegate(FUNC(wd7600_device::keyb_status_r), this), write8_delegate(FUNC(wd7600_device::keyb_cmd_w), this), 0x000000ff);
|
||||
m_space_io->install_readwrite_handler(0x0070, 0x007f, read8_delegate(FUNC(mc146818_device::read), &(*m_rtc)), write8_delegate(FUNC(wd7600_device::rtc_w), this), 0x0000ffff);
|
||||
m_space_io->install_readwrite_handler(0x0080, 0x009f, read8_delegate(FUNC(wd7600_device::dma_page_r), this), write8_delegate(FUNC(wd7600_device::dma_page_w), this), 0xffffffff);
|
||||
m_space_io->install_readwrite_handler(0x0080, 0x008f, read8_delegate(FUNC(wd7600_device::dma_page_r), this), write8_delegate(FUNC(wd7600_device::dma_page_w), this), 0xffffffff);
|
||||
m_space_io->install_readwrite_handler(0x0090, 0x0093, read8_delegate(FUNC(wd7600_device::a20_reset_r), this), write8_delegate(FUNC(wd7600_device::a20_reset_w), this), 0x00ff0000);
|
||||
m_space_io->install_readwrite_handler(0x00a0, 0x00a3, read8_delegate(FUNC(pic8259_device::read), &(*m_pic2)), write8_delegate(FUNC(pic8259_device::write), &(*m_pic2)), 0x0000ffff);
|
||||
m_space_io->install_readwrite_handler(0x00c0, 0x00df, read8_delegate(FUNC(am9517a_device::read), &(*m_dma2)), write8_delegate(FUNC(am9517a_device::write), &(*m_dma2)), 0x00ff00ff);
|
||||
@ -287,14 +289,20 @@ WRITE_LINE_MEMBER( wd7600_device::ctc_out2_w )
|
||||
WRITE8_MEMBER( wd7600_device::keyb_data_w )
|
||||
{
|
||||
// if(LOG) logerror("WD7600 '%s': keyboard data write %02x\n", tag(), data);
|
||||
m_keybc->data_w(space,0,data);
|
||||
if(ACCESSING_BITS_0_7)
|
||||
m_keybc->data_w(space,0,data);
|
||||
else
|
||||
portb_w(space,0,data);
|
||||
}
|
||||
|
||||
READ8_MEMBER( wd7600_device::keyb_data_r )
|
||||
{
|
||||
UINT8 ret = m_keybc->data_r(space,0);
|
||||
// if(LOG) logerror("WD7600 '%s': keyboard data read %02x\n", tag(), ret);
|
||||
return ret;
|
||||
if(ACCESSING_BITS_0_7)
|
||||
return ret;
|
||||
else
|
||||
return portb_r(space,0);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( wd7600_device::keyb_cmd_w )
|
||||
|
@ -1390,13 +1390,10 @@ int IRQCB(void *param)
|
||||
|
||||
void scsp_device::set_ram_base(void *base)
|
||||
{
|
||||
if (this)
|
||||
{
|
||||
m_SCSPRAM = (unsigned char *)base;
|
||||
m_DSP.SCSPRAM = (UINT16 *)base;
|
||||
m_SCSPRAM_LENGTH = 0x80000;
|
||||
m_DSP.SCSPRAM_LENGTH = 0x80000/2;
|
||||
}
|
||||
m_SCSPRAM = (unsigned char *)base;
|
||||
m_DSP.SCSPRAM = (UINT16 *)base;
|
||||
m_SCSPRAM_LENGTH = 0x80000;
|
||||
m_DSP.SCSPRAM_LENGTH = 0x80000/2;
|
||||
}
|
||||
|
||||
|
||||
|
@ -716,7 +716,7 @@ void upd7759_device::device_timer(emu_timer &timer, device_timer_id id, int para
|
||||
/* set a timer to go off when that is done */
|
||||
if (m_state != STATE_IDLE)
|
||||
m_timer->adjust(m_clock_period * m_clocks_left);
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
assert_always(FALSE, "Unknown id in upd7759_device::device_timer");
|
||||
|
@ -428,7 +428,7 @@ void ef9345_device::bichrome40(UINT8 type, UINT16 address, UINT8 dial, UINT16 ib
|
||||
case 0x70: //11 = flash underlined
|
||||
if (m_blink)
|
||||
underline = 1;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -316,7 +316,6 @@ void ADDRESS_MAP_NAME(_name)(address_map &map, device_t &device) \
|
||||
typedef write##_bits##_delegate write_delegate ATTR_UNUSED; \
|
||||
address_map_entry##_bits *curentry = nullptr; \
|
||||
(void)curentry; \
|
||||
assert(&device != nullptr); \
|
||||
map.configure(_space, _bits); \
|
||||
typedef _class drivdata_class ATTR_UNUSED;
|
||||
#define DEVICE_ADDRESS_MAP_START(_name, _bits, _class) \
|
||||
@ -326,7 +325,6 @@ void _class :: _name(::address_map &map, device_t &device) \
|
||||
typedef write##_bits##_delegate write_delegate ATTR_UNUSED; \
|
||||
address_map_entry##_bits *curentry = nullptr; \
|
||||
(void)curentry; \
|
||||
assert(&device != nullptr); \
|
||||
map.configure(AS_PROGRAM, _bits); \
|
||||
typedef _class drivdata_class ATTR_UNUSED;
|
||||
#define ADDRESS_MAP_END \
|
||||
|
@ -47,6 +47,7 @@ debugger_cpu::debugger_cpu(running_machine &machine)
|
||||
, m_rpindex(1)
|
||||
, m_wpdata(0)
|
||||
, m_wpaddr(0)
|
||||
, m_last_periodic_update_time(0)
|
||||
, m_comments_loaded(false)
|
||||
{
|
||||
screen_device *first_screen = m_machine.first_screen();
|
||||
@ -54,7 +55,7 @@ debugger_cpu::debugger_cpu(running_machine &machine)
|
||||
m_tempvar = make_unique_clear<UINT64[]>(NUM_TEMP_VARIABLES);
|
||||
|
||||
/* create a global symbol table */
|
||||
m_symtable = global_alloc(symbol_table(&m_machine));
|
||||
m_symtable = std::make_unique<symbol_table>(&m_machine);
|
||||
|
||||
// configure our base memory accessors
|
||||
configure_memory(*m_symtable);
|
||||
@ -83,8 +84,6 @@ debugger_cpu::debugger_cpu(running_machine &machine)
|
||||
/* add callback for breaking on VBLANK */
|
||||
if (m_machine.first_screen() != nullptr)
|
||||
m_machine.first_screen()->register_vblank_callback(vblank_state_delegate(FUNC(debugger_cpu::on_vblank), this));
|
||||
|
||||
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(debugger_cpu::exit), this));
|
||||
}
|
||||
|
||||
void debugger_cpu::configure_memory(symbol_table &table)
|
||||
@ -162,7 +161,7 @@ bool debugger_cpu::is_stopped()
|
||||
|
||||
symbol_table* debugger_cpu::get_global_symtable()
|
||||
{
|
||||
return m_symtable;
|
||||
return m_symtable.get();
|
||||
}
|
||||
|
||||
|
||||
@ -955,16 +954,6 @@ UINT64 debugger_cpu::read_opcode(address_space &space, offs_t address, int size)
|
||||
INTERNAL HELPERS
|
||||
***************************************************************************/
|
||||
|
||||
/*-------------------------------------------------
|
||||
exit - free all memory
|
||||
-------------------------------------------------*/
|
||||
|
||||
void debugger_cpu::exit()
|
||||
{
|
||||
global_free(m_symtable);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
on_vblank - called when a VBLANK hits
|
||||
-------------------------------------------------*/
|
||||
|
@ -606,7 +606,6 @@ private:
|
||||
UINT64 get_frame(symbol_table &table, void *ref);
|
||||
|
||||
/* internal helpers */
|
||||
void exit();
|
||||
void on_vblank(screen_device &device, bool vblank_state);
|
||||
|
||||
running_machine& m_machine;
|
||||
@ -617,7 +616,7 @@ private:
|
||||
|
||||
FILE * m_source_file; // script source file
|
||||
|
||||
symbol_table * m_symtable; // global symbol table
|
||||
std::unique_ptr<symbol_table> m_symtable; // global symbol table
|
||||
|
||||
bool m_within_instruction_hook;
|
||||
bool m_vblank_occurred;
|
||||
|
@ -355,12 +355,6 @@ debug_view *debug_view_manager::alloc_view(debug_view_type type, debug_view_osd_
|
||||
case DVT_LOG:
|
||||
return append(global_alloc(debug_view_log(machine(), osdupdate, osdprivate)));
|
||||
|
||||
case DVT_TIMERS:
|
||||
// return append(global_alloc(debug_view_timers(machine(), osdupdate, osdprivate)));
|
||||
|
||||
case DVT_ALLOCS:
|
||||
// return append(global_alloc(debug_view_allocs(machine(), osdupdate, osdprivate)));
|
||||
|
||||
case DVT_BREAK_POINTS:
|
||||
return append(global_alloc(debug_view_breakpoints(machine(), osdupdate, osdprivate)));
|
||||
|
||||
|
@ -27,8 +27,6 @@ enum debug_view_type
|
||||
DVT_DISASSEMBLY,
|
||||
DVT_MEMORY,
|
||||
DVT_LOG,
|
||||
DVT_TIMERS,
|
||||
DVT_ALLOCS,
|
||||
DVT_BREAK_POINTS,
|
||||
DVT_WATCH_POINTS
|
||||
};
|
||||
|
@ -74,7 +74,7 @@ public:
|
||||
device_delegate(const thistype &src, device_t &search_root) : basetype(src), device_delegate_helper(src.m_device_name) { bind_relative_to(search_root); }
|
||||
|
||||
// perform the binding
|
||||
void bind_relative_to(device_t &search_root) { assert(&search_root != nullptr); if (!basetype::isnull()) basetype::late_bind(bound_object(search_root)); }
|
||||
void bind_relative_to(device_t &search_root) { if (!basetype::isnull()) basetype::late_bind(bound_object(search_root)); }
|
||||
|
||||
// getter (for validation purposes)
|
||||
const char *device_name() const { return m_device_name; }
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
// MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_OUTPUT_INDEX(_index) \
|
||||
|
@ -42,7 +42,7 @@ device_sound_interface::~device_sound_interface()
|
||||
// a new route to the device
|
||||
//-------------------------------------------------
|
||||
|
||||
device_sound_interface::sound_route &device_sound_interface::static_add_route(device_t &device, UINT32 output, const char *target, double gain, UINT32 input, UINT32 mixoutput)
|
||||
void device_sound_interface::static_add_route(device_t &device, UINT32 output, const char *target, double gain, UINT32 input, UINT32 mixoutput)
|
||||
{
|
||||
// find our sound interface
|
||||
device_sound_interface *sound;
|
||||
@ -50,7 +50,7 @@ device_sound_interface::sound_route &device_sound_interface::static_add_route(de
|
||||
throw emu_fatalerror("MCFG_SOUND_ROUTE called on device '%s' with no sound interface", device.tag());
|
||||
|
||||
// append a new route to the list
|
||||
return sound->m_route_list.append(*global_alloc(sound_route(output, input, gain, target, mixoutput)));
|
||||
sound->m_route_list.push_back(std::make_unique<sound_route>(output, input, gain, target, mixoutput));
|
||||
}
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ void device_sound_interface::static_reset_routes(device_t &device)
|
||||
throw emu_fatalerror("MCFG_SOUND_ROUTES_RESET called on device '%s' with no sound interface", device.tag());
|
||||
|
||||
// reset the routine list
|
||||
sound->m_route_list.reset();
|
||||
sound->m_route_list.clear();
|
||||
}
|
||||
|
||||
|
||||
@ -235,17 +235,17 @@ int device_sound_interface::inputnum_from_device(device_t &source_device, int ou
|
||||
void device_sound_interface::interface_validity_check(validity_checker &valid) const
|
||||
{
|
||||
// loop over all the routes
|
||||
for (const sound_route &route : routes())
|
||||
for (auto &route : routes())
|
||||
{
|
||||
// find a device with the requested tag
|
||||
const device_t *target = device().siblingdevice(route.m_target.c_str());
|
||||
const device_t *target = device().siblingdevice(route->m_target.c_str());
|
||||
if (target == nullptr)
|
||||
osd_printf_error("Attempting to route sound to non-existant device '%s'\n", route.m_target.c_str());
|
||||
osd_printf_error("Attempting to route sound to non-existant device '%s'\n", route->m_target.c_str());
|
||||
|
||||
// if it's not a speaker or a sound device, error
|
||||
const device_sound_interface *sound;
|
||||
if (target != nullptr && target->type() != SPEAKER && !target->interface(sound))
|
||||
osd_printf_error("Attempting to route sound to a non-sound device '%s' (%s)\n", route.m_target.c_str(), target->name());
|
||||
osd_printf_error("Attempting to route sound to a non-sound device '%s' (%s)\n", route->m_target.c_str(), target->name());
|
||||
}
|
||||
}
|
||||
|
||||
@ -262,10 +262,10 @@ void device_sound_interface::interface_pre_start()
|
||||
for (device_sound_interface &sound : iter)
|
||||
{
|
||||
// scan each route on the device
|
||||
for (const sound_route &route : sound.routes())
|
||||
for (auto &route : sound.routes())
|
||||
{
|
||||
// see if we are the target of this route; if we are, make sure the source device is started
|
||||
device_t *target_device = sound.device().siblingdevice(route.m_target.c_str());
|
||||
device_t *target_device = sound.device().siblingdevice(route->m_target.c_str());
|
||||
if (target_device == &m_device && !sound.device().started())
|
||||
throw device_missing_dependencies();
|
||||
}
|
||||
@ -276,14 +276,14 @@ void device_sound_interface::interface_pre_start()
|
||||
for (device_sound_interface &sound : iter)
|
||||
{
|
||||
// scan each route on the device
|
||||
for (sound_route &route : sound.routes())
|
||||
for (auto &route : sound.routes())
|
||||
{
|
||||
// see if we are the target of this route
|
||||
device_t *target_device = sound.device().siblingdevice(route.m_target.c_str());
|
||||
if (target_device == &m_device && route.m_input == AUTO_ALLOC_INPUT)
|
||||
device_t *target_device = sound.device().siblingdevice(route->m_target.c_str());
|
||||
if (target_device == &m_device && route->m_input == AUTO_ALLOC_INPUT)
|
||||
{
|
||||
route.m_input = m_auto_allocated_inputs;
|
||||
m_auto_allocated_inputs += (route.m_output == ALL_OUTPUTS) ? sound.outputs() : 1;
|
||||
route->m_input = m_auto_allocated_inputs;
|
||||
m_auto_allocated_inputs += (route->m_output == ALL_OUTPUTS) ? sound.outputs() : 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -301,32 +301,32 @@ void device_sound_interface::interface_post_start()
|
||||
for (device_sound_interface &sound : sound_interface_iterator(m_device.machine().root_device()))
|
||||
{
|
||||
// scan each route on the device
|
||||
for (const sound_route &route : sound.routes())
|
||||
for (auto &route : sound.routes())
|
||||
{
|
||||
// if we are the target of this route, hook it up
|
||||
device_t *target_device = sound.device().siblingdevice(route.m_target.c_str());
|
||||
device_t *target_device = sound.device().siblingdevice(route->m_target.c_str());
|
||||
if (target_device == &m_device)
|
||||
{
|
||||
// iterate over all outputs, matching any that apply
|
||||
int inputnum = route.m_input;
|
||||
int inputnum = route->m_input;
|
||||
int numoutputs = sound.outputs();
|
||||
for (int outputnum = 0; outputnum < numoutputs; outputnum++)
|
||||
if (route.m_output == outputnum || route.m_output == ALL_OUTPUTS)
|
||||
if (route->m_output == outputnum || route->m_output == ALL_OUTPUTS)
|
||||
{
|
||||
// find the output stream to connect from
|
||||
int streamoutputnum;
|
||||
sound_stream *outputstream = sound.output_to_stream_output(outputnum, streamoutputnum);
|
||||
if (outputstream == nullptr)
|
||||
fatalerror("Sound device '%s' specifies route for non-existant output #%d\n", route.m_target.c_str(), outputnum);
|
||||
fatalerror("Sound device '%s' specifies route for non-existant output #%d\n", route->m_target.c_str(), outputnum);
|
||||
|
||||
// find the input stream to connect to
|
||||
int streaminputnum;
|
||||
sound_stream *inputstream = input_to_stream_input(inputnum++, streaminputnum);
|
||||
if (inputstream == nullptr)
|
||||
fatalerror("Sound device '%s' targeted output #%d to non-existant device '%s' input %d\n", route.m_target.c_str(), outputnum, m_device.tag(), inputnum - 1);
|
||||
fatalerror("Sound device '%s' targeted output #%d to non-existant device '%s' input %d\n", route->m_target.c_str(), outputnum, m_device.tag(), inputnum - 1);
|
||||
|
||||
// set the input
|
||||
inputstream->set_input(streaminputnum, outputstream, streamoutputnum, route.m_gain);
|
||||
inputstream->set_input(streaminputnum, outputstream, streamoutputnum, route->m_gain);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -358,8 +358,7 @@ void device_sound_interface::interface_pre_reset()
|
||||
//-------------------------------------------------
|
||||
|
||||
device_sound_interface::sound_route::sound_route(int output, int input, float gain, const char *target, UINT32 mixoutput)
|
||||
: m_next(nullptr),
|
||||
m_output(output),
|
||||
: m_output(output),
|
||||
m_input(input),
|
||||
m_mixoutput(mixoutput),
|
||||
m_gain(gain),
|
||||
@ -416,15 +415,15 @@ void device_mixer_interface::interface_pre_start()
|
||||
|
||||
// iterate through all routes that point to us and note their mixer output
|
||||
for (device_sound_interface &sound : sound_interface_iterator(m_device.machine().root_device()))
|
||||
for (const sound_route &route : sound.routes())
|
||||
for (auto &route : sound.routes())
|
||||
{
|
||||
// see if we are the target of this route
|
||||
device_t *target_device = sound.device().siblingdevice(route.m_target.c_str());
|
||||
if (target_device == &device() && route.m_input < m_auto_allocated_inputs)
|
||||
device_t *target_device = sound.device().siblingdevice(route->m_target.c_str());
|
||||
if (target_device == &device() && route->m_input < m_auto_allocated_inputs)
|
||||
{
|
||||
int count = (route.m_output == ALL_OUTPUTS) ? sound.outputs() : 1;
|
||||
int count = (route->m_output == ALL_OUTPUTS) ? sound.outputs() : 1;
|
||||
for (int output = 0; output < count; output++)
|
||||
m_outputmap[route.m_input + output] = route.m_mixoutput;
|
||||
m_outputmap[route->m_input + output] = route->m_mixoutput;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,9 +70,6 @@ public:
|
||||
public:
|
||||
sound_route(int output, int input, float gain, const char *target, UINT32 mixoutput);
|
||||
|
||||
sound_route *next() const { return m_next; }
|
||||
|
||||
sound_route * m_next; // pointer to next route
|
||||
UINT32 m_output; // output index, or ALL_OUTPUTS
|
||||
UINT32 m_input; // target input index
|
||||
UINT32 m_mixoutput; // target mixer output
|
||||
@ -85,10 +82,10 @@ public:
|
||||
virtual ~device_sound_interface();
|
||||
|
||||
// configuration access
|
||||
const simple_list<sound_route> &routes() const { return m_route_list; }
|
||||
const std::vector<std::unique_ptr<sound_route>> &routes() const { return m_route_list; }
|
||||
|
||||
// static inline configuration helpers
|
||||
static sound_route &static_add_route(device_t &device, UINT32 output, const char *target, double gain, UINT32 input = AUTO_ALLOC_INPUT, UINT32 mixoutput = 0);
|
||||
static void static_add_route(device_t &device, UINT32 output, const char *target, double gain, UINT32 input = AUTO_ALLOC_INPUT, UINT32 mixoutput = 0);
|
||||
static void static_reset_routes(device_t &device);
|
||||
|
||||
// sound stream update overrides
|
||||
@ -114,7 +111,7 @@ protected:
|
||||
virtual void interface_pre_reset() override;
|
||||
|
||||
// internal state
|
||||
simple_list<sound_route> m_route_list; // list of sound routes
|
||||
std::vector<std::unique_ptr<sound_route>> m_route_list; // list of sound routes
|
||||
int m_outputs; // number of outputs from this instance
|
||||
int m_auto_allocated_inputs; // number of auto-allocated inputs targeting us
|
||||
};
|
||||
|
@ -28,6 +28,7 @@
|
||||
|
||||
// standard C++ includes
|
||||
#include <exception>
|
||||
#include <type_traits>
|
||||
#include <typeinfo>
|
||||
|
||||
// core system includes
|
||||
@ -312,48 +313,41 @@ class device_t;
|
||||
void report_bad_cast(const std::type_info &src_type, const std::type_info &dst_type);
|
||||
void report_bad_device_cast(const device_t *dev, const std::type_info &src_type, const std::type_info &dst_type);
|
||||
|
||||
// template function for casting from a base class to a derived class that is checked
|
||||
// in debug builds and fast in release builds
|
||||
template<class _Dest, class _Source>
|
||||
inline _Dest downcast(_Source *src)
|
||||
template <typename Dest, typename Source>
|
||||
inline std::enable_if_t<std::is_base_of<device_t, Source>::value> report_bad_cast(Source *const src)
|
||||
{
|
||||
#if defined(MAME_DEBUG) && !defined(MAME_DEBUG_FAST)
|
||||
try {
|
||||
if (dynamic_cast<_Dest>(src) != src)
|
||||
{
|
||||
if (dynamic_cast<const device_t *>(src) != nullptr)
|
||||
report_bad_device_cast(dynamic_cast<const device_t *>(src), typeid(src), typeid(_Dest));
|
||||
else
|
||||
report_bad_cast(typeid(src), typeid(_Dest));
|
||||
}
|
||||
}
|
||||
catch (std::bad_cast &)
|
||||
{
|
||||
report_bad_cast(typeid(src), typeid(_Dest));
|
||||
}
|
||||
#endif
|
||||
return static_cast<_Dest>(src);
|
||||
if (src) report_bad_device_cast(src, typeid(Source), typeid(Dest));
|
||||
else report_bad_cast(typeid(Source), typeid(Dest));
|
||||
}
|
||||
|
||||
template<class _Dest, class _Source>
|
||||
inline _Dest downcast(_Source &src)
|
||||
template <typename Dest, typename Source>
|
||||
inline std::enable_if_t<!std::is_base_of<device_t, Source>::value> report_bad_cast(Source *const src)
|
||||
{
|
||||
device_t const *dev(dynamic_cast<device_t const *>(src));
|
||||
if (dev) report_bad_device_cast(dev, typeid(Source), typeid(Dest));
|
||||
else report_bad_cast(typeid(Source), typeid(Dest));
|
||||
}
|
||||
|
||||
// template function for casting from a base class to a derived class that is checked
|
||||
// in debug builds and fast in release builds
|
||||
template <typename Dest, typename Source>
|
||||
inline Dest downcast(Source *src)
|
||||
{
|
||||
#if defined(MAME_DEBUG) && !defined(MAME_DEBUG_FAST)
|
||||
try {
|
||||
if (&dynamic_cast<_Dest>(src) != &src)
|
||||
{
|
||||
if (dynamic_cast<const device_t *>(&src) != nullptr)
|
||||
report_bad_device_cast(dynamic_cast<const device_t *>(&src), typeid(src), typeid(_Dest));
|
||||
else
|
||||
report_bad_cast(typeid(src), typeid(_Dest));
|
||||
}
|
||||
}
|
||||
catch (std::bad_cast &)
|
||||
{
|
||||
report_bad_cast(typeid(src), typeid(_Dest));
|
||||
}
|
||||
Dest const chk(dynamic_cast<Dest>(src));
|
||||
if (chk != src) report_bad_cast<std::remove_pointer_t<Dest>, Source>(src);
|
||||
#endif
|
||||
return static_cast<_Dest>(src);
|
||||
return static_cast<Dest>(src);
|
||||
}
|
||||
|
||||
template<class Dest, class Source>
|
||||
inline Dest downcast(Source &src)
|
||||
{
|
||||
#if defined(MAME_DEBUG) && !defined(MAME_DEBUG_FAST)
|
||||
std::remove_reference_t<Dest> *const chk(dynamic_cast<std::remove_reference_t<Dest> *>(&src));
|
||||
if (chk != &src) report_bad_cast<std::remove_reference_t<Dest>, Source>(&src);
|
||||
#endif
|
||||
return static_cast<Dest>(src);
|
||||
}
|
||||
|
||||
|
||||
|
@ -616,7 +616,7 @@ const struct
|
||||
{ INPUT_STRING_None, "None" },
|
||||
};
|
||||
|
||||
} // anonymous namespace
|
||||
} // TODO: anonymous namespace
|
||||
|
||||
|
||||
std::uint8_t const inp_header::MAGIC[inp_header::OFFS_BASETIME - inp_header::OFFS_MAGIC] = { 'M', 'A', 'M', 'E', 'I', 'N', 'P', 0 };
|
||||
|
@ -1572,6 +1572,7 @@ bool screen_device::update_quads()
|
||||
|
||||
void screen_device::update_burnin()
|
||||
{
|
||||
// TODO: other than being unnecessary (we should use our rand function first off), this is a simplification of how analog signals really works!
|
||||
#undef rand
|
||||
if (!m_burnin.valid())
|
||||
return;
|
||||
|
153
src/emu/screen.h
153
src/emu/screen.h
@ -48,19 +48,35 @@ enum texture_format
|
||||
// screen_update callback flags
|
||||
const UINT32 UPDATE_HAS_NOT_CHANGED = 0x0001; // the video has not changed
|
||||
|
||||
// ----- flags for video_attributes -----
|
||||
/*!
|
||||
@defgroup flags for video_attributes
|
||||
@{
|
||||
@def VIDEO_UPDATE_BEFORE_VBLANK
|
||||
update_video called at the start of the VBLANK period
|
||||
@todo hack, remove me
|
||||
|
||||
@def VIDEO_UPDATE_AFTER_VBLANK
|
||||
update_video called at the end of the VBLANK period
|
||||
@todo hack, remove me
|
||||
|
||||
@def VIDEO_SELF_RENDER
|
||||
indicates VIDEO_UPDATE will add container bits itself
|
||||
|
||||
@def VIDEO_ALWAYS_UPDATE
|
||||
force VIDEO_UPDATE to be called even for skipped frames.
|
||||
@todo in case you need this one for model updating, then you're doing it wrong (read: hack)
|
||||
|
||||
@def VIDEO_UPDATE_SCANLINE
|
||||
calls VIDEO_UPDATE for every visible scanline, even for skipped frames
|
||||
|
||||
@}
|
||||
*/
|
||||
|
||||
// should VIDEO_UPDATE by called at the start of VBLANK or at the end?
|
||||
#define VIDEO_UPDATE_BEFORE_VBLANK 0x0000
|
||||
#define VIDEO_UPDATE_AFTER_VBLANK 0x0004
|
||||
|
||||
// indicates VIDEO_UPDATE will add container bits its
|
||||
#define VIDEO_SELF_RENDER 0x0008
|
||||
|
||||
// force VIDEO_UPDATE to be called even for skipped frames
|
||||
#define VIDEO_ALWAYS_UPDATE 0x0080
|
||||
|
||||
// calls VIDEO_UPDATE for every visible scanline, even for skipped frames
|
||||
#define VIDEO_UPDATE_SCANLINE 0x0100
|
||||
|
||||
|
||||
@ -363,11 +379,89 @@ extern const device_type SCREEN;
|
||||
// iterator helper
|
||||
typedef device_type_iterator<&device_creator<screen_device>, screen_device> screen_device_iterator;
|
||||
|
||||
/*!
|
||||
@defgroup Screen device configuration macros
|
||||
@{
|
||||
@def MCFG_SCREEN_ADD
|
||||
Add a new legacy screen color device
|
||||
|
||||
@def MCFG_SCREEN_ADD_MONOCHROME
|
||||
Add a new legacy monochrome screen device
|
||||
|
||||
@def MCFG_SCREEN_MODIFY
|
||||
Modify a legacy screen device
|
||||
|
||||
@def MCFG_SCREEN_TYPE
|
||||
Modify the screen device type
|
||||
@see screen_type_enum
|
||||
|
||||
@def MCFG_SCREEN_RAW_PARAMS
|
||||
Configures screen parameters for the given screen.
|
||||
@remark It's better than using @see MCFG_SCREEN_REFRESH_RATE and @see MCFG_SCREEN_VBLANK_TIME but still not enough.
|
||||
|
||||
@param _pixclock
|
||||
Pixel Clock frequency value
|
||||
|
||||
@param _htotal
|
||||
Total number of horizontal pixels, including hblank period.
|
||||
|
||||
@param _hbend
|
||||
Horizontal pixel position for HBlank end event, also first pixel where screen rectangle is visible.
|
||||
|
||||
@param _hbstart
|
||||
Horizontal pixel position for HBlank start event, also last pixel where screen rectangle is visible.
|
||||
|
||||
@param _vtotal
|
||||
Total number of vertical pixels, including vblank period.
|
||||
|
||||
@param _vbend
|
||||
Vertical pixel position for VBlank end event, also first pixel where screen rectangle is visible.
|
||||
|
||||
@param _vbstart
|
||||
Vertical pixel position for VBlank start event, also last pixel where screen rectangle is visible.
|
||||
|
||||
@def MCFG_SCREEN_REFRESH_RATE
|
||||
Sets the number of Frames Per Second for this screen
|
||||
@remarks Please use @see MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
|
||||
|
||||
@param _rate
|
||||
FPS number
|
||||
|
||||
//**************************************************************************
|
||||
// SCREEN DEVICE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
@def MCFG_SCREEN_VBLANK_TIME
|
||||
Sets the vblank time of the given screen
|
||||
@remarks Please use @see MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
|
||||
|
||||
@param _time
|
||||
Time parameter, in attotime value
|
||||
|
||||
@def MCFG_SCREEN_SIZE
|
||||
Sets total screen size, including H/V-Blanks
|
||||
@remarks Please use @see MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
|
||||
|
||||
@param _width
|
||||
Screen horizontal size
|
||||
|
||||
@param _height
|
||||
Screen vertical size
|
||||
|
||||
@def MCFG_SCREEN_VISIBLE_AREA
|
||||
Sets screen visible area
|
||||
@remarks Please use MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
|
||||
|
||||
@param _minx
|
||||
Screen left border
|
||||
|
||||
@param _maxx
|
||||
Screen right border, must be in N-1 format
|
||||
|
||||
@param _miny
|
||||
Screen top border
|
||||
|
||||
@param _maxx
|
||||
Screen bottom border, must be in N-1 format
|
||||
|
||||
@}
|
||||
*/
|
||||
|
||||
#define MCFG_SCREEN_ADD(_tag, _type) \
|
||||
MCFG_DEVICE_ADD(_tag, SCREEN, 0) \
|
||||
@ -389,57 +483,18 @@ typedef device_type_iterator<&device_creator<screen_device>, screen_device> scre
|
||||
MCFG_SCREEN_TYPE(SVG) \
|
||||
screen_device::static_set_svg_region(*device, _region);
|
||||
|
||||
/*!
|
||||
@brief Configures screen parameters for the given screen.
|
||||
|
||||
@param _pixclock Pixel Clock frequency value
|
||||
@param _htotal Total number of horizontal pixels, including hblank period.
|
||||
@param _hbend Horizontal pixel position for HBlank end event, also first pixel where screen rectangle is visible.
|
||||
@param _hbstart Horizontal pixel position for HBlank start event, also last pixel where screen rectangle is visible.
|
||||
@param _vtotal Total number of vertical pixels, including vblank period.
|
||||
@param _vbend Vertical pixel position for VBlank end event, also first pixel where screen rectangle is visible.
|
||||
@param _vbstart Vertical pixel position for VBlank start event, also last pixel where screen rectangle is visible.
|
||||
*/
|
||||
#define MCFG_SCREEN_RAW_PARAMS(_pixclock, _htotal, _hbend, _hbstart, _vtotal, _vbend, _vbstart) \
|
||||
screen_device::static_set_raw(*device, _pixclock, _htotal, _hbend, _hbstart, _vtotal, _vbend, _vbstart);
|
||||
|
||||
/*!
|
||||
@brief Sets the number of Frames Per Second for this screen
|
||||
|
||||
@param _rate FPS number
|
||||
@deprecated Please use MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
|
||||
*/
|
||||
#define MCFG_SCREEN_REFRESH_RATE(_rate) \
|
||||
screen_device::static_set_refresh(*device, HZ_TO_ATTOSECONDS(_rate));
|
||||
|
||||
/*!
|
||||
@brief Sets the vblank time of the given screen
|
||||
|
||||
@param _time Time parameter, in attotime value\
|
||||
@deprecated Please use MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
|
||||
*/
|
||||
#define MCFG_SCREEN_VBLANK_TIME(_time) \
|
||||
screen_device::static_set_vblank_time(*device, _time);
|
||||
|
||||
/*!
|
||||
@brief Sets total screen size, including H/V-Blanks
|
||||
|
||||
@param _width Screen horizontal size
|
||||
@param _height Screen vertical size
|
||||
@deprecated Please use MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
|
||||
*/
|
||||
#define MCFG_SCREEN_SIZE(_width, _height) \
|
||||
screen_device::static_set_size(*device, _width, _height);
|
||||
|
||||
/*!
|
||||
@brief Sets screen visible area
|
||||
|
||||
@param _minx Screen left border
|
||||
@param _maxx Screen right border, must be in N-1 format
|
||||
@param _miny Screen top border
|
||||
@param _maxx Screen bottom border, must be in N-1 format
|
||||
@deprecated Please use MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
|
||||
*/
|
||||
#define MCFG_SCREEN_VISIBLE_AREA(_minx, _maxx, _miny, _maxy) \
|
||||
screen_device::static_set_visarea(*device, _minx, _maxx, _miny, _maxy);
|
||||
#define MCFG_SCREEN_DEFAULT_POSITION(_xscale, _xoffs, _yscale, _yoffs) \
|
||||
|
@ -894,7 +894,11 @@ menu_plugins_configure::~menu_plugins_configure()
|
||||
{
|
||||
emu_file file_plugin(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
|
||||
if (file_plugin.open("plugin.ini") != osd_file::error::NONE)
|
||||
throw emu_fatalerror("Unable to create file plugin.ini\n");
|
||||
// Can't throw in a destructor, so let's ignore silently for
|
||||
// now. We shouldn't write files in a destructor in any case.
|
||||
//
|
||||
// throw emu_fatalerror("Unable to create file plugin.ini\n");
|
||||
return;
|
||||
// generate the updated INI
|
||||
file_plugin.puts(mame_machine_manager::instance()->plugins().output_ini().c_str());
|
||||
}
|
||||
@ -977,4 +981,4 @@ void menu_plugins_configure::custom_render(void *selectedref, float top, float b
|
||||
DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
|
||||
}
|
||||
|
||||
} // namespace ui
|
||||
} // namespace ui
|
||||
|
@ -1245,12 +1245,12 @@ void menu_select_software::build_list(std::vector<ui_software_info *> &s_drivers
|
||||
case UI_SW_AVAILABLE:
|
||||
if (s_driver->available)
|
||||
m_displaylist.push_back(s_driver);
|
||||
break;
|
||||
break;
|
||||
|
||||
case UI_SW_UNAVAILABLE:
|
||||
if (!s_driver->available)
|
||||
m_displaylist.push_back(s_driver);
|
||||
break;
|
||||
break;
|
||||
|
||||
case UI_SW_SUPPORTED:
|
||||
if (s_driver->supported == SOFTWARE_SUPPORTED_YES)
|
||||
|
@ -93,9 +93,9 @@ static floperr_t get_offset(floppy_image_legacy *floppy, int head, int track, in
|
||||
|| (sector < 0) || (sector >= 16))
|
||||
return FLOPPY_ERROR_SEEKERROR;
|
||||
|
||||
offs = tag->sector_pos[track][sector];
|
||||
if (offs <= 0 )
|
||||
return FLOPPY_ERROR_SEEKERROR;
|
||||
offs = tag->sector_pos[track][sector];
|
||||
if (offs <= 0 )
|
||||
return FLOPPY_ERROR_SEEKERROR;
|
||||
|
||||
if (offset)
|
||||
*offset = offs;
|
||||
|
@ -301,6 +301,7 @@ dfruit.cpp
|
||||
dgpix.cpp
|
||||
dietgo.cpp
|
||||
discoboy.cpp
|
||||
divebomb.cpp
|
||||
diverboy.cpp
|
||||
djboy.cpp
|
||||
djmain.cpp
|
||||
|
@ -131,7 +131,7 @@ WRITE8_MEMBER(midway_ssio_device::ioport_write)
|
||||
{
|
||||
int which = offset >> 2;
|
||||
if (!m_custom_output[which].isnull())
|
||||
m_custom_output[which](space, offset, data & m_custom_output_mask[which], 0xff);
|
||||
m_custom_output[which](space, offset & 4, data & m_custom_output_mask[which], 0xff);
|
||||
}
|
||||
|
||||
|
||||
|
@ -282,7 +282,7 @@ private:
|
||||
#define SSIO_INPUT_PORTS(ssio) \
|
||||
AM_RANGE(0x00, 0x04) AM_MIRROR(0x18) AM_DEVREAD(ssio, midway_ssio_device, ioport_read) \
|
||||
AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ssio, midway_ssio_device, read) \
|
||||
AM_RANGE(0x00, 0x07) AM_MIRROR(0x03) AM_DEVWRITE(ssio, midway_ssio_device, ioport_write) \
|
||||
AM_RANGE(0x00, 0x07) AM_DEVWRITE(ssio, midway_ssio_device, ioport_write) \
|
||||
AM_RANGE(0x1c, 0x1f) AM_DEVWRITE(ssio, midway_ssio_device, write)
|
||||
|
||||
|
||||
|
@ -372,8 +372,10 @@ void vboysnd_device::sound_stream_update(sound_stream &stream, stream_sample_t *
|
||||
// scale to 16 bits
|
||||
note_left = (note_left << 5) | ((note_left >> 6) & 0x1f);
|
||||
note_right = (note_right << 5) | ((note_right >> 6) & 0x1f);
|
||||
if (note_left < -32767) note_left = -32767; if (note_left > 32767) note_left = 32767;
|
||||
if (note_right < -32767) note_right = -32767; if (note_right > 32767) note_right = 32767;
|
||||
if (note_left < -32767) note_left = -32767;
|
||||
if (note_left > 32767) note_left = 32767;
|
||||
if (note_right < -32767) note_right = -32767;
|
||||
if (note_right > 32767) note_right = 32767;
|
||||
|
||||
*(outL++) = ((INT16)note_left);
|
||||
*(outR++) = ((INT16)note_right);
|
||||
|
@ -46,7 +46,6 @@
|
||||
*/
|
||||
|
||||
#include "includes/abc1600.h"
|
||||
#include "machine/watchdog.h"
|
||||
#include "softlist.h"
|
||||
|
||||
|
||||
@ -845,9 +844,6 @@ static MACHINE_CONFIG_START( abc1600, abc1600_state )
|
||||
MCFG_CPU_PROGRAM_MAP(abc1600_mem)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(abc1600_state,abc1600_int_ack)
|
||||
|
||||
//MCFG_WATCHDOG_ADD("watchdog")
|
||||
//MCFG_WATCHDOG_TIME_INIT(attotime::from_msec(1600)) // XTAL_64MHz/8/10/20000/8/8
|
||||
|
||||
// video hardware
|
||||
MCFG_ABC1600_MOVER_ADD()
|
||||
|
||||
|
@ -431,7 +431,7 @@ static ADDRESS_MAP_START( karatblzbl_sound_map, AS_PROGRAM, 8, aerofgt_state )
|
||||
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( karatblzbl_sound_portmap, AS_PROGRAM, 8, aerofgt_state )
|
||||
static ADDRESS_MAP_START( karatblzbl_sound_portmap, AS_IO, 8, aerofgt_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
|
||||
AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
|
||||
|
@ -308,7 +308,7 @@ WRITE8_MEMBER( apf_state::serial_w)
|
||||
|
||||
static ADDRESS_MAP_START( apfm1000_map, AS_PROGRAM, 8, apf_state )
|
||||
AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM AM_SHARE("videoram")
|
||||
AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
|
||||
AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
|
||||
AM_RANGE(0x4000, 0x4fff) AM_MIRROR(0x1000) AM_ROM AM_REGION("roms", 0)
|
||||
AM_RANGE(0x6800, 0x7fff) AM_NOP // BASIC accesses ROM here too, but this is installed at machine_start
|
||||
AM_RANGE(0x8000, 0x9fff) AM_DEVREAD("cartslot", apf_cart_slot_device, read_rom)
|
||||
@ -317,7 +317,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( apfimag_map, AS_PROGRAM, 8, apf_state )
|
||||
AM_IMPORT_FROM(apfm1000_map)
|
||||
AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
|
||||
AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
|
||||
// These need to be confirmed, disk does not work
|
||||
AM_RANGE(0x6400, 0x64ff) AM_READWRITE(serial_r, serial_w)
|
||||
AM_RANGE(0x6500, 0x6503) AM_DEVREADWRITE("fdc", fd1771_t, read, write)
|
||||
|
@ -346,7 +346,7 @@ WRITE_LINE_MEMBER( apricot_state::i8086_lock_w )
|
||||
static ADDRESS_MAP_START( apricot_mem, AS_PROGRAM, 16, apricot_state )
|
||||
AM_RANGE(0x00000, 0x3ffff) AM_RAMBANK("ram")
|
||||
AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x7000) AM_RAM AM_SHARE("screen_buffer")
|
||||
AM_RANGE(0xfc000, 0xfffff) AM_MIRROR(0x4000) AM_ROM AM_REGION("bootstrap", 0)
|
||||
AM_RANGE(0xf8000, 0xfbfff) AM_MIRROR(0x4000) AM_ROM AM_REGION("bootstrap", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( apricot_io, AS_IO, 16, apricot_state )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2057,7 +2057,7 @@ ROM_START( prophecy )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( qnile )
|
||||
ROM_START( qnilea6 )
|
||||
ARISTMK6_BIOS
|
||||
ROM_REGION( 0x2000000, "game_rom", ROMREGION_ERASEFF)
|
||||
ROM_LOAD32_WORD("3j011111.u72", 0x0800002, 0x0400000, CRC(491f4ef2) SHA1(fbaa64d9603900de44642f95fb9f7ee15e138669) )
|
||||
@ -2359,7 +2359,7 @@ ROM_START( sbuk5 )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( swhr2 )
|
||||
ROM_START( swhr2a6 )
|
||||
ARISTMK6_BIOS
|
||||
ROM_REGION( 0x2000000, "game_rom", ROMREGION_ERASEFF)
|
||||
ROM_LOAD32_WORD("0151183.u73", 0x0000002, 0x0400000, CRC(17f0dbe2) SHA1(7f1f0936e1cf528ee794e8925c40b063d1a77729) )
|
||||
@ -2950,7 +2950,7 @@ GAME( 2001, pompeia6, aristmk6, aristmk6, aristmk6, driver_device, 0, RO
|
||||
GAME( 2002, pompeia6u,pompeia6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pompeii (0251010, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US008, A - 04/03/02
|
||||
GAME( 2005, prideaf, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Pride of Africa (10208511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/9, J - 06/12/05
|
||||
GAME( 2004, prophecy, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Prophecy (20173411, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 734, B - 10/08/04
|
||||
GAME( 2005, qnile, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile (3J011111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB027, C - 16/02/05
|
||||
GAME( 2005, qnilea6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile (3J011111, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // JB027, C - 16/02/05
|
||||
GAME( 2001, qnilese, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition (10102811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683, A - 06/12/01
|
||||
GAME( 2002, qnilejc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02
|
||||
GAME( 2002, qnilejcsp, qnilejc, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT, Show Program)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 683/1, A - 21/10/02
|
||||
@ -2980,7 +2980,7 @@ GAME( 2003, sunmoon, aristmk6, aristmk6, aristmk6, driver_device, 0, RO
|
||||
GAME( 200?, sunmonbb, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sun & Moon - Bank Buster (0153028, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV4173/2, (no data)
|
||||
GAME( 2003, sunqndol, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sun Queen - Dollar Storm (0451327, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // MV2070/1, B - 11/24/03
|
||||
GAME( 2005, sbuk5, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Super Bucks V (20203611, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 794, A - 03/08/05
|
||||
GAME( 2005, swhr2, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sweethearts II (0151183, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US169, A - 7/5/05
|
||||
GAME( 2005, swhr2a6, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sweethearts II (0151183, US)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // US169, A - 7/5/05
|
||||
GAME( 2002, swh2ld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Sweethearts II - Lucky Devil (10119811, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 712, C - 16/10/02
|
||||
GAME( 2006, tahitim, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Tahiti Magic (10238911, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 765/2, C - 07/12/06
|
||||
GAME( 2002, thaiprnc, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Thai Princess (10119321, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 707, A - 17/09/02
|
||||
|
@ -1721,7 +1721,7 @@ DRIVER_INIT_MEMBER(astrocde_state,gorf)
|
||||
{
|
||||
m_video_config = AC_SOUND_PRESENT | AC_LIGHTPEN_INTS | AC_STARS;
|
||||
m_maincpu->space(AS_IO).install_read_handler(0x15, 0x15, 0, 0xf000, 0x0f00, read8_delegate(FUNC(astrocde_state::gorf_io_1_r), this));
|
||||
m_maincpu->space(AS_IO).install_read_handler(0x16, 0x16, 0, 0xf000, 0xff00, read8_delegate(FUNC(astrocde_state::gorf_io_2_r), this));
|
||||
m_maincpu->space(AS_IO).install_read_handler(0x16, 0x16, 0, 0xf000, 0x0f00, read8_delegate(FUNC(astrocde_state::gorf_io_2_r), this));
|
||||
m_maincpu->space(AS_IO).install_read_handler(0x17, 0x17, 0, 0x0000, 0xff00, read8_delegate(FUNC(astrocde_state::gorf_speech_r), this));
|
||||
}
|
||||
|
||||
|
@ -152,8 +152,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( neat_io, AS_IO, 16, at_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0022, 0x0023) AM_DEVWRITE8("cs8221", cs8221_device, address_w, 0x00ff)
|
||||
AM_RANGE(0x0022, 0x0023) AM_DEVREADWRITE8("cs8221", cs8221_device, data_r, data_w, 0xff00)
|
||||
AM_RANGE(0x0022, 0x0023) AM_DEVICE("cs8221", cs8221_device, map)
|
||||
AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
@ -112,7 +112,7 @@ static ADDRESS_MAP_START( atari_s1_map, AS_PROGRAM, 8, atari_s1_state )
|
||||
AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r) AM_WRITENOP // aavenger ROL 200B causes a spurious write
|
||||
AM_RANGE(0x3000, 0x3fff) AM_WRITE(audioen_w) // audio enable
|
||||
AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
|
||||
AM_RANGE(0x5080, 0x508c) AM_MIRROR(3) AM_WRITE(meter_w) // time2000 only
|
||||
AM_RANGE(0x5080, 0x508f) AM_WRITE(meter_w) // time2000 only
|
||||
AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiores_w) // audio reset
|
||||
AM_RANGE(0x7000, 0x7fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
@ -688,7 +688,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(avigo_state::avigo_1hz_timer)
|
||||
|
||||
QUICKLOAD_LOAD_MEMBER( avigo_state,avigo)
|
||||
{
|
||||
address_space& flash1 = m_flash1->space(0);
|
||||
const char *systemname = machine().system().name;
|
||||
UINT32 first_app_page = (0x50000>>14);
|
||||
int app_page;
|
||||
@ -704,7 +703,7 @@ QUICKLOAD_LOAD_MEMBER( avigo_state,avigo)
|
||||
|
||||
for (int offset=0; offset<0x4000; offset++)
|
||||
{
|
||||
if (flash1.read_byte((app_page<<14) + offset) != 0xff)
|
||||
if (m_flash1->read_raw((app_page<<14) + offset) != 0xff)
|
||||
{
|
||||
empty_page = false;
|
||||
break;
|
||||
@ -721,10 +720,10 @@ QUICKLOAD_LOAD_MEMBER( avigo_state,avigo)
|
||||
logerror("Application loaded at 0x%05x-0x%05x\n", app_page<<14, (app_page<<14) + (UINT32)image.length());
|
||||
|
||||
// copy app file into flash memory
|
||||
image.fread((UINT8*)flash1.get_read_ptr(app_page<<14), image.length());
|
||||
image.fread(m_flash1->base() + (app_page<<14), image.length());
|
||||
|
||||
// update the application ID
|
||||
flash1.write_byte((app_page<<14) + 0x1a5, 0x80 + (app_page - (first_app_page>>14)));
|
||||
m_flash1->write_raw((app_page<<14) + 0x1a5, 0x80 + (app_page - (first_app_page>>14)));
|
||||
|
||||
// reset the CPU for allow at the Avigo OS to recognize the installed app
|
||||
m_warm_start = 1;
|
||||
|
@ -755,7 +755,7 @@ int ohci_hlean2131qc_device::handle_nonstandard_request(int endpoint, USBSetupPa
|
||||
}
|
||||
if (setup->bRequest == 0x19) // 19 used to receive packet, 20 to send ?
|
||||
{
|
||||
// amount to transfer
|
||||
// amount to transfer with endpoint 4
|
||||
endpoints[endpoint].buffer[5] = 20 >> 8;
|
||||
endpoints[endpoint].buffer[4] = (20 & 0xff);
|
||||
endpoints[4].remain = 20;
|
||||
@ -1091,6 +1091,7 @@ WRITE32_MEMBER(chihiro_state::mediaboard_w)
|
||||
|
||||
static ADDRESS_MAP_START(chihiro_map, AS_PROGRAM, 32, chihiro_state)
|
||||
AM_IMPORT_FROM(xbox_base_map)
|
||||
AM_RANGE(0xff000000, 0xff07ffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(chihiro_map_io, AS_IO, 32, chihiro_state)
|
||||
@ -1163,7 +1164,7 @@ MACHINE_CONFIG_END
|
||||
ROMX_LOAD(name, offset, length, hash, ROM_BIOS(bios+1)) /* Note '+1' */
|
||||
|
||||
#define CHIHIRO_BIOS \
|
||||
ROM_REGION( 0x100000, "bios", 0) \
|
||||
ROM_REGION( 0x80000, "bios", 0) \
|
||||
ROM_SYSTEM_BIOS( 0, "bios0", "Chihiro Bios" ) \
|
||||
ROM_LOAD_BIOS( 0, "chihiro_xbox_bios.bin", 0x000000, 0x80000, CRC(66232714) SHA1(b700b0041af8f84835e45d1d1250247bf7077188) ) \
|
||||
ROM_REGION( 0x200000, "mediaboard", 0) \
|
||||
|
@ -578,7 +578,9 @@ bool cobra_jvs::coin_counters(UINT8 *&buf, UINT8 count)
|
||||
*buf++ = m_coin_counter[0] >> 8; *buf++ = m_coin_counter[0];
|
||||
|
||||
if(count > 1)
|
||||
{
|
||||
*buf++ = m_coin_counter[1] >> 8; *buf++ = m_coin_counter[1];
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -2025,26 +2027,26 @@ WRITE8_MEMBER(cobra_state::sub_jvs_w)
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( cobra_sub_map, AS_PROGRAM, 32, cobra_state )
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_MIRROR(0x80000000) AM_RAM AM_SHARE("sub_ram") // Main RAM
|
||||
AM_RANGE(0x70000000, 0x7003ffff) AM_MIRROR(0x80000000) AM_READWRITE(sub_comram_r, sub_comram_w) // Double buffered shared RAM between Main and Sub
|
||||
// AM_RANGE(0x78000000, 0x780000ff) AM_MIRROR(0x80000000) AM_NOP // SCSI controller (unused)
|
||||
AM_RANGE(0x78040000, 0x7804ffff) AM_MIRROR(0x80000000) AM_DEVREADWRITE16("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w, 0xffffffff)
|
||||
AM_RANGE(0x78080000, 0x7808000f) AM_MIRROR(0x80000000) AM_READWRITE16(sub_ata0_r, sub_ata0_w, 0xffffffff)
|
||||
AM_RANGE(0x780c0010, 0x780c001f) AM_MIRROR(0x80000000) AM_READWRITE16(sub_ata1_r, sub_ata1_w, 0xffffffff)
|
||||
AM_RANGE(0x78200000, 0x782000ff) AM_MIRROR(0x80000000) AM_DEVREADWRITE("k001604", k001604_device, reg_r, reg_w) // PSAC registers
|
||||
AM_RANGE(0x78210000, 0x78217fff) AM_MIRROR(0x80000000) AM_RAM_WRITE(sub_psac_palette_w) AM_SHARE("paletteram") // PSAC palette RAM
|
||||
AM_RANGE(0x78220000, 0x7823ffff) AM_MIRROR(0x80000000) AM_DEVREADWRITE("k001604", k001604_device, tile_r, tile_w) // PSAC tile RAM
|
||||
AM_RANGE(0x78240000, 0x7827ffff) AM_MIRROR(0x80000000) AM_DEVREADWRITE("k001604", k001604_device, char_r, char_w) // PSAC character RAM
|
||||
AM_RANGE(0x78280000, 0x7828000f) AM_MIRROR(0x80000000) AM_NOP // ???
|
||||
AM_RANGE(0x78300000, 0x7830000f) AM_MIRROR(0x80000000) AM_READWRITE(sub_psac2_r, sub_psac2_w) // PSAC
|
||||
AM_RANGE(0x7e000000, 0x7e000003) AM_MIRROR(0x80000000) AM_READWRITE(sub_unk7e_r, sub_debug_w)
|
||||
AM_RANGE(0x7e040000, 0x7e041fff) AM_MIRROR(0x80000000) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */
|
||||
AM_RANGE(0x7e180000, 0x7e180003) AM_MIRROR(0x80000000) AM_READWRITE(sub_unk1_r, sub_unk1_w) // TMS57002?
|
||||
AM_RANGE(0x7e200000, 0x7e200003) AM_MIRROR(0x80000000) AM_READWRITE(sub_config_r, sub_config_w)
|
||||
AM_RANGE(0x7e280000, 0x7e28ffff) AM_MIRROR(0x80000000) AM_NOP // LANC
|
||||
AM_RANGE(0x7e300000, 0x7e30ffff) AM_MIRROR(0x80000000) AM_NOP // LANC
|
||||
AM_RANGE(0x7e380000, 0x7e380003) AM_MIRROR(0x80000000) AM_READWRITE(sub_mainbd_r, sub_mainbd_w)
|
||||
AM_RANGE(0x7ff80000, 0x7fffffff) AM_MIRROR(0x80000000) AM_ROM AM_REGION("user2", 0) /* Boot ROM */
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("sub_ram") // Main RAM
|
||||
AM_RANGE(0x70000000, 0x7003ffff) AM_READWRITE(sub_comram_r, sub_comram_w) // Double buffered shared RAM between Main and Sub
|
||||
// AM_RANGE(0x78000000, 0x780000ff) AM_NOP // SCSI controller (unused)
|
||||
AM_RANGE(0x78040000, 0x7804ffff) AM_DEVREADWRITE16("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w, 0xffffffff)
|
||||
AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE16(sub_ata0_r, sub_ata0_w, 0xffffffff)
|
||||
AM_RANGE(0x780c0010, 0x780c001f) AM_READWRITE16(sub_ata1_r, sub_ata1_w, 0xffffffff)
|
||||
AM_RANGE(0x78200000, 0x782000ff) AM_DEVREADWRITE("k001604", k001604_device, reg_r, reg_w) // PSAC registers
|
||||
AM_RANGE(0x78210000, 0x78217fff) AM_RAM_WRITE(sub_psac_palette_w) AM_SHARE("paletteram") // PSAC palette RAM
|
||||
AM_RANGE(0x78220000, 0x7823ffff) AM_DEVREADWRITE("k001604", k001604_device, tile_r, tile_w) // PSAC tile RAM
|
||||
AM_RANGE(0x78240000, 0x7827ffff) AM_DEVREADWRITE("k001604", k001604_device, char_r, char_w) // PSAC character RAM
|
||||
AM_RANGE(0x78280000, 0x7828000f) AM_NOP // ???
|
||||
AM_RANGE(0x78300000, 0x7830000f) AM_READWRITE(sub_psac2_r, sub_psac2_w) // PSAC
|
||||
AM_RANGE(0x7e000000, 0x7e000003) AM_READWRITE(sub_unk7e_r, sub_debug_w)
|
||||
AM_RANGE(0x7e040000, 0x7e041fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */
|
||||
AM_RANGE(0x7e180000, 0x7e180003) AM_READWRITE(sub_unk1_r, sub_unk1_w) // TMS57002?
|
||||
AM_RANGE(0x7e200000, 0x7e200003) AM_READWRITE(sub_config_r, sub_config_w)
|
||||
AM_RANGE(0x7e280000, 0x7e28ffff) AM_NOP // LANC
|
||||
AM_RANGE(0x7e300000, 0x7e30ffff) AM_NOP // LANC
|
||||
AM_RANGE(0x7e380000, 0x7e380003) AM_READWRITE(sub_mainbd_r, sub_mainbd_w)
|
||||
AM_RANGE(0x7ff80000, 0x7fffffff) AM_ROM AM_REGION("user2", 0) /* Boot ROM */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
@ -212,55 +212,61 @@ WRITE8_MEMBER(cosmic_state::cosmica_sound_output_w)
|
||||
if (m_samples->playing(2))
|
||||
{
|
||||
m_samples->stop(2);
|
||||
m_samples->start(2, 3); break;
|
||||
m_samples->start(2, 3);
|
||||
}
|
||||
else
|
||||
m_samples->start(2, 3); break;
|
||||
m_samples->start(2, 3);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if (m_samples->playing(3))
|
||||
{
|
||||
m_samples->stop(3);
|
||||
m_samples->start(3, 4); break;
|
||||
m_samples->start(3, 4);
|
||||
}
|
||||
else
|
||||
m_samples->start(3, 4); break;
|
||||
m_samples->start(3, 4);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if (m_samples->playing(4))
|
||||
{
|
||||
m_samples->stop(4);
|
||||
m_samples->start(4, 5); break;
|
||||
m_samples->start(4, 5);
|
||||
}
|
||||
else
|
||||
m_samples->start(4, 5); break;
|
||||
m_samples->start(4, 5);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if (m_samples->playing(5))
|
||||
{
|
||||
m_samples->stop(5);
|
||||
m_samples->start(5, 6); break;
|
||||
m_samples->start(5, 6);
|
||||
}
|
||||
else
|
||||
m_samples->start(5, 6); break;
|
||||
m_samples->start(5, 6);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
if (m_samples->playing(6))
|
||||
{
|
||||
m_samples->stop(6);
|
||||
m_samples->start(6, 7); break;
|
||||
m_samples->start(6, 7);
|
||||
}
|
||||
else
|
||||
m_samples->start(6, 7); break;
|
||||
m_samples->start(6, 7);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
if (m_samples->playing(7))
|
||||
{
|
||||
m_samples->stop(7);
|
||||
m_samples->start(7, 8); break;
|
||||
m_samples->start(7, 8);
|
||||
}
|
||||
else
|
||||
m_samples->start(7, 8); break;
|
||||
m_samples->start(7, 8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -335,7 +335,7 @@ void cyclemb_state::skydest_draw_sprites(screen_device &screen, bitmap_ind16 &bi
|
||||
if(m_obj3_ram[i+1] & 1)
|
||||
x |= 0x100;
|
||||
|
||||
x = 0x138 - x;
|
||||
x = 0x138 - x;
|
||||
|
||||
spr_offs = (m_obj1_ram[i+0]);
|
||||
spr_offs += ((m_obj3_ram[i+0] & 3) << 8);
|
||||
|
@ -554,8 +554,6 @@ WRITE32_MEMBER(dragngun_state::eeprom_w)
|
||||
|
||||
WRITE32_MEMBER(deco32_state::tattass_control_w)
|
||||
{
|
||||
address_space &eeprom_space = m_eeprom->space();
|
||||
|
||||
/* Eprom in low byte */
|
||||
if (mem_mask==0x000000ff) { /* Byte write to low byte only (different from word writing including low byte) */
|
||||
/*
|
||||
@ -604,7 +602,7 @@ WRITE32_MEMBER(deco32_state::tattass_control_w)
|
||||
int d=m_readBitCount/8;
|
||||
int m=7-(m_readBitCount%8);
|
||||
int a=(m_byteAddr+d)%1024;
|
||||
int b=eeprom_space.read_byte(a);
|
||||
int b=m_eeprom->internal_read(a);
|
||||
|
||||
m_tattass_eprom_bit=(b>>m)&1;
|
||||
|
||||
@ -621,7 +619,7 @@ WRITE32_MEMBER(deco32_state::tattass_control_w)
|
||||
int b=(m_buffer[24]<<7)|(m_buffer[25]<<6)|(m_buffer[26]<<5)|(m_buffer[27]<<4)
|
||||
|(m_buffer[28]<<3)|(m_buffer[29]<<2)|(m_buffer[30]<<1)|(m_buffer[31]<<0);
|
||||
|
||||
eeprom_space.write_byte(m_byteAddr, b);
|
||||
m_eeprom->internal_write(m_byteAddr, b);
|
||||
}
|
||||
m_lastClock=data&0x20;
|
||||
return;
|
||||
@ -636,7 +634,7 @@ WRITE32_MEMBER(deco32_state::tattass_control_w)
|
||||
|
||||
/* Check for read command */
|
||||
if (m_buffer[0] && m_buffer[1]) {
|
||||
m_tattass_eprom_bit=(eeprom_space.read_byte(m_byteAddr)>>7)&1;
|
||||
m_tattass_eprom_bit=(m_eeprom->internal_read(m_byteAddr)>>7)&1;
|
||||
m_readBitCount=1;
|
||||
m_pendingCommand=1;
|
||||
}
|
||||
|
@ -8,6 +8,8 @@
|
||||
|
||||
**************************************************************************/
|
||||
|
||||
// tech manual: http://manx.classiccmp.org/mirror/vt100.net/docs/la120-tm/la120tm1.pdf
|
||||
|
||||
#include "emu.h"
|
||||
#include "render.h"
|
||||
#include "cpu/i8085/i8085.h"
|
||||
@ -120,6 +122,18 @@ WRITE8_MEMBER( decwriter_state::la120_LED_w )
|
||||
(m_led_array&0x1)?"PAPER OUT":"---------" );
|
||||
}
|
||||
|
||||
/* todo: er1400 device */
|
||||
/* control lines:
|
||||
3 2 1
|
||||
0 0 0 Standby
|
||||
0 0 1 Read
|
||||
0 1 0 Erase
|
||||
0 1 1 Write
|
||||
1 0 0 <unused>
|
||||
1 0 1 Shift data out
|
||||
1 1 0 Accept address
|
||||
1 1 1 Accept data
|
||||
*/
|
||||
READ8_MEMBER( decwriter_state::la120_NVR_r )
|
||||
{
|
||||
return 0xFF;
|
||||
@ -128,22 +142,65 @@ READ8_MEMBER( decwriter_state::la120_NVR_r )
|
||||
WRITE8_MEMBER( decwriter_state::la120_NVR_w )
|
||||
{
|
||||
}
|
||||
|
||||
/* todo: fully reverse engineer DC305 ASIC */
|
||||
/* read registers: all 4 registers read the same set of 8 bits, but what register is being read may be selectable by writing
|
||||
Tech manual implies this register is an 8-bit position counter of where the carriage head currently is located.
|
||||
0 = 1 = 2 = 3
|
||||
data bits:
|
||||
76543210
|
||||
|||||||\- ?
|
||||
||||||\-- ?
|
||||
|||||\--- ?
|
||||
||||\---- ?
|
||||
|||\----- ?
|
||||
||\------ ?
|
||||
|\------- ?
|
||||
\-------- ?
|
||||
*/
|
||||
READ8_MEMBER( decwriter_state::la120_DC305_r )
|
||||
{
|
||||
return 0xFF;
|
||||
UINT8 data = 0x00;
|
||||
logerror("DC305 Read from offset %01x, returning %02X\n", offset, data);
|
||||
return data;
|
||||
}
|
||||
/* write registers:
|
||||
0 = ? (a bunch of data written here on start, likely motor control and setup bits)
|
||||
1 = ? (one byte written here, possibly voltage control, 0x00 or could be dot fifo write?)
|
||||
2 = ?
|
||||
3 = ?
|
||||
there are at least two bits in here to enable the 2.5ms tick interrupt(rst3) and the dot interrupt/linefeed(rtc expired) interrupt(rst5)
|
||||
the dot fifo is 4 bytes long, dot int fires when it is half empty
|
||||
at least 3 bits control the speaker/buzzer which can be on or off, at least two volume levels, and at least two frequencies, 400hz or 2400hz
|
||||
two quadrature lines from the head servomotor connect here to allow the dc305 to determine motor position; one pulses when the motor turns clockwise and one when it turns counterclockwise. the head stop is found when the pulses stop, which firmware uses to find the zero position.
|
||||
*/
|
||||
WRITE8_MEMBER( decwriter_state::la120_DC305_w )
|
||||
{
|
||||
logerror("DC305 Write of %02X to offset %01X\n", data, offset);
|
||||
}
|
||||
|
||||
/*
|
||||
* 8080 address map (x = ignored; * = selects address within this range)
|
||||
a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0
|
||||
0 0 0 0 * * * * * * * * * * * * R ROMS0 (e6 first half OR e6,e8)
|
||||
0 0 0 1 * * * * * * * * * * * * R ROMS1 (e6 second half OR e12,e17)
|
||||
0 0 1 0 0 * * * * * * * * * * * R ROMS2 (e4)
|
||||
0 0 1 0 1 * * * * * * * * * * * R ROMS2 (open bus)
|
||||
0 0 1 1 x x x x x x x * * * * * RW KBD(R)/LED(W)
|
||||
0 1 0 0 x x * * * * * * * * * * RW RAM0 (e7,e13)
|
||||
0 1 0 1 x x * * * * * * * * * * RW RAM1 (e9,e18)
|
||||
0 1 1 0 x * * * x x x x x x x * RW NVM (ER1400,e39)
|
||||
0 1 1 1 x x x x x x x x x x * * RW PTR (DC305 ASIC,e25)
|
||||
1 * * * * * * * * * * * * * * * Expansion space (open bus)
|
||||
*/
|
||||
static ADDRESS_MAP_START(la120_mem, AS_PROGRAM, 8, decwriter_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE( 0x0000, 0x2fff ) AM_ROM
|
||||
AM_RANGE( 0x3000, 0x3fff ) AM_READWRITE(la120_KBD_r, la120_LED_w) // keyboard read, write to status and 7seg LEDS
|
||||
AM_RANGE( 0x0000, 0x27ff ) AM_ROM
|
||||
AM_RANGE( 0x3000, 0x301f ) AM_READWRITE(la120_KBD_r, la120_LED_w) AM_MIRROR(0xFE0) // keyboard read, write to status and 7seg LEDS
|
||||
AM_RANGE( 0x4000, 0x43ff ) AM_MIRROR(0x0c00) AM_RAM // 1k 'low ram'
|
||||
AM_RANGE( 0x5000, 0x53ff ) AM_MIRROR(0x0c00) AM_RAM // 1k 'high ram'
|
||||
AM_RANGE( 0x6000, 0x6fff ) AM_MIRROR(0x08fe) AM_READWRITE(la120_NVR_r, la120_NVR_w) // ER1400 EAROM
|
||||
AM_RANGE( 0x7000, 0x7003 ) AM_MIRROR(0x0ffc) AM_READWRITE(la120_DC305_r, la120_DC305_w) // DC305 printer controller ASIC stuff; since this can generate interrupts this needs to be split to its own device.
|
||||
AM_RANGE( 0x6000, 0x67ff ) /*AM_MIRROR(0x08fe)*/AM_MIRROR(0x800) AM_READWRITE(la120_NVR_r, la120_NVR_w) // ER1400 EAROM; a10,9,8 are c3,2,1, a0 is clk, data i/o on d7, d0 always reads as 0 (there may have once been a second er1400 with data i/o on d0, sharing same address controls as the d7 one, not populated on shipping boards), d1-d6 read open bus
|
||||
AM_RANGE( 0x7000, 0x7003 ) AM_MIRROR(0x0ffc) AM_READWRITE(la120_DC305_r, la120_DC305_w) // DC305 printer controller ASIC stuff; since this can generate interrupts (dot interrupt, lf interrupt, 2.5ms interrupt) this needs to be split to its own device.
|
||||
// 8000-ffff is reserved for expansion (i.e. unused, open bus)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -160,7 +217,7 @@ static ADDRESS_MAP_START(la120_io, AS_IO, 8, decwriter_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00, 0x00) AM_MIRROR(0x7C) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w) // 8251 Data
|
||||
AM_RANGE(0x01, 0x01) AM_MIRROR(0x7C) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w) // 8251 Status/Control
|
||||
//AM_RANGE(0x02, 0x02) AM_MIRROR(0x7D) // other io ports
|
||||
//AM_RANGE(0x02, 0x02) AM_MIRROR(0x7D) // other io ports, serial loopback etc, see table 4-9 in TM
|
||||
// 0x80-0xff are reserved for expansion (i.e. unused, open bus)
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
ADDRESS_MAP_END
|
||||
@ -206,7 +263,7 @@ static INPUT_PORTS_START( la120 )
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- _") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
|
||||
PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_TOGGLE PORT_NAME("Caps lock") PORT_CODE(KEYCODE_CAPSLOCK) // TODO: does the physical switch toggle?
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_TOGGLE PORT_NAME("Caps lock") PORT_CODE(KEYCODE_CAPSLOCK) // This key has a physical toggle
|
||||
PORT_START("COL5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 0") PORT_CODE(KEYCODE_0_PAD)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||
|
631
src/mame/drivers/divebomb.cpp
Executable file
631
src/mame/drivers/divebomb.cpp
Executable file
@ -0,0 +1,631 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood, Phil Bennett
|
||||
/***************************************************************************
|
||||
|
||||
Kyuukoukabakugekitai - Dive Bomber Squad
|
||||
|
||||
(C) Konami 1989
|
||||
|
||||
****************************************************************************
|
||||
|
||||
PCB Layout
|
||||
----------
|
||||
|
||||
GX840 PWB35165
|
||||
|--------------------------------------------------------------------------|
|
||||
| |
|
||||
| U15 Z80B Z80B DSW1 |
|
||||
| DSW2 |
|
||||
| HM6116AP-15 DSW3 |
|
||||
| U16 U21 DSW4 |
|
||||
| MN53060KGB 8464A-15L U20 |
|
||||
| U17 (QFP148) 8464A-15L |
|
||||
| |
|
||||
| J |
|
||||
| A |
|
||||
| M |
|
||||
| U18 24.0MHz 051316 Z80B M |
|
||||
| A |
|
||||
| U83 U34 U19 |
|
||||
| MB81C86-55 MB81C86-55 U82 U33 8464A-15L |
|
||||
| MB81C86-55 MB81C86-55 U81 U22 |
|
||||
| |
|
||||
| 051316 |
|
||||
| |
|
||||
| CN1 CN2 SN76489 |
|
||||
| SN76489 |
|
||||
| SN76489 |
|
||||
| SN76489 |
|
||||
| HM6116AP-15 U23 SN76489 |
|
||||
| U22 SN76489 VR |
|
||||
| |
|
||||
|--------------------------------------------------------------------------|
|
||||
|
||||
Notes:
|
||||
There are numerous wire modificationss connecting pins of U15-U18 to
|
||||
various other components on the PCB
|
||||
|
||||
MB81C86 - 64kx4 SRAM
|
||||
HM6116AP - 2kx8 SRAM
|
||||
8464A - 8kx8 SRAM
|
||||
MN53060KGB - Panasonic CMOS gate array (6016 gates)
|
||||
051316 - Konami PSAC
|
||||
CN1/CN2 - ROM board connectors
|
||||
|
||||
|
||||
ROM Board
|
||||
---------
|
||||
|
||||
GX840 PWB451716
|
||||
|--------------------------|
|
||||
| |
|
||||
| U8 |
|
||||
| |
|
||||
| U3 U7 U10 |
|
||||
| |
|
||||
| U2 U6 U10 |
|
||||
| |
|
||||
| U41 U5 U9 |
|
||||
| |
|
||||
|--------------------------|
|
||||
|
||||
Notes:
|
||||
All ROMs are 27512 EPROMs
|
||||
|
||||
|
||||
To do:
|
||||
* Verify layer alignment
|
||||
* Deduce unknown DIP switch settings
|
||||
|
||||
To verify against original HW:
|
||||
* Game has no sprites when you reach level 4 and becomes unplayable
|
||||
* Game often hangs (sprites no longer animate, screen scrolls/rotates endlessly) due to a communication breakdown
|
||||
Data sent from one CPU to another is occasionally overwritten before the recipient can read the first value
|
||||
* Game hangs if you die from hitting a regular enemy at the same time a boss dies
|
||||
* Bosses can't kill you directly
|
||||
* Cocktail mode is broken
|
||||
* UFOs that appear during the boss battle wrap around when leaving the right side of the screen
|
||||
* Sometimes a stray, bad explosion sprite appears in the top left corner after you respawn
|
||||
* Lives counter is corrupt for > 4 lives
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/divebomb.h"
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Main CPU
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static ADDRESS_MAP_START( divebomb_fgcpu_map, AS_PROGRAM, 8, divebomb_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
|
||||
AM_RANGE(0xe000, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( divebomb_fgcpu_iomap, AS_IO, 8, divebomb_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_DEVWRITE("sn0", sn76489_device, write)
|
||||
AM_RANGE(0x01, 0x01) AM_DEVWRITE("sn1", sn76489_device, write)
|
||||
AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn2", sn76489_device, write)
|
||||
AM_RANGE(0x03, 0x03) AM_DEVWRITE("sn3", sn76489_device, write)
|
||||
AM_RANGE(0x04, 0x04) AM_DEVWRITE("sn4", sn76489_device, write)
|
||||
AM_RANGE(0x05, 0x05) AM_DEVWRITE("sn5", sn76489_device, write)
|
||||
AM_RANGE(0x10, 0x10) AM_READWRITE(fgcpu_roz_comm_r, fgcpu_roz_comm_w)
|
||||
AM_RANGE(0x20, 0x20) AM_READWRITE(fgcpu_spr_comm_r, fgcpu_spr_comm_w)
|
||||
AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x31, 0x31) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x32, 0x32) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0x33, 0x33) AM_READ_PORT("DSW2")
|
||||
// 34/35 aren't read but PCB has 4 banks of dips populated, so logically they would map here even if unused
|
||||
AM_RANGE(0x34, 0x34) AM_READ_PORT("DSW3")
|
||||
AM_RANGE(0x35, 0x35) AM_READ_PORT("DSW4")
|
||||
AM_RANGE(0x36, 0x36) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0x37, 0x37) AM_READ(fgcpu_comm_flags_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
READ8_MEMBER(divebomb_state::fgcpu_spr_comm_r)
|
||||
{
|
||||
has_fromsprite = false;
|
||||
update_irqs();
|
||||
return from_sprite;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(divebomb_state::fgcpu_spr_comm_w)
|
||||
{
|
||||
m_spritecpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
|
||||
to_spritecpu = data;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(divebomb_state::fgcpu_roz_comm_r)
|
||||
{
|
||||
has_fromroz = false;
|
||||
update_irqs();
|
||||
return from_roz;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(divebomb_state::fgcpu_roz_comm_w)
|
||||
{
|
||||
m_rozcpucpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
|
||||
to_rozcpu = data;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(divebomb_state::fgcpu_comm_flags_r)
|
||||
{
|
||||
UINT8 result = 0;
|
||||
|
||||
if (has_fromroz)
|
||||
result |= 1;
|
||||
if (has_fromsprite)
|
||||
result |= 2;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Sprite CPU
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static ADDRESS_MAP_START( divebomb_spritecpu_map, AS_PROGRAM, 8, divebomb_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0xc800, 0xdfff) AM_WRITENOP
|
||||
AM_RANGE(0xe000, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( divebomb_spritecpu_iomap, AS_IO, 8, divebomb_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(spritecpu_port00_w)
|
||||
AM_RANGE(0x80, 0x80) AM_READWRITE(spritecpu_comm_r, spritecpu_comm_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
READ8_MEMBER(divebomb_state::spritecpu_comm_r)
|
||||
{
|
||||
m_spritecpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
|
||||
return to_spritecpu;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(divebomb_state::spritecpu_comm_w)
|
||||
{
|
||||
from_sprite = data;
|
||||
has_fromsprite = true;
|
||||
update_irqs();
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(divebomb_state::spritecpu_port00_w)
|
||||
{
|
||||
// Written with 0x00 on reset
|
||||
// Written with 0x34 7 times in succession on occasion (see PC:0x00E3)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* ROZ CPU
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static ADDRESS_MAP_START( divebomb_rozcpu_map, AS_PROGRAM, 8, divebomb_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
|
||||
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_DEVREADWRITE("k051316_1", k051316_device, read, write)
|
||||
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_DEVREADWRITE("k051316_2", k051316_device, read, write)
|
||||
AM_RANGE(0xe000, 0xffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( divebomb_rozcpu_iomap, AS_IO, 8, divebomb_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(rozcpu_bank_w)
|
||||
AM_RANGE(0x10, 0x10) AM_WRITE(rozcpu_wrap2_enable_w)
|
||||
AM_RANGE(0x12, 0x12) AM_WRITE(rozcpu_enable1_w)
|
||||
AM_RANGE(0x13, 0x13) AM_WRITE(rozcpu_enable2_w)
|
||||
AM_RANGE(0x14, 0x14) AM_WRITE(rozcpu_wrap1_enable_w)
|
||||
AM_RANGE(0x20, 0x2f) AM_DEVWRITE("k051316_1", k051316_device, ctrl_w)
|
||||
AM_RANGE(0x30, 0x3f) AM_DEVWRITE("k051316_2", k051316_device, ctrl_w)
|
||||
AM_RANGE(0x40, 0x40) AM_READWRITE(rozcpu_comm_r, rozcpu_comm_w)
|
||||
AM_RANGE(0x50, 0x50) AM_WRITE(rozcpu_pal_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
WRITE8_MEMBER(divebomb_state::rozcpu_bank_w)
|
||||
{
|
||||
UINT32 bank = BITSWAP8(data, 4, 5, 6, 7, 3, 2, 1, 0) >> 4;
|
||||
m_bank1->set_entry(bank);
|
||||
|
||||
if (data & 0x0f)
|
||||
logerror("rozcpu_bank_w %02x\n", data);
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(divebomb_state::rozcpu_comm_r)
|
||||
{
|
||||
m_rozcpucpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
|
||||
return to_rozcpu;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(divebomb_state::rozcpu_comm_w)
|
||||
{
|
||||
from_roz = data;
|
||||
has_fromroz = true;
|
||||
update_irqs();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* IRQs
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void divebomb_state::update_irqs()
|
||||
{
|
||||
if (has_fromsprite || has_fromroz)
|
||||
m_fgcpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
|
||||
else
|
||||
m_fgcpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Port definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static INPUT_PORTS_START( divebomb )
|
||||
PORT_START("DSW1") // If the first 4 are on it engages freeplay
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6")
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DSW2")
|
||||
PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2")
|
||||
PORT_DIPSETTING( 0x03, "3" )
|
||||
PORT_DIPSETTING( 0x02, "5" )
|
||||
PORT_DIPSETTING( 0x01, "7" )
|
||||
PORT_DIPSETTING( 0x00, "9" )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:3")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) )
|
||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:4")
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:5")
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:6")
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:7")
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8")
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DSW3")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW3:1" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW3:2" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW3:3" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW3:4" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW3:5" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW3:6" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW3:7" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW3:8" )
|
||||
|
||||
PORT_START("DSW4")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW4:1" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW4:2" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW4:3" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW4:4" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW4:5" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW4:6" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW4:7" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW4:8" )
|
||||
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
||||
|
||||
PORT_START("SYSTEM")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Graphics definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static const gfx_layout tiles8x8_layout =
|
||||
{
|
||||
8,8,
|
||||
RGN_FRAC(1,1),
|
||||
2,
|
||||
{ 8,0 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
|
||||
16*8
|
||||
};
|
||||
|
||||
|
||||
static const gfx_layout tiles16x16_layout =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,1),
|
||||
4,
|
||||
{ 24,16,8,0 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7, 32,33,34,35,36,37,38,39 },
|
||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64,9*64,10*64,11*64,12*64,13*64,14*64,15*64 },
|
||||
64*16
|
||||
};
|
||||
|
||||
|
||||
static GFXDECODE_START( divebomb )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0x400+0x400, 16 )
|
||||
GFXDECODE_ENTRY( "gfx2", 0, tiles16x16_layout, 0x400+0x400+0x400, 16 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Machine driver
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static MACHINE_CONFIG_START( divebomb, divebomb_state )
|
||||
|
||||
MCFG_CPU_ADD("fgcpu", Z80,XTAL1/4) // ?
|
||||
MCFG_CPU_PROGRAM_MAP(divebomb_fgcpu_map)
|
||||
MCFG_CPU_IO_MAP(divebomb_fgcpu_iomap)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", divebomb_state, nmi_line_pulse)
|
||||
|
||||
MCFG_CPU_ADD("spritecpu", Z80,XTAL1/4) // ?
|
||||
MCFG_CPU_PROGRAM_MAP(divebomb_spritecpu_map)
|
||||
MCFG_CPU_IO_MAP(divebomb_spritecpu_iomap)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", divebomb_state, nmi_line_pulse)
|
||||
|
||||
MCFG_CPU_ADD("rozcpu", Z80,XTAL1/4) // ?
|
||||
MCFG_CPU_PROGRAM_MAP(divebomb_rozcpu_map)
|
||||
MCFG_CPU_IO_MAP(divebomb_rozcpu_iomap)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", divebomb_state, nmi_line_pulse)
|
||||
|
||||
MCFG_QUANTUM_PERFECT_CPU("fgcpu")
|
||||
|
||||
MCFG_DEVICE_ADD("k051316_1", K051316, 0)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_K051316_BPP(8)
|
||||
MCFG_K051316_WRAP(0)
|
||||
MCFG_K051316_OFFSETS(-88, -16)
|
||||
MCFG_K051316_CB(divebomb_state, zoom_callback_1)
|
||||
|
||||
MCFG_DEVICE_ADD("k051316_2", K051316, 0)
|
||||
MCFG_GFX_PALETTE("palette")
|
||||
MCFG_K051316_BPP(8)
|
||||
MCFG_K051316_WRAP(0)
|
||||
MCFG_K051316_OFFSETS(-88, -16)
|
||||
MCFG_K051316_CB(divebomb_state, zoom_callback_2)
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(divebomb_state, divebomb)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(divebomb_state, divebomb)
|
||||
|
||||
MCFG_VIDEO_START_OVERRIDE(divebomb_state, divebomb)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(256, 256)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1-32)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(divebomb_state, screen_update_divebomb)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", divebomb)
|
||||
MCFG_PALETTE_ADD("palette", 0x400+0x400+0x400+0x100)
|
||||
|
||||
MCFG_PALETTE_INIT_OWNER(divebomb_state, divebomb)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
// All frequencies unverified
|
||||
MCFG_SOUND_ADD("sn0", SN76489, XTAL1/8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||
MCFG_SOUND_ADD("sn1", SN76489, XTAL1/8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||
MCFG_SOUND_ADD("sn2", SN76489, XTAL1/8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||
MCFG_SOUND_ADD("sn3", SN76489, XTAL1/8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||
MCFG_SOUND_ADD("sn4", SN76489, XTAL1/8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||
MCFG_SOUND_ADD("sn5", SN76489, XTAL1/8)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Driver initialization
|
||||
*
|
||||
*************************************/
|
||||
|
||||
ROM_START( divebomb )
|
||||
ROM_REGION( 0x08000, "fgcpu", 0 )
|
||||
ROM_LOAD( "U20.27256", 0x00000, 0x08000, CRC(89a30c82) SHA1(ecb3dcc00192b9646dab55ec6c102ab1d2e403e8) )
|
||||
|
||||
ROM_REGION( 0x08000, "spritecpu", 0 )
|
||||
ROM_LOAD( "U21.27256", 0x00000, 0x08000, CRC(3896d3f6) SHA1(86d10c907bf00977656d8fa426b2f1ac211acdb3) )
|
||||
|
||||
ROM_REGION( 0x08000, "rozcpu", 0 )
|
||||
ROM_LOAD( "U19.27256", 0x00000, 0x08000, CRC(16e26fb9) SHA1(9602c79f947f5267e5f4f4f8dedc4697861a519b) )
|
||||
|
||||
ROM_REGION( 0x40000, "rozcpudata", 0 ) // on sub-board
|
||||
ROM_LOAD( "U9.27512", 0x00000, 0x10000, CRC(c842f831) SHA1(badb38908a285e54b85e369342fd6ecb8fd68bbb) )
|
||||
ROM_LOAD( "U10.27512", 0x10000, 0x10000, CRC(c77f3574) SHA1(06b7576d5949906ee3209c011cd30e7066bb20cc) )
|
||||
ROM_LOAD( "U11.27512", 0x20000, 0x10000, CRC(8d46be7d) SHA1(7751df1f39b208169f04a5b904cb63e9fb53bba8) )
|
||||
// u12 not populated
|
||||
|
||||
ROM_REGION( 0x10000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "U22.27256", 0x00000, 0x08000, CRC(f816f9c5) SHA1(b8e136463a1b4c81960c6b7350472d82af0fb1fb) )
|
||||
ROM_LOAD16_BYTE( "U23.27256", 0x00001, 0x08000, CRC(d2600570) SHA1(a7f7e182670e7b95321c4ec8278ce915bbe2b5ca) )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx2", 0 )
|
||||
ROM_LOAD32_BYTE( "U15.27C100", 0x00000, 0x20000, CRC(ccba7fa0) SHA1(5eb4c1e458e7810e0f9db92946474d6da65f1a1b) )
|
||||
ROM_LOAD32_BYTE( "U16.27C100", 0x00001, 0x20000, CRC(16891fef) SHA1(a4723958509bccc73138306e58c355325ec342a3) )
|
||||
ROM_LOAD32_BYTE( "U17.27C100", 0x00002, 0x20000, CRC(f4cbc97f) SHA1(1e13bc18db128575ca8e6998e9dd6f7dc37a99b8) )
|
||||
ROM_LOAD32_BYTE( "U18.27C100", 0x00003, 0x20000, CRC(91ab9d89) SHA1(98454df4638bb831babb1796b095169851e6cf40) )
|
||||
|
||||
ROM_REGION( 0x30000, "k051316_1", ROMREGION_INVERT ) // on sub-board
|
||||
ROM_LOAD( "U1.27512", 0x00000, 0x10000, CRC(99af1e18) SHA1(5d63130313fdd85c58e1d6b59e42b75a15328a6b) )
|
||||
ROM_LOAD( "U2.27512", 0x10000, 0x10000, CRC(99c8d516) SHA1(6205907bd526181542f4d58d442667595aec9730) )
|
||||
ROM_LOAD( "U3.27512", 0x20000, 0x10000, CRC(5ab4af3c) SHA1(ab8632e37a42f2f0db9b22c8577c4f09718ccc7c) )
|
||||
// u4 not populated
|
||||
|
||||
ROM_REGION( 0x40000, "k051316_2", ROMREGION_INVERT ) // on sub-board
|
||||
ROM_LOAD( "U5.27512", 0x00000, 0x10000, CRC(6726d022) SHA1(314fcec87f3bf335356b24224158233d91012675) )
|
||||
ROM_LOAD( "U6.27512", 0x10000, 0x10000, CRC(756b8a12) SHA1(2869c18ef1592d00dbc340facac2002d21adf6bc) )
|
||||
ROM_LOAD( "U7.27512", 0x20000, 0x10000, CRC(01c07d84) SHA1(45e05f15e94a32adbd488a4f77a9619e7e6b63f3) )
|
||||
ROM_LOAD( "U8.27512", 0x30000, 0x10000, CRC(5b9e7caa) SHA1(85510c0b861bad6a1411afc1d628bc7c448c9fef) )
|
||||
|
||||
// there are 12 PROMs, 4x banks of 3
|
||||
ROM_REGION( 0xc00, "fg_proms", 0 ) // text layer palette
|
||||
ROM_LOAD( "u35.MB7122.bin", 0x800, 0x400, CRC(e890259d) SHA1(f96e00da6de3b868e50f2347b83f8e5727b85d9b) )
|
||||
ROM_LOAD( "u36.MB7122.bin", 0x400, 0x400, CRC(0c1ecdb5) SHA1(4ba9e283c747d6a760fe2e0a8b2bfdfcc55a3969) )
|
||||
ROM_LOAD( "u37.MB7122.bin", 0x000, 0x400, CRC(55c17465) SHA1(153e99a09604467ddd8c641d60c5f1b8d9a205b4) )
|
||||
|
||||
ROM_REGION( 0xc00, "k051316_1_pr", 0 ) // front roz ( k051316_1 )
|
||||
// looks like banks 0,1,2 are valid
|
||||
ROM_LOAD( "u29.MB7122.bin", 0x000, 0x400, CRC(8b3d60d2) SHA1(a9ac4d3dd5e72522717dd18c32d3f88b75bb077c) ) // the last 0x100 block is invalid (copy of data in u33)
|
||||
ROM_LOAD( "u30.MB7122.bin", 0x400, 0x400, CRC(0aeb1a88) SHA1(7b00e85ced210a5f7dfc100c15baa9e1735c7c80) ) // the last 0x100 block is empty
|
||||
ROM_LOAD( "u31.MB7122.bin", 0x800, 0x400, CRC(75cf5f3d) SHA1(ec02b99ab65e561596b773918569b28313f21835) ) // the last 0x100 block is invalid (copy of data in u33)
|
||||
|
||||
ROM_REGION( 0xc00, "k051316_2_pr", 0 ) // back roz ( k051316_2 )
|
||||
// 4 valid palettes but our code is only using 1
|
||||
ROM_LOAD( "u34.MB7122.bin", 0x000, 0x400, CRC(e0e2d93b) SHA1(9043929520abde15727e9333c153cf97104c9003) )
|
||||
ROM_LOAD( "u33.MB7122.bin", 0x400, 0x400, CRC(4df75f4f) SHA1(0157d6e268cdd797622c712648eb2e88214b12d9) )
|
||||
ROM_LOAD( "u32.MB7122.bin", 0x800, 0x400, CRC(e2e4b443) SHA1(e97a4e2988e29f992c5dec6f817a783b14535742) )
|
||||
|
||||
ROM_REGION( 0x300, "spr_proms", 0 ) // sprite layer palette
|
||||
ROM_LOAD( "u83.MB7114.bin", 0x000, 0x100, CRC(d216110d) SHA1(3de935dbf876f82864b8b69049c8681101619411) )
|
||||
ROM_LOAD( "u82.MB7114.bin", 0x100, 0x100, CRC(52637774) SHA1(919727e337a716dbd18b51e26e45025b82aeba79) )
|
||||
ROM_LOAD( "u81.MB7114.bin", 0x200, 0x100, CRC(c59b0857) SHA1(aea4cb8d1ab59b54f90edb96d4ac42b1dd6bdcbe) )
|
||||
ROM_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Driver initialization
|
||||
*
|
||||
*************************************/
|
||||
|
||||
MACHINE_START_MEMBER(divebomb_state, divebomb)
|
||||
{
|
||||
m_bank1->configure_entries(0, 16, memregion("rozcpudata")->base(), 0x4000);
|
||||
|
||||
save_item(NAME(roz1_enable));
|
||||
save_item(NAME(roz2_enable));
|
||||
save_item(NAME(roz1_wrap));
|
||||
save_item(NAME(roz2_wrap));
|
||||
save_item(NAME(to_spritecpu));
|
||||
save_item(NAME(to_rozcpu));
|
||||
save_item(NAME(has_fromsprite));
|
||||
save_item(NAME(has_fromroz));
|
||||
save_item(NAME(from_sprite));
|
||||
save_item(NAME(from_roz));
|
||||
save_item(NAME(roz_pal));
|
||||
}
|
||||
|
||||
|
||||
MACHINE_RESET_MEMBER(divebomb_state, divebomb)
|
||||
{
|
||||
roz1_enable = false;
|
||||
roz2_enable = false;
|
||||
roz1_wrap = false;
|
||||
roz2_wrap = false;
|
||||
has_fromsprite = false;
|
||||
has_fromroz = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Game driver(s)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
// According to a flyer, the world release was to be called 'Gaia'. The Gaia title graphics are present in the ROMs.
|
||||
GAME( 1989, divebomb, 0, divebomb, divebomb, driver_device, 0, ROT270, "Konami", "Kyuukoukabakugekitai - Dive Bomber Squad (Japan, prototype)", MACHINE_IS_INCOMPLETE | MACHINE_SUPPORTS_SAVE )
|
@ -361,8 +361,8 @@ static ADDRESS_MAP_START( dlus_map, AS_PROGRAM, 8, dlair_state )
|
||||
AM_RANGE(0x0000, 0x9fff) AM_ROM
|
||||
AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_RAM
|
||||
AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc7) AM_DEVREAD("aysnd", ay8910_device, data_r)
|
||||
AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("CONTROLS")
|
||||
AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SERVICE")
|
||||
AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("P1")
|
||||
AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x1fc7) AM_READ(laserdisc_r)
|
||||
AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fc7) AM_DEVWRITE("aysnd", ay8910_device, data_w)
|
||||
AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1fc7) AM_WRITE(misc_w)
|
||||
@ -478,11 +478,11 @@ static INPUT_PORTS_START( dlair )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
||||
// PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x03, DEF_STR( Unused ) )
|
||||
PORT_DIPSETTING( 0x03, DEF_STR( Unused ) ) // TODO: kill me
|
||||
PORT_DIPNAME( 0x04, 0x00, "Difficulty Mode" ) PORT_DIPLOCATION("A:3")
|
||||
PORT_DIPSETTING( 0x04, "Mode 1" )
|
||||
PORT_DIPSETTING( 0x00, "Mode 2" )
|
||||
PORT_DIPNAME( 0x08, 0x00, "Engineering mode" ) PORT_DIPLOCATION("A:4")
|
||||
PORT_DIPNAME( 0x08, 0x00, "Engineering Mode" ) PORT_DIPLOCATION("A:4")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, "2 Credits/Free play" ) PORT_DIPLOCATION("A:5")
|
||||
@ -524,7 +524,7 @@ static INPUT_PORTS_START( dlair )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) ) PORT_CONDITION("DSW1", 0x04, EQUALS, 0x04)
|
||||
PORT_DIPSETTING( 0x90, DEF_STR( Easy ) ) PORT_CONDITION("DSW1", 0x04, EQUALS, 0x04)
|
||||
|
||||
PORT_START("CONTROLS")
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
|
||||
@ -534,7 +534,7 @@ static INPUT_PORTS_START( dlair )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */
|
||||
|
||||
PORT_START("SERVICE")
|
||||
PORT_START("SYSTEM")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
@ -627,7 +627,53 @@ static INPUT_PORTS_START( dleuro )
|
||||
PORT_DIPSETTING( 0x90, DEF_STR( Easy ) ) PORT_CONDITION("DSW1", 0x04, EQUALS, 0x04)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( spaceace )
|
||||
PORT_INCLUDE(dlair)
|
||||
|
||||
PORT_MODIFY("DSW1")
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("A:1")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("A:2")
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_DIPSETTING( 0x02, "5" )
|
||||
// TODO: manual claims following is "Difficulty Increase", which more or less is again rank ...
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("A:3")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) // 5 chapters without losing life
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) // 3
|
||||
PORT_DIPNAME( 0x08, 0x00, "Difficulty Rank Increase" ) PORT_DIPLOCATION("A:4")
|
||||
PORT_DIPSETTING( 0x00, "Slow" )
|
||||
PORT_DIPSETTING( 0x08, "Fast" )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("A:5")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, "Demo Sounds Frequency" ) PORT_DIPLOCATION("A:6")
|
||||
PORT_DIPSETTING( 0x00, "All the time" )
|
||||
PORT_DIPSETTING( 0x20, "1 out of eight times" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_HIGH, "A:7")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_HIGH, "A:8")
|
||||
|
||||
PORT_MODIFY("DSW2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "LD Player" ) PORT_DIPLOCATION("B:1")
|
||||
PORT_DIPSETTING( 0x00, "LD-PR7820" )
|
||||
PORT_DIPSETTING( 0x01, "LDV-1000" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_HIGH, "B:2")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x04, IP_ACTIVE_HIGH, "B:3")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_HIGH, "B:4")
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("B:5")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, "Unlimited Lives" ) PORT_DIPLOCATION("B:6")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, "Enable Frame Display" ) PORT_DIPLOCATION("B:7") // ?
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_HIGH, "B:8" ) // "Diagnostic Mode", plays the whole disc from start to finish, start buttons makes the disc go back one chapter. Setting this to off makes it to execute host CPU tests before proceeding to game.
|
||||
|
||||
INPUT_PORTS_END
|
||||
|
||||
// TODO: dips for Space Ace euro
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -905,7 +951,7 @@ ROM_START( spaceace ) /* revision A3 */
|
||||
ROM_LOAD( "sa_a3_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
|
||||
|
||||
DISK_REGION( "ld_ldv1000" )
|
||||
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
|
||||
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( spaceacea2 ) /* revision A2 */
|
||||
@ -917,7 +963,7 @@ ROM_START( spaceacea2 ) /* revision A2 */
|
||||
ROM_LOAD( "sa_a2_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
|
||||
|
||||
DISK_REGION( "ld_ldv1000" )
|
||||
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
|
||||
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( spaceacea ) /* revision A */
|
||||
@ -929,7 +975,7 @@ ROM_START( spaceacea ) /* revision A */
|
||||
ROM_LOAD( "sa_a_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
|
||||
|
||||
DISK_REGION( "ld_ldv1000" )
|
||||
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
|
||||
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( spaceaceeuro ) /* Italian Sidam version */
|
||||
@ -989,7 +1035,7 @@ GAMEL( 1983, dleuro, dlair, dleuro, dleuro, dlair_state, fixed, R
|
||||
GAMEL( 1983, dleuroalt,dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Dragon's Lair (European, alternate)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlital, dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Sidam license?)","Dragon's Lair (Italian)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
|
||||
GAMEL( 1983, spaceace, 0, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceacea2, spaceace, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceacea, spaceace, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceaceeuro, spaceace, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Space Ace (European)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceace, 0, dlair_ldv1000, spaceace, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceacea2, spaceace, dlair_ldv1000, spaceace, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceacea, spaceace, dlair_ldv1000, spaceace, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceaceeuro, spaceace, dleuro, spaceace, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Space Ace (European)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
|
@ -97,7 +97,7 @@ static ADDRESS_MAP_START(eacc_mem, AS_PROGRAM, 8, eacc_state)
|
||||
AM_RANGE(0x0000, 0x001f) AM_RAM AM_SHARE("nvram") // inside cpu, battery-backed
|
||||
AM_RANGE(0x0020, 0x007f) AM_RAM // inside cpu
|
||||
AM_RANGE(0x6000, 0x67ff) AM_ROM AM_MIRROR(0x8000)
|
||||
AM_RANGE(0x8004, 0x8007) AM_MIRROR(0x7fc) AM_DEVREADWRITE("pia", pia6821_device, read, write)
|
||||
AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x7fc) AM_DEVREADWRITE("pia", pia6821_device, read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
@ -295,6 +295,7 @@ PALETTE_INIT_MEMBER(esh_state, esh)
|
||||
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
/* blue component */
|
||||
// TODO: actually opaque flag
|
||||
if((color_prom[i+0x100] >> 7) & 1)
|
||||
b = 0xff;
|
||||
else
|
||||
@ -326,25 +327,10 @@ static GFXDECODE_START( esh )
|
||||
GFXDECODE_ENTRY("gfx2", 0, esh_gfx_layout, 0x0, 0x20)
|
||||
GFXDECODE_END
|
||||
|
||||
#if 0
|
||||
void esh_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case TIMER_IRQ_STOP:
|
||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||
break;
|
||||
default:
|
||||
assert_always(FALSE, "Unknown id in esh_state::device_timer");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
INTERRUPT_GEN_MEMBER(esh_state::vblank_callback_esh)
|
||||
{
|
||||
// IRQ
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
//timer_set(attotime::from_usec(50), TIMER_IRQ_STOP);
|
||||
}
|
||||
|
||||
// TODO: 0xfe NMI enabled after writing to LD command port, NMI reads LD port.
|
||||
|
@ -4,6 +4,9 @@
|
||||
/******************************************************************************
|
||||
|
||||
Fidelity Electronics 6502 based board driver
|
||||
|
||||
TODO:
|
||||
- EAS doesn't work, there's some activity if you boot/reset with 1-key held down
|
||||
|
||||
******************************************************************************
|
||||
|
||||
@ -169,6 +172,26 @@ PCB label 510-1035A01
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Elite A/S Challenger (EAS)
|
||||
This was out in 1982. 2 program updates were released in 1983 and 1984,
|
||||
named Budapest and Glasgow, places where Fidelity won chess computer matches.
|
||||
---------------------------------
|
||||
|
||||
8*8 magnet sensors, 11 buttons, 8*(8+1) LEDs + 4*7seg LEDs
|
||||
R65C02P4 CPU, default frequency 3MHz*
|
||||
4KB RAM (2*HM6116), 24KB ROM
|
||||
TSI S14001A + speech ROM
|
||||
I/O with 8255 PPI and bunch of TTL
|
||||
module slot and printer port
|
||||
PCB label 510-1071A01
|
||||
|
||||
*It was advertised as 3.2, 3.6, or 4MHz, with unofficial modifications up to 8MHz.
|
||||
PCB photos show only a 3MHz XTAL.
|
||||
|
||||
|
||||
******************************************************************************
|
||||
|
||||
|
||||
Sensory Chess Challenger "9" (SC9)
|
||||
2 versions were available, the newer version was 2MHz and included the Budapest program.
|
||||
---------------------------------
|
||||
@ -309,11 +332,14 @@ Z80 D6 to W: (model 6092, tied to VCC otherwise)
|
||||
#include "cpu/m6502/r65c02.h"
|
||||
#include "cpu/m6502/m65sc02.h"
|
||||
#include "machine/6821pia.h"
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/nvram.h"
|
||||
|
||||
#include "includes/fidelz80.h"
|
||||
|
||||
// internal artwork
|
||||
#include "fidel_csc.lh" // clickable
|
||||
#include "fidel_eas.lh" // clickable
|
||||
#include "fidel_fev.lh" // clickable
|
||||
#include "fidel_rsc_v2.lh" // clickable
|
||||
#include "fidel_sc9.lh" // clickable
|
||||
@ -326,10 +352,12 @@ class fidel6502_state : public fidelz80base_state
|
||||
public:
|
||||
fidel6502_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: fidelz80base_state(mconfig, type, tag),
|
||||
m_ppi8255(*this, "ppi8255"),
|
||||
m_cart(*this, "cartslot")
|
||||
{ }
|
||||
|
||||
// devices/pointers
|
||||
optional_device<i8255_device> m_ppi8255;
|
||||
optional_device<generic_slot_device> m_cart;
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); }
|
||||
@ -350,6 +378,14 @@ public:
|
||||
DECLARE_READ_LINE_MEMBER(csc_pia1_ca1_r);
|
||||
DECLARE_READ_LINE_MEMBER(csc_pia1_cb1_r);
|
||||
|
||||
// EAS
|
||||
DECLARE_WRITE8_MEMBER(eas_segment_w);
|
||||
DECLARE_WRITE8_MEMBER(eas_led_w);
|
||||
DECLARE_READ8_MEMBER(eas_input_r);
|
||||
DECLARE_WRITE8_MEMBER(eas_ppi_porta_w);
|
||||
DECLARE_READ8_MEMBER(eas_ppi_portb_r);
|
||||
DECLARE_WRITE8_MEMBER(eas_ppi_portc_w);
|
||||
|
||||
// SC9
|
||||
void sc9_prepare_display();
|
||||
DECLARE_WRITE8_MEMBER(sc9_control_w);
|
||||
@ -502,6 +538,58 @@ WRITE_LINE_MEMBER(fidel6502_state::csc_pia1_ca2_w)
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
EAS
|
||||
******************************************************************************/
|
||||
|
||||
// TTL/generic
|
||||
|
||||
WRITE8_MEMBER(fidel6502_state::eas_segment_w)
|
||||
{
|
||||
// a0-a2,d7: digit segment
|
||||
m_7seg_data = (data & 0x80) >> offset;
|
||||
m_7seg_data = BITSWAP8(m_7seg_data,7,6,4,5,0,2,1,3);
|
||||
csc_prepare_display();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fidel6502_state::eas_led_w)
|
||||
{
|
||||
// a0-a2,d0: led data
|
||||
m_led_data = (data & 1) << offset;
|
||||
csc_prepare_display();
|
||||
}
|
||||
|
||||
READ8_MEMBER(fidel6502_state::eas_input_r)
|
||||
{
|
||||
// multiplexed inputs
|
||||
return read_inputs(9);
|
||||
}
|
||||
|
||||
|
||||
// 8255 PPI
|
||||
|
||||
WRITE8_MEMBER(fidel6502_state::eas_ppi_porta_w)
|
||||
{
|
||||
// speech chip?
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fidel6502_state::eas_ppi_portc_w)
|
||||
{
|
||||
// d0-d3: input/led mux
|
||||
m_led_select = data & 0xf;
|
||||
csc_prepare_display();
|
||||
|
||||
// other: ?
|
||||
}
|
||||
|
||||
READ8_MEMBER(fidel6502_state::eas_ppi_portb_r)
|
||||
{
|
||||
// ?
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
SC9
|
||||
******************************************************************************/
|
||||
@ -691,6 +779,21 @@ static ADDRESS_MAP_START( csc_map, AS_PROGRAM, 8, fidel6502_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
// EAS
|
||||
|
||||
static ADDRESS_MAP_START( eas_map, AS_PROGRAM, 8, fidel6502_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
|
||||
AM_RANGE(0x2000, 0x5fff) AM_READ(sc12_cart_r)
|
||||
AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
|
||||
AM_RANGE(0x7020, 0x7027) AM_WRITE(eas_segment_w) AM_READNOP
|
||||
AM_RANGE(0x7030, 0x7037) AM_WRITE(eas_led_w) AM_READNOP
|
||||
AM_RANGE(0x7050, 0x7050) AM_READ(eas_input_r)
|
||||
AM_RANGE(0x8000, 0x9fff) AM_ROM
|
||||
AM_RANGE(0xc000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
// SU9
|
||||
|
||||
static ADDRESS_MAP_START( su9_map, AS_PROGRAM, 8, fidel6502_state )
|
||||
@ -1027,6 +1130,99 @@ static INPUT_PORTS_START( rsc )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( eas )
|
||||
PORT_START("IN.0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square a8")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square a7")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square a6")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square a5")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square a4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square a3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square a2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square a1")
|
||||
|
||||
PORT_START("IN.1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square b8")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square b7")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square b6")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square b5")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square b4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square b3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square b2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square b1")
|
||||
|
||||
PORT_START("IN.2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square c8")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square c7")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square c6")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square c5")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square c4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square c3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square c2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square c1")
|
||||
|
||||
PORT_START("IN.3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square d8")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square d7")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square d6")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square d5")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square d4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square d3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square d2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square d1")
|
||||
|
||||
PORT_START("IN.4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square e8")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square e7")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square e6")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square e5")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square e4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square e3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square e2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square e1")
|
||||
|
||||
PORT_START("IN.5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square f8")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square f7")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square f6")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square f5")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square f4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square f3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square f2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square f1")
|
||||
|
||||
PORT_START("IN.6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square g8")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square g7")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square g6")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square g5")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square g4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square g3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square g2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square g1")
|
||||
|
||||
PORT_START("IN.7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square h8")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square h7")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square h6")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square h5")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square h4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square h3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square h2")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Square h1")
|
||||
|
||||
PORT_START("IN.8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Machine Drivers
|
||||
@ -1092,6 +1288,39 @@ static MACHINE_CONFIG_START( csc, fidel6502_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( eas, fidel6502_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", R65C02, XTAL_3MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(eas_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(fidelz80base_state, irq0_line_hold, 600) // guessed
|
||||
|
||||
MCFG_DEVICE_ADD("ppi8255", I8255, 0) // port B: input, port A & C: output
|
||||
MCFG_I8255_OUT_PORTA_CB(WRITE8(fidel6502_state, eas_ppi_porta_w))
|
||||
MCFG_I8255_IN_PORTB_CB(READ8(fidel6502_state, eas_ppi_portb_r))
|
||||
MCFG_I8255_OUT_PORTC_CB(WRITE8(fidel6502_state, eas_ppi_portc_w))
|
||||
|
||||
MCFG_NVRAM_ADD_1FILL("nvram")
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_fidel_eas)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
|
||||
MCFG_S14001A_EXT_READ_HANDLER(READ8(fidel6502_state, csc_speech_r))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
|
||||
|
||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
|
||||
/* cartridge */
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc")
|
||||
MCFG_GENERIC_EXTENSIONS("bin,dat")
|
||||
MCFG_GENERIC_LOAD(fidelz80base_state, scc_cartridge)
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( su9, csc )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -1236,6 +1465,38 @@ ROM_START( cscfr )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( feasbu )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("eli_bu3.bin", 0x8000, 0x2000, CRC(93dcc23b) SHA1(2eb8c5a85e566948bc256d6b1804694e6b0ffa6f) )
|
||||
ROM_LOAD("eli_bu1.bin", 0xc000, 0x2000, CRC(859d69f1) SHA1(a8b057683369e2387f22fc7e916b6f3c75d44b21) )
|
||||
ROM_LOAD("eli_bu2.bin", 0xe000, 0x2000, CRC(571a33a7) SHA1(43b110cf0918caf16643178f401e58b2dc73894f) )
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("vcc-english.bin", 0x0000, 0x1000, BAD_DUMP CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // taken from csc, assume correct
|
||||
ROM_RELOAD( 0x1000, 0x1000)
|
||||
ROM_END
|
||||
|
||||
ROM_START( feasgla )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("eli_gla3.bin", 0x8000, 0x0800, CRC(2fdddb4f) SHA1(6da0a328a45462f285ae6a0756f97c5a43148f97) )
|
||||
ROM_CONTINUE( 0x9000, 0x0800 )
|
||||
ROM_CONTINUE( 0x8800, 0x0800 )
|
||||
ROM_CONTINUE( 0x9800, 0x0800 )
|
||||
ROM_LOAD("eli_gla1.bin", 0xc000, 0x0800, CRC(f094e625) SHA1(fef84c6a3da504aac15988ec9af94417e5fedfbd) )
|
||||
ROM_CONTINUE( 0xd000, 0x0800 )
|
||||
ROM_CONTINUE( 0xc800, 0x0800 )
|
||||
ROM_CONTINUE( 0xd800, 0x0800 )
|
||||
ROM_LOAD("eli_gla2.bin", 0xe000, 0x0800, CRC(5f6845d1) SHA1(684eb16faf36a49560e5a73b55fd0022dc090e35) )
|
||||
ROM_CONTINUE( 0xf000, 0x0800 )
|
||||
ROM_CONTINUE( 0xe800, 0x0800 )
|
||||
ROM_CONTINUE( 0xf800, 0x0800 )
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("vcc-english.bin", 0x0000, 0x1000, BAD_DUMP CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) // taken from csc, assume correct
|
||||
ROM_RELOAD( 0x1000, 0x1000)
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( super9cc )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("cb9.bin", 0x2000, 0x2000, CRC(421147e8) SHA1(ccf62f6f218e8992baf30973fe41b35e14a1cc1a) )
|
||||
@ -1317,13 +1578,16 @@ ROM_END
|
||||
******************************************************************************/
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
CONS( 1981, reversic, 0, 0, rsc, rsc, driver_device, 0, "Fidelity Electronics", "Reversi Sensory Challenger (1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1981, reversic, 0, 0, rsc, rsc, driver_device, 0, "Fidelity Electronics", "Reversi Sensory Challenger (green version)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
CONS( 1981, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1981, cscsp, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1981, cscg, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1981, cscfr, csc, 0, csc, cscg, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
CONS( 1983, feasbu, 0, 0, eas, eas, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Budapest program, English)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1984, feasgla, feasbu, 0, eas, eas, driver_device, 0, "Fidelity Electronics", "Elite A/S Challenger (Glasgow program, English)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
CONS( 1983, super9cc, 0, 0, su9, su9, driver_device, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1983, super9ccsp, super9cc, 0, su9, su9g, driver_device, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1983, super9ccg, super9cc, 0, su9, su9g, driver_device, 0, "Fidelity Electronics", "Super 9 Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
@ -1333,4 +1597,4 @@ CONS( 1982, fscc9, 0, 0, sc9, sc12, driver_device, 0,
|
||||
CONS( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
CONS( 1987, fexcel, 0, 0, fexcel, fexcel, driver_device, 0, "Fidelity Electronics", "Excellence (model 6080/6093)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1987, fexcelv, 0, 0, fexcelv, fexcelv, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
@ -486,7 +486,7 @@ ROM_END
|
||||
|
||||
/* 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, 0, 0, eagv7, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1990, feagv9, 0, 0, eagv9, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1990, feagv10, 0, 0, eagv10, eag, driver_device, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 2002, feagv11, feagv10, 0, eagv11, eag, driver_device, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", 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 )
|
||||
|
@ -2175,7 +2175,6 @@ static ADDRESS_MAP_START(marty_mem, AS_PROGRAM, 16, towns_state)
|
||||
AM_RANGE(0x00f00000, 0x00f7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
|
||||
AM_RANGE(0x00f80000, 0x00f8ffff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffff) // WAVE RAM
|
||||
AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
|
||||
AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(ux_mem, AS_PROGRAM, 16, towns_state)
|
||||
@ -2200,7 +2199,6 @@ static ADDRESS_MAP_START(ux_mem, AS_PROGRAM, 16, towns_state)
|
||||
AM_RANGE(0x00f00000, 0x00f7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
|
||||
AM_RANGE(0x00f80000, 0x00f8ffff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffff) // WAVE RAM
|
||||
AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
|
||||
AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( towns_io , AS_IO, 32, towns_state)
|
||||
|
@ -486,7 +486,7 @@ WRITE16_MEMBER(gaelco3d_state::tms_reset_w)
|
||||
/* it does not ever appear to be touched after that */
|
||||
if (LOG)
|
||||
logerror("%06X:tms_reset_w(%02X) = %08X & %08X\n", space.device().safe_pc(), offset, data, mem_mask);
|
||||
m_tms->set_input_line(INPUT_LINE_RESET, (data == 0xffff) ? CLEAR_LINE : ASSERT_LINE);
|
||||
m_tms->set_input_line(INPUT_LINE_RESET, (data == 0xffff) ? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1871,8 +1871,8 @@ static ADDRESS_MAP_START( turtles_map, AS_PROGRAM, 8, galaxian_state )
|
||||
AM_RANGE(0xa030, 0xa030) AM_MIRROR(0x47c7) AM_WRITE(coin_count_0_w)
|
||||
AM_RANGE(0xa038, 0xa038) AM_MIRROR(0x47c7) AM_WRITE(coin_count_1_w)
|
||||
AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x47ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
|
||||
AM_RANGE(0xb000, 0xb03f) AM_MIRROR(0x47cf) AM_READWRITE(turtles_ppi8255_0_r, turtles_ppi8255_0_w)
|
||||
AM_RANGE(0xb800, 0xb83f) AM_MIRROR(0x47cf) AM_READWRITE(turtles_ppi8255_1_r, turtles_ppi8255_1_w)
|
||||
AM_RANGE(0xb000, 0xb03f) AM_MIRROR(0x47c0) AM_READWRITE(turtles_ppi8255_0_r, turtles_ppi8255_0_w)
|
||||
AM_RANGE(0xb800, 0xb83f) AM_MIRROR(0x47c0) AM_READWRITE(turtles_ppi8255_1_r, turtles_ppi8255_1_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
@ -14256,21 +14256,14 @@ ROM_START( fl7_50 ) // Serial 00000069A1C9.
|
||||
ROM_LOAD( "27c1001.u6", 0x00000, 0x20000, CRC(00eac3c1) SHA1(1a955f8bc044e17f0885b4b126a66d7ad191e410) )
|
||||
|
||||
ROM_REGION( 0x8000, "gfx2", 0 )
|
||||
ROM_LOAD( "27c256.u3", 0x00000, 0x8000, CRC(cfc8f3e2) SHA1(7dd72e3ffb0904776f3c07635b953e72f4c63068) )
|
||||
ROM_LOAD( "27c256.u3", 0x0000, 0x8000, CRC(cfc8f3e2) SHA1(7dd72e3ffb0904776f3c07635b953e72f4c63068) )
|
||||
|
||||
/* Bipolar PROMs from the W4 hardware version */
|
||||
/* Proper bipolar PROM dump */
|
||||
ROM_REGION( 0x200, "proms", 0 )
|
||||
ROM_LOAD( "82s129.g13", 0x0000, 0x0100, CRC(3ed8a612) SHA1(4189f1abb0033aeb64b56f63bdbc29d980c43909) )
|
||||
ROM_LOAD( "82s129.g14", 0x0100, 0x0100, CRC(aa068a22) SHA1(42c6d77e5aa360c529f8aca6b925010c15eedcd7) )
|
||||
ROM_LOAD( "am27s29.u1", 0x0000, 0x0200, CRC(3fe7e369) SHA1(cf4ae287cb58581a4bf9e9ff1994426461fb38cc) )
|
||||
|
||||
ROM_REGION( 0x20, "proms2", 0 )
|
||||
ROM_LOAD( "82s123.d13", 0x0000, 0x0020, CRC(c6b41352) SHA1(d7c3b5aa32e4e456c9432a13bede1db6d62eb270) )
|
||||
|
||||
ROM_REGION( 0x100, "unkprom", 0 )
|
||||
ROM_LOAD( "82s129.f3", 0x0000, 0x0100, CRC(1d668d4a) SHA1(459117f78323ea264d3a29f1da2889bbabe9e4be) )
|
||||
|
||||
ROM_REGION( 0x20, "unkprom2", 0 )
|
||||
ROM_LOAD( "82s123.d12", 0x0000, 0x0020, CRC(6df3f972) SHA1(0096a7f7452b70cac6c0752cb62e24b643015b5c) )
|
||||
ROM_LOAD( "dummy", 0x0000, 0x0020, NO_DUMP )
|
||||
|
||||
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial DS2401 */
|
||||
ROM_LOAD( "ds2401.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
|
||||
@ -14294,24 +14287,17 @@ ROM_START( fl7_500 ) // Serial 000000125873.
|
||||
ROM_LOAD( "27c1001.u6", 0x00000, 0x20000, CRC(00eac3c1) SHA1(1a955f8bc044e17f0885b4b126a66d7ad191e410) )
|
||||
|
||||
ROM_REGION( 0x8000, "gfx2", 0 )
|
||||
ROM_LOAD( "27c256.u3", 0x00000, 0x8000, CRC(4e3bd980) SHA1(202d3135da7ab435f487943079d88b170dc10955) )
|
||||
ROM_LOAD( "27c256.u3", 0x0000, 0x8000, CRC(4e3bd980) SHA1(202d3135da7ab435f487943079d88b170dc10955) )
|
||||
|
||||
/* Bipolar PROMs from the W4 hardware version */
|
||||
/* Proper bipolar PROM dump */
|
||||
ROM_REGION( 0x200, "proms", 0 )
|
||||
ROM_LOAD( "82s129.g13", 0x0000, 0x0100, CRC(3ed8a612) SHA1(4189f1abb0033aeb64b56f63bdbc29d980c43909) )
|
||||
ROM_LOAD( "82s129.g14", 0x0100, 0x0100, CRC(aa068a22) SHA1(42c6d77e5aa360c529f8aca6b925010c15eedcd7) )
|
||||
ROM_LOAD( "am27s29.u1", 0x0000, 0x0200, CRC(3fe7e369) SHA1(cf4ae287cb58581a4bf9e9ff1994426461fb38cc) )
|
||||
|
||||
ROM_REGION( 0x20, "proms2", 0 )
|
||||
ROM_LOAD( "82s123.d13", 0x0000, 0x0020, CRC(c6b41352) SHA1(d7c3b5aa32e4e456c9432a13bede1db6d62eb270) )
|
||||
|
||||
ROM_REGION( 0x100, "unkprom", 0 )
|
||||
ROM_LOAD( "82s129.f3", 0x0000, 0x0100, CRC(1d668d4a) SHA1(459117f78323ea264d3a29f1da2889bbabe9e4be) )
|
||||
|
||||
ROM_REGION( 0x20, "unkprom2", 0 )
|
||||
ROM_LOAD( "82s123.d12", 0x0000, 0x0020, CRC(6df3f972) SHA1(0096a7f7452b70cac6c0752cb62e24b643015b5c) )
|
||||
ROM_LOAD( "dummy", 0x0000, 0x0020, NO_DUMP )
|
||||
|
||||
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial DS2401 */
|
||||
ROM_LOAD( "ds2401.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
|
||||
ROM_LOAD( "ds2401.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
|
||||
|
||||
ROM_END
|
||||
|
||||
@ -14332,21 +14318,14 @@ ROM_START( fl7_2000 ) // Serial 00000063A47F.
|
||||
ROM_LOAD( "m27c1001.u6", 0x00000, 0x20000, CRC(5a2157bb) SHA1(2b170102caf1224df7a6d33bb84d19114f453d89) )
|
||||
|
||||
ROM_REGION( 0x8000, "gfx2", 0 )
|
||||
ROM_LOAD( "27c256.u3", 0x00000, 0x8000, CRC(cfc8f3e2) SHA1(7dd72e3ffb0904776f3c07635b953e72f4c63068) )
|
||||
ROM_LOAD( "27c256.u3", 0x0000, 0x8000, CRC(cfc8f3e2) SHA1(7dd72e3ffb0904776f3c07635b953e72f4c63068) )
|
||||
|
||||
/* Bipolar PROMs from the W4 hardware version */
|
||||
/* Proper bipolar PROM dump */
|
||||
ROM_REGION( 0x200, "proms", 0 )
|
||||
ROM_LOAD( "82s129.g13", 0x0000, 0x0100, CRC(3ed8a612) SHA1(4189f1abb0033aeb64b56f63bdbc29d980c43909) )
|
||||
ROM_LOAD( "82s129.g14", 0x0100, 0x0100, CRC(aa068a22) SHA1(42c6d77e5aa360c529f8aca6b925010c15eedcd7) )
|
||||
ROM_LOAD( "am27s29.u1", 0x0000, 0x0200, CRC(3fe7e369) SHA1(cf4ae287cb58581a4bf9e9ff1994426461fb38cc) )
|
||||
|
||||
ROM_REGION( 0x20, "proms2", 0 )
|
||||
ROM_LOAD( "82s123.d13", 0x0000, 0x0020, CRC(c6b41352) SHA1(d7c3b5aa32e4e456c9432a13bede1db6d62eb270) )
|
||||
|
||||
ROM_REGION( 0x100, "unkprom", 0 )
|
||||
ROM_LOAD( "82s129.f3", 0x0000, 0x0100, CRC(1d668d4a) SHA1(459117f78323ea264d3a29f1da2889bbabe9e4be) )
|
||||
|
||||
ROM_REGION( 0x20, "unkprom2", 0 )
|
||||
ROM_LOAD( "82s123.d12", 0x0000, 0x0020, CRC(6df3f972) SHA1(0096a7f7452b70cac6c0752cb62e24b643015b5c) )
|
||||
ROM_LOAD( "dummy", 0x0000, 0x0020, NO_DUMP )
|
||||
|
||||
ROM_REGION(0x8, "fl7w4_id", 0) /* Electronic Serial DS2401 */
|
||||
ROM_LOAD( "ds2401.bin", 0x0000, 0x0008, NO_DUMP ) // Hand built to match our ROM set
|
||||
@ -15099,9 +15078,9 @@ GAMEL( 1993, bingownga, bingowng, bingownga,bingownga,driver_device, 0,
|
||||
|
||||
// --- Flaming 7's hardware (W-4 derivative) ---
|
||||
GAME( 199?, fl7_3121, 0, flam7_w4, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (W4 Hardware, Red, White & Blue 7's + Hollywood Nights)", 0 )
|
||||
GAME( 199?, fl7_50, fl7_3121, flaming7, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 50)", MACHINE_NOT_WORKING )
|
||||
GAME( 199?, fl7_500, fl7_3121, flaming7, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 500)", MACHINE_NOT_WORKING )
|
||||
GAME( 199?, fl7_2000, fl7_3121, flaming7, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 2000)", MACHINE_NOT_WORKING )
|
||||
GAME( 199?, fl7_50, 0, flaming7, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 50)", MACHINE_NOT_WORKING )
|
||||
GAME( 199?, fl7_500, fl7_50, flaming7, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 500)", MACHINE_NOT_WORKING )
|
||||
GAME( 199?, fl7_2000, fl7_50, flaming7, flaming7, driver_device, 0, ROT0, "Cyberdyne Systems", "Flaming 7 (Custom Hardware, Main, 2000)", MACHINE_NOT_WORKING )
|
||||
|
||||
|
||||
// --- Wing W-8 hardware ---
|
||||
|
@ -937,13 +937,20 @@ COMMAND_MODE:
|
||||
ax = (UINT16)src1_ptr[edx];
|
||||
al = src1_ptr[edx+0x10000];
|
||||
ax |= BG_RGB;
|
||||
if (al & 0x01) dst_ptr[ecx] = ax; ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x02) dst_ptr[ecx] = ax; ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x04) dst_ptr[ecx] = ax; ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x08) dst_ptr[ecx] = ax; ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x10) dst_ptr[ecx] = ax; ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x20) dst_ptr[ecx] = ax; ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x40) dst_ptr[ecx] = ax; ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x01) dst_ptr[ecx] = ax;
|
||||
ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x02) dst_ptr[ecx] = ax;
|
||||
ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x04) dst_ptr[ecx] = ax;
|
||||
ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x08) dst_ptr[ecx] = ax;
|
||||
ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x10) dst_ptr[ecx] = ax;
|
||||
ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x20) dst_ptr[ecx] = ax;
|
||||
ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x40) dst_ptr[ecx] = ax;
|
||||
ecx++; ecx &= WARPMASK;
|
||||
if (al & 0x80) dst_ptr[ecx] = ax;
|
||||
dst_ptr += SCREEN_WIDTH;
|
||||
} while (++edx);
|
||||
@ -1404,12 +1411,18 @@ void halleys_state::copy_fixed_xp(bitmap_ind16 &bitmap, UINT16 *source)
|
||||
do {
|
||||
ax = esi[ecx];
|
||||
bx = esi[ecx+1];
|
||||
if (ax) edi[ecx ] = ax; ax = esi[ecx+2];
|
||||
if (bx) edi[ecx+1] = bx; bx = esi[ecx+3];
|
||||
if (ax) edi[ecx+2] = ax; ax = esi[ecx+4];
|
||||
if (bx) edi[ecx+3] = bx; bx = esi[ecx+5];
|
||||
if (ax) edi[ecx+4] = ax; ax = esi[ecx+6];
|
||||
if (bx) edi[ecx+5] = bx; bx = esi[ecx+7];
|
||||
if (ax) edi[ecx ] = ax;
|
||||
ax = esi[ecx+2];
|
||||
if (bx) edi[ecx+1] = bx;
|
||||
bx = esi[ecx+3];
|
||||
if (ax) edi[ecx+2] = ax;
|
||||
ax = esi[ecx+4];
|
||||
if (bx) edi[ecx+3] = bx;
|
||||
bx = esi[ecx+5];
|
||||
if (ax) edi[ecx+4] = ax;
|
||||
ax = esi[ecx+6];
|
||||
if (bx) edi[ecx+5] = bx;
|
||||
bx = esi[ecx+7];
|
||||
if (ax) edi[ecx+6] = ax;
|
||||
if (bx) edi[ecx+7] = bx;
|
||||
}
|
||||
@ -1440,24 +1453,40 @@ void halleys_state::copy_fixed_2b(bitmap_ind16 &bitmap, UINT16 *source)
|
||||
ax = esi[ecx];
|
||||
bx = esi[ecx+1];
|
||||
|
||||
if (!(ax)) goto SKIP0; if (!(ax&SP_2BACK)) goto DRAW0; if (edi[ecx ]) goto SKIP0;
|
||||
if (!(ax)) goto SKIP0;
|
||||
if (!(ax&SP_2BACK)) goto DRAW0;
|
||||
if (edi[ecx ]) goto SKIP0;
|
||||
DRAW0: edi[ecx ] = ax; SKIP0: ax = esi[ecx+2];
|
||||
if (!(bx)) goto SKIP1; if (!(bx&SP_2BACK)) goto DRAW1; if (edi[ecx+1]) goto SKIP1;
|
||||
if (!(bx)) goto SKIP1;
|
||||
if (!(bx&SP_2BACK)) goto DRAW1;
|
||||
if (edi[ecx+1]) goto SKIP1;
|
||||
DRAW1: edi[ecx+1] = bx; SKIP1: bx = esi[ecx+3];
|
||||
|
||||
if (!(ax)) goto SKIP2; if (!(ax&SP_2BACK)) goto DRAW2; if (edi[ecx+2]) goto SKIP2;
|
||||
if (!(ax)) goto SKIP2;
|
||||
if (!(ax&SP_2BACK)) goto DRAW2;
|
||||
if (edi[ecx+2]) goto SKIP2;
|
||||
DRAW2: edi[ecx+2] = ax; SKIP2: ax = esi[ecx+4];
|
||||
if (!(bx)) goto SKIP3; if (!(bx&SP_2BACK)) goto DRAW3; if (edi[ecx+3]) goto SKIP3;
|
||||
if (!(bx)) goto SKIP3;
|
||||
if (!(bx&SP_2BACK)) goto DRAW3;
|
||||
if (edi[ecx+3]) goto SKIP3;
|
||||
DRAW3: edi[ecx+3] = bx; SKIP3: bx = esi[ecx+5];
|
||||
|
||||
if (!(ax)) goto SKIP4; if (!(ax&SP_2BACK)) goto DRAW4; if (edi[ecx+4]) goto SKIP4;
|
||||
if (!(ax)) goto SKIP4;
|
||||
if (!(ax&SP_2BACK)) goto DRAW4;
|
||||
if (edi[ecx+4]) goto SKIP4;
|
||||
DRAW4: edi[ecx+4] = ax; SKIP4: ax = esi[ecx+6];
|
||||
if (!(bx)) goto SKIP5; if (!(bx&SP_2BACK)) goto DRAW5; if (edi[ecx+5]) goto SKIP5;
|
||||
if (!(bx)) goto SKIP5;
|
||||
if (!(bx&SP_2BACK)) goto DRAW5;
|
||||
if (edi[ecx+5]) goto SKIP5;
|
||||
DRAW5: edi[ecx+5] = bx; SKIP5: bx = esi[ecx+7];
|
||||
|
||||
if (!(ax)) goto SKIP6; if (!(ax&SP_2BACK)) goto DRAW6; if (edi[ecx+6]) goto SKIP6;
|
||||
if (!(ax)) goto SKIP6;
|
||||
if (!(ax&SP_2BACK)) goto DRAW6;
|
||||
if (edi[ecx+6]) goto SKIP6;
|
||||
DRAW6: edi[ecx+6] = ax; SKIP6:
|
||||
if (!(bx)) continue; if (!(bx&SP_2BACK)) goto DRAW7; if (edi[ecx+7]) continue;
|
||||
if (!(bx)) continue;
|
||||
if (!(bx&SP_2BACK)) goto DRAW7;
|
||||
if (edi[ecx+7]) continue;
|
||||
DRAW7: edi[ecx+7] = bx;
|
||||
}
|
||||
while (ecx += 8);
|
||||
|
@ -86,14 +86,14 @@ public:
|
||||
required_device<pioneer_ldv1000_device> m_laserdisc;
|
||||
required_shared_ptr<UINT8> m_tile_ram;
|
||||
required_shared_ptr<UINT8> m_tile_control_ram;
|
||||
emu_timer *m_irq_timer;
|
||||
DECLARE_READ8_MEMBER(ldp_read);
|
||||
DECLARE_WRITE8_MEMBER(ldp_write);
|
||||
DECLARE_DRIVER_INIT(lgp);
|
||||
virtual void machine_start() override;
|
||||
UINT32 screen_update_lgp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(vblank_callback_lgp);
|
||||
TIMER_CALLBACK_MEMBER(irq_stop);
|
||||
DECLARE_WRITE_LINE_MEMBER(ld_command_strobe_cb);
|
||||
DECLARE_PALETTE_INIT(lgp);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -160,7 +160,7 @@ static ADDRESS_MAP_START( main_program_map, AS_PROGRAM, 8, lgp_state )
|
||||
|
||||
// AM_RANGE(0xef00,0xef00) AM_READ_PORT("IN_TEST")
|
||||
AM_RANGE(0xef80,0xef80) AM_READWRITE(ldp_read,ldp_write)
|
||||
AM_RANGE(0xefb8,0xefb8) AM_READ(ldp_read) /* Likely not right, calms it down though */
|
||||
AM_RANGE(0xefb8,0xefb8) AM_READNOP // watchdog
|
||||
AM_RANGE(0xefc0,0xefc0) AM_READ_PORT("DSWA") /* Not tested */
|
||||
AM_RANGE(0xefc8,0xefc8) AM_READ_PORT("DSWB")
|
||||
AM_RANGE(0xefd0,0xefd0) AM_READ_PORT("DSWC")
|
||||
@ -341,27 +341,59 @@ static GFXDECODE_START( lgp )
|
||||
GFXDECODE_ENTRY("gfx4", 0, lgp_gfx_layout_16x32, 0x0, 0x100)
|
||||
GFXDECODE_END
|
||||
|
||||
TIMER_CALLBACK_MEMBER(lgp_state::irq_stop)
|
||||
{
|
||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(lgp_state::vblank_callback_lgp)
|
||||
{
|
||||
// NMI
|
||||
//device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
|
||||
// IRQ
|
||||
device.execute().set_input_line(0, ASSERT_LINE);
|
||||
m_irq_timer->adjust(attotime::from_usec(50));
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
}
|
||||
|
||||
|
||||
void lgp_state::machine_start()
|
||||
{
|
||||
m_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(lgp_state::irq_stop),this));
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(lgp_state::ld_command_strobe_cb)
|
||||
{
|
||||
//m_maincpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
PALETTE_INIT_MEMBER(lgp_state, lgp)
|
||||
{
|
||||
const UINT8 *color_prom = memregion("proms")->base();
|
||||
int i;
|
||||
|
||||
// for (i = 0; i < palette.entries(); i++)
|
||||
for (i = 0; i < 0x20; i++)
|
||||
{
|
||||
int r,g,b;
|
||||
int bit0,bit1,bit2;
|
||||
|
||||
/* red component */
|
||||
bit0 = 0; //(color_prom[i] >> 0) & 0x01;
|
||||
bit1 = (color_prom[i] >> 0) & 0x01;
|
||||
bit2 = (color_prom[i] >> 1) & 0x01;
|
||||
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
/* green component */
|
||||
bit0 = 0; //(color_prom[i] >> 3) & 0x01;
|
||||
bit1 = (color_prom[i] >> 2) & 0x01;
|
||||
bit2 = (color_prom[i] >> 3) & 0x01;
|
||||
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
/* blue component */
|
||||
bit0 = 0; //(color_prom[i] >> 5) & 0x01;
|
||||
bit1 = (color_prom[i] >> 4) & 0x01;
|
||||
bit2 = (color_prom[i] >> 5) & 0x01;
|
||||
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
|
||||
palette.set_pen_color(i,rgb_t(r,g,b));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* DRIVER */
|
||||
static MACHINE_CONFIG_START( lgp, lgp_state )
|
||||
@ -378,6 +410,7 @@ static MACHINE_CONFIG_START( lgp, lgp_state )
|
||||
|
||||
|
||||
MCFG_LASERDISC_LDV1000_ADD("laserdisc")
|
||||
MCFG_LASERDISC_LDV1000_COMMAND_STROBE_CB(WRITELINE(lgp_state, ld_command_strobe_cb))
|
||||
MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, lgp_state, screen_update_lgp)
|
||||
MCFG_LASERDISC_OVERLAY_PALETTE("palette")
|
||||
|
||||
@ -385,7 +418,7 @@ static MACHINE_CONFIG_START( lgp, lgp_state )
|
||||
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 256)
|
||||
/* MCFG_PALETTE_INIT_OWNER(lgp_state,lgp) */
|
||||
MCFG_PALETTE_INIT_OWNER(lgp_state,lgp)
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", lgp)
|
||||
|
||||
@ -470,14 +503,17 @@ ROM_START( lgp )
|
||||
ROM_LOAD( "a02_28.114", 0x24000, 0x4000, CRC(cd69ed20) SHA1(d60782637085491527814889856eb3553950ab55) )
|
||||
|
||||
/* Small ROM dumping ground - color? */
|
||||
ROM_REGION( 0x520, "user4", 0 )
|
||||
ROM_REGION( 0x20, "proms", 0 )
|
||||
ROM_LOAD( "a02_37.43", 0x00000, 0x20, CRC(925ba961) SHA1(6715d80f2346374a0e880cf44cadc36e4a5316ed) )
|
||||
|
||||
ROM_REGION( 0x500, "user4", 0 )
|
||||
ROM_LOAD( "a02_35.23", 0x00000, 0x100, CRC(7b9d44f1) SHA1(bbd7c35a03ca6de116a01f6dcfa2ecd13a7ddb53) )
|
||||
ROM_LOAD( "a02_36.24", 0x00100, 0x100, CRC(169c4216) SHA1(23921e9ef61a68fdd8afceb3b95bbac48190cf1a) )
|
||||
ROM_LOAD( "a02_37.43", 0x00200, 0x20, CRC(925ba961) SHA1(6715d80f2346374a0e880cf44cadc36e4a5316ed) )
|
||||
ROM_LOAD( "a02_38.44", 0x00220, 0x100, CRC(6f37212a) SHA1(32b891dc9b97637620b2f1f9d9d76509c333cb2d) )
|
||||
ROM_LOAD( "a02_39.109", 0x00320, 0x100, CRC(88363809) SHA1(b22a7bd8ce6b28bf7cfa64c3a08e4cf7f9b4cd20) )
|
||||
ROM_LOAD( "a02_40.110", 0x00420, 0x100, CRC(fdfc7aac) SHA1(2413f7f9ad11c91d2adc0aab37bf70ff5c68ab6f) )
|
||||
ROM_LOAD( "a02_38.44", 0x00200, 0x100, CRC(6f37212a) SHA1(32b891dc9b97637620b2f1f9d9d76509c333cb2d) )
|
||||
ROM_LOAD( "a02_39.109", 0x00300, 0x100, CRC(88363809) SHA1(b22a7bd8ce6b28bf7cfa64c3a08e4cf7f9b4cd20) )
|
||||
ROM_LOAD( "a02_40.110", 0x00400, 0x100, CRC(fdfc7aac) SHA1(2413f7f9ad11c91d2adc0aab37bf70ff5c68ab6f) )
|
||||
|
||||
|
||||
DISK_REGION( "laserdisc" )
|
||||
DISK_IMAGE_READONLY( "lgp", 0, NO_DUMP )
|
||||
ROM_END
|
||||
@ -554,13 +590,15 @@ ROM_START( lgpalt )
|
||||
ROM_LOAD( "a02_28.114", 0x24000, 0x4000, CRC(cd69ed20) SHA1(d60782637085491527814889856eb3553950ab55) )
|
||||
|
||||
/* Small ROM dumping ground - color? */
|
||||
ROM_REGION( 0x520, "user4", 0 )
|
||||
ROM_REGION( 0x20, "proms", 0 )
|
||||
ROM_LOAD( "a02_37.43", 0x00000, 0x20, CRC(925ba961) SHA1(6715d80f2346374a0e880cf44cadc36e4a5316ed) )
|
||||
|
||||
ROM_REGION( 0x500, "user4", 0 )
|
||||
ROM_LOAD( "a02_35.23", 0x00000, 0x100, CRC(7b9d44f1) SHA1(bbd7c35a03ca6de116a01f6dcfa2ecd13a7ddb53) )
|
||||
ROM_LOAD( "a02_36.24", 0x00100, 0x100, CRC(169c4216) SHA1(23921e9ef61a68fdd8afceb3b95bbac48190cf1a) )
|
||||
ROM_LOAD( "a02_37.43", 0x00200, 0x20, CRC(925ba961) SHA1(6715d80f2346374a0e880cf44cadc36e4a5316ed) )
|
||||
ROM_LOAD( "a02_38.44", 0x00220, 0x100, CRC(6f37212a) SHA1(32b891dc9b97637620b2f1f9d9d76509c333cb2d) )
|
||||
ROM_LOAD( "a02_39.109", 0x00320, 0x100, CRC(88363809) SHA1(b22a7bd8ce6b28bf7cfa64c3a08e4cf7f9b4cd20) )
|
||||
ROM_LOAD( "a02_40.110", 0x00420, 0x100, CRC(fdfc7aac) SHA1(2413f7f9ad11c91d2adc0aab37bf70ff5c68ab6f) )
|
||||
ROM_LOAD( "a02_38.44", 0x00200, 0x100, CRC(6f37212a) SHA1(32b891dc9b97637620b2f1f9d9d76509c333cb2d) )
|
||||
ROM_LOAD( "a02_39.109", 0x00300, 0x100, CRC(88363809) SHA1(b22a7bd8ce6b28bf7cfa64c3a08e4cf7f9b4cd20) )
|
||||
ROM_LOAD( "a02_40.110", 0x00400, 0x100, CRC(fdfc7aac) SHA1(2413f7f9ad11c91d2adc0aab37bf70ff5c68ab6f) )
|
||||
|
||||
DISK_REGION( "laserdisc" )
|
||||
DISK_IMAGE_READONLY( "lgp", 0, NO_DUMP )
|
||||
|
@ -333,75 +333,75 @@ void m20_state::install_memory()
|
||||
/* install mainboard memory (aka DRAM0) */
|
||||
|
||||
/* <0>0000 */
|
||||
pspace.install_readwrite_bank(0x0000, 0x3fff, 0x3fff, "dram0_4000");
|
||||
dspace.install_readwrite_bank(0x0000, 0x3fff, 0x3fff, "dram0_4000");
|
||||
pspace.install_readwrite_bank(0x0000, 0x3fff, 0, "dram0_4000");
|
||||
dspace.install_readwrite_bank(0x0000, 0x3fff, 0, "dram0_4000");
|
||||
/* <0>4000 */
|
||||
pspace.install_readwrite_bank(0x4000, 0x7fff, 0x3fff, "dram0_8000");
|
||||
pspace.install_readwrite_bank(0x4000, 0x7fff, 0, "dram0_8000");
|
||||
/* <0>8000 */
|
||||
pspace.install_readwrite_bank(0x8000, 0xbfff, 0x3fff, "dram0_c000");
|
||||
pspace.install_readwrite_bank(0x8000, 0xbfff, 0, "dram0_c000");
|
||||
/* <0>C000 */
|
||||
pspace.install_readwrite_bank(0xc000, 0xcfff, 0x3fff, "dram0_10000");
|
||||
pspace.install_readwrite_bank(0xc000, 0xcfff, 0, "dram0_10000");
|
||||
/* <1>0000 */
|
||||
pspace.install_readwrite_bank(0x10000, 0x13fff, 0x3fff, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0x10000, 0x13fff, 0x3fff, "dram0_14000");
|
||||
pspace.install_readwrite_bank(0x10000, 0x13fff, 0, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0x10000, 0x13fff, 0, "dram0_14000");
|
||||
/* <1>4000 */
|
||||
pspace.install_readwrite_bank(0x14000, 0x17fff, 0x3fff, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0x14000, 0x17fff, 0x3fff, "dram0_18000");
|
||||
pspace.install_readwrite_bank(0x14000, 0x17fff, 0, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0x14000, 0x17fff, 0, "dram0_18000");
|
||||
/* <1>8000 */
|
||||
pspace.install_readwrite_bank(0x18000, 0x1bfff, 0x3fff, "dram0_10000");
|
||||
dspace.install_readwrite_bank(0x18000, 0x1bfff, 0x3fff, "dram0_1c000");
|
||||
pspace.install_readwrite_bank(0x18000, 0x1bfff, 0, "dram0_10000");
|
||||
dspace.install_readwrite_bank(0x18000, 0x1bfff, 0, "dram0_1c000");
|
||||
/* <1>c000 empty*/
|
||||
/* <2>0000 */
|
||||
pspace.install_readwrite_bank(0x20000, 0x23fff, 0x3fff, "dram0_14000");
|
||||
dspace.install_readwrite_bank(0x20000, 0x23fff, 0x3fff, "dram0_14000");
|
||||
pspace.install_readwrite_bank(0x20000, 0x23fff, 0, "dram0_14000");
|
||||
dspace.install_readwrite_bank(0x20000, 0x23fff, 0, "dram0_14000");
|
||||
/* <2>4000 */
|
||||
pspace.install_readwrite_bank(0x24000, 0x27fff, 0x3fff, "dram0_18000");
|
||||
dspace.install_readwrite_bank(0x24000, 0x27fff, 0x3fff, "dram0_18000");
|
||||
pspace.install_readwrite_bank(0x24000, 0x27fff, 0, "dram0_18000");
|
||||
dspace.install_readwrite_bank(0x24000, 0x27fff, 0, "dram0_18000");
|
||||
/* <2>8000 */
|
||||
pspace.install_readwrite_bank(0x28000, 0x2bfff, 0x3fff, "dram0_1c000");
|
||||
dspace.install_readwrite_bank(0x28000, 0x2bfff, 0x3fff, "dram0_1c000");
|
||||
pspace.install_readwrite_bank(0x28000, 0x2bfff, 0, "dram0_1c000");
|
||||
dspace.install_readwrite_bank(0x28000, 0x2bfff, 0, "dram0_1c000");
|
||||
/* <2>c000 empty*/
|
||||
/* <3>0000 (video buffer)
|
||||
pspace.install_readwrite_bank(0x30000, 0x33fff, 0x3fff, "dram0_0000");
|
||||
dspace.install_readwrite_bank(0x30000, 0x33fff, 0x3fff, "dram0_0000");
|
||||
pspace.install_readwrite_bank(0x30000, 0x33fff, 0, "dram0_0000");
|
||||
dspace.install_readwrite_bank(0x30000, 0x33fff, 0, "dram0_0000");
|
||||
*/
|
||||
|
||||
/* <5>0000 */
|
||||
dspace.install_readwrite_bank(0x50000, 0x53fff, 0x3fff, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0x50000, 0x53fff, 0, "dram0_8000");
|
||||
/* <5>4000 */
|
||||
dspace.install_readwrite_bank(0x54000, 0x57fff, 0x3fff, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0x54000, 0x57fff, 0, "dram0_c000");
|
||||
/* <5>8000 */
|
||||
dspace.install_readwrite_bank(0x58000, 0x5bfff, 0x3fff, "dram0_10000");
|
||||
dspace.install_readwrite_bank(0x58000, 0x5bfff, 0, "dram0_10000");
|
||||
/* <5>c000 expansion bus */
|
||||
/* <6>0000 */
|
||||
pspace.install_readwrite_bank(0x60000, 0x63fff, 0x3fff, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0x60000, 0x63fff, 0x3fff, "dram0_8000");
|
||||
pspace.install_readwrite_bank(0x60000, 0x63fff, 0, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0x60000, 0x63fff, 0, "dram0_8000");
|
||||
/* <6>4000 */
|
||||
pspace.install_readwrite_bank(0x64000, 0x67fff, 0x3fff, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0x64000, 0x67fff, 0x3fff, "dram0_c000");
|
||||
pspace.install_readwrite_bank(0x64000, 0x67fff, 0, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0x64000, 0x67fff, 0, "dram0_c000");
|
||||
/* <6>8000 */
|
||||
pspace.install_readwrite_bank(0x68000, 0x6bfff, 0x3fff, "dram0_10000");
|
||||
dspace.install_readwrite_bank(0x68000, 0x6bfff, 0x3fff, "dram0_10000");
|
||||
pspace.install_readwrite_bank(0x68000, 0x6bfff, 0, "dram0_10000");
|
||||
dspace.install_readwrite_bank(0x68000, 0x6bfff, 0, "dram0_10000");
|
||||
/* <6>c000 empty*/
|
||||
/* segment <7> expansion ROM? */
|
||||
/* <8>0000 */
|
||||
pspace.install_readwrite_bank(0x80000, 0x83fff, 0x3fff, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0x80000, 0x83fff, 0x3fff, "dram0_18000");
|
||||
pspace.install_readwrite_bank(0x80000, 0x83fff, 0, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0x80000, 0x83fff, 0, "dram0_18000");
|
||||
/* <8>4000 */
|
||||
pspace.install_readwrite_bank(0x84000, 0x87fff, 0x3fff, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0x84000, 0x87fff, 0x3fff, "dram0_1c000");
|
||||
pspace.install_readwrite_bank(0x84000, 0x87fff, 0, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0x84000, 0x87fff, 0, "dram0_1c000");
|
||||
/* <9>0000 */
|
||||
pspace.install_readwrite_bank(0x90000, 0x93fff, 0x3fff, "dram0_18000");
|
||||
dspace.install_readwrite_bank(0x90000, 0x93fff, 0x3fff, "dram0_18000");
|
||||
pspace.install_readwrite_bank(0x90000, 0x93fff, 0, "dram0_18000");
|
||||
dspace.install_readwrite_bank(0x90000, 0x93fff, 0, "dram0_18000");
|
||||
/* <9>4000 */
|
||||
pspace.install_readwrite_bank(0x94000, 0x97fff, 0x3fff, "dram0_1c000");
|
||||
dspace.install_readwrite_bank(0x94000, 0x97fff, 0x3fff, "dram0_1c000");
|
||||
pspace.install_readwrite_bank(0x94000, 0x97fff, 0, "dram0_1c000");
|
||||
dspace.install_readwrite_bank(0x94000, 0x97fff, 0, "dram0_1c000");
|
||||
/* <A>0000 */
|
||||
pspace.install_readwrite_bank(0xa0000, 0xa3fff, 0x3fff, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0xa0000, 0xa3fff, 0x3fff, "dram0_8000");
|
||||
pspace.install_readwrite_bank(0xa0000, 0xa3fff, 0, "dram0_8000");
|
||||
dspace.install_readwrite_bank(0xa0000, 0xa3fff, 0, "dram0_8000");
|
||||
/* <A>4000 */
|
||||
pspace.install_readwrite_bank(0xa4000, 0xa7fff, 0x3fff, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0xa4000, 0xa7fff, 0x3fff, "dram0_c000");
|
||||
pspace.install_readwrite_bank(0xa4000, 0xa7fff, 0, "dram0_c000");
|
||||
dspace.install_readwrite_bank(0xa4000, 0xa7fff, 0, "dram0_c000");
|
||||
|
||||
//membank("dram0_0000")->set_base(memptr);
|
||||
membank("dram0_4000")->set_base(memptr + 0x4000);
|
||||
@ -425,9 +425,9 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0x88000, 0x8bfff ) AM_RAM AM_SHARE("dram1_4000")
|
||||
AM_RANGE( 0xa8000, 0xabfff ) AM_RAM AM_SHARE("dram1_4000")
|
||||
*/
|
||||
pspace.install_readwrite_bank(0x2c000, 0x2ffff, 0x3fff, "dram1_0000");
|
||||
pspace.install_readwrite_bank(0x88000, 0x8bfff, 0x3fff, "dram1_4000");
|
||||
pspace.install_readwrite_bank(0xa8000, 0xabfff, 0x3fff, "dram1_4000");
|
||||
pspace.install_readwrite_bank(0x2c000, 0x2ffff, 0, "dram1_0000");
|
||||
pspace.install_readwrite_bank(0x88000, 0x8bfff, 0, "dram1_4000");
|
||||
pspace.install_readwrite_bank(0xa8000, 0xabfff, 0, "dram1_4000");
|
||||
|
||||
/*
|
||||
data
|
||||
@ -436,10 +436,10 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0x2c000, 0x2ffff ) AM_RAM AM_SHARE("dram1_0000")
|
||||
AM_RANGE( 0xa8000, 0xabfff ) AM_RAM AM_SHARE("dram1_4000")
|
||||
*/
|
||||
dspace.install_readwrite_bank(0x4000, 0x7fff, 0x3fff, "dram1_4000");
|
||||
dspace.install_readwrite_bank(0x1c000, 0x1ffff, 0x3fff, "dram1_0000");
|
||||
dspace.install_readwrite_bank(0x2c000, 0x2ffff, 0x3fff, "dram1_0000");
|
||||
dspace.install_readwrite_bank(0xa8000, 0xabfff, 0x3fff, "dram1_4000");
|
||||
dspace.install_readwrite_bank(0x4000, 0x7fff, 0, "dram1_4000");
|
||||
dspace.install_readwrite_bank(0x1c000, 0x1ffff, 0, "dram1_0000");
|
||||
dspace.install_readwrite_bank(0x2c000, 0x2ffff, 0, "dram1_0000");
|
||||
dspace.install_readwrite_bank(0xa8000, 0xabfff, 0, "dram1_4000");
|
||||
|
||||
membank("dram1_0000")->set_base(memptr + 0x20000);
|
||||
membank("dram1_4000")->set_base(memptr + 0x24000);
|
||||
@ -452,9 +452,9 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0x98000, 0x9bfff ) AM_RAM AM_SHARE("dram2_4000")
|
||||
AM_RANGE( 0xac000, 0xaffff ) AM_RAM AM_SHARE("dram2_0000")
|
||||
*/
|
||||
pspace.install_readwrite_bank(0x8c000, 0x8ffff, 0x3fff, "dram2_0000");
|
||||
pspace.install_readwrite_bank(0x98000, 0x9bfff, 0x3fff, "dram2_4000");
|
||||
pspace.install_readwrite_bank(0xac000, 0xaffff, 0x3fff, "dram2_0000");
|
||||
pspace.install_readwrite_bank(0x8c000, 0x8ffff, 0, "dram2_0000");
|
||||
pspace.install_readwrite_bank(0x98000, 0x9bfff, 0, "dram2_4000");
|
||||
pspace.install_readwrite_bank(0xac000, 0xaffff, 0, "dram2_0000");
|
||||
|
||||
/* data
|
||||
AM_RANGE( 0x08000, 0x0bfff ) AM_RAM AM_SHARE("dram2_0000")
|
||||
@ -463,11 +463,11 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0x98000, 0x9bfff ) AM_RAM AM_SHARE("dram2_4000")
|
||||
AM_RANGE( 0xac000, 0xaffff ) AM_RAM AM_SHARE("dram2_0000")
|
||||
*/
|
||||
dspace.install_readwrite_bank(0x8000, 0xbfff, 0x3fff, "dram2_0000");
|
||||
dspace.install_readwrite_bank(0xc000, 0xffff, 0x3fff, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0x88000, 0x8bfff, 0x3fff, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0x98000, 0x9bfff, 0x3fff, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0xac000, 0xaffff, 0x3fff, "dram2_0000");
|
||||
dspace.install_readwrite_bank(0x8000, 0xbfff, 0, "dram2_0000");
|
||||
dspace.install_readwrite_bank(0xc000, 0xffff, 0, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0x88000, 0x8bfff, 0, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0x98000, 0x9bfff, 0, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0xac000, 0xaffff, 0, "dram2_0000");
|
||||
|
||||
membank("dram2_0000")->set_base(memptr + 0x28000);
|
||||
membank("dram2_4000")->set_base(memptr + 0x2c000);
|
||||
@ -479,8 +479,8 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0x9c000, 0x9ffff ) AM_RAM AM_SHARE("dram3_0000")
|
||||
AM_RANGE( 0xb0000, 0xb3fff ) AM_RAM AM_SHARE("dram3_4000")
|
||||
*/
|
||||
pspace.install_readwrite_bank(0x9c000, 0x9ffff, 0x3fff, "dram3_0000");
|
||||
pspace.install_readwrite_bank(0xb0000, 0xb3fff, 0x3fff, "dram3_4000");
|
||||
pspace.install_readwrite_bank(0x9c000, 0x9ffff, 0, "dram3_0000");
|
||||
pspace.install_readwrite_bank(0xb0000, 0xb3fff, 0, "dram3_4000");
|
||||
|
||||
/* data
|
||||
AM_RANGE( 0x44000, 0x47fff ) AM_RAM AM_SHARE("dram3_0000")
|
||||
@ -490,12 +490,12 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0xb0000, 0xb3fff ) AM_RAM AM_SHARE("dram3_4000")
|
||||
AM_RANGE( 0xc0000, 0xc3fff ) AM_RAM AM_SHARE("dram3_4000")
|
||||
*/
|
||||
dspace.install_readwrite_bank(0x44000, 0x47fff, 0x3fff, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0x48000, 0x4bfff, 0x3fff, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0x8c000, 0x8ffff, 0x3fff, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0x9c000, 0x9ffff, 0x3fff, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0xb0000, 0xb3fff, 0x3fff, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0xc0000, 0xc3fff, 0x3fff, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0x44000, 0x47fff, 0, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0x48000, 0x4bfff, 0, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0x8c000, 0x8ffff, 0, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0x9c000, 0x9ffff, 0, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0xb0000, 0xb3fff, 0, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0xc0000, 0xc3fff, 0, "dram3_4000");
|
||||
|
||||
membank("dram3_0000")->set_base(memptr + 0x30000);
|
||||
membank("dram3_4000")->set_base(memptr + 0x34000);
|
||||
@ -518,16 +518,16 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0xb4000, 0xb7fff ) AM_RAM AM_SHARE("dram1_18000")
|
||||
AM_RANGE( 0xb8000, 0xbbfff ) AM_RAM AM_SHARE("dram1_1c000")
|
||||
*/
|
||||
pspace.install_readwrite_bank(0x2c000, 0x2ffff, 0x3fff, "dram1_0000");
|
||||
pspace.install_readwrite_bank(0x88000, 0x8bfff, 0x3fff, "dram1_4000");
|
||||
pspace.install_readwrite_bank(0x8c000, 0x8ffff, 0x3fff, "dram1_8000");
|
||||
pspace.install_readwrite_bank(0x98000, 0x9bfff, 0x3fff, "dram1_c000");
|
||||
pspace.install_readwrite_bank(0x9c000, 0x9ffff, 0x3fff, "dram1_10000");
|
||||
pspace.install_readwrite_bank(0xa8000, 0xabfff, 0x3fff, "dram1_4000");
|
||||
pspace.install_readwrite_bank(0xac000, 0xaffff, 0x3fff, "dram1_8000");
|
||||
pspace.install_readwrite_bank(0xb0000, 0xb3fff, 0x3fff, "dram1_14000");
|
||||
pspace.install_readwrite_bank(0xb4000, 0xb7fff, 0x3fff, "dram1_18000");
|
||||
pspace.install_readwrite_bank(0xb8000, 0xbbfff, 0x3fff, "dram1_1c000");
|
||||
pspace.install_readwrite_bank(0x2c000, 0x2ffff, 0, "dram1_0000");
|
||||
pspace.install_readwrite_bank(0x88000, 0x8bfff, 0, "dram1_4000");
|
||||
pspace.install_readwrite_bank(0x8c000, 0x8ffff, 0, "dram1_8000");
|
||||
pspace.install_readwrite_bank(0x98000, 0x9bfff, 0, "dram1_c000");
|
||||
pspace.install_readwrite_bank(0x9c000, 0x9ffff, 0, "dram1_10000");
|
||||
pspace.install_readwrite_bank(0xa8000, 0xabfff, 0, "dram1_4000");
|
||||
pspace.install_readwrite_bank(0xac000, 0xaffff, 0, "dram1_8000");
|
||||
pspace.install_readwrite_bank(0xb0000, 0xb3fff, 0, "dram1_14000");
|
||||
pspace.install_readwrite_bank(0xb4000, 0xb7fff, 0, "dram1_18000");
|
||||
pspace.install_readwrite_bank(0xb8000, 0xbbfff, 0, "dram1_1c000");
|
||||
|
||||
/* data
|
||||
AM_RANGE( 0x04000, 0x07fff ) AM_RAM AM_SHARE("dram1_4000")
|
||||
@ -543,18 +543,18 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0xb4000, 0xb7fff ) AM_RAM AM_SHARE("dram1_18000")
|
||||
AM_RANGE( 0xb8000, 0xbbfff ) AM_RAM AM_SHARE("dram1_1c000")
|
||||
*/
|
||||
dspace.install_readwrite_bank(0x4000, 0x7fff, 0x3fff, "dram1_4000");
|
||||
dspace.install_readwrite_bank(0x1c000, 0x1ffff, 0x3fff, "dram1_0000");
|
||||
dspace.install_readwrite_bank(0x2c000, 0x2ffff, 0x3fff, "dram1_0000");
|
||||
dspace.install_readwrite_bank(0x88000, 0x8bfff, 0x3fff, "dram1_c000");
|
||||
dspace.install_readwrite_bank(0x8c000, 0x8ffff, 0x3fff, "dram1_10000");
|
||||
dspace.install_readwrite_bank(0x98000, 0x9bfff, 0x3fff, "dram1_c000");
|
||||
dspace.install_readwrite_bank(0x9c000, 0x9ffff, 0x3fff, "dram1_10000");
|
||||
dspace.install_readwrite_bank(0xa8000, 0xabfff, 0x3fff, "dram1_4000");
|
||||
dspace.install_readwrite_bank(0xac000, 0xaffff, 0x3fff, "dram1_8000");
|
||||
dspace.install_readwrite_bank(0xb0000, 0xb3fff, 0x3fff, "dram1_14000");
|
||||
dspace.install_readwrite_bank(0xb4000, 0xb7fff, 0x3fff, "dram1_18000");
|
||||
dspace.install_readwrite_bank(0xb8000, 0xbbfff, 0x3fff, "dram1_1c000");
|
||||
dspace.install_readwrite_bank(0x4000, 0x7fff, 0, "dram1_4000");
|
||||
dspace.install_readwrite_bank(0x1c000, 0x1ffff, 0, "dram1_0000");
|
||||
dspace.install_readwrite_bank(0x2c000, 0x2ffff, 0, "dram1_0000");
|
||||
dspace.install_readwrite_bank(0x88000, 0x8bfff, 0, "dram1_c000");
|
||||
dspace.install_readwrite_bank(0x8c000, 0x8ffff, 0, "dram1_10000");
|
||||
dspace.install_readwrite_bank(0x98000, 0x9bfff, 0, "dram1_c000");
|
||||
dspace.install_readwrite_bank(0x9c000, 0x9ffff, 0, "dram1_10000");
|
||||
dspace.install_readwrite_bank(0xa8000, 0xabfff, 0, "dram1_4000");
|
||||
dspace.install_readwrite_bank(0xac000, 0xaffff, 0, "dram1_8000");
|
||||
dspace.install_readwrite_bank(0xb0000, 0xb3fff, 0, "dram1_14000");
|
||||
dspace.install_readwrite_bank(0xb4000, 0xb7fff, 0, "dram1_18000");
|
||||
dspace.install_readwrite_bank(0xb8000, 0xbbfff, 0, "dram1_1c000");
|
||||
|
||||
membank("dram1_0000")->set_base(memptr + 0x20000);
|
||||
membank("dram1_4000")->set_base(memptr + 0x24000);
|
||||
@ -580,14 +580,14 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0xd4000, 0xd7fff ) AM_RAM AM_SHARE("dram2_18000")
|
||||
AM_RANGE( 0xd8000, 0xdbfff ) AM_RAM AM_SHARE("dram2_1c000")
|
||||
*/
|
||||
pspace.install_readwrite_bank(0xbc000, 0xbffff, 0x3fff, "dram2_0000");
|
||||
pspace.install_readwrite_bank(0xc0000, 0xc3fff, 0x3fff, "dram2_4000");
|
||||
pspace.install_readwrite_bank(0xc4000, 0xc7fff, 0x3fff, "dram2_8000");
|
||||
pspace.install_readwrite_bank(0xc8000, 0xcbfff, 0x3fff, "dram2_c000");
|
||||
pspace.install_readwrite_bank(0xcc000, 0xcffff, 0x3fff, "dram2_10000");
|
||||
pspace.install_readwrite_bank(0xd0000, 0xd3fff, 0x3fff, "dram2_14000");
|
||||
pspace.install_readwrite_bank(0xd4000, 0xd7fff, 0x3fff, "dram2_18000");
|
||||
pspace.install_readwrite_bank(0xd8000, 0xdbfff, 0x3fff, "dram2_1c000");
|
||||
pspace.install_readwrite_bank(0xbc000, 0xbffff, 0, "dram2_0000");
|
||||
pspace.install_readwrite_bank(0xc0000, 0xc3fff, 0, "dram2_4000");
|
||||
pspace.install_readwrite_bank(0xc4000, 0xc7fff, 0, "dram2_8000");
|
||||
pspace.install_readwrite_bank(0xc8000, 0xcbfff, 0, "dram2_c000");
|
||||
pspace.install_readwrite_bank(0xcc000, 0xcffff, 0, "dram2_10000");
|
||||
pspace.install_readwrite_bank(0xd0000, 0xd3fff, 0, "dram2_14000");
|
||||
pspace.install_readwrite_bank(0xd4000, 0xd7fff, 0, "dram2_18000");
|
||||
pspace.install_readwrite_bank(0xd8000, 0xdbfff, 0, "dram2_1c000");
|
||||
|
||||
/* data
|
||||
AM_RANGE( 0x08000, 0x0bfff ) AM_RAM AM_SHARE("dram2_0000")
|
||||
@ -604,16 +604,16 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0xd4000, 0xd7fff ) AM_RAM AM_SHARE("dram2_18000")
|
||||
AM_RANGE( 0xd8000, 0xdbfff ) AM_RAM AM_SHARE("dram2_1c000")
|
||||
*/
|
||||
dspace.install_readwrite_bank(0x8000, 0xbfff, 0x3fff, "dram2_0000");
|
||||
dspace.install_readwrite_bank(0xc000, 0xffff, 0x3fff, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0xbc000, 0xbffff, 0x3fff, "dram2_0000");
|
||||
dspace.install_readwrite_bank(0xc0000, 0xc3fff, 0x3fff, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0xc4000, 0xc7fff, 0x3fff, "dram2_8000");
|
||||
dspace.install_readwrite_bank(0xc8000, 0xcbfff, 0x3fff, "dram2_c000");
|
||||
dspace.install_readwrite_bank(0xcc000, 0xcffff, 0x3fff, "dram2_10000");
|
||||
dspace.install_readwrite_bank(0xd0000, 0xd3fff, 0x3fff, "dram2_14000");
|
||||
dspace.install_readwrite_bank(0xd4000, 0xd7fff, 0x3fff, "dram2_18000");
|
||||
dspace.install_readwrite_bank(0xd8000, 0xdbfff, 0x3fff, "dram2_1c000");
|
||||
dspace.install_readwrite_bank(0x8000, 0xbfff, 0, "dram2_0000");
|
||||
dspace.install_readwrite_bank(0xc000, 0xffff, 0, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0xbc000, 0xbffff, 0, "dram2_0000");
|
||||
dspace.install_readwrite_bank(0xc0000, 0xc3fff, 0, "dram2_4000");
|
||||
dspace.install_readwrite_bank(0xc4000, 0xc7fff, 0, "dram2_8000");
|
||||
dspace.install_readwrite_bank(0xc8000, 0xcbfff, 0, "dram2_c000");
|
||||
dspace.install_readwrite_bank(0xcc000, 0xcffff, 0, "dram2_10000");
|
||||
dspace.install_readwrite_bank(0xd0000, 0xd3fff, 0, "dram2_14000");
|
||||
dspace.install_readwrite_bank(0xd4000, 0xd7fff, 0, "dram2_18000");
|
||||
dspace.install_readwrite_bank(0xd8000, 0xdbfff, 0, "dram2_1c000");
|
||||
|
||||
membank("dram2_0000")->set_base(memptr + 0x40000);
|
||||
membank("dram2_4000")->set_base(memptr + 0x44000);
|
||||
@ -640,15 +640,15 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0xf8000, 0xfbfff ) AM_RAM AM_SHARE("dram3_1c000")
|
||||
AM_RANGE( 0xfc000, 0xfffff ) AM_RAM AM_SHARE("dram3_0000")
|
||||
*/
|
||||
pspace.install_readwrite_bank(0xdc000, 0xdffff, 0x3fff, "dram3_0000");
|
||||
pspace.install_readwrite_bank(0xe0000, 0xe3fff, 0x3fff, "dram3_4000");
|
||||
pspace.install_readwrite_bank(0xe4000, 0xe7fff, 0x3fff, "dram3_8000");
|
||||
pspace.install_readwrite_bank(0xe8000, 0xebfff, 0x3fff, "dram3_c000");
|
||||
pspace.install_readwrite_bank(0xec000, 0xeffff, 0x3fff, "dram3_10000");
|
||||
pspace.install_readwrite_bank(0xf0000, 0xf3fff, 0x3fff, "dram3_14000");
|
||||
pspace.install_readwrite_bank(0xf4000, 0xf7fff, 0x3fff, "dram3_18000");
|
||||
pspace.install_readwrite_bank(0xf8000, 0xfbfff, 0x3fff, "dram3_1c000");
|
||||
pspace.install_readwrite_bank(0xfc000, 0xfffff, 0x3fff, "dram3_0000");
|
||||
pspace.install_readwrite_bank(0xdc000, 0xdffff, 0, "dram3_0000");
|
||||
pspace.install_readwrite_bank(0xe0000, 0xe3fff, 0, "dram3_4000");
|
||||
pspace.install_readwrite_bank(0xe4000, 0xe7fff, 0, "dram3_8000");
|
||||
pspace.install_readwrite_bank(0xe8000, 0xebfff, 0, "dram3_c000");
|
||||
pspace.install_readwrite_bank(0xec000, 0xeffff, 0, "dram3_10000");
|
||||
pspace.install_readwrite_bank(0xf0000, 0xf3fff, 0, "dram3_14000");
|
||||
pspace.install_readwrite_bank(0xf4000, 0xf7fff, 0, "dram3_18000");
|
||||
pspace.install_readwrite_bank(0xf8000, 0xfbfff, 0, "dram3_1c000");
|
||||
pspace.install_readwrite_bank(0xfc000, 0xfffff, 0, "dram3_0000");
|
||||
|
||||
/* data
|
||||
AM_RANGE( 0x44000, 0x47fff ) AM_RAM AM_SHARE("dram3_0000")
|
||||
@ -665,17 +665,17 @@ void m20_state::install_memory()
|
||||
AM_RANGE( 0xf8000, 0xfbfff ) AM_RAM AM_SHARE("dram3_1c000")
|
||||
AM_RANGE( 0xfc000, 0xfffff ) AM_RAM AM_SHARE("dram3_0000")
|
||||
*/
|
||||
dspace.install_readwrite_bank(0x44000, 0x47fff, 0x3fff, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0x48000, 0x4bfff, 0x3fff, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0xdc000, 0xdffff, 0x3fff, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0xe0000, 0xe3fff, 0x3fff, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0xe4000, 0xe7fff, 0x3fff, "dram3_8000");
|
||||
dspace.install_readwrite_bank(0xe8000, 0xebfff, 0x3fff, "dram3_c000");
|
||||
dspace.install_readwrite_bank(0xec000, 0xeffff, 0x3fff, "dram3_10000");
|
||||
dspace.install_readwrite_bank(0xf0000, 0xf3fff, 0x3fff, "dram3_14000");
|
||||
dspace.install_readwrite_bank(0xf4000, 0xf7fff, 0x3fff, "dram3_18000");
|
||||
dspace.install_readwrite_bank(0xf8000, 0xfbfff, 0x3fff, "dram3_1c000");
|
||||
dspace.install_readwrite_bank(0xfc000, 0xfffff, 0x3fff, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0x44000, 0x47fff, 0, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0x48000, 0x4bfff, 0, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0xdc000, 0xdffff, 0, "dram3_0000");
|
||||
dspace.install_readwrite_bank(0xe0000, 0xe3fff, 0, "dram3_4000");
|
||||
dspace.install_readwrite_bank(0xe4000, 0xe7fff, 0, "dram3_8000");
|
||||
dspace.install_readwrite_bank(0xe8000, 0xebfff, 0, "dram3_c000");
|
||||
dspace.install_readwrite_bank(0xec000, 0xeffff, 0, "dram3_10000");
|
||||
dspace.install_readwrite_bank(0xf0000, 0xf3fff, 0, "dram3_14000");
|
||||
dspace.install_readwrite_bank(0xf4000, 0xf7fff, 0, "dram3_18000");
|
||||
dspace.install_readwrite_bank(0xf8000, 0xfbfff, 0, "dram3_1c000");
|
||||
dspace.install_readwrite_bank(0xfc000, 0xfffff, 0, "dram3_0000");
|
||||
|
||||
membank("dram3_0000")->set_base(memptr + 0x60000);
|
||||
membank("dram3_4000")->set_base(memptr + 0x64000);
|
||||
|
@ -63,28 +63,28 @@ static INPUT_PORTS_START( marywu )
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I)
|
||||
|
||||
PORT_START("DSW")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Unknown bit #0" ) PORT_DIPLOCATION("DSW:0")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Unknown bit #0" ) PORT_DIPLOCATION("DSW:1")
|
||||
PORT_DIPSETTING(0x01, DEF_STR( On ) )
|
||||
PORT_DIPSETTING(0x00, DEF_STR( Off ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, "Unknown bit #1" ) PORT_DIPLOCATION("DSW:1")
|
||||
PORT_DIPNAME( 0x02, 0x02, "Unknown bit #1" ) PORT_DIPLOCATION("DSW:2")
|
||||
PORT_DIPSETTING(0x02, DEF_STR( On ) )
|
||||
PORT_DIPSETTING(0x00, DEF_STR( Off ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, "Unknown bit #2" ) PORT_DIPLOCATION("DSW:2")
|
||||
PORT_DIPNAME( 0x04, 0x04, "Unknown bit #2" ) PORT_DIPLOCATION("DSW:3")
|
||||
PORT_DIPSETTING(0x04, DEF_STR( On ) )
|
||||
PORT_DIPSETTING(0x00, DEF_STR( Off ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, "Unknown bit #3" ) PORT_DIPLOCATION("DSW:3")
|
||||
PORT_DIPNAME( 0x08, 0x08, "Unknown bit #3" ) PORT_DIPLOCATION("DSW:4")
|
||||
PORT_DIPSETTING(0x08, DEF_STR( On ) )
|
||||
PORT_DIPSETTING(0x00, DEF_STR( Off ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, "Unknown bit #4" ) PORT_DIPLOCATION("DSW:4")
|
||||
PORT_DIPNAME( 0x10, 0x10, "Unknown bit #4" ) PORT_DIPLOCATION("DSW:5")
|
||||
PORT_DIPSETTING(0x10, DEF_STR( On ) )
|
||||
PORT_DIPSETTING(0x00, DEF_STR( Off ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, "Unknown bit #5" ) PORT_DIPLOCATION("DSW:5")
|
||||
PORT_DIPNAME( 0x20, 0x20, "Unknown bit #5" ) PORT_DIPLOCATION("DSW:6")
|
||||
PORT_DIPSETTING(0x20, DEF_STR( On ) )
|
||||
PORT_DIPSETTING(0x00, DEF_STR( Off ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, "Unknown bit #6" ) PORT_DIPLOCATION("DSW:6")
|
||||
PORT_DIPNAME( 0x40, 0x40, "Unknown bit #6" ) PORT_DIPLOCATION("DSW:7")
|
||||
PORT_DIPSETTING(0x40, DEF_STR( On ) )
|
||||
PORT_DIPSETTING(0x00, DEF_STR( Off ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, "Unknown bit #7" ) PORT_DIPLOCATION("DSW:7")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Unknown bit #7" ) PORT_DIPLOCATION("DSW:8")
|
||||
PORT_DIPSETTING(0x80, DEF_STR( On ) )
|
||||
PORT_DIPSETTING(0x00, DEF_STR( Off ) )
|
||||
|
||||
@ -169,7 +169,7 @@ static ADDRESS_MAP_START( program_map, AS_PROGRAM, 8, marywu_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( io_map, AS_IO, 8, marywu_state )
|
||||
AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0100) AM_RAM /* HM6116: 2kbytes of Static RAM */
|
||||
AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_RAM /* HM6116: 2kbytes of Static RAM */
|
||||
AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w)
|
||||
AM_RANGE(0xb001, 0xb001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w)
|
||||
AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
|
||||
|
@ -1460,4 +1460,17 @@ ROM_END
|
||||
/* 61 */ GAME( 1992, mt_tout, megatech, megatech_fixedslot, megatech, mtech_state, mt_crt, ROT0, "Sega", "Turbo Outrun (Mega-Tech)", MACHINE_NOT_WORKING )
|
||||
/* 62 */ GAME( 1992, mt_soni2, megatech, megatech_fixedslot, megatech, mtech_state, mt_crt, ROT0, "Sega", "Sonic The Hedgehog 2 (Mega-Tech)", MACHINE_NOT_WORKING )
|
||||
|
||||
/* more? */
|
||||
/* Games seen in auction (#122011114579), but no confirmed number
|
||||
- Action Fighter
|
||||
- Enduro Racer
|
||||
|
||||
Games seen in auction (#122011114579) known not to be original but manufactured/bootlegged on actual megatech carts.
|
||||
The labels are noticably different than expected. Be careful if thinking of obtaining!
|
||||
- After Burner II (GEN)
|
||||
- Castle of Illusion Starring Mickey Mouse (GEN)
|
||||
- Double Dragon (SMS)
|
||||
- Kung Fu Kid (SMS)
|
||||
- Quackshot Starring Donald Duck (GEN)
|
||||
- Wonderboy (SMS)
|
||||
|
||||
more? */
|
||||
|
@ -4,8 +4,9 @@
|
||||
|
||||
Metal Freezer (c) 1989 Seibu
|
||||
|
||||
driver by Angelo Salese
|
||||
|
||||
driver by Angelo Salese, based off initial work by David Haywood
|
||||
thanks to Peter Wilhelmsen for the decryption
|
||||
|
||||
HW seems the natural evolution of Dark Mist type.
|
||||
|
||||
TODO:
|
||||
|
@ -405,7 +405,7 @@ House of the Dead 2 (USA) 834-13636-01 21585 20 (64Mb)
|
||||
Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires mahjong panel
|
||||
Jambo! Safari (Rev A) 840-0013C 22826A 8 (64Mb) ? 315-6213 317-0264-COM
|
||||
Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0274-JPN
|
||||
Marvel Vs. Capcom 2 (USA, Rev A) 841-0007C-01 23062A 14 (64Mb) ? 315-6213 ?
|
||||
Marvel Vs. Capcom 2 (USA) (Rev A) 841-0007C-01 23062A 14 (64Mb) present 315-6213 317-5053-COM
|
||||
OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires regular 837-13551 and 837-13938 rotary JVS boards, and special panel
|
||||
Power Stone 841-0001C 21597 8 (64Mb) present 315-6213 317-5046-COM joystick + 3 buttons
|
||||
Power Stone 2 841-0008C 23127 9 (64Mb) present 315-6213 317-5054-COM joystick + 3 buttons
|
||||
@ -531,7 +531,8 @@ Club Kart Prize (Rev A) 840-0129C 24082A
|
||||
Club Kart Prize Ver. B 840-0137C 24149 16 (64Mb) present 317-0368-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped)
|
||||
Giant Gram 2000 840-0039C 23377 20 (64Mb) present 317-0296-COM
|
||||
Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped)
|
||||
Marvel Vs. Capcom 2 New Age of Heroes (Export, Rev A) 841-0007C-02 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb)
|
||||
Marvel Vs. Capcom 2 New Age of Heroes (Export) (Rev A) 841-0007C-02 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb) have factory wire-mod connecting IC13S serial EEPROM CLK pin to IC11 ROM /OE pin
|
||||
Marvel Vs. Capcom 2 New Age of Heroes (Korea) (Rev A) 841-0007C-03 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb) have factory wire-mod connecting IC13S serial EEPROM CLK pin to IC11 ROM /OE pin
|
||||
MushiKing The King of Beetles 2K3 2ND 840-0150C 24217 6 (64Mb) present 317-0394-COM requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
|
||||
Quiz Ah Megamisama 840-0030C 23227 16 (64Mb) present 317-0280-JPN
|
||||
Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM requires regular 837-13551 and 837-13938 rotary JVS boards
|
||||
@ -4576,16 +4577,40 @@ ROM_START( shangril )
|
||||
ROM_PARAMETER( ":rom_board:segam2crypt:key", "-1") // Unknown
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
SYSTEMID: NAOMI
|
||||
JAP: MARVEL VS. CAPCOM 2
|
||||
USA: MARVEL VS. CAPCOM 2
|
||||
EXP: MARVEL VS. CAPCOM 2
|
||||
// 841-0007C-01, uses 171-7919A type ROM board
|
||||
ROM_START( mvsc2u )
|
||||
NAOMI_BIOS
|
||||
NAOMI_DEFAULT_EEPROM
|
||||
|
||||
Note: the following game is one of the few known regular Naomi game to have a rom test item in its specific test mode menu.
|
||||
So the Naomi regular board test item is unreliable in this circumstance.
|
||||
ROM_REGION( 0x7800000, "rom_board", ROMREGION_ERASEFF)
|
||||
ROM_LOAD("epr-23062a.ic22", 0x0000000, 0x0400000, CRC(96038276) SHA1(877ba02c92082567280afcb1ae40b3bbfc8a63e8) )
|
||||
ROM_LOAD("mpr-23048.ic1", 0x0800000, 0x0800000, CRC(93d7a63a) SHA1(c50d10b4a3f9db51eae5749f5b665d7c8ab6c898) )
|
||||
ROM_LOAD("mpr-23049.ic2", 0x1000000, 0x0800000, CRC(003dcce0) SHA1(fb71c8ca9271d2155878c72d8fe2df3031e6c014) )
|
||||
ROM_LOAD("mpr-23050.ic3", 0x1800000, 0x0800000, CRC(1d6b88a7) SHA1(ba42e9d1d912d88a7ad839b878975ba590634320) )
|
||||
ROM_LOAD("mpr-23051.ic4", 0x2000000, 0x0800000, CRC(01226aaa) SHA1(a4c6a0eda05e53d0e51b92a4317a86a708a7efdb) )
|
||||
ROM_LOAD("mpr-23052.ic5", 0x2800000, 0x0800000, CRC(74bee120) SHA1(5a0fb48fa758a2be2e08e3b1298103c5aa748835) )
|
||||
ROM_LOAD("mpr-23053.ic6", 0x3000000, 0x0800000, CRC(d92d4401) SHA1(a868780f8d2e176ff10781e1c08bf932f34ac504) )
|
||||
ROM_LOAD("mpr-23054.ic7", 0x3800000, 0x0800000, CRC(78ba02e8) SHA1(0f696a33e1e6671001efc309ed62f084a246ad24) )
|
||||
ROM_LOAD("mpr-23055.ic8", 0x4000000, 0x0800000, CRC(84319604) SHA1(c3dde162e043a54e1325202b46191b32e8784a1c) )
|
||||
ROM_LOAD("mpr-23056.ic9", 0x4800000, 0x0800000, CRC(d7386034) SHA1(be1f3ca5f283e428dc59dc072de3e7d36e122d53) )
|
||||
ROM_LOAD("mpr-23057.ic10", 0x5000000, 0x0800000, CRC(a3f087db) SHA1(b52d7c072cb5c2fdd10d0ac0b62cebe48b229ae3) )
|
||||
ROM_LOAD("mpr-23058.ic11", 0x5800000, 0x0800000, CRC(61a6cc5d) SHA1(34e52cb076888313a80f2b87876b8d37b91d85a0) )
|
||||
ROM_LOAD("mpr-23059.ic12s", 0x6000000, 0x0800000, CRC(64808024) SHA1(1a6c60c330642b273978d3dd02d95d17d36ee3f2) )
|
||||
ROM_LOAD("mpr-23060.ic13s", 0x6800000, 0x0800000, CRC(67519942) SHA1(fc758d9075625f8140d5d828c8f6b7a91bcc9119) )
|
||||
ROM_LOAD("mpr-23061.ic14s", 0x7000000, 0x0800000, CRC(fb1844c4) SHA1(1d1571516a6dbed0c4ded3b80efde9cc9281f66f) )
|
||||
|
||||
*/
|
||||
ROM_REGION(0x84, "some_eeprom", 0)
|
||||
ROM_LOAD("sflash.ic37", 0x000000, 0x000084, CRC(37a66f3c) SHA1(df6cd2cdc2813caa5da4dc9f171998485bcbdc44))
|
||||
|
||||
// 841-0007-01 2000 317-5053-COM Naomi
|
||||
ROM_PARAMETER( ":rom_board:segam2crypt:key", "0002c840" )
|
||||
ROM_END
|
||||
|
||||
// 841-0007C-02 / 841-0007C-03, uses 171-7978B type ROM board
|
||||
// reuses MPR 23048-23061 MaskROMs from 841-0007C-01 set, which contain regular non-interleaved data, not native/normal for such ROM board type
|
||||
// have added IC31-32 32Mbit MaskROMs with interleaved M1-encrypted data
|
||||
// mentioned above ROMs mapping is unsupported by NAOMI BIOS, so it's ROM BOARD TEST and shown sums is unreliable,
|
||||
// because of it this game version have it's own ROM BOARD TEST in GAME TEST MODE, which perform test and show sums correctly
|
||||
|
||||
ROM_START( mvsc2 )
|
||||
NAOMI_BIOS
|
||||
@ -4614,6 +4639,9 @@ ROM_START( mvsc2 )
|
||||
|
||||
ROM_COPY( "rom_board", 0x1200000, 0x400000, 0x400000 )
|
||||
|
||||
ROM_REGION(0x74, "some_eeprom", 0)
|
||||
ROM_LOAD("sflash.ic13s", 0x000000, 0x000074, CRC(5fbc2d5e) SHA1(fd762b81d1bbb65d28ad223874db198918fb0853))
|
||||
|
||||
// 841-0007-02 2000 317-5058-COM Naomi
|
||||
ROM_PARAMETER( ":rom_board:key", "c18b6e7c" )
|
||||
ROM_END
|
||||
@ -9620,8 +9648,8 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
|
||||
/* 0004 */ GAME( 1999, shangril, naomi, naomim2, naomi_mp,naomi_state,naomi_mp,ROT0, "Marvelous Ent.", "Dengen Tenshi Taisen Janshi Shangri-la", GAME_FLAGS )
|
||||
/* 0005 */ GAME( 1999, spawn, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Todd Mc Farlane / Capcom","Spawn In the Demon's Hand (Rev B)", GAME_FLAGS )
|
||||
/* 0006 */ GAME( 1999, puyoda, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Compile", "Puyo Puyo Da!", GAME_FLAGS )
|
||||
// 0007-01 GAME(2000, mvsc2u, mvsc2, naomim2, naomi, naomi_state, mvsc2, ROT0, "Capcom / Marvel", "Marvel Vs. Capcom 2 New Age of Heroes (USA, Rev A)", GAME_FLAGS)
|
||||
/* 0007-02 */ GAME(2000, mvsc2, naomi, naomim1, naomi, naomi_state, mvsc2, ROT0, "Capcom / Marvel", "Marvel Vs. Capcom 2 New Age of Heroes (Export, Rev A)", GAME_FLAGS)
|
||||
/* 0007-01 */ GAME(2000, mvsc2u, mvsc2, naomim2, naomi, naomi_state, mvsc2, ROT0, "Capcom / Marvel", "Marvel Vs. Capcom 2 New Age of Heroes (USA) (Rev A)", GAME_FLAGS)
|
||||
/* 0007-02 -03 */ GAME(2000, mvsc2, naomi, naomim1, naomi, naomi_state, mvsc2, ROT0, "Capcom / Marvel", "Marvel Vs. Capcom 2 New Age of Heroes (Export, Korea) (Rev A)", GAME_FLAGS)
|
||||
/* 0008 */ GAME( 2000, pstone2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone 2", GAME_FLAGS )
|
||||
/* 0011 */ GAME( 2000, capsnk, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (Rev C)", GAME_FLAGS )
|
||||
/* 0011 */ GAME( 2000, capsnka, capsnk,naomim2, naomi, naomi_state, naomi, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 (Rev A)", GAME_FLAGS )
|
||||
|
@ -81,7 +81,7 @@ MACHINE_RESET_MEMBER(onyx_state, c8002)
|
||||
static ADDRESS_MAP_START(c8002_mem, AS_PROGRAM, 16, onyx_state)
|
||||
AM_RANGE(0x00000, 0x00fff) AM_ROM AM_SHARE("share0")
|
||||
AM_RANGE(0x01000, 0x07fff) AM_RAM AM_SHARE("share1")
|
||||
AM_RANGE(0x08000, 0xfffff) AM_RAM AM_SHARE("share2")
|
||||
AM_RANGE(0x08000, 0x0ffff) AM_RAM AM_SHARE("share2") // Z8002 has 64k memory
|
||||
ADDRESS_MAP_END
|
||||
|
||||
//static ADDRESS_MAP_START(c8002_data, AS_DATA, 16, onyx_state)
|
||||
|
@ -1221,32 +1221,32 @@ ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( s2650games_map, AS_PROGRAM, 8, pacman_state )
|
||||
AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x8000) AM_ROMBANK("bank1")
|
||||
AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0xe000) AM_WRITE(s2650games_colorram_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0x1400, 0x141f) AM_MIRROR(0xe000) AM_WRITE(s2650games_scroll_w)
|
||||
AM_RANGE(0x1420, 0x148f) AM_MIRROR(0xe000) AM_WRITEONLY
|
||||
AM_RANGE(0x1490, 0x149f) AM_MIRROR(0xe000) AM_WRITEONLY AM_SHARE("s2650_spriteram")
|
||||
AM_RANGE(0x14a0, 0x14bf) AM_MIRROR(0xe000) AM_WRITE(s2650games_tilesbank_w) AM_SHARE("s2650_tileram")
|
||||
AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0xe000) AM_WRITEONLY
|
||||
AM_RANGE(0x1500, 0x1502) AM_MIRROR(0xe000) AM_WRITENOP
|
||||
AM_RANGE(0x1503, 0x1503) AM_MIRROR(0xe000) AM_WRITE(pacman_flipscreen_w)
|
||||
AM_RANGE(0x1504, 0x1506) AM_MIRROR(0xe000) AM_WRITENOP
|
||||
AM_RANGE(0x1507, 0x1507) AM_MIRROR(0xe000) AM_WRITE(pacman_coin_counter_w)
|
||||
AM_RANGE(0x1508, 0x155f) AM_MIRROR(0xe000) AM_WRITEONLY
|
||||
AM_RANGE(0x1560, 0x156f) AM_MIRROR(0xe000) AM_WRITEONLY AM_SHARE("spriteram2")
|
||||
AM_RANGE(0x1570, 0x157f) AM_MIRROR(0xe000) AM_WRITEONLY
|
||||
AM_RANGE(0x1586, 0x1587) AM_MIRROR(0xe000) AM_WRITENOP
|
||||
AM_RANGE(0x15c0, 0x15c0) AM_MIRROR(0xe000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
|
||||
AM_RANGE(0x15c7, 0x15c7) AM_MIRROR(0xe000) AM_WRITE(porky_banking_w)
|
||||
AM_RANGE(0x1500, 0x1500) AM_MIRROR(0xe000) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x1540, 0x1540) AM_MIRROR(0xe000) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x1580, 0x1580) AM_MIRROR(0xe000) AM_READ_PORT("DSW0")
|
||||
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0xe000) AM_WRITE(s2650games_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x1c00, 0x1fef) AM_MIRROR(0xe000) AM_RAM
|
||||
AM_RANGE(0x1ff0, 0x1fff) AM_MIRROR(0xe000) AM_WRITEONLY AM_SHARE("spriteram")
|
||||
AM_RANGE(0x2000, 0x2fff) AM_MIRROR(0x8000) AM_ROMBANK("bank2")
|
||||
AM_RANGE(0x4000, 0x4fff) AM_MIRROR(0x8000) AM_ROMBANK("bank3")
|
||||
AM_RANGE(0x6000, 0x6fff) AM_MIRROR(0x8000) AM_ROMBANK("bank4")
|
||||
AM_RANGE(0x0000, 0x0fff) AM_ROMBANK("bank1")
|
||||
AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x6000) AM_WRITE(s2650games_colorram_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0x1400, 0x141f) AM_MIRROR(0x6000) AM_WRITE(s2650games_scroll_w)
|
||||
AM_RANGE(0x1420, 0x148f) AM_MIRROR(0x6000) AM_WRITEONLY
|
||||
AM_RANGE(0x1490, 0x149f) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("s2650_spriteram")
|
||||
AM_RANGE(0x14a0, 0x14bf) AM_MIRROR(0x6000) AM_WRITE(s2650games_tilesbank_w) AM_SHARE("s2650_tileram")
|
||||
AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY
|
||||
AM_RANGE(0x1500, 0x1502) AM_MIRROR(0x6000) AM_WRITENOP
|
||||
AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(pacman_flipscreen_w)
|
||||
AM_RANGE(0x1504, 0x1506) AM_MIRROR(0x6000) AM_WRITENOP
|
||||
AM_RANGE(0x1507, 0x1507) AM_MIRROR(0x6000) AM_WRITE(pacman_coin_counter_w)
|
||||
AM_RANGE(0x1508, 0x155f) AM_MIRROR(0x6000) AM_WRITEONLY
|
||||
AM_RANGE(0x1560, 0x156f) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram2")
|
||||
AM_RANGE(0x1570, 0x157f) AM_MIRROR(0x6000) AM_WRITEONLY
|
||||
AM_RANGE(0x1586, 0x1587) AM_MIRROR(0x6000) AM_WRITENOP
|
||||
AM_RANGE(0x15c0, 0x15c0) AM_MIRROR(0x6000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
|
||||
AM_RANGE(0x15c7, 0x15c7) AM_MIRROR(0x6000) AM_WRITE(porky_banking_w)
|
||||
AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x1540, 0x1540) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("DSW0")
|
||||
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(s2650games_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x1c00, 0x1fef) AM_MIRROR(0x6000) AM_RAM
|
||||
AM_RANGE(0x1ff0, 0x1fff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram")
|
||||
AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("bank2")
|
||||
AM_RANGE(0x4000, 0x4fff) AM_ROMBANK("bank3")
|
||||
AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank4")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
@ -102,7 +102,6 @@
|
||||
- Sorcerian, Twilight Zone 3: Fails initial booting, issue with 2dd irq?
|
||||
- The Incredible Machine: hangs at main menu (YM mis-fires irq?)
|
||||
- Uchiyama Aki no Chou Bangai: keyboard irq is fussy (sometimes it doesn't register a key press);
|
||||
- Uno: has minor EGC gfx bugs;
|
||||
- Windows 2: EGC drawing issue (byte wide writes?)
|
||||
|
||||
per-game TODO (PC-9821):
|
||||
@ -984,7 +983,8 @@ WRITE8_MEMBER(pc9801_state::rtc_w)
|
||||
|
||||
WRITE8_MEMBER(pc9801_state::dmapg4_w)
|
||||
{
|
||||
m_dma_offset[(offset+1) & 3] = data & 0x0f;
|
||||
if(offset < 4)
|
||||
m_dma_offset[(offset+1) & 3] = data & 0x0f;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pc9801_state::dmapg8_w)
|
||||
@ -1021,7 +1021,7 @@ WRITE8_MEMBER(pc9801_state::pc9801_video_ff_w)
|
||||
m_gfx_ff = 1;
|
||||
if(data & 1)
|
||||
logerror("Graphic f/f actually enabled!\n");
|
||||
break;
|
||||
break;
|
||||
case 4:
|
||||
if(m_gfx_ff)
|
||||
{
|
||||
@ -1055,13 +1055,16 @@ READ8_MEMBER(pc9801_state::txt_scrl_r)
|
||||
{
|
||||
//logerror("Read to display register [%02x]\n",offset+0x70);
|
||||
/* TODO: ok? */
|
||||
return m_txt_scroll_reg[offset >> 1];
|
||||
if(offset <= 5)
|
||||
return m_txt_scroll_reg[offset];
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(pc9801_state::txt_scrl_w)
|
||||
{
|
||||
//logerror("Write to display register [%02x] %02x\n",offset+0x70,data);
|
||||
m_txt_scroll_reg[offset >> 1] = data;
|
||||
if(offset <= 5)
|
||||
m_txt_scroll_reg[offset] = data;
|
||||
|
||||
//popmessage("%02x %02x %02x %02x",m_txt_scroll_reg[0],m_txt_scroll_reg[1],m_txt_scroll_reg[2],m_txt_scroll_reg[3]);
|
||||
}
|
||||
@ -1687,7 +1690,6 @@ WRITE8_MEMBER( pc9801_state::sasi_ctrl_w )
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( pc9801_map, AS_PROGRAM, 16, pc9801_state )
|
||||
AM_RANGE(0x00000, 0x9ffff) AM_RAM //work RAM
|
||||
AM_RANGE(0xa0000, 0xa3fff) AM_READWRITE(tvram_r,tvram_w) //TVRAM
|
||||
AM_RANGE(0xa8000, 0xbffff) AM_READWRITE8(gvram_r,gvram_w,0xffff) //bitmap VRAM
|
||||
AM_RANGE(0xcc000, 0xcdfff) AM_ROM AM_REGION("sound_bios",0) //sound BIOS
|
||||
@ -1700,18 +1702,18 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( pc9801_common_io, AS_IO, 16, pc9801_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xff00)
|
||||
AM_RANGE(0x0000, 0x000f) AM_READWRITE8(pic_r, pic_w, 0x00ff) // i8259 PIC (bit 3 ON slave / master) / i8237 DMA
|
||||
AM_RANGE(0x0020, 0x0021) AM_WRITE8(rtc_w,0x00ff)
|
||||
AM_RANGE(0x0000, 0x001f) AM_READWRITE8(pic_r, pic_w, 0x00ff) // i8259 PIC (bit 3 ON slave / master) / i8237 DMA
|
||||
AM_RANGE(0x0020, 0x002f) AM_WRITE8(rtc_w,0x00ff)
|
||||
AM_RANGE(0x0030, 0x0037) AM_DEVREADWRITE8("ppi8255_sys", i8255_device, read, write, 0xff00) //i8251 RS232c / i8255 system port
|
||||
AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi8255_prn", i8255_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8("keyb", pc9801_kbd_device, rx_r, tx_w, 0xff00) //i8255 printer port / i8251 keyboard
|
||||
AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("keyb", pc9801_kbd_device, rx_r, tx_w, 0xff00) //i8255 printer port / i8251 keyboard
|
||||
AM_RANGE(0x0050, 0x0057) AM_DEVREADWRITE8("ppi8255_fdd", i8255_device, read, write, 0xff00)
|
||||
AM_RANGE(0x0050, 0x0053) AM_WRITE8(nmi_ctrl_w,0x00ff) // NMI FF / i8255 floppy port (2d?)
|
||||
AM_RANGE(0x0050, 0x0057) AM_WRITE8(nmi_ctrl_w,0x00ff) // NMI FF / i8255 floppy port (2d?)
|
||||
AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("upd7220_chr", upd7220_device, read, write, 0x00ff) //upd7220 character ports / <undefined>
|
||||
AM_RANGE(0x0064, 0x0065) AM_WRITE8(vrtc_clear_w,0x00ff)
|
||||
// AM_RANGE(0x006c, 0x006f) border color / <undefined>
|
||||
AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00)
|
||||
AM_RANGE(0x0070, 0x007b) AM_READWRITE8(txt_scrl_r,txt_scrl_w,0x00ff) //display registers / i8253 pit
|
||||
AM_RANGE(0x0070, 0x007f) AM_READWRITE8(txt_scrl_r,txt_scrl_w,0x00ff) //display registers / i8253 pit
|
||||
AM_RANGE(0x0080, 0x0081) AM_READWRITE8(sasi_data_r, sasi_data_w, 0x00ff)
|
||||
AM_RANGE(0x0082, 0x0083) AM_READWRITE8(sasi_status_r, sasi_ctrl_w,0x00ff)
|
||||
AM_RANGE(0x0090, 0x0091) AM_DEVREAD8("upd765_2hd", upd765a_device, msr_r, 0x00ff)
|
||||
@ -1723,7 +1725,7 @@ static ADDRESS_MAP_START( pc9801_common_io, AS_IO, 16, pc9801_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pc9801_io, AS_IO, 16, pc9801_state )
|
||||
AM_RANGE(0x0020, 0x0027) AM_WRITE8(dmapg4_w,0xff00)
|
||||
AM_RANGE(0x0020, 0x002f) AM_WRITE8(dmapg4_w,0xff00)
|
||||
AM_RANGE(0x0068, 0x0069) AM_WRITE8(pc9801_video_ff_w,0x00ff) //mode FF / <undefined>
|
||||
AM_RANGE(0x00a0, 0x00af) AM_READWRITE8(pc9801_a0_r,pc9801_a0_w,0xffff) //upd7220 bitmap ports / display registers
|
||||
AM_RANGE(0x00c8, 0x00cb) AM_DEVICE8("upd765_2dd", upd765a_device, map, 0x00ff)
|
||||
@ -1824,7 +1826,7 @@ WRITE8_MEMBER(pc9801_state::a20_ctrl_w)
|
||||
/* reset POR bit, TODO: is there any other way? */
|
||||
por = machine().device<i8255_device>("ppi8255_sys")->read(space, 2) & ~0x20;
|
||||
machine().device<i8255_device>("ppi8255_sys")->write(space, 2,por);
|
||||
m_maincpu->set_input_line(INPUT_LINE_A20, 0);
|
||||
m_maincpu->set_input_line(INPUT_LINE_A20, CLEAR_LINE);
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_gate_a20 = 0;
|
||||
}
|
||||
@ -2101,7 +2103,6 @@ static ADDRESS_MAP_START( ipl_bank, AS_0, 16, pc9801_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pc9801ux_map, AS_PROGRAM, 16, pc9801_state )
|
||||
AM_RANGE(0x000000, 0x09ffff) AM_RAMBANK("wram")
|
||||
AM_RANGE(0x0a0000, 0x0a3fff) AM_READWRITE(tvram_r, tvram_w)
|
||||
AM_RANGE(0x0a4000, 0x0a4fff) AM_READWRITE8(pc9801rs_knjram_r, pc9801rs_knjram_w, 0xffff)
|
||||
AM_RANGE(0x0a8000, 0x0bffff) AM_READWRITE(grcg_gvram_r, grcg_gvram_w)
|
||||
@ -2331,7 +2332,6 @@ WRITE8_MEMBER(pc9801_state::winram_w)
|
||||
}*/
|
||||
|
||||
static ADDRESS_MAP_START( pc9821_map, AS_PROGRAM, 32, pc9801_state )
|
||||
AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("wram")
|
||||
//AM_RANGE(0x00080000, 0x0009ffff) AM_READWRITE8(winram_r, winram_w, 0xffffffff)
|
||||
AM_RANGE(0x000a0000, 0x000a3fff) AM_READWRITE16(tvram_r, tvram_w, 0xffffffff)
|
||||
AM_RANGE(0x000a4000, 0x000a4fff) AM_READWRITE8(pc9801rs_knjram_r, pc9801rs_knjram_w, 0xffffffff)
|
||||
@ -2349,12 +2349,12 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( pc9821_io, AS_IO, 32, pc9801_state )
|
||||
// ADDRESS_MAP_UNMAP_HIGH // TODO: a read to somewhere makes this to fail at POST
|
||||
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xff00ff00)
|
||||
AM_RANGE(0x0000, 0x000f) AM_READWRITE8(pic_r, pic_w, 0x00ff00ff) // i8259 PIC (bit 3 ON slave / master) / i8237 DMA
|
||||
AM_RANGE(0x0020, 0x0023) AM_WRITE8(rtc_w,0x000000ff)
|
||||
AM_RANGE(0x0000, 0x001f) AM_READWRITE8(pic_r, pic_w, 0x00ff00ff) // i8259 PIC (bit 3 ON slave / master) / i8237 DMA
|
||||
AM_RANGE(0x0020, 0x002f) AM_WRITE8(rtc_w,0x000000ff)
|
||||
AM_RANGE(0x0020, 0x002f) AM_WRITE8(dmapg8_w,0xff00ff00)
|
||||
AM_RANGE(0x0030, 0x0037) AM_DEVREADWRITE8("ppi8255_sys", i8255_device, read, write, 0xff00ff00) //i8251 RS232c / i8255 system port
|
||||
AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi8255_prn", i8255_device, read, write, 0x00ff00ff)
|
||||
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8("keyb", pc9801_kbd_device, rx_r, tx_w, 0xff00ff00) //i8255 printer port / i8251 keyboard
|
||||
AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("keyb", pc9801_kbd_device, rx_r, tx_w, 0xff00ff00) //i8255 printer port / i8251 keyboard
|
||||
AM_RANGE(0x0050, 0x0053) AM_WRITE8(nmi_ctrl_w, 0x00ff00ff)
|
||||
AM_RANGE(0x005c, 0x005f) AM_READ16(timestamp_r,0xffffffff) AM_WRITENOP // artic
|
||||
AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("upd7220_chr", upd7220_device, read, write, 0x00ff00ff) //upd7220 character ports / <undefined>
|
||||
@ -2964,9 +2964,17 @@ MACHINE_START_MEMBER(pc9801_state,pc9801_common)
|
||||
|
||||
m_vbirq = timer_alloc(TIMER_VBIRQ);
|
||||
|
||||
int ram_size = m_ram->size() - (640*1024);
|
||||
|
||||
address_space& space = m_maincpu->space(AS_PROGRAM);
|
||||
space.install_ram(0, (ram_size < 0) ? m_ram->size() - 1 : (640*1024) - 1, m_ram->pointer());
|
||||
if(ram_size > 0)
|
||||
space.install_ram(1024*1024, (1024*1024) + ram_size - 1, &m_ram->pointer()[(640*1024)]);
|
||||
|
||||
save_item(NAME(m_sasi_data));
|
||||
save_item(NAME(m_sasi_data_enable));
|
||||
save_item(NAME(m_sasi_ctrl));
|
||||
save_pointer(NAME(m_egc.regs), 8);
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(pc9801_state,pc9801f)
|
||||
@ -2982,17 +2990,6 @@ MACHINE_START_MEMBER(pc9801_state,pc9801rs)
|
||||
{
|
||||
MACHINE_START_CALL_MEMBER(pc9801_common);
|
||||
|
||||
int ram_size = m_ram->size() - 0xa0000;
|
||||
|
||||
address_space& space = m_maincpu->space(AS_PROGRAM);
|
||||
membank("wram")->set_base(m_ram->pointer());
|
||||
if(ram_size)
|
||||
{
|
||||
space.install_read_bank(0x100000, 0x100000 + ram_size - 1, "ext_wram");
|
||||
space.install_write_bank(0x100000, 0x100000 + ram_size - 1, "ext_wram");
|
||||
membank("ext_wram")->set_base(m_ram->pointer() + 0xa0000);
|
||||
}
|
||||
|
||||
m_sys_type = 0x80 >> 6;
|
||||
}
|
||||
|
||||
@ -3276,11 +3273,11 @@ static MACHINE_CONFIG_START( pc9801, pc9801_state )
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(pc9801_state,pc9801f)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(pc9801_state,pc9801f)
|
||||
#if 0
|
||||
|
||||
// TODO: maybe force dips to avoid beep error
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("128K")
|
||||
MCFG_RAM_EXTRA_OPTIONS("256K,384K,512K,640K")
|
||||
#endif
|
||||
MCFG_RAM_DEFAULT_SIZE("640K")
|
||||
MCFG_RAM_EXTRA_OPTIONS("128K,256K,384K,512K")
|
||||
|
||||
MCFG_UPD765A_ADD("upd765_2dd", false, true)
|
||||
MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(pc9801_state, fdc_2dd_irq))
|
||||
@ -3555,9 +3552,9 @@ ROM_START( pc9801bx2 )
|
||||
ROM_LOAD( "pc98bank2.bin", 0x00000, 0x08000, BAD_DUMP CRC(12818a14) SHA1(9c31e8ac85d78fa779d6bbc2095557065294ec09) )
|
||||
ROM_LOAD( "pc98bank3.bin", 0x00000, 0x08000, BAD_DUMP CRC(d0bda44e) SHA1(c1022a3b2be4d2a1e43914df9e4605254e5f99d5) )
|
||||
ROM_LOAD( "pc98bank4.bin", 0x10000, 0x08000, BAD_DUMP CRC(be8092f4) SHA1(12c8a166b8c6ebbef85568b67e1f098562883365) )
|
||||
ROM_LOAD( "pc98bank5.bin", 0x00000, 0x08000, BAD_DUMP CRC(4e32081e) SHA1(e23571273b7cad01aa116cb7414c5115a1093f85) )
|
||||
ROM_LOAD( "pc98bank6.bin", 0x00000, 0x08000, BAD_DUMP CRC(f878c160) SHA1(cad47f09075ffe4f7b51bb937c9f716c709d4596) )
|
||||
ROM_LOAD( "pc98bank7.bin", 0x00000, 0x08000, BAD_DUMP CRC(1bd6537b) SHA1(ff9ee1c976a12b87851635ce8991ac4ad607675b) )
|
||||
ROM_LOAD( "pc98bank5.bin", 0x18000, 0x08000, BAD_DUMP CRC(4e32081e) SHA1(e23571273b7cad01aa116cb7414c5115a1093f85) )
|
||||
ROM_LOAD( "pc98bank6.bin", 0x20000, 0x08000, BAD_DUMP CRC(f878c160) SHA1(cad47f09075ffe4f7b51bb937c9f716c709d4596) )
|
||||
ROM_LOAD( "pc98bank7.bin", 0x28000, 0x08000, BAD_DUMP CRC(1bd6537b) SHA1(ff9ee1c976a12b87851635ce8991ac4ad607675b) )
|
||||
|
||||
ROM_REGION( 0x10000, "sound_bios", 0 )
|
||||
ROM_LOAD( "sound.rom", 0x0000, 0x4000, CRC(80eabfde) SHA1(e09c54152c8093e1724842c711aed6417169db23) )
|
||||
|
@ -449,7 +449,8 @@ static ADDRESS_MAP_START( pcd_io, AS_IO, 16, pcd_state )
|
||||
AM_RANGE(0xf9d0, 0xf9d3) AM_DEVREADWRITE8("usart2",mc2661_device,read,write,0xffff)
|
||||
AM_RANGE(0xf9e0, 0xf9e3) AM_DEVREADWRITE8("usart3",mc2661_device,read,write,0xffff)
|
||||
// AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select)
|
||||
AM_RANGE(0xfb00, 0xffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
|
||||
AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(nmi_io_r, nmi_io_w, 0x00ff)
|
||||
AM_RANGE(0xfb02, 0xffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pcx_io, AS_IO, 16, pcd_state )
|
||||
|
@ -702,7 +702,6 @@ PALETTE_INIT_MEMBER(rex6000_state, rex6000)
|
||||
QUICKLOAD_LOAD_MEMBER( rex6000_state,rex6000)
|
||||
{
|
||||
static const char magic[] = "ApplicationName:Addin";
|
||||
address_space& flash = m_flash0b->space(0);
|
||||
UINT32 img_start = 0;
|
||||
|
||||
dynamic_buffer data(image.length());
|
||||
@ -715,7 +714,7 @@ QUICKLOAD_LOAD_MEMBER( rex6000_state,rex6000)
|
||||
img_start += 0xa0; //skip the icon (40x32 pixel)
|
||||
|
||||
for (UINT32 i=0; i<image.length() - img_start ;i++)
|
||||
flash.write_byte(i, data[img_start + i]);
|
||||
m_flash0b->write_raw(i, data[img_start + i]);
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( s6_audio_map, AS_PROGRAM, 8, s6_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
|
||||
AM_RANGE(0x0000, 0x00ff) AM_RAM
|
||||
AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pias", pia6821_device, read, write)
|
||||
AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write)
|
||||
AM_RANGE(0x3000, 0x7fff) AM_ROM AM_REGION("audioroms", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
@ -198,7 +198,7 @@ inline void vmufat_write_word(UINT8* flash, UINT8 block, offs_t offset, UINT16 d
|
||||
QUICKLOAD_LOAD_MEMBER( svmu_state, svmu )
|
||||
{
|
||||
UINT32 size = image.length();
|
||||
UINT8 *flash = (UINT8*)m_flash->space().get_read_ptr(0);
|
||||
UINT8 *flash = m_flash->base();
|
||||
|
||||
image.fread(flash, size);
|
||||
|
||||
|
@ -817,8 +817,8 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, system1_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM
|
||||
AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1fff) AM_DEVWRITE("sn1", sn76489a_device, write)
|
||||
AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1fff) AM_DEVWRITE("sn2", sn76489a_device, write)
|
||||
AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn1", sn76489a_device, write)
|
||||
AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn2", sn76489a_device, write)
|
||||
AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_READ(sound_data_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
@ -2095,11 +2095,10 @@ static MACHINE_CONFIG_START( tmnt, tmnt_state )
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
MCFG_SCREEN_SIZE(64*8, 32*8)
|
||||
//MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 2*8, 30*8-1 )
|
||||
MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 2*8, 30*8-1 )
|
||||
MCFG_SCREEN_VISIBLE_AREA(12*8+8, (64-12)*8-1, 2*8, 30*8-1 )
|
||||
// verified against real hardware
|
||||
MCFG_SCREEN_UPDATE_DRIVER(tmnt_state, screen_update_tmnt)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
// We see something strange in the left 8 pixels and the right 8 pixels, but it is same as real PCB.
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
|
||||
|
@ -121,14 +121,14 @@ static ADDRESS_MAP_START(v6809_mem, AS_PROGRAM, 8, v6809_state)
|
||||
AM_RANGE(0xf000, 0xf000) AM_MIRROR(0xfe) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(v6809_address_w)
|
||||
AM_RANGE(0xf001, 0xf001) AM_MIRROR(0xfe) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(v6809_register_w)
|
||||
AM_RANGE(0xf200, 0xf200) AM_MIRROR(0xff) AM_WRITE(videoram_w)
|
||||
AM_RANGE(0xf504, 0xf504) AM_MIRROR(0x36) AM_DEVREADWRITE("acia0", acia6850_device, status_r, control_w) // modem
|
||||
AM_RANGE(0xf505, 0xf505) AM_MIRROR(0x36) AM_DEVREADWRITE("acia0", acia6850_device, data_r, data_w)
|
||||
AM_RANGE(0xf50c, 0xf50c) AM_MIRROR(0x36) AM_DEVREADWRITE("acia1", acia6850_device, status_r, control_w) // printer
|
||||
AM_RANGE(0xf50d, 0xf50d) AM_MIRROR(0x36) AM_DEVREADWRITE("acia1", acia6850_device, data_r, data_w)
|
||||
AM_RANGE(0xf500, 0xf500) AM_MIRROR(0x36) AM_DEVREADWRITE("acia0", acia6850_device, status_r, control_w) // modem
|
||||
AM_RANGE(0xf501, 0xf501) AM_MIRROR(0x36) AM_DEVREADWRITE("acia0", acia6850_device, data_r, data_w)
|
||||
AM_RANGE(0xf508, 0xf508) AM_MIRROR(0x36) AM_DEVREADWRITE("acia1", acia6850_device, status_r, control_w) // printer
|
||||
AM_RANGE(0xf509, 0xf509) AM_MIRROR(0x36) AM_DEVREADWRITE("acia1", acia6850_device, data_r, data_w)
|
||||
AM_RANGE(0xf600, 0xf603) AM_MIRROR(0x3c) AM_DEVREADWRITE("fdc", mb8876_t, read, write)
|
||||
AM_RANGE(0xf640, 0xf64f) AM_MIRROR(0x30) AM_DEVREADWRITE("rtc", mm58274c_device, read, write)
|
||||
AM_RANGE(0xf680, 0xf683) AM_MIRROR(0x3c) AM_DEVREADWRITE("pia0", pia6821_device, read, write)
|
||||
AM_RANGE(0xf6c8, 0xf6cf) AM_MIRROR(0x08) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
|
||||
AM_RANGE(0xf6c0, 0xf6c7) AM_MIRROR(0x08) AM_DEVREADWRITE("ptm", ptm6840_device, read, write)
|
||||
AM_RANGE(0xf6d0, 0xf6d3) AM_MIRROR(0x0c) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
|
||||
AM_RANGE(0xf800, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
@ -198,9 +198,9 @@ static ADDRESS_MAP_START(elektor_mem, AS_PROGRAM, 8, vc4000_state)
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
|
||||
AM_RANGE(0x0000, 0x07ff) AM_ROM
|
||||
AM_RANGE(0x0800, 0x15ff) AM_RAM
|
||||
AM_RANGE(0x1d80, 0x1dff) AM_MIRROR(0x400) AM_READWRITE(elektor_cass_r,elektor_cass_w)
|
||||
AM_RANGE(0x1e80, 0x1e8f) AM_MIRROR(0x800) AM_READWRITE(vc4000_key_r,vc4000_sound_ctl)
|
||||
AM_RANGE(0x1f00, 0x1fff) AM_MIRROR(0x800) AM_READWRITE(vc4000_video_r, vc4000_video_w)
|
||||
AM_RANGE(0x1980, 0x19ff) AM_MIRROR(0x400) AM_READWRITE(elektor_cass_r,elektor_cass_w)
|
||||
AM_RANGE(0x1680, 0x168f) AM_MIRROR(0x800) AM_READWRITE(vc4000_key_r,vc4000_sound_ctl)
|
||||
AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x800) AM_READWRITE(vc4000_video_r, vc4000_video_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( vc4000 )
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "machine/mc68681.h"
|
||||
#include "machine/ms7004.h"
|
||||
#include "machine/bankdev.h"
|
||||
#include "machine/x2212.h"
|
||||
#include "video/upd7220.h"
|
||||
|
||||
#define VERBOSE_DBG 1 /* general debug messages */
|
||||
@ -55,7 +56,8 @@ public:
|
||||
m_duart(*this, "duart"),
|
||||
m_hgdc(*this, "upd7220"),
|
||||
m_bank(*this, "bank"),
|
||||
m_video_ram(*this, "video_ram"),
|
||||
m_nvram(*this, "x2212"),
|
||||
m_palette(*this, "palette"),
|
||||
m_rom(*this, "maincpu"){ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -64,11 +66,15 @@ public:
|
||||
required_device<mc68681_device> m_duart;
|
||||
required_device<upd7220_device> m_hgdc;
|
||||
required_device<address_map_bank_device> m_bank;
|
||||
required_shared_ptr<UINT16> m_video_ram;
|
||||
required_device<x2212_device> m_nvram;
|
||||
required_device<palette_device> m_palette;
|
||||
required_region_ptr<UINT16> m_rom;
|
||||
|
||||
UINT8 m_video_ram[65536];
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(write_keyboard_clock);
|
||||
DECLARE_WRITE_LINE_MEMBER(i8085_rdy_w);
|
||||
DECLARE_READ_LINE_MEMBER(i8085_sid_r);
|
||||
DECLARE_READ8_MEMBER( test_r );
|
||||
DECLARE_READ8_MEMBER(i8085_comm_r);
|
||||
DECLARE_WRITE8_MEMBER(i8085_comm_w);
|
||||
@ -78,6 +84,16 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(mem_map_cs_w);
|
||||
DECLARE_READ8_MEMBER(ctrl_r);
|
||||
DECLARE_WRITE8_MEMBER(mem_map_sel_w);
|
||||
DECLARE_READ8_MEMBER(char_buf_r);
|
||||
DECLARE_WRITE8_MEMBER(char_buf_w);
|
||||
DECLARE_READ8_MEMBER(vram_r);
|
||||
DECLARE_WRITE8_MEMBER(vram_w);
|
||||
DECLARE_READ8_MEMBER(vom_r);
|
||||
DECLARE_WRITE8_MEMBER(vom_w);
|
||||
DECLARE_WRITE8_MEMBER(nvr_store_w);
|
||||
DECLARE_WRITE8_MEMBER(mask_w);
|
||||
DECLARE_WRITE8_MEMBER(reg0_w);
|
||||
DECLARE_WRITE8_MEMBER(reg1_w);
|
||||
DECLARE_READ16_MEMBER(mem_r);
|
||||
DECLARE_WRITE16_MEMBER(mem_w);
|
||||
|
||||
@ -87,11 +103,14 @@ public:
|
||||
|
||||
DECLARE_DRIVER_INIT(vt240);
|
||||
virtual void machine_reset() override;
|
||||
UPD7220_DRAW_TEXT_LINE_MEMBER( hgdc_draw_text );
|
||||
UPD7220_DISPLAY_PIXELS_MEMBER(hgdc_draw);
|
||||
|
||||
UINT8 m_i8085_out, m_t11_out;
|
||||
UINT8 m_i8085_out, m_t11_out, m_i8085_rdy, m_t11;
|
||||
UINT8 m_mem_map[16];
|
||||
UINT8 m_mem_map_sel;
|
||||
UINT8 m_char_buf[16];
|
||||
UINT8 m_char_idx, m_mask, m_reg0, m_reg1;
|
||||
UINT8 m_vom[16];
|
||||
};
|
||||
|
||||
WRITE_LINE_MEMBER(vt240_state::write_keyboard_clock)
|
||||
@ -103,53 +122,34 @@ WRITE_LINE_MEMBER(vt240_state::write_keyboard_clock)
|
||||
WRITE_LINE_MEMBER(vt240_state::i8085_rdy_w)
|
||||
{
|
||||
//m_maincpu->set_input_line(T11_IRQ1, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
m_i8085_rdy = !state;
|
||||
}
|
||||
|
||||
/* TODO */
|
||||
UPD7220_DRAW_TEXT_LINE_MEMBER( vt240_state::hgdc_draw_text )
|
||||
READ_LINE_MEMBER(vt240_state::i8085_sid_r)
|
||||
{
|
||||
//int x;
|
||||
//int xi,yi;
|
||||
//int tile,color;
|
||||
//UINT8 tile_data;
|
||||
|
||||
#if 0
|
||||
for( x = 0; x < pitch; x++ )
|
||||
{
|
||||
tile = (vram[(addr+x)*2] & 0xff);
|
||||
color = (vram[(addr+x)*2+1] & 0x0f);
|
||||
|
||||
for( yi = 0; yi < lr; yi++)
|
||||
{
|
||||
tile_data = m_char_rom[(tile*8+yi) & 0x7ff];
|
||||
|
||||
if(cursor_on && cursor_addr == addr+x) //TODO
|
||||
tile_data^=0xff;
|
||||
|
||||
for( xi = 0; xi < 8; xi++)
|
||||
{
|
||||
int res_x,res_y;
|
||||
int pen = (tile_data >> xi) & 1 ? color : 0;
|
||||
|
||||
if(yi >= 8) { pen = 0; }
|
||||
|
||||
res_x = x * 8 + xi;
|
||||
res_y = y + yi;
|
||||
|
||||
if(res_x > screen_max_x || res_y > screen_max_y)
|
||||
continue;
|
||||
|
||||
bitmap.pix16(res_y, res_x) = pen;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return !m_t11;
|
||||
}
|
||||
|
||||
UPD7220_DISPLAY_PIXELS_MEMBER( vt240_state::hgdc_draw )
|
||||
{
|
||||
const rgb_t *palette = m_palette->palette()->entry_list_raw();
|
||||
|
||||
int xi,gfx;
|
||||
UINT8 pen;
|
||||
|
||||
gfx = ((UINT16 *)m_video_ram)[(address & 0xffff) >> 1];
|
||||
|
||||
for(xi=0;xi<16;xi++)
|
||||
{
|
||||
pen = ((gfx >> xi) & 1) ? 1 : 0;
|
||||
bitmap.pix32(y, x + xi) = palette[pen];
|
||||
}
|
||||
}
|
||||
|
||||
READ8_MEMBER(vt240_state::t11_comm_r)
|
||||
{
|
||||
m_t11 = 1;
|
||||
m_i8085->set_input_line(I8085_RST65_LINE, CLEAR_LINE);
|
||||
return m_t11_out;
|
||||
}
|
||||
|
||||
@ -163,7 +163,6 @@ READ8_MEMBER(vt240_state::i8085_comm_r)
|
||||
switch(offset)
|
||||
{
|
||||
case 0:
|
||||
m_i8085->set_input_line(I8085_RST65_LINE, CLEAR_LINE);
|
||||
return m_i8085_out;
|
||||
}
|
||||
return 0xff;
|
||||
@ -175,10 +174,13 @@ WRITE8_MEMBER(vt240_state::i8085_comm_w)
|
||||
{
|
||||
case 1:
|
||||
m_t11_out = data;
|
||||
m_t11 = 0;
|
||||
m_i8085->set_input_line(I8085_RST65_LINE, ASSERT_LINE);
|
||||
break;
|
||||
case 2:
|
||||
m_i8085->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
m_t11 = 0;
|
||||
m_i8085->set_input_line(I8085_RST65_LINE, CLEAR_LINE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -194,7 +196,7 @@ WRITE8_MEMBER(vt240_state::mem_map_cs_w)
|
||||
|
||||
READ8_MEMBER(vt240_state::ctrl_r)
|
||||
{
|
||||
return m_mem_map_sel;
|
||||
return m_mem_map_sel | (m_i8085_rdy << 6) | (m_t11 << 7);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::mem_map_sel_w)
|
||||
@ -222,9 +224,74 @@ WRITE16_MEMBER(vt240_state::mem_w)
|
||||
}
|
||||
}
|
||||
|
||||
READ8_MEMBER(vt240_state::char_buf_r)
|
||||
{
|
||||
m_char_idx = 0;
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::char_buf_w)
|
||||
{
|
||||
m_char_buf[m_char_idx++] = ~data;
|
||||
m_char_idx &= 0xf;
|
||||
}
|
||||
|
||||
READ8_MEMBER(vt240_state::vom_r)
|
||||
{
|
||||
return m_vom[offset];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::vom_w)
|
||||
{
|
||||
m_vom[offset] = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(vt240_state::vram_r)
|
||||
{
|
||||
offset = ((offset & 0x30000) >> 1) | (offset & 0x7fff);
|
||||
return m_video_ram[offset & 0xffff];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::vram_w)
|
||||
{
|
||||
offset = ((offset & 0x30000) >> 1) | (offset & 0x7fff);
|
||||
if(BIT(m_reg1, 2))
|
||||
data = m_video_ram[offset];
|
||||
else if(BIT(m_reg0, 4))
|
||||
{
|
||||
data = m_char_buf[m_char_idx++];
|
||||
m_char_idx &= 0xf;
|
||||
offset = BIT(offset, 16) | (offset & 0xfffe);
|
||||
}
|
||||
if(!BIT(m_reg0, 3))
|
||||
data = (data & ~m_mask) | (m_video_ram[offset] & m_mask);
|
||||
m_video_ram[offset & 0xffff] = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::mask_w)
|
||||
{
|
||||
m_mask = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::nvr_store_w)
|
||||
{
|
||||
m_nvram->store(ASSERT_LINE);
|
||||
m_nvram->store(CLEAR_LINE);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::reg0_w)
|
||||
{
|
||||
m_reg0 = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vt240_state::reg1_w)
|
||||
{
|
||||
m_reg1 = data;
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START(bank_map, AS_PROGRAM, 16, vt240_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("maincpu", 0)
|
||||
AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_REGION("maincpu", 0)
|
||||
AM_RANGE(0x80000, 0x87fff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -235,13 +302,21 @@ static ADDRESS_MAP_START( vt240_mem, AS_PROGRAM, 16, vt240_state )
|
||||
AM_RANGE (0170000, 0170037) AM_READWRITE8(mem_map_cs_r, mem_map_cs_w, 0x00ff)
|
||||
AM_RANGE (0170040, 0170041) AM_WRITE8(mem_map_sel_w, 0x00ff)
|
||||
AM_RANGE (0170100, 0170101) AM_READ8(ctrl_r, 0x00ff)
|
||||
AM_RANGE (0170140, 0170141) AM_WRITE8(nvr_store_w, 0x00ff)
|
||||
AM_RANGE (0171000, 0171003) AM_DEVREADWRITE8("i8251", i8251_device, data_r, data_w, 0x00ff)
|
||||
AM_RANGE (0171004, 0171007) AM_DEVREADWRITE8("i8251", i8251_device, status_r, control_w, 0x00ff)
|
||||
AM_RANGE (0172000, 0172077) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0xff)
|
||||
// 0173000 Video logic
|
||||
// 0174000 Video logic
|
||||
AM_RANGE (0172000, 0172077) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff)
|
||||
AM_RANGE (0173000, 0173003) AM_DEVREAD8("upd7220", upd7220_device, read, 0x00ff)
|
||||
AM_RANGE (0173040, 0173077) AM_READ8(vom_r, 0x00ff)
|
||||
AM_RANGE (0173140, 0173141) AM_READ8(char_buf_r, 0x00ff)
|
||||
AM_RANGE (0174000, 0174003) AM_DEVWRITE8("upd7220", upd7220_device, write, 0x00ff)
|
||||
AM_RANGE (0174040, 0174077) AM_WRITE8(vom_w, 0x00ff)
|
||||
AM_RANGE (0174140, 0174141) AM_WRITE8(char_buf_w, 0x00ff)
|
||||
AM_RANGE (0174440, 0174441) AM_WRITE8(mask_w, 0x00ff)
|
||||
AM_RANGE (0174600, 0174601) AM_WRITE8(reg0_w, 0x00ff)
|
||||
AM_RANGE (0174640, 0174641) AM_WRITE8(reg1_w, 0x00ff)
|
||||
AM_RANGE (0175000, 0175005) AM_READWRITE8(i8085_comm_r, i8085_comm_w, 0x00ff)
|
||||
// 0176xxx NVR
|
||||
AM_RANGE (0176000, 0176777) AM_DEVREADWRITE8("x2212", x2212_device, read, write, 0x00ff)
|
||||
// 017700x System comm logic
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -257,18 +332,24 @@ static ADDRESS_MAP_START(vt240_char_io, AS_IO, 8, vt240_state)
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("upd7220", upd7220_device, read, write)
|
||||
AM_RANGE(0x10, 0x1f) AM_READWRITE(vom_r, vom_w)
|
||||
AM_RANGE(0x20, 0x20) AM_READWRITE(t11_comm_r, t11_comm_w)
|
||||
//AM_RANGE(0x30, 0x30) AM_READWRITE(pcg_r,pcg_w) // 0x30 PCG
|
||||
AM_RANGE(0x30, 0x30) AM_READWRITE(char_buf_r, char_buf_w)
|
||||
AM_RANGE(0x90, 0x90) AM_WRITE(mask_w)
|
||||
AM_RANGE(0xc0, 0xc0) AM_WRITE(reg0_w)
|
||||
AM_RANGE(0xd0, 0xd0) AM_WRITE(reg1_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( upd7220_map, AS_0, 16, vt240_state)
|
||||
AM_RANGE(0x00000, 0x0ffff) AM_RAM AM_SHARE("video_ram")
|
||||
AM_RANGE(0x00000, 0x3ffff) AM_READWRITE8(vram_r, vram_w, 0xffff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
void vt240_state::machine_reset()
|
||||
{
|
||||
m_i8251->write_cts(0);
|
||||
m_nvram->recall(ASSERT_LINE);
|
||||
m_nvram->recall(CLEAR_LINE);
|
||||
m_mem_map_sel = 0;
|
||||
}
|
||||
|
||||
@ -296,6 +377,7 @@ static MACHINE_CONFIG_START( vt240, vt240_state )
|
||||
MCFG_CPU_PROGRAM_MAP(vt240_char_mem)
|
||||
MCFG_CPU_IO_MAP(vt240_char_io)
|
||||
MCFG_I8085A_SOD(WRITELINE(vt240_state, i8085_rdy_w))
|
||||
MCFG_I8085A_SID(READLINE(vt240_state, i8085_sid_r))
|
||||
|
||||
MCFG_DEVICE_ADD("bank", ADDRESS_MAP_BANK, 0)
|
||||
MCFG_DEVICE_PROGRAM_MAP(bank_map)
|
||||
@ -308,14 +390,15 @@ static MACHINE_CONFIG_START( vt240, vt240_state )
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MCFG_SCREEN_SIZE(640, 480)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
|
||||
// MCFG_VIDEO_START_OVERRIDE(vt240_state,vt240)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
|
||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", vt240)
|
||||
|
||||
MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_4MHz / 4)
|
||||
MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map)
|
||||
MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(vt240_state, hgdc_draw_text)
|
||||
MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(vt240_state, hgdc_draw)
|
||||
MCFG_UPD7220_VSYNC_CALLBACK(INPUTLINE("charcpu", I8085_RST75_LINE))
|
||||
MCFG_UPD7220_BLANK_CALLBACK(INPUTLINE("charcpu", I8085_RST55_LINE))
|
||||
|
||||
MCFG_MC68681_ADD("duart", XTAL_3_6864MHz) /* 2681 duart (not 68681!) */
|
||||
// MCFG_MC68681_IRQ_CALLBACK(WRITELINE(dectalk_state, dectalk_duart_irq_handler))
|
||||
@ -341,6 +424,8 @@ static MACHINE_CONFIG_START( vt240, vt240_state )
|
||||
MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "null_modem")
|
||||
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("duart", mc68681_device, rx_a_w))
|
||||
// MCFG_RS232_DSR_HANDLER(DEVWRITELINE("duart", mc68681_device, ipX_w))
|
||||
|
||||
MCFG_X2212_ADD("x2212")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( mc7105, vt240 )
|
||||
@ -365,7 +450,7 @@ ROM_START( mc7105 )
|
||||
ROM_LOAD( "027.bin", 0x8000, 0x8000, CRC(a159b412) SHA1(956097ccc2652d494258b3682498cfd3096d7d4f))
|
||||
ROM_LOAD( "028.bin", 0x0000, 0x8000, CRC(b253151f) SHA1(22ffeef8eb5df3c38bfe91266f26d1e7822cdb53))
|
||||
|
||||
ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD16_BYTE( "029.bin", 0x00000, 0x8000, CRC(4a6db217) SHA1(47637325609ea19ffab61fe31e2700d72fa50729))
|
||||
ROM_LOAD16_BYTE( "031.bin", 0x00001, 0x8000, CRC(47129579) SHA1(39de9e2e26f90c5da5e72a09ff361c1a94b9008a))
|
||||
ROM_LOAD16_BYTE( "030.bin", 0x10000, 0x8000, CRC(05fd7b75) SHA1(2ad8c14e76accfa1b9b8748c58e9ebbc28844a47))
|
||||
@ -375,9 +460,10 @@ ROM_END
|
||||
/* ROM definition */
|
||||
ROM_START( vt240 )
|
||||
ROM_REGION( 0x10000, "charcpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "23-008e6-00.e100", 0x0000, 0x8000, CRC(ebc8a2fe) SHA1(70838175f8302fdc0dee79b2403fa95e6d989206))
|
||||
ROM_LOAD( "23-008e6-00.e100", 0x0000, 0x4000, CRC(ebc8a2fe) SHA1(70838175f8302fdc0dee79b2403fa95e6d989206))
|
||||
ROM_CONTINUE(0x8000, 0x4000)
|
||||
|
||||
ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_DEFAULT_BIOS( "vt240" )
|
||||
// according to the schematics an even older set exists, variation 'E1' with roms:
|
||||
// e100/8085: 23-003e6
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user