device/gba: additional IO mapping for sound, DMA, SIO, and sprites
Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
родитель
06e34caa5f
коммит
79b63dd041
1 изменённых файлов: 374 добавлений и 21 удалений
|
@ -51,20 +51,39 @@ var (
|
||||||
GRAPHICS = (*GRAPHICS_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x004C)))
|
GRAPHICS = (*GRAPHICS_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x004C)))
|
||||||
|
|
||||||
// GBA Sound Channel 1 - Tone & Sweep
|
// GBA Sound Channel 1 - Tone & Sweep
|
||||||
SOUND1 = (*SOUND_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0060)))
|
SOUND1 = (*SOUND1_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0060)))
|
||||||
|
|
||||||
// GBA Sound Channel 2 - Tone
|
// GBA Sound Channel 2 - Tone
|
||||||
SOUND2 = (*SOUND_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0068)))
|
SOUND2 = (*SOUND2_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0068)))
|
||||||
|
|
||||||
// TODO: Sound channel 3 and 4
|
// GBA Sound Channel 3 - Wave Output
|
||||||
|
SOUND3 = (*SOUND3_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0070)))
|
||||||
|
|
||||||
|
// GBA Sound Channel 4 - Noise
|
||||||
|
SOUND4 = (*SOUND4_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0078)))
|
||||||
|
|
||||||
|
// GBA Sound Control
|
||||||
|
SOUND = (*SOUND_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0080)))
|
||||||
|
|
||||||
|
DMA0 = (*DMA_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x00B0)))
|
||||||
|
DMA1 = (*DMA_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x00BC)))
|
||||||
|
DMA2 = (*DMA_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x00C8)))
|
||||||
|
DMA3 = (*DMA_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x00D4)))
|
||||||
|
|
||||||
TM0 = (*TIMER_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0100)))
|
TM0 = (*TIMER_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0100)))
|
||||||
TM1 = (*TIMER_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0104)))
|
TM1 = (*TIMER_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0104)))
|
||||||
TM2 = (*TIMER_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0108)))
|
TM2 = (*TIMER_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0108)))
|
||||||
TM3 = (*TIMER_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x010C)))
|
TM3 = (*TIMER_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x010C)))
|
||||||
|
|
||||||
|
// Communication 1
|
||||||
|
SIODATA32 = (*SIODATA32_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0120)))
|
||||||
|
SIOMULTI = (*SIOMULTI_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0120)))
|
||||||
|
|
||||||
KEY = (*KEY_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0130)))
|
KEY = (*KEY_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0130)))
|
||||||
|
|
||||||
|
// Communication 2
|
||||||
|
SIO = (*SIO_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0134)))
|
||||||
|
|
||||||
INTERRUPT = (*INTERRUPT_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0200)))
|
INTERRUPT = (*INTERRUPT_Type)(unsafe.Add(unsafe.Pointer(REG_BASE), uintptr(0x0200)))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -119,8 +138,11 @@ const (
|
||||||
// Screenblock size
|
// Screenblock size
|
||||||
SBB_SIZE = 0x00800
|
SBB_SIZE = 0x00800
|
||||||
|
|
||||||
|
// BG VRAM_MODE_0_2 size
|
||||||
|
VRAM_BG_SIZE_MODE_0_2 = 0x10000
|
||||||
|
|
||||||
// BG VRAM size
|
// BG VRAM size
|
||||||
VRAM_BG_SIZE = 0x10000
|
VRAM_BG_SIZE_MODE_3_5 = 0x14000
|
||||||
|
|
||||||
// Object VRAM size
|
// Object VRAM size
|
||||||
VRAM_OBJ_SIZE = 0x08000
|
VRAM_OBJ_SIZE = 0x08000
|
||||||
|
@ -154,8 +176,11 @@ var (
|
||||||
// Back page address
|
// Back page address
|
||||||
MEM_VRAM_BACK = MEM_VRAM + VRAM_PAGE_SIZE
|
MEM_VRAM_BACK = MEM_VRAM + VRAM_PAGE_SIZE
|
||||||
|
|
||||||
// Object VRAM address
|
// Object VRAM address - BG Mode 0-2
|
||||||
MEM_VRAM_OBJ = MEM_VRAM + VRAM_BG_SIZE
|
MEM_VRAM_OBJ_MODE0_2 = MEM_VRAM + VRAM_BG_SIZE_MODE_0_2
|
||||||
|
|
||||||
|
// Object VRAM address - BG Mode 3-5
|
||||||
|
MEM_VRAM_OBJ_MODE_3_5 = MEM_VRAM + VRAM_BG_SIZE_MODE_3_5
|
||||||
)
|
)
|
||||||
|
|
||||||
// Display registers
|
// Display registers
|
||||||
|
@ -221,7 +246,7 @@ type GRAPHICS_Type struct {
|
||||||
BLDY volatile.Register16
|
BLDY volatile.Register16
|
||||||
}
|
}
|
||||||
|
|
||||||
type SOUND_Type struct {
|
type SOUND1_Type struct {
|
||||||
// Sweep register
|
// Sweep register
|
||||||
CNT_L volatile.Register16
|
CNT_L volatile.Register16
|
||||||
|
|
||||||
|
@ -232,7 +257,59 @@ type SOUND_Type struct {
|
||||||
CNT_X volatile.Register16
|
CNT_X volatile.Register16
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: DMA
|
type SOUND2_Type struct {
|
||||||
|
// Duty/Len/Envelope
|
||||||
|
CNT_L volatile.Register16
|
||||||
|
|
||||||
|
// not used
|
||||||
|
_ volatile.Register16
|
||||||
|
|
||||||
|
// Frequency/Control
|
||||||
|
CNT_H volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
|
type SOUND3_Type struct {
|
||||||
|
// Stop/Wave RAM select
|
||||||
|
CNT_L volatile.Register16
|
||||||
|
|
||||||
|
// Length/Volume
|
||||||
|
CNT_H volatile.Register16
|
||||||
|
|
||||||
|
// Frequency/Control
|
||||||
|
CNT_X volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
|
type SOUND4_Type struct {
|
||||||
|
// Length/Envelope
|
||||||
|
CNT_L volatile.Register16
|
||||||
|
|
||||||
|
// not used
|
||||||
|
_ volatile.Register16
|
||||||
|
|
||||||
|
// Frequency/Control
|
||||||
|
CNT_H volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
|
type SOUND_Type struct {
|
||||||
|
// Control Stereo/Volume/Enable
|
||||||
|
CNT_L volatile.Register16
|
||||||
|
|
||||||
|
// Control Mixing/DMA Control
|
||||||
|
CNT_H volatile.Register16
|
||||||
|
|
||||||
|
// Control Sound on/off
|
||||||
|
CNT_X volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
|
// DMA
|
||||||
|
type DMA_Type struct {
|
||||||
|
SAD_L volatile.Register16
|
||||||
|
SAD_H volatile.Register16
|
||||||
|
DAD_L volatile.Register16
|
||||||
|
DAD_H volatile.Register16
|
||||||
|
CNT_L volatile.Register16
|
||||||
|
CNT_H volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
// TIMER
|
// TIMER
|
||||||
type TIMER_Type struct {
|
type TIMER_Type struct {
|
||||||
|
@ -240,7 +317,28 @@ type TIMER_Type struct {
|
||||||
CNT volatile.Register16
|
CNT volatile.Register16
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: serial
|
// serial
|
||||||
|
type SIODATA32_Type struct {
|
||||||
|
DATA32_L volatile.Register16
|
||||||
|
DATA32_H volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
CNT volatile.Register16
|
||||||
|
DATA8 volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
|
type SIOMULTI_Type struct {
|
||||||
|
MULTI0 volatile.Register16
|
||||||
|
MULTI1 volatile.Register16
|
||||||
|
MULTI2 volatile.Register16
|
||||||
|
MULTI3 volatile.Register16
|
||||||
|
CNT volatile.Register16
|
||||||
|
MLT_SEND volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
|
type SIO_Type struct {
|
||||||
|
RCNT volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
// Keypad registers
|
// Keypad registers
|
||||||
type KEY_Type struct {
|
type KEY_Type struct {
|
||||||
|
@ -259,6 +357,34 @@ type INTERRUPT_Type struct {
|
||||||
PAUSE volatile.Register16
|
PAUSE volatile.Register16
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LCD OBJ Attributes
|
||||||
|
type OAMOBJ_Type struct {
|
||||||
|
ATT0 volatile.Register16
|
||||||
|
ATT1 volatile.Register16
|
||||||
|
ATT2 volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
|
// OAM Rotation/Scaling Parameters
|
||||||
|
type OAMROT_Type struct {
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
PA volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
PB volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
PC volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
_ volatile.Register16
|
||||||
|
PD volatile.Register16
|
||||||
|
}
|
||||||
|
|
||||||
// Constants for DISP: display
|
// Constants for DISP: display
|
||||||
const (
|
const (
|
||||||
// BGMODE: background mode.
|
// BGMODE: background mode.
|
||||||
|
@ -372,6 +498,40 @@ const (
|
||||||
DISPSTAT_VCOUNT_SETTING_Pos = 0x8
|
DISPSTAT_VCOUNT_SETTING_Pos = 0x8
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
BGCNT_PRIORITY_Pos = 0x0
|
||||||
|
BGCNT_PRIORITY_Msk = 0x3
|
||||||
|
|
||||||
|
BGCNT_CHAR_BASE_Pos = 0x2
|
||||||
|
BGCNT_CHAR_BASE_Msk = 0x3
|
||||||
|
|
||||||
|
BGCNT_MOSAIC_Pos = 0x6
|
||||||
|
BGCNT_MOSAIC_DISABLE = 0x0
|
||||||
|
BGCNT_MOSAIC_ENABLE = 0x1
|
||||||
|
|
||||||
|
BGCNT_COLORS_Pos = 0x7
|
||||||
|
BGCNT_COLORS_16 = 0x0
|
||||||
|
BGCNT_COLORS_256 = 0x1
|
||||||
|
|
||||||
|
BGCNT_BASE_Pos = 0x8
|
||||||
|
BGCNT_BASE_Msk = 0x1F
|
||||||
|
|
||||||
|
BGCNT_OVERFLOW_Pos = 0xD
|
||||||
|
BGCNT_OVERFLOW_TRANS = 0x0
|
||||||
|
BGCNT_OVERFLOW_WRAP = 0x1
|
||||||
|
|
||||||
|
BGCNT_SIZE_Pos = 0xE
|
||||||
|
BGCNT_SIZE_Msk = 0x3
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
BG_HOFS_Pos = 0x0
|
||||||
|
BG_HOFS_Msk = 0x1FF
|
||||||
|
|
||||||
|
BG_VOFS_Pos = 0x0
|
||||||
|
BG_VOFS_Msk = 0x1FF
|
||||||
|
)
|
||||||
|
|
||||||
// Constants for TIMER
|
// Constants for TIMER
|
||||||
const (
|
const (
|
||||||
// PRESCALER: Prescaler Selection (0=F/1, 1=F/64, 2=F/256, 3=F/1024)
|
// PRESCALER: Prescaler Selection (0=F/1, 1=F/64, 2=F/256, 3=F/1024)
|
||||||
|
@ -403,6 +563,135 @@ const (
|
||||||
TIMERCNT_TIMER_STOP = 0x0
|
TIMERCNT_TIMER_STOP = 0x0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// normal mode
|
||||||
|
SIOCNT_NORMAL_SC_Pos = 0x0
|
||||||
|
SIOCNT_NORMAL_SC_INTERNAL = 0x1
|
||||||
|
SIOCNT_NORMAL_SC_EXTERNAL = 0x0
|
||||||
|
|
||||||
|
SIOCNT_NORMAL_SCSPEED_Pos = 0x1
|
||||||
|
SIOCNT_NORMAL_SCSPEED_256K = 0x0
|
||||||
|
SIOCNT_NORMAL_SCSPEED_2M = 0x1
|
||||||
|
|
||||||
|
SIOCNT_NORMAL_SCSTATE_Pos = 0x2
|
||||||
|
SIOCNT_NORMAL_SCSTATE_LOW = 0x0
|
||||||
|
SIOCNT_NORMAL_SCSTATE_HIGH = 0x1
|
||||||
|
|
||||||
|
SIOCNT_NORMAL_SO_INACTIVE_Pos = 0x3
|
||||||
|
SIOCNT_NORMAL_SO_INACTIVE_LOW = 0x0
|
||||||
|
SIOCNT_NORMAL_SO_INACTIVE_HIGH = 0x1
|
||||||
|
|
||||||
|
SIOCNT_NORMAL_START_Pos = 0x7
|
||||||
|
SIOCNT_NORMAL_START_READY = 0x0
|
||||||
|
SIOCNT_NORMAL_START_ACTIVE = 0x1
|
||||||
|
|
||||||
|
SIOCNT_NORMAL_LEN_Pos = 0xC
|
||||||
|
SIOCNT_NORMAL_LEN8 = 0x0
|
||||||
|
SIOCNT_NORMAL_LEN32 = 0x1
|
||||||
|
|
||||||
|
SIOCNT_NORMAL_MODE_Pos = 0xD
|
||||||
|
SIOCNT_NORMAL_MODE = 0x0
|
||||||
|
|
||||||
|
// multiplayer mode
|
||||||
|
SIOCNT_MULTI_BR_Pos = 0x0
|
||||||
|
SIOCNT_MULTI_BR_Msk = 0x3
|
||||||
|
SIOCNT_MULTI_BR_9600 = 0x0
|
||||||
|
SIOCNT_MULTI_BR_38400 = 0x1
|
||||||
|
SIOCNT_MULTI_BR_57600 = 0x2
|
||||||
|
SIOCNT_MULTI_BR_115200 = 0x3
|
||||||
|
|
||||||
|
SIOCNT_MULTI_SI_Pos = 0x2
|
||||||
|
SIOCNT_MULTI_SI_PARENT = 0x0
|
||||||
|
SIOCNT_MULTI_SI_CHILD = 0x1
|
||||||
|
|
||||||
|
SIOCNT_MULTI_SD_Pos = 0x3
|
||||||
|
SIOCNT_MULTI_SD_BAD = 0x0
|
||||||
|
SIOCNT_MULTI_SD_READY = 0x1
|
||||||
|
|
||||||
|
SIOCNT_MULTI_ID_Pos = 0x4
|
||||||
|
SIOCNT_MULTI_ID_Msk = 0x3
|
||||||
|
SIOCNT_MULTI_ID_PARENT = 0x0
|
||||||
|
SIOCNT_MULTI_ID_CHILD1 = 0x1
|
||||||
|
SIOCNT_MULTI_ID_CHILD2 = 0x2
|
||||||
|
SIOCNT_MULTI_ID_CHILD3 = 0x3
|
||||||
|
|
||||||
|
SIOCNT_MULTI_ERR_Pos = 0x6
|
||||||
|
SIOCNT_MULTI_ERR_NORMAL = 0x0
|
||||||
|
SIOCNT_MULTI_ERR_ERROR = 0x1
|
||||||
|
|
||||||
|
SIOCNT_MULTI_STARTBUSY_Pos = 0x7
|
||||||
|
SIOCNT_MULTI_STARTBUSY_INACTIVE = 0x0
|
||||||
|
SIOCNT_MULTI_STARTBUSY_STARTBUSY = 0x1
|
||||||
|
|
||||||
|
SIOCNT_MULTI_MODE_Pos = 0xC
|
||||||
|
SIOCNT_MULTI_MODE_Msk = 0x3
|
||||||
|
SIOCNT_MULTI_MODE = 0x01
|
||||||
|
|
||||||
|
// uart mode
|
||||||
|
SIOCNT_UART_BR_Pos = 0x0
|
||||||
|
SIOCNT_UART_BR_Msk = 0x3
|
||||||
|
SIOCNT_UART_BR_9600 = 0x0
|
||||||
|
SIOCNT_UART_BR_38400 = 0x1
|
||||||
|
SIOCNT_UART_BR_57600 = 0x2
|
||||||
|
SIOCNT_UART_BR_115200 = 0x3
|
||||||
|
|
||||||
|
SIOCNT_UART_CTS_Pos = 0x2
|
||||||
|
SIOCNT_UART_CTS_ALWAYS = 0x0
|
||||||
|
SIOCNT_UART_CTS_SENDLOW = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_PARITY_Pos = 0x3
|
||||||
|
SIOCNT_UART_PARITY_EVEN = 0x0
|
||||||
|
SIOCNT_UART_PARITY_ODD = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_SEND_Pos = 0x4
|
||||||
|
SIOCNT_UART_SEND_NOTFULL = 0x0
|
||||||
|
SIOCNT_UART_SEND_FULL = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_REC_Pos = 0x5
|
||||||
|
SIOCNT_UART_REC_NOTEMPTY = 0x0
|
||||||
|
SIOCNT_UART_REC_EMPTY = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_ERR_Pos = 0x6
|
||||||
|
SIOCNT_UART_ERR_NOERROR = 0x0
|
||||||
|
SIOCNT_UART_ERR_ERROR = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_DATALEN_Pos = 0x7
|
||||||
|
SIOCNT_UART_DATALEN_7 = 0x0
|
||||||
|
SIOCNT_UART_DATALEN_8 = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_FIFO_Pos = 0x8
|
||||||
|
SIOCNT_UART_FIFO_DISABLE = 0x0
|
||||||
|
SIOCNT_UART_FIFO_ENABLE = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_PARITY_ENABLE_Pos = 0x9
|
||||||
|
SIOCNT_UART_PARITY_DISABLE = 0x0
|
||||||
|
SIOCNT_UART_PARITY_ENABLE = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_SEND_ENABLE_Pos = 0xA
|
||||||
|
SIOCNT_UART_SEND_DISABLE = 0x0
|
||||||
|
SIOCNT_UART_SEND_ENABLE = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_REC_ENABLE_Pos = 0xB
|
||||||
|
SIOCNT_UART_REC_DISABLE = 0x0
|
||||||
|
SIOCNT_UART_REC_ENABLE = 0x1
|
||||||
|
|
||||||
|
SIOCNT_UART_MODE_Pos = 0xC
|
||||||
|
SIOCNT_UART_MODE_Msk = 0x3
|
||||||
|
SIOCNT_UART_MODE = 0x11
|
||||||
|
|
||||||
|
// IRQs used by all
|
||||||
|
SIOCNT_IRQ_Pos = 0xE
|
||||||
|
SIOCNT_IRQ_DISABLE = 0x0
|
||||||
|
SIOCNT_IRQ_ENABLE = 0x1
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SIO_RCNT_MODE_Pos = 0xF
|
||||||
|
SIO_RCNT_MODE_NORMAL = 0x0
|
||||||
|
SIO_RCNT_MODE_MULTI = 0x0
|
||||||
|
SIO_RCNT_MODE_UART = 0x0
|
||||||
|
)
|
||||||
|
|
||||||
// Constants for KEY
|
// Constants for KEY
|
||||||
const (
|
const (
|
||||||
// KEYINPUT
|
// KEYINPUT
|
||||||
|
@ -432,6 +721,12 @@ const (
|
||||||
KEYCNT_BUTTON_DOWN_Pos = 0x7
|
KEYCNT_BUTTON_DOWN_Pos = 0x7
|
||||||
KEYCNT_BUTTON_R_Pos = 0x8
|
KEYCNT_BUTTON_R_Pos = 0x8
|
||||||
KEYCNT_BUTTON_L_Pos = 0x9
|
KEYCNT_BUTTON_L_Pos = 0x9
|
||||||
|
KEYCNT_BUTTON_IRQ_DISABLE = 0x0
|
||||||
|
KEYCNT_BUTTON_IRQ_ENABLE = 0x1
|
||||||
|
KEYCNT_BUTTON_IRQ_ENABLE_Pos = 0xE
|
||||||
|
KEYCNT_BUTTON_IRQ_COND_OR = 0x0
|
||||||
|
KEYCNT_BUTTON_IRQ_COND_AND = 0x1
|
||||||
|
KEYCNT_BUTTON_IRQ_COND_Pos = 0xF
|
||||||
)
|
)
|
||||||
|
|
||||||
// Constants for INTERRUPT
|
// Constants for INTERRUPT
|
||||||
|
@ -472,3 +767,61 @@ const (
|
||||||
INTERRUPT_IF_KEYPAD_Pos = 0xC
|
INTERRUPT_IF_KEYPAD_Pos = 0xC
|
||||||
INTERRUPT_IF_GAMPAK_Pos = 0xD
|
INTERRUPT_IF_GAMPAK_Pos = 0xD
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
OAMOBJ_ATT0_Y_Pos = 0x0
|
||||||
|
OAMOBJ_ATT0_Y_Msk = 0xFF
|
||||||
|
|
||||||
|
OAMOBJ_ATT0_OM_Pos = 0x8
|
||||||
|
OAMOBJ_ATT0_OM_Msk = 0x3
|
||||||
|
OAMOBJ_ATT0_OM_REG = 0x0
|
||||||
|
OAMOBJ_ATT0_OM_AFF = 0x1
|
||||||
|
OAMOBJ_ATT0_OM_HIDE = 0x2
|
||||||
|
OAMOBJ_ATT0_OM_DBL = 0x3
|
||||||
|
|
||||||
|
OAMOBJ_ATT0_GM_Pos = 0xA
|
||||||
|
OAMOBJ_ATT0_GM_Msk = 0x3
|
||||||
|
OAMOBJ_ATT0_GM_REG = 0x0
|
||||||
|
OAMOBJ_ATT0_GM_BLEND = 0x1
|
||||||
|
OAMOBJ_ATT0_GM_WIN = 0x2
|
||||||
|
|
||||||
|
OAMOBJ_ATT0_MOSAIC_Pos = 0xC
|
||||||
|
OAMOBJ_ATT0_MOSAIC_DISABLE = 0x0
|
||||||
|
OAMOBJ_ATT0_MOSAIC_ENABLE = 0x1
|
||||||
|
|
||||||
|
OAMOBJ_ATT0_COLOR_Pos = 0xD
|
||||||
|
OAMOBJ_ATT0_COLOR_4BPP = 0x0
|
||||||
|
OAMOBJ_ATT0_COLOR_8BPP = 0x1
|
||||||
|
|
||||||
|
OAMOBJ_ATT0_SH_Pos = 0xE
|
||||||
|
OAMOBJ_ATT0_SH_Msk = 0x3
|
||||||
|
OAMOBJ_ATT0_SH_SQUARE = 0x0
|
||||||
|
OAMOBJ_ATT0_SH_WIDE = 0x1
|
||||||
|
OAMOBJ_ATT0_SH_TALL = 0x2
|
||||||
|
|
||||||
|
OAMOBJ_ATT1_X_Pos = 0x0
|
||||||
|
OAMOBJ_ATT1_X_Msk = 0xFF
|
||||||
|
|
||||||
|
OAMOBJ_ATT1_AID_Pos = 0x9
|
||||||
|
OAMOBJ_ATT1_AID_Msk = 0x1F
|
||||||
|
|
||||||
|
OAMOBJ_ATT1_HF_Pos = 0xC
|
||||||
|
OAMOBJ_ATT1_HF_NOFLIP = 0x0
|
||||||
|
OAMOBJ_ATT1_HF_FLIP = 0x1
|
||||||
|
|
||||||
|
OAMOBJ_ATT1_VF_Pos = 0xD
|
||||||
|
OAMOBJ_ATT1_VF_NOFLIP = 0x0
|
||||||
|
OAMOBJ_ATT1_VF_FLIP = 0x1
|
||||||
|
|
||||||
|
OAMOBJ_ATT1_SZ_Pos = 0xE
|
||||||
|
OAMOBJ_ATT1_SZ_Msk = 0x3
|
||||||
|
|
||||||
|
OAMOBJ_ATT2_TID_Pos = 0x0
|
||||||
|
OAMOBJ_ATT2_TID_Msk = 0xFF
|
||||||
|
|
||||||
|
OAMOBJ_ATT2_PR_Pos = 0xA
|
||||||
|
OAMOBJ_ATT2_PR_Msk = 0x3
|
||||||
|
|
||||||
|
OAMOBJ_ATT2_PB_Pos = 0xC
|
||||||
|
OAMOBJ_ATT2_PB_Msk = 0xF
|
||||||
|
)
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче