1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
;
; PCE definitions. By Groepaz/Hitmen.
;
; FIXME: Screen dimensions can change according to the selected video mode.
screenrows = (224/8)
charsperline = 61
CH_HLINE = 1
CH_VLINE = 2
; HuC6270 -- Video Display Controller (VDC)
VDC_MAWR = 0 ; Memory Address Write Register
VDC_MARR = 1 ; Memory Address Read Register
VDC_VWR = 2 ; VRAM Write Register
VDC_VRR = 2 ; VRAM Read Register
VDC_UNK03 = 3 ; (unknown)
VDC_UNK04 = 4 ; (unknown)
VDC_CR = 5 ; Control Register
VDC_RCR = 6 ; Raster Counter Register
VDC_BXR = 7 ; Background X-Scroll Register
VDC_BYR = 8 ; Background Y-Scroll Register
VDC_MWR = 9 ; Memory-access Width Register
VDC_HSR = 10 ; Horizontal Sync Register
VDC_HDR = 11 ; Horizontal Display Register
VDC_VSR = 12 ; Vertical sync Register
VDC_VDR = 13 ; Vertical Display register
VDC_VCR = 14 ; Vertical display END position register
VDC_DCR = 15 ; (DMA) Control Register
VDC_SOUR = 16 ; (DMA) Source Register
VDC_DESR = 17 ; (DMA) Destination Register
VDC_LENR = 18 ; (DMA) Length Register
VDC_SATB = 19 ; Sprite Attribute Table
; VDC port
; Note: The zero-page addressing mode is redirected to page $20.
; We avoid it by using mirror locations that are outside of the zero page.
VDC_CTRL := $0200
VDC_DATA_LO := $0202
VDC_DATA_HI := $0203
; HuC6260 -- Video Color Encoder (VCE)
; The DAC has a palette of 512 colours.
; The bitmap of that data is 0000000gggrrrbbb (Green, Red, Blue).
; You can read and write the DAC registers.
VCE := $0400 ; base
VCE_CTRL := $0400 ; write $00 to reset
VCE_ADDR_LO := $0402 ; LSB of byte offset into palette
VCE_ADDR_HI := $0403 ; MSB of byte offset into palette
VCE_DATA_LO := $0404 ; LSB of 16-bit palette data
VCE_DATA_HI := $0405 ; MSB of 16-bit palette data
; Programmable Sound Generator (PSG)
PSG := $0800 ; base
PSG_CHAN_SELECT := $0800
PSG_GLOBAL_PAN := $0801
PSG_FREQ_LO := $0802
PSG_FREQ_HI := $0803
PSG_CHAN_CTRL := $0804
PSG_CHAN_PAN := $0805
PSG_CHAN_DATA := $0806
PSG_NOISE := $0807
PSG_LFO_FREQ := $0808
PSG_LFO_CTRL := $0809
; Timer
TIMER := $0C00 ; base
TIMER_COUNT := $0C00
TIMER_CTRL := $0C01
JOY_CTRL := $1000
IRQ_MASK := $1402
IRQ_STATUS := $1403
CDR_MEM_DISABLE := $1803
CDR_MEM_ENABLE := $1807
; Write to a VDC register.
.macro VREG arg1, arg2
st0 #arg1
st1 #<(arg2)
st2 #>(arg2)
.endmacro
|