diff options
author | xCrystal <rgr.crystal@gmail.com> | 2018-08-13 14:54:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-13 14:54:31 +0200 |
commit | f5330d15daed2d77ff48360554a36162843fe199 (patch) | |
tree | f8142591ea01c720be6d6b979b2fadb84e3018f0 /src/constants | |
parent | 783f5fe610c69006742b4976ab4f183f39512d89 (diff) | |
parent | 3581a4baed71f596eedb9c234b910f1d6a7736be (diff) |
Merge pull request #48 from xCrystal/master
More home and bank1 progress
Diffstat (limited to 'src/constants')
-rw-r--r-- | src/constants/card_constants.asm | 258 | ||||
-rw-r--r-- | src/constants/card_data_constants.asm | 62 | ||||
-rw-r--r-- | src/constants/charmaps.asm | 11 | ||||
-rw-r--r-- | src/constants/deck_constants.asm | 7 | ||||
-rw-r--r-- | src/constants/duel_constants.asm | 41 | ||||
-rw-r--r-- | src/constants/gfx_constants.asm | 28 | ||||
-rw-r--r-- | src/constants/hardware_constants.asm | 110 | ||||
-rw-r--r-- | src/constants/misc_constants.asm | 35 | ||||
-rw-r--r-- | src/constants/sgb_constants.asm | 2 | ||||
-rw-r--r-- | src/constants/sprite_constants.asm | 22 | ||||
-rw-r--r-- | src/constants/text_constants.asm | 2 |
11 files changed, 356 insertions, 222 deletions
diff --git a/src/constants/card_constants.asm b/src/constants/card_constants.asm index 30560c2..df6da6b 100644 --- a/src/constants/card_constants.asm +++ b/src/constants/card_constants.asm @@ -8,12 +8,12 @@ const DOUBLE_COLORLESS_ENERGY ; $07 const BULBASAUR ; $08 const IVYSAUR ; $09 - const VENUSAUR1 ; $0A - const VENUSAUR2 ; $0B - const CATERPIE ; $0C - const METAPOD ; $0D - const BUTTERFREE ; $0E - const WEEDLE ; $0F + const VENUSAUR1 ; $0a + const VENUSAUR2 ; $0b + const CATERPIE ; $0c + const METAPOD ; $0d + const BUTTERFREE ; $0e + const WEEDLE ; $0f const KAKUNA ; $10 const BEEDRILL ; $11 const EKANS ; $12 @@ -24,12 +24,12 @@ const NIDORANM ; $17 const NIDORINO ; $18 const NIDOKING ; $19 - const ZUBAT ; $1A - const GOLBAT ; $1B - const ODDISH ; $1C - const GLOOM ; $1D - const VILEPLUME ; $1E - const PARAS ; $1F + const ZUBAT ; $1a + const GOLBAT ; $1b + const ODDISH ; $1c + const GLOOM ; $1d + const VILEPLUME ; $1e + const PARAS ; $1f const PARASECT ; $20 const VENONAT ; $21 const VENOMOTH ; $22 @@ -40,12 +40,12 @@ const MUK ; $27 const EXEGGCUTE ; $28 const EXEGGUTOR ; $29 - const KOFFING ; $2A - const WEEZING ; $2B - const TANGELA1 ; $2C - const TANGELA2 ; $2D - const SCYTHER ; $2E - const PINSIR ; $2F + const KOFFING ; $2a + const WEEZING ; $2b + const TANGELA1 ; $2c + const TANGELA2 ; $2d + const SCYTHER ; $2e + const PINSIR ; $2f const CHARMANDER ; $30 const CHARMELEON ; $31 const CHARIZARD ; $32 @@ -56,12 +56,12 @@ const ARCANINE1 ; $37 const ARCANINE2 ; $38 const PONYTA ; $39 - const RAPIDASH ; $3A - const MAGMAR1 ; $3B - const MAGMAR2 ; $3C - const FLAREON1 ; $3D - const FLAREON2 ; $3E - const MOLTRES1 ; $3F + const RAPIDASH ; $3a + const MAGMAR1 ; $3b + const MAGMAR2 ; $3c + const FLAREON1 ; $3d + const FLAREON2 ; $3e + const MOLTRES1 ; $3f const MOLTRES2 ; $40 const SQUIRTLE ; $41 const WARTORTLE ; $42 @@ -72,12 +72,12 @@ const POLIWHIRL ; $47 const POLIWRATH ; $48 const TENTACOOL ; $49 - const TENTACRUEL ; $4A - const SEEL ; $4B - const DEWGONG ; $4C - const SHELLDER ; $4D - const CLOYSTER ; $4E - const KRABBY ; $4F + const TENTACRUEL ; $4a + const SEEL ; $4b + const DEWGONG ; $4c + const SHELLDER ; $4d + const CLOYSTER ; $4e + const KRABBY ; $4f const KINGLER ; $50 const HORSEA ; $51 const SEADRA ; $52 @@ -88,12 +88,12 @@ const MAGIKARP ; $57 const GYARADOS ; $58 const LAPRAS ; $59 - const VAPOREON1 ; $5A - const VAPOREON2 ; $5B - const OMANYTE ; $5C - const OMASTAR ; $5D - const ARTICUNO1 ; $5E - const ARTICUNO2 ; $5F + const VAPOREON1 ; $5a + const VAPOREON2 ; $5b + const OMANYTE ; $5c + const OMASTAR ; $5d + const ARTICUNO1 ; $5e + const ARTICUNO2 ; $5f const PIKACHU1 ; $60 const PIKACHU2 ; $61 const PIKACHU3 ; $62 @@ -104,12 +104,12 @@ const RAICHU1 ; $67 const RAICHU2 ; $68 const MAGNEMITE1 ; $69 - const MAGNEMITE2 ; $6A - const MAGNETON1 ; $6B - const MAGNETON2 ; $6C - const VOLTORB ; $6D - const ELECTRODE1 ; $6E - const ELECTRODE2 ; $6F + const MAGNEMITE2 ; $6a + const MAGNETON1 ; $6b + const MAGNETON2 ; $6c + const VOLTORB ; $6d + const ELECTRODE1 ; $6e + const ELECTRODE2 ; $6f const ELECTABUZZ1 ; $70 const ELECTABUZZ2 ; $71 const JOLTEON1 ; $72 @@ -120,12 +120,12 @@ const SANDSHREW ; $77 const SANDSLASH ; $78 const DIGLETT ; $79 - const DUGTRIO ; $7A - const MANKEY ; $7B - const PRIMEAPE ; $7C - const MACHOP ; $7D - const MACHOKE ; $7E - const MACHAMP ; $7F + const DUGTRIO ; $7a + const MANKEY ; $7b + const PRIMEAPE ; $7c + const MACHOP ; $7d + const MACHOKE ; $7e + const MACHAMP ; $7f const GEODUDE ; $80 const GRAVELER ; $81 const GOLEM ; $82 @@ -136,12 +136,12 @@ const HITMONLEE ; $87 const HITMONCHAN ; $88 const RHYHORN ; $89 - const RHYDON ; $8A - const KABUTO ; $8B - const KABUTOPS ; $8C - const AERODACTYL ; $8D - const ABRA ; $8E - const KADABRA ; $8F + const RHYDON ; $8a + const KABUTO ; $8b + const KABUTOPS ; $8c + const AERODACTYL ; $8d + const ABRA ; $8e + const KADABRA ; $8f const ALAKAZAM ; $90 const SLOWPOKE1 ; $91 const SLOWPOKE2 ; $92 @@ -152,79 +152,79 @@ const HAUNTER2 ; $97 const GENGAR ; $98 const DROWZEE ; $99 - const HYPNO ; $9A - const MR_MIME ; $9B - const JYNX ; $9C - const MEWTWO1 ; $9D - const MEWTWO2 ; $9E - const MEWTWO3 ; $9F - const MEW1 ; $A0 - const MEW2 ; $A1 - const MEW3 ; $A2 - const PIDGEY ; $A3 - const PIDGEOTTO ; $A4 - const PIDGEOT1 ; $A5 - const PIDGEOT2 ; $A6 - const RATTATA ; $A7 - const RATICATE ; $A8 - const SPEAROW ; $A9 - const FEAROW ; $AA - const CLEFAIRY ; $AB - const CLEFABLE ; $AC - const JIGGLYPUFF1 ; $AD - const JIGGLYPUFF2 ; $AE - const JIGGLYPUFF3 ; $AF - const WIGGLYTUFF ; $B0 - const MEOWTH1 ; $B1 - const MEOWTH2 ; $B2 - const PERSIAN ; $B3 - const FARFETCHD ; $B4 - const DODUO ; $B5 - const DODRIO ; $B6 - const LICKITUNG ; $B7 - const CHANSEY ; $B8 - const KANGASKHAN ; $B9 - const TAUROS ; $BA - const DITTO ; $BB - const EEVEE ; $BC - const PORYGON ; $BD - const SNORLAX ; $BE - const DRATINI ; $BF - const DRAGONAIR ; $C0 - const DRAGONITE1 ; $C1 - const DRAGONITE2 ; $C2 - const PROFESSOR_OAK ; $C3 - const IMPOSTER_PROFESSOR_OAK ; $C4 - const BILL ; $C5 - const MR_FUJI ; $C6 - const LASS ; $C7 - const IMAKUNI_CARD ; $C8 - const POKEMON_TRADER ; $C9 - const POKEMON_BREEDER ; $CA - const CLEFAIRY_DOLL ; $CB - const MYSTERIOUS_FOSSIL ; $CC - const ENERGY_RETRIEVAL ; $CD - const SUPER_ENERGY_RETRIEVAL ; $CE - const ENERGY_SEARCH ; $CF - const ENERGY_REMOVAL ; $D0 - const SUPER_ENERGY_REMOVAL ; $D1 - const SWITCH ; $D2 - const POKEMON_CENTER ; $D3 - const POKE_BALL ; $D4 - const SCOOP_UP ; $D5 - const COMPUTER_SEARCH ; $D6 - const POKEDEX ; $D7 - const PLUSPOWER ; $D8 - const DEFENDER ; $D9 - const ITEM_FINDER ; $DA - const GUST_OF_WIND ; $DB - const DEVOLUTION_SPRAY ; $DC - const POTION ; $DD - const SUPER_POTION ; $DE - const FULL_HEAL ; $DF - const REVIVE ; $E0 - const MAINTENANCE ; $E1 - const POKEMON_FLUTE ; $E2 - const GAMBLER ; $E3 - const RECYCLE ; $E4 + const HYPNO ; $9a + const MR_MIME ; $9b + const JYNX ; $9c + const MEWTWO1 ; $9d + const MEWTWO2 ; $9e + const MEWTWO3 ; $9f + const MEW1 ; $a0 + const MEW2 ; $a1 + const MEW3 ; $a2 + const PIDGEY ; $a3 + const PIDGEOTTO ; $a4 + const PIDGEOT1 ; $a5 + const PIDGEOT2 ; $a6 + const RATTATA ; $a7 + const RATICATE ; $a8 + const SPEAROW ; $a9 + const FEAROW ; $aa + const CLEFAIRY ; $ab + const CLEFABLE ; $ac + const JIGGLYPUFF1 ; $ad + const JIGGLYPUFF2 ; $ae + const JIGGLYPUFF3 ; $af + const WIGGLYTUFF ; $b0 + const MEOWTH1 ; $b1 + const MEOWTH2 ; $b2 + const PERSIAN ; $b3 + const FARFETCHD ; $b4 + const DODUO ; $b5 + const DODRIO ; $b6 + const LICKITUNG ; $b7 + const CHANSEY ; $b8 + const KANGASKHAN ; $b9 + const TAUROS ; $ba + const DITTO ; $bb + const EEVEE ; $bc + const PORYGON ; $bd + const SNORLAX ; $be + const DRATINI ; $bf + const DRAGONAIR ; $c0 + const DRAGONITE1 ; $c1 + const DRAGONITE2 ; $c2 + const PROFESSOR_OAK ; $c3 + const IMPOSTER_PROFESSOR_OAK ; $c4 + const BILL ; $c5 + const MR_FUJI ; $c6 + const LASS ; $c7 + const IMAKUNI_CARD ; $c8 + const POKEMON_TRADER ; $c9 + const POKEMON_BREEDER ; $ca + const CLEFAIRY_DOLL ; $cb + const MYSTERIOUS_FOSSIL ; $cc + const ENERGY_RETRIEVAL ; $cd + const SUPER_ENERGY_RETRIEVAL ; $ce + const ENERGY_SEARCH ; $cf + const ENERGY_REMOVAL ; $d0 + const SUPER_ENERGY_REMOVAL ; $d1 + const SWITCH ; $d2 + const POKEMON_CENTER ; $d3 + const POKE_BALL ; $d4 + const SCOOP_UP ; $d5 + const COMPUTER_SEARCH ; $d6 + const POKEDEX ; $d7 + const PLUSPOWER ; $d8 + const DEFENDER ; $d9 + const ITEM_FINDER ; $da + const GUST_OF_WIND ; $db + const DEVOLUTION_SPRAY ; $dc + const POTION ; $dd + const SUPER_POTION ; $de + const FULL_HEAL ; $df + const REVIVE ; $e0 + const MAINTENANCE ; $e1 + const POKEMON_FLUTE ; $e2 + const GAMBLER ; $e3 + const RECYCLE ; $e4 NUM_CARDS EQU const_value + -1 diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm index c110a69..4840171 100644 --- a/src/constants/card_data_constants.asm +++ b/src/constants/card_data_constants.asm @@ -32,7 +32,7 @@ ENERGY_CARD_DATA_LENGTH EQU $0e ; TYPE_PKMN card only CARD_DATA_MOVE1 EQU $0c -CARD_DATA_MOVE1_ENERGY EQU $0c +CARD_DATA_MOVE1_ENERGY_COST EQU $0c CARD_DATA_MOVE1_NAME EQU $10 CARD_DATA_MOVE1_DESCRIPTION EQU $12 CARD_DATA_MOVE1_DAMAGE EQU $16 @@ -46,7 +46,7 @@ CARD_DATA_MOVE1_ANIMATION EQU $1e ; TYPE_PKMN card only CARD_DATA_MOVE2 EQU $1f -CARD_DATA_MOVE2_ENERGY EQU $1f +CARD_DATA_MOVE2_ENERGY_COST EQU $1f CARD_DATA_MOVE2_NAME EQU $23 CARD_DATA_MOVE2_DESCRIPTION EQU $25 CARD_DATA_MOVE2_DAMAGE EQU $29 @@ -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 @@ -196,6 +196,16 @@ CARDPAGE_ENERGY EQU $09 CARDPAGE_TRAINER_1 EQU $0d CARDPAGE_TRAINER_2 EQU $0e +; wMovePageNumber constants +MOVEPAGE_MOVE1_1 EQU $00 +MOVEPAGE_MOVE1_2 EQU $01 +MOVEPAGE_MOVE2_1 EQU $02 +MOVEPAGE_MOVE2_2 EQU $03 + +; wCardPageType constants +CARDPAGETYPE_NOT_PLAY_AREA EQU $00 +CARDPAGETYPE_PLAY_AREA EQU $01 + ; card type header constants ($10-tile headers in DuelCardHeaderGraphics) HEADER_TRAINER EQU $00 HEADER_ENERGY EQU $01 diff --git a/src/constants/charmaps.asm b/src/constants/charmaps.asm index 5bd21be..baa3f46 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_* @@ -329,7 +338,7 @@ FW_SPACE EQU $70 txsymbol PARALYZED ; $0b txsymbol CURSOR_U ; $0c txsymbol POKEMON ; $0d - txsymbol UNKNOWN_0E ; $0e + txsymbol MOVE_DESCR ; $0e txsymbol CURSOR_R ; $0f txsymbol HP ; $10 txsymbol Lv ; $11 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/duel_constants.asm b/src/constants/duel_constants.asm index eaa9a65..ee6b940 100644 --- a/src/constants/duel_constants.asm +++ b/src/constants/duel_constants.asm @@ -21,18 +21,9 @@ TURN_PLAYER_TIED EQU $3 DUEL_WIN EQU $0 DUEL_LOSS EQU $1 -; Box message id's - const_def - const BOXMSG_PLAYERS_TURN - const BOXMSG_OPPONENTS_TURN - const BOXMSG_BETWEEN_TURNS - const BOXMSG_DECISION - const BOXMSG_BENCH_POKEMON - const BOXMSG_ARENA_POKEMON - const BOXMSG_COIN_TOSS - ; wPlayerDuelVariables or wOpponentDuelVariables constants DUELVARS_CARD_LOCATIONS EQUS "LOW(wPlayerCardLocations)" ; 00 +DUELVARS_PRIZE_CARDS EQUS "LOW(wPlayerPrizeCards)" ; 3c DUELVARS_HAND EQUS "LOW(wPlayerHand)" ; 42 DUELVARS_DECK_CARDS EQUS "LOW(wPlayerDeckCards)" ; 7e DUELVARS_NUMBER_OF_CARDS_NOT_IN_DECK EQUS "LOW(wPlayerNumberOfCardsNotInDeck)" ; ba @@ -81,6 +72,8 @@ DUELVARS_NUMBER_OF_POKEMON_IN_PLAY_AREA EQUS "LOW(wPlayerNumberOfPokemonInPlayA DUELVARS_ARENA_CARD_STATUS EQUS "LOW(wPlayerArenaCardStatus)" ; f0 DUELVARS_DUELIST_TYPE EQUS "LOW(wPlayerDuelistType)" ; f1 DUELVARS_ARENA_CARD_DISABLED_MOVE_INDEX EQUS "LOW(wPlayerArenaCardDisabledMoveIndex)" ; f2 +DUELVARS_ARENA_CARD_LAST_TURN_DAMAGE EQUS "LOW(wPlayerArenaCardLastTurnDamage)" ; f3 +DUELVARS_ARENA_CARD_LAST_TURN_STATUS EQUS "LOW(wPlayerArenaCardLastTurnStatus)" ; f5 ; card location constants (DUELVARS_CARD_LOCATIONS) CARD_LOCATION_DECK EQU $00 @@ -123,8 +116,11 @@ POISONED EQU $80 DOUBLE_POISONED EQU $c0 CNF_SLP_PRZ EQU $0f ; confused, asleep or paralyzed +PSN_DBLPSN EQU $f0 ; poisoned or double poisoned ; substatus conditions (DUELVARS_ARENA_CARD_SUBSTATUS*) + +; SUBSTATUS1 are checked on a defending Pokemon SUBSTATUS1_AGILITY EQU $0c SUBSTATUS1_FLY EQU $0d SUBSTATUS1_HARDEN EQU $0e @@ -139,6 +135,7 @@ SUBSTATUS1_NO_DAMAGE_17 EQU $17 SUBSTATUS1_NEXT_TURN_DOUBLE_DAMAGE EQU $19 SUBSTATUS1_REDUCE_BY_10 EQU $1e +; SUBSTATUS2 are checked on an attacking Pokemon SUBSTATUS2_SMOKESCREEN EQU $01 SUBSTATUS2_SAND_ATTACK EQU $02 SUBSTATUS2_REDUCE_BY_20 EQU $03 @@ -167,3 +164,27 @@ NO_DAMAGE_OR_EFFECT_NSHIELD EQU $05 ; wDamageEffectiveness constants WEAKNESS EQU 1 RESISTANCE EQU 2 + +; Box message id's + const_def + const BOXMSG_PLAYERS_TURN + const BOXMSG_OPPONENTS_TURN + const BOXMSG_BETWEEN_TURNS + const BOXMSG_DECISION + const BOXMSG_BENCH_POKEMON + const BOXMSG_ARENA_POKEMON + const BOXMSG_COIN_TOSS + +; wDuelDisplayedScreen constants +DUEL_MAIN_SCENE EQU $01 +PLAY_AREA_CARD_LIST EQU $02 +COIN_TOSS EQU $06 +DRAW_CARDS EQU $07 +LARGE_CARD_PICTURE EQU $08 +SHUFFLE_DECK EQU $09 +CHECK_PLAY_AREA EQU $0a + +; wCardListItemSelectionMenuType constants +;NONE EQU $00 +PLAY_CHECK EQU $01 +SELECT_CHECK EQU $02 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..3b36a9d 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,154 @@ OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3) ; Hardware registers rJOYP EQU $ff00 ; Joypad (R/W) +P15 EQU %00100000 +JOY_BTNS_SELECT EQU P15 +P14 EQU %00010000 +JOY_DPAD_SELECT EQU P14 +JOY_INPUT_MASK EQU %00001111 +P13 EQU %00001000 +P12 EQU %00000100 +P11 EQU %00000010 +P10 EQU %00000001 +JOY_INPUT_DOWN EQU P13 +JOY_INPUT_UP EQU P12 +JOY_INPUT_LEFT EQU P11 +JOY_INPUT_RIGHT EQU P10 +JOY_INPUT_START EQU P13 +JOY_INPUT_SELECT EQU P12 +JOY_INPUT_B EQU P11 +JOY_INPUT_A EQU P10 +SNES_JOYPAD1 EQU $3 ; lower two bits +SNES_JOYPAD2 EQU $2 ; lower two bits +SNES_JOYPAD3 EQU $1 ; lower two bits +SNES_JOYPAD4 EQU $0 ; lower two bits + 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/sgb_constants.asm b/src/constants/sgb_constants.asm index 6ba250e..a6a58af 100644 --- a/src/constants/sgb_constants.asm +++ b/src/constants/sgb_constants.asm @@ -1,3 +1,5 @@ +SGB_PACKET_SIZE EQU $10 ; bytes + PAL01 EQU $00 ; Set SGB Palette 0,1 Data PAL23 EQU $01 ; Set SGB Palette 2,3 Data PAL03 EQU $02 ; Set SGB Palette 0,3 Data 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 diff --git a/src/constants/text_constants.asm b/src/constants/text_constants.asm index 3a50b59..97c8313 100644 --- a/src/constants/text_constants.asm +++ b/src/constants/text_constants.asm @@ -14,6 +14,8 @@ TX_CTRL_START EQU $05 ; usage: TX_SYMBOL, char1, TX_SYMBOL, char2, ... ; source: gfx/fonts/symbols.2bpp +; note: precede each symbol with TX_SYMBOL only when it's going to be processed as text. +; if copying directly to VRAM, don't precede symbols with TX_SYMBOL as they are just tile numbers. TX_SYMBOL EQU $05 ; usage: TX_HALFWIDTH, char1, char2, ... |