diff options
author | xCrystal <rgr.crystal@gmail.com> | 2018-07-21 18:53:54 +0200 |
---|---|---|
committer | xCrystal <rgr.crystal@gmail.com> | 2018-07-21 18:53:54 +0200 |
commit | 4fa157314c9c0f170220ac0b4b23924c081a07dd (patch) | |
tree | 78a08d1023d42224a15e06b47e2c8b465498bb94 /src/constants | |
parent | 783f5fe610c69006742b4976ab4f183f39512d89 (diff) |
More hw constants and various clean up/documentation
Diffstat (limited to 'src/constants')
-rw-r--r-- | src/constants/card_data_constants.asm | 48 | ||||
-rw-r--r-- | src/constants/charmaps.asm | 9 | ||||
-rw-r--r-- | src/constants/deck_constants.asm | 7 | ||||
-rw-r--r-- | src/constants/gfx_constants.asm | 28 | ||||
-rw-r--r-- | src/constants/hardware_constants.asm | 89 | ||||
-rw-r--r-- | src/constants/misc_constants.asm | 35 | ||||
-rw-r--r-- | src/constants/sprite_constants.asm | 22 |
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 |