Targa
Targa+
Usually the Targa+ operates in Non-Contigous mode where the 16 I/O registers
used are spread in 4 groups of 4 registers each separated by 400h. By setting
a jumper the Targa+ can operate in Contigous mode where the 16 registers are
laid out sequentially. Also the base I/O address is set by jumpers.
Note that this is one adapter where the indexed registers can really be 16bit
wide, so that the notation W(R/W) indicates ONE 16bit index, not two 8bit ones
Contiguous: Non-Contiguous: Read: Write:
Reg00: + 00h + 0000h VIDSTAT COLOR0
Reg01: + 01h + 0001h COLOR1
Reg02: + 02h + 0002h CTL COLOR2
Reg03: + 03h + 0003h MASKL COLOR3
Reg04: + 04h + 0400h LBNK VIDCON
Reg05: + 05h + 0401h READAD INDIRECT
Reg06: + 06h + 0402h MODE1 HUESAT
Reg07: + 07h + 0403h OVSTRT OVSTRT
Reg08: + 08h + 0800h USCAN MASKL
Reg09: + 09h + 0801h MASKH MASKH
Reg10: + 0Ah + 0802h OSCAN LBNK
Reg11: + 0Bh + 0803h HBNK HBNK
Reg12: + 0Ch + 0C00h ROWC ROWC
Reg13: + 0Dh + 0C01h MODE2 MODE2
Reg14: + 0Eh + 0C02h RBL WBL
Reg15: + 0Fh + 0C03h RBH WBH
Reg00 (R): VIDSTAT
bit 0 If set an odd field is being displayed if clear an even field.
1 If clear a sync signal is detected indicating that an external video
source is connected to the Targa+
Reg00 (W): COLOR0
bit 0-7 Low byte of the Border Color
Note: this register is also accessible as ADV index E0h
Reg01 (W): COLOR1
bit 0-7 Second byte of the Border Color
Note: this register is also accessible as ADV index E1h
Reg01 (R): CTL
bit 0 Set whenever a vertical blanking occurs. Cleared when this register
is read
1-3 The version number for the Targa chipset
4-7 Memory configuration. Ah: T16, Bh: T16P, Eh: T16/32, Fh: T16/32P
or T64
Reg02 (W): COLOR2
bit 0-7 Third byte of the Border Color.
When in 16bit mode this should be set to 0.
Note: this register is also accessible as ADV index E2h
Reg03 (R): MASKL
This is the read port for Reg08
Reg03 (W): COLOR3
bit 0-7 High byte of the Border Color.
When in 16 or 24bit mode this should be set to 0
Note: this register is also accessible as ADV index E3h
Reg04 (R): LBNK
This is the read port for Reg10
Reg04 (W): VIDCON
bit 0 LiveMixSrc. 0: Bilevel Blending, 1: Dynamic Blending
1-5 Contrast. 10h is nominal
6 Set if inputting from a RGB source, clear for Composite or S-video
inputs.
Note: This register is also present at Advanced index E4h.
Reg05 (R): READAD
bit 3 INAE. If set the Targa+ is in Advanced Operating Mode
Note: This is the read port for the ADVANCED register (Std indirect 90h)
Reg05 (W): INDIRECT
bit 0-7 If the Targa+ is in Advanced Mode (the INAE bit is set) this is the
index register for the Advanced registers.
Write the index to this register and read/write the data at Reg14.
Reg06 (R): MODE1
This is the read port for Reg12
Reg06 (W): HUESAT
bit 0-4 Hue for input composite video. Nominal 10h
5-7 Saturation for input composite video. Nominal 4
Reg07 (R/W): OVSTRT
bit 0-7 Used for standard Targa mode
Reg08 (R): USCAN
Reading this register places the Targa+ in underscan mode
Reg08 (W): MASKL
bit 0-7 Low mask byte. Each bit set will protect the corresponding bit(s) in
memory from change during CPU access. This does not affect capture!
Note: This register can be read from Reg03
Reg09 (R/W): MASKH
bit 0-7 High mask byte. Each bit set will protect the corresponding bit(s) in
memory from change during CPU access. This does not affect capture!
Reg10 (R): OSCAN
Reading this register places the Targa+ in overscan mode
Reg10 (W): LBNK
bit 0-5 32K bank number for the lower half of the 64K window
Note: This register can be read from Reg04
Reg11 (R/W): HBNK
bit 0-5 32K bank number for the upper half of the 64K window
Reg12 (R): ROWCNT
bit 0-7 This register is 0 when the display is in retrace, or else the number
of the line currently being displayed
Reg12 (W): MODE1
bit 0 If set the video memory is enabled, if clear the video memory is
disabled and can not be read or written.
3-5 In Targa compatibility mode this selects one of eight 64K video
memory blocks
6 MOD. If clear the INDIRECT register (reg05) is an index to the
advanced indirect registers. If set the INDIRECT register is an index
to the standard indirect registers.
Note: This register can be read from Reg06
Reg13 (R/W): MODE2
bit 2-3 ZOOM factor. 0: none, 1: x2, 2: x4, 3: x8
4-5 DISPMODE.
0: Display from memory with fixed color border
1: Live video with fixed color border
2: Overlay mode with live border
3: Live mode with live border
6 Enables the capture feature.
7 GENLOCK. If set the Targa+ will attempt to sync to the clock supplied
with the incoming video. If clear the Targa+ is in Master Mode and
provides its own video timing control
Reg14 W(R/W): RB/WB
bit 0-15 Data port for the Advanced registers. The index is written to Reg05
and the data is read or written in this register.
Some of the Advanced registers are 8bits and some 16bits.
ADV index 20h W(R/W): CLOCK
bit 0-10 The 13.5MHz clock is divided by this value to get the line clock.
I.e.. 858 gives 13.5MHz/858 = 15.734KHz (NTSC frequency).
ADV index 21h (R/W): GENCTRL
bit 0 Vertical Preload Mode. If set the vertical counter is reset every
time the frame alignment is found to be false, if clear the vertical
counter is reset only after 7 consecutive fields are found to be
misaligned.
1-2 Field. Selects the field which is used for frame alignment.
0: Odd field, 1: Even field, 2: either field is used.
3-5 (R) If bit 0 is clear, this is the number of consecutive
misalignments which has happened.
ADV index 40h W(R/W): VTOTAL
bit 0-10 This is twice the number of lines in a field. If the value is odd,
interlaced timing will be generated.
11-15 Should be set to 0
ADV index 41h W(R/W): HTOTAL
bit 0-8 This is the number of SGCLK pulses in half a scanline
9-15 Should be set to 0
ADV index 42h W(R/W): SYNC
bit 0-3 This is twice the number of scanlines used for vertical sync.
4-7 Should be set to 0
8-13 This is half the number of SGCLK pulses in one horizontal sync
pulse.
14-15 Should be set to 0
ADV index 43h W(R/W): HPHASE
bit 0-8 When the Targa+ is in Slave Genlock mode, this is the number of
SGCLK pulses before a Horizontal Reference pulse is generated.
Depending on bit 9 this is from the start or the middle of the line.
9 If set the value in bits 0-8 is from the middle of the scanline,
if clear it is from the beginning of the scanline.
10-15 Should be set to 0
ADV index 44h W(R/W): VBEND
bit 0-10 This is twice the number of scanlines blanked for each field.
11-15 Should be set to 0
ADV index 45h W(R/W): HBSTRT
bit 0-8 The number of SGCLK pulses from the middle of the scanline to the
start of the Horizontal Blanking.
9 Should be set to 1
10-15 Should be set to 0
ADV index 46h W(R/W): HBEND
bit 0-8 The number of SGCLK pulses from the end of the scanline to the end
of Horizontal Blanking.
9-15 Should be set to 0
ADV index 47h W(R/W): VSTRT
bit 0-10 This is twice the scanline where display starts. If this value is
larger than VEND (index 44h) a border is shown in the color defined
by COLOR0-3 (Reg00-Reg03).
11-15 Should be set to 0
ADV index 48h W(R/W): VEND
bit 0-10 This is twice the number of the scanline where display stops.
If this value is smaller then VTOTAL (index 40h) a border is shown
in the color defined by COLOR0-3 (Reg00-Reg03).
11-15 Should be set to 0
ADV index 49h W(R/W): HSTRT
bit 0-9 The number of SGCLK pulses from the end of the scanline until
display starts. If this value is larger than HBEND (index 46h) a
border is shown in the color defined by COLOR0-3 (Reg00-Reg03).
10-15 Should be 0
ADV index 4Ah W(R/W): HEND
bit 0-9 The number of SGCLK pulses from the middle of the scanline until the
display stops. If this value is smaller then HBSTRT (index 45h) a
border is shown in the color defined by COLOR0-3 (Reg00-Reg03).
10-15 Should be 0
ADV index 4Bh W(R/W): BURST
bit 0-6 The number of SGCLK pulses from the start of Horizontal Blanking to
the start of the color burst signal.
7 Should be set to 0
8-13 The width of the color burst in SGCLK pulses.
14-15 Should be set to 0
ADV index 4Ch W(R/W): SGCNTRL1
bit 0-3 Delay for sync outputs in number of pixels. Typically 9.
4-7 Delay for the composite blanking in number of pixels.
Typically 5.
8 Should be set to 0
9 Number of refresh cycles per scan lines
10-15 Should be set to 0
ADV index 4Dh W(R/W): SGCNTRL2
bit 0 Should be set to 0
1 If set use Meander burst mode (PAL), if clear use normal burst mode
(NTSC).
2-3 The field generated when doing non-interlaced scanning.
In normal burst mode (NTSC) 0: Even field, 1: Odd field.
In Meander burst mode (PAL) 0: field0, 1: field1, 2: field2,
3: field3
4 If set the new sync generator is used for access to the new Targa+
feature set, if clear the original sync generator is used for
compatibility with the original Targa
5 If set video display is enabled.
6 If set video refresh is enabled.
7 If set enables the sync outputs (Horizontal Sync, Vertical Sync,
Composite Sync, Composite Blanking, Color Burst and half
horizontal rate signal used for PAL). If clear these outputs are
held in their inactive state.
8-15 Should be set to 0
ADV index 4Eh W(R/W): SGSTATUS
bit 0-1 The current field being displayed.
In normal burst mode (NTSC): 0: Even field, 1: Odd field
In Meander burst mode (PAL):
0: field0, 1: field1, 2: field2, 3: field3
2 If set the Targa+ is producing vertical sync.
3 The vertical drive signal
4 If set the Targa+ is producing vertical sync.
5-15 Should be set to 0
ADV index 53h W(R/W): LINECNT
bit 0-9 The number of the scanline being displayed.
10-15 Should be set to 0
Note: the lower 8 bits can also be read from the ROWCNT (Reg12) register.
ADV index 80h W(R/W): TOP
bit 0-9 This is display line the display wraps to when it reaches the line
in BOT. In interlaced modes this is half the line number
ADV index 81h W(R/W): BOT
bit 0-9 When the display reaches this line it wraps to the line in TOP
In interlaced modes this is half the line number
ADV index 82h W(R/W): VPAN
bit 0-9 This is the line number the display starts at for each field.
This is coded as 511-(Physical row / 2)
ADV index 84h (R/W): DSCAN
bit 0 If clear the display is interlaced.
1-6 Should be set to 0
7 If the display is non-interlaced (bit 0 is set) this bit selects
whether the first line displayed is from the odd or even bank.
0: Odd, 1: Even
ADV index 85h (R/W): CLOCKMODE
bit 0-1 Clocking mode:
0: Up to 512 pixels per scanline, interlaced. PCLK from 9.5 to
11.5MHz. Can both display and capture.
PCLK = SGCLK = SCLK = MCLK/4
1: Up to 512 pixels per scanline, non-interlaced. PCLK from 19 to
23MHz. Display only.
PCLK = SCLK = MCLK/2, SGCLK = MCLK/4
2: Hiresolution interlaced modes. PCLK from 11.5 to 13MHz and from
13.5 to 15MHz. Can both display and capture.
PCLK = SGCLK = MCLK/2, SCLK = MCLK/4
3: Hiresolution non-interlaced modes. PCLK from 23 to 26MHz and
from 27 to 30MHz. Display only.
PCLK = MCLK, SGCLK = SCLK = MCLK/2
2-3 Should be set to 0
4 Set if in hiresolution modes (>512 pixels across).
5-6 These bits must be preserved when writing this register
7 Should be set to 0
ADV index 90h (R/W): ADVANCED
bit 0-1 Memory mode. 0: 8bit per pixel, 1: 16bit, 2: 24bit, 3: 32bit.
2 Set in 16 and 32 bit modes except 16bit hiresolution modes.
3 INAE. If set the Targa+ is in Advanced Operation mode, if clear in
Standard Operation mode.
4-5 Must be set to 0
6 If set interrupts are active high, if clear active low.
7 If set interrupts are enabled, if clear disabled.
ADV index 91h (R/W): WAIT
bit 0-1 Wait states for reads: 0: 1, 1: 2, 2: 4, 3: 0
2-3 Wait states for writes: 0: 1, 1: 2, 2: 4, 3: 0
4-5 Wait states for I/O ops: 0: 1, 1: 2, 2: 4, 3: 0
6 DacClk. Clock signal for I2C bus. This bit should be preserved
unless the I2C bus is being accessed.
7 DacData. Data signal for I2C bus. This bit should be preserved
unless the I2C bus is being accessed.
ADV index 92h (R/W): CEM
bit 0-3 ByCap. Each bit if set enables capture via one channel.
Bit 0 is the Blue channel, bit 1 is the Green, bit 2 is the Red
and bit 3 is the Alpha channel.
ADV index A0h W(R/W): TAP
bit 0-9 In Advanced Operating Mode this is the number of the first pixel
displayed in each line. In DSCAN or Hires mode this is in units of
two pixels
ADV index A1h (R/W): MEMORY
bit 0 Must be preserved.
1-4 Video Memory base address:
BigBank/Linear mode: Bank mode:
0: illegal 80000h
1: 100000h 90000h
2: 200000h A0000h
3: 300000h B0000h
4: 400000h C0000h
5: 500000h D0000h
6: 600000h E0000h
7: 700000h F0000h
8: 800000h illegal
9: 900000h illegal
Ah: A00000h illegal
Bh: B00000h illegal
Ch: C00000h illegal
Dh: D00000h illegal
Eh: E00000h illegal
Fh: F00000h illegal
5-6 Memory addressing:
0 Bank addressing
2 BigBank addressing
3 Linear Addressing
7 If clear memory transfers are 16bit
ADV index B0h W(R/W): BITCAP
bit 0-15 Should be set to FFFFh. Reserved for future use.
ADV index D0h (R/W): VGA
bit 0 Set if each line is wider than 512 pixels.
2 compareEnb. See index EAh bits 0-1.
3-4 OverlayVGASrc. Determines the VGA overlay mode.
0: VGA only, 1: TARGA+ only, 2: TARGA+ overlay (TARGA+ specifies
overlay), 3: VGA overlay (VGA specifies overlay)
5 MixLock. Used to lock the mixer in the off state.
Should be set to 1 for compatibility with the original Targa.
7 Diff8. If set the difference between the 8bit live signal and an
8bit memory image is produced at the output of the mixer.
ADV index D1h (R/W): COMP0
bit 0-7 Low byte of the 24bit COMP register used in VGA and TARGA+ overlay
compare
ADV index D2h (R/W): COMP1
bit 0-7 Middle byte of the 24bit COMP register used in VGA and TARGA+
overlay compare. This byte is not used in 8bit modes
ADV index D3h (R/W): COMP2/VGAMASK
bit 0-7 High byte of the 24bit COMP register used in VGA and TARGA+
overlay compare. This byte is only used in 24bit modes.
This value is also used as a mask value for the TARGA+ and VGA 8bit
overlay compare modes
ADV index D8h (R/W): LUT WRITE
bit 0-7 This is the write index into the RAMDAC palette. First write the
index of the palette color to this register, then write three times
to the LUT COLOR PALETTE register (index D9h) (red, green and then
blue). When the blue data is written, this register is automatically
incremented.
This is functionally equivalent to the VGA register 3C8h
ADV index D9h (R/W): LUT COLOR PALETTE
bit 0-7 Palette data.
This is functionally equivalent to the VGA register 3C9h
ADV index DAh (R/W): LUT MASK
bit 0-7 This value is anded with the color index before it reaches the
palette chip.
This is functionally equivalent to the VGA register 3C6h
ADV index DBh (R/W): LUT READ
bit 0-7 This is the read index into the RAMDAC palette. First write the
index of the palette color to this register, then read three times
from the LUT COLOR PALETTE register (index D9h) (red, green and then
blue). When the blue data is read, this register is automatically
incremented.
This is functionally equivalent to the VGA register 3C7h
ADV index DEh (R/W): LUT COMMAND
bit 0-1 Selects the frequency band.
2 Enables the sync generator if set. Should be set for proper
operation.
3 DacEnb. Should be set (1) for proper operation.
4 Should be set (1).
5 Selects whether a 0 IRE or 7.5 IRE blanking pedestal is used.
Should be set to 0 for PAL signals.
6-7 Should be set to 0.
ADV index E0h (R/W): COLOR0
bit 0-7 Low byte of the Border Color
Note: this register can also be written to at Reg00
ADV index E1h (R/W): COLOR1
bit 0-7 Second byte of the Border Color
Note: this register can also be written to at Reg01
ADV index E2h (R/W): COLOR2
bit 0-7 Third byte of the Border Color
Note: this register can also be written to at Reg02
ADV index E3h (R/W): COLOR3
bit 0-7 High byte of the Border Color
Note: this register can also be written to at Reg03
ADV index E4h (R/W): VIDCON
bit 0 LiveMixSrc. 0: Bilevel Blending, 1: Dynamic Blending
1-5 Contrast. 10h is nominal
6 Set if inputting from a RGB source, clear for Composite or S-video
inputs.
Note: This register can also be written to at Reg04
ADV index E5h (R/W): LIVEMIXZERO
bit 0-7 Used with the chromakeyer as an amplitude adjustment.
The LIVEMIX control signal to the digital Blender is calculated as:
(LiveMixIn - LIVEMIXZERO) << LiveMixGain
LiveMixGain is bits 6-7 of the BUFFERPORT register
ADV index E6h (R/W): HUESAT
Note: This register can also be written to at Reg06
ADV index E7h (R/W): SVIDEO
bit 0-6 Should be set to 1
7 SVHS. If VIDCON (ADV index E4h) bit 6 is clear this bit selects
whether the input is a standard composite signal (0) or Svideo (1).
Svideo means you have separate Y and C signals.
ADV index E8h (R/W): VIDEOMODE
bit 0-1 BufferPortSrc. Only valid if index E9h bit 0 is 0.
Determines the input to the Buffer Port Input of the Blender
0: 8bits, 1: lower 16bits, 2: upper 16bits, 3: 24bits
2-3 Which8. Selects the byte (Red, Green, Blue or Alpha) sent to the
Blender Input 2 (in 8bit mode) or used as overlay control data (in
32bit mode). 0: Blue, 1: Green, 2: Red, 3: Alpha
4 MonoSrc. If bits 5-6 are 0 this selects the source of the monochrome
capture. 0: green input channel, 1: Chromakeyer
5-6 CM. TARGA+ capture mode: 0: Mono, 2: 16bit color, 3: 24bit color
7 bbyp. If set the Blender is bypassed and the output to the DACs is
directly from the VRAM
ADV index E9h (R/W): BUFFERPORT
bit 0 BufferPortColor. If set the Buffer Port Input of the Blender is fed
from the Border Color registers, if clear from VRAM
1 LivePortColor. If set (and BLENDER1 bit 4 is set) the Live Port of
the Blender receives bits 0-14 of the border color registers, rather
than from VRAM
2 LiveMixColor. If set, Color3 provides the LIVEMIX control signal
3-4 LutByp. Contro9ls whether the output of the Blender is passed
through or around the LUTs
5 Alpha8. Data width of the Alpha channel. 8bit if set, 7 if clear.
6-7 LiveMixGain. Shiftvalue for the alpha control values passed to the
blender. 0: Normal, 1: Shift left 1 bit, 2: Shift left 2 bits.
ADV index EAh (R/W): MIXCTRL3
bit 0-1 overlaySrc. Specifies the source of the overlay control signal.
If index D0h bit 2 is set, the source is:
0: 8bit masked compare, 2: 15/24 bit compare
if clear, the source is:
0: bit 15 of VRAM, 1: bit 31 of VRAM, 2: 0
2 overlayInv. If set the overlay control data is inverted before being
used.
3 liveMixInv. If set the Alpha control signal is inverted before
reaching the blender.
4 CM3. If set the Targa+ recaptures the blended output from the
blenders.
5-7 Reserved. Should be set to 0
ADV index EBh (R/W): LIVEPORT
bit 0-2 Reserved. Should be set to 0
3 livePortWord. Only valid if bit 4 set and index E9h bit 1 is clear.
If set the upper 16 bits of VRAM are sent to the blender, if clear
the lower 16 bits are used
4 livePortSrc. If set the blender is fed from the border color
registers or from VRAM, if clear live data is fed to the blender.
5 live8. Only active if bit 4 is set and
6 fgp. Controls the ForeGround processor used in conjugation with the
chromakeyer.
7 Reserved. Should be set to 0
ADV index ECh (R/W): INVERT
bit 0 ZeroBlue. If set the blue signal does not participate in the
calculation of chroma signal
1 Chroma. If set the chromaOut signal only depends on the blue input
2-5 Should be set to 9
6 GreenKey. If set the red signal input does not participate in the
calculation of the chroma signal, if clear the green input is left
out.
7 livePortInv. If set the live data being routed to Blender Input 1
will be inverted
Note: The chroma output is:
ChromaOut = [(blur - max(red,green))* (1-zeroBlue)] +
[(255-(green*GreenKey)+(red*(1-Greenkey)))]*(1-chroma)
ADV index EDh (R/W): NOTOVLLEVEL
bit 0-7 This value is used as a constant blend value when the B-level blend
mode is selected (bit 0 of VIDCON (ADV index E4h) is 0) and the OVL
signal is 0
ADV index EEh (R/W): OVLLEVEL
bit 0-7 This value is used as a constant blend value when the B-level blend
mode is selected (bit 0 of VIDCON (ADV index E4h) is 0) and the OVL
signal is 1