summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2019-09-20 15:38:24 +0200
committer GitHub <noreply@github.com>2019-09-20 15:38:24 +0200
commit3e6b9f975625c9036157da7f2ea48400b3bfb8ed (patch)
tree18083a39fecf327d72304a06eb42067e5609aae3
parent8ef065629995b607cdac1b1603f202d36ab98150 (diff)
Rewritten Acorn VIDC10 into own device file [Angelo Salese] #5671
* Improved raster effects on games that dynamically change palette on active frame; * Added stereo sound support;
-rw-r--r--hash/archimedes.xml26
-rw-r--r--scripts/src/machine.lua11
-rw-r--r--scripts/target/mame/arcade.lua1
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/devices/machine/acorn_vidc.cpp518
-rw-r--r--src/devices/machine/acorn_vidc.h145
-rw-r--r--src/mame/drivers/aa310.cpp40
-rw-r--r--src/mame/drivers/aristmk5.cpp486
-rw-r--r--src/mame/drivers/ertictac.cpp38
-rw-r--r--src/mame/includes/archimds.h58
-rw-r--r--src/mame/machine/archimds.cpp323
-rw-r--r--src/mame/video/archimds.cpp229
12 files changed, 995 insertions, 881 deletions
diff --git a/hash/archimedes.xml b/hash/archimedes.xml
index cda7bfce63f..db823474f83 100644
--- a/hash/archimedes.xml
+++ b/hash/archimedes.xml
@@ -1638,9 +1638,9 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- boot OK but abuses of raster effects on menus, has trainer -->
- <software name="jksquash" supported="no">
- <description>Jahangir Khan Squash</description>
+ <!-- boot OK, raster effect bug on title screen, long loading screen with black afterwards?, entering player name has stuck keys, has trainer -->
+ <software name="jksquash" supported="partial">
+ <description>Jahangir Khan's World Championship Squash</description>
<year>1991</year>
<publisher>Krisalis</publisher>
<part name="flop1" interface="floppy_3_5">
@@ -1821,7 +1821,7 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- Mouse cursor autocenters too much especially on A5000 class machine, raster effect is off on gameplay screen -->
+ <!-- Mouse cursor autocenters too much especially on A5000 class machine, raster effect bug on gameplay screen -->
<software name="lemmings2" supported="partial">
<description>Lemmings 2: The Tribes</description>
<year>1994</year>
@@ -1853,7 +1853,7 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- boot OK, has raster effect bugs on gameplay -->
+ <!-- boot OK, has raster effect bugs on gameplay (2p is even worse), sometimes inputs forgets being hit -->
<software name="lotustc2" supported="partial">
<description>Lotus Turbo Challenge 2</description>
<year>1992</year>
@@ -1952,7 +1952,7 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- boot OK, incorrectly trips raster effect on top of screen -->
+ <!-- boot OK, raster effect scroll & color bugs during gameplay, has CPU/RAM detection display after title screen -->
<software name="manchutd" supported="partial">
<description>Manchester United Europe</description>
<year>1991</year>
@@ -2044,7 +2044,7 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- boot OK, has raster effect issues -->
+ <!-- boot OK, has raster effect bugs on title/gameplay -->
<software name="nebulus" supported="partial">
<description>Nebulus</description>
<year>1992</year>
@@ -2443,7 +2443,7 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- boot OK but flickers like mad due of incorrect raster effects -->
+ <!-- boot OK but flickers like mad due of incorrect raster effects, also seems very slow with timing on gameplay even on A5000 class machine -->
<software name="rotoros3" cloneof="rotor" supported="no">
<description>Rotor (Patched RiscOS3)</description>
<year>1989</year>
@@ -2565,7 +2565,7 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- boot OK, initial speech pitch sounds very low but it's likely a btanb -->
+ <!-- boot OK, initial speech pitch sounds very low (btanb) -->
<software name="small" supported="yes">
<description>Small</description>
<year>1993</year>
@@ -2954,8 +2954,8 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- boot OK, has incorrectly emulated raster effect when dying with the fan -->
- <software name="wimpgame" supported="partial">
+ <!-- boot OK, has ZX Spectrum like raster effect when dying with the fan -->
+ <software name="wimpgame" supported="yes">
<description>The Wimp Game</description>
<year>1990</year>
<publisher>Fourth Dimension</publisher>
@@ -2967,8 +2967,8 @@ Zelanites: The Onslaught by Micro Power (RiscOS2)
</part>
</software>
- <!-- boot OK, has incorrectly emulated raster effect when dying with the fan -->
- <software name="wimpgamec" cloneof="wimpgame" supported="partial">
+ <!-- boot OK, has ZX Spectrum like raster effect when dying with the fan -->
+ <software name="wimpgamec" cloneof="wimpgame" supported="yes">
<description>The Wimp Game [cracked]</description>
<year>1990</year>
<publisher>Fourth Dimension</publisher>
diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua
index 726d92510c5..96598c3aab8 100644
--- a/scripts/src/machine.lua
+++ b/scripts/src/machine.lua
@@ -4162,3 +4162,14 @@ if (MACHINES["VRENDER0"]~=null) then
}
end
+--------------------------------------------------
+--
+--@src/devices/machine/acorn_vidc.h,MACHINES["ACORN_VIDC10"] = true
+--------------------------------------------------
+
+if (MACHINES["ACORN_VIDC10"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/acorn_vidc.cpp",
+ MAME_DIR .. "src/devices/machine/acorn_vidc.h",
+ }
+end
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index b2119cd29e0..6c746f1b680 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -982,7 +982,6 @@ files {
MAME_DIR .. "src/mame/drivers/aristmk5.cpp",
MAME_DIR .. "src/mame/machine/archimds.cpp",
MAME_DIR .. "src/mame/includes/archimds.h",
- MAME_DIR .. "src/mame/video/archimds.cpp",
}
createMAMEProjects(_target, _subtarget, "adp")
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 3d5462490b7..0e809ed1c3a 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -1347,7 +1347,6 @@ if (_subtarget=="mess") then
createMESSProjects(_target, _subtarget, "mameshared")
files {
MAME_DIR .. "src/mame/machine/archimds.cpp",
- MAME_DIR .. "src/mame/video/archimds.cpp",
MAME_DIR .. "src/mame/machine/amiga.cpp",
MAME_DIR .. "src/mame/video/amiga.cpp",
MAME_DIR .. "src/mame/video/amigaaga.cpp",
diff --git a/src/devices/machine/acorn_vidc.cpp b/src/devices/machine/acorn_vidc.cpp
new file mode 100644
index 00000000000..261ac48fd96
--- /dev/null
+++ b/src/devices/machine/acorn_vidc.cpp
@@ -0,0 +1,518 @@
+// license:LGPL-2.1+
+// copyright-holders:Angelo Salese, R. Belmont, Juergen Buchmueller
+/**********************************************************************************************
+
+ Acorn VIDC10 (VIDeo Controller) device chip
+
+ based off legacy AA VIDC implementation by Angelo Salese, R. Belmont, Juergen Buchmueller
+
+ TODO:
+ - subclass screen_device, derive h/vsync signals out there;
+ - improve timings for raster effects:
+ * nebulus: 20 lines off with aa310;
+ * lotustc2: abuses color flipping;
+ * quazer: needs in-flight DMA;
+ - improve sound DAC writes;
+ - subclass this for VIDC20 emulation (RiscPC);
+ - Are CRTC values correct? VGA modes have a +1 in display line;
+
+**********************************************************************************************/
+
+#include "emu.h"
+#include "acorn_vidc.h"
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// device type definition
+DEFINE_DEVICE_TYPE(ACORN_VIDC10, acorn_vidc10_device, "acorn_vidc10", "Acorn VIDC10")
+DEFINE_DEVICE_TYPE(ACORN_VIDC10_LCD, acorn_vidc10_lcd_device, "acorn_vidc10_lcd", "Acorn VIDC10 with LCD monitor")
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// acorn_vidc10_device - constructor
+//-------------------------------------------------
+
+void acorn_vidc10_device::regs_map(address_map &map)
+{
+ map(0x00, 0x3f).w(FUNC(acorn_vidc10_device::pal_data_display_w));
+ map(0x40, 0x4f).w(FUNC(acorn_vidc10_device::pal_data_cursor_w));
+ map(0x60, 0x7f).w(FUNC(acorn_vidc10_device::stereo_image_w));
+ map(0x80, 0xbf).w(FUNC(acorn_vidc10_device::crtc_w));
+ map(0xc0, 0xc3).w(FUNC(acorn_vidc10_device::sound_frequency_w));
+ map(0xe0, 0xe3).w(FUNC(acorn_vidc10_device::control_w));
+}
+
+
+acorn_vidc10_device::acorn_vidc10_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, type, tag, owner, clock)
+ , device_memory_interface(mconfig, *this)
+ , device_video_interface(mconfig, *this)
+ , m_screen(*this, "screen")
+ , m_space_config("regs_space", ENDIANNESS_LITTLE, 32, 8, 0, address_map_constructor(FUNC(acorn_vidc10_device::regs_map), this))
+ , m_palette(*this, "palette")
+ , m_lspeaker(*this, "lspeaker")
+ , m_rspeaker(*this, "rspeaker")
+ , m_dac(*this, "dac%u", 0)
+ , m_vblank_cb(*this)
+ , m_sound_drq_cb(*this)
+{
+}
+
+acorn_vidc10_device::acorn_vidc10_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : acorn_vidc10_device(mconfig, ACORN_VIDC10, tag, owner, clock)
+{
+}
+
+
+acorn_vidc10_lcd_device::acorn_vidc10_lcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : acorn_vidc10_device(mconfig, ACORN_VIDC10_LCD, tag, owner, clock)
+{
+}
+
+device_memory_interface::space_config_vector acorn_vidc10_device::memory_space_config() const
+{
+ return space_config_vector {
+ std::make_pair(AS_IO, &m_space_config)
+ };
+}
+
+
+//-------------------------------------------------
+// device_add_mconfig - device-specific machine
+// configuration addiitons
+//-------------------------------------------------
+
+void acorn_vidc10_device::device_add_mconfig(machine_config &config)
+{
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(XTAL(16'000'000), 1024,0,735, 624/2,0,292); // RiscOS 3 default screen settings
+ m_screen->set_screen_update(FUNC(acorn_vidc10_device::screen_update));
+// m_screen->screen_vblank().set(FUNC(acorn_vidc10_device::screen_vblank));
+
+ // 8bpp + 1/2/4bpp + 2bpp for cursor
+ PALETTE(config, m_palette, palette_device::BLACK).set_entries(0x100+0x10+4);
+
+ SPEAKER(config, m_lspeaker).front_left();
+ SPEAKER(config, m_rspeaker).front_right();
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ for (int i = 0; i < m_sound_max_channels; i++)
+ {
+ // custom DAC
+ DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac[i], 0).add_route(0, m_lspeaker, m_sound_input_gain).add_route(0, m_rspeaker, m_sound_input_gain);
+ vref.add_route(0, m_dac[i], 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, m_dac[i], -1.0, DAC_VREF_NEG_INPUT);
+ }
+}
+
+void acorn_vidc10_lcd_device::device_add_mconfig(machine_config &config)
+{
+ acorn_vidc10_device::device_add_mconfig(config);
+ m_screen->set_type(SCREEN_TYPE_LCD);
+ // TODO: verify !Configure with automatic type detection, there must be an ID telling this is a LCD machine.
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void acorn_vidc10_device::device_start()
+{
+ m_vblank_cb.resolve_safe();
+ m_sound_drq_cb.resolve_safe();
+
+ save_item(NAME(m_bpp_mode));
+ save_item(NAME(m_crtc_interlace));
+ save_item(NAME(m_pixel_clock));
+ save_item(NAME(m_sound_frequency_latch));
+ save_item(NAME(m_sound_frequency_test_bit));
+ save_item(NAME(m_cursor_enable));
+ save_pointer(NAME(m_crtc_regs), CRTC_VCER+1);
+ m_data_vram = auto_alloc_array_clear(machine(), u8, m_data_vram_size);
+ m_cursor_vram = auto_alloc_array_clear(machine(), u8, m_cursor_vram_size);
+ save_pointer(NAME(m_data_vram), m_data_vram_size);
+ save_pointer(NAME(m_cursor_vram), m_cursor_vram_size);
+ save_pointer(NAME(m_stereo_image), m_sound_max_channels);
+
+ m_video_timer = timer_alloc(TIMER_VIDEO);
+ m_sound_timer = timer_alloc(TIMER_SOUND);
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void acorn_vidc10_device::device_reset()
+{
+ m_cursor_enable = false;
+ memset(m_data_vram, 0, m_data_vram_size);
+ memset(m_cursor_vram, 0, m_cursor_vram_size);
+ memset(m_stereo_image, 4, m_sound_max_channels);
+ for (int ch=0;ch<m_sound_max_channels;ch++)
+ refresh_stereo_image(ch);
+ m_video_timer->adjust(attotime::never);
+ m_sound_timer->adjust(attotime::never);
+}
+
+//-------------------------------------------------
+// device_timer - device-specific timer
+//-------------------------------------------------
+
+void acorn_vidc10_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+ case TIMER_VIDEO:
+ m_vblank_cb(ASSERT_LINE);
+ screen_vblank_line_update();
+ break;
+ case TIMER_SOUND:
+ m_sound_drq_cb(ASSERT_LINE);
+ break;
+ }
+}
+
+//**************************************************************************
+// CRTC section
+//**************************************************************************
+
+inline void acorn_vidc10_device::screen_vblank_line_update()
+{
+ int vline = (m_crtc_regs[CRTC_VDER]) * (m_crtc_interlace + 1);
+ m_video_timer->adjust((vline > 2) ? m_screen->time_until_pos(vline) : attotime::never);
+}
+
+void acorn_vidc10_device::screen_dynamic_res_change()
+{
+ const int32_t pixel_rate[4] = { 8000000, 12000000, 16000000, 24000000};
+
+ // sanity checks
+ if (m_crtc_regs[CRTC_HCR] <= 1 || m_crtc_regs[CRTC_VCR] <= 1)
+ return;
+
+ if (m_crtc_regs[CRTC_HBER] <= 1 || m_crtc_regs[CRTC_VBER] <= 1)
+ return;
+
+ // total cycles >= border end >= border start
+ if (m_crtc_regs[CRTC_HCR] < m_crtc_regs[CRTC_HBER])
+ return;
+
+ if (m_crtc_regs[CRTC_HBER] < m_crtc_regs[CRTC_HBSR])
+ return;
+
+ if (m_crtc_regs[CRTC_VBER] < m_crtc_regs[CRTC_VBSR])
+ return;
+
+ rectangle const visarea(
+ 0, m_crtc_regs[CRTC_HBER] - m_crtc_regs[CRTC_HBSR] - 1,
+ 0, (m_crtc_regs[CRTC_VBER] - m_crtc_regs[CRTC_VBSR]) * (m_crtc_interlace + 1));
+
+#if 0
+ // TODO: move to debugger custom command
+ const int m_vidc_vblank_time = m_crtc_regs[CRTC_VDER] * (m_crtc_interlace+1);
+ printf("Configuring: htotal %d vtotal %d border %d x %d display origin %d x %d vblank = %d\n",
+ m_crtc_regs[CRTC_HCR], m_crtc_regs[CRTC_VCR],
+ visarea.right(), visarea.bottom(),
+ m_crtc_regs[CRTC_HDER]-m_crtc_regs[CRTC_HDSR],m_crtc_regs[CRTC_VDER]-m_crtc_regs[CRTC_VDSR]+1,
+ m_vidc_vblank_time);
+#endif
+
+ attoseconds_t const refresh = HZ_TO_ATTOSECONDS(pixel_rate[m_pixel_clock]) * m_crtc_regs[CRTC_HCR] * m_crtc_regs[CRTC_VCR];
+
+ m_screen->configure(m_crtc_regs[CRTC_HCR], m_crtc_regs[CRTC_VCR] * (m_crtc_interlace+1), visarea, refresh);
+}
+
+//**************************************************************************
+// READ/WRITE HANDLERS
+//**************************************************************************
+
+WRITE32_MEMBER( acorn_vidc10_device::write )
+{
+ // TODO: check against mem_mask not 32-bit wide
+ uint8_t reg = data >> 24;
+ uint32_t val = data & 0xffffff;
+
+ this->space(AS_IO).write_dword(reg, val);
+}
+
+inline void acorn_vidc10_device::update_4bpp_palette(uint16_t index, uint32_t paldata)
+{
+ int r,g,b;
+
+ // TODO: for TV Tuner we need to output this, also check if cursor mode actually sets this up for offset = 0
+// i = (paldata & 0x1000) >> 12; //supremacy bit
+ b = (paldata & 0x0f00) >> 8;
+ g = (paldata & 0x00f0) >> 4;
+ r = (paldata & 0x000f) >> 0;
+
+ m_palette->set_pen_color(index, pal4bit(r), pal4bit(g), pal4bit(b) );
+ m_screen->update_partial(m_screen->vpos());
+}
+
+WRITE32_MEMBER( acorn_vidc10_device::pal_data_display_w )
+{
+ update_4bpp_palette(offset+0x100, data);
+ //printf("%02x: %01x %01x %01x [%d]\n",offset,r,g,b,m_screen->vpos());
+
+ // 8bpp
+ for(int idx=0;idx<0x100;idx+=0x10)
+ {
+ int b = ((data & 0x700) >> 8) | ((idx & 0x80) >> 4);
+ int g = ((data & 0x030) >> 4) | ((idx & 0x60) >> 3);
+ int r = ((data & 0x007) >> 0) | ((idx & 0x10) >> 1);
+
+ m_palette->set_pen_color(offset + idx, pal4bit(r), pal4bit(g), pal4bit(b) );
+ }
+}
+
+WRITE32_MEMBER( acorn_vidc10_device::pal_data_cursor_w )
+{
+ update_4bpp_palette(offset+0x110, data);
+}
+
+WRITE32_MEMBER( acorn_vidc10_device::control_w )
+{
+ // TODO: not sure what the commented out bits do
+ m_pixel_clock = (data & 0x03);
+ m_bpp_mode = ((data & 0x0c) >> 2);
+ //m_dma_request_mode = ((data & 0x30) >> 4);
+ m_crtc_interlace = ((data & 0x40) >> 6);
+ //m_composite_sync = BIT(data, 7);
+ //m_test_mode = (data & 0xc100) != 0xc100;
+
+ //todo: vga/svga modes sets 0x1000?
+ screen_vblank_line_update();
+ screen_dynamic_res_change();
+}
+
+WRITE32_MEMBER( acorn_vidc10_device::crtc_w )
+{
+ switch(offset)
+ {
+ case CRTC_HCR: m_crtc_regs[CRTC_HCR] = ((data >> 14)<<1)+2; break;
+// case CRTC_HSWR: m_crtc_regs[CRTC_HSWR] = (data >> 14)+1; break;
+ case CRTC_HBSR: m_crtc_regs[CRTC_HBSR] = ((data >> 14)<<1)+1; break;
+ case CRTC_HDSR: m_crtc_regs[CRTC_HDSR] = (data >> 14); break;
+ case CRTC_HDER: m_crtc_regs[CRTC_HDER] = (data >> 14); break;
+ case CRTC_HBER: m_crtc_regs[CRTC_HBER] = ((data >> 14)<<1)+1; break;
+ case CRTC_HCSR: m_crtc_regs[CRTC_HCSR] = ((data >> 13) & 0x7ff) + 6; return;
+// case CRTC_HIR: // ...
+
+ case CRTC_VCR: m_crtc_regs[CRTC_VCR] = (data >> 14)+1; break;
+ case CRTC_VSWR: m_crtc_regs[CRTC_VSWR] = (data >> 14)+1; break;
+ case CRTC_VBSR:
+ m_crtc_regs[CRTC_VBSR] = (data >> 14)+1;
+ break;
+ case CRTC_VDSR:
+ m_crtc_regs[CRTC_VDSR] = (data >> 14)+1;
+ break;
+ case CRTC_VDER:
+ m_crtc_regs[CRTC_VDER] = (data >> 14)+1;
+ screen_vblank_line_update();
+ break;
+ case CRTC_VBER:
+ m_crtc_regs[CRTC_VBER] = (data >> 14)+1;
+ break;
+ case CRTC_VCSR: m_crtc_regs[CRTC_VCSR] = ((data >> 14) & 0x3ff) + 1; return;
+ case CRTC_VCER: m_crtc_regs[CRTC_VCER] = ((data >> 14) & 0x3ff) + 1; return;
+ }
+
+ screen_dynamic_res_change();
+}
+
+inline void acorn_vidc10_device::refresh_stereo_image(uint8_t channel)
+{
+ /*
+ -111 full right
+ -110 83% right, 17% left
+ -101 67% right, 33% left
+ -100 center
+ -011 67% left, 33% right
+ -010 83% left, 17% right
+ -001 full left
+ -000 "undefined" TODO: verify what it actually means
+ */
+ const float left_gain[8] = { 1.0, 2.0, 1.66, 1.34, 1.0, 0.66, 0.34, 0.0 };
+ const float right_gain[8] = { 1.0, 0.0, 0.34, 0.66, 1.0, 1.34, 1.66, 2.0 };
+
+ m_lspeaker->set_input_gain(channel,left_gain[m_stereo_image[channel]]*m_sound_input_gain);
+ m_rspeaker->set_input_gain(channel,right_gain[m_stereo_image[channel]]*m_sound_input_gain);
+ //printf("%d %f %f\n",channel,m_lspeaker->input_gain(channel),m_rspeaker->input_gain(channel));
+}
+
+
+WRITE32_MEMBER( acorn_vidc10_device::stereo_image_w )
+{
+ uint8_t channel = (offset + 7) & 0x7;
+ m_stereo_image[channel] = data & 0x7;
+ refresh_stereo_image(channel);
+}
+
+WRITE32_MEMBER( acorn_vidc10_device::sound_frequency_w )
+{
+ m_sound_frequency_test_bit = BIT(data, 8);
+ m_sound_frequency_latch = data & 0xff;
+ if (m_sound_mode == true)
+ refresh_sound_frequency();
+}
+
+//**************************************************************************
+// MEMC comms
+//**************************************************************************
+
+void acorn_vidc10_device::write_dac(uint8_t channel, uint8_t data)
+{
+ uint8_t ulaw_comp;
+ int16_t res;
+ const int16_t mulawTable[256] =
+ {
+ -32124,-31100,-30076,-29052,-28028,-27004,-25980,-24956,
+ -23932,-22908,-21884,-20860,-19836,-18812,-17788,-16764,
+ -15996,-15484,-14972,-14460,-13948,-13436,-12924,-12412,
+ -11900,-11388,-10876,-10364, -9852, -9340, -8828, -8316,
+ -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140,
+ -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092,
+ -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004,
+ -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980,
+ -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436,
+ -1372, -1308, -1244, -1180, -1116, -1052, -988, -924,
+ -876, -844, -812, -780, -748, -716, -684, -652,
+ -620, -588, -556, -524, -492, -460, -428, -396,
+ -372, -356, -340, -324, -308, -292, -276, -260,
+ -244, -228, -212, -196, -180, -164, -148, -132,
+ -120, -112, -104, -96, -88, -80, -72, -64,
+ -56, -48, -40, -32, -24, -16, -8, -1,
+ 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956,
+ 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764,
+ 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412,
+ 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316,
+ 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140,
+ 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092,
+ 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004,
+ 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980,
+ 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436,
+ 1372, 1308, 1244, 1180, 1116, 1052, 988, 924,
+ 876, 844, 812, 780, 748, 716, 684, 652,
+ 620, 588, 556, 524, 492, 460, 428, 396,
+ 372, 356, 340, 324, 308, 292, 276, 260,
+ 244, 228, 212, 196, 180, 164, 148, 132,
+ 120, 112, 104, 96, 88, 80, 72, 64,
+ 56, 48, 40, 32, 24, 16, 8, 0
+ };
+
+ uint8_t ulaw_temp = data ^ 0xff;
+ ulaw_comp = (ulaw_temp>>1) | ((ulaw_temp&1)<<7);
+ res = mulawTable[ulaw_comp];
+ m_dac[channel & 7]->write(res);
+}
+
+void acorn_vidc10_device::refresh_sound_frequency()
+{
+ // TODO: check against test bit (reloads sound frequency if 0)
+ if (m_sound_mode == true)
+ {
+ // TODO: Range is between 3 and 256 usecs
+ double sndhz = 1e6 / ((m_sound_frequency_latch & 0xff) + 2);
+ sndhz /= 8.0;
+ m_sound_timer->adjust(attotime::zero, 0, attotime::from_hz(sndhz));
+ //printf("VIDC: audio DMA start, sound freq %d, sndhz = %f\n", (m_crtc_regs[0xc0] & 0xff)-2, sndhz);
+ }
+ else
+ m_sound_timer->adjust(attotime::never);
+}
+
+//**************************************************************************
+// Screen Update / VBlank / HBlank
+//**************************************************************************
+
+void acorn_vidc10_device::draw(bitmap_rgb32 &bitmap, const rectangle &cliprect, u8 *vram, uint8_t bpp, int xstart, int ystart, int xsize, int ysize, bool is_cursor)
+{
+ const u16 pen_base = (bpp == 3 ? 0 : 0x100) + (is_cursor == true ? 0x10 : 0);
+ const u16 pen_masks[4] = { 1, 3, 0xf, 0xff };
+ const u16 pen_mask = pen_masks[bpp];
+ const u16 xchar_size = 1 << (3 - bpp);
+ const u8 pen_byte_sizes[4] = { 1, 2, 4, 1 };
+ const u16 pen_byte_size = pen_byte_sizes[bpp];
+ const int raster_ystart = std::max(0, cliprect.min_y-ystart);
+ xsize >>= 3-bpp;
+
+ //printf("%d %d %d %d\n",ystart, ysize, cliprect.min_y, cliprect.max_y);
+
+ for (int srcy = raster_ystart; srcy<ysize; srcy++)
+ {
+ int dsty = (srcy + ystart)*(m_crtc_interlace+1);
+ for (int srcx = 0; srcx<xsize; srcx++)
+ {
+ u8 pen = vram[srcx + srcy * xsize];
+ int dstx = (srcx*xchar_size) + xstart;
+
+ for (int xi=0;xi<xchar_size;xi++)
+ {
+ u16 dot = ((pen>>(xi*pen_byte_size)) & pen_mask);
+ if (is_cursor == true && dot == 0)
+ continue;
+ dot += pen_base;
+ bitmap.pix32(dsty, dstx+xi) = m_palette->pen(dot);
+ if (m_crtc_interlace)
+ bitmap.pix32(dsty+1, dstx+xi) = m_palette->pen(dot);
+ }
+ }
+ }
+}
+
+u32 acorn_vidc10_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ int xstart,ystart,xend,yend;
+ int xsize,ysize;
+ int calc_dxs = 0,calc_dxe = 0;
+ const uint8_t x_step[4] = { 19, 11, 7, 5 };
+
+ /* border color */
+ bitmap.fill(m_palette->pen(0x110), cliprect);
+
+ /* define X display area through BPP mode register */
+ calc_dxs = (m_crtc_regs[CRTC_HDSR]*2)+x_step[m_bpp_mode & 3];
+ calc_dxe = (m_crtc_regs[CRTC_HDER]*2)+x_step[m_bpp_mode & 3];
+
+ /* now calculate display clip rectangle start/end areas */
+ xstart = (calc_dxs)-m_crtc_regs[CRTC_HBSR];
+ ystart = (m_crtc_regs[CRTC_VDSR]-m_crtc_regs[CRTC_VBSR]);
+ xend = (calc_dxe)+xstart;
+ yend = (m_crtc_regs[CRTC_VDER] * (m_crtc_interlace+1))+ystart;
+
+ /* disable the screen if display params are invalid */
+ if(xstart > xend || ystart > yend)
+ return 0;
+
+ xsize = calc_dxe-calc_dxs;
+ ysize = m_crtc_regs[CRTC_VDER]-m_crtc_regs[CRTC_VDSR];
+
+ if (xsize <= 0 || ysize <= 0)
+ return 0;
+
+ draw(bitmap, cliprect, m_data_vram, m_bpp_mode, xstart, ystart, xsize, ysize, false);
+ if (m_cursor_enable == true)
+ {
+ xstart = m_crtc_regs[CRTC_HCSR] - m_crtc_regs[CRTC_HBSR];
+ ystart = m_crtc_regs[CRTC_VCSR] - m_crtc_regs[CRTC_VBSR];
+ xsize = 32;
+ ysize = m_crtc_regs[CRTC_VCER] - m_crtc_regs[CRTC_VCSR];
+ if (ysize > 0)
+ draw(bitmap, cliprect, m_cursor_vram, 1, xstart, ystart, xsize, ysize, true);
+ }
+
+ return 0;
+}
+
+READ_LINE_MEMBER(acorn_vidc10_device::flyback_r )
+{
+ int vert_pos = m_screen->vpos();
+ bool flyback = (vert_pos <= m_crtc_regs[CRTC_VDSR] || vert_pos >= m_crtc_regs[CRTC_VDER]);
+ return flyback;
+}
diff --git a/src/devices/machine/acorn_vidc.h b/src/devices/machine/acorn_vidc.h
new file mode 100644
index 00000000000..ca4f4d07bcc
--- /dev/null
+++ b/src/devices/machine/acorn_vidc.h
@@ -0,0 +1,145 @@
+// license:LGPL-2.1+
+// copyright-holders:Angelo Salese, R. Belmont, Juergen Buchmueller
+/***************************************************************************
+
+ Acorn VIDC10 (VIDeo Controller) device chip
+
+***************************************************************************/
+
+#ifndef MAME_MACHINE_ACORN_VIDC_H
+#define MAME_MACHINE_ACORN_VIDC_H
+
+#pragma once
+
+#include "screen.h"
+#include "speaker.h"
+#include "emupal.h"
+#include "sound/dac.h"
+#include "sound/volt_reg.h"
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> acorn_vidc10_device
+
+class acorn_vidc10_device : public device_t,
+ public device_memory_interface,
+ public device_video_interface
+{
+public:
+ // construction/destruction
+ acorn_vidc10_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // I/O operations
+ DECLARE_WRITE32_MEMBER( write );
+ DECLARE_READ_LINE_MEMBER( flyback_r );
+ auto vblank() { return m_vblank_cb.bind(); }
+ auto sound_drq() { return m_sound_drq_cb.bind(); }
+ // MEMC comms
+ void write_vram(uint32_t offset, uint8_t data) { m_data_vram[offset & (m_data_vram_mask)] = data; }
+ void write_cram(uint32_t offset, uint8_t data) { m_cursor_vram[offset & (m_cursor_vram_mask)] = data; }
+ void write_dac(uint8_t channel, uint8_t data);
+ void clear_dac(uint8_t channel) { m_dac[channel & 7]->write(0); }
+ void update_sound_mode(bool state) { m_sound_mode = state; refresh_sound_frequency(); }
+ void set_cursor_enable(bool state) { m_cursor_enable = state; }
+ uint32_t get_cursor_size() { return (m_crtc_regs[CRTC_VCER] - m_crtc_regs[CRTC_VCSR]) * (32/4); }
+
+protected:
+ acorn_vidc10_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+ // device-level overrides
+ //virtual void device_validity_check(validity_checker &valid) const override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+ virtual space_config_vector memory_space_config() const override;
+ u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ required_device<screen_device> m_screen;
+
+private:
+ const address_space_config m_space_config;
+
+ void regs_map(address_map &map);
+
+ required_device<palette_device> m_palette;
+ required_device<speaker_device> m_lspeaker;
+ required_device<speaker_device> m_rspeaker;
+ required_device_array<dac_16bit_r2r_twos_complement_device, 8> m_dac;
+ devcb_write_line m_vblank_cb;
+ devcb_write_line m_sound_drq_cb;
+
+ DECLARE_WRITE32_MEMBER( pal_data_display_w );
+ DECLARE_WRITE32_MEMBER( pal_data_cursor_w );
+ DECLARE_WRITE32_MEMBER( stereo_image_w );
+ DECLARE_WRITE32_MEMBER( crtc_w );
+ DECLARE_WRITE32_MEMBER( sound_frequency_w );
+ DECLARE_WRITE32_MEMBER( control_w );
+
+ uint8_t m_pixel_clock, m_bpp_mode, m_crtc_interlace;
+ //bool m_flyback;
+ enum {
+ TIMER_VIDEO = 1,
+ TIMER_SOUND = 2
+ };
+ emu_timer *m_video_timer;
+ emu_timer *m_sound_timer;
+
+ inline void screen_vblank_line_update();
+ void screen_dynamic_res_change();
+
+ enum {
+ CRTC_HCR = 0, CRTC_HSWR, CRTC_HBSR, CRTC_HDSR, CRTC_HDER, CRTC_HBER, CRTC_HCSR, CRTC_HIR,
+ CRTC_VCR, CRTC_VSWR, CRTC_VBSR, CRTC_VDSR, CRTC_VDER, CRTC_VBER, CRTC_VCSR, CRTC_VCER
+ };
+ uint32_t m_crtc_regs[16];
+ u8 *m_data_vram;
+ u8 *m_cursor_vram;
+ // TODO: correct data vram size
+ const u32 m_data_vram_mask = 0x1fffff;
+ const u32 m_cursor_vram_mask = 0x7fff;
+ const u32 m_data_vram_size = m_data_vram_mask+1;
+ const u32 m_cursor_vram_size = m_cursor_vram_mask+1;
+ bool m_cursor_enable;
+ void draw(bitmap_rgb32 &bitmap, const rectangle &cliprect, u8 *vram, uint8_t bpp, int xstart, int ystart, int xsize, int ysize, bool is_cursor);
+ inline void update_4bpp_palette(uint16_t index, uint32_t paldata);
+
+ u8 m_sound_frequency_latch;
+ bool m_sound_frequency_test_bit;
+ bool m_sound_mode;
+ u8 m_stereo_image[8];
+ const float m_sound_input_gain = 0.05;
+ const int m_sound_max_channels = 8;
+ void refresh_sound_frequency();
+ inline void refresh_stereo_image(uint8_t channel);
+};
+
+class acorn_vidc10_lcd_device : public acorn_vidc10_device
+{
+public:
+ // construction/destruction
+ acorn_vidc10_lcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+};
+
+// device type definition
+DECLARE_DEVICE_TYPE(ACORN_VIDC10, acorn_vidc10_device)
+DECLARE_DEVICE_TYPE(ACORN_VIDC10_LCD, acorn_vidc10_lcd_device)
+
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+
+#endif // MAME_MACHINE_ACORN_VIDC10_H
diff --git a/src/mame/drivers/aa310.cpp b/src/mame/drivers/aa310.cpp
index b9f66bcaf2c..22e52c76b56 100644
--- a/src/mame/drivers/aa310.cpp
+++ b/src/mame/drivers/aa310.cpp
@@ -198,7 +198,7 @@ void aa310_state::aa310_mem(address_map &map)
map(0x00000000, 0x01ffffff).rw(FUNC(aa310_state::archimedes_memc_logical_r), FUNC(aa310_state::archimedes_memc_logical_w));
map(0x02000000, 0x02ffffff).ram().share("physicalram"); /* physical RAM - 16 MB for now, should be 512k for the A310 */
map(0x03000000, 0x033fffff).rw(FUNC(aa310_state::archimedes_ioc_r), FUNC(aa310_state::archimedes_ioc_w));
- map(0x03400000, 0x035fffff).rom().region("extension", 0x000000).w(FUNC(aa310_state::archimedes_vidc_w));
+ map(0x03400000, 0x035fffff).rom().region("extension", 0x000000).w(m_vidc, FUNC(acorn_vidc10_device::write));
map(0x03600000, 0x037fffff).rom().region("extension", 0x200000).w(FUNC(aa310_state::archimedes_memc_w));
map(0x03800000, 0x03ffffff).rom().region("maincpu", 0).w(FUNC(aa310_state::archimedes_memc_page_w));
}
@@ -428,12 +428,9 @@ void aa310_state::aa310(machine_config &config)
I2CMEM(config, "i2cmem", 0).set_data_size(0x100);
- /* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(16_MHz_XTAL, 1024, 0, 735, 624/2, 0, 292); // RiscOS 3 default screen settings
- m_screen->set_screen_update(FUNC(archimedes_state::screen_update));
-
- PALETTE(config, m_palette).set_entries(32768);
+ ACORN_VIDC10(config, m_vidc, 0);
+ m_vidc->vblank().set(FUNC(aa310_state::vblank_irq));
+ m_vidc->sound_drq().set(FUNC(aa310_state::sound_drq));
RAM(config, m_ram).set_default_size("1M");
@@ -448,21 +445,6 @@ void aa310_state::aa310(machine_config &config)
SOFTWARE_LIST(config, "flop_list").set_original("archimedes");
- SPEAKER(config, "speaker").front_center();
- for (int i = 0; i < 8; i++)
- {
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac[i], 0).add_route(0, "speaker", 0.1); // unknown DAC
- }
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac3", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac4", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac4", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac5", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac5", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac6", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac6", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac7", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac7", -1.0, DAC_VREF_NEG_INPUT);
-
/* Expansion slots - 2-card backplane */
}
@@ -546,7 +528,9 @@ void aa310_state::aa4(machine_config &config)
m_maincpu->set_clock(24_MHz_XTAL); // ARM3
/* video hardware */
- m_screen->set_type(SCREEN_TYPE_LCD);
+ ACORN_VIDC10_LCD(config.replace(), m_vidc, 0);
+ m_vidc->vblank().set(FUNC(aa310_state::vblank_irq));
+ m_vidc->sound_drq().set(FUNC(aa310_state::sound_drq));
/* 765 FDC */
@@ -619,7 +603,7 @@ ROM_START( aa305 )
ROMX_LOAD( "0276,148-01.ic26", 0x000002, 0x10000, CRC(1ab02f2d) SHA1(dd7d216967524e64d1a03076a6081461ec8528c3), ROM_BIOS(8) | ROM_SKIP(3) )
ROMX_LOAD( "0276,149-01.ic27", 0x000003, 0x10000, CRC(5fd6a406) SHA1(790af8a4c74d0f6714d528f7502443ce5898a618), ROM_BIOS(8) | ROM_SKIP(3) )
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x400000, "extension", ROMREGION_ERASE00 )
ROM_REGION( 0x100, "i2cmem", ROMREGION_ERASE00 )
@@ -663,7 +647,7 @@ ROM_START( aa3000 )
ROM_SYSTEM_BIOS( 5, "319", "RISC OS 3.19 (09 Jun 1993)" ) // Parts 0296,241-01, 0296,242-01, 0296,243-01, 0296,244-01,
ROMX_LOAD( "riscos319.bin", 0x000000, 0x200000, CRC(00c7a3d3) SHA1(be7a8cba5d6c6c0e1c4838712524056cf4b8c8cb), ROM_BIOS(5) )
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x400000, "extension", ROMREGION_ERASE00 )
ROM_REGION( 0x100, "i2cmem", ROMREGION_ERASE00 )
@@ -700,7 +684,7 @@ ROM_START( aa5000 )
ROM_SYSTEM_BIOS( 3, "319", "RISC OS 3.19 (09 Jun 1993)" ) // Parts 0296,241-01, 0296,242-01, 0296,243-01, 0296,244-01,
ROMX_LOAD( "riscos319.bin", 0x000000, 0x200000, CRC(00c7a3d3) SHA1(be7a8cba5d6c6c0e1c4838712524056cf4b8c8cb), ROM_BIOS(3) )
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x400000, "extension", ROMREGION_ERASE00 )
ROM_REGION( 0x100, "i2cmem", ROMREGION_ERASE00 )
@@ -714,7 +698,7 @@ ROM_START( aa4 )
ROM_LOAD32_WORD( "0296,061-01.ic4", 0x000000, 0x100000, CRC(b77fe215) SHA1(57b19ea4b97a9b6a240aa61211c2c134cb295aa0) )
ROM_LOAD32_WORD( "0296,062-01.ic15", 0x000002, 0x100000, CRC(d42e196e) SHA1(64243d39d1bca38b10761f66a8042c883bde87a4) )
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x400000, "extension", ROMREGION_ERASE00 )
/* Power Management */
ROM_LOAD32_BYTE( "0296,063-01.ic38", 0x000003, 0x010000, CRC(9ca3a6be) SHA1(75905b031f49960605d55c3e7350d309559ed440) )
@@ -728,7 +712,7 @@ ROM_START( aa3010 )
ROM_LOAD32_WORD( "0296,061-02.ic17", 0x000000, 0x100000, CRC(552fc3aa) SHA1(b2f1911e53d7377f2e69e1a870139745d3df494b) )
ROM_LOAD32_WORD( "0296,062-02.ic18", 0x000002, 0x100000, CRC(308d5a4a) SHA1(b309e1dd85670a06d77ec504dbbec6c42336329f) )
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x400000, "extension", ROMREGION_ERASE00 )
ROM_REGION( 0x100, "i2cmem", ROMREGION_ERASE00 )
diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp
index 95aec608b5b..1c1b03173b4 100644
--- a/src/mame/drivers/aristmk5.cpp
+++ b/src/mame/drivers/aristmk5.cpp
@@ -590,8 +590,6 @@
#include "machine/nvram.h"
#include "machine/ins8250.h"
#include "machine/ticket.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
// Non-US button layouts Bet buttons Lines Gamble Other
#include "aristmk5.lh" // 1, 2, 3, 5, 10 20 suits Take Win/Start Feature
@@ -1155,7 +1153,7 @@ void aristmk5_state::aristmk5_map(address_map &map)
map(0x03320000, 0x0333ffff).rw(FUNC(aristmk5_state::sram_r), FUNC(aristmk5_state::sram_w)).umask32(0x000000ff);
- map(0x03400000, 0x035fffff).w(FUNC(aristmk5_state::archimedes_vidc_w));
+ map(0x03400000, 0x035fffff).w(m_vidc, FUNC(acorn_vidc10_device::write));
map(0x03600000, 0x037fffff).w(FUNC(aristmk5_state::archimedes_memc_w));
map(0x03800000, 0x039fffff).w(FUNC(aristmk5_state::archimedes_memc_page_w));
@@ -2294,14 +2292,9 @@ void aristmk5_state::aristmk5(machine_config &config)
/* TODO: this isn't supposed to access a keyboard ... */
AAKART(config, m_kart, 12000000/128); // TODO: frequency
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- m_screen->set_size(640, 400);
- m_screen->set_visarea(0, 640-1, 0, 400-1);
- m_screen->set_screen_update(FUNC(archimedes_state::screen_update));
-
- PALETTE(config, m_palette).set_entries(0x200);
+ ACORN_VIDC10(config, m_vidc, 0);
+ m_vidc->vblank().set(FUNC(aristmk5_state::vblank_irq));
+ m_vidc->sound_drq().set(FUNC(aristmk5_state::sound_drq));
EEPROM_93C56_16BIT(config, m_eeprom[0]);
EEPROM_93C56_16BIT(config, m_eeprom[1]);
@@ -2337,21 +2330,6 @@ void aristmk5_state::aristmk5(machine_config &config)
DS1302(config, m_rtc, 32.768_kHz_XTAL);
HOPPER(config, m_hopper, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
-
- SPEAKER(config, "speaker").front_center();
- for (int i = 0; i < 8; i++)
- {
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac[i], 0).add_route(0, "speaker", 0.1); // unknown DAC
- }
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac3", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac4", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac4", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac5", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac5", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac6", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac6", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac7", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac7", -1.0, DAC_VREF_NEG_INPUT);
}
@@ -2422,7 +2400,7 @@ ROM_START( aristmk5 )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2448,7 +2426,7 @@ ROM_START( adonis )
ROM_LOAD32_WORD( "0200751v.u12", 0x100002, 0x80000, CRC(443a7b6d) SHA1(c19a1c50fb8774826a1e12adacba8bbfce320891) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2473,7 +2451,7 @@ ROM_START( adonisa )
ROM_LOAD32_WORD( "0100751v.u12", 0x100002, 0x80000, CRC(77090858) SHA1(76ebc15b26f378ac95276f0aa26d077e3646a6f1) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2500,7 +2478,7 @@ ROM_START( adonisu )
ROM_LOAD32_WORD( "bhg1508.u12", 0x100002, 0x80000, CRC(b8995b25) SHA1(ad39ad11dc02dbbe8be99d81c96e9fc3191726ad) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2528,7 +2506,7 @@ ROM_START( adonisce )
ROM_LOAD32_WORD( "0201005v.u13", 0x200002, 0x80000, CRC(e005a7e8) SHA1(cbb313f5d1d04c5a441b3f92b7a90a281ddb4885) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2558,7 +2536,7 @@ ROM_START( alchemst )
ROM_LOAD32_WORD( "01j02046.u13", 0x200002, 0x80000, CRC(6b791adf) SHA1(f00923101f926034603243a3c63e1010b044829e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2585,7 +2563,7 @@ ROM_START( baddog )
ROM_LOAD32_WORD( "0200428v.u13", 0x200002, 0x80000, CRC(883b2ec3) SHA1(5b431d8c9c8eabca65ab22dcf2bdb22d49445bb1) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2611,7 +2589,7 @@ ROM_START( blackpnt )
ROM_LOAD32_WORD( "0200818v.u12", 0x100002, 0x80000, BAD_DUMP CRC(bb2bf7bb) SHA1(f88208238a69fc79e33af17f39e25cd2857d7172) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2639,7 +2617,7 @@ ROM_START( bootsctn )
ROM_LOAD32_WORD( "0100812v.u14", 0x300002, 0x80000, CRC(75b9b89e) SHA1(08d487b3722f2ea5d2d18c78f571a44c78616dbe) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2672,7 +2650,7 @@ ROM_START( bootsctnu )
ROM_LOAD32_WORD( "ghg101202.u14", 0x300002, 0x80000, CRC(18934c51) SHA1(f7c9c95c687dbfe89747e7877157fde37bc1119e) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2701,7 +2679,7 @@ ROM_START( bootsctnua )
ROM_LOAD32_WORD( "ghg100803.u14", 0x300002, 0x80000, CRC(9759692e) SHA1(7666027e21af27329720127367a780776973c515) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2731,7 +2709,7 @@ ROM_START( bootsctnub )
ROM_LOAD32_WORD( "ahg1547.u14", 0x300002, 0x80000, CRC(de2888e2) SHA1(f614d68c0e09912e9126cb024f54ed32ee50b57e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2763,7 +2741,7 @@ ROM_START( bparty )
ROM_LOAD32_WORD( "bhg1248.u14", 0x300002, 0x80000, CRC(b276d61a) SHA1(8bee7fa551caec3da03afa061612c153f7b48cdb) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2787,7 +2765,7 @@ ROM_START( bpartya )
ROM_LOAD32_WORD( "bhg1579.u14", 0x300002, 0x7ff94, BAD_DUMP CRC(34ffe312) SHA1(34432e57e2e3dd90c15dd3ff7cb16d8381343be8) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2809,7 +2787,7 @@ ROM_START( bumblbug )
ROM_LOAD32_WORD( "0200510v.u11", 0x000002, 0x80000, CRC(5d888245) SHA1(bbbe61e09bebd5fcb79f060d5caee15100c9a685) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2834,7 +2812,7 @@ ROM_START( bumblbugql )
ROM_LOAD32_WORD( "0200456v.u12", 0x100002, 0x80000, CRC(9f0d7615) SHA1(1453b1476510e1dd68bc14feba72dc59b9dfe676) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2863,7 +2841,7 @@ ROM_START( bumblbugu )
ROM_LOAD32_WORD( "chg047903.u12", 0x100002, 0x80000, CRC(7dbb634b) SHA1(f7a752240989032af142f4cd6e4260a12a5b4c0a) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2893,7 +2871,7 @@ ROM_START( bumblbugua )
ROM_LOAD32_WORD( "chg047999.u12", 0x100002, 0x80000, CRC(7dbb634b) SHA1(f7a752240989032af142f4cd6e4260a12a5b4c0a) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2918,7 +2896,7 @@ ROM_START( buttdeli )
ROM_LOAD32_WORD( "0200143v.u12", 0x100002, 0x80000, CRC(0d58cf28) SHA1(aa65b7ee88b5bc872008a46e60bd49d9e5eda153) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2937,7 +2915,7 @@ ROM_START( canrose )
ROM_LOAD32_WORD( "ahg1463.u12", 0x100002, 0x7f4fc, CRC(5fe736c2) SHA1(d7c1a3f003085848e413aa499d9eaecca74773da) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2962,7 +2940,7 @@ ROM_START( cashcat )
ROM_LOAD32_WORD( "0100676v.u12", 0x100002, 0x80000, CRC(a7199f5f) SHA1(6a46935c095b1d89307921e3a53b48032e6f45fa) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -2987,7 +2965,7 @@ ROM_START( cashcata )
ROM_LOAD32_WORD( "0100557v.u12", 0x100002, 0x80000, CRC(bdeeafd3) SHA1(a95a44ff8534bb030d696a37821f3e53072f2947) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3005,7 +2983,7 @@ ROM_START( cashcatnz )
ROM_LOAD32_WORD( "0300863v.u12", 0x100002, 0x80000, CRC(f930fc07) SHA1(cb3fdbd5b87af7b14067f7999740470d3cf434df) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3030,7 +3008,7 @@ ROM_START( cashcham )
ROM_LOAD32_WORD( "0100438v.u12", 0x100002, 0x80000, CRC(7ae3b5db) SHA1(238698b72f529ac4fb292d08267069d1da01b43b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3055,7 +3033,7 @@ ROM_START( cashchama )
ROM_LOAD32_WORD( "0200437v.u12", 0x100002, 0x80000, CRC(571aab82) SHA1(03895d1a08d2dd868fd594db1aaeb29b295f0d98) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3073,7 +3051,7 @@ ROM_START( cashchamnz )
ROM_LOAD32_WORD( "0300781v.u12", 0x100002, 0x80000, CRC(2aeb0265) SHA1(50e526ecccfdd35f7e156e1873cf4c81fb117069) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3101,7 +3079,7 @@ ROM_START( cashchamu )
ROM_LOAD32_WORD( "dhg407899.u12", 0x100002, 0x80000, CRC(2fd087f8) SHA1(f16414abf58e1a7a8ca08380993bdeca6f9c7317) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3126,7 +3104,7 @@ ROM_START( cashcra5 )
ROM_LOAD32_WORD( "0300467v.u12", 0x100002, 0x80000, CRC(570c7f8a) SHA1(7c9527e0b37970b7960c723727c3c650a48e8125) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3144,7 +3122,7 @@ ROM_START( cashcra5a )
ROM_LOAD32_WORD( "0300447v.u12", 0x100002, 0x7fe36, BAD_DUMP CRC(ef641efa) SHA1(52e54ed933352cde0f280ba2b3e9bae01c4aae7e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3169,7 +3147,7 @@ ROM_START( chariotc )
ROM_LOAD32_WORD( "0100787v.u12", 0x100002, 0x80000, CRC(b44cf571) SHA1(04447820e015425493cade5611b3eb2f21e48c2e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3196,7 +3174,7 @@ ROM_START( chariotcv )
ROM_LOAD32_WORD( "04j00714.u12", 0x100002, 0x80000, CRC(b8d4a5ec) SHA1(097e44cdb30b9aafd7f5358c8f0cdd130ec0615e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3224,7 +3202,7 @@ ROM_START( checkma5 )
ROM_LOAD32_WORD( "01j00681.u13", 0x200002, 0x80000, CRC(ad12a718) SHA1(0c36729cb8da800668f533f65fcc870f5dfc0f6a) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3250,7 +3228,7 @@ ROM_START( chickna5 )
ROM_LOAD32_WORD( "0100351v.u13", 0x200002, 0x80000, CRC(88a1ccae) SHA1(e242f48f99044b4fdf1bf36d8e105df09f94aa50) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3279,7 +3257,7 @@ ROM_START( chickna5ql )
ROM_LOAD32_WORD( "0200530v.u14", 0x300002, 0x80000, CRC(e87cf6c9) SHA1(a330644658da6100d7231b1c47260dc7f2e88448) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3314,7 +3292,7 @@ ROM_START( chickna5u )
ROM_LOAD32_WORD( "rhg073003.u14", 0x300002, 0x80000, CRC(240f7759) SHA1(1fa5ba0185b027101dae207ec5d28b07d3d73fc2) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3347,7 +3325,7 @@ ROM_START( chickna5ua )
ROM_LOAD32_WORD( "rhg073099.u14", 0x300002, 0x80000, CRC(240f7759) SHA1(1fa5ba0185b027101dae207ec5d28b07d3d73fc2) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3376,7 +3354,7 @@ ROM_START( chickna5v )
ROM_LOAD32_WORD( "01j01886.u13", 0x200002, 0x80000, BAD_DUMP CRC(231ca698) SHA1(eb237652974228994e793f0dc87de93095db3c9c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3401,7 +3379,7 @@ ROM_START( coralrc2 )
ROM_LOAD32_WORD( "0100919v.u12", 0x100002, 0x80000, CRC(9ea140b5) SHA1(11f6b9ab60117f236b464c9dbc939dfb8f240359) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3426,7 +3404,7 @@ ROM_START( cuckoo )
ROM_LOAD32_WORD( "0200753v.u12", 0x100002, 0x80000, CRC(cb706eb7) SHA1(cbd6235ca7a29c78ef2cb659d9c21466ed39b360) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3454,7 +3432,7 @@ ROM_START( cuckoou )
ROM_LOAD32_WORD( "chg1195.u12", 0x100002, 0x80000, CRC(00bb7597) SHA1(f4d6b21091e320a82d59477469340633b001ed0d) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -3491,7 +3469,7 @@ ROM_START( dstbloom )
ROM_LOAD32_WORD( "0300111v.u12", 0x100002, 0x80000, CRC(10cf45b3) SHA1(3f47682ed95f65bdb267f911e113e329ad448167) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3517,7 +3495,7 @@ ROM_START( dstblooma )
ROM_LOAD32_WORD( "0200111v.u12", 0x100002, 0x80000, CRC(0ad41815) SHA1(131efc6ed45d8f44a667bd30380c9e37c64f2c42) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3538,7 +3516,7 @@ ROM_START( diamdest )
ROM_LOAD32_WORD( "ahg1533.u13", 0x200002, 0x7ffeb, BAD_DUMP CRC(612a6bf2) SHA1(01ee8854204da0610aa4ab3a36c3e517906d2ab4) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3566,7 +3544,7 @@ ROM_START( diamdove )
ROM_LOAD32_WORD( "0101018v.u13", 0x200002, 0x80000, CRC(952a850f) SHA1(66da391af532f9ef531d10995c96a90eb71cd09a) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3588,7 +3566,7 @@ ROM_START( dmdfever )
ROM_LOAD32_WORD( "0200302v.u11", 0x000002, 0x80000, CRC(29620f05) SHA1(172b6226c443931f0c4ddc44a63c8fc0e6be3824) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASEFF )
ROM_END
@@ -3607,7 +3585,7 @@ ROM_START( dimtouch )
ROM_LOAD32_WORD( "0400433v.u12", 0x100002, 0x80000, CRC(9e0d08e2) SHA1(38b10f7c37f1cefe9271549073dc0a4fed409aec) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASEFF )
ROM_END
@@ -3629,7 +3607,7 @@ ROM_START( dolphntr )
ROM_LOAD32_WORD( "0200424v.u11", 0x000002, 0x80000, CRC(bcb732ea) SHA1(838300914846c6e740780e5a24b9db7304a8a88d) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3655,7 +3633,7 @@ ROM_START( dolphntra )
ROM_LOAD32_WORD( "0100424v.u12", 0x100002, 0x80000, CRC(6abd9309) SHA1(c405a13f5bfe447c1ab20d92e140e4fb145920d4) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3680,7 +3658,7 @@ ROM_START( dolphntrb )
ROM_LOAD32_WORD( "0100388v.u12", 0x100002, 0x80000, CRC(1a1fbbcf) SHA1(6e3772dcccd9b5958bec3bfac9af22b2eabca32e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3712,7 +3690,7 @@ ROM_START( dolphntrce )
ROM_LOAD32_WORD( "ahg1607.u14", 0x300002, 0x80000, CRC(6f522ffb) SHA1(0fbba6b8df15631e4361daf505469f2214ad8695) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3744,7 +3722,7 @@ ROM_START( dolphntrcea )
ROM_LOAD32_WORD( "ahg1606.u14", 0x300002, 0x80000, CRC(c6c59ed6) SHA1(0ce8e5824c5937ffe2eeb34320db9dc568bca7cb) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3776,7 +3754,7 @@ ROM_START( dolphntrceb )
ROM_LOAD32_WORD( "ahg1519.u14", 0x300002, 0x80000, CRC(f2da081c) SHA1(5202741719d72a9290bda2c646d37e8c8ad41c04) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3801,7 +3779,7 @@ ROM_START( dolphntrql )
ROM_LOAD32_WORD( "0101250v.u12", 0x100002, 0x80000, CRC(35236e6f) SHA1(f196f12a1761a235ad66f4e181ca249b1df7e245) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3828,7 +3806,7 @@ ROM_START( dolphntru )
ROM_LOAD32_WORD( "fhg407702.u12", 0x100002, 0x80000, CRC(8ee1c2d3) SHA1(e6ecaaac0cb4518ecc0d36532ab532f46e3e628b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -3863,7 +3841,7 @@ ROM_START( drgneye )
ROM_LOAD32_WORD( "0100521v.u11", 0x000002, 0x80000, CRC(2bb47749) SHA1(796f610e5202b5eb26a6e901d43ee5d9e3f95332) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3882,7 +3860,7 @@ ROM_START( dreamwv )
ROM_LOAD32_WORD( "0200586v.u12", 0x100002, 0x80000, CRC(0b3e03d3) SHA1(966ec84aff686ad360d440995b81ae469539a5b5) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3909,7 +3887,7 @@ ROM_START( dynajack )
ROM_LOAD32_WORD( "01j00081.u13", 0x200002, 0x80000, CRC(d204ff9c) SHA1(8ac5533928fb3ca247dc85cea67da45a6743f732) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3930,7 +3908,7 @@ ROM_START( dynajacku )
ROM_LOAD32_WORD( "chg1562.u13", 0x200002, 0x80000, CRC(5a2220d7) SHA1(aca5fefb60af93ba776cc695e9a7ea406f527937) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3952,7 +3930,7 @@ ROM_START( eldorda5 )
ROM_LOAD32_WORD( "0100652v.u11", 0x000002, 0x80000, CRC(35233cf8) SHA1(e02477526f2f9e2663c1876f543d138b2caf28df) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3974,7 +3952,7 @@ ROM_START( eforsta5 )
ROM_LOAD32_WORD( "0400122v.u11", 0x000002, 0x80000, CRC(7a97adc8) SHA1(b52f7fdc7edf9ad92351154c01b8003c0576ed94) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -3998,7 +3976,7 @@ ROM_START( eforsta5ce )
ROM_LOAD32_WORD( "chg1536.u14", 0x300002, 0x80000, CRC(113238a6) SHA1(145467e1f015543d23bb4a377d71949693f21c34) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4031,7 +4009,7 @@ ROM_START( eforsta5cea )
ROM_LOAD32_WORD( "ahg1615.u14", 0x300002, 0x80000, CRC(961fd1b3) SHA1(59c2280258b98bc0153b6dc08d1af026de5b3ed3) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4060,7 +4038,7 @@ ROM_START( eforsta5u )
ROM_LOAD32_WORD( "jhg041503.u12", 0x100002, 0x80000, CRC(c968471f) SHA1(9d54a5c396e6f83690db2fcb7ddcc8a47a7dd777) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4089,7 +4067,7 @@ ROM_START( eforsta5ua )
ROM_LOAD32_WORD( "jhg041599.u12", 0x100002, 0x80000, CRC(c968471f) SHA1(9d54a5c396e6f83690db2fcb7ddcc8a47a7dd777) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4114,7 +4092,7 @@ ROM_START( fastfort )
ROM_LOAD32_WORD( "0100651v.u12", 0x100002, 0x80000, CRC(d591dfb6) SHA1(9a1c1070b7e8774928d684c45481d72ce5108bf1) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4143,7 +4121,7 @@ ROM_START( fortellr )
ROM_LOAD32_WORD( "01j00131.u14", 0x300002, 0x80000, CRC(507bbe10) SHA1(01b1982c02a00b60aa39ee1b408d653365f728d4) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4166,7 +4144,7 @@ ROM_START( fortfvr )
ROM_LOAD32_WORD( "bhg1566.u14", 0x300002, 0x7ffff, BAD_DUMP CRC(4fba6570) SHA1(46bb22ba10dc69c70241dfbb00e86ffa5b28fd1c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4195,7 +4173,7 @@ ROM_START( gambler )
ROM_LOAD32_WORD( "ehg091602.u12", 0x100002, 0x80000, CRC(ebe957f9) SHA1(539945ec9beafe2c83051208370588fce2334f16) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4216,7 +4194,7 @@ ROM_START( geisha )
ROM_LOAD32_WORD( "0101408v.u13", 0x200002, 0x80000, CRC(5ef6323e) SHA1(82a720d814ca06c6d286c59bbf325d9a1034375a) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4239,7 +4217,7 @@ ROM_START( genmagi )
ROM_LOAD32_WORD( "0200894v.u14", 0x300002, 0x80000, CRC(52092ffb) SHA1(6ed591a510e9186588470ec745caf8001712012e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4270,7 +4248,7 @@ ROM_START( glizrdce )
ROM_LOAD32_WORD( "ahg1623.u14", 0x300002, 0x80000, CRC(5ceb871c) SHA1(42b8a087fa39261818dd333ea3d8c1ef269671bf) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4295,7 +4273,7 @@ ROM_START( gnomeatw )
ROM_LOAD32_WORD( "0100767v.u12", 0x100002, 0x80000, CRC(49eb3869) SHA1(d98fe385c667872f26d656a3240f557a70ba924f) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4324,7 +4302,7 @@ ROM_START( goldpyr )
ROM_LOAD32_WORD( "ahg120503.u12", 0x100002, 0x80000, CRC(8bbf45d0) SHA1(f58f28e7cc4ac225197959566d81973b5aa0e836) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4353,7 +4331,7 @@ ROM_START( goldpyra )
ROM_LOAD32_WORD( "ahg120699.u12", 0x100002, 0x80000, CRC(13021157) SHA1(6beb8dea66659b5ec9cbb8dcd921c30a621049a9) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4385,7 +4363,7 @@ ROM_START( goldpyrb )
ROM_LOAD32_WORD( "0100878v.u13", 0x200002, 0x80000, CRC(0df660be) SHA1(73d370d90655dada34f2b5b2209652632c34a22e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4412,7 +4390,7 @@ ROM_START( goldenra )
ROM_LOAD32_WORD( "0101164v.u13", 0x200002, 0x80000, CRC(8f62ccc5) SHA1(5105313192ab8dfd522b921c70b8b03a8a61ac63) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4439,7 +4417,7 @@ ROM_START( honeypot )
ROM_LOAD32_WORD( "03j00241.u13", 0x200002, 0x80000, CRC(d98e20eb) SHA1(6274ceee7ad49a9052b354d9dfc7e3cfa4e61017) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4470,7 +4448,7 @@ ROM_START( hnktonku )
ROM_LOAD32_WORD( "bhg1455.u13", 0x200002, 0x80000, CRC(18dd37fe) SHA1(432a4959886fad4f4a55de31b7cc42c51d7f2792) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4496,7 +4474,7 @@ ROM_START( incasun )
ROM_LOAD32_WORD( "0100872v.u13", 0x200002, 0x80000, CRC(00407593) SHA1(4c759fe3267b1782ae84d8ed9134295dfaa0faaf) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4523,7 +4501,7 @@ ROM_START( incasunsp )
ROM_LOAD32_WORD( "sp__0100872v.u13", 0x200002, 0x80000, CRC(6d66c6b4) SHA1(2106f2ede58bd4d09334e32a1553f02a154bb767) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4543,7 +4521,7 @@ ROM_START( incasunnz )
ROM_LOAD32_WORD( "0101108v.u13", 0x200002, 0x80000, CRC(472f4097) SHA1(5ebe72b138cdc67989db17c82979eeddc60a081e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4570,7 +4548,7 @@ ROM_START( incasunu )
ROM_LOAD32_WORD( "chg1458.u13", 0x200002, 0x80000, CRC(2e573a8d) SHA1(aa8ac4f4a427829f0a5929273c618edb4ecf7b36) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -4611,7 +4589,7 @@ ROM_START( incasunua )
ROM_LOAD32_WORD( "dhg1577.u13", 0x200002, 0x80000, CRC(f7c30ef9) SHA1(44d7213e1220d6b89715408d009ef1484de2696f) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4638,7 +4616,7 @@ ROM_START( incasunv )
ROM_LOAD32_WORD( "01j01946.u13", 0x200002, 0x80000, CRC(0efdd830) SHA1(de0be1cd3f691299f48d7a184df6bb59fef22de2) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4663,7 +4641,7 @@ ROM_START( indrema5 )
ROM_LOAD32_WORD( "0100845v.u12", 0x100002, 0x80000, CRC(4bbe67f6) SHA1(928f88387da66697f1de54f086531f600f80a15e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4689,7 +4667,7 @@ ROM_START( indrema5ql )
ROM_LOAD32_WORD( "0101340v.u13", 0x200002, 0x80000, CRC(7ec9557e) SHA1(8f143c1ee1c82d822ff66ec5b3dac03b0c911223) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4707,7 +4685,7 @@ ROM_START( jumpbean )
ROM_LOAD32_WORD( "0100161v.u12", 0x100002, 0x7fa54, BAD_DUMP CRC(d1d6cfba) SHA1(8c8ee5a97bc3c8cd21cd291701cebf214ca388f3) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4732,7 +4710,7 @@ ROM_START( jumpjoey )
ROM_LOAD32_WORD( "0100383v.u12", 0x100002, 0x80000, CRC(defce2e9) SHA1(95f88f8647c52f99dceb4920780696d7f7c1c24b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4761,7 +4739,7 @@ ROM_START( jungjuic )
ROM_LOAD32_WORD( "0200240v.u12", 0x100002, 0x80000, CRC(ffa3d0ba) SHA1(e60e01d4d425aea483387fa2f9ae5bb69b80f829) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4787,7 +4765,7 @@ ROM_START( kgalah )
ROM_LOAD32_WORD( "0200536v.u12", 0x100002, 0x80000, CRC(15d5bfb4) SHA1(7c48dabfd83cc30fe2ffd0b4de63fbc9dc56ee2f) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4813,7 +4791,7 @@ ROM_START( kgalaha )
ROM_LOAD32_WORD( "0100536v.u12", 0x100002, 0x80000, CRC(ddde1739) SHA1(d2dec30baef8b43b2f3bc1d572353b5afe01be4b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4845,7 +4823,7 @@ ROM_START( kgalahce )
ROM_LOAD32_WORD( "ahg1625.u14", 0x300002, 0x80000, CRC(499419db) SHA1(6df8c7a9a69d60e746eb266127647327d4b88919) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4870,7 +4848,7 @@ ROM_START( kgbirda5 )
ROM_LOAD32_WORD( "0200024v.u12", 0x100002, 0x80000, CRC(df176c5a) SHA1(dcaecdefb7c880b9425a6445dbed969968fe3d1c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4900,7 +4878,7 @@ ROM_START( koalamnt )
ROM_LOAD32_WORD( "chg1573.u14", 0x300002, 0x80000, CRC(5e4776e9) SHA1(d44851cbfaa054cd5675a841a3089a8f4fdc8421) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4925,7 +4903,7 @@ ROM_START( kookabuk )
ROM_LOAD32_WORD( "0100677v.u12", 0x100002, 0x80000, CRC(b2f2fd15) SHA1(9614f3ae6e82a40ecf44090d0b8d7bd8b6b1f830) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4957,7 +4935,7 @@ ROM_START( kyhatonu )
ROM_LOAD32_WORD( "bhg1204.u14", 0x300002, 0x80000, CRC(490a9eb5) SHA1(30df13960614f82deac5426ff754885ffb429603) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -4979,7 +4957,7 @@ ROM_START( locoloot )
ROM_LOAD32_WORD( "0100473v.u11", 0x000002, 0x80000, CRC(0c0c2697) SHA1(0fc1dec8fba488a4b59c81b5bab7a11d62be2599) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5001,7 +4979,7 @@ ROM_START( locoloota )
ROM_LOAD32_WORD( "0100472v.u11", 0x000002, 0x80000, CRC(21332a1a) SHA1(76a4c30d1c9624984175e9bd117c68c9204f01df) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5019,7 +4997,7 @@ ROM_START( locolootnz )
ROM_LOAD32_WORD( "0600725v.u12", 0x100002, 0x80000, CRC(29f03505) SHA1(c173167f43cc2eef0e063118e03bc37a87188391) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5046,7 +5024,7 @@ ROM_START( locolootu )
ROM_LOAD32_WORD( "ahg1513.u12", 0x100002, 0x80000, CRC(5bf7b4b1) SHA1(2282ec8d0ddd1aea715005fba2171468831513f4) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5068,7 +5046,7 @@ ROM_START( lonewolf )
ROM_LOAD32_WORD( "0100587v.u11", 0x000002, 0x80000, CRC(0ed6fb6b) SHA1(a2baa4154fe762e2c1b40a97b2d27265df8b5dab) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5090,7 +5068,7 @@ ROM_START( luckyclo )
ROM_LOAD32_WORD( "0300109v.u11", 0x000002, 0x80000, CRC(4be1cdef) SHA1(8633077a6ddde80b2e7a3c4439ccb5a3f2b83695) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5118,7 +5096,7 @@ ROM_START( mgarden )
ROM_LOAD32_WORD( "ahg121199.u12", 0x100002, 0x80000, CRC(4b252c2c) SHA1(8be41fb2b8f8d2829c18ea123a02f3e61c136206) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5146,7 +5124,7 @@ ROM_START( magimask )
ROM_LOAD32_WORD( "ahg1549.u12", 0x100002, 0x80000, CRC(d008deab) SHA1(fd544767356bfdf44ec4af7218c9f2990581e620) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5173,7 +5151,7 @@ ROM_START( magimaska )
ROM_LOAD32_WORD( "ahg1548.u12", 0x100002, 0x80000, CRC(cf4cd569) SHA1(408edcd746587d249c4286f7a99f33ad94214f7c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -5214,7 +5192,7 @@ ROM_START( magimaskb )
ROM_LOAD32_WORD( "dhg1309.u12", 0x100002, 0x80000, CRC(6829a7bf) SHA1(97eed83763d0ec5e753d6ad194e906b1307c4940) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -5247,7 +5225,7 @@ ROM_START( magtcha5 )
ROM_LOAD32_WORD( "0300455v.u13", 0x200002, 0x80000, CRC(5e54ed88) SHA1(5fe9a74e210bc2c1b158e7a3bb01fdcc96ea0075) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5269,7 +5247,7 @@ ROM_START( magtcha5a )
ROM_LOAD32_WORD( "0200455v.u13", 0x200002, 0x80000, CRC(cfd2a86e) SHA1(66891a1b0e85ad7146b733f4b5d806db789d8821) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5294,7 +5272,7 @@ ROM_START( mammothm )
ROM_LOAD32_WORD( "0100425v.u12", 0x100002, 0x80000, CRC(58171e9b) SHA1(7f375aeb8cabe22fcc6f61cac5ef6f72f0c99899) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5321,7 +5299,7 @@ ROM_START( marmagic )
ROM_LOAD32_WORD( "01j00101.u13", 0x200002, 0x80000, CRC(3f702945) SHA1(a6c9a848d059c1e564fdc5a65bf8c9600853edfa) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5352,7 +5330,7 @@ ROM_START( marmagicu )
ROM_LOAD32_WORD( "ehg1558.u14", 0x300002, 0x80000, CRC(a2096cb3) SHA1(c2bba35396f9c83b17d692a384b6406f3441c8f5) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5384,7 +5362,7 @@ ROM_START( marmagicua )
ROM_LOAD32_WORD( "ehg1559.u14", 0x300002, 0x80000, CRC(bdfdc0e4) SHA1(0e56f08abc0cdd9dfa5d8e51bb6fe06fa356b3b3) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5409,7 +5387,7 @@ ROM_START( minemine )
ROM_LOAD32_WORD( "0400115v.u12", 0x100002, 0x80000, CRC(b0607ccf) SHA1(f7b35d02170620060c8cdf90b9cb6aac86e26a52) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5436,7 +5414,7 @@ ROM_START( minemineu )
ROM_LOAD32_WORD( "vhg041699.u12", 0x100002, 0x80000, CRC(26c01532) SHA1(ec68ad44b703609c7bc27275f8d9250a16d9067c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -5477,7 +5455,7 @@ ROM_START( minemineua )
ROM_LOAD32_WORD( "nhg0416.u12", 0x100002, 0x80000, CRC(fc3f18ff) SHA1(f2afc6bdd7a702e4ac4037749613ac4a40446511) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5502,7 +5480,7 @@ ROM_START( monmouse )
ROM_LOAD32_WORD( "0400469v.u12", 0x100002, 0x80000, CRC(72d992ed) SHA1(94560305dacbe776ddc95114ad5e5ffaa234937c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5528,7 +5506,7 @@ ROM_START( monmousea )
ROM_LOAD32_WORD( "0300469v.u12", 0x100002, 0x80000, CRC(2be9bce0) SHA1(3768e616e4f03f253074e1f06aa628181db9dce8) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5548,7 +5526,7 @@ ROM_START( montree )
ROM_LOAD32_WORD( "0201397v.u13", 0x200002, 0x80000, CRC(e1f23c3f) SHA1(fe74c219c738625257fb62806e271a60075aaa07) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5570,7 +5548,7 @@ ROM_START( mountmon )
ROM_LOAD32_WORD( "0100294v.u11", 0x000002, 0x80000, CRC(4fb2a4dc) SHA1(23895b701387f7442a31969989d21cefe2a25efd) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5592,7 +5570,7 @@ ROM_START( mountmona )
ROM_LOAD32_WORD( "0100289v.u11", 0x000002, 0x80000, CRC(565b76ff) SHA1(559d4ec4f1a727cd293d842b7f777c99dcf488bc) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5616,7 +5594,7 @@ ROM_START( mountmonce )
ROM_LOAD32_WORD( "ahg1629.u14", 0x300002, 0x7ffff, BAD_DUMP CRC(57f31de5) SHA1(aceb1d700c3b41e29e0abd613d59008d7dc259c9) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5639,7 +5617,7 @@ ROM_START( mountmonu )
ROM_LOAD32_WORD( "bhg1465.u14", 0x300002, 0x80000, CRC(62f9b2af) SHA1(bddf24c7a412e911cf75316723f3139be99acbdd) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5670,7 +5648,7 @@ ROM_START( mountmonua )
ROM_LOAD32_WORD( "bhg1464.u14", 0x300002, 0x80000, CRC(5b1e5888) SHA1(4cfb0a7af2553037fed650085bbe11e3d043797b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5697,7 +5675,7 @@ ROM_START( multidrw )
ROM_LOAD32_WORD( "0200956v.u13", 0x200002, 0x80000, CRC(0d6f7ec5) SHA1(0a80257eb464e50292554f45583f3d7b85de2bc3) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5719,7 +5697,7 @@ ROM_START( mystgard )
ROM_LOAD32_WORD( "0100275v.u11", 0x000002, 0x80000, CRC(6e618fc5) SHA1(a02e7ca2433cf8128d74792833d9708a3ba5df4b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5739,7 +5717,7 @@ ROM_START( one4all )
ROM_LOAD32_WORD( "0101503v.u13", 0x200002, 0x80000, CRC(3b116e0d) SHA1(5df873c00c1103304c2cb77cedf05a5db83ece29) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5765,7 +5743,7 @@ ROM_START( orchidms )
ROM_LOAD32_WORD( "0200849v.u12", 0x100002, 0x80000, CRC(165a762d) SHA1(8487d2e32bd2fab5a9114380ba2be6d34b097b11) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5792,7 +5770,7 @@ ROM_START( orchidmsa )
ROM_LOAD32_WORD( "0100849v.u12", 0x100002, 0x80000, CRC(4b5baf9d) SHA1(2fd13cbb22aff14936cbe2da582a0aa3984ab4a2) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5810,7 +5788,7 @@ ROM_START( orchidmsnz )
ROM_LOAD32_WORD( "0101241v.u12", 0x100002, 0x80000, CRC(141e2b47) SHA1(e311693d730bfff99ad75995e47606e9822ba722) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5832,7 +5810,7 @@ ROM_START( oscara5 )
ROM_LOAD32_WORD( "0200348v.u11", 0x000002, 0x80000, CRC(11394e80) SHA1(1c6e7e954a6118e04da9d761fef8ec00c46d2af8) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5858,7 +5836,7 @@ ROM_START( oscara5a )
ROM_LOAD32_WORD( "0100348v.u12", 0x100002, 0x80000, CRC(fd1c5c7b) SHA1(61b29459e39912ea3c2bf290e1f3061ce13ea648) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5883,7 +5861,7 @@ ROM_START( pantmag )
ROM_LOAD32_WORD( "0101046v.u12", 0x100002, 0x80000, CRC(eae75fa9) SHA1(576c8cf98ad4032bbdde12162e2c1bdd10056762) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5908,7 +5886,7 @@ ROM_START( pantmaga )
ROM_LOAD32_WORD( "0100716v.u12", 0x100002, 0x80000, CRC(6adfd0ab) SHA1(3b6479bcd95812f5678a27adc7decbc881cd6caa) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5937,7 +5915,7 @@ ROM_START( partygrs )
ROM_LOAD32_WORD( "ahg1567.u12", 0x100002, 0x80000, CRC(00d1395c) SHA1(d9a66d6cdb5aa4f583d8c23306b1416646cbde93) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -5977,7 +5955,7 @@ ROM_START( partygrsa )
ROM_LOAD32_WORD( "bhg1284.u12", 0x100002, 0x80000, CRC(090ce72f) SHA1(a4783ca84aabd365613357a53a19a3dd48f4df0c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -5997,7 +5975,7 @@ ROM_START( partygrsb )
ROM_LOAD32_WORD( "ahg1568.u12", 0x100002, 0x7f7da, BAD_DUMP CRC(43764888) SHA1(cfd59692f17e9ca70dc882423238f6de59dafbed) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6022,7 +6000,7 @@ ROM_START( peaflut )
ROM_LOAD32_WORD( "02j00011.u12", 0x100002, 0x80000, CRC(2d96c449) SHA1(af98a864b9ed3f95227fd0d6edc6a38c0544c93f) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6047,7 +6025,7 @@ ROM_START( pengpay )
ROM_LOAD32_WORD( "0200460v.u12", 0x100002, 0x80000, CRC(90864742) SHA1(f6491e4fbce5d642b9d0224118923b56625338b1) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6072,7 +6050,7 @@ ROM_START( pengpaya )
ROM_LOAD32_WORD( "0200357v.u12", 0x100002, 0x80000, CRC(123cbe90) SHA1(b51b84f79e0822a1be71485bbad514ab9fa55622) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6098,7 +6076,7 @@ ROM_START( pengpayb )
ROM_LOAD32_WORD( "0200359v.u12", 0x100002, 0x80000, CRC(d2882682) SHA1(dd42edca8ef9d28dd5b16fe8132f8e0fb3c85979) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6123,7 +6101,7 @@ ROM_START( pengpayc )
ROM_LOAD32_WORD( "0200113v.u12", 0x100002, 0x80000, CRC(a1865467) SHA1(572558bab639145c8260884a95646fc424687b47) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6141,7 +6119,7 @@ ROM_START( pengpayd )
ROM_LOAD32_WORD( "0300113v.u12", 0x100002, 0x7fb27, BAD_DUMP CRC(7206dc37) SHA1(4d2f8551daeb4be13e73e3123e158dc1e1e4e067) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6169,7 +6147,7 @@ ROM_START( pengpayu )
ROM_LOAD32_WORD( "bhi041703.u12", 0x100002, 0x80000, CRC(d959a048) SHA1(92f69090d599f95b48e79213e5b7d486e083d8f4) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -6209,7 +6187,7 @@ ROM_START( pengpayua )
ROM_LOAD32_WORD( "ohg041703.u12", 0x100002, 0x80000, CRC(9eae7f7b) SHA1(23bd952de1d6d5d69e5565cc2bc241c2cd775453) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6237,7 +6215,7 @@ ROM_START( pengpayub )
ROM_LOAD32_WORD( "ohg041702.u12", 0x100002, 0x80000, CRC(9eae7f7b) SHA1(23bd952de1d6d5d69e5565cc2bc241c2cd775453) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6270,7 +6248,7 @@ ROM_START( pengpayce )
ROM_LOAD32_WORD( "ahg1544.u14", 0x300002, 0x80000, CRC(4ef4f063) SHA1(d6e9928f80f19d3fdd0e7acb0bfb6f9b2ae5724b) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6301,7 +6279,7 @@ ROM_START( pengpuck )
ROM_LOAD32_WORD( "ehg1257.u14", 0x300002, 0x80000, CRC(b6cb5809) SHA1(84288a41d2a3980bf68e9a32b9402652ac6a16d6) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6326,7 +6304,7 @@ ROM_START( penpir )
ROM_LOAD32_WORD( "0100674v.u12", 0x100002, 0x80000, CRC(acdbbbe6) SHA1(5909135163af18c3ecd84934612e3751ca62ae74) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6351,7 +6329,7 @@ ROM_START( penpira )
ROM_LOAD32_WORD( "0200578v.u12", 0x100002, 0x80000, CRC(7ea30a52) SHA1(70d7640ea237197be4b2b8c64c2a97ad7b608cc0) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6384,7 +6362,7 @@ ROM_START( penpir2 )
ROM_LOAD32_WORD( "0100869v.u13", 0x200002, 0x80000, CRC(e1dbfd58) SHA1(687b7254279734e1835e1713d032b5aa2cf70812) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6409,7 +6387,7 @@ ROM_START( petshop )
ROM_LOAD32_WORD( "0100731v.u12", 0x100002, 0x80000, CRC(6e74cd57) SHA1(9092e656cbd8627b208b81ca0d737483a779bce1) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6426,7 +6404,7 @@ ROM_START( petshopa )
ROM_LOAD32_WORD( "0100679v.u12", 0x100002, 0x80000, BAD_DUMP CRC(2cd12986) SHA1(b6b0bd6dd8c964498edc3763cb5c450795042a8d) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6451,7 +6429,7 @@ ROM_START( phantpay )
ROM_LOAD32_WORD( "0500005v.u12", 0x100002, 0x80000, CRC(d43a092a) SHA1(5f851bd179b14ef3983b460ed932810f3713d3e5) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6478,7 +6456,7 @@ ROM_START( przfight )
ROM_LOAD32_WORD( "0100299v.u13", 0x200002, 0x80000, CRC(c16197d5) SHA1(716c4afdf2acde10ff09ad90b03bc5e689f0a737) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6503,7 +6481,7 @@ ROM_START( qcash )
ROM_LOAD32_WORD( "0100706v.u12", 0x100002, 0x80000, CRC(bfedb3fc) SHA1(e115db94b8ee7babb29e31e64b96d181f5c6491b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6529,7 +6507,7 @@ ROM_START( qnile )
ROM_LOAD32_WORD( "0300439v.u12", 0x100002, 0x80000, CRC(eec01bb4) SHA1(146fdce6b32a21659dc775e4a5f3bb027bd09825) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6555,7 +6533,7 @@ ROM_START( qnilea )
ROM_LOAD32_WORD( "0200439v.u12", 0x100002, 0x80000, CRC(2a0f7feb) SHA1(27c89dadf759e6c892121650758c44ec50990cb6) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6581,7 +6559,7 @@ ROM_START( qnileb )
ROM_LOAD32_WORD( "0100439v.u12", 0x100002, 0x80000, CRC(bdcec4eb) SHA1(ef3658460263cd2e68e10015efdc016ad705213e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6615,7 +6593,7 @@ ROM_START( qnilebr )
ROM_LOAD32_WORD( "0101707v.u13", 0x200002, 0x80000, CRC(1b5da8ca) SHA1(9a6cfbadba24677a0d82a61ffdc25772ecbac287) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6640,7 +6618,7 @@ ROM_START( qnilec )
ROM_LOAD32_WORD( "0300440v.u12", 0x100002, 0x80000, CRC(52bd3694) SHA1(bcfa3054c7577f7a1653b756828d048a5f1776e7) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6671,7 +6649,7 @@ ROM_START( qnilece )
ROM_LOAD32_WORD( "ahg1609.u14", 0x300002, 0x80000, CRC(fe7817f3) SHA1(a3579ed7ce6d999b0f71482f2a2e3ade693668fb) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6703,7 +6681,7 @@ ROM_START( qnilecea )
ROM_LOAD32_WORD( "ahg1525.u14", 0x300002, 0x80000, CRC(520452d4) SHA1(6d501b82a7b35a6e53a0991cbc384b752a295edf) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6736,7 +6714,7 @@ ROM_START( qnileceb )
ROM_LOAD32_WORD( "ahg1608.u14", 0x300002, 0x80000, CRC(4d0f1d12) SHA1(980775e628e9508398cb5227af10ed9ff0555b8a) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6763,7 +6741,7 @@ ROM_START( qniled )
ROM_LOAD32_WORD( "0101139v.u13", 0x200002, 0x80000, CRC(160fbbb5) SHA1(fe2ce9b915b0dfcbc60deed30a95550a21a18127) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6790,7 +6768,7 @@ ROM_START( qnilefl )
ROM_LOAD32_WORD( "0101670v.u13", 0x200002, 0x80000, CRC(715e7789) SHA1(b734aa88e7e65fba988e7fffd711039c4f554b2c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6819,7 +6797,7 @@ ROM_START( qnilemax )
ROM_LOAD32_WORD( "0401072v.u14", 0x300002, 0x80000, CRC(4fbccf72) SHA1(97d6bb400caf78cb673a324d48d2580f1bbb1acd) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6844,7 +6822,7 @@ ROM_START( qnilenl )
ROM_LOAD32_WORD( "0301059v.u12", 0x100002, 0x80000, CRC(e505912a) SHA1(ae71aa6d56d424383add3b9cbc17473ab0a13bdc) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6865,7 +6843,7 @@ ROM_START( qnilenz )
ROM_LOAD32_WORD( "0300785v.u13", 0x200002, 0x80000, CRC(b267d25a) SHA1(8065601190540e5f0b4a91fed1deffcdb2606f94) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6890,7 +6868,7 @@ ROM_START( qnileql )
ROM_LOAD32_WORD( "0201200v.u12", 0x100002, 0x80000, CRC(38332f4e) SHA1(53c90103df06e5a28bbaf32504a0984b7c65bec7) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6918,7 +6896,7 @@ ROM_START( qnileu )
ROM_LOAD32_WORD( "ghg409102.u12", 0x100002, 0x80000, CRC(7871a846) SHA1(ac1d741092afda842e1864f1a7a14137a9ee46d9) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -6961,7 +6939,7 @@ ROM_START( qnileua )
ROM_LOAD32_WORD( "ghg4091.u12", 0x100002, 0x80000, CRC(7871a846) SHA1(ac1d741092afda842e1864f1a7a14137a9ee46d9) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -6988,7 +6966,7 @@ ROM_START( qnilev )
ROM_LOAD32_WORD( "04j00784.u12", 0x100002, 0x80000, CRC(621adc77) SHA1(2fecef64139c502b0baee5c945fe5671532aacab) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7013,7 +6991,7 @@ ROM_START( qtbird )
ROM_LOAD32_WORD( "0500009v.u12", 0x100002, 0x80000, CRC(bb8344a9) SHA1(8b0e904b937c7f34470ad946076240b0c54bf434) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7043,7 +7021,7 @@ ROM_START( rainwrce )
ROM_LOAD32_WORD( "0101332v.u14", 0x300002, 0x80000, CRC(92274626) SHA1(fae8d89efba9bf3d171bfe484015d009786ce40d) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7068,7 +7046,7 @@ ROM_START( reelpwr )
ROM_LOAD32_WORD( "0100400v.u12", 0x100002, 0x80000, CRC(e6033756) SHA1(82603f02fcec2b01f5a1cfc13d50129669e84dc7) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7094,7 +7072,7 @@ ROM_START( reelrock )
ROM_LOAD32_WORD( "0100779v.u12", 0x100002, 0x80000, CRC(4ac20679) SHA1(0ac732ffe6a33806e4a06e87ec875a3e1314e06b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7121,7 +7099,7 @@ ROM_START( reelrockql )
ROM_LOAD32_WORD( "0101460v.u13", 0x200002, 0x80000, NO_DUMP )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7146,7 +7124,7 @@ ROM_START( retrsam )
ROM_LOAD32_WORD( "0400549v.u12", 0x100002, 0x80000, CRC(fdf22d5b) SHA1(664fa003a350c0a3b515b7c384d32176158c2d3e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7169,7 +7147,7 @@ ROM_START( retrsama )
ROM_LOAD32_WORD( "0200549v.u11", 0x000002, 0x80000, CRC(99f61822) SHA1(88a726a5c9cae3a7d3120cb9013ca4d38ef8c560) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7191,7 +7169,7 @@ ROM_START( retrsamb )
ROM_LOAD32_WORD( "0200506v.u11", 0x000002, 0x80000, CRC(e662404b) SHA1(f0da3384c81d01ec17d24b2191d3a0b0eaf48d12) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7218,7 +7196,7 @@ ROM_START( rushrst )
ROM_LOAD32_WORD( "0200534v.u13", 0x200002, 0x80000, CRC(dfe02424) SHA1(798ce31ef23cf5bd7d5b04dc21ffd99b2f6243b3) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7244,7 +7222,7 @@ ROM_START( sbuk2 )
ROM_LOAD32_WORD( "0400501v.u12", 0x100002, 0x80000, CRC(f9b65d2b) SHA1(f519fc284aaa08d3619e4d88e92e690320cf5432) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7263,7 +7241,7 @@ ROM_START( sbuk2a )
ROM_LOAD32_WORD( "0300006v.u12", 0x100002, 0x80000, NO_DUMP )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7288,7 +7266,7 @@ ROM_START( sbuk3 )
ROM_LOAD32_WORD( "0200711v.u12", 0x100002, 0x80000, CRC(a585172d) SHA1(3c74efb11285ff78ce76a7e8af2f936d3dc31290) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7314,7 +7292,7 @@ ROM_START( sbuk3a )
ROM_LOAD32_WORD( "0100711v.u12", 0x100002, 0x80000, CRC(0ce0ba8d) SHA1(7fc6ee6281bb3c474fa0cf4d879e735ae03bb1ed) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7344,7 +7322,7 @@ ROM_START( sldeluxe )
ROM_LOAD32_WORD( "ahg1575.u14", 0x300002, 0x80000, CRC(bd890100) SHA1(c82b2891287429a3e77ccaf9b66139f0548f1902) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7369,7 +7347,7 @@ ROM_START( slvrwolf )
ROM_LOAD32_WORD( "0100673v.u12", 0x100002, 0x80000, CRC(122816dd) SHA1(5c37b29179262a79d8c68c92035ff14fc2885150) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7391,7 +7369,7 @@ ROM_START( snowcat )
ROM_LOAD32_WORD( "0100405v.u11", 0x000002, 0x80000, CRC(9f9e2637) SHA1(3d4992cec760360931bc5de400c7a27329f8b953) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7416,7 +7394,7 @@ ROM_START( sumospin )
ROM_LOAD32_WORD( "0200606v.u12", 0x100002, 0x80000, CRC(ba3eede2) SHA1(708a25af0908a1aa874b3ca4897816c65b0c9178) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7438,7 +7416,7 @@ ROM_START( swhr2 )
ROM_LOAD32_WORD( "0200465v.u11", 0x000002, 0x80000, CRC(dcf51719) SHA1(1ea07091ce22245f77b6de5dcd994efb94c4ba58) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7461,7 +7439,7 @@ ROM_START( swhr2a )
ROM_LOAD32_WORD( "0200004v.u11", 0x000002, 0x80000, CRC(bde067d7) SHA1(cbf2cbd0644f1daeb5c3cd08d72f3d7aafe521ec) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7490,7 +7468,7 @@ ROM_START( swhr2u )
ROM_LOAD32_WORD( "phg074202.u12", 0x100002, 0x80000, CRC(885cde6c) SHA1(a6ccf94ecdae2092a703075c9917d0b4004efa52) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7513,7 +7491,7 @@ ROM_START( swhr2v )
ROM_LOAD32_WORD( "01j01986.u11", 0x000002, 0x80000, CRC(bd7ead91) SHA1(9f775428a4aa0b0a8ee17aed9be620edc2020c5e) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7538,7 +7516,7 @@ ROM_START( thor )
ROM_LOAD32_WORD( "0200319v.u12", 0x100002, 0x80000, CRC(a4b27820) SHA1(75bb554300372c8bccea79ab55aa60688b7597fa) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7563,7 +7541,7 @@ ROM_START( thndh )
ROM_LOAD32_WORD( "0200333v.u12", 0x100002, 0x80000, CRC(522b0459) SHA1(d9f0e94223897ef8935558593b1d261ad953a3ec) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7588,7 +7566,7 @@ ROM_START( thndha )
ROM_LOAD32_WORD( "0200334v.u12", 0x100002, 0x80000, CRC(77c0d46d) SHA1(a183eca1ebdc305dce75caa311635ec98477909d) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7610,7 +7588,7 @@ ROM_START( topbana )
ROM_LOAD32_WORD( "0100550v.u11", 0x000002, 0x80000, CRC(1c64b3b6) SHA1(80bbc6e3f47ab932e9c07e0c6063197a2d8e81f7) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7639,7 +7617,7 @@ ROM_START( toutango )
ROM_LOAD32_WORD( "0100782v.u14", 0x300002, 0x80000, CRC(69f2acde) SHA1(cda52548e675a06677a2d9fee89b33f9abb96f64) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7667,7 +7645,7 @@ ROM_START( toutangonl )
ROM_LOAD32_WORD( "0301388v.u14", 0x300002, 0x80000, CRC(fbb37975) SHA1(648b56df5047b8ae60b41bdf29f35f8bf8fe2d29) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7692,7 +7670,7 @@ ROM_START( trstrove )
ROM_LOAD32_WORD( "01j00161.u12", 0x100002, 0x80000, CRC(715f53cb) SHA1(364c35fc2d36180c13127c8004a8729126f68db1) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7719,7 +7697,7 @@ ROM_START( tritreat )
ROM_LOAD32_WORD( "0201692v.u13", 0x200002, 0x80000, CRC(0a0b0ce1) SHA1(41a4d613cf1828df1832c087f0bc18d31076f056) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7746,7 +7724,7 @@ ROM_START( trojhors )
ROM_LOAD32_WORD( "01j00851.u13", 0x200002, 0x80000, CRC(b6d1ceb6) SHA1(b41200620aaa905697ac73b4c86496a53f070ed3) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7771,7 +7749,7 @@ ROM_START( trpdlght )
ROM_LOAD32_WORD( "0100269v.u12", 0x100002, 0x80000, CRC(88978d4e) SHA1(cd2b747fd858f7d84b889bf87865c4fbb349e1b7) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7800,7 +7778,7 @@ ROM_START( trpdlghtu )
ROM_LOAD32_WORD( "phg062502.u12", 0x100002, 0x80000, CRC(0190804b) SHA1(7acb29fb7f77e78bb2afeb74d341475cd089dafb) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7825,7 +7803,7 @@ ROM_START( unicornd )
ROM_LOAD32_WORD( "0100791v.u12", 0x100002, 0x80000, CRC(14afdeda) SHA1(1eb2a297e903dc1a0683425b37669e0af4ae4218) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7850,7 +7828,7 @@ ROM_START( unicornda )
ROM_LOAD32_WORD( "0100813v.u12", 0x100002, 0x80000, CRC(b712dcd1) SHA1(f4080185f909d385e93edc73954d05de1dc6aa65) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7868,7 +7846,7 @@ ROM_START( unicorndnz )
ROM_LOAD32_WORD( "0101228v.u12", 0x100002, 0x80000, CRC(00d4cd6e) SHA1(eb941164cf421f22bcc9864f198348c4f30d904c) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7895,7 +7873,7 @@ ROM_START( unicorndu )
ROM_LOAD32_WORD( "bhg1584.u12", 0x100002, 0x80000, CRC(c1e878b5) SHA1(4e4e9dee4d85fbb77dc6f7d39c2dc5b0bf438aef) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7922,7 +7900,7 @@ ROM_START( venicea5 )
ROM_LOAD32_WORD( "02j02056.u14", 0x300002, 0x80000, CRC(7b695bf3) SHA1(89ea3252c9915aab81a85c6c028b21911bf8b4c4) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7950,7 +7928,7 @@ ROM_START( wafricau )
ROM_LOAD32_WORD( "ahg1535.u12", 0x100002, 0x80000, CRC(f569843c) SHA1(ccf1b727ad1dc49bca609ee0887b36a29223cace) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7972,7 +7950,7 @@ ROM_START( wamazon )
ROM_LOAD32_WORD( "0200507v.u11", 0x000002, 0x80000, CRC(2e24756a) SHA1(247db8316e7815be7524aefc43a5756fad84779a) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -7997,7 +7975,7 @@ ROM_START( wamazona )
ROM_LOAD32_WORD( "0200285v.u12", 0x100002, 0x80000, CRC(fdb10dd3) SHA1(cbf4fe97c75652f83b8ddb929b06941a70b36388) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8023,7 +8001,7 @@ ROM_START( wamazonv )
ROM_LOAD32_WORD( "01j01996.u12", 0x100002, 0x80000, CRC(945e0a05) SHA1(db7580b39c537a7b50898ee99cfceb5eb71be19a) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8048,7 +8026,7 @@ ROM_START( wikwin )
ROM_LOAD32_WORD( "0100553v.u12", 0x100002, 0x80000, CRC(06cf5d68) SHA1(5469e8087371f8b59fd9b2b413682efe2ea0f279) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8070,7 +8048,7 @@ ROM_START( wildbill )
ROM_LOAD32_WORD( "0100297v.u11", 0x000002, 0x80000, CRC(57b3c340) SHA1(4f95ed7fed697cf2bfbde8215f6e35768cf20334) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8095,7 +8073,7 @@ ROM_START( wcougar )
ROM_LOAD32_WORD( "0100167v.u12", 0x100002, 0x80000, CRC(85bb41a7) SHA1(335f29f10f216e202b93b46a376958c3f5271461) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8122,7 +8100,7 @@ ROM_START( wcougaru )
ROM_LOAD32_WORD( "nhg029604.u12", 0x100002, 0x80000, CRC(fe2bafdc) SHA1(e8b454db44a532d75b3aff323855340695688f0f) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_REGION16_BE( 0x100, "eeprom0", 0 )
@@ -8163,7 +8141,7 @@ ROM_START( wcougarua )
ROM_LOAD32_WORD( "nhg029607.u12", 0x100002, 0x80000, CRC(fe2bafdc) SHA1(e8b454db44a532d75b3aff323855340695688f0f) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8191,7 +8169,7 @@ ROM_START( wcougarub )
ROM_LOAD32_WORD( "nhg029699.u12", 0x100002, 0x80000, CRC(fe2bafdc) SHA1(e8b454db44a532d75b3aff323855340695688f0f) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8220,7 +8198,7 @@ ROM_START( wcougaruc )
ROM_LOAD32_WORD( "ahg1531.u12", 0x100002, 0x80000, CRC(5aac8336) SHA1(d1bfd21579bdcf5b46e0f4db1181d10159f0b643) ) // base
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8239,7 +8217,7 @@ ROM_START( wcoyote )
ROM_LOAD32_WORD( "ahg1515.u12", 0x100002, 0x7ff14, BAD_DUMP CRC(0068bce4) SHA1(37517f6bd53660deab471f41a4d63c4b03bf22b3) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8265,7 +8243,7 @@ ROM_START( wizways )
ROM_LOAD32_WORD( "0200396v.u12", 0x100002, 0x80000, CRC(934d7286) SHA1(205f72b62d83667e9068141346bda3bcb9742a83) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8290,7 +8268,7 @@ ROM_START( wldangel )
ROM_LOAD32_WORD( "0100337v.u12", 0x100002, 0x80000, CRC(81f0d1c8) SHA1(1e91c9457593f592c0ca4a186a49b00b2cfe256f) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8317,7 +8295,7 @@ ROM_START( wnpost )
ROM_LOAD32_WORD( "rhg041804.u12", 0x100002, 0x80000, CRC(ff70b305) SHA1(3c832ed20b1d00318fd3d2428bb469735f68965b) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8342,7 +8320,7 @@ ROM_START( wthing )
ROM_LOAD32_WORD( "0101158v.u12", 0x100002, 0x80000, CRC(450a4f4f) SHA1(e59fb3260755a125c47ff6c1a042a48b0eace72d) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8362,7 +8340,7 @@ ROM_START( wthinga )
ROM_LOAD32_WORD( "0201176v.u13", 0x200002, 0x7ffdb, BAD_DUMP CRC(026317bc) SHA1(94a48b33ddc60d6271ac0a89fc86b9f1be68f9a6) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8384,7 +8362,7 @@ ROM_START( wtiger )
ROM_LOAD32_WORD( "0200954v.u11", 0x000002, 0x80000, CRC(38e888b1) SHA1(acc857eb2be19140bbb58d70583e08f24807b9f2) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
@@ -8411,7 +8389,7 @@ ROM_START( yukongl5 )
ROM_LOAD32_WORD( "03j00191.u13", 0x200002, 0x80000, CRC(e514b87f) SHA1(5423215bc03ab8468d5ebec0dba6ba7820cdcd50) )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) /* ARM Code */
- ROM_REGION( 0x200000, "vram", ROMREGION_ERASE00 )
+
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
diff --git a/src/mame/drivers/ertictac.cpp b/src/mame/drivers/ertictac.cpp
index 475ba24611e..d9be8882e3a 100644
--- a/src/mame/drivers/ertictac.cpp
+++ b/src/mame/drivers/ertictac.cpp
@@ -21,13 +21,12 @@
PCB has a single OSC at 24MHz
*******************************************************************************************/
+
#include "emu.h"
#include "includes/archimds.h"
#include "cpu/arm/arm.h"
#include "machine/aakart.h"
#include "machine/i2cmem.h"
-#include "sound/volt_reg.h"
-#include "speaker.h"
class ertictac_state : public archimedes_state
@@ -73,8 +72,8 @@ void ertictac_state::ertictac_map(address_map &map)
map(0x03000000, 0x033fffff).rw(FUNC(ertictac_state::archimedes_ioc_r), FUNC(ertictac_state::archimedes_ioc_w));
map(0x03340000, 0x0334001f).r(FUNC(ertictac_state::ertictac_podule_r));
map(0x033c0000, 0x033c001f).r(FUNC(ertictac_state::ertictac_podule_r));
- map(0x03400000, 0x035fffff).rw(FUNC(ertictac_state::archimedes_vidc_r), FUNC(ertictac_state::archimedes_vidc_w));
- map(0x03600000, 0x037fffff).rw(FUNC(ertictac_state::archimedes_memc_r), FUNC(ertictac_state::archimedes_memc_w));
+ map(0x03400000, 0x035fffff).w(m_vidc, FUNC(acorn_vidc10_device::write));
+ map(0x03600000, 0x037fffff).w(FUNC(ertictac_state::archimedes_memc_w));
map(0x03800000, 0x03ffffff).rom().region("maincpu", 0).w(FUNC(ertictac_state::archimedes_memc_page_w));
}
@@ -233,26 +232,9 @@ void ertictac_state::ertictac(machine_config &config)
// AAKART(config, m_kart, XTAL(24'000'000)/3); // TODO: frequency
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_raw(XTAL(16'000'000), 1024,0,735, 624/2,0,292); // RiscOS 3 default screen settings
- m_screen->set_screen_update(FUNC(archimedes_state::screen_update));
-
- PALETTE(config, m_palette).set_entries(0x200);
-
- SPEAKER(config, "speaker").front_center();
- for (int i = 0; i < 8; i++)
- {
- DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_dac[i], 0).add_route(0, "speaker", 0.05); // unknown DAC
- }
- voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
- vref.add_route(0, "dac0", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac0", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac3", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac4", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac4", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac5", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac5", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac6", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac6", -1.0, DAC_VREF_NEG_INPUT);
- vref.add_route(0, "dac7", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac7", -1.0, DAC_VREF_NEG_INPUT);
+ ACORN_VIDC10(config, m_vidc, 0);
+ m_vidc->vblank().set(FUNC(ertictac_state::vblank_irq));
+ m_vidc->sound_drq().set(FUNC(ertictac_state::sound_drq));
}
ROM_START( ertictac )
@@ -273,8 +255,6 @@ ROM_START( ertictac )
ROM_LOAD32_BYTE( "eroti_ver01_-14-", 0xc0001, 0x10000, CRC(3029567c) SHA1(6d49bea3a3f6f11f4182a602d37b53f1f896c154) )
ROM_LOAD32_BYTE( "eroti_ver01_-15-", 0xc0002, 0x10000, CRC(500997ab) SHA1(028c7b3ca03141e5b596ab1e2ab98d0ccd9bf93a) )
ROM_LOAD32_BYTE( "eroti_ver01_-16-", 0xc0003, 0x10000, CRC(70a8d136) SHA1(50b11f5701ed5b79a5d59c9a3c7d5b7528e66a4d) )
-
- ROM_REGION(0x200000, "vram", ROMREGION_ERASE00)
ROM_END
@@ -296,8 +276,6 @@ ROM_START( ertictaca ) /* PCB had sticker printed "092121 EROTICTAC" */
ROM_LOAD32_BYTE( "eroti_ver01_-14-", 0xc0001, 0x10000, CRC(3029567c) SHA1(6d49bea3a3f6f11f4182a602d37b53f1f896c154) )
ROM_LOAD32_BYTE( "eroti_ver01_-15-", 0xc0002, 0x10000, CRC(500997ab) SHA1(028c7b3ca03141e5b596ab1e2ab98d0ccd9bf93a) )
ROM_LOAD32_BYTE( "eroti_ver01_-16-", 0xc0003, 0x10000, CRC(70a8d136) SHA1(50b11f5701ed5b79a5d59c9a3c7d5b7528e66a4d) )
-
- ROM_REGION(0x200000, "vram", ROMREGION_ERASE00)
ROM_END
ROM_START( ertictacb )
@@ -318,8 +296,6 @@ ROM_START( ertictacb )
ROM_LOAD32_BYTE( "eroti_ver01_-14-", 0xc0001, 0x10000, CRC(3029567c) SHA1(6d49bea3a3f6f11f4182a602d37b53f1f896c154) )
ROM_LOAD32_BYTE( "eroti_ver01_-15-", 0xc0002, 0x10000, CRC(500997ab) SHA1(028c7b3ca03141e5b596ab1e2ab98d0ccd9bf93a) )
ROM_LOAD32_BYTE( "eroti_ver01_-16-", 0xc0003, 0x10000, CRC(70a8d136) SHA1(50b11f5701ed5b79a5d59c9a3c7d5b7528e66a4d) )
-
- ROM_REGION(0x200000, "vram", ROMREGION_ERASE00)
ROM_END
@@ -342,8 +318,6 @@ ROM_START( poizone )
ROM_LOAD32_BYTE( "p_son22.bin", 0x140001, 0x10000, CRC(16f0bb52) SHA1(893ab1e72b84de7a38f88f9d713769968ebd4553) )
ROM_LOAD32_BYTE( "p_son23.bin", 0x140002, 0x10000, CRC(e9c118b2) SHA1(110d9a204e701b9b54d89f027f8892c3f3a819c7) )
ROM_LOAD32_BYTE( "p_son24.bin", 0x140003, 0x10000, CRC(a09d7f55) SHA1(e0d562c655c16034b40db93de801b98b7948beb2) )
-
- ROM_REGION(0x200000, "vram", ROMREGION_ERASE00)
ROM_END
GAME( 1990, ertictac, 0, ertictac, ertictac, ertictac_state, init_ertictac, ROT0, "Sisteme", "Erotictac/Tactic", MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/includes/archimds.h b/src/mame/includes/archimds.h
index 2e13bb33219..e6080400cfb 100644
--- a/src/mame/includes/archimds.h
+++ b/src/mame/includes/archimds.h
@@ -14,9 +14,7 @@
#include "machine/aakart.h"
#include "machine/i2cmem.h"
#include "machine/wd_fdc.h"
-#include "sound/dac.h"
-#include "emupal.h"
-#include "screen.h"
+#include "machine/acorn_vidc.h"
// interrupt definitions. these are for the real Archimedes computer - arcade
// and gambling knockoffs likely are a bit different.
@@ -53,15 +51,12 @@ public:
m_kart(*this, "kart"),
m_maincpu(*this, "maincpu"),
m_i2cmem(*this, "i2cmem"),
+ m_vidc(*this, "vidc"),
m_fdc(*this, "fdc"),
m_floppy0(*this, "fdc:0"),
m_floppy1(*this, "fdc:1"),
m_region_maincpu(*this, "maincpu"),
- m_region_vram(*this, "vram"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette"),
- m_joy(*this, "joy_p%u",1),
- m_dac(*this, { "dac0", "dac1", "dac2", "dac3", "dac4", "dac5", "dac6", "dac7" })
+ m_joy(*this, "joy_p%u",1)
{ }
optional_device<aakart_device> m_kart;
@@ -79,24 +74,16 @@ public:
DECLARE_READ32_MEMBER(aristmk5_drame_memc_logical_r);
DECLARE_READ32_MEMBER(archimedes_memc_logical_r);
DECLARE_WRITE32_MEMBER(archimedes_memc_logical_w);
- DECLARE_READ32_MEMBER(archimedes_memc_r);
DECLARE_WRITE32_MEMBER(archimedes_memc_w);
DECLARE_WRITE32_MEMBER(archimedes_memc_page_w);
DECLARE_READ32_MEMBER(archimedes_ioc_r);
DECLARE_WRITE32_MEMBER(archimedes_ioc_w);
- DECLARE_READ32_MEMBER(archimedes_vidc_r);
- DECLARE_WRITE32_MEMBER(archimedes_vidc_w);
DECLARE_WRITE_LINE_MEMBER( a310_kart_rx_w );
DECLARE_WRITE_LINE_MEMBER( a310_kart_tx_w );
uint8_t m_i2c_clk;
int16_t m_memc_pages[0x2000]; // the logical RAM area is 32 megs, and the smallest page size is 4k
- uint32_t m_vidc_regs[256];
- uint8_t m_cursor_vram[0x8000]; // size -> max(VCER) - min(VCSR) * 32 = 0x7fe0
uint8_t m_ioc_regs[0x80/4];
- uint8_t m_vidc_bpp_mode;
- uint8_t m_vidc_interlace;
- uint16_t m_vidc_vblank_time;
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -104,29 +91,25 @@ public:
protected:
required_device<arm_cpu_device> m_maincpu;
optional_device<i2cmem_device> m_i2cmem;
+ required_device<acorn_vidc10_device> m_vidc;
optional_device<wd1772_device> m_fdc;
optional_device<floppy_connector> m_floppy0;
optional_device<floppy_connector> m_floppy1;
required_memory_region m_region_maincpu;
- required_memory_region m_region_vram;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
optional_ioport_array<2> m_joy;
- required_device_array<dac_16bit_r2r_twos_complement_device, 8> m_dac;
+
+ DECLARE_WRITE_LINE_MEMBER( vblank_irq );
+ DECLARE_WRITE_LINE_MEMBER( sound_drq );
private:
- static const device_timer_id TIMER_VBLANK = 0;
- static const device_timer_id TIMER_VIDEO = 1;
- static const device_timer_id TIMER_AUDIO = 2;
static const device_timer_id TIMER_IOC = 3;
- void vidc_vblank();
+// void vidc_vblank();
void vidc_video_tick();
void vidc_audio_tick();
void ioc_timer(int param);
- void vidc_dynamic_res_change();
void latch_timer_cnt(int tmr);
void a310_set_timer(int tmr);
DECLARE_READ32_MEMBER(ioc_ctrl_r);
@@ -136,14 +119,11 @@ private:
uint32_t m_memc_pagesize;
int m_memc_latchrom;
uint32_t m_ioc_timercnt[4], m_ioc_timerout[4];
- uint32_t m_vidc_vidstart, m_vidc_vidend, m_vidc_vidinit, m_vidc_vidcur,m_vidc_cinit;
+ uint32_t m_vidc_vidstart, m_vidc_vidend, m_vidc_vidinit, m_vidc_vidcur, m_vidc_cinit;
uint32_t m_vidc_sndstart, m_vidc_sndend, m_vidc_sndcur, m_vidc_sndendcur;
uint8_t m_video_dma_on,m_audio_dma_on;
- uint8_t m_vidc_pixel_clk;
- uint8_t m_vidc_stereo_reg[8];
bool m_cursor_enabled;
- emu_timer *m_timer[4], *m_snd_timer, *m_vid_timer;
- emu_timer *m_vbl_timer;
+ emu_timer *m_timer[4];
uint8_t m_floppy_select;
bool check_floppy_ready();
uint8_t m_joy_serial_data;
@@ -185,22 +165,4 @@ private:
#define T3_GO 0x78/4
#define T3_LATCH 0x7c/4
-#define VIDC_HCR 0x80
-#define VIDC_HSWR 0x84
-#define VIDC_HBSR 0x88
-#define VIDC_HDSR 0x8c
-#define VIDC_HDER 0x90
-#define VIDC_HBER 0x94
-#define VIDC_HCSR 0x98
-#define VIDC_HIR 0x9c
-
-#define VIDC_VCR 0xa0
-#define VIDC_VSWR 0xa4
-#define VIDC_VBSR 0xa8
-#define VIDC_VDSR 0xac
-#define VIDC_VDER 0xb0
-#define VIDC_VBER 0xb4
-#define VIDC_VCSR 0xb8
-#define VIDC_VCER 0xbc
-
#endif // MAME_INCLUDES_ARCHIMEDES_H
diff --git a/src/mame/machine/archimds.cpp b/src/mame/machine/archimds.cpp
index 319c963afa5..d4231028005 100644
--- a/src/mame/machine/archimds.cpp
+++ b/src/mame/machine/archimds.cpp
@@ -34,7 +34,7 @@
#include "debugger.h"
static const int page_sizes[4] = { 4096, 8192, 16384, 32768 };
-static const uint32_t pixel_rate[4] = { 8000000, 12000000, 16000000, 24000000};
+//static const uint32_t pixel_rate[4] = { 8000000, 12000000, 16000000, 24000000};
#define IOC_LOG 0
#define CRTC_LOG 0
@@ -97,30 +97,42 @@ void archimedes_state::device_timer(emu_timer &timer, device_timer_id id, int pa
{
switch (id)
{
- case TIMER_VBLANK: vidc_vblank();break;
- case TIMER_VIDEO: vidc_video_tick(); break;
- case TIMER_AUDIO: vidc_audio_tick(); break;
+ //case TIMER_VBLANK: vidc_vblank();break;
+ //case TIMER_VIDEO: vidc_video_tick(); break;
+ //case TIMER_AUDIO: vidc_audio_tick(); break;
case TIMER_IOC: ioc_timer(param); break;
}
}
-void archimedes_state::vidc_vblank()
+WRITE_LINE_MEMBER( archimedes_state::vblank_irq )
{
- archimedes_request_irq_a(ARCHIMEDES_IRQA_VBL);
+ if (state)
+ {
+ archimedes_request_irq_a(ARCHIMEDES_IRQA_VBL);
+ if (m_video_dma_on)
+ vidc_video_tick();
+ }
+
// set up for next vbl
- m_vbl_timer->adjust(m_screen->time_until_pos(m_vidc_vblank_time));
+ //m_vbl_timer->adjust(m_screen->time_until_pos(m_vidc_vblank_time));
+}
+
+WRITE_LINE_MEMBER( archimedes_state::sound_drq )
+{
+ if (state)
+ vidc_audio_tick();
}
+
/* video DMA */
-/* TODO: what type of DMA this is, burst or cycle steal? Docs doesn't explain it (4 usec is the DRAM refresh). */
-/* TODO: change m_region_vram into proper alloc array */
-/* TODO: Erotictac and Poizone sets up vidinit register AFTER vidend, for double buffering? (fixes Poizone "Eterna" logo display on attract) */
+// TODO: what type of DMA this is, burst or cycle steal? Docs doesn't explain it (4 usec is the DRAM refresh). */
+// TODO: Erotictac and Poizone sets up vidinit register AFTER vidend, for double buffering? (fixes Poizone "Eterna" logo display on attract)
+// TODO: understand how to make quazer to work (sets video DMA param in-flight)
void archimedes_state::vidc_video_tick()
{
address_space &space = m_maincpu->space(AS_PROGRAM);
- static uint8_t *vram = m_region_vram->base();
uint32_t size;
uint32_t offset_ptr;
@@ -134,7 +146,7 @@ void archimedes_state::vidc_video_tick()
for(m_vidc_vidcur = 0;m_vidc_vidcur < size;m_vidc_vidcur++)
{
- vram[m_vidc_vidcur] = (space.read_byte(offset_ptr));
+ m_vidc->write_vram(m_vidc_vidcur, space.read_byte(offset_ptr));
offset_ptr++;
if(offset_ptr >= m_vidc_vidend+0x10) // TODO: correct?
offset_ptr = m_vidc_vidstart;
@@ -142,73 +154,21 @@ void archimedes_state::vidc_video_tick()
if(m_cursor_enabled == true)
{
- uint32_t ccur_size = (m_vidc_regs[VIDC_VCER] - m_vidc_regs[VIDC_VCSR]) * 32;
+ uint32_t ccur_size = m_vidc->get_cursor_size();
for(uint32_t ccur = 0; ccur < ccur_size; ccur++)
- m_cursor_vram[ccur] = (space.read_byte(m_vidc_cinit+ccur));
- }
-
- if(m_video_dma_on)
- {
- m_vid_timer->adjust(m_screen->time_until_pos(m_vidc_vblank_time+1));
+ m_vidc->write_cram(ccur, space.read_byte(m_vidc_cinit+ccur));
}
- else
- m_vid_timer->adjust(attotime::never);
}
/* audio DMA */
void archimedes_state::vidc_audio_tick()
{
address_space &space = m_maincpu->space(AS_PROGRAM);
- uint8_t ulaw_comp;
- int16_t res;
uint8_t ch;
- static const int16_t mulawTable[256] =
- {
- -32124,-31100,-30076,-29052,-28028,-27004,-25980,-24956,
- -23932,-22908,-21884,-20860,-19836,-18812,-17788,-16764,
- -15996,-15484,-14972,-14460,-13948,-13436,-12924,-12412,
- -11900,-11388,-10876,-10364, -9852, -9340, -8828, -8316,
- -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140,
- -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092,
- -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004,
- -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980,
- -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436,
- -1372, -1308, -1244, -1180, -1116, -1052, -988, -924,
- -876, -844, -812, -780, -748, -716, -684, -652,
- -620, -588, -556, -524, -492, -460, -428, -396,
- -372, -356, -340, -324, -308, -292, -276, -260,
- -244, -228, -212, -196, -180, -164, -148, -132,
- -120, -112, -104, -96, -88, -80, -72, -64,
- -56, -48, -40, -32, -24, -16, -8, -1,
- 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956,
- 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764,
- 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412,
- 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316,
- 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140,
- 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092,
- 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004,
- 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980,
- 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436,
- 1372, 1308, 1244, 1180, 1116, 1052, 988, 924,
- 876, 844, 812, 780, 748, 716, 684, 652,
- 620, 588, 556, 524, 492, 460, 428, 396,
- 372, 356, 340, 324, 308, 292, 276, 260,
- 244, 228, 212, 196, 180, 164, 148, 132,
- 120, 112, 104, 96, 88, 80, 72, 64,
- 56, 48, 40, 32, 24, 16, 8, 0
- };
for(ch=0; ch<8; ch++)
- {
- uint8_t ulaw_temp = (space.read_byte(m_vidc_sndcur + ch)) ^ 0xff;
-
- ulaw_comp = (ulaw_temp>>1) | ((ulaw_temp&1)<<7);
-
- res = mulawTable[ulaw_comp];
-
- m_dac[ch & 7]->write(res);
- }
+ m_vidc->write_dac(ch, (space.read_byte(m_vidc_sndcur + ch)));
m_vidc_sndcur+=8;
@@ -216,13 +176,12 @@ void archimedes_state::vidc_audio_tick()
{
archimedes_request_irq_b(ARCHIMEDES_IRQB_SOUND_EMPTY);
+ // TODO: nuke this implementation detail, repeated below
+ m_vidc->update_sound_mode(m_audio_dma_on);
if(!m_audio_dma_on)
{
- m_snd_timer->adjust(attotime::never);
for(ch=0; ch<8; ch++)
- {
- m_dac[ch & 7]->write(0);
- }
+ m_vidc->clear_dac(ch);
}
else
{
@@ -293,21 +252,12 @@ void archimedes_state::archimedes_reset()
m_ioc_regs[IRQ_STATUS_B] = 0x00; //set up IL[1] On
m_ioc_regs[FIQ_STATUS] = 0x80; //set up Force FIQ
m_ioc_regs[CONTROL] = 0xff;
-
- m_vidc_vblank_time = 10000; // set a stupidly high time so it doesn't fire off
- m_vbl_timer->adjust(attotime::never);
-
- m_cursor_enabled = false;
- memset(m_cursor_vram, 0, sizeof(m_cursor_vram));
}
void archimedes_state::archimedes_init()
{
m_memc_pagesize = 0;
- m_vbl_timer = timer_alloc(TIMER_VBLANK);
- m_vbl_timer->adjust(attotime::never);
-
m_timer[0] = timer_alloc(TIMER_IOC);
m_timer[1] = timer_alloc(TIMER_IOC);
m_timer[2] = timer_alloc(TIMER_IOC);
@@ -316,10 +266,6 @@ void archimedes_state::archimedes_init()
m_timer[1]->adjust(attotime::never);
m_timer[2]->adjust(attotime::never);
m_timer[3]->adjust(attotime::never);
-
- m_vid_timer = timer_alloc(TIMER_VIDEO);
- m_snd_timer = timer_alloc(TIMER_AUDIO);
- m_snd_timer->adjust(attotime::never);
}
READ32_MEMBER(archimedes_state::archimedes_memc_logical_r)
@@ -520,13 +466,8 @@ READ32_MEMBER( archimedes_state::ioc_ctrl_r )
case CONTROL:
{
uint8_t i2c_data = 1;
- uint8_t flyback; //internal name for vblank here
- int vert_pos;
bool floppy_ready_state;
- vert_pos = m_screen->vpos();
- flyback = (vert_pos <= m_vidc_regs[VIDC_VDSR] || vert_pos >= m_vidc_regs[VIDC_VDER]) ? 0x80 : 0x00;
-
if ( m_i2cmem )
{
i2c_data = (m_i2cmem->read_sda() & 1);
@@ -534,7 +475,7 @@ READ32_MEMBER( archimedes_state::ioc_ctrl_r )
floppy_ready_state = check_floppy_ready();
- return (flyback) | (m_ioc_regs[CONTROL] & 0x78) | (floppy_ready_state<<2) | (m_i2c_clk<<1) | i2c_data;
+ return (m_vidc->flyback_r()<<7) | (m_ioc_regs[CONTROL] & 0x78) | (floppy_ready_state<<2) | (m_i2c_clk<<1) | i2c_data;
}
case KART: // keyboard read
@@ -628,8 +569,8 @@ WRITE32_MEMBER( archimedes_state::ioc_ctrl_w )
/* bit 7 forces an IRQ trap */
archimedes_request_irq_a((data & 0x80) ? ARCHIMEDES_IRQA_FORCE : 0);
- if(data & 0x08) //set up the VBLANK timer
- m_vbl_timer->adjust(m_screen->time_until_pos(m_vidc_vblank_time));
+ //if(data & 0x08) //set up the VBLANK timer
+ // m_vbl_timer->adjust(m_screen->time_until_pos(m_vidc_vblank_time));
break;
@@ -747,10 +688,11 @@ READ32_MEMBER(archimedes_state::archimedes_ioc_r)
}
case 2:
// RTFM joystick interface routes here
+ // TODO: slot interface for econet (reads registers 0 and 1 during boot)
switch(ioc_addr)
{
case 0x3a0000:
- return 0xed; // ID? Status?
+ return 0xed; // ID for econet
case 0x3a0004:
return m_joy[0].read_safe(0xff);
case 0x3a0008:
@@ -770,12 +712,13 @@ READ32_MEMBER(archimedes_state::archimedes_ioc_r)
case 5:
if (m_fdc)
{
+ // TODO: IOEB slot interface
switch(ioc_addr & 0xfffc)
{
case 0x18: return 0xff; // FDC latch B
case 0x40: return 0xff; // FDC latch A
- case 0x50: return 0; //fdc type, new model returns 5 here
- case 0x70: return 0x0f;
+ case 0x50: return 0; //fdc type, an 82c711 returns 5 here
+ case 0x70: return 0x0f; // monitor type, TBD
case 0x74: return 0xff; // unknown
case 0x78: // serial joystick?
case 0x7c:
@@ -917,178 +860,6 @@ WRITE32_MEMBER(archimedes_state::archimedes_ioc_w)
logerror("(PC=%08x) I/O: W %x @ %x (mask %08x)\n", m_maincpu->pc(), data, (offset*4)+0x3000000, mem_mask);
}
-READ32_MEMBER(archimedes_state::archimedes_vidc_r)
-{
- return 0;
-}
-
-void archimedes_state::vidc_dynamic_res_change()
-{
- /* sanity checks - first pass */
- /*
- total cycles + border end
- */
- if(m_vidc_regs[VIDC_HCR] && m_vidc_regs[VIDC_HBER] &&
- m_vidc_regs[VIDC_VCR] && m_vidc_regs[VIDC_VBER])
- {
- /* sanity checks - second pass */
- /*
- total cycles >= border end >= border start
- */
- if((m_vidc_regs[VIDC_HCR] >= m_vidc_regs[VIDC_HBER]) &&
- (m_vidc_regs[VIDC_HBER] >= m_vidc_regs[VIDC_HBSR]) &&
- (m_vidc_regs[VIDC_VBER] >= m_vidc_regs[VIDC_VBSR]))
- {
- rectangle const visarea(
- 0, m_vidc_regs[VIDC_HBER] - m_vidc_regs[VIDC_HBSR] - 1,
- 0, (m_vidc_regs[VIDC_VBER] - m_vidc_regs[VIDC_VBSR]) * (m_vidc_interlace + 1));
-
- m_vidc_vblank_time = m_vidc_regs[VIDC_VBER] * (m_vidc_interlace+1);
- //logerror("Configuring: htotal %d vtotal %d border %d x %d display origin %d x %d vblank = %d\n",
- // m_vidc_regs[VIDC_HCR], m_vidc_regs[VIDC_VCR],
- // visarea.right(), visarea.bottom(),
- // m_vidc_regs[VIDC_HDER]-m_vidc_regs[VIDC_HDSR],m_vidc_regs[VIDC_VDER]-m_vidc_regs[VIDC_VDSR]+1,
- // m_vidc_vblank_time);
-
- attoseconds_t const refresh = HZ_TO_ATTOSECONDS(pixel_rate[m_vidc_pixel_clk]) * m_vidc_regs[VIDC_HCR] * m_vidc_regs[VIDC_VCR];
-
- m_screen->configure(m_vidc_regs[VIDC_HCR], m_vidc_regs[VIDC_VCR] * (m_vidc_interlace+1), visarea, refresh);
- }
- }
-}
-
-WRITE32_MEMBER(archimedes_state::archimedes_vidc_w)
-{
- uint32_t reg = data>>24;
- uint32_t val = data & 0xffffff;
- #if CRTC_LOG
- static const char *const vrnames[] =
- {
- "horizontal total",
- "horizontal sync width",
- "horizontal border start",
- "horizontal display start",
- "horizontal display end",
- "horizontal border end",
- "horizontal cursor start",
- "horizontal interlace",
- "vertical total",
- "vertical sync width",
- "vertical border start",
- "vertical display start",
- "vertical display end",
- "vertical border end",
- "vertical cursor start",
- "vertical cursor end",
- };
- #endif
-
-
- // 0x00 - 0x3c Video Palette Logical Colors (16 colors)
- // 0x40 Border Color
- // 0x44 - 0x4c Cursor Palette Logical Colors
- if (reg <= 0x4c)
- {
- int r,g,b;
-
- //i = (val & 0x1000) >> 12; //supremacy bit
- b = (val & 0x0f00) >> 8;
- g = (val & 0x00f0) >> 4;
- r = (val & 0x000f) >> 0;
-
- //if(reg == 0x40 && val & 0xfff)
- // logerror("WARNING: border color write here (PC=%08x)!\n",m_maincpu->pc());
-
- m_palette->set_pen_color(reg >> 2, pal4bit(r), pal4bit(g), pal4bit(b) );
-
- /* handle 8bpp colors here */
- if(reg <= 0x3c)
- {
- int i;
-
- for(i=0;i<0x100;i+=0x10)
- {
- b = ((val & 0x700) >> 8) | ((i & 0x80) >> 4);
- g = ((val & 0x030) >> 4) | ((i & 0x60) >> 3);
- r = ((val & 0x007) >> 0) | ((i & 0x10) >> 1);
-
- m_palette->set_pen_color((reg >> 2) + 0x100 + i, pal4bit(r), pal4bit(g), pal4bit(b) );
- }
- }
-
- // update partials
- m_screen->update_partial(m_screen->vpos());
- }
- else if (reg >= 0x60 && reg <= 0x7c)
- {
- m_vidc_stereo_reg[(reg >> 2) & 7] = val & 0x07;
-
-// popmessage("%02x %02x %02x %02x %02x %02x %02x %02x",vidc_stereo_reg[0],vidc_stereo_reg[1],vidc_stereo_reg[2],vidc_stereo_reg[3]
-// ,vidc_stereo_reg[4],vidc_stereo_reg[5],vidc_stereo_reg[6],vidc_stereo_reg[7]);
- }
- else if (reg >= 0x80 && reg <= 0xbc)
- {
- switch(reg)
- {
- case VIDC_HCR: m_vidc_regs[VIDC_HCR] = ((val >> 14)<<1)+1; break;
-// case VIDC_HSWR: m_vidc_regs[VIDC_HSWR] = (val >> 14)+1; break;
- case VIDC_HBSR: m_vidc_regs[VIDC_HBSR] = ((val >> 14)<<1)+1; break;
- case VIDC_HDSR: m_vidc_regs[VIDC_HDSR] = (val >> 14); break;
- case VIDC_HDER: m_vidc_regs[VIDC_HDER] = (val >> 14); break;
- case VIDC_HBER: m_vidc_regs[VIDC_HBER] = ((val >> 14)<<1)+1; break;
- case VIDC_HCSR: m_vidc_regs[VIDC_HCSR] = ((val >> 13) & 0x7ff) + 6; break;
-// #define VIDC_HIR 0x9c
-
- case VIDC_VCR: m_vidc_regs[VIDC_VCR] = ((val >> 14))+1; break;
-// #define VIDC_VSWR 0xa4
- case VIDC_VBSR: m_vidc_regs[VIDC_VBSR] = (val >> 14)+1; break;
- case VIDC_VDSR: m_vidc_regs[VIDC_VDSR] = (val >> 14)+1; break;
- case VIDC_VDER: m_vidc_regs[VIDC_VDER] = (val >> 14)+1; break;
- case VIDC_VBER: m_vidc_regs[VIDC_VBER] = (val >> 14)+1; break;
- case VIDC_VCSR: m_vidc_regs[VIDC_VCSR] = ((val >> 14) & 0x3ff) + 1; break;
- case VIDC_VCER: m_vidc_regs[VIDC_VCER] = ((val >> 14) & 0x3ff) + 1; break;
- }
-
-
- #if CRTC_LOG
- if(reg != VIDC_VCSR && reg != VIDC_VCER && reg != VIDC_HCSR)
- logerror("VIDC: %s = %d\n", vrnames[(reg-0x80)/4], m_vidc_regs[reg]);
- #endif
-
- vidc_dynamic_res_change();
- }
- else if (reg == 0xc0)
- {
- m_vidc_regs[reg] = val & 0xffff;
-
- if (m_audio_dma_on)
- {
- double sndhz = 1e6 / ((m_vidc_regs[0xc0] & 0xff) + 2);
- sndhz /= 8.0;
- m_snd_timer->adjust(attotime::zero, 0, attotime::from_hz(sndhz));
- //printf("VIDC: sound freq to %d, sndhz = %f\n", (val & 0xff)-2, sndhz);
- }
- }
- else if (reg == 0xe0)
- {
- m_vidc_bpp_mode = ((val & 0x0c) >> 2);
- m_vidc_interlace = ((val & 0x40) >> 6);
- m_vidc_pixel_clk = (val & 0x03);
- //todo: vga/svga modes sets 0x1000
- vidc_dynamic_res_change();
- }
- else
- {
- logerror("VIDC: %x to register %x\n", val, reg);
- m_vidc_regs[reg] = val&0xffff;
- }
-}
-
-READ32_MEMBER(archimedes_state::archimedes_memc_r)
-{
- return 0;
-}
-
WRITE32_MEMBER(archimedes_state::archimedes_memc_w)
{
// is it a register?
@@ -1113,6 +884,7 @@ WRITE32_MEMBER(archimedes_state::archimedes_memc_w)
case 3: /* cursor init */
m_cursor_enabled = true;
+ m_vidc->set_cursor_enable(m_cursor_enabled);
m_vidc_cinit = 0x2000000 | (((data>>2)&0x7fff)*16);
//printf("MEMC: CURSOR INIT %08x\n",((data>>2)&0x7fff)*16);
break;
@@ -1138,24 +910,25 @@ WRITE32_MEMBER(archimedes_state::archimedes_memc_w)
logerror("(PC = %08x) MEMC: %x to Control (page size %d, %s, %s)\n", m_maincpu->pc(), data & 0x1ffc, page_sizes[m_memc_pagesize], ((data>>10)&1) ? "Video DMA on" : "Video DMA off", ((data>>11)&1) ? "Sound DMA on" : "Sound DMA off");
- m_video_dma_on = ((data>>10)&1);
- m_audio_dma_on = ((data>>11)&1);
+ m_video_dma_on = BIT(data, 10);
+ m_audio_dma_on = BIT(data, 11);
- if ((data>>10)&1)
+ if (m_video_dma_on)
{
m_vidc_vidcur = 0;
- m_vid_timer->adjust(m_screen->time_until_pos(m_vidc_vblank_time+1));
+ // TODO: update internally
}
else
+ {
m_cursor_enabled = false;
+ m_vidc->set_cursor_enable(m_cursor_enabled);
+ }
- if ((data>>11) & 1)
+ m_vidc->update_sound_mode(m_audio_dma_on);
+ if (m_audio_dma_on)
{
//printf("MEMC: Starting audio DMA at %d uSec, buffer from %x to %x\n", ((m_vidc_regs[0xc0]&0xff)-2)*8, m_vidc_sndstart, m_vidc_sndend);
- double sndhz = 1e6 / ((m_vidc_regs[0xc0] & 0xff) + 2);
- sndhz /= 8.0;
- m_snd_timer->adjust(attotime::zero, 0, attotime::from_hz(sndhz));
//printf("MEMC: audio DMA start, sound freq %d, sndhz = %f\n", (m_vidc_regs[0xc0] & 0xff)-2, sndhz);
m_vidc_sndcur = m_vidc_sndstart;
diff --git a/src/mame/video/archimds.cpp b/src/mame/video/archimds.cpp
deleted file mode 100644
index 7b18dc83f30..00000000000
--- a/src/mame/video/archimds.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-// license:LGPL-2.1+
-// copyright-holders:Angelo Salese, R. Belmont, Juergen Buchmueller
-/***************************************************************************
-
- Acorn Archimedes VIDC (VIDeo Controller) emulation
-
-***************************************************************************/
-
-#include "emu.h"
-#include "includes/archimds.h"
-
-uint32_t archimedes_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- int xstart,ystart,xend,yend;
- int res_x,res_y;
- int xsize,ysize;
- int calc_dxs = 0,calc_dxe = 0;
- const uint8_t x_step[4] = { 19, 11, 7, 5 };
-
- /* border color */
- bitmap.fill(m_palette->pen(0x10), cliprect);
-
- /* define X display area through BPP mode register */
- calc_dxs = (m_vidc_regs[VIDC_HDSR]*2)+x_step[m_vidc_bpp_mode & 3];
- calc_dxe = (m_vidc_regs[VIDC_HDER]*2)+x_step[m_vidc_bpp_mode & 3];
-
- /* now calculate display clip rectangle start/end areas */
- xstart = (calc_dxs)-m_vidc_regs[VIDC_HBSR];
- ystart = (m_vidc_regs[VIDC_VDSR]-m_vidc_regs[VIDC_VBSR]);
- xend = (calc_dxe)+xstart;
- yend = (m_vidc_regs[VIDC_VDER] * (m_vidc_interlace+1))+ystart;
-
- /* disable the screen if display params are invalid */
- if(xstart > xend || ystart > yend)
- return 0;
-
- xsize = calc_dxe-calc_dxs;
- ysize = m_vidc_regs[VIDC_VDER]-m_vidc_regs[VIDC_VDSR];
-
- {
- int count;
- int x,y,xi;
- uint8_t pen;
- static uint8_t *vram = memregion("vram")->base();
-
- count = (0);
-
- switch(m_vidc_bpp_mode)
- {
- case 0: //1 bpp
- {
- for(y=0;y<ysize;y++)
- {
- for(x=0;x<xsize;x+=8)
- {
- pen = vram[count];
-
- for(xi=0;xi<8;xi++)
- {
- res_x = x+xi+xstart;
- res_y = (y+ystart)*(m_vidc_interlace+1);
-
- if(m_vidc_interlace)
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi))&0x1);
- if (cliprect.contains(res_x, res_y+1) && (res_x) <= xend && (res_y+1) <= yend)
- bitmap.pix32(res_y+1, res_x) = m_palette->pen((pen>>(xi))&0x1);
- }
- else
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi))&0x1);
- }
- }
-
- count++;
- }
- }
- }
- break;
- case 1: //2 bpp
- {
- for(y=0;y<ysize;y++)
- {
- for(x=0;x<xsize;x+=4)
- {
- pen = vram[count];
-
- for(xi=0;xi<4;xi++)
- {
- res_x = x+xi+xstart;
- res_y = (y+ystart)*(m_vidc_interlace+1);
-
- if(m_vidc_interlace)
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi*2))&0x3);
- if (cliprect.contains(res_x, res_y+1) && (res_x) <= xend && (res_y+1) <= yend)
- bitmap.pix32(res_y+1, res_x) = m_palette->pen((pen>>(xi*2))&0x3);
- }
- else
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi*2))&0x3);
- }
- }
-
- count++;
- }
- }
- }
- break;
- case 2: //4 bpp
- {
- for(y=0;y<ysize;y++)
- {
- for(x=0;x<xsize;x+=2)
- {
- pen = vram[count];
-
- for(xi=0;xi<2;xi++)
- {
- res_x = x+xi+xstart;
- res_y = (y+ystart)*(m_vidc_interlace+1);
-
- if(m_vidc_interlace)
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi*4))&0xf);
- if (cliprect.contains(res_x, res_y+1) && (res_x) <= xend && (res_y+1) <= yend)
- bitmap.pix32(res_y+1, res_x) = m_palette->pen((pen>>(xi*4))&0xf);
- }
- else
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen((pen>>(xi*4))&0xf);
- }
- }
-
- count++;
- }
- }
- }
- break;
- case 3: //8 bpp
- {
- for(y=0;y<ysize;y++)
- {
- for(x=0;x<xsize;x++)
- {
- pen = vram[count];
-
- res_x = x+xstart;
- res_y = (y+ystart)*(m_vidc_interlace+1);
-
- if(m_vidc_interlace)
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen((pen&0xff)+0x100);
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y+1) <= yend)
- bitmap.pix32(res_y+1, res_x) = m_palette->pen((pen&0xff)+0x100);
- }
- else
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen((pen&0xff)+0x100);
- }
-
- count++;
- }
- }
- }
- break;
- default:
- popmessage("Unemulated bpp mode %02x, contact MAME/MESSdev",m_vidc_bpp_mode);
- break;
- }
-
-
- if(m_cursor_enabled == true)
- {
- count = 0;
- int cursor_h = m_vidc_regs[VIDC_VCER] - m_vidc_regs[VIDC_VCSR];
-
- if (cursor_h <= 0)
- return 0;
-
- for(y=0; y<cursor_h; y++)
- {
- for(x=0;x<32;x+=4)
- {
- for(xi=0;xi<4;xi++)
- {
- uint8_t cursor_dot;
- pen = m_cursor_vram[count];
-
- res_x = m_vidc_regs[VIDC_HCSR] - m_vidc_regs[VIDC_HBSR] + x + xi;
- res_y = (m_vidc_regs[VIDC_VCSR] - m_vidc_regs[VIDC_VBSR] + y) * (m_vidc_interlace + 1);
-
- cursor_dot = ((pen>>(xi*2))&0x3);
-
- if(cursor_dot)
- {
- if(m_vidc_interlace)
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen(cursor_dot+0x10);
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y+1) <= yend)
- bitmap.pix32(res_y+1, res_x) = m_palette->pen(cursor_dot+0x10);
- }
- else
- {
- if (cliprect.contains(res_x, res_y) && (res_x) <= xend && (res_y) <= yend)
- bitmap.pix32(res_y, res_x) = m_palette->pen(cursor_dot+0x10);
- }
- }
- }
-
- count++;
- }
- }
- }
- }
-
-
-
- return 0;
-}