ygv608.cpp: kill legacy register code (nw)

This commit is contained in:
angelosa 2017-09-28 01:02:07 +02:00
parent 64c6e9fe6b
commit 5c712b4083
2 changed files with 14 additions and 310 deletions

View File

@ -74,101 +74,6 @@ enum {
p7_ts = 0x04,
p7_tn = 0x02,
p7_sr = 0x01,
r0_pnya = 0x80, // if set, increment name table address after reads
r0_b_a = 0x40, // if set, we're reading from the second plane of tile data
r0_pny = 0x3f, // y-coordinate of current name table address
r1_pnxa = 0x80, // if set, increment name table address after read
r1_res1 = 0x40,
r1_pnx = 0x3f, // x-coordinate of current name table address
r2_cpaw = 0x80, // if set, increment color palette address after writes
r2_cpar = 0x40, // if set, increment color palette address after reads
// r2_res2 = 0x20,
r2_b_a = 0x10,
r2_scaw = 0x08, // if set, increment scroll address after writes
r2_scar = 0x04, // if set, increment scroll address after reads
r2_saaw = 0x02, // if set, increment sprite address after writes
r2_saar = 0x01, // if set, increment sprite address after reads
r7_dckm = 0x80,
r7_flip = 0x40,
// r7_res7 = 0x30,
r7_zron = 0x08, // if set, roz plane is active
r7_md = 0x06, // determines 1 of 4 possible video modes
r7_dspe = 0x01, // if set, display is enabled
r8_hds = 0xc0,
r8_vds = 0x30,
r8_rlrt = 0x08,
r8_rlsc = 0x04,
// r8_res8 = 0x02,
r8_pgs = 0x01,
r9_pts = 0xc0,
r9_slh = 0x38,
r9_slv = 0x07,
r10_spa = 0xc0, // misc global sprite attributes (x/y flip or sprite size)
r10_spas = 0x20, // if set, spa controls sprite flip, if clear, controls sprite size
r10_sprd = 0x10, // if set, sprites are disabled
r10_mcb = 0x0c,
r10_mca = 0x03,
r11_scm = 0xc0,
r11_yse = 0x20,
r11_cbdr = 0x10,
r11_prm = 0x0c, // determines one of 4 priority settings
r11_ctpb = 0x02,
r11_ctpa = 0x01,
r12_spf = 0xc0,
r12_bpf = 0x38,
r12_apf = 0x07,
// r14_res14 = 0xfc,
r14_iep = 0x02, // if set, generate IRQ on position detection (?)
r14_iev = 0x01, // if set, generate IRQ on vertical border interval draw
// these 4 are currently unimplemented by us
r16_fpm = 0x80,
r16_il8 = 0x40,
r16_res16 = 0x20,
r16_ih = 0x1f,
r17_ba1 = 0x70,
r17_ba0 = 0x07,
r18_ba3 = 0x70,
r18_ba2 = 0x07,
r19_ba5 = 0x70,
r19_ba4 = 0x07,
r20_ba7 = 0x70,
r20_ba6 = 0x07,
r21_bb1 = 0x70,
r21_bb0 = 0x07,
r22_bb3 = 0x70,
r22_bb2 = 0x07,
r23_bb5 = 0x70,
r23_bb4 = 0x07,
r24_bb7 = 0x70,
r24_bb6 = 0x07,
r39_hsw = 0xe0,
r39_hbw = 0x1f,
r40_htl89 = 0xc0,
r40_hdw = 0x3f,
r43_vsw = 0xe0,
r43_vbw = 0x1f,
r44_vsls = 0x40,
r44_vdw = 0x1f,
r45_vtl8 = 0x80,
r45_tres = 0x40,
r45_vdp = 0x1f
};
@ -443,7 +348,7 @@ ygv608_device::ygv608_device( const machine_config &mconfig, const char *tag, de
void ygv608_device::device_start()
{
memset(&m_ports, 0, sizeof(m_ports));
memset(&m_regs, 0, sizeof(m_regs));
// memset(&m_regs, 0, sizeof(m_regs));
memset(&m_pattern_name_table, 0, sizeof(m_pattern_name_table));
memset(&m_sprite_attribute_table, 0, sizeof(m_sprite_attribute_table));
@ -966,7 +871,7 @@ void ygv608_device::postload()
void ygv608_device::register_state_save()
{
save_item(NAME(m_ports.b));
save_item(NAME(m_regs.b));
// save_item(NAME(m_regs.b));
save_item(NAME(m_pattern_name_table));
save_item(NAME(m_sprite_attribute_table.b));
save_item(NAME(m_scroll_data_table));
@ -1382,9 +1287,7 @@ READ8_MEMBER( ygv608_device::palette_data_r )
READ8_MEMBER(ygv608_device::register_data_r)
{
int regNum = m_register_address & 0x3f;
uint8_t res = m_regs.b[regNum];
//m_iospace->read_byte(regNum);
uint8_t res = m_iospace->read_byte(regNum);
if (m_register_autoinc_r == true)
@ -1560,7 +1463,6 @@ WRITE8_MEMBER( ygv608_device::register_data_w )
uint8_t regNum = m_register_address & 0x3f;
//logerror( "R#%d = $%02X\n", regNum, data );
m_regs.b[regNum] = data;
m_iospace->write_byte(regNum, data);
if (m_register_autoinc_w == true)
@ -1614,12 +1516,18 @@ WRITE8_MEMBER( ygv608_device::system_control_w )
// TODO: actual timing of this
void ygv608_device::HandleYGV608Reset()
{
int i;
/* Clear ports #0-7 */
memset( &m_ports.b[0], 0, 8 );
/* Clear registers #0-38, #47-49 */
memset( &m_regs.b[0], 0, 39 );
memset( &m_regs.b[47], 0, 3 );
for(i=0;i<39;i++)
m_iospace->write_byte(i, 0x00);
for(i=47;i<50;i++)
m_iospace->write_byte(i, 0x00);
// memset( &m_regs.b[0], 0, 39 );
// memset( &m_regs.b[47], 0, 3 );
/* Clear internal ram */
memset( m_pattern_name_table, 0, 4096 );
@ -1640,6 +1548,7 @@ void ygv608_device::HandleRomTransfers(uint8_t type)
popmessage("ROM DMA used %02x",type);
#if 0
// TODO: eventually update this code to latest
static uint8_t *sdt = (uint8_t *)m_scroll_data_table;
static uint8_t *sat = (uint8_t *)m_sprite_attribute_table.b;
@ -1698,7 +1607,7 @@ void ygv608_device::HandleRomTransfers(uint8_t type)
// R#0R - Pattern Name Table Access pointer Y
READ8_MEMBER( ygv608_device::pattern_name_table_y_r )
{
return ((m_xtile_autoinc == true) << 7) | ((m_plane_select_access == true) << 6) | m_xtile_ptr;
return (m_ytile_autoinc << 7) | (m_plane_select_access << 6) | m_ytile_ptr;
}
// R#0W - Pattern Name Table Access pointer Y
@ -1718,7 +1627,7 @@ WRITE8_MEMBER( ygv608_device::pattern_name_table_y_w )
// R#1R - Pattern Name Table Access pointer X
READ8_MEMBER( ygv608_device::pattern_name_table_x_r )
{
return ((m_xtile_autoinc == true) << 7) | m_xtile_ptr;
return (m_xtile_autoinc << 7) | m_xtile_ptr;
}
// R#1W - Pattern Name Table Access pointer X
@ -2286,132 +2195,3 @@ void ygv608_device::screen_configure()
}
void ygv608_device::ShowYGV608Registers()
{
int p, b;
logerror( "YGV608 Registers\n" );
logerror(
"\tR#00: $%02X : PNYA(%d),B/A(%c),PNY(%d)\n",
m_regs.b[0],
m_regs.s.r0 & r0_pnya,
((m_plane_select_access == true) ? 'B' : 'A' ),
m_regs.s.r0 & r0_pny);
logerror(
"\tR#01: $%02X : PNXA(%d),PNX(%d)\n",
m_regs.b[1],
m_regs.s.r1 & r1_pnxa,
m_regs.s.r1 & r1_pnx);
logerror(
"\tR#02: $%02X : CPAW(%d),CPAR(%d),B/A(%d),SCAW(%d),SCAR(%d),SAAW(%d),SAAR(%d)\n",
m_regs.b[2],
m_regs.s.r2 & r2_cpaw,
m_regs.s.r2 & r2_cpar,
m_regs.s.r2 & r2_b_a,
m_regs.s.r2 & r2_scaw,
m_regs.s.r2 & r2_scar,
m_regs.s.r2 & r2_saaw,
m_regs.s.r2 & r2_saar);
logerror(
"\tR#03: $%02X : SAA($%02X)\n",
m_regs.b[3],
m_sprite_address );
logerror(
"\tR#04: $%02X : SCA($%02X)\n",
m_regs.b[4],
m_regs.s.sca );
logerror(
"\tR#05: $%02X : CC($%02X)\n",
m_regs.b[5],
m_regs.s.cc );
logerror(
"\tR#06: $%02X : SBA($%02X)\n",
m_regs.b[6],
m_sprite_bank );
logerror(
"\tR#07: $%02X : DSPE(%d),MD(%d),ZRON(%d),FLIP(%d),DCKM(%d)\n",
m_regs.b[7],
m_regs.s.r7 & r7_dspe,
m_regs.s.r7 & r7_md,
m_regs.s.r7 & r7_zron,
m_regs.s.r7 & r7_flip,
m_regs.s.r7 & r7_dckm);
logerror(
"\tR#08: $%02X : HDS(%d),VDS(%d),RLRT(%d),RLSC(%d),PGS(%d)\n",
m_regs.b[8],
m_regs.s.r8 & r8_hds,
m_regs.s.r8 & r8_vds,
m_regs.s.r8 & r8_rlrt,
m_regs.s.r8 & r8_rlsc,
m_regs.s.r8 & r8_pgs);
logerror(
"\tR#11: $%02X : CTPA(%d),CTPB(%d),PRM(%d),CBDR(%d),YSE(%d),SCM(%d)\n",
m_regs.b[11],
m_regs.s.r11 & r11_ctpa,
m_regs.s.r11 & r11_ctpb,
m_regs.s.r11 & r11_prm,
m_regs.s.r11 & r11_cbdr,
m_regs.s.r11 & r11_yse,
m_regs.s.r11 & r11_scm);
logerror(
"\tR#40: $%02X : HTL9:8($%02X)=$%06X,HDW(%d)\n",
m_regs.b[40],
m_regs.s.r40 & r40_htl89, (int)(m_regs.s.r40 & r40_htl89) << 8,
m_regs.s.r40 & r40_hdw);
logerror(
"\tR#41: $%02X : HDSP($%02X)\n",
m_regs.b[41],
m_regs.s.hdsp );
logerror(
"\tR#42: $%02X : HTL7:0($%02X)\n",
m_regs.b[42],
m_regs.s.htl );
logerror(
"\t HTL=$%03X\n",
( (int)(m_regs.s.r40 & r40_htl89) << 8 ) |
( (int)m_regs.s.htl ) );
logerror(
"\tR#47: $%02X : TB12:5($%02X) = $%06X\n",
m_regs.b[47],
m_regs.s.tb5, (int)m_regs.s.tb5 << 5 );
logerror(
"\tR#48: $%02X : TB20:13($%02X) = $%06X\n",
m_regs.b[48],
m_regs.s.tb13, (int)m_regs.s.tb13 << 13 );
logerror(
"\t TB=$%06X\n",
( (int)m_regs.s.tb13 << 13 ) |
( (int)m_regs.s.tb5 << 5 ) );
logerror(
"\tR#49: $%02X : TN11:4($%02X) = $%04X\n",
m_regs.b[49],
m_regs.s.tn4, (int)m_regs.s.tn4 << 4 );
logerror(
"ShortCuts:\n" );
for( p=0; p<2; p++ ) {
logerror( "\t" );
for( b=0; b<8; b++ ) {
logerror( "%02X ", m_base_addr[p][b] );
}
logerror( "\n" );
}
}

View File

@ -120,76 +120,6 @@ private:
uint8_t p7; // P#7 - system control port (read/write)
};
struct YGV_REGS {
uint8_t r0; // R#0 - pattern name table access ptr (r/w)
uint8_t r1; // R#1 - pattern name table access ptr (r/w)
uint8_t r2; // R#2 - built in ram access control
uint8_t saa; // R#3 - sprite attribute table access ptr (r/w)
uint8_t sca; // R#4 - scroll table access ptr (r/w)
uint8_t cc; // R#5 - color palette access ptr (r/w)
uint8_t sba; // R#6 - sprite generator base address (r/w)
// R#7 - R#11 - screen control (r/w)
uint8_t r7; // misc screen control (r/w)
uint8_t r8; // misc screen control (r/w)
uint8_t r9; // misc screen control (r/w)
uint8_t r10; // misc screen control (r/w)
uint8_t r11; // misc screen control (r/w)
uint8_t r12; // R#12 - color palette selection (r/w)
uint8_t bdc; // R#13 - border colour (wo)
// R#14 - R#16 - interrupt control
uint8_t r14;
uint8_t il;
uint8_t r16;
// R#17 - R#24 - base address (wo)
uint8_t r17;
uint8_t r18;
uint8_t r19;
uint8_t r20;
uint8_t r21;
uint8_t r22;
uint8_t r23;
uint8_t r24;
// R#25 - R#38 - enlargement, contraction and rotation parameters (wo)
uint8_t ax0;
uint8_t ax8;
uint8_t ax16;
uint8_t dx0;
uint8_t dx8;
uint8_t dxy0;
uint8_t dxy8;
uint8_t ay0;
uint8_t ay8;
uint8_t ay16;
uint8_t dy0;
uint8_t dy8;
uint8_t dyx0;
uint8_t dyx8;
// R#39 - R#46 - display scan control (wo)
uint8_t r39;
uint8_t r40;
uint8_t hdsp;
uint8_t htl;
uint8_t r43;
uint8_t r44;
uint8_t r45;
uint8_t vtl;
// R#47 - R#49 - rom transfer control (wo)
uint8_t tb5;
uint8_t tb13;
uint8_t tn4;
};
static constexpr unsigned MAX_SPRITES = SPRITE_ATTR_TABLE_SIZE >> 2;
struct SPRITE_ATTR {
@ -221,18 +151,12 @@ private:
void HandleYGV608Reset();
void HandleRomTransfers(uint8_t type);
void ShowYGV608Registers();
union {
uint8_t b[8];
YGV_PORTS s;
} m_ports;
union {
uint8_t b[50];
YGV_REGS s;
} m_regs;
/*
* Built in ram
*/