h63484 ==> hd63484 (nw)

This commit is contained in:
Sandro Ronco 2016-05-13 18:49:52 +02:00
parent 7a99e2939c
commit cc088d53a6
12 changed files with 250 additions and 262 deletions

View File

@ -244,18 +244,6 @@ if (VIDEOS["GF7600GS"]~=null) then
}
end
--------------------------------------------------
--
--@src/devices/video/h63484.h,VIDEOS["H63484"] = true
--------------------------------------------------
if (VIDEOS["H63484"]~=null) then
files {
MAME_DIR .. "src/devices/video/h63484.cpp",
MAME_DIR .. "src/devices/video/h63484.h",
}
end
--------------------------------------------------
--
--@src/devices/video/hd44102.h,VIDEOS["HD44102"] = true
@ -304,6 +292,18 @@ if (VIDEOS["HD61830"]~=null) then
}
end
--------------------------------------------------
--
--@src/devices/video/hd63484.h,VIDEOS["HD63484"] = true
--------------------------------------------------
if (VIDEOS["HD63484"]~=null) then
files {
MAME_DIR .. "src/devices/video/hd63484.cpp",
MAME_DIR .. "src/devices/video/hd63484.h",
}
end
--------------------------------------------------
--
--@src/devices/video/hd66421.h,VIDEOS["HD66421"] = true

View File

@ -285,11 +285,11 @@ VIDEOS["DM9368"] = true
VIDEOS["GF7600GS"] = true
VIDEOS["EPIC12"] = true
VIDEOS["FIXFREQ"] = true
VIDEOS["H63484"] = true
--VIDEOS["HD44102"] = true
--VIDEOS["HD44352"] = true
VIDEOS["HD44780"] = true
VIDEOS["HD61830"] = true
VIDEOS["HD63484"] = true
--VIDEOS["HD66421"] = true
VIDEOS["HUC6202"] = true
VIDEOS["HUC6260"] = true

View File

@ -281,11 +281,11 @@ VIDEOS["EF9365"] = true
VIDEOS["GF4500"] = true
--VIDEOS+= EPIC12"] = true
--VIDEOS+= FIXFREQ"] = true
--VIDEOS+= H63484"] = true
VIDEOS["HD44102"] = true
VIDEOS["HD44352"] = true
VIDEOS["HD44780"] = true
VIDEOS["HD61830"] = true
--VIDEOS+= HD63484"] = true
VIDEOS["HD66421"] = true
VIDEOS["HUC6202"] = true
VIDEOS["HUC6260"] = true

View File

@ -2,34 +2,27 @@
// copyright-holders:Angelo Salese, Sandro Ronco
/***************************************************************************
HD63484 ACRTC (rewrite in progress)
HD63484 ACRTC
TODO:
- 8-bit support for FIFO, parameters and command values
- execution cycles;
***************************************************************************/
#include "emu.h"
#include "h63484.h"
#include "hd63484.h"
#define LOG 0
#define FIFO_LOG 0
#define CMD_LOG 0
// default address map
static ADDRESS_MAP_START( h63484_vram, AS_0, 16, h63484_device )
// AM_RANGE(0x00000, 0x7ffff) AM_RAM
// AM_RANGE(0x80000, 0xfffff) AM_NOP
ADDRESS_MAP_END
//-------------------------------------------------
// h63484_device - constructor
// hd63484_device - constructor
//-------------------------------------------------
h63484_device::h63484_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, H63484, "HD63484 CRTC", tag, owner, clock, "hd63484", __FILE__),
hd63484_device::hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, HD63484, "HD63484 CRTC", tag, owner, clock, "hd63484", __FILE__),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_auto_configure_screen(true),
@ -46,7 +39,7 @@ h63484_device::h63484_device(const machine_config &mconfig, const char *tag, dev
m_cl0(0),
m_cl1(0), m_ccmp(0), m_mask(0), m_cpx(0),
m_dcr(0),
m_space_config("videoram", ENDIANNESS_BIG, 16, 20, -1, nullptr, *ADDRESS_MAP_NAME(h63484_vram))
m_space_config("videoram", ENDIANNESS_BIG, 16, 20, -1)
{
}
@ -63,14 +56,14 @@ enum
FIFO_COMMAND
};
#define H63484_SR_CER 0x80 // Command Error
#define H63484_SR_ARD 0x40 // Area Detect
#define H63484_SR_CED 0x20 // Command End
#define H63484_SR_LPD 0x10 // Light Pen Strobe Detect
#define H63484_SR_RFF 0x08 // Read FIFO Full
#define H63484_SR_RFR 0x04 // Read FIFO Ready
#define H63484_SR_WFR 0x02 // Write FIFO Ready
#define H63484_SR_WFE 0x01 // Write FIFO Empty
#define HD63484_SR_CER 0x80 // Command Error
#define HD63484_SR_ARD 0x40 // Area Detect
#define HD63484_SR_CED 0x20 // Command End
#define HD63484_SR_LPD 0x10 // Light Pen Strobe Detect
#define HD63484_SR_RFF 0x08 // Read FIFO Full
#define HD63484_SR_RFR 0x04 // Read FIFO Ready
#define HD63484_SR_WFR 0x02 // Write FIFO Ready
#define HD63484_SR_WFE 0x01 // Write FIFO Empty
static const char *const acrtc_regnames[0x100/2] =
@ -290,57 +283,57 @@ enum
COMMAND_RGCPY
};
#define H63484_COMMAND_ORG 0x0400 // p: 2
#define H63484_COMMAND_WPR 0x0800 // & ~0x1f p: 1
#define H63484_COMMAND_RPR 0x0c00 // & ~0x1f p: 0
#define H63484_COMMAND_WPTN 0x1800 // & ~0xf p: 1 + n
#define H63484_COMMAND_RPTN 0x1c00 // & ~0xf p: 1
#define H63484_COMMAND_DRD 0x2400 // p: 2
#define H63484_COMMAND_DWT 0x2800 // p: 2
#define H63484_COMMAND_DMOD 0x2c00 // & ~3 p: 2
#define H63484_COMMAND_RD 0x4400 // p: 0
#define H63484_COMMAND_WT 0x4800 // p: 1
#define H63484_COMMAND_MOD 0x4c00 // & ~3 p: 1
#define H63484_COMMAND_CLR 0x5800 // p: 3
#define H63484_COMMAND_SCLR 0x5c00 // & ~3 p: 3
#define H63484_COMMAND_CPY 0x6000 // & ~0x0f03 p: 4
#define H63484_COMMAND_SCPY 0x7000 // & ~0x0f03 p: 4
#define H63484_COMMAND_AMOVE 0x8000 // p: 2
#define H63484_COMMAND_RMOVE 0x8400 // p: 2
#define H63484_COMMAND_ALINE 0x8800 // & ~0x00ff p: 2
#define H63484_COMMAND_RLINE 0x8c00 // & ~0x00ff p: 2
#define H63484_COMMAND_ARCT 0x9000 // & ~0x00ff p: 2
#define H63484_COMMAND_RRCT 0x9400 // & ~0x00ff p: 2
#define H63484_COMMAND_APLL 0x9800 // & ~0x00ff p: 1 + n
#define H63484_COMMAND_RPLL 0x9c00 // & ~0x00ff p: 1 + n
#define H63484_COMMAND_APLG 0xa000 // & ~0x00ff p: 1 + n
#define H63484_COMMAND_RPLG 0xa400 // & ~0x00ff p: 1 + n
#define H63484_COMMAND_CRCL 0xa800 // & ~0x01ff p: 1
#define H63484_COMMAND_ELPS 0xac00 // & ~0x01ff p: 3
#define H63484_COMMAND_AARC 0xb000 // & ~0x01ff p: 4
#define H63484_COMMAND_RARC 0xb400 // & ~0x01ff p: 4
#define H63484_COMMAND_AEARC 0xb800 // & ~0x01ff p: 6
#define H63484_COMMAND_REARC 0xbc00 // & ~0x01ff p: 6
#define H63484_COMMAND_AFRCT 0xc000 // & ~0x00ff p: 2
#define H63484_COMMAND_RFRCT 0xc400 // & ~0x00ff p: 2
#define H63484_COMMAND_PAINT 0xc800 // & ~0x01ff p: 0
#define H63484_COMMAND_DOT 0xcc00 // & ~0x00ff p: 0
#define H63484_COMMAND_PTN 0xd000 // & ~0x0fff p: 1
#define H63484_COMMAND_AGCPY 0xe000 // & ~0x0fff p: 4
#define H63484_COMMAND_RGCPY 0xf000 // & ~0x0fff p: 4
#define HD63484_COMMAND_ORG 0x0400 // p: 2
#define HD63484_COMMAND_WPR 0x0800 // & ~0x1f p: 1
#define HD63484_COMMAND_RPR 0x0c00 // & ~0x1f p: 0
#define HD63484_COMMAND_WPTN 0x1800 // & ~0xf p: 1 + n
#define HD63484_COMMAND_RPTN 0x1c00 // & ~0xf p: 1
#define HD63484_COMMAND_DRD 0x2400 // p: 2
#define HD63484_COMMAND_DWT 0x2800 // p: 2
#define HD63484_COMMAND_DMOD 0x2c00 // & ~3 p: 2
#define HD63484_COMMAND_RD 0x4400 // p: 0
#define HD63484_COMMAND_WT 0x4800 // p: 1
#define HD63484_COMMAND_MOD 0x4c00 // & ~3 p: 1
#define HD63484_COMMAND_CLR 0x5800 // p: 3
#define HD63484_COMMAND_SCLR 0x5c00 // & ~3 p: 3
#define HD63484_COMMAND_CPY 0x6000 // & ~0x0f03 p: 4
#define HD63484_COMMAND_SCPY 0x7000 // & ~0x0f03 p: 4
#define HD63484_COMMAND_AMOVE 0x8000 // p: 2
#define HD63484_COMMAND_RMOVE 0x8400 // p: 2
#define HD63484_COMMAND_ALINE 0x8800 // & ~0x00ff p: 2
#define HD63484_COMMAND_RLINE 0x8c00 // & ~0x00ff p: 2
#define HD63484_COMMAND_ARCT 0x9000 // & ~0x00ff p: 2
#define HD63484_COMMAND_RRCT 0x9400 // & ~0x00ff p: 2
#define HD63484_COMMAND_APLL 0x9800 // & ~0x00ff p: 1 + n
#define HD63484_COMMAND_RPLL 0x9c00 // & ~0x00ff p: 1 + n
#define HD63484_COMMAND_APLG 0xa000 // & ~0x00ff p: 1 + n
#define HD63484_COMMAND_RPLG 0xa400 // & ~0x00ff p: 1 + n
#define HD63484_COMMAND_CRCL 0xa800 // & ~0x01ff p: 1
#define HD63484_COMMAND_ELPS 0xac00 // & ~0x01ff p: 3
#define HD63484_COMMAND_AARC 0xb000 // & ~0x01ff p: 4
#define HD63484_COMMAND_RARC 0xb400 // & ~0x01ff p: 4
#define HD63484_COMMAND_AEARC 0xb800 // & ~0x01ff p: 6
#define HD63484_COMMAND_REARC 0xbc00 // & ~0x01ff p: 6
#define HD63484_COMMAND_AFRCT 0xc000 // & ~0x00ff p: 2
#define HD63484_COMMAND_RFRCT 0xc400 // & ~0x00ff p: 2
#define HD63484_COMMAND_PAINT 0xc800 // & ~0x01ff p: 0
#define HD63484_COMMAND_DOT 0xcc00 // & ~0x00ff p: 0
#define HD63484_COMMAND_PTN 0xd000 // & ~0x0fff p: 1
#define HD63484_COMMAND_AGCPY 0xe000 // & ~0x0fff p: 4
#define HD63484_COMMAND_RGCPY 0xf000 // & ~0x0fff p: 4
/*-------------------------------------------------
ROM( h63484 )
ROM( hd63484 )
-------------------------------------------------*/
// devices
const device_type H63484 = &device_creator<h63484_device>;
const device_type HD63484 = &device_creator<hd63484_device>;
ROM_START( h63484 )
ROM_REGION( 0x100, "h63484", 0 )
ROM_LOAD( "h63484.bin", 0x000, 0x100, NO_DUMP ) /* internal control ROM */
ROM_START( hd63484 )
ROM_REGION( 0x100, "hd63484", 0 )
ROM_LOAD( "hd63484.bin", 0x000, 0x100, NO_DUMP ) /* internal control ROM */
ROM_END
//-------------------------------------------------
@ -348,7 +341,7 @@ ROM_END
// any address spaces owned by this device
//-------------------------------------------------
const address_space_config *h63484_device::memory_space_config(address_spacenum spacenum) const
const address_space_config *hd63484_device::memory_space_config(address_spacenum spacenum) const
{
return (spacenum == AS_0) ? &m_space_config : nullptr;
}
@ -358,16 +351,16 @@ const address_space_config *h63484_device::memory_space_config(address_spacenum
// rom_region - device-specific ROM region
//-------------------------------------------------
const rom_entry *h63484_device::device_rom_region() const
const rom_entry *hd63484_device::device_rom_region() const
{
return ROM_NAME( h63484 );
return ROM_NAME( hd63484 );
}
//-------------------------------------------------
// readword - read a word at the given address
//-------------------------------------------------
inline UINT16 h63484_device::readword(offs_t address)
inline UINT16 hd63484_device::readword(offs_t address)
{
return space().read_word(address << 1);
}
@ -377,13 +370,13 @@ inline UINT16 h63484_device::readword(offs_t address)
// writeword - write a word at the given address
//-------------------------------------------------
inline void h63484_device::writeword(offs_t address, UINT16 data)
inline void hd63484_device::writeword(offs_t address, UINT16 data)
{
space().write_word(address << 1, data);
}
inline void h63484_device::inc_ar(int value)
inline void hd63484_device::inc_ar(int value)
{
if(m_ar & 0x80)
{
@ -394,7 +387,7 @@ inline void h63484_device::inc_ar(int value)
}
}
inline void h63484_device::fifo_w_clear()
inline void hd63484_device::fifo_w_clear()
{
int i;
@ -403,11 +396,11 @@ inline void h63484_device::fifo_w_clear()
m_fifo_ptr = -1;
m_sr |= H63484_SR_WFR;
m_sr |= H63484_SR_WFE;
m_sr |= HD63484_SR_WFR;
m_sr |= HD63484_SR_WFE;
}
inline void h63484_device::queue_w(UINT8 data)
inline void hd63484_device::queue_w(UINT8 data)
{
if (m_fifo_ptr < 15)
{
@ -416,9 +409,9 @@ inline void h63484_device::queue_w(UINT8 data)
m_fifo[m_fifo_ptr] = data;
if (m_fifo_ptr == 16)
m_sr &= ~H63484_SR_WFR;
m_sr &= ~HD63484_SR_WFR;
m_sr &= ~H63484_SR_WFE;
m_sr &= ~HD63484_SR_WFE;
}
else
{
@ -427,7 +420,7 @@ inline void h63484_device::queue_w(UINT8 data)
}
}
inline void h63484_device::dequeue_w(UINT8 *data)
inline void hd63484_device::dequeue_w(UINT8 *data)
{
int i;
@ -442,15 +435,15 @@ inline void h63484_device::dequeue_w(UINT8 *data)
m_fifo_ptr--;
m_sr |= H63484_SR_WFR;
m_sr |= HD63484_SR_WFR;
if (m_fifo_ptr == -1)
m_sr |= H63484_SR_WFE;
m_sr |= HD63484_SR_WFE;
}
}
inline void h63484_device::fifo_r_clear()
inline void hd63484_device::fifo_r_clear()
{
int i;
@ -459,11 +452,11 @@ inline void h63484_device::fifo_r_clear()
m_fifo_r_ptr = -1;
m_sr &= ~H63484_SR_RFR;
m_sr &= ~H63484_SR_RFF;
m_sr &= ~HD63484_SR_RFR;
m_sr &= ~HD63484_SR_RFF;
}
inline void h63484_device::queue_r(UINT8 data)
inline void hd63484_device::queue_r(UINT8 data)
{
if (m_fifo_r_ptr < 15)
{
@ -472,9 +465,9 @@ inline void h63484_device::queue_r(UINT8 data)
m_fifo_r[m_fifo_r_ptr] = data;
if (m_fifo_r_ptr == 16)
m_sr |= H63484_SR_RFF;
m_sr |= HD63484_SR_RFF;
m_sr |= H63484_SR_RFR;
m_sr |= HD63484_SR_RFR;
}
else
{
@ -483,7 +476,7 @@ inline void h63484_device::queue_r(UINT8 data)
}
}
inline void h63484_device::dequeue_r(UINT8 *data)
inline void hd63484_device::dequeue_r(UINT8 *data)
{
int i;
@ -498,10 +491,10 @@ inline void h63484_device::dequeue_r(UINT8 *data)
m_fifo_r_ptr--;
m_sr &= ~H63484_SR_RFF;
m_sr &= ~HD63484_SR_RFF;
if (m_fifo_r_ptr == -1)
m_sr &= ~H63484_SR_RFR;
m_sr &= ~HD63484_SR_RFR;
}
}
@ -509,7 +502,7 @@ inline void h63484_device::dequeue_r(UINT8 *data)
// recompute_parameters -
//-------------------------------------------------
inline void h63484_device::recompute_parameters()
inline void hd63484_device::recompute_parameters()
{
if(!m_auto_configure_screen || m_hdw < 3 || m_hc == 0 || m_vc == 0) //bail out if screen params aren't valid
return;
@ -541,91 +534,91 @@ inline void h63484_device::recompute_parameters()
IMPLEMENTATION
*****************************************************************************/
int h63484_device::translate_command(UINT16 data)
int hd63484_device::translate_command(UINT16 data)
{
/* annoying switch-case sequence, but it's the only way to get invalid commands ... */
switch (data)
{
case H63484_COMMAND_ORG: return COMMAND_ORG;
case H63484_COMMAND_DRD: return COMMAND_DRD;
case H63484_COMMAND_DWT: return COMMAND_DWT;
case H63484_COMMAND_RD: return COMMAND_RD;
case H63484_COMMAND_WT: return COMMAND_WT;
case H63484_COMMAND_CLR: return COMMAND_CLR;
case H63484_COMMAND_AMOVE: return COMMAND_AMOVE;
case H63484_COMMAND_RMOVE: return COMMAND_RMOVE;
case HD63484_COMMAND_ORG: return COMMAND_ORG;
case HD63484_COMMAND_DRD: return COMMAND_DRD;
case HD63484_COMMAND_DWT: return COMMAND_DWT;
case HD63484_COMMAND_RD: return COMMAND_RD;
case HD63484_COMMAND_WT: return COMMAND_WT;
case HD63484_COMMAND_CLR: return COMMAND_CLR;
case HD63484_COMMAND_AMOVE: return COMMAND_AMOVE;
case HD63484_COMMAND_RMOVE: return COMMAND_RMOVE;
}
switch(data & ~0x3)
{
case H63484_COMMAND_DMOD: return COMMAND_DMOD;
case H63484_COMMAND_MOD: return COMMAND_MOD;
case H63484_COMMAND_SCLR: return COMMAND_SCLR;
case HD63484_COMMAND_DMOD: return COMMAND_DMOD;
case HD63484_COMMAND_MOD: return COMMAND_MOD;
case HD63484_COMMAND_SCLR: return COMMAND_SCLR;
}
switch(data & ~0xf)
{
case H63484_COMMAND_WPTN: return COMMAND_WPTN;
case H63484_COMMAND_RPTN: return COMMAND_RPTN;
case HD63484_COMMAND_WPTN: return COMMAND_WPTN;
case HD63484_COMMAND_RPTN: return COMMAND_RPTN;
}
switch(data & ~0x1f)
{
case H63484_COMMAND_WPR: return COMMAND_WPR;
case H63484_COMMAND_RPR: return COMMAND_RPR;
case HD63484_COMMAND_WPR: return COMMAND_WPR;
case HD63484_COMMAND_RPR: return COMMAND_RPR;
}
switch(data & ~0x0f03)
{
case H63484_COMMAND_CPY: return COMMAND_CPY;
case H63484_COMMAND_SCPY: return COMMAND_SCPY;
case HD63484_COMMAND_CPY: return COMMAND_CPY;
case HD63484_COMMAND_SCPY: return COMMAND_SCPY;
}
switch(data & ~0x00ff)
{
case H63484_COMMAND_ALINE: return COMMAND_ALINE;
case H63484_COMMAND_RLINE: return COMMAND_RLINE;
case H63484_COMMAND_ARCT: return COMMAND_ARCT;
case H63484_COMMAND_RRCT: return COMMAND_RRCT;
case H63484_COMMAND_APLL: return COMMAND_APLL;
case H63484_COMMAND_RPLL: return COMMAND_RPLL;
case H63484_COMMAND_APLG: return COMMAND_APLG;
case H63484_COMMAND_RPLG: return COMMAND_RPLG;
case H63484_COMMAND_AFRCT: return COMMAND_AFRCT;
case H63484_COMMAND_RFRCT: return COMMAND_RFRCT;
case H63484_COMMAND_DOT: return COMMAND_DOT;
case HD63484_COMMAND_ALINE: return COMMAND_ALINE;
case HD63484_COMMAND_RLINE: return COMMAND_RLINE;
case HD63484_COMMAND_ARCT: return COMMAND_ARCT;
case HD63484_COMMAND_RRCT: return COMMAND_RRCT;
case HD63484_COMMAND_APLL: return COMMAND_APLL;
case HD63484_COMMAND_RPLL: return COMMAND_RPLL;
case HD63484_COMMAND_APLG: return COMMAND_APLG;
case HD63484_COMMAND_RPLG: return COMMAND_RPLG;
case HD63484_COMMAND_AFRCT: return COMMAND_AFRCT;
case HD63484_COMMAND_RFRCT: return COMMAND_RFRCT;
case HD63484_COMMAND_DOT: return COMMAND_DOT;
}
switch(data & ~0x01ff)
{
case H63484_COMMAND_CRCL: return COMMAND_CRCL;
case H63484_COMMAND_ELPS: return COMMAND_ELPS;
case H63484_COMMAND_AARC: return COMMAND_AARC;
case H63484_COMMAND_RARC: return COMMAND_RARC;
case H63484_COMMAND_AEARC: return COMMAND_AEARC;
case H63484_COMMAND_REARC: return COMMAND_REARC;
case H63484_COMMAND_PAINT: return COMMAND_PAINT;
case HD63484_COMMAND_CRCL: return COMMAND_CRCL;
case HD63484_COMMAND_ELPS: return COMMAND_ELPS;
case HD63484_COMMAND_AARC: return COMMAND_AARC;
case HD63484_COMMAND_RARC: return COMMAND_RARC;
case HD63484_COMMAND_AEARC: return COMMAND_AEARC;
case HD63484_COMMAND_REARC: return COMMAND_REARC;
case HD63484_COMMAND_PAINT: return COMMAND_PAINT;
}
switch(data & ~0x0fff)
{
case H63484_COMMAND_PTN: return COMMAND_PTN;
case H63484_COMMAND_AGCPY: return COMMAND_AGCPY;
case H63484_COMMAND_RGCPY: return COMMAND_RGCPY;
case HD63484_COMMAND_PTN: return COMMAND_PTN;
case HD63484_COMMAND_AGCPY: return COMMAND_AGCPY;
case HD63484_COMMAND_RGCPY: return COMMAND_RGCPY;
}
return COMMAND_INVALID;
}
inline void h63484_device::command_end_seq()
inline void hd63484_device::command_end_seq()
{
//h63484->param_ptr = 0;
m_sr |= H63484_SR_CED;
//hd63484->param_ptr = 0;
m_sr |= HD63484_SR_CED;
/* TODO: we might need to be more aggressive and clear the params in there */
}
int h63484_device::get_bpp()
int hd63484_device::get_bpp()
{
int gbm = (m_ccr >> 8) & 0x07;
@ -636,7 +629,7 @@ int h63484_device::get_bpp()
return 1;
}
void h63484_device::calc_offset(INT16 x, INT16 y, UINT32 &offset, UINT8 &bit_pos)
void hd63484_device::calc_offset(INT16 x, INT16 y, UINT32 &offset, UINT8 &bit_pos)
{
int bpp = get_bpp();
int ppw = 16 / bpp;
@ -662,7 +655,7 @@ void h63484_device::calc_offset(INT16 x, INT16 y, UINT32 &offset, UINT8 &bit_pos
bit_pos *= bpp;
}
UINT16 h63484_device::get_dot(INT16 x, INT16 y)
UINT16 hd63484_device::get_dot(INT16 x, INT16 y)
{
UINT8 bpp = get_bpp();
UINT32 offset = 0;
@ -673,7 +666,7 @@ UINT16 h63484_device::get_dot(INT16 x, INT16 y)
return (readword(offset) >> bit_pos) & ((1 << bpp) - 1);
}
bool h63484_device::set_dot(INT16 x, INT16 y, INT16 px, INT16 py)
bool hd63484_device::set_dot(INT16 x, INT16 y, INT16 px, INT16 py)
{
int xs = m_pex - m_psx + 1;
int ys = m_pey - m_psy + 1;
@ -717,7 +710,7 @@ bool h63484_device::set_dot(INT16 x, INT16 y, INT16 px, INT16 py)
return false;
}
bool h63484_device::set_dot(INT16 x, INT16 y, UINT16 color)
bool hd63484_device::set_dot(INT16 x, INT16 y, UINT16 color)
{
UINT8 bpp = get_bpp();
UINT32 offset = 0;
@ -773,7 +766,7 @@ bool h63484_device::set_dot(INT16 x, INT16 y, UINT16 color)
return false; // TODO: return area detection status
}
void h63484_device::draw_line(INT16 sx, INT16 sy, INT16 ex, INT16 ey)
void hd63484_device::draw_line(INT16 sx, INT16 sy, INT16 ex, INT16 ey)
{
UINT16 delta_x = abs(ex - sx) * 2;
UINT16 delta_y = abs(ey - sy) * 2;
@ -817,7 +810,7 @@ void h63484_device::draw_line(INT16 sx, INT16 sy, INT16 ex, INT16 ey)
}
}
void h63484_device::draw_ellipse(INT16 cx, INT16 cy, double dx, double dy, double s_angol, double e_angol, bool c)
void hd63484_device::draw_ellipse(INT16 cx, INT16 cy, double dx, double dy, double s_angol, double e_angol, bool c)
{
double inc = 1.0 / (MAX(dx, dy) * 100);
for (double angol = s_angol; fabs(angol - e_angol) >= inc*2; angol += inc * (c ? -1 : +1))
@ -831,7 +824,7 @@ void h63484_device::draw_ellipse(INT16 cx, INT16 cy, double dx, double dy, doubl
}
}
void h63484_device::paint(INT16 sx, INT16 sy)
void hd63484_device::paint(INT16 sx, INT16 sy)
{
/*
This is not accurate since real hardware can only paint 4 'unpaintable' areas,
@ -887,7 +880,7 @@ void h63484_device::paint(INT16 sx, INT16 sy)
}
}
UINT16 h63484_device::command_rpr_exec()
UINT16 hd63484_device::command_rpr_exec()
{
switch(m_cr & 0x1f)
{
@ -925,7 +918,7 @@ UINT16 h63484_device::command_rpr_exec()
}
}
void h63484_device::command_wpr_exec()
void hd63484_device::command_wpr_exec()
{
switch(m_cr & 0x1f)
{
@ -985,7 +978,7 @@ void h63484_device::command_wpr_exec()
}
}
void h63484_device::command_clr_exec()
void hd63484_device::command_clr_exec()
{
UINT8 mm = m_cr & 0x03;
UINT16 d = m_pr[0];
@ -1032,7 +1025,7 @@ void h63484_device::command_clr_exec()
m_rwp[m_rwp_dn] &= 0xfffff;
}
void h63484_device::command_cpy_exec()
void hd63484_device::command_cpy_exec()
{
UINT8 mm = m_cr & 0x03;
UINT8 dsd = (m_cr >> 8) & 0x07;
@ -1103,7 +1096,7 @@ void h63484_device::command_cpy_exec()
m_rwp[m_rwp_dn] &= 0xfffff;
}
void h63484_device::command_line_exec()
void hd63484_device::command_line_exec()
{
INT16 x = (INT16)m_pr[0];
INT16 y = (INT16)m_pr[1];
@ -1120,7 +1113,7 @@ void h63484_device::command_line_exec()
m_cpy = y;
}
void h63484_device::command_rct_exec()
void hd63484_device::command_rct_exec()
{
INT16 dX = m_pr[0];
INT16 dY = m_pr[1];
@ -1151,7 +1144,7 @@ void h63484_device::command_rct_exec()
draw_line(m_cpx, dY, m_cpx, m_cpy);
}
void h63484_device::command_gcpy_exec()
void hd63484_device::command_gcpy_exec()
{
UINT8 dsd = (m_cr >> 8) & 0x07;
UINT8 s = BIT(m_cr, 11);
@ -1204,7 +1197,7 @@ void h63484_device::command_gcpy_exec()
}
void h63484_device::command_frct_exec()
void hd63484_device::command_frct_exec()
{
INT16 X = (INT16)m_pr[0];
INT16 Y = (INT16)m_pr[1];
@ -1227,7 +1220,7 @@ void h63484_device::command_frct_exec()
m_cpy += (Y + d1_inc);
}
void h63484_device::command_ptn_exec()
void hd63484_device::command_ptn_exec()
{
INT16 szx = ((m_pr[0] >> 0) & 0xff);
INT16 szy = ((m_pr[0] >> 8) & 0xff);
@ -1304,7 +1297,7 @@ void h63484_device::command_ptn_exec()
}
}
void h63484_device::command_plg_exec()
void hd63484_device::command_plg_exec()
{
int sx = m_cpx;
int sy = m_cpy;
@ -1343,7 +1336,7 @@ void h63484_device::command_plg_exec()
}
}
void h63484_device::command_arc_exec()
void hd63484_device::command_arc_exec()
{
INT16 xc = (INT16)m_pr[0];
INT16 yc = (INT16)m_pr[1];
@ -1370,7 +1363,7 @@ void h63484_device::command_arc_exec()
m_cpy = ye;
}
void h63484_device::command_earc_exec()
void hd63484_device::command_earc_exec()
{
UINT16 a = m_pr[0];
UINT16 b = m_pr[1];
@ -1401,19 +1394,19 @@ void h63484_device::command_earc_exec()
m_cpy = ye;
}
void h63484_device::process_fifo()
void hd63484_device::process_fifo()
{
UINT8 data;
dequeue_w(&data);
if (m_sr & H63484_SR_CED)
if (m_sr & HD63484_SR_CED)
{
m_cr = (data & 0xff) << 8;
dequeue_w(&data);
m_cr |= data & 0xff;
m_param_ptr = 0;
m_sr &= ~H63484_SR_CED;
m_sr &= ~HD63484_SR_CED;
}
else
{
@ -1427,8 +1420,8 @@ void h63484_device::process_fifo()
{
case COMMAND_INVALID:
if (CMD_LOG) logerror("HD63484 '%s': <invalid %04x>\n", tag(), m_cr);
printf("H63484 '%s' Invalid Command Byte %02x\n", tag(), m_cr);
m_sr |= H63484_SR_CER; // command error
printf("HD63484 '%s' Invalid Command Byte %02x\n", tag(), m_cr);
m_sr |= HD63484_SR_CER; // command error
command_end_seq();
break;
@ -1769,14 +1762,14 @@ void h63484_device::process_fifo()
}
}
void h63484_device::exec_abort_sequence()
void hd63484_device::exec_abort_sequence()
{
fifo_w_clear();
fifo_r_clear();
m_sr = H63484_SR_WFR | H63484_SR_WFE | H63484_SR_CED; // hard-set to 0x23
m_sr = HD63484_SR_WFR | HD63484_SR_WFE | HD63484_SR_CED; // hard-set to 0x23
}
UINT16 h63484_device::video_registers_r(int offset)
UINT16 hd63484_device::video_registers_r(int offset)
{
UINT16 res = (m_vreg[offset] << 8) | (m_vreg[offset+1] & 0xff);
@ -1798,7 +1791,7 @@ UINT16 h63484_device::video_registers_r(int offset)
return res;
}
void h63484_device::video_registers_w(int offset)
void hd63484_device::video_registers_w(int offset)
{
UINT16 vreg_data;
@ -1912,13 +1905,13 @@ void h63484_device::video_registers_w(int offset)
}
}
READ16_MEMBER( h63484_device::status_r )
READ16_MEMBER( hd63484_device::status_r )
{
// kothello is coded so that upper byte of this should be 0xff (tests with jc opcode). Maybe it's just unconnected?
return m_sr | 0xff00;
}
READ16_MEMBER( h63484_device::data_r )
READ16_MEMBER( hd63484_device::data_r )
{
UINT16 res;
@ -1939,13 +1932,13 @@ READ16_MEMBER( h63484_device::data_r )
return res;
}
WRITE16_MEMBER( h63484_device::address_w )
WRITE16_MEMBER( hd63484_device::address_w )
{
if(ACCESSING_BITS_0_7)
m_ar = data & 0xfe;
}
WRITE16_MEMBER( h63484_device::data_w )
WRITE16_MEMBER( hd63484_device::data_w )
{
if(ACCESSING_BITS_8_15)
m_vreg[m_ar] = (data & 0xff00) >> 8;
@ -1958,17 +1951,17 @@ WRITE16_MEMBER( h63484_device::data_w )
inc_ar(2);
}
READ8_MEMBER( h63484_device::status_r )
READ8_MEMBER( hd63484_device::status_r )
{
return m_sr;
}
WRITE8_MEMBER( h63484_device::address_w )
WRITE8_MEMBER( hd63484_device::address_w )
{
m_ar = data;
}
READ8_MEMBER( h63484_device::data_r )
READ8_MEMBER( hd63484_device::data_r )
{
UINT8 res = 0xff;
@ -1982,7 +1975,7 @@ READ8_MEMBER( h63484_device::data_r )
return res;
}
WRITE8_MEMBER( h63484_device::data_w )
WRITE8_MEMBER( hd63484_device::data_w )
{
m_vreg[m_ar] = data;
@ -2000,7 +1993,7 @@ WRITE8_MEMBER( h63484_device::data_w )
inc_ar(1);
}
void h63484_device::device_start()
void hd63484_device::device_start()
{
m_display_cb.bind_relative_to(*owner());
@ -2011,9 +2004,9 @@ void h63484_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
void h63484_device::device_reset()
void hd63484_device::device_reset()
{
m_sr = H63484_SR_CED | H63484_SR_WFR | H63484_SR_WFE;
m_sr = HD63484_SR_CED | HD63484_SR_WFR | HD63484_SR_WFE;
m_ccr = m_omr = m_edg = m_dcr = m_hsw = 0;
m_hc = m_hds = m_hdw = m_hws = m_hww = 0;
m_vc = m_vws = m_vww = m_vds = m_vsw = 0;
@ -2049,7 +2042,7 @@ void h63484_device::device_reset()
// draw_graphics_line -
//-------------------------------------------------
void h63484_device::draw_graphics_line(bitmap_ind16 &bitmap, const rectangle &cliprect, int vs, int y, int layer_n, bool active, bool ins_window)
void hd63484_device::draw_graphics_line(bitmap_ind16 &bitmap, const rectangle &cliprect, int vs, int y, int layer_n, bool active, bool ins_window)
{
int bpp = get_bpp();
int ppw = 16 / bpp;
@ -2106,7 +2099,7 @@ void h63484_device::draw_graphics_line(bitmap_ind16 &bitmap, const rectangle &cl
// update_screen -
//-------------------------------------------------
UINT32 h63484_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 hd63484_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int l0 = cliprect.min_y + (BIT(m_dcr, 13) ? m_sp[0] : 0);
int l1 = l0 + m_sp[1];
@ -2129,7 +2122,7 @@ UINT32 h63484_device::update_screen(screen_device &screen, bitmap_ind16 &bitmap,
return 0;
}
void h63484_device::register_save_state()
void hd63484_device::register_save_state()
{
save_item(NAME(m_ar));
save_item(NAME(m_vreg));

View File

@ -9,48 +9,48 @@
#pragma once
#ifndef __H63484__
#define __H63484__
#ifndef __HD63484__
#define __HD63484__
#include "emu.h"
typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int x, UINT16 data)> h63484_display_delegate;
typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int x, UINT16 data)> hd63484_display_delegate;
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
#define MCFG_H63484_ADD(_tag, _clock, _map) \
MCFG_DEVICE_ADD(_tag, H63484, _clock) \
#define MCFG_HD63484_ADD(_tag, _clock, _map) \
MCFG_DEVICE_ADD(_tag, HD63484, _clock) \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _map)
#define MCFG_H63484_ADDRESS_MAP(_map) \
#define MCFG_HD63484_ADDRESS_MAP(_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _map)
#define MCFG_H63484_DISPLAY_CALLBACK_OWNER(_class, _method) \
h63484_device::static_set_display_callback(*device, h63484_display_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_HD63484_DISPLAY_CALLBACK_OWNER(_class, _method) \
hd63484_device::static_set_display_callback(*device, hd63484_display_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_H63484_AUTO_CONFIGURE_SCREEN(_val) \
h63484_device::static_set_auto_configure_screen(*device, _val);
#define MCFG_HD63484_AUTO_CONFIGURE_SCREEN(_val) \
hd63484_device::static_set_auto_configure_screen(*device, _val);
#define H63484_DISPLAY_PIXELS_MEMBER(_name) void _name(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int x, UINT16 data)
#define HD63484_DISPLAY_PIXELS_MEMBER(_name) void _name(bitmap_ind16 &bitmap, const rectangle &cliprect, int y, int x, UINT16 data)
// ======================> h63484_device
// ======================> hd63484_device
class h63484_device : public device_t,
class hd63484_device : public device_t,
public device_memory_interface,
public device_video_interface
{
public:
// construction/destruction
h63484_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
static void static_set_display_callback(device_t &device, h63484_display_delegate callback) { downcast<h63484_device &>(device).m_display_cb = callback; }
static void static_set_auto_configure_screen(device_t &device, bool auto_configure_screen) { downcast<h63484_device &>(device).m_auto_configure_screen = auto_configure_screen; }
static void static_set_display_callback(device_t &device, hd63484_display_delegate callback) { downcast<hd63484_device &>(device).m_display_cb = callback; }
static void static_set_auto_configure_screen(device_t &device, bool auto_configure_screen) { downcast<hd63484_device &>(device).m_auto_configure_screen = auto_configure_screen; }
DECLARE_WRITE16_MEMBER( address_w );
DECLARE_WRITE16_MEMBER( data_w );
@ -116,7 +116,7 @@ private:
void register_save_state();
h63484_display_delegate m_display_cb;
hd63484_display_delegate m_display_cb;
bool m_auto_configure_screen;
UINT8 m_ar;
@ -189,6 +189,6 @@ private:
};
// device type definition
extern const device_type H63484;
extern const device_type HD63484;
#endif /* __H63484_H__ */
#endif /* __HD63484_H__ */

View File

@ -157,7 +157,7 @@ Quick Jack administration/service mode:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "sound/ay8910.h"
#include "video/h63484.h"
#include "video/hd63484.h"
#include "machine/microtch.h"
#include "machine/mc68681.h"
#include "machine/msm6242.h"
@ -288,8 +288,8 @@ WRITE16_MEMBER(adp_state::input_w)
static ADDRESS_MAP_START( skattv_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
@ -299,8 +299,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( skattva_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
@ -310,8 +310,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( quickjac_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x01ffff) AM_ROM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w) // bad
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w) // bad
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w) // bad
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w) // bad
AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0")
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
@ -330,8 +330,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( funland_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x800088, 0x800089) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff)
AM_RANGE(0x80008a, 0x80008b) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff)
AM_RANGE(0x80008c, 0x80008d) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff)
@ -343,8 +343,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( fstation_mem, AS_PROGRAM, 16, adp_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w)
AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too
AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff )
@ -516,17 +516,17 @@ INTERRUPT_GEN_MEMBER(adp_state::adp_int)
}
*/
static ADDRESS_MAP_START( adp_h63484_map, AS_0, 16, adp_state )
static ADDRESS_MAP_START( adp_hd63484_map, AS_0, 16, adp_state )
AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x60000) AM_RAM
AM_RANGE(0x80000, 0x9ffff) AM_MIRROR(0x60000) AM_ROM AM_REGION("gfx1", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( fashiong_h63484_map, AS_0, 16, adp_state )
static ADDRESS_MAP_START( fashiong_hd63484_map, AS_0, 16, adp_state )
AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x60000) AM_RAM
AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("gfx1", 0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( fstation_h63484_map, AS_0, 16, adp_state )
static ADDRESS_MAP_START( fstation_hd63484_map, AS_0, 16, adp_state )
AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("gfx1", 0)
AM_RANGE(0x80000, 0xfffff) AM_RAM
ADDRESS_MAP_END
@ -557,14 +557,14 @@ static MACHINE_CONFIG_START( quickjac, adp_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
MCFG_SCREEN_UPDATE_DEVICE("h63484", h63484_device, update_screen)
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 0x10)
MCFG_PALETTE_INIT_OWNER(adp_state,adp)
MCFG_H63484_ADD("h63484", 0, adp_h63484_map)
MCFG_HD63484_ADD("hd63484", 0, adp_hd63484_map)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("aysnd", AY8910, 3686400/2)
@ -595,8 +595,8 @@ static MACHINE_CONFIG_DERIVED( backgamn, skattv )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( fashiong, skattv )
MCFG_DEVICE_MODIFY("h63484")
MCFG_H63484_ADDRESS_MAP(fashiong_h63484_map)
MCFG_DEVICE_MODIFY("hd63484")
MCFG_HD63484_ADDRESS_MAP(fashiong_hd63484_map)
MACHINE_CONFIG_END
static ADDRESS_MAP_START( ramdac_map, AS_0, 8, adp_state )
@ -611,8 +611,8 @@ static MACHINE_CONFIG_DERIVED( funland, quickjac )
MCFG_PALETTE_ADD_INIT_BLACK("palette", 0x100)
MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
MCFG_DEVICE_MODIFY("h63484")
MCFG_H63484_ADDRESS_MAP(fstation_h63484_map)
MCFG_DEVICE_MODIFY("hd63484")
MCFG_HD63484_ADDRESS_MAP(fstation_hd63484_map)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( fstation, funland )

View File

@ -32,7 +32,7 @@ Also seem to be running on the same/similar hardware:
#include "cpu/z80/z80.h"
#include "machine/nvram.h"
#include "sound/2612intf.h"
#include "video/h63484.h"
#include "video/hd63484.h"
#include "video/ramdac.h"
#include "segajw.lh"
@ -186,8 +186,8 @@ CUSTOM_INPUT_MEMBER( segajw_state::coin_sensors_r )
static ADDRESS_MAP_START( segajw_map, AS_PROGRAM, 16, segajw_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x080000, 0x080001) AM_DEVREADWRITE("hd63484", h63484_device, status_r, address_w)
AM_RANGE(0x080002, 0x080003) AM_DEVREADWRITE("hd63484", h63484_device, data_r, data_w)
AM_RANGE(0x080000, 0x080001) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x080002, 0x080003) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW0")
AM_RANGE(0x180004, 0x180005) AM_READWRITE8(soundlatch2_byte_r, audiocpu_cmd_w, 0x00ff)
@ -404,7 +404,7 @@ static MACHINE_CONFIG_START( segajw, segajw_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_UPDATE_DEVICE("hd63484", h63484_device, update_screen)
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
MCFG_SCREEN_SIZE(720, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 720-1, 0, 448-1)
MCFG_SCREEN_PALETTE("palette")
@ -412,7 +412,7 @@ static MACHINE_CONFIG_START( segajw, segajw_state )
MCFG_PALETTE_ADD("palette", 16)
MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
MCFG_H63484_ADD("hd63484", 8000000, segajw_hd63484_map) // unknown clock
MCFG_HD63484_ADD("hd63484", 8000000, segajw_hd63484_map) // unknown clock
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -22,7 +22,7 @@ displayed.
#include "emu.h"
#include "cpu/nec/nec.h"
#include "audio/seibu.h"
#include "video/h63484.h"
#include "video/hd63484.h"
class shanghai_state : public driver_device
@ -100,8 +100,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( shanghai_portmap, AS_IO, 16, shanghai_state )
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x20, 0x23) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
AM_RANGE(0x40, 0x41) AM_READ_PORT("P1")
AM_RANGE(0x44, 0x45) AM_READ_PORT("P2")
@ -114,16 +114,16 @@ static ADDRESS_MAP_START( shangha2_portmap, AS_IO, 16, shanghai_state )
AM_RANGE(0x00, 0x01) AM_READ_PORT("P1")
AM_RANGE(0x10, 0x11) AM_READ_PORT("P2")
AM_RANGE(0x20, 0x21) AM_READ_PORT("SYSTEM")
AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
AM_RANGE(0x32, 0x33) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x32, 0x33) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
AM_RANGE(0x50, 0x51) AM_WRITE(shanghai_coin_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( kothello_map, AS_PROGRAM, 16, shanghai_state )
AM_RANGE(0x00000, 0x07fff) AM_RAM
AM_RANGE(0x08010, 0x08011) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w)
AM_RANGE(0x08012, 0x08013) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w)
AM_RANGE(0x08010, 0x08011) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x08012, 0x08013) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x09010, 0x09011) AM_READ_PORT("P1")
AM_RANGE(0x09012, 0x09013) AM_READ_PORT("P2")
AM_RANGE(0x09014, 0x09015) AM_READ_PORT("SYSTEM")
@ -354,7 +354,7 @@ static INPUT_PORTS_START( shangha2 )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) )
INPUT_PORTS_END
static ADDRESS_MAP_START( h63484_map, AS_0, 16, shanghai_state )
static ADDRESS_MAP_START( hd63484_map, AS_0, 16, shanghai_state )
AM_RANGE(0x00000, 0x3ffff) AM_RAM
ADDRESS_MAP_END
@ -372,14 +372,14 @@ static MACHINE_CONFIG_START( shanghai, shanghai_state )
//MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
MCFG_SCREEN_UPDATE_DEVICE("h63484", h63484_device, update_screen)
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_PALETTE_INIT_OWNER(shanghai_state,shanghai)
MCFG_H63484_ADD("h63484", 0, h63484_map)
MCFG_HD63484_ADD("hd63484", 0, hd63484_map)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -408,13 +408,13 @@ static MACHINE_CONFIG_START( shangha2, shanghai_state )
//MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
MCFG_SCREEN_UPDATE_DEVICE("h63484", h63484_device, update_screen)
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_H63484_ADD("h63484", 0, h63484_map)
MCFG_HD63484_ADD("hd63484", 0, hd63484_map)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -446,13 +446,13 @@ static MACHINE_CONFIG_START( kothello, shanghai_state )
//MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(384, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1)
MCFG_SCREEN_UPDATE_DEVICE("h63484", h63484_device, update_screen)
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
MCFG_H63484_ADD("h63484", 0, h63484_map)
MCFG_HD63484_ADD("hd63484", 0, hd63484_map)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -16,10 +16,6 @@
* Super 8 Ways FC (DB98103-011, Fruit combination), 1989, Sigma.
The HD63484 ACRTC support is a bit hacky and incomplete,
due to its preliminary emulation state.
*******************************************************************************
Hardware Notes:
@ -133,7 +129,7 @@
#include "machine/6850acia.h"
#include "machine/nvram.h"
#include "sound/3812intf.h"
#include "video/h63484.h"
#include "video/hd63484.h"
#include "sigmab52.lh"
@ -320,8 +316,8 @@ static ADDRESS_MAP_START( jwildb52_map, AS_PROGRAM, 8, sigmab52_state )
AM_RANGE(0xf720, 0xf727) AM_DEVREADWRITE("6840ptm_1", ptm6840_device, read, write)
AM_RANGE(0xf730, 0xf730) AM_DEVREADWRITE("hd63484", h63484_device, status_r, address_w)
AM_RANGE(0xf731, 0xf731) AM_DEVREADWRITE("hd63484", h63484_device, data_r, data_w)
AM_RANGE(0xf730, 0xf730) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0xf731, 0xf731) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0xf740, 0xf740) AM_READ(in0_r)
AM_RANGE(0xf741, 0xf741) AM_READ_PORT("IN1")
@ -600,10 +596,10 @@ static MACHINE_CONFIG_START( jwildb52, sigmab52_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 544-1, 0, 436-1)
MCFG_SCREEN_UPDATE_DEVICE("hd63484", h63484_device, update_screen)
MCFG_SCREEN_UPDATE_DEVICE("hd63484", hd63484_device, update_screen)
MCFG_SCREEN_PALETTE("palette")
MCFG_H63484_ADD("hd63484", SEC_CLOCK, jwildb52_hd63484_map)
MCFG_HD63484_ADD("hd63484", SEC_CLOCK, jwildb52_hd63484_map)
MCFG_PALETTE_ADD("palette", 16)

View File

@ -686,8 +686,8 @@ static ADDRESS_MAP_START( realpunc_map, AS_PROGRAM, 16, taitob_state )
AM_RANGE(0x18c000, 0x18c001) AM_WRITE(realpunc_output_w)
TC0180VCU_MEMRW( 0x200000 )
AM_RANGE(0x280000, 0x281fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE("hd63484", h63484_device, status_r, address_w)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE("hd63484", h63484_device, data_r, data_w)
AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE("hd63484", hd63484_device, status_r, address_w)
AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
// AM_RANGE(0x320000, 0x320001) AM_NOP // ?
AM_RANGE(0x320002, 0x320003) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_comm_w, 0xff00)
ADDRESS_MAP_END
@ -2912,8 +2912,8 @@ static MACHINE_CONFIG_START( realpunc, taitob_state )
MCFG_VIDEO_START_OVERRIDE(taitob_state,realpunc)
MCFG_H63484_ADD("hd63484", 0, realpunc_hd63484_map)
MCFG_H63484_AUTO_CONFIGURE_SCREEN(false)
MCFG_HD63484_ADD("hd63484", 0, realpunc_hd63484_map)
MCFG_HD63484_AUTO_CONFIGURE_SCREEN(false)
MCFG_DEVICE_ADD("tc0180vcu", TC0180VCU, 0)
MCFG_TC0180VCU_BG_COLORBASE(0xc0)

View File

@ -384,7 +384,6 @@ ROM_END
DRIVER_INIT_MEMBER(wildpkr_state,wildpkr)
{
//HD63484_start(machine());
}

View File

@ -2,7 +2,7 @@
// copyright-holders:Jarek Burczynski
#include "machine/mb87078.h"
#include "machine/taitoio.h"
#include "video/h63484.h"
#include "video/hd63484.h"
#include "video/tc0180vcu.h"
class taitob_state : public driver_device
@ -64,7 +64,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
device_t *m_ym;
optional_device<h63484_device> m_hd63484;
optional_device<hd63484_device> m_hd63484;
required_device<tc0180vcu_device> m_tc0180vcu;
optional_device<tc0640fio_device> m_tc0640fio;
optional_device<tc0220ioc_device> m_tc0220ioc;