You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.7 KiB

2 years ago
;; Game Boy Constants
; Interrupt Flags
INTERRUPT_SETTINGS EQU $ffff
INT_VBLANK_ON EQU %00000001
INT_VBLANK_OFF EQU %00000000
INT_LCDC_ON EQU %00000010
INT_LCDC_OFF EQU %00000000
INT_TIMER_ON EQU %00000100
INT_TIMER_OFF EQU %00000000
INT_SERIAL_ON EQU %00001000
INT_SERIAL_OFF EQU %00000000
; LCD Control
LCD_CONTROL_REGISTER EQU $ff40
LCD_POSITION_REGISTER EQU $ff44
BKG_DISPLAY_ON EQU %00000001
BKG_DISPLAY_OFF EQU %00000000
OBJ_DISPLAY_ON EQU %00000010
OBJ_DISPLAY_OFF EQU %00000000
OBJ_SIZE_8X8 EQU %00000000
OBJ_SIZE_16X8 EQU %00000100
BKG_USE_LOC_9800 EQU %00000000
BKG_USE_LOC_9C00 EQU %00001000
TLS_USE_LOC_8800 EQU %00000000
TLS_USE_LOC_8000 EQU %00010000
WND_DISPLAY_ON EQU %00100000
WND_DISPLAY_OFF EQU %00000000
WND_USE_LOC_9800 EQU %00000000
WND_USE_LOC_9C00 EQU %01000000
DISPLAY_ON EQU %10000000
DISPLAY_OFF EQU %00000000
; LCD Status
LCD_STATUS_REGISTER EQU $ff41
LCD_VBLANK_MODE EQU %00000000
LCD_HBLANK_MODE EQU %00000001
LCD_SPRITE_MODE EQU %00000010
LCD_TRANSFER_ACTIVE EQU %00000011
; Timer
TIMER_REGISTER EQU $ff06
TIMER_SETTINGS EQU $ff07
TIMER_4KHZ EQU %00000000
TIMER_16KHZ EQU %00000011
TIMER_65KHZ EQU %00000010
TIMER_262KHZ EQU %00000001
TIMER_START EQU %00000100
TIMER_STOP EQU %00000000
; Input Register
INPUT_REGISTER EQU $ff00
INPUT_A EQU %00000001
INPUT_B EQU %00000010
INPUT_SELECT EQU %00000100
INPUT_START EQU %00001000
INPUT_RIGHT EQU %00010000
INPUT_LEFT EQU %00100000
INPUT_UP EQU %01000000
INPUT_DOWN EQU %10000000
; Video Registers
BKG_POS_X_REGISTER EQU $ff43
BKG_POS_Y_REGISTER EQU $ff42
WND_POS_X_REGISTER EQU $ff4b
WND_POS_Y_REGISTER EQU $ff4a
; DMA Register
DMA_REGISTER EQU $ff46
; Palette Registers
PALETTE_BKG_REGISTER EQU $ff47
PALETTE_OBJ0_REGISTER EQU $ff48
PALETTE_OBJ1_REGISTER EQU $ff49
; Video Locations
TLS_LOC_8000 EQU $8000
TLS_LOC_8800 EQU $8800
BKG_LOC_9800 EQU $9800
BKG_LOC_9C00 EQU $9C00
WND_LOC_9800 EQU $9800
WND_LOC_9C00 EQU $9c00
; Object attributes
OBJ_ATTR_PALETTE0 EQU %00000000
OBJ_ATTR_PALETTE1 EQU %00010000
OBJ_ATTR_MIRROR_X EQU %00100000
OBJ_ATTR_MIRROR_Y EQU %01000000
OBJ_ATTR_PRIORITY EQU %10000000
; Initial Stack Pointer
INITIAL_STACK_POINTER EQU $fff4