HuC6270 (7up)

The 7up is a Video Display Controller. The PC-FX has two 7up chips. The PC-Engine used one 7up for it's video.

I/O Ports

HuC6270-AHuC6270-B
Register (W)0x4000x500
Status (R)0x4000x500
Data (R/W)0x4040x504

Register map

0x00VRAM write address
0x01VRAM read address
0x02VRAM read/write
0x05Control
0x06Raster Compare
0x07Background X-scroll
0x08Background Y-scroll
0x09Memory-access Width
0x0AHorizontal Sync
0x0BHorizontal Display
0x0CVertical Sync
0x0DVertical Display
0x0EVertical Display Position End
0x0FDMA control
0x10DMA transfer source
0x11DMA destination address
0x12DMA transfer length
0x13Sprite Attribute Table Address

Register

0x00   VRAM write address (Half)

Address to write to in VRAM. Writes to 0x02 automatically increase this.

0x01   VRAM read address (Half)

Address to read from in VRAM. Reads from 0x02 automatically increase this.

0x02   VRAM read/write (Half)

When written, writes the data to the address in 0x00 then increases it.

When read, reads the data from the address in 0x01 then increases it.

0x05   Control (Half)

Set HuC6270 behavior

BitsDescription
0Collision detection (write is masking)
1Sprite overflow (write is masking)
2Scanline match (write is masking)
3Vblank (write is masking)
6Display Sprite
7Display BG
12 ~ 11Auto-increase amounts 00 = +1
01 = +32
10 = +64
11 = +128

0x06   Raster Compare (Half)

More information needed!

0x07   Background X-scroll (Half)

X scrolling. Latched during each scanline, preventing mid-scanline changes.

0x08   Background Y-scroll (Half)

Y scrolling. Latched during each scanline, preventing mid-scanline changes.

0x09   Memory-access Width (Half)

Configure the size of virtual background map.

BitsDescription
0 ~ 1VRAM dot width
2 ~ 3Sprite dot width
4 ~ 5Virtual screen width 00 = 256 px (32 tile)
01 = 512 px (64 tile)
10 = 1024 px (128 tile)
11 = 1024 px (128 tile)
6Virtual screen height 0 = 256 px (32 tile)
1 = 512 px (64 tile)
7CG Mode (determines which plane is used when VRAM dot width is 11)

0x0A   Horizontal Sync (Half)

Horizontal sync width defines the width of the horizontal sync pulse in 8-pixel (character) units. The range is 1 to 32 characters. Horizontal display start defines the interval after the horizontal sync pulse to the start of the horizontal display period in character units. The range is 1 to 128 characters.

BitsDescription
0 ~ 4Horizontal sync width
8 ~ 14Horizontal display start - 1

0x0B   Horizontal Display (Half)

Horizontal display width defines the width of the horizontal active display period in character units. The range is 1 to 128 characters. Horizontal display end defines the interval following HDE to the end of the scanline, at which poinst the Horizontal Sync state is entered and a horizontal sync pulse is generated. The range is 1 to 128 characters. It should be set to the remainder from the desired number of characters per scanline, minus HSW, HDS, and HDW.

BitsDescription
0 ~ 6Horizontal display width - 1
8 ~ 14Horizontal display end - 1

0x0C   Vertical Sync (Half)

Vertical sync width defines the width of the vertical sync pulse in 8-pixel (character) units. The range is 1 to 32 characters. Vertical display start defines the interval after the vertical sync pulse to the start of the vertical display period in character units. The range is 1 to 128 characters.

BitsDescription
0 ~ 4Vertical sync width
8 ~ 15Vertical display start - 2

0x0C   Vertical Display (Half)

Vertical display width defines the width of the vertical active display period in character units. The range is 1 to 512 characters.

BitsDescription
0 ~ 8Vertical display width - 1

0x0E   Vertical Display Position End (Half)

Vertical Display Position defines the interval following Vertical display to the end of the frame, at which point the Vertical Sync state is entered and a vertical sync pulse is generated. The range is 0 to 255 scanlines. It should be set to the remainder from the desired number of scanlines per frame, minus VSW, VDS, and VDW.

BitsDescription
0 ~ 7Vertical display end

0x0F   DMA control(Half)

Controls the DMA functionality.

BitsDescription
0Interrupt at end of VRAM-SATB transfer. Checked at end of transfer.
1Interrupt at end of VRAM-VRAM transfer. Checked at end of transfer.
2Source address modification 0 = Increment
1 = Decrement
3Destination address modification 0 = Increment
1 = Decrement
4DSR DMA (VRAM-SATB transfer repetition)

0x10   DMA transfer source (Half)

Source address for DMA transfers.

0x11   DMA destination address (Half)

Destination address for DMA transfers.

0x12   DMA transfer length (Half)

Length of DMA transfers. Setting this starts the DMA transfer.

0x13   Sprite attribute table address(Half)

Address of the Sprite Attribute Table


[TOP]