summaryrefslogtreecommitdiff
path: root/src/constants
diff options
context:
space:
mode:
authorxCrystal <rgr.crystal@gmail.com>2018-07-21 18:53:54 +0200
committerxCrystal <rgr.crystal@gmail.com>2018-07-21 18:53:54 +0200
commit4fa157314c9c0f170220ac0b4b23924c081a07dd (patch)
tree78a08d1023d42224a15e06b47e2c8b465498bb94 /src/constants
parent783f5fe610c69006742b4976ab4f183f39512d89 (diff)
More hw constants and various clean up/documentation
Diffstat (limited to 'src/constants')
-rw-r--r--src/constants/card_data_constants.asm48
-rw-r--r--src/constants/charmaps.asm9
-rw-r--r--src/constants/deck_constants.asm7
-rw-r--r--src/constants/gfx_constants.asm28
-rw-r--r--src/constants/hardware_constants.asm89
-rw-r--r--src/constants/misc_constants.asm35
-rw-r--r--src/constants/sprite_constants.asm22
7 files changed, 158 insertions, 80 deletions
diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm
index c110a69..c5159e7 100644
--- a/src/constants/card_data_constants.asm
+++ b/src/constants/card_data_constants.asm
@@ -75,15 +75,15 @@ PKMN_CARD_DATA_LENGTH EQU $41
; generic type (color) constants
const_def
- const FIRE ; $0
- const GRASS ; $1
- const LIGHTNING ; $2
- const WATER ; $3
- const FIGHTING ; $4
- const PSYCHIC ; $5
+ const FIRE ; $00
+ const GRASS ; $01
+ const LIGHTNING ; $02
+ const WATER ; $03
+ const FIGHTING ; $04
+ const PSYCHIC ; $05
NUM_COLORED_TYPES EQU const_value
- const COLORLESS ; $6
- const UNUSED_TYPE ; $7
+ const COLORLESS ; $06
+ const UNUSED_TYPE ; $07
NUM_TYPES EQU const_value
; CARD_DATA_TYPE constants
@@ -120,12 +120,12 @@ STAR EQU $2
PROMOSTAR EQU $ff
; CARD_DATA_SET constants (set 1)
-COLOSSEUM EQU $00
-EVOLUTION EQU $10
-MYSTERY EQU $20
-LABORATORY EQU $30
-PROMOTIONAL EQU $40
-ENERGY EQU $50
+COLOSSEUM EQU $0 << 4
+EVOLUTION EQU $1 << 4
+MYSTERY EQU $2 << 4
+LABORATORY EQU $3 << 4
+PROMOTIONAL EQU $4 << 4
+ENERGY EQU $5 << 4
; CARD_DATA_SET constants (set 2)
JUNGLE EQU $1
@@ -134,9 +134,9 @@ GB EQU $7
PRO EQU $8
; CARD_DATA_STAGE constants
-BASIC EQU $0
-STAGE1 EQU $1
-STAGE2 EQU $2
+BASIC EQU $00
+STAGE1 EQU $01
+STAGE2 EQU $02
; CARD_DATA_WEAKNESS and CARD_DATA_RESISTANCE constants
WR_FIRE EQU $80
@@ -147,13 +147,13 @@ WR_FIGHTING EQU $08
WR_PSYCHIC EQU $04
; CARD_DATA_MOVE*_CATEGORY constants
-DAMAGE_NORMAL EQU $0
-DAMAGE_PLUS EQU $1
-DAMAGE_MINUS EQU $2
-DAMAGE_X EQU $3
-POKEMON_POWER EQU $4
-RESIDUAL_F EQU 7
-RESIDUAL EQU 1 << RESIDUAL_F
+DAMAGE_NORMAL EQU $00
+DAMAGE_PLUS EQU $01
+DAMAGE_MINUS EQU $02
+DAMAGE_X EQU $03
+POKEMON_POWER EQU $04
+RESIDUAL_F EQU 7
+RESIDUAL EQU 1 << RESIDUAL_F
; CARD_DATA_MOVE*_FLAG1 constants
INFLICT_POISON EQU %00000001
diff --git a/src/constants/charmaps.asm b/src/constants/charmaps.asm
index 5bd21be..b2be006 100644
--- a/src/constants/charmaps.asm
+++ b/src/constants/charmaps.asm
@@ -9,6 +9,10 @@
charmap "♀", "%"
charmap "”", "\""
+fwcharmap: MACRO
+ charmap STRCAT("FW\1_", \2), \3
+ENDM
+
; TX_FULLWIDTH3
fwcharmap 3, "A", $30
fwcharmap 3, "B", $31
@@ -310,6 +314,11 @@
FW_SPACE EQU $70
+txsymbol: MACRO
+ const SYM_\1
+ charmap "\1>", const_value + -1
+ENDM
+
; TX_SYMBOL
; TODO: If user-defined functions ever become a thing a symbol(*) syntax
; would probably be preferred over SYM_*
diff --git a/src/constants/deck_constants.asm b/src/constants/deck_constants.asm
index 6b16d63..4105242 100644
--- a/src/constants/deck_constants.asm
+++ b/src/constants/deck_constants.asm
@@ -1,3 +1,10 @@
+deck_const: MACRO
+if const_value >= 2
+\1_ID EQU const_value + -2
+endc
+ const \1
+ENDM
+
; Both *_DECK and *_DECK_ID constants are defined here.
; *_DECK constants are to be used with LoadDeck and related routines.
; *_DECK_ID constants are specific to be loaded into wOpponentDeckID.
diff --git a/src/constants/gfx_constants.asm b/src/constants/gfx_constants.asm
index 4ab84d2..61f49b8 100644
--- a/src/constants/gfx_constants.asm
+++ b/src/constants/gfx_constants.asm
@@ -16,31 +16,3 @@ tiles EQUS "* TILE_SIZE"
TILE_SIZE_1BPP EQU 8 ; bytes
tiles_1bpp EQUS "* TILE_SIZE_1BPP"
-
-; wFlushPaletteFlags constants
-FLUSH_ONE EQU %10000000
-FLUSH_ALL EQU %11000000
-FLUSH_ALL_F EQU 6
-
-; wSpriteAnimBuffer
-SPRITE_ANIM_BUFFER_CAPACITY EQU 16 ; sprites
-
-; sprite_anim_struct constants
- const_def
- const SPRITE_ANIM_FIELD_00
- const SPRITE_ANIM_FIELD_01
- const SPRITE_ANIM_COORD_X
- const SPRITE_ANIM_COORD_Y
- const SPRITE_ANIM_TILE_ID
- const SPRITE_ANIM_FIELD_05
- const SPRITE_ANIM_FIELD_06
- const SPRITE_ANIM_FIELD_07
- const SPRITE_ANIM_FIELD_08
- const SPRITE_ANIM_FIELD_09
- const SPRITE_ANIM_FIELD_0A
- const SPRITE_ANIM_FIELD_0B
- const SPRITE_ANIM_FIELD_0C
- const SPRITE_ANIM_FIELD_0D
- const SPRITE_ANIM_MOVEMENT_COUNTER
- const SPRITE_ANIM_FIELD_0F
-SPRITE_ANIM_LENGTH EQU const_value
diff --git a/src/constants/hardware_constants.asm b/src/constants/hardware_constants.asm
index fe2731f..4a9c253 100644
--- a/src/constants/hardware_constants.asm
+++ b/src/constants/hardware_constants.asm
@@ -1,4 +1,4 @@
-; From http://bgb.bircd.org/pandocs.htm
+; From http://bgb.bircd.org/pandocs.htm and https://github.com/tobiasvl/hardware.inc
GBC EQU $11
@@ -24,11 +24,11 @@ RTC_DH EQU $0c ; Upper 1 bit of Day Counter, Carry Bit, Halt Flag
; Bit 7 Day Counter Carry Bit (1=Counter Overflow)
; interrupt flags
-VBLANK EQU 0
-LCD_STAT EQU 1
-TIMER EQU 2
-SERIAL EQU 3
-JOYPAD EQU 4
+INT_VBLANK EQU 0
+INT_LCD_STAT EQU 1
+INT_TIMER EQU 2
+INT_SERIAL EQU 3
+INT_JOYPAD EQU 4
; OAM attribute flags
OAM_PALETTE EQU %111
@@ -40,74 +40,133 @@ OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
; Hardware registers
rJOYP EQU $ff00 ; Joypad (R/W)
+
rSB EQU $ff01 ; Serial transfer data (R/W)
rSC EQU $ff02 ; Serial Transfer Control (R/W)
-SC_ON EQU 7
-SC_CGB EQU 1
-SC_CLOCK EQU 0
+SC_START EQU $80
+SC_INTERNAL EQU $01
+SC_EXTERNAL EQU $00
+
rDIV EQU $ff04 ; Divider Register (R/W)
rTIMA EQU $ff05 ; Timer counter (R/W)
rTMA EQU $ff06 ; Timer Modulo (R/W)
rTAC EQU $ff07 ; Timer Control (R/W)
-TAC_ON EQU 2
-TAC_4096_HZ EQU 0
-TAC_262144_HZ EQU 1
-TAC_65536_HZ EQU 2
-TAC_16384_HZ EQU 3
+TAC_START EQU $04
+TAC_STOP EQU $00
+TAC_4096_HZ EQU $00
+TAC_262144_HZ EQU $01
+TAC_65536_HZ EQU $02
+TAC_16384_HZ EQU $03
+
rIF EQU $ff0f ; Interrupt Flag (R/W)
+
rNR10 EQU $ff10 ; Channel 1 Sweep register (R/W)
rNR11 EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W)
rNR12 EQU $ff12 ; Channel 1 Volume Envelope (R/W)
rNR13 EQU $ff13 ; Channel 1 Frequency lo (Write Only)
rNR14 EQU $ff14 ; Channel 1 Frequency hi (R/W)
+
rNR21 EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
rNR22 EQU $ff17 ; Channel 2 Volume Envelope (R/W)
rNR23 EQU $ff18 ; Channel 2 Frequency lo data (W)
rNR24 EQU $ff19 ; Channel 2 Frequency hi data (R/W)
+
rNR30 EQU $ff1a ; Channel 3 Sound on/off (R/W)
rNR31 EQU $ff1b ; Channel 3 Sound Length
rNR32 EQU $ff1c ; Channel 3 Select output level (R/W)
rNR33 EQU $ff1d ; Channel 3 Frequency's lower data (W)
rNR34 EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
+
rNR41 EQU $ff20 ; Channel 4 Sound Length (R/W)
rNR42 EQU $ff21 ; Channel 4 Volume Envelope (R/W)
rNR43 EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
rNR44 EQU $ff23 ; Channel 4 Counter/consecutive; Inital (R/W)
+
rNR50 EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
rNR51 EQU $ff25 ; Selection of Sound output terminal (R/W)
rNR52 EQU $ff26 ; Sound on/off
+
rLCDC EQU $ff40 ; LCD Control (R/W)
-LCDC_ON EQU 7
+LCDC_OFF EQU %01111111 ; LCD Control Operation (and)
+LCDC_ON EQU %10000000 ; LCD Control Operation (ld/or)
+LCDC_ENABLE_F EQU 7
+LCDC_WIN9800 EQU %10111111 ; Window Tile Map Display Select (and)
+LCDC_WIN9C00 EQU %01000000 ; Window Tile Map Display Select (ld/or)
+LCDC_WINSELECT EQU LCDC_WIN9C00
+LCDC_WINOFF EQU %11011111 ; Window Display (and)
+LCDC_WINON EQU %00100000 ; Window Display (ld/or)
+LCDC_WINENABLE EQU LCDC_WINON
+LCDC_BG8800 EQU %11101111 ; BG & Window Tile Data Select (and)
+LCDC_BG8000 EQU %00010000 ; BG & Window Tile Data Select (ld/or)
+LCDC_BGTILEDATA EQU LCDC_BG8000
+LCDC_BG9800 EQU %11110111 ; BG Tile Map Display Select (and)
+LCDC_BG9C00 EQU %00001000 ; BG Tile Map Display Select (ld/or)
+LCDC_BGTILEMAP EQU LCDC_BG9C00
+LCDC_OBJ8 EQU %11111011 ; OBJ Construction (and)
+LCDC_OBJ16 EQU %00000100 ; OBJ Construction (ld/or)
+LCDC_OBJSIZE EQU LCDC_OBJ16
+LCDC_OBJOFF EQU %11111101 ; OBJ Display (and)
+LCDC_OBJON EQU %00000010 ; OBJ Display (ld/or)
+LCDC_OBJENABLE EQU LCDC_OBJON
+LCDC_BGOFF EQU %11111110 ; BG Display (and)
+LCDC_BGON EQU %00000001 ; BG Display (ld/or)
+LCDC_BGENABLE EQU LCDC_BGON
+
rSTAT EQU $ff41 ; LCDC Status (R/W)
+STAT_LYC EQU 6 ; LYC=LY Coincidence
+STAT_MODE_OAM EQU 5 ; Mode 10 (OAM)
+STAT_MODE_VBLANK EQU 4 ; Mode 01 (V-Blank)
+STAT_MODE_HBLANK EQU 3 ; Mode 00 (H-Blank)
+STAT_LYCFLAG EQU 2 ; 0:LYC<>LY, 1:LYC=LY
+STAT_LCDC_STATUS EQU %00000011
+STAT_ON_HBLANK EQU %00000000 ; H-Blank
+STAT_ON_VBLANK EQU %00000001 ; V-Blank
+STAT_ON_OAM EQU %00000010 ; OAM-RAM is used by system
+STAT_ON_LCD EQU %00000011 ; Both OAM and VRAM used by system
+STAT_BUSY EQU 1 ; When set, VRAM and OAM access is unsafe
+
rSCY EQU $ff42 ; Scroll Y (R/W)
rSCX EQU $ff43 ; Scroll X (R/W)
+
rLY EQU $ff44 ; LCDC Y-Coordinate (R)
LY_VBLANK EQU 145
rLYC EQU $ff45 ; LY Compare (R/W)
+
rDMA EQU $ff46 ; DMA Transfer and Start Address (W)
+
rBGP EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only
rOBP0 EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only
rOBP1 EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
+
rWY EQU $ff4a ; Window Y Position (R/W)
rWX EQU $ff4b ; Window X Position minus 7 (R/W)
+
rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
+
rVBK EQU $ff4f ; CGB Mode Only - VRAM Bank
+
rHDMA1 EQU $ff51 ; CGB Mode Only - New DMA Source, High
rHDMA2 EQU $ff52 ; CGB Mode Only - New DMA Source, Low
rHDMA3 EQU $ff53 ; CGB Mode Only - New DMA Destination, High
rHDMA4 EQU $ff54 ; CGB Mode Only - New DMA Destination, Low
rHDMA5 EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start
+
rRP EQU $ff56 ; CGB Mode Only - Infrared Communications Port
+
rBGPI EQU $ff68 ; CGB Mode Only - Background Palette Index
rBGPD EQU $ff69 ; CGB Mode Only - Background Palette Data
rOBPI EQU $ff6a ; CGB Mode Only - Sprite Palette Index
rOBPD EQU $ff6b ; CGB Mode Only - Sprite Palette Data
+
rUNKNOWN1 EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only
+
rSVBK EQU $ff70 ; CGB Mode Only - WRAM Bank
+
rUNKNOWN2 EQU $ff72 ; (00h) - Bit 0-7 (Read/Write)
rUNKNOWN3 EQU $ff73 ; (00h) - Bit 0-7 (Read/Write)
rUNKNOWN4 EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only
rUNKNOWN5 EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write)
rUNKNOWN6 EQU $ff76 ; (00h) - Always 00h (Read Only)
rUNKNOWN7 EQU $ff77 ; (00h) - Always 00h (Read Only)
+
rIE EQU $ffff ; Interrupt Enable (R/W)
diff --git a/src/constants/misc_constants.asm b/src/constants/misc_constants.asm
index a6511df..b31631a 100644
--- a/src/constants/misc_constants.asm
+++ b/src/constants/misc_constants.asm
@@ -1,17 +1,12 @@
-; console types (wConsole)
-CONSOLE_DMG EQU $00
-CONSOLE_SGB EQU $01
-CONSOLE_CGB EQU $02
-
; buttons
-A_BUTTON_F EQU $0
-B_BUTTON_F EQU $1
-SELECT_F EQU $2
-START_F EQU $3
-D_RIGHT_F EQU $4
-D_LEFT_F EQU $5
-D_UP_F EQU $6
-D_DOWN_F EQU $7
+A_BUTTON_F EQU 0
+B_BUTTON_F EQU 1
+SELECT_F EQU 2
+START_F EQU 3
+D_RIGHT_F EQU 4
+D_LEFT_F EQU 5
+D_UP_F EQU 6
+D_DOWN_F EQU 7
A_BUTTON EQU 1 << A_BUTTON_F ; $01
B_BUTTON EQU 1 << B_BUTTON_F ; $02
@@ -25,6 +20,20 @@ D_DOWN EQU 1 << D_DOWN_F ; $80
BUTTONS EQU A_BUTTON | B_BUTTON | SELECT | START ; $0f
D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN ; $f0
+; console types (wConsole)
+CONSOLE_DMG EQU $00
+CONSOLE_SGB EQU $01
+CONSOLE_CGB EQU $02
+
+; wReentrancyFlag bits
+IN_VBLANK EQU 0
+IN_TIMER EQU 1
+
+; wFlushPaletteFlags constants
+FLUSH_ONE_PAL EQU %10000000
+FLUSH_ALL_PALS EQU %11000000
+FLUSH_ALL_PALS_F EQU 6
+
; Game event constants (wGameEvent)
const_def
const GAME_EVENT_OVERWORLD ; $0
diff --git a/src/constants/sprite_constants.asm b/src/constants/sprite_constants.asm
new file mode 100644
index 0000000..dc051d9
--- /dev/null
+++ b/src/constants/sprite_constants.asm
@@ -0,0 +1,22 @@
+; wSpriteAnimBuffer
+SPRITE_ANIM_BUFFER_CAPACITY EQU 16 ; sprites
+
+; sprite_anim_struct constants
+ const_def
+ const SPRITE_ANIM_FIELD_00
+ const SPRITE_ANIM_FIELD_01
+ const SPRITE_ANIM_COORD_X
+ const SPRITE_ANIM_COORD_Y
+ const SPRITE_ANIM_TILE_ID
+ const SPRITE_ANIM_FIELD_05
+ const SPRITE_ANIM_FIELD_06
+ const SPRITE_ANIM_FIELD_07
+ const SPRITE_ANIM_FIELD_08
+ const SPRITE_ANIM_FIELD_09
+ const SPRITE_ANIM_FIELD_0A
+ const SPRITE_ANIM_FIELD_0B
+ const SPRITE_ANIM_FIELD_0C
+ const SPRITE_ANIM_FIELD_0D
+ const SPRITE_ANIM_MOVEMENT_COUNTER
+ const SPRITE_ANIM_FIELD_0F
+SPRITE_ANIM_LENGTH EQU const_value