summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/video/huc6270.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/video/huc6270.c')
-rw-r--r--src/emu/video/huc6270.c109
1 files changed, 54 insertions, 55 deletions
diff --git a/src/emu/video/huc6270.c b/src/emu/video/huc6270.c
index 76b9f3e5bdd..148f28b66d5 100644
--- a/src/emu/video/huc6270.c
+++ b/src/emu/video/huc6270.c
@@ -53,7 +53,7 @@ TODO
#include "profiler.h"
#include "huc6270.h"
-#define LOG 0
+#define LOG 0
enum {
MAWR = 0x00,
@@ -78,13 +78,13 @@ enum {
/* Bits in the VDC status register */
-#define HUC6270_BSY 0x40 /* Set when the VDC accesses VRAM */
-#define HUC6270_VD 0x20 /* Set when in the vertical blanking period */
-#define HUC6270_DV 0x10 /* Set when a VRAM > VRAM DMA transfer is done */
-#define HUC6270_DS 0x08 /* Set when a VRAM > SATB DMA transfer is done */
-#define HUC6270_RR 0x04 /* Set when the current scanline equals the RCR register */
-#define HUC6270_OR 0x02 /* Set when there are more than 16 sprites on a line */
-#define HUC6270_CR 0x01 /* Set when sprite #0 overlaps with another sprite */
+#define HUC6270_BSY 0x40 /* Set when the VDC accesses VRAM */
+#define HUC6270_VD 0x20 /* Set when in the vertical blanking period */
+#define HUC6270_DV 0x10 /* Set when a VRAM > VRAM DMA transfer is done */
+#define HUC6270_DS 0x08 /* Set when a VRAM > SATB DMA transfer is done */
+#define HUC6270_RR 0x04 /* Set when the current scanline equals the RCR register */
+#define HUC6270_OR 0x02 /* Set when there are more than 16 sprites on a line */
+#define HUC6270_CR 0x01 /* Set when sprite #0 overlaps with another sprite */
const device_type HUC6270 = &device_creator<huc6270_device>;
@@ -308,8 +308,8 @@ inline void huc6270_device::handle_vblank()
}
/* Should we initiate a VRAM->SATB DMA transfer.
- The timing for this is incorrect.
- */
+ The timing for this is incorrect.
+ */
if ( m_dvssr_written || ( m_dcr & 0x10 ) )
{
int i;
@@ -512,8 +512,8 @@ WRITE_LINE_MEMBER( huc6270_device::vsync_changed )
handle_vblank();
/* Should we perform VRAM-VRAM dma.
- The timing for this is incorrect.
- */
+ The timing for this is incorrect.
+ */
if ( m_dma_enabled )
{
int desr_inc = ( m_dcr & 0x0008 ) ? -1 : +1;
@@ -593,7 +593,7 @@ READ8_MEMBER( huc6270_device::read )
switch ( offset & 3 )
{
- case 0x00: /* status */
+ case 0x00: /* status */
data = m_status;
m_status &= ~( HUC6270_VD | HUC6270_DV | HUC6270_RR | HUC6270_CR | HUC6270_OR | HUC6270_DS );
m_irq_changed( CLEAR_LINE );
@@ -622,31 +622,31 @@ WRITE8_MEMBER( huc6270_device::write )
switch ( offset & 3 )
{
- case 0x00: /* VDC register select */
+ case 0x00: /* VDC register select */
m_register_index = data & 0x1F;
break;
- case 0x02: /* VDC data LSB */
+ case 0x02: /* VDC data LSB */
switch ( m_register_index )
{
- case MAWR: /* memory address write register LSB */
+ case MAWR: /* memory address write register LSB */
m_mawr = ( m_mawr & 0xFF00 ) | data;
break;
- case MARR: /* memory address read register LSB */
+ case MARR: /* memory address read register LSB */
m_marr = ( m_marr & 0xFF00 ) | data;
m_vrr = m_vram[ m_marr & m_vram_mask ];
break;
- case VxR: /* vram write data LSB */
+ case VxR: /* vram write data LSB */
m_vwr = ( m_vwr & 0xFF00 ) | data;
break;
- case CR: /* control register LSB */
+ case CR: /* control register LSB */
m_cr = ( m_cr & 0xFF00 ) | data;
break;
- case RCR: /* raster compare register LSB */
+ case RCR: /* raster compare register LSB */
m_rcr = ( m_rcr & 0x0300 ) | data;
//printf("%s: RCR set to %03x\n", machine().describe_context(), m_rcr);
// if ( m_raster_count == m_rcr && m_cr & 0x04 )
@@ -657,87 +657,87 @@ WRITE8_MEMBER( huc6270_device::write )
//if (LOG) printf("%04x: RCR (%03x) written at %d,%d\n", activecpu_get_pc(), huc6270->m_rcr, video_screen_get_vpos(device->machine->primary_screen), video_screen_get_hpos(device->machine->primary_screen) );
break;
- case BXR: /* background x-scroll register LSB */
+ case BXR: /* background x-scroll register LSB */
m_bxr = ( m_bxr & 0x0300 ) | data;
//if (LOG) printf("*********************** BXR written %d at %d,%d\n", m_bxr, video_screen_get_vpos(device->machine->primary_screen), video_screen_get_hpos(device->machine->primary_screen) );
break;
- case BYR: /* background y-scroll register LSB */
+ case BYR: /* background y-scroll register LSB */
m_byr = ( m_byr & 0x0100 ) | data;
m_byr_latched = m_byr;
//if (LOG) printf("******************** BYR written %d at %d,%d\n", huc6270->m_byr, video_screen_get_vpos(device->machine->primary_screen), video_screen_get_hpos(device->machine->primary_screen) );
break;
- case MWR: /* memory width register LSB */
+ case MWR: /* memory width register LSB */
m_mwr = ( m_mwr & 0xFF00 ) | data;
break;
- case HSR: /* horizontal sync register LSB */
+ case HSR: /* horizontal sync register LSB */
m_hsr = ( m_hsr & 0xFF00 ) | data;
break;
- case HDR: /* horizontal display register LSB */
+ case HDR: /* horizontal display register LSB */
m_hdr = ( m_hdr & 0xFF00 ) | data;
break;
- case VPR: /* vertical sync register LSB */
+ case VPR: /* vertical sync register LSB */
m_vpr = ( m_vpr & 0xFF00 ) | data;
break;
- case VDW: /* vertical display register LSB */
+ case VDW: /* vertical display register LSB */
m_vdw = ( m_vdw & 0xFF00 ) | data;
break;
- case VCR: /* vertical display end position register LSB */
+ case VCR: /* vertical display end position register LSB */
m_vcr = ( m_vcr & 0xFF00 ) | data;
break;
- case DCR: /* DMA control register LSB */
+ case DCR: /* DMA control register LSB */
m_dcr = ( m_dcr & 0xFF00 ) | data;
break;
- case SOUR: /* DMA source address register LSB */
+ case SOUR: /* DMA source address register LSB */
m_sour = ( m_sour & 0xFF00 ) | data;
break;
- case DESR: /* DMA destination address register LSB */
+ case DESR: /* DMA destination address register LSB */
m_desr = ( m_desr & 0xFF00 ) | data;
break;
- case LENR: /* DMA length register LSB */
+ case LENR: /* DMA length register LSB */
m_lenr = ( m_lenr & 0xFF00 ) | data;
break;
- case DVSSR: /* Sprite attribute table LSB */
+ case DVSSR: /* Sprite attribute table LSB */
m_dvssr = ( m_dvssr & 0xFF00 ) | data;
m_dvssr_written = 1;
break;
}
break;
- case 0x03: /* VDC data MSB */
+ case 0x03: /* VDC data MSB */
switch ( m_register_index )
{
- case MAWR: /* memory address write register MSB */
+ case MAWR: /* memory address write register MSB */
m_mawr = ( m_mawr & 0x00FF ) | ( data << 8 );
break;
- case MARR: /* memory address read register MSB */
+ case MARR: /* memory address read register MSB */
m_marr = ( m_marr & 0x00FF ) | ( data << 8 );
m_vrr = m_vram[ m_marr & m_vram_mask ];
break;
- case VxR: /* vram write data MSB */
+ case VxR: /* vram write data MSB */
m_vwr = ( m_vwr & 0x00FF ) | ( data << 8 );
m_vram[ m_mawr & m_vram_mask ] = m_vwr;
m_mawr += vram_increments[ ( m_cr >> 11 ) & 3 ];
break;
- case CR: /* control register MSB */
+ case CR: /* control register MSB */
m_cr = ( m_cr & 0x00FF ) | ( data << 8 );
break;
- case RCR: /* raster compare register MSB */
+ case RCR: /* raster compare register MSB */
m_rcr = ( m_rcr & 0x00FF ) | ( ( data & 0x03 ) << 8 );
//printf("%s: RCR set to %03x\n", machine().describe_context(), m_rcr);
// if ( m_raster_count == m_rcr && m_cr & 0x04 )
@@ -747,58 +747,58 @@ WRITE8_MEMBER( huc6270_device::write )
// }
break;
- case BXR: /* background x-scroll register MSB */
+ case BXR: /* background x-scroll register MSB */
m_bxr = ( m_bxr & 0x00FF ) | ( ( data & 0x03 ) << 8 );
break;
- case BYR: /* background y-scroll register MSB */
+ case BYR: /* background y-scroll register MSB */
m_byr = ( m_byr & 0x00FF ) | ( ( data & 0x01 ) << 8 );
m_byr_latched = m_byr;
break;
- case MWR: /* memory width register MSB */
+ case MWR: /* memory width register MSB */
m_mwr = ( m_mwr & 0x00FF ) | ( data << 8 );
break;
- case HSR: /* horizontal sync register MSB */
+ case HSR: /* horizontal sync register MSB */
m_hsr = ( m_hsr & 0x00FF ) | ( data << 8 );
break;
- case HDR: /* horizontal display register MSB */
+ case HDR: /* horizontal display register MSB */
m_hdr = ( m_hdr & 0x00FF ) | ( data << 8 );
break;
- case VPR: /* vertical sync register MSB */
+ case VPR: /* vertical sync register MSB */
m_vpr = ( m_vpr & 0x00FF ) | ( data << 8 );
break;
- case VDW: /* vertical display register MSB */
+ case VDW: /* vertical display register MSB */
m_vdw = ( m_vdw & 0x00FF ) | ( data << 8 );
break;
- case VCR: /* vertical display end position register MSB */
+ case VCR: /* vertical display end position register MSB */
m_vcr = ( m_vcr & 0x00FF ) | ( data << 8 );
break;
- case DCR: /* DMA control register MSB */
+ case DCR: /* DMA control register MSB */
m_dcr = ( m_dcr & 0x00FF ) | ( data << 8 );
break;
- case SOUR: /* DMA source address register MSB */
+ case SOUR: /* DMA source address register MSB */
m_sour = ( m_sour & 0x00FF ) | ( data << 8 );
break;
- case DESR: /* DMA destination address register MSB */
+ case DESR: /* DMA destination address register MSB */
m_desr = ( m_desr & 0x00FF ) | ( data << 8 );
break;
- case LENR: /* DMA length register MSB */
+ case LENR: /* DMA length register MSB */
m_lenr = ( m_lenr & 0x00FF ) | ( data << 8 );
m_dma_enabled = 1;
//logerror("DMA is not supported yet.\n");
break;
- case DVSSR: /* Sprite attribute table MSB */
+ case DVSSR: /* Sprite attribute table MSB */
m_dvssr = ( m_dvssr & 0x00FF ) | ( data << 8 );
m_dvssr_written = 1;
break;
@@ -832,9 +832,9 @@ void huc6270_device::device_reset()
m_bxr = 0;
m_byr = 0;
m_mwr = 0;
- m_hsr = 0x0202; /* Take some defaults for horizontal timing */
+ m_hsr = 0x0202; /* Take some defaults for horizontal timing */
m_hdr = 0x041f;
- m_vpr = 0x0f02; /* Take some defaults for vertical timing */
+ m_vpr = 0x0f02; /* Take some defaults for vertical timing */
m_vdw = 0x00ef;
m_vcr = 0x0004;
m_dcr = 0;
@@ -847,4 +847,3 @@ void huc6270_device::device_reset()
m_satb_countdown = 0;
m_raster_count = 0x4000;
}
-