Decompiling Pokedex and Sprite Animation objects (#114)
Some checks failed
CI / build (push) Has been cancelled

* Partially decompiled banks $10 and $23

* Couple minor tweaks

* Decompiled mon menu icon-related functions

---------

Co-authored-by: vulcandth <vulcandth@gmail.com>
This commit is contained in:
DrippingYellow 2025-03-27 23:38:42 -05:00 committed by GitHub
parent 9e05bc90a3
commit 05a77ef010
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
54 changed files with 7274 additions and 619 deletions

View File

@ -15,6 +15,7 @@ INCLUDE "macros/queue.asm"
INCLUDE "macros/maps.asm"
INCLUDE "macros/battle_commands.asm"
INCLUDE "macros/oam_anims.asm"
INCLUDE "macros/asserts.asm"
INCLUDE "constants/audio_constants.asm"

View File

@ -17,9 +17,22 @@ const_def
shift_const MORN ; 3
DEF NUM_DAYTIMES EQU const_value
; FlagAction arguments (see home/flag.asm)
const_def
const RESET_FLAG
const SET_FLAG
const CHECK_FLAG
; RedrawRowOrColumn functions
DEF REDRAW_COL EQU 1
DEF REDRAW_ROW EQU 2
; significant money values
DEF MAX_COINS EQU 9999
; LoadMenuMonIcon.Jumptable indexes (see engine/gfx/mon_icons.asm)
const_def
const MONICON_PARTYMENU
const MONICON_NAMINGSCREEN
const MONICON_MOVES
const MONICON_TRADE

View File

@ -192,6 +192,66 @@
const MON_BELLSPROUT ; bc
const MON_WEEPINBELL ; bd
const MON_VICTREEBEL ; be
const MON_HAPPA ; bf CHIKORITA
const MON_HANAMOGURA ; c0 BAYLEEF
const MON_HANARYU ; c1 MEGANIUM
const MON_HONOGUMA ; c2
const MON_VOLBEAR ; c3
const MON_DYNABEAR ; c4
const MON_KURUSU ; c5
const MON_AQUA ; c6
const MON_AQUARIA ; c7
const MON_HOHO ; c8 HOOTHOOT
const MON_BOBO ; c9 NOCTOWL
const MON_PACHIMEE ; ca MAREEP
const MON_MOKOKO ; cb FLAAFY
const MON_DENRYU ; cc AMPHAROS
const MON_MIKON ; cd (baby VULPIX)
const MON_MONJA ; ce (baby TANGELA)
const MON_JARANJA ; cf TANGROWTH (evolved TANGELA)
const MON_HANEEI ; d0 MANTINE
const MON_PUKU ; d1 QWILFISH
const MON_SHIBIREFUGU ; d2 (evolved QWILFISH)
const MON_PICHU ; d3
const MON_PY ; d4 CLEFFA
const MON_PUPURIN ; d5 IGGLYBUFF
const MON_MIZUUO ; d6 QUAGSIRE
const MON_NATY ; d7 NATU
const MON_NATIO ; d8 XATU
const MON_GYOPIN ; d9 (baby GOLDEEN)
const MON_MARIL ; da MARILL
const MON_MANBO1 ; db
const MON_IKARI ; dc
const MON_GROTESS ; dd
const MON_EKSING ; de CROBAT
const MON_PARA ; df (baby PARAS)
const MON_KOKUMO ; e0 SPINARAK
const MON_TWOHEAD ; e1 ARIADOS
const MON_YOROIDORI ; e2 SKARMORY
const MON_ANIMON ; e3 (evolved DITTO)
const MON_HINAZU ; e4 (baby DODUO)
const MON_SUNNY ; e5 SUNFLORA
const MON_PAON ; e6 PHANPHY
const MON_DONPHAN ; e7
const MON_TWINZ ; e8 (baby GIRAFARIG)
const MON_KIRINRIKI ; e9 GIRAFARIG
const MON_PAINTER ; ea SMEARGLE
const MON_KOUNYA ; eb (baby MEOWTH)
const MON_RINRIN ; ec
const MON_BERURUN ; ed
const MON_NYOROTONO ; ee POLITOED
const MON_YADOKING ; ef SLOWKING
const MON_ANNON ; f0 UNOWN
const MON_REDIBA ; f1 LEDYBA
const MON_MITSUBOSHI ; f2 LEDIAN
const MON_PUCHICORN ; f3 (baby PONYTA)
const MON_EIFIE ; f4 ESPEON
const MON_BLACKY ; f5 UMBREON
const MON_TURBAN ; f6
const MON_BETBABY ; f7 (baby GRIMER)
const MON_TEPPOUO ; f8 REMORAID
const MON_OKUTANK ; f9 OCTILLERY
const MON_GONGU ; fa TYROGUE
; Unown forms
const_def 1

View File

@ -120,7 +120,7 @@ DEF NUM_HOF_TEAMS EQU 30
; wild data
DEF NUM_GRASSMON EQU 7 ; data/wild/*_grass.asm table size
DEF NUM_GRASSMON EQU 6 ; data/wild/*_grass.asm table size
DEF NUM_WATERMON EQU 3 ; data/wild/*_water.asm table size
DEF GRASS_WILDDATA_LENGTH EQU (NUM_GRASSMON * 2 + 1) * 3 + 2

View File

@ -12,66 +12,307 @@
const SPRITEANIMSTRUCT_DURATIONOFFSET ; 9
const SPRITEANIMSTRUCT_FRAME ; a
const SPRITEANIMSTRUCT_JUMPTABLE_INDEX ; b
const SPRITEANIMSTRUCT_0C ; c
const SPRITEANIMSTRUCT_0D ; d
const SPRITEANIMSTRUCT_0E ; e
const SPRITEANIMSTRUCT_0F ; f
const SPRITEANIMSTRUCT_VAR1 ; c
const SPRITEANIMSTRUCT_VAR2 ; d
const SPRITEANIMSTRUCT_VAR3 ; e
const SPRITEANIMSTRUCT_VAR4 ; f
DEF SPRITEANIMSTRUCT_LENGTH EQU const_value
DEF NUM_SPRITE_ANIM_STRUCTS EQU 10 ; see wSpriteAnimationStructs
; wSpriteAnimDict keys
DEF SPRITE_ANIM_DICT_DEFAULT EQU $00
DEF SPRITE_ANIM_DICT_10 EQU $10
DEF SPRITE_ANIM_DICT_22 EQU $22
DEF SPRITE_ANIM_DICT_25 EQU $25
DEF SPRITE_ANIM_DICT_GS_SPLASH EQU $27
DEF SPRITE_ANIM_DICT_29 EQU $29
const_def
const SPRITE_ANIM_DICT_NULL ; 00
const SPRITE_ANIM_DICT_POLIWAG_ICON ; 01
const SPRITE_ANIM_DICT_JIGGLYPUFF_ICON ; 02
const SPRITE_ANIM_DICT_DIGLETT_ICON ; 03
const SPRITE_ANIM_DICT_PIKACHU_ICON ; 04
const SPRITE_ANIM_DICT_STARYU_ICON ; 05
const SPRITE_ANIM_DICT_MAGIKARP_ICON ; 06
const SPRITE_ANIM_DICT_PIDGEY_ICON ; 07
const SPRITE_ANIM_DICT_RHYDON_ICON ; 08
const SPRITE_ANIM_DICT_CLEFAIRY_ICON ; 09
const SPRITE_ANIM_DICT_ODDISH_ICON ; 0a
const SPRITE_ANIM_DICT_MUSHI_ICON ; 0b
const SPRITE_ANIM_DICT_GENGAR_ICON ; 0c
const SPRITE_ANIM_DICT_LAPRAS_ICON ; 0d
const SPRITE_ANIM_DICT_MRMIME_ICON ; 0e
const SPRITE_ANIM_DICT_LOKON_ICON ; 0f
const SPRITE_ANIM_DICT_TAUROS_ICON ; 10
const SPRITE_ANIM_DICT_SHELLDER_ICON ; 11
const SPRITE_ANIM_DICT_DITTO_ICON ; 12
const SPRITE_ANIM_DICT_ONIX_ICON ; 13
const SPRITE_ANIM_DICT_VOLTORB_ICON ; 14
const SPRITE_ANIM_DICT_SQUIRTLE_ICON ; 15
const SPRITE_ANIM_DICT_BULBASAUR_ICON ; 16
const SPRITE_ANIM_DICT_CHARMANDER_ICON ; 17
const SPRITE_ANIM_DICT_WEEDLE_ICON ; 18
const SPRITE_ANIM_DICT_ANNON_ICON ; 19
const SPRITE_ANIM_DICT_GEODUDE_ICON ; 1a
const SPRITE_ANIM_DICT_MACHOP_ICON ; 1b
const SPRITE_ANIM_DICT_EGG_ICON ; 1c
const SPRITE_ANIM_DICT_TENTACOOL_ICON ; 1d
const SPRITE_ANIM_DICT_BUTTERFREE_ICON ; 1e
const SPRITE_ANIM_DICT_ZUBAT_ICON ; 1f
const SPRITE_ANIM_DICT_SNORLAX_ICON ; 20
const SPRITE_ANIM_DICT_GS_INTRO ; 21
const SPRITE_ANIM_DICT_GS_INTRO_2 ; 22
const SPRITE_ANIM_DICT_GS_INTRO_3 ; 23
const SPRITE_ANIM_DICT_TITLE_FLAME_NOTE ; 24
const SPRITE_ANIM_DICT_MINIGAME_PICROSS ; 25
const SPRITE_ANIM_DICT_TEXT_CURSOR ; 26
const SPRITE_ANIM_DICT_GS_SPLASH ; 27
const SPRITE_ANIM_DICT_SLOTS ; 28
const SPRITE_ANIM_DICT_ARROW_CURSOR ; 29
DEF NUM_SPRITE_ANIM_GFX EQU const_value
DEF SPRITE_ANIM_DICT_DEFAULT EQU $08
; wSpriteAnimDict size (see ram/wram.asm)
DEF NUM_SPRITEANIMDICT_ENTRIES EQU 10
; SpriteAnimSeqData indexes
DEF SPRITE_ANIM_INDEX_08 EQU $08
const_def
const SPRITE_ANIM_OBJ_00 ; 00
const SPRITE_ANIM_OBJ_POLIWAG_ICON ; 01
const SPRITE_ANIM_OBJ_JIGGLYPUFF_ICON ; 02
const SPRITE_ANIM_OBJ_DIGLETT_ICON ; 03
const SPRITE_ANIM_OBJ_PIKACHU_ICON ; 04
const SPRITE_ANIM_OBJ_STARYU_ICON ; 05
const SPRITE_ANIM_OBJ_MAGIKARP_ICON ; 06
const SPRITE_ANIM_OBJ_PIDGEY_ICON ; 07
const SPRITE_ANIM_OBJ_RHYDON_ICON ; 08
const SPRITE_ANIM_OBJ_CLEFAIRY_ICON ; 09
const SPRITE_ANIM_OBJ_ODDISH_ICON ; 0a
const SPRITE_ANIM_OBJ_MUSHI_ICON ; 0b
const SPRITE_ANIM_OBJ_GENGAR_ICON ; 0c
const SPRITE_ANIM_OBJ_LAPRAS_ICON ; 0d
const SPRITE_ANIM_OBJ_MRMIME_ICON ; 0e
const SPRITE_ANIM_OBJ_LOKON_ICON ; 0f
const SPRITE_ANIM_OBJ_TAUROS_ICON ; 10
const SPRITE_ANIM_OBJ_SHELLDER_ICON ; 11
const SPRITE_ANIM_OBJ_DITTO_ICON ; 12
const SPRITE_ANIM_OBJ_ONIX_ICON ; 13
const SPRITE_ANIM_OBJ_VOLTORB_ICON ; 14
const SPRITE_ANIM_OBJ_SQUIRTLE_ICON ; 15
const SPRITE_ANIM_OBJ_BULBASAUR_ICON ; 16
const SPRITE_ANIM_OBJ_CHARMANDER_ICON ; 17
const SPRITE_ANIM_OBJ_WEEDLE_ICON ; 18
const SPRITE_ANIM_OBJ_ANNON_ICON ; 19
const SPRITE_ANIM_OBJ_GEODUDE_ICON ; 1a
const SPRITE_ANIM_OBJ_MACHOP_ICON ; 1b
const SPRITE_ANIM_OBJ_EGG_ICON ; 1c
const SPRITE_ANIM_OBJ_TENTACOOL_ICON ; 1d
const SPRITE_ANIM_OBJ_BUTTERFREE_ICON ; 1e
const SPRITE_ANIM_OBJ_ZUBAT_ICON ; 1f
const SPRITE_ANIM_OBJ_SNORLAX_ICON ; 20
const SPRITE_ANIM_OBJ_GS_INTRO_BUBBLE ; 21
const SPRITE_ANIM_OBJ_GS_INTRO_OMANYTE ; 22
const SPRITE_ANIM_OBJ_GS_INTRO_MAGIKARP ; 23
const SPRITE_ANIM_OBJ_UNUSED_INTRO_AERODACTYL ; 24
const SPRITE_ANIM_OBJ_GS_INTRO_LAPRAS ; 25
const SPRITE_ANIM_OBJ_GS_INTRO_NOTE ; 26
const SPRITE_ANIM_OBJ_GS_INTRO_SMALLER_NOTE ; 27
const SPRITE_ANIM_OBJ_GS_INTRO_JIGGLYPUFF ; 28
const SPRITE_ANIM_OBJ_GS_INTRO_PIKACHU ; 29
const SPRITE_ANIM_OBJ_GS_INTRO_PIKACHU_TAIL ; 2a
const SPRITE_ANIM_OBJ_GS_INTRO_FIREBALL ; 2b
const SPRITE_ANIM_OBJ_GS_INTRO_BLASTOISE ; 2c
const SPRITE_ANIM_OBJ_GS_INTRO_VENUSAUR ; 2d
const SPRITE_ANIM_OBJ_GS_TITLE_FLAME_NOTE ; 2e
const SPRITE_ANIM_OBJ_MINIGAME_PIKACHU ; 2f
const SPRITE_ANIM_OBJ_MINIGAME_PIKACHU_TAIL ; 30
const SPRITE_ANIM_OBJ_MINIGAME_NOTE ; 31
const SPRITE_ANIM_OBJ_MINIGAME_JIGGLYPUFF ; 32
const SPRITE_ANIM_OBJ_MINIGAME_PICROSS_CURSOR ; 33
const SPRITE_ANIM_OBJ_MINIGAME_PICROSS_DUST ; 34
const SPRITE_ANIM_OBJ_MINIGAME_PICROSS_GOLD ; 35
const SPRITE_ANIM_OBJ_POKEDEX_HAND_CURSOR ; 36
const SPRITE_ANIM_OBJ_POKEDEX_CURSOR ; 37
const SPRITE_ANIM_OBJ_POKEDEX_SLOWPOKE ; 38
const SPRITE_ANIM_OBJ_NAMING_SCREEN_CURSOR ; 39
const SPRITE_ANIM_OBJ_GAMEFREAK_LOGO ; 3a
const SPRITE_ANIM_OBJ_GS_INTRO_STAR ; 3b
const SPRITE_ANIM_OBJ_GS_INTRO_SPARKLE ; 3c
const SPRITE_ANIM_OBJ_SLOTS_GOLEM ; 3d
const SPRITE_ANIM_OBJ_SLOTS_CHANSEY ; 3e
const SPRITE_ANIM_OBJ_SLOTS_EGG ; 3f
const SPRITE_ANIM_OBJ_MAIL_WRITING_CURSOR ; 40
const SPRITE_ANIM_OBJ_MAP_CHARACTER_ICON ; 41
const SPRITE_ANIM_OBJ_POKER_CURSOR ; 42
const SPRITE_ANIM_OBJ_MEMORY_GAME_CURSOR ; 43
const SPRITE_ANIM_OBJ_TRAINERGEAR_POINTER ; 44
const SPRITE_ANIM_OBJ_TRADE_POKE_BALL ; 45
const SPRITE_ANIM_OBJ_TRADE_POOF ; 46
const SPRITE_ANIM_OBJ_TRADE_TUBE_BULGE ; 47
const SPRITE_ANIM_OBJ_TRADEMON_ICON ; 48
const SPRITE_ANIM_OBJ_TRADEMON_BUBBLE ; 49
const SPRITE_ANIM_OBJ_4A ; 4a
const SPRITE_ANIM_OBJ_RADIO_FREQUENCY_METER ; 4b
DEF NUM_SPRITE_ANIM_OBJS EQU const_value
DEF SPRITE_ANIM_INDEX_20 EQU $20
; DoSpriteAnimFrame.Jumptable indexes (see engine/sprite_anims/functions.asm)
const_def
const SPRITE_ANIM_FUNC_NULL ; 00
const SPRITE_ANIM_FUNC_PARTY_MON ; 01
const SPRITE_ANIM_FUNC_PARTY_MON_SWITCH ; 02
const SPRITE_ANIM_FUNC_PARTY_MON_SELECTED ; 03
const SPRITE_ANIM_FUNC_GS_INTRO_BUBBLE ; 04
const SPRITE_ANIM_FUNC_GS_INTRO_OMANYTE ; 05
const SPRITE_ANIM_FUNC_GS_INTRO_MAGIKARP ; 06
const SPRITE_ANIM_FUNC_UNUSED_INTRO_AERODACTYL ; 07
const SPRITE_ANIM_FUNC_GS_INTRO_LAPRAS ; 08
const SPRITE_ANIM_FUNC_GS_INTRO_NOTE ; 09
const SPRITE_ANIM_FUNC_GS_INTRO_JIGGLYPUFF ; 0a
const SPRITE_ANIM_FUNC_GS_INTRO_PIKACHU ; 0b
const SPRITE_ANIM_FUNC_GS_INTRO_PIKACHU_TAIL ; 0c
const SPRITE_ANIM_FUNC_GS_INTRO_FIREBALL ; 0d
const SPRITE_ANIM_FUNC_GS_INTRO_BLASTOISE ; 0e
const SPRITE_ANIM_FUNC_GS_INTRO_VENUSAUR ; 0f
const SPRITE_ANIM_FUNC_GS_TITLE_FLAME_NOTE ; 10
const SPRITE_ANIM_FUNC_MINIGAME_PIKACHU ; 11
const SPRITE_ANIM_FUNC_MINIGAME_PIKACHU_TAIL ; 12
const SPRITE_ANIM_FUNC_MINIGAME_NOTE ; 13
const SPRITE_ANIM_FUNC_MINIGAME_JIGGLYPUFF ; 14
const SPRITE_ANIM_FUNC_MINIGAME_PICROSS_CURSOR ; 15
const SPRITE_ANIM_FUNC_MINIGAME_PICROSS_DUST ; 16
const SPRITE_ANIM_FUNC_POKEDEX_HAND_CURSOR ; 17
const SPRITE_ANIM_FUNC_POKEDEX_CURSOR ; 18
const SPRITE_ANIM_FUNC_POKEDEX_SLOWPOKE ; 19
const SPRITE_ANIM_FUNC_NAMING_SCREEN_CURSOR ; 1a
const SPRITE_ANIM_FUNC_GAMEFREAK_LOGO ; 1b
const SPRITE_ANIM_FUNC_GS_GAMEFREAK_LOGO_STAR ; 1c
const SPRITE_ANIM_FUNC_GS_GAMEFREAK_LOGO_SPARKLE ; 1d
const SPRITE_ANIM_FUNC_SLOTS_GOLEM ; 1e
const SPRITE_ANIM_FUNC_SLOTS_CHANSEY ; 1f
const SPRITE_ANIM_FUNC_SLOTS_EGG ; 20
const SPRITE_ANIM_FUNC_MAIL_CURSOR ; 21
const SPRITE_ANIM_FUNC_POKER_CURSOR ; 22
const SPRITE_ANIM_FUNC_MEMORY_GAME_CURSOR ; 23
const SPRITE_ANIM_FUNC_TRAINERGEAR_POINTER ; 24
const SPRITE_ANIM_FUNC_TRADE_POKE_BALL ; 25
const SPRITE_ANIM_FUNC_TRADE_TUBE_BULGE ; 26
const SPRITE_ANIM_FUNC_TRADEMON_IN_TUBE ; 27
const SPRITE_ANIM_FUNC_UNKNOWN ; 28
const SPRITE_ANIM_FUNC_RADIO_FREQUENCY_METER ; 29
DEF NUM_SPRITE_ANIM_FUNCS EQU const_value
DEF SPRITE_ANIM_INDEX_GS_INTRO_BUBBLE EQU $21
DEF SPRITE_ANIM_INDEX_GS_INTRO_OMANYTE EQU $22
DEF SPRITE_ANIM_INDEX_GS_INTRO_MAGIKARP EQU $23
DEF SPRITE_ANIM_INDEX_UNUSED_INTRO_AERODACTYL EQU $24
DEF SPRITE_ANIM_INDEX_GS_INTRO_LAPRAS EQU $25
DEF SPRITE_ANIM_INDEX_GS_INTRO_NOTE EQU $26
DEF SPRITE_ANIM_INDEX_GS_INTRO_SMALLER_NOTE EQU $27
DEF SPRITE_ANIM_INDEX_GS_INTRO_JIGGLYPUFF EQU $28
DEF SPRITE_ANIM_INDEX_28 EQU $28
DEF SPRITE_ANIM_INDEX_GS_INTRO_PIKACHU EQU $29
DEF SPRITE_ANIM_INDEX_GS_INTRO_PIKACHU_TAIL EQU $2a
DEF SPRITE_ANIM_INDEX_GS_INTRO_FIREBALL EQU $2b
DEF SPRITE_ANIM_INDEX_GS_INTRO_BLASTOISE EQU $2c
DEF SPRITE_ANIM_INDEX_GS_INTRO_VENUSAUR EQU $2d
; SpriteAnimFrameData indexes (see data/sprite_anims/framesets.asm)
const_def
const SPRITE_ANIM_FRAMESET_00 ; 00
const SPRITE_ANIM_FRAMESET_PARTY_MON ; 01
const SPRITE_ANIM_FRAMESET_GS_INTRO_BUBBLE ; 02
const SPRITE_ANIM_FRAMESET_GS_INTRO_OMANYTE ; 03
const SPRITE_ANIM_FRAMESET_GS_INTRO_MAGIKARP ; 04
const SPRITE_ANIM_FRAMESET_UNUSED_INTRO_AERODACTYL ; 05
const SPRITE_ANIM_FRAMESET_GS_INTRO_LAPRAS ; 06
const SPRITE_ANIM_FRAMESET_GS_INTRO_NOTE ; 07
const SPRITE_ANIM_FRAMESET_GS_INTRO_SMALLER_NOTE ; 08
const SPRITE_ANIM_FRAMESET_GS_INTRO_JIGGLYPUFF ; 09
const SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU ; 0a
const SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_2 ; 0b
const SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_TAIL ; 0c
const SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_TAIL_2 ; 0d
const SPRITE_ANIM_FRAMESET_GS_INTRO_FIREBALL ; 0e
const SPRITE_ANIM_FRAMESET_GS_INTRO_BLASTOISE ; 0f
const SPRITE_ANIM_FRAMESET_GS_INTRO_VENUSAUR ; 10
const SPRITE_ANIM_FRAMESET_GS_TITLE_FLAME_NOTE ; 11
const SPRITE_ANIM_FRAMESET_GS_MINIGAME_PIKACHU ; 12
const SPRITE_ANIM_FRAMESET_GS_MINIGAME_PIKACHU_2 ; 13
const SPRITE_ANIM_FRAMESET_GS_MINIGAME_PIKACHU_3 ; 14
const SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_CURSOR ; 15
const SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_DUST ; 16
const SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_GOLD ; 17
const SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_GOLD_2 ; 18
const SPRITE_ANIM_FRAMESET_POKEDEX_CURSOR ; 19
const SPRITE_ANIM_FRAMESET_POKEDEX_SLOWPOKE ; 1a
const SPRITE_ANIM_FRAMESET_POKEDEX_SLOWPOKE_2 ; 1b
const SPRITE_ANIM_FRAMESET_POKEDEX_SLOWPOKE_3 ; 1c
const SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR ; 1d
const SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO ; 1e
const SPRITE_ANIM_FRAMESET_GS_GAMEFREAK_LOGO_STAR ; 1f
const SPRITE_ANIM_FRAMESET_GS_GAMEFREAK_LOGO_SPARKLE ; 20
const SPRITE_ANIM_FRAMESET_SLOTS_GOLEM ; 21
const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY ; 22
const SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY_2 ; 23
const SPRITE_ANIM_FRAMESET_SLOTS_EGG ; 24
const SPRITE_ANIM_FRAMESET_WALK ; 25
const SPRITE_ANIM_FRAMESET_STILL_CURSOR ; 26
const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL ; 27
const SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_WOBBLE ; 28
const SPRITE_ANIM_FRAMESET_TRADE_POOF ; 29
const SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE ; 2a
const SPRITE_ANIM_FRAMESET_TRADEMON_ICON ; 2b
const SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE ; 2c
const SPRITE_ANIM_FRAMESET_UNKNOWN ; 2d
const SPRITE_ANIM_FRAMESET_RADIO_FREQUENCY_METER ; 2e
DEF NUM_SPRITE_ANIM_FRAMESETS EQU const_value
DEF SPRITE_ANIM_INDEX_GS_TITLE_FLAME_NOTE EQU $2e
DEF SPRITE_ANIM_INDEX_MINIGAME_PIKACHU EQU $2f
DEF SPRITE_ANIM_INDEX_MINIGAME_PIKACHU_TAIL EQU $30
DEF SPRITE_ANIM_INDEX_MINIGAME_NOTE EQU $31
DEF SPRITE_ANIM_INDEX_MINIGAME_JIGGLYPUFF EQU $32
DEF SPRITE_ANIM_INDEX_MINIGAME_PICROSS_CURSOR EQU $33
DEF SPRITE_ANIM_INDEX_MINIGAME_PICROSS_DUST EQU $34
DEF SPRITE_ANIM_INDEX_MINIGAME_PICROSS_GOLD EQU $35
DEF SPRITE_ANIM_INDEX_39 EQU $39
DEF SPRITE_ANIM_INDEX_GAMEFREAK_LOGO EQU $3a
DEF SPRITE_ANIM_INDEX_GS_INTRO_STAR EQU $3b
DEF SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE EQU $3c
DEF SPRITE_ANIM_INDEX_SLOTS_GOLEM EQU $3d
DEF SPRITE_ANIM_INDEX_SLOTS_CHANSEY EQU $3e
DEF SPRITE_ANIM_INDEX_SLOTS_EGG EQU $3f
DEF SPRITE_ANIM_INDEX_40 EQU $40
DEF SPRITE_ANIM_INDEX_41 EQU $41
DEF SPRITE_ANIM_INDEX_MEMORY_GAME_CURSOR EQU $43
DEF SPRITE_ANIM_INDEX_TRAINERGEAR_POINTER EQU $44
DEF SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB EQU $4b
; SpriteAnimOAMData indexes (see data/sprite_anims/oam.asm)
const_def
const SPRITE_ANIM_OAMSET_WALK_1 ; 00
const SPRITE_ANIM_OAMSET_WALK_2 ; 01
const SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_1 ; 02
const SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_2 ; 03
const SPRITE_ANIM_OAMSET_GS_INTRO_OMANYTE_1 ; 04
const SPRITE_ANIM_OAMSET_GS_INTRO_OMANYTE_2 ; 05
const SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_1 ; 06
const SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_2 ; 07
const SPRITE_ANIM_OAMSET_UNUSED_INTRO_AERODACTYL ; 08
const SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_1 ; 09
const SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_2 ; 0a
const SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_3 ; 0b
const SPRITE_ANIM_OAMSET_GS_INTRO_NOTE ; 0c
const SPRITE_ANIM_OAMSET_GS_INTRO_SMALLER_NOTE ; 0d
const SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1 ; 0e
const SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_2 ; 0f
const SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_3 ; 10
const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_1 ; 11
const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_2 ; 12
const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_3 ; 13
const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_4 ; 14
const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_1 ; 15
const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_2 ; 16
const SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_3 ; 17
const SPRITE_ANIM_OAMSET_GS_INTRO_SMALL_FIREBALL ; 18
const SPRITE_ANIM_OAMSET_GS_INTRO_MED_FIREBALL ; 19
const SPRITE_ANIM_OAMSET_GS_INTRO_BIG_FIREBALL ; 1a
const SPRITE_ANIM_OAMSET_GS_INTRO_BLASTOISE ; 1b
const SPRITE_ANIM_OAMSET_GS_INTRO_VENUSAUR ; 1c
const SPRITE_ANIM_OAMSET_GS_TITLE_FLAME_NOTE_1 ; 1d
const SPRITE_ANIM_OAMSET_GS_TITLE_FLAME_NOTE_2 ; 1e
const SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_CURSOR ; 1f
const SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_DUST_1 ; 20
const SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_DUST_2 ; 21
const SPRITE_ANIM_OAMSET_POKEDEX_CURSOR ; 22
const SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_1 ; 23
const SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_2 ; 24
const SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_3 ; 25
const SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_4 ; 26
const SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_5 ; 27
const SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR ; 28
const SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO ; 29
const SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_STAR ; 2a
const SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_1 ; 2b
const SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_2 ; 2c
const SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_3 ; 2d
const SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1 ; 2e
const SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2 ; 2f
const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1 ; 30
const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2 ; 31
const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3 ; 32
const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4 ; 33
const SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5 ; 34
const SPRITE_ANIM_OAMSET_SLOTS_EGG ; 35
const SPRITE_ANIM_OAMSET_STILL_CURSOR ; 36
const SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1 ; 37
const SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2 ; 38
const SPRITE_ANIM_OAMSET_TRADE_POOF_1 ; 39
const SPRITE_ANIM_OAMSET_TRADE_POOF_2 ; 3a
const SPRITE_ANIM_OAMSET_TRADE_POOF_3 ; 3b
const SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_1 ; 3c
const SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_2 ; 3d
const SPRITE_ANIM_OAMSET_TRADEMON_ICON_1 ; 3e
const SPRITE_ANIM_OAMSET_TRADEMON_ICON_2 ; 3f
const SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE ; 40
const SPRITE_ANIM_OAMSET_UNKNOWN_41 ; 41
const SPRITE_ANIM_OAMSET_RADIO_FREQUENCY_METER ; 42

View File

@ -37,3 +37,5 @@ DEF SPECIAL_TYPES EQU const_value ; 14
DEF TYPES_END EQU const_value ; 1c
DEF NUM_TYPES EQU TYPES_END + UNUSED_TYPES - UNUSED_TYPES_END ; 12
DEF POKEDEX_TYPE_STRING_LENGTH EQU 5

View File

@ -82,6 +82,15 @@ DEF PLAYER_SURF_PIKA EQU 8
const DEBUG_FIELD_F
const CONTINUED_F
; wJumptableIndex::
DEF JUMPTABLE_INDEX_MASK EQU %01111111
const_def 7
shift_const JUMPTABLE_EXIT
; wCurDexMode::
const_def
const DEXMODE_NUMBERED
const DEXMODE_ABC
; wToolgearFlags::
DEF SHOW_TOOLGEAR_F EQU 0
@ -91,3 +100,6 @@ DEF HIDE_TOOLGEAR_F EQU 7
; wd153::
DEF TOOLGEAR_COORDS_F EQU 0
DEF OVERWORLD_MINUTE_TIME_F EQU 7
; wTimeOfDayPalFlags::
DEF CLEAR_PALSET_F EQU 7

View File

@ -1,5 +1,5 @@
INCLUDE "data/moves/effects_pointers.inc"
;;;; Currently on: $10 ;;;;
NormalHit:
checkobedience
usedmovetext

View File

@ -198,69 +198,69 @@ PokemonCries::
mon_cry CRY_21, 85, 129 ; MON_BELLSPROUT
mon_cry CRY_25, 68, 160 ; MON_WEEPINBELL
mon_cry CRY_25, 102, 332 ; MON_VICTREEBEL
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256
mon_cry CRY_00, 0, 256 ; MON_HAPPA
mon_cry CRY_00, 0, 256 ; MON_HANAMOGURA
mon_cry CRY_00, 0, 256 ; MON_HANARYU
mon_cry CRY_00, 0, 256 ; MON_HONOGUMA
mon_cry CRY_00, 0, 256 ; MON_VOLBEAR
mon_cry CRY_00, 0, 256 ; MON_DYNABEAR
mon_cry CRY_00, 0, 256 ; MON_KURUSU
mon_cry CRY_00, 0, 256 ; MON_AQUA
mon_cry CRY_00, 0, 256 ; MON_AQUARIA
mon_cry CRY_00, 0, 256 ; MON_HOHO
mon_cry CRY_00, 0, 256 ; MON_BOBO
mon_cry CRY_00, 0, 256 ; MON_PACHIMEE
mon_cry CRY_00, 0, 256 ; MON_MOKOKO
mon_cry CRY_00, 0, 256 ; MON_DENRYU
mon_cry CRY_00, 0, 256 ; MON_MIKON
mon_cry CRY_00, 0, 256 ; MON_MONJA
mon_cry CRY_00, 0, 256 ; MON_JARANJA
mon_cry CRY_00, 0, 256 ; MON_HANEEI
mon_cry CRY_00, 0, 256 ; MON_PUKU
mon_cry CRY_00, 0, 256 ; MON_SHIBIREFUGU
mon_cry CRY_00, 0, 256 ; MON_PICHU
mon_cry CRY_00, 0, 256 ; MON_PY
mon_cry CRY_00, 0, 256 ; MON_PUPURIN
mon_cry CRY_00, 0, 256 ; MON_MIZUUO
mon_cry CRY_00, 0, 256 ; MON_NATY
mon_cry CRY_00, 0, 256 ; MON_NATIO
mon_cry CRY_00, 0, 256 ; MON_GYOPIN
mon_cry CRY_00, 0, 256 ; MON_MARIL
mon_cry CRY_00, 0, 256 ; MON_MANBO1
mon_cry CRY_00, 0, 256 ; MON_IKARI
mon_cry CRY_00, 0, 256 ; MON_GROTESS
mon_cry CRY_00, 0, 256 ; MON_EKSING
mon_cry CRY_00, 0, 256 ; MON_PARA
mon_cry CRY_00, 0, 256 ; MON_KOKUMO
mon_cry CRY_00, 0, 256 ; MON_TWOHEAD
mon_cry CRY_00, 0, 256 ; MON_YOROIDORI
mon_cry CRY_00, 0, 256 ; MON_ANIMON
mon_cry CRY_00, 0, 256 ; MON_HINAZU
mon_cry CRY_00, 0, 256 ; MON_SUNNY
mon_cry CRY_00, 0, 256 ; MON_PAON
mon_cry CRY_00, 0, 256 ; MON_DONPHAN
mon_cry CRY_00, 0, 256 ; MON_TWINZ
mon_cry CRY_00, 0, 256 ; MON_KIRINRIKI
mon_cry CRY_00, 0, 256 ; MON_PAINTER
mon_cry CRY_00, 0, 256 ; MON_KOUNYA
mon_cry CRY_00, 0, 256 ; MON_RINRIN
mon_cry CRY_00, 0, 256 ; MON_BERURUN
mon_cry CRY_00, 0, 256 ; MON_NYOROTONO
mon_cry CRY_00, 0, 256 ; MON_YADOKING
mon_cry CRY_00, 0, 256 ; MON_ANNON
mon_cry CRY_00, 0, 256 ; MON_REDIBA
mon_cry CRY_00, 0, 256 ; MON_MITSUBOSHI
mon_cry CRY_00, 0, 256 ; MON_PUCHICORN
mon_cry CRY_00, 0, 256 ; MON_EIFIE
mon_cry CRY_00, 0, 256 ; MON_BLACKY
mon_cry CRY_00, 0, 256 ; MON_TURBAN
mon_cry CRY_00, 0, 256 ; MON_BETBABY
mon_cry CRY_00, 0, 256 ; MON_TEPPOUO
mon_cry CRY_00, 0, 256 ; MON_OKUTANK
mon_cry CRY_00, 0, 256 ; MON_GONGU
mon_cry CRY_00, 0, 256 ; fb
mon_cry CRY_00, 0, 256 ; fc
mon_cry CRY_00, 0, 256 ; fd
mon_cry CRY_00, 0, 256 ; fe
mon_cry CRY_00, 0, 256 ; ff

View File

@ -1,7 +1,3 @@
INCLUDE "constants.asm"
SECTION "data/pokemon/dex_order_alpha.asm", ROMX
; Every Pokémon sorted alphabetically by name (gojūon order).
AlphabeticalPokedexOrder:

View File

@ -1,6 +1,4 @@
INCLUDE "constants.asm"
SECTION "data/pokemon/menu_icons.asm", ROMX
; party menu icons
MonMenuIcons::
db ICON_BULBASAUR ; 01 BULBASAUR

View File

@ -58,8 +58,8 @@ GiveItemPredef::
add_predef Function41fa1
add_predef Function28da4
add_predef Function28d6e
add_predef Function40ac7
add_predef Function40000
add_predef NewPokedexEntry
add_predef Pokedex
add_predef ConvertMon_1to2 ; 30
add_predef CopyMonToTempMon
add_predef ListMoves
@ -89,7 +89,7 @@ GiveItemPredef::
add_predef Function143e0
add_predef CheckSGB
add_predef LoadSGBLayout
add_predef Function8786
add_predef Pokedex_GetArea
add_predef DoBattleTransition
add_predef Function8c9c6
add_predef Function8c940 ; 50

View File

@ -0,0 +1,284 @@
SpriteAnimFrameData:
dw .Frameset_00 ; SPRITE_ANIM_FRAMESET_00
dw .Frameset_PartyMon ; SPRITE_ANIM_FRAMESET_PARTY_MON
dw .Frameset_GSIntroBubble ; SPRITE_ANIM_FRAMESET_GS_INTRO_BUBBLE
dw .Frameset_GSIntroOmanyte ; SPRITE_ANIM_FRAMESET_GS_INTRO_OMANYTE
dw .Frameset_GSIntroMagikarp ; SPRITE_ANIM_FRAMESET_GS_INTRO_MAGIKARP
dw .Frameset_UnusedIntroAerodactyl ; SPRITE_ANIM_FRAMESET_UNUSED_INTRO_AERODACTYL
dw .Frameset_GSIntroLapras ; SPRITE_ANIM_FRAMESET_GS_INTRO_LAPRAS
dw .Frameset_GSIntroNote ; SPRITE_ANIM_FRAMESET_GS_INTRO_NOTE
dw .Frameset_GSIntroSmallerNote ; SPRITE_ANIM_FRAMESET_GS_INTRO_SMALLER_NOTE
dw .Frameset_GSIntroJigglypuff ; SPRITE_ANIM_FRAMESET_GS_INTRO_JIGGLYPUFF
dw .Frameset_GSIntroPikachu ; SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU
dw .Frameset_GSIntroPikachu2 ; SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_2
dw .Frameset_GSIntroPikachuTail ; SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_TAIL
dw .Frameset_GSIntroPikachuTail2 ; SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_TAIL_2
dw .Frameset_GSIntroFireball ; SPRITE_ANIM_FRAMESET_GS_INTRO_FIREBALL
dw .Frameset_GSIntroBlastoise ; SPRITE_ANIM_FRAMESET_GS_INTRO_BLASTOISE
dw .Frameset_GSIntroVenusaur ; SPRITE_ANIM_FRAMESET_GS_INTRO_VENUSAUR
dw .Frameset_GSTitleFlameNote ; SPRITE_ANIM_FRAMESET_GS_TITLE_FLAME_NOTE
dw .Frameset_GSIntroPikachu ; SPRITE_ANIM_FRAMESET_GS_MINIGAME_PIKACHU
dw .Frameset_GSIntroPikachu2 ; SPRITE_ANIM_FRAMESET_GS_MINIGAME_PIKACHU_2
dw .Frameset_GSIntroPikachu3 ; SPRITE_ANIM_FRAMESET_GS_MINIGAME_PIKACHU_3
dw .Frameset_MinigamePicrossCursor ; SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_CURSOR
dw .Frameset_MinigamePicrossDust ; SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_DUST
dw .Frameset_MinigamePicrossGold1 ; SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_GOLD
dw .Frameset_MinigamePicrossGold2 ; SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_GOLD_2
dw .Frameset_PokedexCursor ; SPRITE_ANIM_FRAMESET_POKEDEX_CURSOR
dw .Frameset_PokedexSlowpoke1 ; SPRITE_ANIM_FRAMESET_POKEDEX_SLOWPOKE
dw .Frameset_PokedexSlowpoke2 ; SPRITE_ANIM_FRAMESET_POKEDEX_SLOWPOKE_2
dw .Frameset_PokedexSlowpoke3 ; SPRITE_ANIM_FRAMESET_POKEDEX_SLOWPOKE_3
dw .Frameset_TextEntryCursor ; SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR
dw .Frameset_GSGameFreakLogo ; SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO
dw .Frameset_GSGameFreakLogoStar ; SPRITE_ANIM_FRAMESET_GS_GAMEFREAK_LOGO_STAR
dw .Frameset_GSGameFreakLogoSparkle ; SPRITE_ANIM_FRAMESET_GS_GAMEFREAK_LOGO_SPARKLE
dw .Frameset_SlotsGolem ; SPRITE_ANIM_FRAMESET_SLOTS_GOLEM
dw .Frameset_SlotsChansey ; SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY
dw .Frameset_SlotsChansey2 ; SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY_2
dw .Frameset_SlotsEgg ; SPRITE_ANIM_FRAMESET_SLOTS_EGG
dw .Frameset_Walk ; SPRITE_ANIM_FRAMESET_WALK
dw .Frameset_StillCursor ; SPRITE_ANIM_FRAMESET_STILL_CURSOR
dw .Frameset_TradePokeBall ; SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL
dw .Frameset_TradePokeBallWobble ; SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL_WOBBLE
dw .Frameset_TradePoof ; SPRITE_ANIM_FRAMESET_TRADE_POOF
dw .Frameset_TradeTubeBulge ; SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE
dw .Frameset_TrademonIcon ; SPRITE_ANIM_FRAMESET_TRADEMON_ICON
dw .Frameset_TrademonBubble ; SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE
dw .Frameset_Unknown ; SPRITE_ANIM_FRAMESET_UNKNOWN
dw .Frameset_RadioFrequencyMeter ; SPRITE_ANIM_FRAMESET_RADIO_FREQUENCY_METER
.Frameset_00:
oamframe SPRITE_ANIM_OAMSET_WALK_1, 32
oamend
.Frameset_PartyMon:
oamframe SPRITE_ANIM_OAMSET_WALK_1, 8
oamframe SPRITE_ANIM_OAMSET_WALK_2, 8
oamrestart
.Frameset_Walk:
oamframe SPRITE_ANIM_OAMSET_WALK_1, 8
oamframe SPRITE_ANIM_OAMSET_WALK_2, 8
oamframe SPRITE_ANIM_OAMSET_WALK_1, 8
oamframe SPRITE_ANIM_OAMSET_WALK_2, 8, OAM_X_FLIP
oamrestart
.Frameset_GSIntroBubble:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_1, 8
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_2, 8
oamrestart
.Frameset_GSIntroOmanyte:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_OMANYTE_1, 8
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_OMANYTE_2, 8
oamrestart
.Frameset_GSIntroMagikarp:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_1, 1, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_2, 1, OAM_X_FLIP
oamrestart
.Frameset_UnusedIntroAerodactyl:
oamframe SPRITE_ANIM_OAMSET_UNUSED_INTRO_AERODACTYL, 7, OAM_X_FLIP
oamend
.Frameset_GSIntroLapras:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_1, 7
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_2, 7
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_3, 15
oamrestart
.Frameset_GSIntroNote:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_NOTE, 8
oamend
.Frameset_GSIntroSmallerNote:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_SMALLER_NOTE, 8
oamend
.Frameset_GSIntroJigglypuff:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1, 23, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_2, 3, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_3, 7
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_2, 3
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1, 23
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_2, 3
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_3, 7
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_2, 3, OAM_X_FLIP
oamrestart
.Frameset_GSIntroPikachu:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_1, 3
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_2, 3
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_3, 3
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_4, 3
oamrestart
.Frameset_GSIntroPikachu2:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_2, 8
oamend
.Frameset_GSIntroPikachuTail:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_1, 3
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_2, 3
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_3, 3
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_2, 3
oamrestart
.Frameset_GSIntroPikachuTail2:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_1, 31
oamend
.Frameset_GSIntroFireball:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_SMALL_FIREBALL, 1
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_MED_FIREBALL, 1
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_BIG_FIREBALL, 1
oamdelete
.Frameset_GSIntroBlastoise:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_BLASTOISE, 24
oamdelete
.Frameset_GSIntroVenusaur:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_VENUSAUR, 24, OAM_X_FLIP
oamdelete
.Frameset_GSTitleFlameNote:
oamframe SPRITE_ANIM_OAMSET_GS_TITLE_FLAME_NOTE_1, 3
oamframe SPRITE_ANIM_OAMSET_GS_TITLE_FLAME_NOTE_2, 3
oamrestart
.Frameset_GSIntroPikachu3:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_2, 0
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_3, 15
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_4, 15
oamend
.Frameset_MinigamePicrossCursor:
oamframe SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_CURSOR, 8
oamwait 8
oamrestart
.Frameset_MinigamePicrossDust:
oamframe SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_DUST_1, 1
oamframe SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_DUST_2, 1
oamdelete
.Frameset_MinigamePicrossGold2:
oamframe SPRITE_ANIM_OAMSET_WALK_2, 3, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_WALK_1, 3
oamframe SPRITE_ANIM_OAMSET_WALK_2, 3, OAM_X_FLIP
; fallthrough
.Frameset_MinigamePicrossGold1:
oamframe SPRITE_ANIM_OAMSET_WALK_1, 8
oamend
.Frameset_PokedexCursor:
oamframe SPRITE_ANIM_OAMSET_POKEDEX_CURSOR, 1
oamwait 1
oamrestart
.Frameset_PokedexSlowpoke1:
oamframe SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_1, 3
oamframe SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_2, 3
oamframe SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_3, 3
oamframe SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_4, 3
oamrestart
.Frameset_PokedexSlowpoke2:
oamframe SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_5, 32
oamdelete
.Frameset_PokedexSlowpoke3:
oamframe SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_1, 32
oamdelete
.Frameset_TextEntryCursor:
oamframe SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR, 1
oamwait 1
oamrestart
.Frameset_GSGameFreakLogo:
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO, 8
oamend
.Frameset_GSGameFreakLogoStar:
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_STAR, 3
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_STAR, 3, OAM_Y_FLIP
oamrestart
.Frameset_GSGameFreakLogoSparkle:
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_1, 2
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_2, 2
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_3, 2
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_2, 2
oamrestart
.Frameset_SlotsGolem:
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1, 7, OAM_Y_FLIP
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2, 7, OAM_X_FLIP
oamrestart
.Frameset_SlotsChansey:
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3, 7
oamrestart
.Frameset_SlotsChansey2:
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1, 7
oamend
.Frameset_SlotsEgg:
oamframe SPRITE_ANIM_OAMSET_SLOTS_EGG, 20
oamend
.Frameset_StillCursor:
oamframe SPRITE_ANIM_OAMSET_STILL_CURSOR, 32
oamend
.Frameset_TradePokeBall:
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1, 32
oamend
.Frameset_TradePokeBallWobble:
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1, 3
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2, 3
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1, 3
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2, 3, OAM_X_FLIP
oamrestart
.Frameset_TradePoof
oamframe SPRITE_ANIM_OAMSET_TRADE_POOF_1, 4
oamframe SPRITE_ANIM_OAMSET_TRADE_POOF_2, 4
oamframe SPRITE_ANIM_OAMSET_TRADE_POOF_3, 4
oamdelete
.Frameset_TradeTubeBulge:
oamframe SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_1, 3
oamframe SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_2, 3
oamrestart
.Frameset_TrademonIcon:
oamframe SPRITE_ANIM_OAMSET_TRADEMON_ICON_1, 7
oamframe SPRITE_ANIM_OAMSET_TRADEMON_ICON_2, 7
oamrestart
.Frameset_TrademonBubble:
oamframe SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE, 32
oamend
.Frameset_Unknown:
oamframe SPRITE_ANIM_OAMSET_UNKNOWN_41, 32
oamend
.Frameset_RadioFrequencyMeter:
oamframe SPRITE_ANIM_OAMSET_RADIO_FREQUENCY_METER, 32
oamend

61
data/sprite_anims/gfx.inc Normal file
View File

@ -0,0 +1,61 @@
MACRO sprite_anim_obj_gfx
; # tiles, gfx pointer
db \1
dbw \2, \3
ENDM
; entries correspond to SPRITE_ANIM_DICT_* constants
SpriteAnimGFX:
; # tiles, gfx bank, gfx pointer
; (good chunk of pointers were dummied out to either .DeletedGFX or MenuMonIconGFX)
sprite_anim_obj_gfx 16, $31, MenuMonIconGFX
sprite_anim_obj_gfx 8, BANK(PoliwagIcon), PoliwagIcon ; SPRITE_ANIM_DICT_POLIWAG_ICON
sprite_anim_obj_gfx 8, BANK(JigglypuffIcon), JigglypuffIcon ; SPRITE_ANIM_DICT_JIGGLYPUFF_ICON
sprite_anim_obj_gfx 8, BANK(DiglettIcon), DiglettIcon ; SPRITE_ANIM_DICT_DIGLETT_ICON
sprite_anim_obj_gfx 8, BANK(PikachuIcon), PikachuIcon ; SPRITE_ANIM_DICT_PIKACHU_ICON
sprite_anim_obj_gfx 8, BANK(StaryuIcon), StaryuIcon ; SPRITE_ANIM_DICT_STARYU_ICON
sprite_anim_obj_gfx 8, BANK(MagikarpIcon), MagikarpIcon ; SPRITE_ANIM_DICT_MAGIKARP_ICON
sprite_anim_obj_gfx 8, BANK(PidgeyIcon), PidgeyIcon ; SPRITE_ANIM_DICT_PIDGEY_ICON
sprite_anim_obj_gfx 8, BANK(RhydonIcon), RhydonIcon ; SPRITE_ANIM_DICT_RHYDON_ICON
sprite_anim_obj_gfx 8, BANK(ClefairyIcon), ClefairyIcon ; SPRITE_ANIM_DICT_CLEFAIRY_ICON
sprite_anim_obj_gfx 8, BANK(OddishIcon), OddishIcon ; SPRITE_ANIM_DICT_ODDISH_ICON
sprite_anim_obj_gfx 8, BANK(MushiIcon), MushiIcon ; SPRITE_ANIM_DICT_MUSHI_ICON
sprite_anim_obj_gfx 8, BANK(GengarIcon), GengarIcon ; SPRITE_ANIM_DICT_GENGAR_ICON
sprite_anim_obj_gfx 8, BANK(LaprasIcon), LaprasIcon ; SPRITE_ANIM_DICT_LAPRAS_ICON
sprite_anim_obj_gfx 8, BANK(MrMimeIcon), MrMimeIcon ; SPRITE_ANIM_DICT_MRMIME_ICON
sprite_anim_obj_gfx 8, BANK(LokonIcon), LokonIcon ; SPRITE_ANIM_DICT_LOKON_ICON
sprite_anim_obj_gfx 8, BANK(TaurosIcon), TaurosIcon ; SPRITE_ANIM_DICT_TAUROS_ICON
sprite_anim_obj_gfx 8, BANK(ShellderIcon), ShellderIcon ; SPRITE_ANIM_DICT_SHELLDER_ICON
sprite_anim_obj_gfx 8, BANK(DittoIcon), DittoIcon ; SPRITE_ANIM_DICT_DITTO_ICON
sprite_anim_obj_gfx 8, BANK(OnixIcon), OnixIcon ; SPRITE_ANIM_DICT_ONIX_ICON
sprite_anim_obj_gfx 8, BANK(VoltorbIcon), VoltorbIcon ; SPRITE_ANIM_DICT_VOLTORB_ICON
sprite_anim_obj_gfx 8, BANK(SquirtleIcon), SquirtleIcon ; SPRITE_ANIM_DICT_SQUIRTLE_ICON
sprite_anim_obj_gfx 8, BANK(BulbasaurIcon), BulbasaurIcon ; SPRITE_ANIM_DICT_BULBASAUR_ICON
sprite_anim_obj_gfx 8, BANK(CharmanderIcon), CharmanderIcon ; SPRITE_ANIM_DICT_CHARMANDER_ICON
sprite_anim_obj_gfx 8, BANK(WeedleIcon), WeedleIcon ; SPRITE_ANIM_DICT_WEEDLE_ICON
sprite_anim_obj_gfx 8, BANK(AnnonIcon), AnnonIcon ; SPRITE_ANIM_DICT_ANNON_ICON
sprite_anim_obj_gfx 8, BANK(GeodudeIcon), GeodudeIcon ; SPRITE_ANIM_DICT_GEODUDE_ICON
sprite_anim_obj_gfx 8, BANK(MachopIcon), MachopIcon ; SPRITE_ANIM_DICT_MACHOP_ICON
sprite_anim_obj_gfx 8, BANK(EggIcon), EggIcon ; SPRITE_ANIM_DICT_EGG_ICON
sprite_anim_obj_gfx 8, BANK(TentacoolIcon), TentacoolIcon ; SPRITE_ANIM_DICT_TENTACOOL_ICON
sprite_anim_obj_gfx 8, BANK(ButterfreeIcon), ButterfreeIcon ; SPRITE_ANIM_DICT_BUTTERFREE_ICON
sprite_anim_obj_gfx 8, BANK(ZubatIcon), ZubatIcon ; SPRITE_ANIM_DICT_ZUBAT_ICON
sprite_anim_obj_gfx 8, BANK(SnorlaxIcon), SnorlaxIcon ; SPRITE_ANIM_DICT_SNORLAX_ICON
sprite_anim_obj_gfx 128, $01, .DeletedGFX ; SPRITE_ANIM_DICT_GS_INTRO
sprite_anim_obj_gfx 128, $01, .DeletedGFX ; SPRITE_ANIM_DICT_GS_INTRO_2
sprite_anim_obj_gfx 128, $01, .DeletedGFX ; SPRITE_ANIM_DICT_GS_INTRO_3
sprite_anim_obj_gfx 128, $01, .DeletedGFX ; SPRITE_ANIM_DICT_TITLE_FLAME_NOTE
sprite_anim_obj_gfx 16, $37, .DeletedGFX ; SPRITE_ANIM_DICT_MINIGAME_PICROSS
sprite_anim_obj_gfx 16, $11, .DeletedGFX ; SPRITE_ANIM_DICT_TEXT_CURSOR
sprite_anim_obj_gfx 16, $39, .DeletedGFX ; SPRITE_ANIM_DICT_GS_SPLASH
sprite_anim_obj_gfx 16, $24, .DeletedGFX ; SPRITE_ANIM_DICT_SLOTS
sprite_anim_obj_gfx 16, $21, .DeletedGFX ; SPRITE_ANIM_DICT_ARROW_CURSOR
; Unused placeholders
sprite_anim_obj_gfx 16, $31, MenuMonIconGFX
sprite_anim_obj_gfx 16, $31, MenuMonIconGFX
sprite_anim_obj_gfx 16, $31, MenuMonIconGFX
sprite_anim_obj_gfx 16, $31, MenuMonIconGFX
sprite_anim_obj_gfx 16, $31, MenuMonIconGFX
.DeletedGFX

568
data/sprite_anims/oam.inc Normal file
View File

@ -0,0 +1,568 @@
MACRO spriteanimoam
; vtile offset, data pointer
db \1
dw \2
ENDM
SpriteAnimOAMData:
spriteanimoam $00, .OAMData_Walk ; SPRITE_ANIM_OAMSET_WALK_1
spriteanimoam $04, .OAMData_Walk ; SPRITE_ANIM_OAMSET_WALK_2
spriteanimoam $4c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_1
spriteanimoam $5c, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_BUBBLE_2
spriteanimoam $6c, .OAMData_GSIntroOmanyte ; SPRITE_ANIM_OAMSET_GS_INTRO_OMANYTE_1
spriteanimoam $6e, .OAMData_GSIntroOmanyte ; SPRITE_ANIM_OAMSET_GS_INTRO_OMANYTE_2
spriteanimoam $2d, .OAMData_GSIntroMagikarp ; SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_1
spriteanimoam $4d, .OAMData_GSIntroMagikarp ; SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_2
spriteanimoam $60, .OAMData_UnusedIntroAerodactyl ; SPRITE_ANIM_OAMSET_UNUSED_INTRO_AERODACTYL
spriteanimoam $00, .OAMData_GSIntroLapras1 ; SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_1
spriteanimoam $00, .OAMData_GSIntroLapras2 ; SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_2
spriteanimoam $06, .OAMData_GSIntroLapras3 ; SPRITE_ANIM_OAMSET_GS_INTRO_LAPRAS_3
spriteanimoam $0c, .OAMData_GSIntroNote ; SPRITE_ANIM_OAMSET_GS_INTRO_NOTE
spriteanimoam $0d, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_INTRO_SMALLER_NOTE
spriteanimoam $00, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1
spriteanimoam $04, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_2
spriteanimoam $08, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_3
spriteanimoam $40, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_1
spriteanimoam $44, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_2
spriteanimoam $48, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_3
spriteanimoam $4c, .OAMData_GSIntroJigglypuffPikachu ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_4
spriteanimoam $80, .OAMData_GSIntroPikachuTail ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_1
spriteanimoam $85, .OAMData_GSIntroPikachuTail ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_2
spriteanimoam $8a, .OAMData_GSIntroPikachuTail ; SPRITE_ANIM_OAMSET_GS_INTRO_PIKACHU_TAIL_3
spriteanimoam $00, .OAMData_GSIntroSmallFireball ; SPRITE_ANIM_OAMSET_GS_INTRO_SMALL_FIREBALL
spriteanimoam $01, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_GS_INTRO_MED_FIREBALL
spriteanimoam $09, .OAMData_GSIntroBigFireball ; SPRITE_ANIM_OAMSET_GS_INTRO_BIG_FIREBALL
spriteanimoam $10, .OAMData_GSIntroVenusaurBlastoise ; SPRITE_ANIM_OAMSET_GS_INTRO_BLASTOISE
spriteanimoam $40, .OAMData_GSIntroVenusaurBlastoise ; SPRITE_ANIM_OAMSET_GS_INTRO_VENUSAUR
spriteanimoam $00, .OAMData_Walk ; SPRITE_ANIM_OAMSET_GS_TITLE_FLAME_NOTE_1
spriteanimoam $04, .OAMData_Walk ; SPRITE_ANIM_OAMSET_GS_TITLE_FLAME_NOTE_2
spriteanimoam $00, .OAMData_MinigamePicrossCursor ; SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_CURSOR
spriteanimoam $01, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_DUST_1
spriteanimoam $02, .OAMData_Walk ; SPRITE_ANIM_OAMSET_MINIGAME_PICROSS_DUST_1
spriteanimoam $04, .OAMData_PokedexCursor ; SPRITE_ANIM_OAMSET_POKEDEX_CURSOR
spriteanimoam $00, .OAMData_PokedexSlowpoke1 ; SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_1
spriteanimoam $00, .OAMData_PokedexSlowpoke2 ; SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_2
spriteanimoam $00, .OAMData_PokedexSlowpoke3 ; SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_3
spriteanimoam $00, .OAMData_PokedexSlowpoke4 ; SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_4
spriteanimoam $00, .OAMData_PokedexSlowpoke5 ; SPRITE_ANIM_OAMSET_POKEDEX_SLOWPOKE_5
spriteanimoam $00, .OAMData_TextEntryCursor ; SPRITE_ANIM_OAMSET_TEXT_ENTRY_CURSOR
spriteanimoam $00, .OAMData_GSGameFreakLogo ; SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO
spriteanimoam $0f, .OAMData_GSGameFreakLogoStar ; SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_STAR
spriteanimoam $11, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_1
spriteanimoam $12, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_2
spriteanimoam $13, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_SPARKLE_3
spriteanimoam $00, .OAMData_SlotsGolem ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1
spriteanimoam $08, .OAMData_SlotsGolem ; SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2
spriteanimoam $10, .OAMData_SlotsChansey1 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_1
spriteanimoam $10, .OAMData_SlotsChansey2 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_2
spriteanimoam $10, .OAMData_SlotsChansey3 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_3
spriteanimoam $10, .OAMData_SlotsChansey4 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_4
spriteanimoam $10, .OAMData_SlotsChansey5 ; SPRITE_ANIM_OAMSET_SLOTS_CHANSEY_5
spriteanimoam $3a, .OAMData_1x1_Palette0 ; SPRITE_ANIM_OAMSET_SLOTS_EGG
spriteanimoam $00, .OAMData_Walk ; SPRITE_ANIM_OAMSET_STILL_CURSOR
spriteanimoam $00, .OAMData_TradePokeBall1 ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1
spriteanimoam $02, .OAMData_WalkPriority ; SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2
spriteanimoam $06, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_1
spriteanimoam $0a, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_2
spriteanimoam $0e, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADE_POOF_3
spriteanimoam $12, .OAMData_GSIntroSmallFireball ; SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_1
spriteanimoam $13, .OAMData_GSIntroSmallFireball ; SPRITE_ANIM_OAMSET_TRADE_TUBE_BULGE_2
spriteanimoam $00, .OAMData_Walk ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_1
spriteanimoam $04, .OAMData_Walk ; SPRITE_ANIM_OAMSET_TRADEMON_ICON_2
spriteanimoam $10, .OAMData_TradePoofBubble ; SPRITE_ANIM_OAMSET_TRADEMON_BUBBLE
spriteanimoam $00, .OAMData_Unknown1 ; SPRITE_ANIM_OAMSET_UNKNOWN_41
spriteanimoam $00, .OAMData_RadioFrequencyMeter ; SPRITE_ANIM_OAMSET_RADIO_FREQUENCY_METER
.OAMData_1x1_Palette0:
db 1
dbsprite -1, -1, 4, 4, $00, 0
.OAMData_GSIntroOmanyte:
db 4
dbsprite -1, -1, 0, 0, $00, 0
dbsprite 0, -1, 0, 0, $01, 0
dbsprite -1, 0, 0, 0, $10, 0
dbsprite 0, 0, 0, 0, $11, 0
.OAMData_GSGameFreakLogoStar:
db 4
dbsprite -1, -1, 0, 0, $00, 0
dbsprite 0, -1, 0, 0, $00, 0 | X_FLIP
dbsprite -1, 0, 0, 0, $01, 0
dbsprite 0, 0, 0, 0, $01, 0 | X_FLIP
.OAMData_TradePokeBall1:
db 4
dbsprite -1, -1, 0, 0, $00, 0 | PRIORITY
dbsprite 0, -1, 0, 0, $00, 0 | X_FLIP | PRIORITY
dbsprite -1, 0, 0, 0, $01, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $01, 0 | X_FLIP | PRIORITY
.OAMData_GSIntroSmallFireball:
db 4
dbsprite -1, -1, 0, 0, $00, 0
dbsprite 0, -1, 0, 0, $00, 0 | X_FLIP
dbsprite -1, 0, 0, 0, $00, 0 | Y_FLIP
dbsprite 0, 0, 0, 0, $00, 0 | X_FLIP | Y_FLIP
; Unreferenced in pokegold
.OAMData_Unknown1:
db 4
dbsprite -1, -1, 0, 0, $00, 0 | PRIORITY
dbsprite 0, -1, 0, 0, $00, 0 | X_FLIP | PRIORITY
dbsprite -1, 0, 0, 0, $00, 0 | Y_FLIP | PRIORITY
dbsprite 0, 0, 0, 0, $00, 0 | X_FLIP | Y_FLIP | PRIORITY
.OAMData_TradePoofBubble:
db 16
dbsprite -2, -2, 0, 0, $00, 0
dbsprite -1, -2, 0, 0, $01, 0
dbsprite -2, -1, 0, 0, $02, 0
dbsprite -1, -1, 0, 0, $03, 0
dbsprite 0, -2, 0, 0, $01, 0 | X_FLIP
dbsprite 1, -2, 0, 0, $00, 0 | X_FLIP
dbsprite 0, -1, 0, 0, $03, 0 | X_FLIP
dbsprite 1, -1, 0, 0, $02, 0 | X_FLIP
dbsprite -2, 0, 0, 0, $02, 0 | Y_FLIP
dbsprite -1, 0, 0, 0, $03, 0 | Y_FLIP
dbsprite -2, 1, 0, 0, $00, 0 | Y_FLIP
dbsprite -1, 1, 0, 0, $01, 0 | Y_FLIP
dbsprite 0, 0, 0, 0, $03, 0 | X_FLIP | Y_FLIP
dbsprite 1, 0, 0, 0, $02, 0 | X_FLIP | Y_FLIP
dbsprite 0, 1, 0, 0, $01, 0 | X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 0, $00, 0 | X_FLIP | Y_FLIP
.OAMData_GSIntroBigFireball:
db 36
dbsprite -3, -3, 0, 0, $00, 0
dbsprite -2, -3, 0, 0, $01, 0
dbsprite -1, -3, 0, 0, $02, 0
dbsprite -3, -2, 0, 0, $03, 0
dbsprite -2, -2, 0, 0, $04, 0
dbsprite -1, -2, 0, 0, $05, 0
dbsprite -3, -1, 0, 0, $06, 0
dbsprite -2, -1, 0, 0, $05, 0
dbsprite -1, -1, 0, 0, $05, 0
dbsprite 0, -3, 0, 0, $02, 0 | X_FLIP
dbsprite 1, -3, 0, 0, $01, 0 | X_FLIP
dbsprite 2, -3, 0, 0, $00, 0 | X_FLIP
dbsprite 0, -2, 0, 0, $05, 0 | X_FLIP
dbsprite 1, -2, 0, 0, $04, 0 | X_FLIP
dbsprite 2, -2, 0, 0, $03, 0 | X_FLIP
dbsprite 0, -1, 0, 0, $05, 0 | X_FLIP
dbsprite 1, -1, 0, 0, $05, 0 | X_FLIP
dbsprite 2, -1, 0, 0, $06, 0 | X_FLIP
dbsprite -3, 0, 0, 0, $06, 0 | Y_FLIP
dbsprite -2, 0, 0, 0, $05, 0 | Y_FLIP
dbsprite -1, 0, 0, 0, $05, 0 | Y_FLIP
dbsprite -3, 1, 0, 0, $03, 0 | Y_FLIP
dbsprite -2, 1, 0, 0, $04, 0 | Y_FLIP
dbsprite -1, 1, 0, 0, $05, 0 | Y_FLIP
dbsprite -3, 2, 0, 0, $00, 0 | Y_FLIP
dbsprite -2, 2, 0, 0, $01, 0 | Y_FLIP
dbsprite -1, 2, 0, 0, $02, 0 | Y_FLIP
dbsprite 0, 0, 0, 0, $05, 0 | X_FLIP | Y_FLIP
dbsprite 1, 0, 0, 0, $05, 0 | X_FLIP | Y_FLIP
dbsprite 2, 0, 0, 0, $06, 0 | X_FLIP | Y_FLIP
dbsprite 0, 1, 0, 0, $05, 0 | X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 0, $04, 0 | X_FLIP | Y_FLIP
dbsprite 2, 1, 0, 0, $03, 0 | X_FLIP | Y_FLIP
dbsprite 0, 2, 0, 0, $02, 0 | X_FLIP | Y_FLIP
dbsprite 1, 2, 0, 0, $01, 0 | X_FLIP | Y_FLIP
dbsprite 2, 2, 0, 0, $00, 0 | X_FLIP | Y_FLIP
.OAMData_GSIntroJigglypuffPikachu:
db 16
dbsprite -2, -2, 0, 0, $00, 0
dbsprite -1, -2, 0, 0, $01, 0
dbsprite 0, -2, 0, 0, $02, 0
dbsprite 1, -2, 0, 0, $03, 0
dbsprite -2, -1, 0, 0, $10, 0
dbsprite -1, -1, 0, 0, $11, 0
dbsprite 0, -1, 0, 0, $12, 0
dbsprite 1, -1, 0, 0, $13, 0
dbsprite -2, 0, 0, 0, $20, 0
dbsprite -1, 0, 0, 0, $21, 0
dbsprite 0, 0, 0, 0, $22, 0
dbsprite 1, 0, 0, 0, $23, 0
dbsprite -2, 1, 0, 0, $30, 0
dbsprite -1, 1, 0, 0, $31, 0
dbsprite 0, 1, 0, 0, $32, 0
dbsprite 1, 1, 0, 0, $33, 0
; Known as .OAMData_Unknown2 in pokegold
.OAMData_GSIntroVenusaurBlastoise:
db 36
dbsprite -3, -3, 0, 0, $00, 0
dbsprite -2, -3, 0, 0, $01, 0
dbsprite -1, -3, 0, 0, $02, 0
dbsprite 0, -3, 0, 0, $03, 0
dbsprite 1, -3, 0, 0, $04, 0
dbsprite 2, -3, 0, 0, $05, 0
dbsprite -3, -2, 0, 0, $06, 0
dbsprite -2, -2, 0, 0, $07, 0
dbsprite -1, -2, 0, 0, $08, 0
dbsprite 0, -2, 0, 0, $09, 0
dbsprite 1, -2, 0, 0, $0a, 0
dbsprite 2, -2, 0, 0, $0b, 0
dbsprite -3, -1, 0, 0, $0c, 0
dbsprite -2, -1, 0, 0, $0d, 0
dbsprite -1, -1, 0, 0, $0e, 0
dbsprite 0, -1, 0, 0, $0f, 0
dbsprite 1, -1, 0, 0, $10, 0
dbsprite 2, -1, 0, 0, $11, 0
dbsprite -3, 0, 0, 0, $12, 0
dbsprite -2, 0, 0, 0, $13, 0
dbsprite -1, 0, 0, 0, $14, 0
dbsprite 0, 0, 0, 0, $15, 0
dbsprite 1, 0, 0, 0, $16, 0
dbsprite 2, 0, 0, 0, $17, 0
dbsprite -3, 1, 0, 0, $18, 0
dbsprite -2, 1, 0, 0, $19, 0
dbsprite -1, 1, 0, 0, $1a, 0
dbsprite 0, 1, 0, 0, $1b, 0
dbsprite 1, 1, 0, 0, $1c, 0
dbsprite 2, 1, 0, 0, $1d, 0
dbsprite -3, 2, 0, 0, $1e, 0
dbsprite -2, 2, 0, 0, $1f, 0
dbsprite -1, 2, 0, 0, $20, 0
dbsprite 0, 2, 0, 0, $21, 0
dbsprite 1, 2, 0, 0, $22, 0
dbsprite 2, 2, 0, 0, $23, 0
.OAMData_Walk:
db 4
dbsprite -1, -1, 0, 0, $00, 0
dbsprite 0, -1, 0, 0, $01, 0
dbsprite -1, 0, 0, 0, $02, 0
dbsprite 0, 0, 0, 0, $03, 0
.OAMData_WalkPriority:
db 4
dbsprite -1, -1, 0, 0, $00, 0 | PRIORITY
dbsprite 0, -1, 0, 0, $01, 0 | PRIORITY
dbsprite -1, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $03, 0 | PRIORITY
.OAMData_GSIntroMagikarp:
db 6
dbsprite -2, -1, 4, 0, $00, 0
dbsprite -1, -1, 4, 0, $01, 0
dbsprite 0, -1, 4, 0, $02, 0
dbsprite -2, 0, 4, 0, $10, 0
dbsprite -1, 0, 4, 0, $11, 0
dbsprite 0, 0, 4, 0, $12, 0
.OAMData_UnusedIntroAerodactyl:
db 10
dbsprite -2, -2, 0, 4, $00, 0
dbsprite -1, -2, 0, 4, $01, 0
dbsprite 0, -2, 0, 4, $02, 0
dbsprite 1, -2, 0, 4, $03, 0
dbsprite -2, -1, 0, 4, $04, 0
dbsprite -1, -1, 0, 4, $05, 0
dbsprite 0, -1, 0, 4, $06, 0
dbsprite -2, 0, 0, 4, $08, 0
dbsprite -1, 0, 0, 4, $09, 0
dbsprite 0, 0, 0, 4, $0a, 0
.OAMData_GSIntroLapras1:
db 27
dbsprite -3, -3, 0, 0, $00, 0 | PRIORITY
dbsprite -2, -3, 0, 0, $01, 0 | PRIORITY
dbsprite -1, -3, 0, 0, $02, 0 | PRIORITY
dbsprite -3, -2, 0, 0, $10, 0 | PRIORITY
dbsprite -2, -2, 0, 0, $11, 0 | PRIORITY
dbsprite -1, -2, 0, 0, $12, 0 | PRIORITY
dbsprite -3, -1, 0, 0, $20, 0 | PRIORITY
dbsprite -2, -1, 0, 0, $21, 0 | PRIORITY
dbsprite -1, -1, 0, 0, $22, 0 | PRIORITY
dbsprite 0, -1, 0, 0, $23, 0 | PRIORITY
dbsprite -3, 0, 0, 0, $30, 0 | PRIORITY
dbsprite -2, 0, 0, 0, $31, 0 | PRIORITY
dbsprite -1, 0, 0, 0, $32, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $33, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $34, 0 | PRIORITY
dbsprite -3, 1, 0, 0, $40, 0 | PRIORITY
dbsprite -2, 1, 0, 0, $41, 0 | PRIORITY
dbsprite -1, 1, 0, 0, $42, 0 | PRIORITY
dbsprite 0, 1, 0, 0, $43, 0 | PRIORITY
dbsprite 1, 1, 0, 0, $44, 0 | PRIORITY
dbsprite 2, 1, 0, 0, $45, 0 | PRIORITY
dbsprite -3, 2, 0, 0, $50, 0 | PRIORITY
dbsprite -2, 2, 0, 0, $51, 0 | PRIORITY
dbsprite -1, 2, 0, 0, $52, 0 | PRIORITY
dbsprite 0, 2, 0, 0, $53, 0 | PRIORITY
dbsprite 1, 2, 0, 0, $54, 0 | PRIORITY
dbsprite 2, 2, 0, 0, $55, 0 | PRIORITY
.OAMData_GSIntroLapras2:
db 27
dbsprite -3, -3, 0, 0, $0d, 0 | PRIORITY
dbsprite -2, -3, 0, 0, $0e, 0 | PRIORITY
dbsprite -1, -3, 0, 0, $0f, 0 | PRIORITY
dbsprite -3, -2, 0, 0, $1d, 0 | PRIORITY
dbsprite -2, -2, 0, 0, $1e, 0 | PRIORITY
dbsprite -1, -2, 0, 0, $1f, 0 | PRIORITY
dbsprite -3, -1, 0, 0, $20, 0 | PRIORITY
dbsprite -2, -1, 0, 0, $21, 0 | PRIORITY
dbsprite -1, -1, 0, 0, $22, 0 | PRIORITY
dbsprite 0, -1, 0, 0, $23, 0 | PRIORITY
dbsprite -3, 0, 0, 0, $30, 0 | PRIORITY
dbsprite -2, 0, 0, 0, $31, 0 | PRIORITY
dbsprite -1, 0, 0, 0, $32, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $33, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $34, 0 | PRIORITY
dbsprite -3, 1, 0, 0, $40, 0 | PRIORITY
dbsprite -2, 1, 0, 0, $41, 0 | PRIORITY
dbsprite -1, 1, 0, 0, $42, 0 | PRIORITY
dbsprite 0, 1, 0, 0, $43, 0 | PRIORITY
dbsprite 1, 1, 0, 0, $44, 0 | PRIORITY
dbsprite 2, 1, 0, 0, $45, 0 | PRIORITY
dbsprite -3, 2, 0, 0, $50, 0 | PRIORITY
dbsprite -2, 2, 0, 0, $51, 0 | PRIORITY
dbsprite -1, 2, 0, 0, $52, 0 | PRIORITY
dbsprite 0, 2, 0, 0, $53, 0 | PRIORITY
dbsprite 1, 2, 0, 0, $54, 0 | PRIORITY
dbsprite 2, 2, 0, 0, $55, 0 | PRIORITY
.OAMData_GSIntroLapras3:
db 29
dbsprite -3, -3, 0, 0, $00, 0 | PRIORITY
dbsprite -2, -3, 0, 0, $01, 0 | PRIORITY
dbsprite -1, -3, 0, 0, $02, 0 | PRIORITY
dbsprite 0, -3, 0, 0, $03, 0 | PRIORITY
dbsprite -3, -2, 0, 0, $10, 0 | PRIORITY
dbsprite -2, -2, 0, 0, $11, 0 | PRIORITY
dbsprite -1, -2, 0, 0, $12, 0 | PRIORITY
dbsprite 0, -2, 0, 0, $13, 0 | PRIORITY
dbsprite -3, -1, 0, 0, $20, 0 | PRIORITY
dbsprite -2, -1, 0, 0, $21, 0 | PRIORITY
dbsprite -1, -1, 0, 0, $22, 0 | PRIORITY
dbsprite 0, -1, 0, 0, $23, 0 | PRIORITY
dbsprite 1, -1, 0, 0, $24, 0 | PRIORITY
dbsprite -3, 0, 0, 0, $30, 0 | PRIORITY
dbsprite -2, 0, 0, 0, $31, 0 | PRIORITY
dbsprite -1, 0, 0, 0, $32, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $33, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $34, 0 | PRIORITY
dbsprite -3, 1, 0, 0, $40, 0 | PRIORITY
dbsprite -2, 1, 0, 0, $41, 0 | PRIORITY
dbsprite -1, 1, 0, 0, $42, 0 | PRIORITY
dbsprite 0, 1, 0, 0, $43, 0 | PRIORITY
dbsprite 1, 1, 0, 0, $44, 0 | PRIORITY
dbsprite 2, 1, 0, 0, $45, 0 | PRIORITY
dbsprite -2, 2, 0, 0, $51, 0 | PRIORITY
dbsprite -1, 2, 0, 0, $52, 0 | PRIORITY
dbsprite 0, 2, 0, 0, $53, 0 | PRIORITY
dbsprite 1, 2, 0, 0, $54, 0 | PRIORITY
dbsprite 2, 2, 0, 0, $55, 0 | PRIORITY
.OAMData_GSIntroNote:
db 2
dbsprite -1, -1, 4, 0, $00, 0
dbsprite -1, 0, 4, 0, $10, 0
.OAMData_GSIntroPikachuTail:
db 5
dbsprite 3, -2, 0, 0, $00, 0
dbsprite 4, -2, 0, 0, $01, 0
dbsprite 2, -1, 0, 0, $02, 0
dbsprite 3, -1, 0, 0, $03, 0
dbsprite 2, 0, 0, 0, $04, 0
.OAMData_MinigamePicrossCursor:
db 1
dbsprite -1, -1, 7, 7, $00, 0
.OAMData_PokedexCursor:
db 10
dbsprite 0, -1, 0, 0, $00, 0
dbsprite 1, -1, 0, 0, $01, 0
dbsprite 2, -1, 0, 0, $01, 0
dbsprite 3, -1, 0, 0, $01, 0
dbsprite 4, -1, 0, 0, $00, 0 | X_FLIP
dbsprite 0, 0, 0, 0, $00, 0 | Y_FLIP
dbsprite 1, 0, 0, 0, $01, 0 | Y_FLIP
dbsprite 2, 0, 0, 0, $01, 0 | Y_FLIP
dbsprite 3, 0, 0, 0, $01, 0 | Y_FLIP
dbsprite 4, 0, 0, 0, $00, 0 | X_FLIP | Y_FLIP
.OAMData_PokedexSlowpoke1:
db 15
dbsprite -2, -2, 4, 0, $06, 0
dbsprite -1, -2, 4, 0, $07, 0
dbsprite 0, -2, 4, 0, $08, 0
dbsprite -2, -1, 4, 0, $09, 0
dbsprite -1, -1, 4, 0, $0a, 0
dbsprite 0, -1, 4, 0, $0b, 0
dbsprite -2, 0, 4, 0, $0c, 0
dbsprite -1, 0, 4, 0, $0d, 0
dbsprite 0, 0, 4, 0, $0e, 0
dbsprite -2, 1, 4, 0, $10, 0
dbsprite -1, 1, 4, 0, $11, 0
dbsprite 0, 1, 4, 0, $12, 0
dbsprite 1, -2, 4, 0, $16, 0
dbsprite 1, -1, 4, 0, $17, 0
dbsprite 1, 0, 4, 0, $18, 0
.OAMData_PokedexSlowpoke2:
db 15
dbsprite -2, -2, 4, 0, $06, 0
dbsprite -1, -2, 4, 0, $07, 0
dbsprite 0, -2, 4, 0, $08, 0
dbsprite -2, -1, 4, 0, $09, 0
dbsprite -1, -1, 4, 0, $0a, 0
dbsprite 0, -1, 4, 0, $0b, 0
dbsprite -2, 0, 4, 0, $0c, 0
dbsprite -1, 0, 4, 0, $0d, 0
dbsprite 0, 0, 4, 0, $0e, 0
dbsprite -2, 1, 4, 0, $13, 0
dbsprite -1, 1, 4, 0, $14, 0
dbsprite 0, 1, 4, 0, $15, 0
dbsprite 1, -2, 4, 0, $16, 0
dbsprite 1, -1, 4, 0, $17, 0
dbsprite 1, 0, 4, 0, $18, 0
.OAMData_PokedexSlowpoke3:
db 15
dbsprite -2, -2, 4, 0, $08, 0 | X_FLIP
dbsprite -1, -2, 4, 0, $07, 0 | X_FLIP
dbsprite 0, -2, 4, 0, $06, 0 | X_FLIP
dbsprite -2, -1, 4, 0, $09, 0
dbsprite -1, -1, 4, 0, $0a, 0
dbsprite 0, -1, 4, 0, $0b, 0
dbsprite -2, 0, 4, 0, $0c, 0
dbsprite -1, 0, 4, 0, $0d, 0
dbsprite 0, 0, 4, 0, $0e, 0
dbsprite -2, 1, 4, 0, $20, 0
dbsprite -1, 1, 4, 0, $21, 0
dbsprite 0, 1, 4, 0, $22, 0
dbsprite 1, -2, 4, 0, $19, 0
dbsprite 1, -1, 4, 0, $1a, 0
dbsprite 1, 0, 4, 0, $18, 0
.OAMData_PokedexSlowpoke4:
db 15
dbsprite -2, -2, 4, 0, $08, 0 | X_FLIP
dbsprite -1, -2, 4, 0, $07, 0 | X_FLIP
dbsprite 0, -2, 4, 0, $06, 0 | X_FLIP
dbsprite -2, -1, 4, 0, $09, 0
dbsprite -1, -1, 4, 0, $0a, 0
dbsprite 0, -1, 4, 0, $0b, 0
dbsprite -2, 0, 4, 0, $0c, 0
dbsprite -1, 0, 4, 0, $0d, 0
dbsprite 0, 0, 4, 0, $0e, 0
dbsprite -2, 1, 4, 0, $10, 0
dbsprite -1, 1, 4, 0, $11, 0
dbsprite 0, 1, 4, 0, $12, 0
dbsprite 1, -2, 4, 0, $19, 0
dbsprite 1, -1, 4, 0, $1a, 0
dbsprite 1, 0, 4, 0, $18, 0
.OAMData_PokedexSlowpoke5:
db 17
dbsprite -2, -2, 4, 0, $08, 0 | X_FLIP
dbsprite -1, -2, 4, 0, $07, 0 | X_FLIP
dbsprite 0, -2, 4, 0, $06, 0 | X_FLIP
dbsprite -2, -1, 4, 0, $09, 0
dbsprite -1, -1, 4, 0, $0f, 0
dbsprite 0, -1, 4, 0, $0b, 0
dbsprite -2, 0, 4, 0, $0c, 0
dbsprite -1, 0, 4, 0, $0d, 0
dbsprite 0, 0, 4, 0, $0e, 0
dbsprite -2, 1, 4, 0, $10, 0
dbsprite -1, 1, 4, 0, $11, 0
dbsprite 0, 1, 4, 0, $12, 0
dbsprite 1, -2, 4, 0, $19, 0
dbsprite 1, -1, 4, 0, $1a, 0
dbsprite 1, 0, 4, 0, $18, 0
; Light bulb
dbsprite -1, -4, 4, 0, $23, 0
dbsprite -1, -3, 4, 0, $24, 0
.OAMData_TextEntryCursor:
db 4
dbsprite -1, -1, 7, 7, $00, 0
dbsprite 0, -1, 1, 7, $00, 0 | X_FLIP
dbsprite -1, 0, 7, 1, $00, 0 | Y_FLIP
dbsprite 0, 0, 1, 1, $00, 0 | X_FLIP | Y_FLIP
.OAMData_GSGameFreakLogo:
db 15
dbsprite -2, -3, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, -3, 4, 4, $01, 0 | OBP_NUM
dbsprite 0, -3, 4, 4, $02, 0 | OBP_NUM
dbsprite -2, -2, 4, 4, $03, 0 | OBP_NUM
dbsprite -1, -2, 4, 4, $04, 0 | OBP_NUM
dbsprite 0, -2, 4, 4, $05, 0 | OBP_NUM
dbsprite -2, -1, 4, 4, $06, 0 | OBP_NUM
dbsprite -1, -1, 4, 4, $07, 0 | OBP_NUM
dbsprite 0, -1, 4, 4, $08, 0 | OBP_NUM
dbsprite -2, 0, 4, 4, $09, 0 | OBP_NUM
dbsprite -1, 0, 4, 4, $0a, 0 | OBP_NUM
dbsprite 0, 0, 4, 4, $0b, 0 | OBP_NUM
dbsprite -2, 1, 4, 4, $0c, 0 | OBP_NUM
dbsprite -1, 1, 4, 4, $0d, 0 | OBP_NUM
dbsprite 0, 1, 4, 4, $0e, 0 | OBP_NUM
.OAMData_SlotsGolem:
db 6
dbsprite -2, -2, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 0 | OBP_NUM
dbsprite 0, -2, 4, 4, $00, 0 | OBP_NUM | X_FLIP
dbsprite -2, 0, 4, 4, $04, 0 | OBP_NUM
dbsprite -1, 0, 4, 4, $06, 0 | OBP_NUM
dbsprite 0, 0, 4, 4, $04, 0 | OBP_NUM | X_FLIP
.OAMData_SlotsChansey1:
db 6
dbsprite -2, -2, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 0 | OBP_NUM
dbsprite 0, -2, 4, 4, $04, 0 | OBP_NUM
dbsprite -2, 0, 4, 4, $06, 0 | OBP_NUM
dbsprite -1, 0, 4, 4, $08, 0 | OBP_NUM
dbsprite 0, 0, 4, 4, $0a, 0 | OBP_NUM
.OAMData_SlotsChansey2:
db 6
dbsprite -2, -2, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 0 | OBP_NUM
dbsprite 0, -2, 4, 4, $04, 0 | OBP_NUM
dbsprite -2, 0, 4, 4, $0c, 0 | OBP_NUM
dbsprite -1, 0, 4, 4, $0e, 0 | OBP_NUM
dbsprite 0, 0, 4, 4, $10, 0 | OBP_NUM
.OAMData_SlotsChansey3:
db 6
dbsprite -2, -2, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 0 | OBP_NUM
dbsprite 0, -2, 4, 4, $04, 0 | OBP_NUM
dbsprite -2, 0, 4, 4, $12, 0 | OBP_NUM
dbsprite -1, 0, 4, 4, $14, 0 | OBP_NUM
dbsprite 0, 0, 4, 4, $16, 0 | OBP_NUM
.OAMData_SlotsChansey4:
db 6
dbsprite -2, -2, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 0 | OBP_NUM
dbsprite 0, -2, 4, 4, $04, 0 | OBP_NUM
dbsprite -2, 0, 4, 4, $18, 0 | OBP_NUM
dbsprite -1, 0, 4, 4, $1a, 0 | OBP_NUM
dbsprite 0, 0, 4, 4, $1c, 0 | OBP_NUM
.OAMData_SlotsChansey5:
db 6
dbsprite -2, -2, 4, 4, $1e, 0 | OBP_NUM
dbsprite -1, -2, 4, 4, $20, 0 | OBP_NUM
dbsprite 0, -2, 4, 4, $22, 0 | OBP_NUM
dbsprite -2, 0, 4, 4, $24, 0 | OBP_NUM
dbsprite -1, 0, 4, 4, $26, 0 | OBP_NUM
dbsprite 0, 0, 4, 4, $28, 0 | OBP_NUM
.OAMData_RadioFrequencyMeter:
db 4
dbsprite -1, -2, 4, 0, $00, 0 | OBP_NUM
dbsprite -1, -1, 4, 0, $00, 0 | OBP_NUM
dbsprite -1, 0, 4, 0, $00, 0 | OBP_NUM
dbsprite -1, 1, 4, 0, $00, 0 | OBP_NUM

View File

@ -0,0 +1,155 @@
; Entries correspond to SPRITE_ANIM_OBJ_* constants
SpriteAnimObjects:
; frameset, sequence, dict
; SPRITE_ANIM_OBJ_00
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_DEFAULT
; SPRITE_ANIM_OBJ_POLIWAG_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_POLIWAG_ICON
; SPRITE_ANIM_OBJ_JIGGLYPUFF_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_JIGGLYPUFF_ICON
; SPRITE_ANIM_OBJ_DIGLETT_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_DIGLETT_ICON
; SPRITE_ANIM_OBJ_PIKACHU_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_PIKACHU_ICON
; SPRITE_ANIM_OBJ_STARYU_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_STARYU_ICON
; SPRITE_ANIM_OBJ_MAGIKARP_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_MAGIKARP_ICON
; SPRITE_ANIM_OBJ_PIDGEY_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_PIDGEY_ICON
; SPRITE_ANIM_OBJ_RHYDON_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_RHYDON_ICON
; SPRITE_ANIM_OBJ_CLEFAIRY_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_CLEFAIRY_ICON
; SPRITE_ANIM_OBJ_ODDISH_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_ODDISH_ICON
; SPRITE_ANIM_OBJ_MUSHI_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_MUSHI_ICON
; SPRITE_ANIM_OBJ_GENGAR_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_GENGAR_ICON
; SPRITE_ANIM_OBJ_LAPRAS_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_LAPRAS_ICON
; SPRITE_ANIM_OBJ_MRMIME_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_MRMIME_ICON
; SPRITE_ANIM_OBJ_LOKON_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_LOKON_ICON
; SPRITE_ANIM_OBJ_TAUROS_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_TAUROS_ICON
; SPRITE_ANIM_OBJ_SHELLDER_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_SHELLDER_ICON
; SPRITE_ANIM_OBJ_DITTO_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_DITTO_ICON
; SPRITE_ANIM_OBJ_ONIX_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_ONIX_ICON
; SPRITE_ANIM_OBJ_VOLTORB_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_VOLTORB_ICON
; SPRITE_ANIM_OBJ_SQUIRTLE_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_SQUIRTLE_ICON
; SPRITE_ANIM_OBJ_BULBASAUR_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_BULBASAUR_ICON
;SPRITE_ANIM_OBJ_CHARMANDER_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_CHARMANDER_ICON
; SPRITE_ANIM_OBJ_WEEDLE_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_WEEDLE_ICON
; SPRITE_ANIM_OBJ_ANNON_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_ANNON_ICON
; SPRITE_ANIM_OBJ_GEODUDE_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_GEODUDE_ICON
; SPRITE_ANIM_OBJ_MACHOP_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_MACHOP_ICON
; SPRITE_ANIM_OBJ_EGG_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_EGG_ICON
; SPRITE_ANIM_OBJ_TENTACOOL_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_TENTACOOL_ICON
; SPRITE_ANIM_OBJ_BUTTERFREE_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_BUTTERFREE_ICON
; SPRITE_ANIM_OBJ_ZUBAT_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_ZUBAT_ICON
; SPRITE_ANIM_OBJ_SNORLAX_ICON
db SPRITE_ANIM_FRAMESET_PARTY_MON, SPRITE_ANIM_FUNC_PARTY_MON, SPRITE_ANIM_DICT_SNORLAX_ICON
; SPRITE_ANIM_OBJ_GS_INTRO_BUBBLE
db SPRITE_ANIM_FRAMESET_GS_INTRO_BUBBLE, SPRITE_ANIM_FUNC_GS_INTRO_BUBBLE, SPRITE_ANIM_DICT_GS_INTRO
; SPRITE_ANIM_OBJ_GS_INTRO_OMANYTE
db SPRITE_ANIM_FRAMESET_GS_INTRO_OMANYTE, SPRITE_ANIM_FUNC_GS_INTRO_OMANYTE, SPRITE_ANIM_DICT_GS_INTRO
; SPRITE_ANIM_OBJ_GS_INTRO_MAGIKARP
db SPRITE_ANIM_FRAMESET_GS_INTRO_MAGIKARP, SPRITE_ANIM_FUNC_GS_INTRO_MAGIKARP, SPRITE_ANIM_DICT_GS_INTRO
; SPRITE_ANIM_OBJ_UNUSED_INTRO_AERODACTYL
db SPRITE_ANIM_FRAMESET_UNUSED_INTRO_AERODACTYL, SPRITE_ANIM_FUNC_UNUSED_INTRO_AERODACTYL, SPRITE_ANIM_DICT_GS_INTRO
; SPRITE_ANIM_OBJ_GS_INTRO_LAPRAS
db SPRITE_ANIM_FRAMESET_GS_INTRO_LAPRAS, SPRITE_ANIM_FUNC_GS_INTRO_LAPRAS, SPRITE_ANIM_DICT_GS_INTRO
; SPRITE_ANIM_OBJ_GS_INTRO_NOTE
db SPRITE_ANIM_FRAMESET_GS_INTRO_NOTE, SPRITE_ANIM_FUNC_GS_INTRO_NOTE, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_GS_INTRO_SMALLER_NOTE
db SPRITE_ANIM_FRAMESET_GS_INTRO_SMALLER_NOTE, SPRITE_ANIM_FUNC_GS_INTRO_NOTE, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_GS_INTRO_JIGGLYPUFF
db SPRITE_ANIM_FRAMESET_GS_INTRO_JIGGLYPUFF, SPRITE_ANIM_FUNC_GS_INTRO_JIGGLYPUFF, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_GS_INTRO_PIKACHU
db SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU, SPRITE_ANIM_FUNC_GS_INTRO_PIKACHU, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_GS_INTRO_PIKACHU_TAIL
db SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_TAIL, SPRITE_ANIM_FUNC_GS_INTRO_PIKACHU_TAIL, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_GS_INTRO_FIREBALL
db SPRITE_ANIM_FRAMESET_GS_INTRO_FIREBALL, SPRITE_ANIM_FUNC_GS_INTRO_FIREBALL, SPRITE_ANIM_DICT_GS_INTRO_3
; SPRITE_ANIM_OBJ_GS_INTRO_BLASTOISE
db SPRITE_ANIM_FRAMESET_GS_INTRO_BLASTOISE, SPRITE_ANIM_FUNC_GS_INTRO_BLASTOISE, SPRITE_ANIM_DICT_GS_INTRO_3
; SPRITE_ANIM_OBJ_GS_INTRO_VENUSAUR
db SPRITE_ANIM_FRAMESET_GS_INTRO_VENUSAUR, SPRITE_ANIM_FUNC_GS_INTRO_VENUSAUR, SPRITE_ANIM_DICT_GS_INTRO_3
; SPRITE_ANIM_OBJ_GS_TITLE_FLAME_NOTE
db SPRITE_ANIM_FRAMESET_GS_TITLE_FLAME_NOTE, SPRITE_ANIM_FUNC_GS_TITLE_FLAME_NOTE, SPRITE_ANIM_DICT_TITLE_FLAME_NOTE
; SPRITE_ANIM_OBJ_MINIGAME_PIKACHU
db SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU, SPRITE_ANIM_FUNC_MINIGAME_PIKACHU, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_MINIGAME_PIKACHU_TAIL
db SPRITE_ANIM_FRAMESET_GS_INTRO_PIKACHU_TAIL, SPRITE_ANIM_FUNC_MINIGAME_PIKACHU_TAIL, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_MINIGAME_NOTE
db SPRITE_ANIM_FRAMESET_GS_INTRO_NOTE, SPRITE_ANIM_FUNC_MINIGAME_NOTE, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_MINIGAME_JIGGLYPUFF
db SPRITE_ANIM_FRAMESET_GS_INTRO_JIGGLYPUFF, SPRITE_ANIM_FUNC_MINIGAME_JIGGLYPUFF, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_MINIGAME_PICROSS_CURSOR
db SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_CURSOR, SPRITE_ANIM_FUNC_MINIGAME_PICROSS_CURSOR, SPRITE_ANIM_DICT_MINIGAME_PICROSS
; SPRITE_ANIM_OBJ_MINIGAME_PICROSS_DUST
db SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_DUST, SPRITE_ANIM_FUNC_NULL, SPRITE_ANIM_DICT_MINIGAME_PICROSS
; SPRITE_ANIM_OBJ_MINIGAME_PICROSS_GOLD
db SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_GOLD, SPRITE_ANIM_FUNC_MINIGAME_PICROSS_DUST, SPRITE_ANIM_DICT_GS_INTRO_2
; SPRITE_ANIM_OBJ_POKEDEX_HAND_CURSOR
db SPRITE_ANIM_FRAMESET_MINIGAME_PICROSS_GOLD, SPRITE_ANIM_FUNC_POKEDEX_HAND_CURSOR, SPRITE_ANIM_DICT_TEXT_CURSOR
; SPRITE_ANIM_OBJ_POKEDEX_CURSOR
db SPRITE_ANIM_FRAMESET_POKEDEX_CURSOR, SPRITE_ANIM_FUNC_POKEDEX_CURSOR, SPRITE_ANIM_DICT_TEXT_CURSOR
; SPRITE_ANIM_OBJ_POKEDEX_SLOWPOKE
db SPRITE_ANIM_FRAMESET_POKEDEX_SLOWPOKE, SPRITE_ANIM_FUNC_POKEDEX_SLOWPOKE, SPRITE_ANIM_DICT_TEXT_CURSOR
; SPRITE_ANIM_OBJ_NAMING_SCREEN_CURSOR
db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_FUNC_NAMING_SCREEN_CURSOR, SPRITE_ANIM_DICT_TEXT_CURSOR
; SPRITE_ANIM_OBJ_GAMEFREAK_LOGO
db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_FUNC_GAMEFREAK_LOGO, SPRITE_ANIM_DICT_GS_SPLASH
; SPRITE_ANIM_OBJ_GS_INTRO_STAR
db SPRITE_ANIM_FRAMESET_GS_GAMEFREAK_LOGO_STAR, SPRITE_ANIM_FUNC_GS_GAMEFREAK_LOGO_STAR, SPRITE_ANIM_DICT_GS_SPLASH
; SPRITE_ANIM_OBJ_GS_INTRO_SPARKLE
db SPRITE_ANIM_FRAMESET_GS_GAMEFREAK_LOGO_SPARKLE, SPRITE_ANIM_FUNC_GS_GAMEFREAK_LOGO_SPARKLE, SPRITE_ANIM_DICT_GS_SPLASH
; SPRITE_ANIM_OBJ_SLOTS_GOLEM
db SPRITE_ANIM_FRAMESET_SLOTS_GOLEM, SPRITE_ANIM_FUNC_SLOTS_GOLEM, SPRITE_ANIM_DICT_SLOTS
; SPRITE_ANIM_OBJ_SLOTS_CHANSEY
db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_FUNC_SLOTS_CHANSEY, SPRITE_ANIM_DICT_SLOTS
; SPRITE_ANIM_OBJ_SLOTS_EGG
db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_FUNC_SLOTS_EGG, SPRITE_ANIM_DICT_SLOTS
; SPRITE_ANIM_OBJ_MAIL_WRITING_CURSOR
db SPRITE_ANIM_FRAMESET_TEXT_ENTRY_CURSOR, SPRITE_ANIM_FUNC_MAIL_CURSOR, SPRITE_ANIM_DICT_TEXT_CURSOR
; SPRITE_ANIM_OBJ_MAP_CHARACTER_ICON
db SPRITE_ANIM_FRAMESET_WALK, SPRITE_ANIM_FUNC_NULL, SPRITE_ANIM_DICT_DEFAULT
; SPRITE_ANIM_OBJ_POKER_CURSOR
db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_FUNC_POKER_CURSOR, SPRITE_ANIM_DICT_ARROW_CURSOR
; SPRITE_ANIM_OBJ_MEMORY_GAME_CURSOR
db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_FUNC_MEMORY_GAME_CURSOR, SPRITE_ANIM_DICT_ARROW_CURSOR
; SPRITE_ANIM_OBJ_TRAINERGEAR_POINTER
db SPRITE_ANIM_FRAMESET_STILL_CURSOR, SPRITE_ANIM_FUNC_TRAINERGEAR_POINTER, SPRITE_ANIM_DICT_ARROW_CURSOR
; SPRITE_ANIM_OBJ_TRADE_POKE_BALL
db SPRITE_ANIM_FRAMESET_TRADE_POKE_BALL, SPRITE_ANIM_FUNC_TRADE_POKE_BALL, SPRITE_ANIM_DICT_DEFAULT
; SPRITE_ANIM_OBJ_TRADE_POOF
db SPRITE_ANIM_FRAMESET_TRADE_POOF, SPRITE_ANIM_FUNC_NULL, SPRITE_ANIM_DICT_DEFAULT
; SPRITE_ANIM_OBJ_TRADE_TUBE_BULGE
db SPRITE_ANIM_FRAMESET_TRADE_TUBE_BULGE, SPRITE_ANIM_FUNC_TRADE_TUBE_BULGE, SPRITE_ANIM_DICT_DEFAULT
; SPRITE_ANIM_OBJ_TRADEMON_ICON
db SPRITE_ANIM_FRAMESET_TRADEMON_ICON, SPRITE_ANIM_FUNC_TRADEMON_IN_TUBE, SPRITE_ANIM_DICT_DEFAULT
; SPRITE_ANIM_OBJ_TRADEMON_BUBBLE
db SPRITE_ANIM_FRAMESET_TRADEMON_BUBBLE, SPRITE_ANIM_FUNC_TRADEMON_IN_TUBE, SPRITE_ANIM_DICT_DEFAULT
; SPRITE_ANIM_OBJ_4A
db SPRITE_ANIM_FRAMESET_UNKNOWN, SPRITE_ANIM_FUNC_UNKNOWN, SPRITE_ANIM_DICT_DEFAULT
; SPRITE_ANIM_OBJ_RADIO_FREQUENCY_METER
db SPRITE_ANIM_FRAMESET_RADIO_FREQUENCY_METER, SPRITE_ANIM_FUNC_RADIO_FREQUENCY_METER, SPRITE_ANIM_DICT_DEFAULT

View File

@ -1,6 +1,6 @@
INCLUDE "constants.asm"
;INCLUDE "constants.asm"
SECTION "data/types/search_strings.asm", ROMX
;SECTION "data/types/search_strings.asm", ROMX
PokedexTypeSearchStrings::
db "ノーマル@" ; NORMAL

View File

@ -1,7 +1,3 @@
INCLUDE "constants.asm"
SECTION "data/types/search_types.asm", ROMX
PokedexTypeSearchConversionTable::
db TYPE_NORMAL
db TYPE_FIRE

View File

@ -917,9 +917,9 @@ Data8660:
dw $19
Function86a0:
call Function881e
ld hl, InitEffectObject
ld a, BANK(InitEffectObject)
call InitTownMap
ld hl, ClearSpriteAnims
ld a, BANK(ClearSpriteAnims)
call FarCall_hl
call PlaceGoldInMap
call WaitBGMap
@ -927,8 +927,8 @@ Function86a0:
.sub_86b4
call DelayFrame
call GetJoypadDebounced
ld hl, EffectObjectJumpNoDelay
ld a, BANK(EffectObjectJumpNoDelay)
ld hl, PlaySpriteAnimations
ld a, BANK(PlaySpriteAnimations)
call FarCall_hl
ld hl, hJoyDown
ld a, [hl]
@ -937,13 +937,13 @@ Function86a0:
ret
FlyMap:
ld hl, hJoyDebounceSrc
ld hl, hInMenu
ld a, [hl]
push af
ld [hl], $01
call Function881e
ld hl, InitEffectObject
ld a, BANK(InitEffectObject)
call InitTownMap
ld hl, ClearSpriteAnims
ld a, BANK(ClearSpriteAnims)
call FarCall_hl
call PlaceGoldInMap
call Function88b3
@ -962,7 +962,7 @@ FlyMap:
call DelayFrame
call GetJoypadDebounced
callfar EffectObjectJumpNoDelay
callfar PlaySpriteAnimations
ld hl, hJoyDown
ld a, [hl]
@ -998,10 +998,11 @@ FlyMap:
ld [wFlyDestination], a
.sub_8743
pop af
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
ret
Function8747: ; Choose fly destination based on D-Pad input
; Choose fly destination based on D-Pad input
Function8747:
ld a, [wFlyDestination]
ld l, a
ld h, $00
@ -1036,61 +1037,66 @@ Function8747: ; Choose fly destination based on D-Pad input
Text8776:
db "とびさき を えらんでください@"
Function8786:
ld a, [wFlyDestination]
Pokedex_GetArea:
ld a, [wNestIconBlinkCounter]
push af
xor a
ld [wFlyDestination], a
call Function881e
ld [wNestIconBlinkCounter], a
call InitTownMap
ld de, PokedexNestIconGFX
ld hl, vChars0 + $7f0
lb bc, BANK(PokedexNestIconGFX), $01
ld hl, vChars0 + 127 tiles
lb bc, BANK(PokedexNestIconGFX), 1
call Request1bpp
call GetPokemonName
coord hl, 4, 15
hlcoord 4, 15
call PlaceString
coord hl, 9, 15
ld de, Text87e4
hlcoord 9, 15
ld de, .String_SNest
call PlaceString
call WaitBGMap
call SetPalettes
xor a
ldh [hBGMapMode], a
ld hl, wTileMap
ld bc, $0168
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call ByteFill
ld hl, Function3e9dc
ld a, BANK(Function3e9dc)
call FarCall_hl
.sub_87ca
call Function87ea
callfar FindNest
.loop
call .PlaceNest
call GetJoypadDebounced
ldh a, [hJoyDown]
and $03
jr nz, .sub_87df
ld hl, wFlyDestination
and A_BUTTON | B_BUTTON
jr nz, .done
ld hl, wNestIconBlinkCounter
inc [hl]
call DelayFrame
jr .sub_87ca
.sub_87df
jr .loop
.done
pop af
ld [wFlyDestination], a
ld [wNestIconBlinkCounter], a
ret
Text87e4:
.String_SNest:
db "の すみか@"
Function87ea:
ld a, [wFlyDestination]
.PlaceNest:
ld a, [wNestIconBlinkCounter]
and $10
jr z, .sub_881a
jr z, .done_nest
ld de, wTileMap
ld hl, wShadowOAM
.sub_87f7
ld hl, wShadowOAMSprite00
.nestloop
ld a, [de]
and a
ret z
push de
push hl
ld e, a
@ -1100,89 +1106,105 @@ Function87ea:
add hl, de
ld e, l
ld d, h
; load into OAM
pop hl
; X position
ld a, [de]
inc de
sub $04
sub 4
ld [hli], a
; Y position
ld a, [de]
inc de
sub $04
sub 4
ld [hli], a
; Nest icon -> Tile ID
ld a, $7f
ld [hli], a
; Blank out attributes
xor a
ld [hli], a
pop de
inc de
jr .sub_87f7
.sub_881a
jr .nestloop
.done_nest
call ClearSprites
ret
Function881e:
InitTownMap:
call ClearBGPalettes
call ClearTileMap
call UpdateSprites
call DisableLCD
ld hl, TownMapGFX
ld de, vTilesetEnd
ld bc, TownMapGFX.End - TownMapGFX
ld a, BANK(TownMapGFX)
call FarCopyData
ld hl, wTileMap
call DecompTownMapTilemap
coord hl, 0, 13
ld b, $03
ld c, $12
hlcoord 0, 13
ld b, 3
ld c, 18
call DrawTextBox
ld a, $03
ld a, 3
call UpdateSoundNTimes
call EnableLCD
ld b, $02
ld b, SGB_TOWN_MAP
call GetSGBLayout
ret
DecompTownMapTilemap:
ld de, TownMapTilemap
.sub_8859
.loop
ld a, [de]
and a
ret z
ld b, a
inc de
ld a, [de]
ld c, a
ld a, b
add $60
.sub_8863
.keep_placing_tile
ld [hli], a
dec c
jr nz, .sub_8863
jr nz, .keep_placing_tile
inc de
jr .sub_8859
jr .loop
PlaceGoldInMap:
ld de, GoldSpriteGFX
ld hl, vChars0
lb bc, BANK(GoldSpriteGFX), $04
call Request2bpp
ld de, GoldSpriteGFX + LEN_2BPP_TILE * 12 ; Gold's front-facing walking sprite
ld de, GoldSpriteGFX + 12 tiles
ld hl, vChars0 + $40
lb bc, BANK(GoldSpriteGFX), $04
call Request2bpp
depixel 0, 0
ld a, SPRITE_ANIM_INDEX_41
ld a, SPRITE_ANIM_OBJ_MAP_CHARACTER_ICON
call InitSpriteAnimStruct
ld hl, $0003
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $00
push bc
ld a, [wMapGroup]
ld b, a
ld a, [wMapId]
ld c, a
call GetWorldMapLocation
ld e, a
ld d, $00
ld hl, LandmarkPositions
@ -1192,29 +1214,32 @@ PlaceGoldInMap:
inc hl
ld e, [hl]
pop bc
ld hl, $0004
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], e
ld hl, $0005
ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld [hl], d
ret
Function88b3:
ld de, PidgeySpriteGFX
ld hl, vChars0 + $80
lb bc, BANK(PidgeySpriteGFX), $04
ld hl, vChars0 + 8 tiles
lb bc, BANK(PidgeySpriteGFX), 4
call Request2bpp
ld de, PidgeySpriteGFX + $c0
ld hl, vChars0 + $c0
lb bc, BANK(PidgeySpriteGFX), $04
ld de, PidgeySpriteGFX + 12 tiles
ld hl, vChars0 + 12 tiles
lb bc, BANK(PidgeySpriteGFX), 4
call Request2bpp
depixel 0, 0
ld a, SPRITE_ANIM_INDEX_41
ld a, SPRITE_ANIM_OBJ_MAP_CHARACTER_ICON
call InitSpriteAnimStruct
ld hl, $0003
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $08
ld [hl], 8
ret
TownMapTilemap:

View File

@ -2088,7 +2088,7 @@ Function60a0:
call ClearSprites
ld a, [wCurPartySpecies]
ld [wce37], a
predef Function40ac7
predef NewPokedexEntry
call LoadTilesetGFX_LCDOff
.sub_e10d
ld hl, GotItText
@ -2780,8 +2780,8 @@ Function6734:
ld a, BANK(LoadPokeDexGraphics)
call FarCall_hl
call ClearTileMap
ld hl, Function40b07
ld a, BANK(Function40b07)
ld hl, _NewPokedexEntry
ld a, BANK(_NewPokedexEntry)
call FarCall_hl
call ClearBGPalettes
ld hl, wVramState
@ -3247,7 +3247,7 @@ PokeBallEffect:
call ClearSprites
ld a, [wEnemyMonSpecies]
ld [wce37], a
predef Function40ac7
predef NewPokedexEntry
.sub_eac7
ld a, [wPartyCount]
cp $06

View File

@ -395,7 +395,7 @@ _InitScrollingMenu::
ld [wMenuJoypad], a
ldh [hBGMapMode], a
inc a
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
ld hl, wce5f
set 4, [hl]
call asm_243c3
@ -415,7 +415,7 @@ _ScrollingMenu::
.asm_24296
ld [wMenuJoypad], a
ld a, $00
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
ld hl, wce5f
res 4, [hl]
ret
@ -1910,13 +1910,13 @@ asm_24ca0:
asm_24ca2:
call DelayFrame
ldh a, [hJoyDebounceSrc]
ldh a, [hInMenu]
push af
ld a, $01
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
call GetJoypadDebounced
pop af
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
ldh a, [hJoyDown]
bit 1, a
jr nz, asm_24cd0

View File

@ -21,10 +21,10 @@ INCLUDE "data/items/descriptions.inc"
Function2d2fc:
ld a, $1
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
call sub_2d436
ld a, $0
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
ret nc
call PlaceHollowCursor
call WaitBGMap

View File

@ -2,6 +2,59 @@ INCLUDE "constants.asm"
SECTION "engine/dumps/bank0e.asm", ROMX
StageBallTilesData:
ld a, [de]
push af
ld de, wBattleHUDTiles
ld c, PARTY_LENGTH
ld a, $34 ; empty slot
.loop1
ld [de], a
inc de
dec c
jr nz, .loop1
pop af
ld de, wBattleHUDTiles
.loop2
push af
call .GetHUDTile
inc de
pop af
dec a
jr nz, .loop2
ret
.GetHUDTile:
ld a, [hli]
and a
jr nz, .got_hp
ld a, [hl]
and a
ld b, $33 ; fainted
jr z, .fainted
.got_hp
dec hl
dec hl
dec hl
ld a, [hl]
and a
ld b, $32 ; statused
jr nz, .load
dec b
jr .load
.fainted
dec hl
dec hl
dec hl
.load
ld a, b
ld [de], a
ld bc, PARTYMON_STRUCT_LENGTH + MON_HP - MON_STATUS
add hl, bc
ret
DrawPlayerHUDBorder::
ld hl, .tiles
ld de, wTrainerHUDTiles
@ -69,11 +122,11 @@ PlaceHUDBorderTiles::
ld [hl], a
ret
Function38431::
call $4488
LinkBattle_TrainerHuds::
call LoadBallIconGFX
ld hl, wPartyMon1HP
ld de, wPartyCount
call $4391
call StageBallTilesData
ld hl, wPlaceBallsX
ld a, 10 * TILE_WIDTH
ld [hli], a
@ -81,11 +134,11 @@ Function38431::
ld a, TILE_WIDTH
ld [wPlaceBallsDirection], a
ld hl, wShadowOAMSprite00
call $4467
call LoadTrainerHudOAM
ld hl, wOTPartyMon1HP
ld de, wOTPartyCount
call $4391
call StageBallTilesData
ld hl, wPlaceBallsX
ld a, 10 * TILE_WIDTH
@ -115,3 +168,9 @@ LoadTrainerHudOAM:
dec c
jr nz, .loop
ret
LoadBallIconGFX:
ld de, PokeBallsGFX
ld hl, vChars0 + 49 tiles
lb bc, 14, 4
jp Request2bpp

View File

@ -5724,13 +5724,13 @@ asm_3e999:
_LoadWildMons:
xor a
ld hl, wWildMons
ld bc, $29
ld bc, GRASS_WILDDATA_LENGTH
call ByteFill
ld a, [wMapGroup]
ld d, a
ld a, [wMapId]
ld e, a
ld bc, $29
ld bc, GRASS_WILDDATA_LENGTH
ld hl, GrassWildMons
.find
ld a, [hl]
@ -5750,88 +5750,90 @@ _LoadWildMons:
inc hl
inc hl
ld de, wWildMons
ld bc, $27
ld bc, GRASS_WILDDATA_LENGTH - 2
jp CopyBytes
Function3e9dc:
ld hl, wTileMap
ld bc, $0168
; Load nest landmarks into wTilemap[0,0]
FindNest:
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call ByteFill
ld hl, GrassWildMons
ld de, wTileMap
decoord 0, 0
asm_3e9ec:
.FindGrass:
ld a, [hl]
cp $ff
jr z, asm_3ea0d
cp -1
jr z, .done
push hl
ld b, a
inc hl
ld c, [hl]
call sub_3ea0e
jr nc, asm_3ea06
call .SearchMapForMon
jr nc, .next_grass
push de
call GetWorldMapLocation
call sub_3ea27
call .AppendNest
pop de
jr c, asm_3ea06
jr c, .next_grass
ld [de], a
inc de
asm_3ea06:
.next_grass
pop hl
ld bc, $29
ld bc, GRASS_WILDDATA_LENGTH
add hl, bc
jr asm_3e9ec
jr .FindGrass
asm_3ea0d:
.done:
ret
sub_3ea0e:
.SearchMapForMon:
rept 5
inc hl
inc hl
inc hl
inc hl
inc hl
ld a, $12
endr
ld a, NUM_GRASSMON * 3
asm_3ea15:
.ScanMapLoop:
push af
ld a, [wNumSetBits]
ld a, [wNamedObjectIndexBuffer]
cp [hl]
jr z, asm_3ea24
jr z, .found
inc hl
inc hl
pop af
dec a
jr nz, asm_3ea15
jr nz, .ScanMapLoop
and a
ret
asm_3ea24:
.found
pop af
scf
ret
sub_3ea27:
.AppendNest:
ld c, a
ld hl, wTileMap
ld de, $0168
asm_3ea2e:
ld de, SCREEN_WIDTH * SCREEN_HEIGHT
.AppendNestLoop:
ld a, [hli]
cp c
jr z, asm_3ea3a
jr z, .found_nest
dec de
ld a, e
or d
jr nz, asm_3ea2e
jr nz, .AppendNestLoop
ld a, c
and a
ret
asm_3ea3a:
.found_nest
scf
ret
@ -6727,7 +6729,7 @@ sub_3f60c:
ld a, $69
ld [hli], a
ld [hl], $6a
callfar Function38431
callfar LinkBattle_TrainerHuds
ld c, 150
jp DelayFrames

File diff suppressed because it is too large Load Diff

View File

@ -499,7 +499,7 @@ Function50340::
hlcoord 18, 1
ld [hl], $41
ld hl, wccd9
ld hl, wCurHPPal
call SetHPPal
ld b, SGB_STATS_SCREEN_HP_PALS
call GetSGBLayout
@ -1142,7 +1142,7 @@ Function5081f::
ld a, [wPartyMenuActionText]
cp PARTYMENUACTION_MOVE
jp z, Function509dd
callfar Function8f0cc
callfar LoadOverworldMonIcon
call Function50eca
callfar Function95f8
hlcoord 3, 1
@ -1160,13 +1160,13 @@ Function5081f::
call Function508c4
pop de
ld a, [wCurPartyMon]
ldh [hEventID], a
ldh [hObjectStructIndex], a
push hl
push de
ld hl, Function8f0e3
ld a, BANK(Function8f0e3) ; ...What macro do I use here?
ld e, 0
ld hl, LoadMenuMonIcon
ld a, BANK(LoadMenuMonIcon) ; ...What macro do I use here?
ld e, MONICON_PARTYMENU
call FarCall_hl
pop de
@ -1540,7 +1540,7 @@ Text_50b4e: ; leveled up
db "@"
Function50b66::
ld hl, wccd3
ld hl, wHPPals
ld a, [wcce1]
ld c, a
ld b, $00

View File

@ -27,3 +27,47 @@ AnimateTilesetImpl:
ld h, [hl]
ld l, a
jp hl
SECTION "engine/dumps/bank23.asm@RestoreOverworldMapTiles", ROMX
RestoreOverworldMapTiles::
xor a
call OpenSRAM
ld hl, wTileMap
ld de, sScratch
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call CopyBytes
call CloseSRAM
farcall ReanchorBGMap_NoOAMUpdate
xor a
call OpenSRAM
ld hl, sScratch
ld de, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
.loop
ld a, [hl]
cp $61
jr c, .next
ld [de], a
.next
inc hl
inc de
dec bc
ld a, c
or b
jr nz, .loop
call CloseSRAM
call UpdateSprites
call WaitBGMap
ld a, 144
ldh [hWY], a
call DelayFrame
xor a
ldh [hBGMapMode], a
call InitToolgearBuffer
ld b, SGB_MAP_PALS
call GetSGBLayout
ret

View File

@ -35,7 +35,7 @@ MemoryMinigame:
call DisableLCD
ld b, SGB_DIPLOMA
call GetSGBLayout
callfar InitEffectObject
callfar ClearSpriteAnims
ld hl, MemoryGameGFX
ld de, vChars2
@ -49,7 +49,7 @@ MemoryMinigame:
ld a, BANK(PointerGFX)
call FarCopyData
ld a, SPRITE_ANIM_DICT_29
ld a, SPRITE_ANIM_DICT_ARROW_CURSOR
ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], 0
@ -79,7 +79,7 @@ MemoryMinigame:
bit MEMORYGAME_END_LOOP_F, a
jr nz, .quit
call .ExecuteJumptable
callfar EffectObjectJumpNoDelay
callfar PlaySpriteAnimations
call DelayFrame
and a
ret
@ -142,7 +142,7 @@ endr
.spawn_object
depixel 6, 3, 4, 4
ld a, SPRITE_ANIM_INDEX_MEMORY_GAME_CURSOR
ld a, SPRITE_ANIM_OBJ_MEMORY_GAME_CURSOR
call InitSpriteAnimStruct
ld a, 5
ld [wMemoryGameNumberTriesRemaining], a
@ -531,7 +531,8 @@ MemoryGame_Card2Coord:
add hl, de
ret
MemoryGame_AnimateCursor: ; Called from sprite animation routine?
; Called from sprite animation routine?
MemoryGame_AnimateCursor:
ld a, [wJumptableIndex]
cp MEMORYGAME_REVEAL_ALL
jr nc, .quit
@ -561,7 +562,7 @@ MemoryGame_AnimateCursor: ; Called from sprite animation routine?
ret
.pressed_a
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
inc a
@ -576,7 +577,7 @@ MemoryGame_AnimateCursor: ; Called from sprite animation routine?
ret z
sub 1 tiles
ld [hl], a
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
dec [hl]
ret
@ -589,7 +590,7 @@ MemoryGame_AnimateCursor: ; Called from sprite animation routine?
ret z
add 1 tiles
ld [hl], a
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
inc [hl]
ret
@ -602,7 +603,7 @@ MemoryGame_AnimateCursor: ; Called from sprite animation routine?
ret z
sub 1 tiles
ld [hl], a
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
sub 9
@ -617,7 +618,7 @@ MemoryGame_AnimateCursor: ; Called from sprite animation routine?
ret z
add a, $10
ld [hl], a
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
add a, 9

View File

@ -43,13 +43,13 @@ PicrossMinigame:
.Init:
call DisableLCD
farcall InitEffectObject
farcall ClearSpriteAnims
call .InitGFX
call .PlacePlayerBG
call .InitRAM
depixel 8, 8, 0, 0
ld a, SPRITE_ANIM_INDEX_MINIGAME_PICROSS_CURSOR
ld a, SPRITE_ANIM_OBJ_MINIGAME_PICROSS_CURSOR
call InitSpriteAnimStruct
ld a, c
@ -58,7 +58,7 @@ PicrossMinigame:
ld [wPicrossCursorSpritePointer+1], a
depixel 5, 4, 4, 4
ld a, SPRITE_ANIM_INDEX_MINIGAME_PICROSS_GOLD
ld a, SPRITE_ANIM_OBJ_MINIGAME_PICROSS_GOLD
call InitSpriteAnimStruct
ld a, -1
@ -214,14 +214,14 @@ PicrossMinigame:
ld a, BANK(GoldSpriteGFX)
call FarCopyData
ld a, SPRITE_ANIM_DICT_25
ld a, SPRITE_ANIM_DICT_MINIGAME_PICROSS
ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], SPRITE_ANIM_DICT_DEFAULT
ld [hl], SPRITE_ANIM_DICT_NULL
inc hl
ld a, SPRITE_ANIM_DICT_22
ld a, SPRITE_ANIM_DICT_GS_INTRO_2
ld [hli], a
ld [hl], SPRITE_ANIM_DICT_10
ld [hl], SPRITE_ANIM_DICT_TAUROS_ICON
ret
.PlacePlayerBG:
@ -265,7 +265,7 @@ PicrossMinigame:
jr nz, .quit
call .ExecuteJumptable
farcall EffectObjectJumpNoDelay
farcall PlaySpriteAnimations
call DelayFrame
and a
ret
@ -277,14 +277,14 @@ PicrossMinigame:
.GetJoypadState:
call GetJoypadDebounced
ldh a, [hJoyState]
ld [wc606], a
ld hl, wc607
ld [wPicrossJoyStateBuffer], a
ld hl, wPicrossCursorMovementDelay
ld a, [hl]
and a
ret z
dec [hl]
xor a
ld [wc606], a
ld [wPicrossJoyStateBuffer], a
ret
.ExecuteJumptable:
@ -555,7 +555,7 @@ Picross_ProcessJoypad:
.mark_cell
ld [wPicrossJoypadAction], a
ld a, 1
ld [wca59], a
ld [wPicrossAnimateDust], a
call Picross_DetermineGridCoord
call Picross_MarkCell
call Picross_InitDustObject
@ -582,7 +582,7 @@ Picross_InitDustObject:
ret nz
; Make dust object only if we are marking a cell
ld a, SPRITE_ANIM_INDEX_MINIGAME_PICROSS_DUST
ld a, SPRITE_ANIM_OBJ_MINIGAME_PICROSS_DUST
call InitSpriteAnimStruct
ret

View File

@ -38,7 +38,7 @@ PikachuMiniGame::
call DisableLCD
ld b, SGB_PIKACHU_MINIGAME
call GetSGBLayout
callfar InitEffectObject
callfar ClearSpriteAnims
call PikachuMiniGame_ClearBothTilemaps
ld hl, IntroForestGFX
@ -75,9 +75,9 @@ PikachuMiniGame::
call PikachuMiniGame_DrawBackground
ld hl, wSpriteAnimDict
ld a, SPRITE_ANIM_INDEX_GS_INTRO_OMANYTE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_OMANYTE
ld [hli], a
ld a, SPRITE_ANIM_DICT_DEFAULT
ld a, SPRITE_ANIM_DICT_NULL
ld [hli], a
call PikachuMiniGame_LoadFont
@ -136,7 +136,7 @@ PikachuMiniGame::
.load_pikachu
depixel 14, 11
ld a, SPRITE_ANIM_INDEX_MINIGAME_PIKACHU
ld a, SPRITE_ANIM_OBJ_MINIGAME_PIKACHU
call InitSpriteAnimStruct
; Save pointer to the newly initialized Pikachu object
@ -147,7 +147,7 @@ PikachuMiniGame::
; load Pikachu's tail object
depixel 14, 11
ld a, SPRITE_ANIM_INDEX_MINIGAME_PIKACHU_TAIL
ld a, SPRITE_ANIM_OBJ_MINIGAME_PIKACHU_TAIL
call InitSpriteAnimStruct
ld a, c
@ -362,7 +362,7 @@ PikachuMiniGame_RunFrame:
.skip_playing_sfx
call PikachuMiniGame_PerformGameFunction
farcall EffectObjectJumpNoDelay
farcall PlaySpriteAnimations
ld a, 1
ldh [hBGMapMode], a
@ -382,7 +382,7 @@ PikachuMiniGame_RunFrame:
ret
.Done:
callfar InitEffectObject
callfar ClearSpriteAnims
ld hl, wShadowOAM
ld c, SPRITEOAMSTRUCT_LENGTH * NUM_SPRITE_OAM_STRUCTS
@ -584,7 +584,7 @@ PikachuMiniGame_WaitAndGotoNextScene:
PikachuMiniGame_ShowJigglypuff:
depixel 14, 24
ld a, SPRITE_ANIM_INDEX_MINIGAME_JIGGLYPUFF
ld a, SPRITE_ANIM_OBJ_MINIGAME_JIGGLYPUFF
call InitSpriteAnimStruct
xor a
@ -687,7 +687,7 @@ PikachuMiniGame_NoteSpawner:
ld a, 3
ld [wSpriteAnimCount], a
ld a, SPRITE_ANIM_INDEX_MINIGAME_NOTE
ld a, SPRITE_ANIM_OBJ_MINIGAME_NOTE
call InitSpriteAnimStruct
; add one to the note counter

View File

@ -111,7 +111,7 @@ SlotMachineGame_Init:
call DisableLCD
ld b, SGB_SLOT_MACHINE
call GetSGBLayout
callfar InitEffectObject
callfar ClearSpriteAnims
ld hl, wSlots
ld bc, wSlotsDataEnd - wSlots
xor a
@ -174,10 +174,10 @@ SlotMachineGame_Init:
ld a, %11000000
ldh [rOBP1], a
ld a, SPRITE_ANIM_INDEX_28
ld a, SPRITE_ANIM_DICT_SLOTS
ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], SPRITE_ANIM_INDEX_20
ld [hl], $20
xor a
ld [wJumptableIndex], a
@ -192,7 +192,7 @@ SlotsLoop:
call SlotsJumptable
call Slots_SpinReels
ld a, $60
ld [wc4bd], a
ld [wCurSpriteOAMAddr], a
callfar DoNextFrameForFirst16Sprites
call Slots_PrintCoinsAndPayout
call Slots_FlashPaletteOnMatchingSevens
@ -1228,9 +1228,9 @@ ReelAction_InitGolem:
push bc
push af
depixel 12, 13
ld a, SPRITE_ANIM_INDEX_SLOTS_GOLEM
ld a, SPRITE_ANIM_OBJ_SLOTS_GOLEM
call InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_0E
ld hl, SPRITEANIMSTRUCT_VAR3
add hl, bc
pop af
ld [hl], a
@ -1282,7 +1282,7 @@ ReelAction_InitChansey:
ld [hl], 0
push bc
depixel 12, 0
ld a, SPRITE_ANIM_INDEX_SLOTS_CHANSEY
ld a, SPRITE_ANIM_OBJ_SLOTS_CHANSEY
call InitSpriteAnimStruct
pop bc
xor a
@ -1997,7 +1997,7 @@ Slots_AnimateGolem:
dw .roll
.init
ld hl, SPRITEANIMSTRUCT_0E
ld hl, SPRITEANIMSTRUCT_VAR3
add hl, bc
ld a, [hl]
and a
@ -2014,7 +2014,7 @@ Slots_AnimateGolem:
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld [hl], $30
ld hl, SPRITEANIMSTRUCT_XOFFSET
@ -2022,7 +2022,7 @@ Slots_AnimateGolem:
ld [hl], 0
.fall
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
cp $20
@ -2041,7 +2041,7 @@ Slots_AnimateGolem:
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0D
ld hl, SPRITEANIMSTRUCT_VAR2
add hl, bc
ld [hl], 2
ld a, 1
@ -2058,7 +2058,7 @@ Slots_AnimateGolem:
jr nc, .restart
and 3
ret nz
ld hl, SPRITEANIMSTRUCT_0D
ld hl, SPRITEANIMSTRUCT_VAR2
add hl, bc
ld a, [hl]
xor $ff
@ -2121,12 +2121,12 @@ Slots_AnimateChansey:
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld [hl], 8
.two
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
and a
@ -2140,7 +2140,7 @@ Slots_AnimateChansey:
dec [hl]
push bc
depixel 12, 13, 0, 4
ld a, SPRITE_ANIM_INDEX_SLOTS_EGG
ld a, SPRITE_ANIM_OBJ_SLOTS_EGG
call InitSpriteAnimStruct
pop bc
ret

272
engine/gfx/mon_icons.asm Normal file
View File

@ -0,0 +1,272 @@
INCLUDE "constants.asm"
SECTION "engine/gfx/mon_icons.asm", ROMX
LoadOverworldMonIcon::
push hl
push de
push bc
push af
ld hl, wSpriteAnimDict
ld bc, wSpriteAnimDataEnd - wSpriteAnimData
.loop
ld [hl], $00
inc hl
dec bc
ld a, c
or b
jr nz, .loop
pop af
pop bc
pop de
pop hl
ret
LoadMenuMonIcon::
push hl
push de
push bc
call .LoadIcon
pop bc
pop de
pop hl
ret
.LoadIcon:
ld d, 0
ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.Jumptable
; entries correspond to MONICON_* constants
dw PartyMenu_InitAnimatedMonIcon ; MONICON_PARTYMENU
dw NamingScreen_InitAnimatedMonIcon ; MONICON_NAMINGSCREEN
dw MoveList_InitAnimatedMonIcon ; MONICON_MOVES
dw Trade_LoadMonIconGFX ; MONICON_TRADE
PartyMenu_InitAnimatedMonIcon:
ldh a, [hObjectStructIndex]
ld hl, wPartySpecies
ld e, a
ld d, 0
add hl, de
ld a, [hl]
call ReadMonMenuIcon
ld [wCurIcon], a
call GetMemIconGFX
; y coord (hObjectStructIndex * 4 + 26)
ldh a, [hObjectStructIndex]
rept 4
add a
endr
add 3 * TILE_WIDTH + 2
ld d, a
; x coord
ld e, 2 * TILE_WIDTH
ld a, [wCurIcon]
call _InitSpriteAnimStruct
; Get the party mon icon's animation speed
ld hl, wHPPals
ld d, $00
ldh a, [hObjectStructIndex]
ld e, a
add hl, de
ld e, [hl]
ld hl, .speeds
add hl, de
ld a, [hl]
ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
add hl, bc
ld [hl], a
ret
.speeds
db 0 ; HP_GREEN
db 16 ; HP_YELLOW
db 32 ; HP_RED
NamingScreen_InitAnimatedMonIcon:
ld a, [wTempIconSpecies]
call ReadMonMenuIcon
ld [wCurIcon], a
call GetMemIconGFX
lb de, 36, 32
ld a, [wCurIcon]
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], SPRITE_ANIM_FUNC_NULL
ret
MoveList_InitAnimatedMonIcon:
ld a, [wTempIconSpecies]
call ReadMonMenuIcon
ld [wCurIcon], a
call GetMemIconGFX
ld d, 3 * TILE_WIDTH + 2 ; depixel 3, 3, 2, 0
ld e, 3 * TILE_WIDTH
ld a, [wCurIcon]
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], SPRITE_ANIM_FUNC_NULL
ret
Trade_LoadMonIconGFX:
ld a, [wTempIconSpecies]
call ReadMonMenuIcon
ld [wCurIcon], a
ld a, $62
ld [wCurIconTile], a
call GetMemIconGFX
ret
GetMemIconGFX:
call .CheckSpriteAnimDict
ret c
ld [hli], a
ld a, [wCurIconTile]
ld [hli], a
ld l, a
ld h, $00
rept 4
add hl, hl
endr
ld de, vChars0
add hl, de
ld a, [wCurIcon]
call LoadSpriteAnimGFX
ld a, [wCurIconTile]
add c
ld [wCurIconTile], a
ret
; Scroll through SpriteAnimDict for empty slots to put the requested icon in.
; If sprite space is full, or tile requested is too high, returns carry flag.
.CheckSpriteAnimDict:
push af
ld d, a
ld hl, wSpriteAnimDict
ld e, NUM_SPRITEANIMDICT_ENTRIES
.loop
ld a, [hl]
cp d
jr z, .set_carry_flag
and a
jr z, .slot_available
inc hl
inc hl
dec e
jr z, .set_carry_flag
jr .loop
.slot_available
; If icon's tile infringes on vChars1, don't get the graphics
ld a, [wCurIconTile]
cp $80
jr nc, .set_carry_flag
pop af
and a
ret
.set_carry_flag
pop af
scf
ret
FreezeMonIcons:
ld hl, wSpriteAnimationStructs
ld e, PARTY_LENGTH
ld a, [wMenuCursorY]
ld d, a
.loop
ld a, [hl]
and a
jr z, .next
cp d
jr z, .loadwithtwo
ld a, SPRITE_ANIM_FUNC_NULL
jr .ok
.loadwithtwo
ld a, SPRITE_ANIM_FUNC_PARTY_MON_SWITCH
.ok
push hl
ld c, l
ld b, h
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], a
pop hl
.next
ld bc, wSpriteAnim2 - wSpriteAnim1
add hl, bc
dec e
jr nz, .loop
ret
UnfreezeMonIcons:
ld hl, wSpriteAnimationStructs
ld e, PARTY_LENGTH
ld a, [wSelectedSwapPosition]
ld d, a
.loop
ld a, [hl]
and a
jr z, .next
cp d
jr z, .loadwithtwo
ld a, SPRITE_ANIM_FUNC_PARTY_MON_SELECTED
jr .ok
.loadwithtwo
ld a, SPRITE_ANIM_FUNC_PARTY_MON_SWITCH
.ok
push hl
ld c, l
ld b, h
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], a
pop hl
.next:
ld bc, wSpriteAnim2 - wSpriteAnim1
add hl, bc
dec e
jr nz, .loop
ret
ReadMonMenuIcon:
cp DEX_EGG
jr z, .egg
dec a
ld hl, MonMenuIcons
ld e, a
ld d, 0
add hl, de
ld a, [hl]
ret
.egg
; Even though a proper egg icon exists (ID $1c), the function uses a zeroed-out value as a placeholder
ld a, $00
ret
INCLUDE "data/pokemon/menu_icons.inc"

View File

@ -39,7 +39,7 @@ LoadSGBLayout:
dw SGB_TrainerCard
dw SGB_MoveList
dw SGB_PikachuMinigame
dw SGB_PokedexSelection
dw SGB_Pokedex_WaitBGMap
dw SGB_Poker
dw SGB12
dw SGB_TrainerGear
@ -125,7 +125,7 @@ SGB_StatsScreenHPPals:
call Function957e
push af
ld hl, wcce2
ld a, [wccd9]
ld a, [wCurHPPal]
add $23
ld [hli], a
inc hl
@ -153,7 +153,7 @@ SGB_Pokedex:
ld de, BlkPacket_Pokedex
ret
SGB_PokedexSelection:
SGB_Pokedex_WaitBGMap:
ld hl, PalPacket_GSIntroCharizard
ld de, BlkPacket_986c
ret
@ -540,7 +540,7 @@ Function95f8:
jp CopyBytes
SGB_ApplyPartyMenuHPPals:
ld hl, wccd3
ld hl, wHPPals
ld a, [wcce1]
ld e, a
ld d, $00

View File

@ -30,7 +30,7 @@ CanLearnTMHMMove:
.jump
pop hl
ld b, 2 ;CHECK_FLAG
ld b, CHECK_FLAG
push de
ld d, 0
predef SmallFarFlagAction

View File

@ -236,7 +236,7 @@ _TrainerCard:
StartMenu_Pokedex:
call LoadStandardMenuHeader
predef Function40000
predef Pokedex
call ClearPalettes
call Function360b
call ReloadFontAndTileset
@ -908,7 +908,7 @@ PartyPrompt:
ld a, [wCurPartyMon]
inc a
ld [wSelectedSwapPosition], a
callfar Function8f1f2
callfar UnfreezeMonIcons
ld a, PARTYMENUACTION_MOVE
ld [wPartyMenuActionText], a
predef PartyMenuInBattle
@ -1472,17 +1472,17 @@ PokeSummary:
xor a
ldh [hBGMapMode], a
callfar LoadOnlyPokemonStatsGraphics
callfar Function8f0cc
callfar LoadOverworldMonIcon
ld a, [wCurPartyMon]
ld e, a
ld d, 0
ld hl, wPartySpecies
add hl, de
ld a, [hl]
ld [wce37], a
ld hl, Function8f0e3
ld a, BANK(Function8f0e3)
ld e, 2
ld [wTempIconSpecies], a
ld hl, LoadMenuMonIcon
ld a, BANK(LoadMenuMonIcon)
ld e, MONICON_MOVES
call FarCall_hl
hlcoord 0, 1
ld b, 8

View File

@ -21,10 +21,10 @@ NamingScreen:
push af
xor a
ldh [hMapAnims], a
ldh a, [hJoyDebounceSrc]
ldh a, [hInMenu]
push af
ld a, $01
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
call .SetUpNamingScreen
call DelayFrame
.loop
@ -32,7 +32,7 @@ NamingScreen:
jr nc, .loop
pop af
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
pop af
ldh [hMapAnims], a
pop af
@ -84,9 +84,9 @@ GetNamingScreenSetup:
dw .Pokemon
.Pokemon:
ld hl, Function8f0e3
ld a, BANK(Function8f0e3)
ld e, 1
ld hl, LoadMenuMonIcon
ld a, BANK(LoadMenuMonIcon)
ld e, MONICON_NAMINGSCREEN
call FarCall_hl
call GetPokemonName
hlcoord 5, 2
@ -148,7 +148,7 @@ GetNamingScreenSetup:
ld [hl+], a
ld [hl], $00
depixel 4, 4, 4, 0
ld a, SPRITE_ANIM_INDEX_41
ld a, SPRITE_ANIM_OBJ_MAP_CHARACTER_ICON
call InitSpriteAnimStruct
ld hl, $0001
add hl, bc
@ -181,7 +181,7 @@ GetNamingScreenSetup:
ld [hli], a
ld [hl], $00
depixel 4, 4, 4, 0
ld a, SPRITE_ANIM_INDEX_41
ld a, SPRITE_ANIM_OBJ_MAP_CHARACTER_ICON
call InitSpriteAnimStruct
ret
@ -255,7 +255,7 @@ NamingScreenJoypadLoop:
.leap
; kills sprites and resets screen position
callfar InitEffectObject
callfar ClearSpriteAnims
call ClearSprites
xor a
ldh [hSCX], a
@ -302,7 +302,7 @@ NamingScreenJoypadLoop:
.InitCursor:
depixel 11, 3, 0, 0
ld a, SPRITE_ANIM_INDEX_39
ld a, SPRITE_ANIM_OBJ_NAMING_SCREEN_CURSOR
call InitSpriteAnimStruct
ld a, c
ld [wNamingScreenCursorObjectPointer], a
@ -347,7 +347,7 @@ NamingScreenJoypadLoop:
set 7, [hl]
ret
.GetDPad:
NamingScreen_AnimateCursor:
ld hl, hJoySum
ld a, [hl]
and D_UP
@ -620,7 +620,7 @@ NamingScreenGetLastCharacter:
LoadNamingScreenGFX:
call ClearSprites
callfar InitEffectObject
callfar ClearSpriteAnims
call LoadFont
ld de, TextScreenGFX_End
@ -656,9 +656,9 @@ LoadNamingScreenGFX:
ld [hl], $7F
xor a
ldh [hSCY], a
ld [wc4c7], a
ld [wGlobalAnimYOffset], a
ldh [hSCX], a
ld [wc4c8], a
ld [wGlobalAnimXOffset], a
ld [wJumptableIndex], a
ldh [hBGMapMode], a
ld [wNamingScreenCurNameLength], a
@ -678,10 +678,10 @@ ComposeMailMessage:
push af
xor a
ldh [hMapAnims], a
ldh a, [hJoyDebounceSrc]
ldh a, [hInMenu]
push af
ld a, 1
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
xor a
ld [wFlyDestination], a
.outerloop
@ -696,7 +696,7 @@ ComposeMailMessage:
jr nz, .outerloop
pop af
ldh [hJoyDebounceSrc], a
ldh [hInMenu], a
pop af
ldh [hMapAnims], a
ret
@ -729,20 +729,20 @@ ComposeMailMessage:
ld [hli], a
ld [hl], 0
depixel 4, 4, 4, 0
ld a, SPRITE_ANIM_INDEX_08
ld a, SPRITE_ANIM_OBJ_RHYDON_ICON
call InitSpriteAnimStruct
ld hl, $0002
add hl, bc
ld [hl], 0
depixel 11, 3, 0, 0
ld a, SPRITE_ANIM_INDEX_39
ld a, SPRITE_ANIM_OBJ_NAMING_SCREEN_CURSOR
call InitSpriteAnimStruct
ld a, c
ld [wNamingScreenCursorObjectPointer], a
ld a, b
ld [wNamingScreenCursorObjectPointer + 1], a
call InitCharSet
ld a, $E3
ld a, LCDC_DEFAULT
ldh [rLCDC], a
call InitMailText
call WaitBGMap
@ -818,7 +818,7 @@ DoMailEntry:
ret
.exit_mail
callfar InitEffectObject
callfar ClearSpriteAnims
call ClearSprites
xor a
ldh [hSCX], a
@ -946,20 +946,20 @@ SetupMail:
ld [hli], a
ld [hl], 0
depixel 4, 4, 4, 0
ld a, SPRITE_ANIM_INDEX_08
ld a, SPRITE_ANIM_OBJ_RHYDON_ICON
call InitSpriteAnimStruct
ld hl, $0002
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], 0
depixel 12, 3, 0, 0
ld a, SPRITE_ANIM_INDEX_40
ld a, SPRITE_ANIM_OBJ_MAIL_WRITING_CURSOR
call InitSpriteAnimStruct
ld a, c
ld [wNamingScreenCursorObjectPointer], a
ld a, b
ld [wNamingScreenCursorObjectPointer + 1], a
call DrawMail
ld a, $E3
ld a, LCDC_DEFAULT
ldh [rLCDC], a
call DrawMailLoadedText
call WaitBGMap
@ -1047,3 +1047,95 @@ DrawMailTextExtra:
MailTextExtra:
db "?!12345  67890ー円"
ComposeMail_AnimateCursor:
ld hl, hJoySum
ld a, [hl]
and D_UP
jr nz, .upJump
ld a, [hl]
and D_DOWN
jr nz, .downJump
ld a, [hl]
and D_LEFT
jr nz, .leftJump
ld a, [hl]
and D_RIGHT
jr nz, .rightJump
ret
.rightJump
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
cp 13
jr nc, .skip
inc [hl]
jr .UpdatePositionOffset
.skip
ld [hl], 0
jr .UpdatePositionOffset
.leftJump
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
and a
jr z, .skip2
dec [hl]
jr .UpdatePositionOffset
.skip2
ld [hl], 13
jr .UpdatePositionOffset
.downJump
ld hl, SPRITEANIMSTRUCT_VAR2
add hl, bc
ld a, [hl]
cp 4
jr nc, .skip3
inc [hl]
jr .UpdatePositionOffset
.skip3
ld [hl], 00
jr .UpdatePositionOffset
.upJump
ld hl, SPRITEANIMSTRUCT_VAR2
add hl, bc
ld a, [hl]
and a
jr z, .skip4
dec [hl]
jr .UpdatePositionOffset
.skip4
ld [hl], 4
jr .UpdatePositionOffset
.UpdatePositionOffset
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld e, [hl]
ld d, 0
ld hl, .XOffsets
add hl, de
ld a, [hl]
ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ld hl, SPRITEANIMSTRUCT_VAR2
add hl, bc
ld e, [hl]
ld d, 0
ld hl, .YOffsets
add hl, de
ld a, [hl]
ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
ret
.XOffsets:
db $00, $08, $10, $18, $20, $28, $30, $48, $50, $58, $60, $68, $70, $78
.YOffsets:
db $00, $08, $18, $20, $30

View File

@ -77,7 +77,7 @@ GameFreakIntro::
ld a, BANK(GameFreakLogoSparkleGFX)
call FarCopyData
farcall InitEffectObject
farcall ClearSpriteAnims
ld hl, wSpriteAnimDict
ld a, SPRITE_ANIM_DICT_GS_SPLASH
@ -119,7 +119,7 @@ GameFreakIntro::
bit 7, a
jr nz, .Finished
farcall EffectObjectJumpNoDelay
farcall PlaySpriteAnimations
call GameFreakPresentsScene
call DelayFrame
@ -131,7 +131,7 @@ GameFreakIntro::
set 6, [hl]
.Finished:
callfar InitEffectObject
callfar ClearSpriteAnims
call ClearTileMap
call ClearSprites
@ -169,10 +169,10 @@ GameFreakPresents_Star:
xor a
ld [wIntroSceneFrameCounter], a
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_GS_INTRO_STAR
ld a, SPRITE_ANIM_OBJ_GS_INTRO_STAR
call InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld [hl], $a0 ; star path radius
@ -187,7 +187,7 @@ GameFreakPresents_PlaceLogo:
ret z
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
ld a, SPRITE_ANIM_OBJ_GAMEFREAK_LOGO
call InitSpriteAnimStruct
call GameFreakPresents_NextScene
@ -293,7 +293,7 @@ GameFreakPresents_Sparkle:
; set up a new sparkle sprite
push af
depixel 11, 11
ld a, SPRITE_ANIM_INDEX_GS_INTRO_SPARKLE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_SPARKLE
call InitSpriteAnimStruct
pop af
@ -314,10 +314,10 @@ GameFreakPresents_Sparkle:
ld a, [de]
ld [hl], a ; angle
inc de
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld [hl], 0
inc hl ; SPRITEANIMSTRUCT_0D
inc hl ; SPRITEANIMSTRUCT_VAR2
ld a, [de]
ld [hl], a ; distance
ret

View File

@ -10,7 +10,7 @@ OpeningCutscene::
ret
.Init:
farcall InitEffectObject
farcall ClearSpriteAnims
xor a
ld [wIntroJumptableIndex], a
ldh [hBGMapMode], a
@ -27,14 +27,14 @@ OpeningCutscene::
bit 7, a
jr nz, .Finish
farcall EffectObjectJumpNoDelay
farcall PlaySpriteAnimations
call IntroSceneJumper
call DelayFrame
and a
ret
.Finish:
callfar InitEffectObject
callfar ClearSpriteAnims
call ClearSprites
call DelayFrame
xor a
@ -80,7 +80,7 @@ IntroScene1:
ld c, 0
call GetSGBLayout
callfar InitEffectObject
callfar ClearSpriteAnims
call Intro_ResetLYOverrides
@ -123,9 +123,9 @@ IntroScene1:
jr nz, .draw_gfx
ld hl, wSpriteAnimDict
ld a, SPRITE_ANIM_INDEX_GS_INTRO_BUBBLE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_BUBBLE
ld [hli], a
ld a, SPRITE_ANIM_DICT_DEFAULT
ld a, SPRITE_ANIM_DICT_NULL
ld [hli], a
xor a
@ -359,7 +359,7 @@ Intro_InitBubble:
ld e, [hl]
inc hl
ld d, [hl]
ld a, SPRITE_ANIM_INDEX_GS_INTRO_BUBBLE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_BUBBLE
call InitSpriteAnimStruct
ret
@ -409,7 +409,7 @@ Intro_InitMagikarps:
ret
.PlaceMagikarp:
ld a, SPRITE_ANIM_INDEX_GS_INTRO_MAGIKARP
ld a, SPRITE_ANIM_OBJ_GS_INTRO_MAGIKARP
call InitSpriteAnimStruct
ret
@ -422,7 +422,7 @@ Intro_InitOmanyte:
; fallthrough
.PlaceOmanyte:
ld a, SPRITE_ANIM_INDEX_GS_INTRO_OMANYTE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_OMANYTE
call InitSpriteAnimStruct
ret
@ -431,13 +431,13 @@ Intro_InitLapras:
and %00011111
ret nz
depixel 16, 24
ld a, SPRITE_ANIM_INDEX_GS_INTRO_LAPRAS
ld a, SPRITE_ANIM_OBJ_GS_INTRO_LAPRAS
call InitSpriteAnimStruct
ret
Intro_UnusedInitAerodactyl: ; unreferenced
depixel 2, 0
ld a, SPRITE_ANIM_INDEX_UNUSED_INTRO_AERODACTYL
ld a, SPRITE_ANIM_OBJ_UNUSED_INTRO_AERODACTYL
call InitSpriteAnimStruct
ret
@ -602,7 +602,7 @@ IntroScene6:
ld b, SGB_GS_INTRO
ld c, 1
call GetSGBLayout
callfar InitEffectObject
callfar ClearSpriteAnims
call Intro_ResetLYOverrides
ld hl, vChars2
ld de, IntroForestGFX
@ -636,9 +636,9 @@ IntroScene6:
jr nz, .load
ld hl, wSpriteAnimDict
ld a, SPRITE_ANIM_INDEX_GS_INTRO_OMANYTE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_OMANYTE
ld [hli], a
ld a, SPRITE_ANIM_DICT_DEFAULT
ld a, SPRITE_ANIM_DICT_NULL
ld [hli], a
xor a
ldh [hSCY], a
@ -759,28 +759,28 @@ Intro_InitNote:
jr z, .SmallerNote
depixel 11, 6, 4, 0
ld a, SPRITE_ANIM_INDEX_GS_INTRO_NOTE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_NOTE
call InitSpriteAnimStruct
ret
.SmallerNote:
depixel 10, 6, 4, 0
ld a, SPRITE_ANIM_INDEX_GS_INTRO_SMALLER_NOTE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_SMALLER_NOTE
call InitSpriteAnimStruct
ret
Intro_InitJigglypuff:
depixel 14, 6
ld a, SPRITE_ANIM_INDEX_GS_INTRO_JIGGLYPUFF
ld a, SPRITE_ANIM_OBJ_GS_INTRO_JIGGLYPUFF
call InitSpriteAnimStruct
ret
Intro_InitPikachu:
depixel 14, 24
ld a, SPRITE_ANIM_INDEX_GS_INTRO_PIKACHU
ld a, SPRITE_ANIM_OBJ_GS_INTRO_PIKACHU
call InitSpriteAnimStruct
depixel 14, 24
ld a, SPRITE_ANIM_INDEX_GS_INTRO_PIKACHU_TAIL
ld a, SPRITE_ANIM_OBJ_GS_INTRO_PIKACHU_TAIL
call InitSpriteAnimStruct
ret
@ -791,7 +791,7 @@ IntroScene10:
ld b, SGB_GS_INTRO
ld c, 2
call GetSGBLayout
callfar InitEffectObject
callfar ClearSpriteAnims
call Intro_ResetLYOverrides
call Intro_BlankTilemapAndBGMap
@ -811,9 +811,9 @@ IntroScene10:
call Request2bpp
ld hl, wSpriteAnimDict
ld a, SPRITE_ANIM_INDEX_GS_INTRO_OMANYTE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_OMANYTE
ld [hli], a
ld a, SPRITE_ANIM_DICT_DEFAULT
ld a, SPRITE_ANIM_DICT_NULL
ld [hli], a
ld a, 0
@ -1134,7 +1134,7 @@ Intro_AnimateFireball:
and 3
ret nz
depixel 12, 10, 4, 4
ld a, SPRITE_ANIM_INDEX_GS_INTRO_FIREBALL
ld a, SPRITE_ANIM_OBJ_GS_INTRO_FIREBALL
call InitSpriteAnimStruct
ld hl, hSCX
dec [hl]
@ -1144,13 +1144,13 @@ Intro_AnimateFireball:
Intro_LoadBlastoiseObject:
depixel 22, 1
ld a, SPRITE_ANIM_INDEX_GS_INTRO_BLASTOISE
ld a, SPRITE_ANIM_OBJ_GS_INTRO_BLASTOISE
call InitSpriteAnimStruct
ret
Intro_LoadVenusaurObject:
depixel 22, 20
ld a, SPRITE_ANIM_INDEX_GS_INTRO_VENUSAUR
ld a, SPRITE_ANIM_OBJ_GS_INTRO_VENUSAUR
call InitSpriteAnimStruct
ret

View File

@ -64,7 +64,7 @@ TitleSequenceInit::
call DisableLCD
call ClearSprites
farcall InitEffectObject
farcall ClearSpriteAnims
ld hl, vChars0
ld bc, vBGMap0 - vChars0
@ -152,7 +152,7 @@ TitleSequenceInit::
ld d, [hl]
inc hl
push hl
ld a, SPRITE_ANIM_INDEX_GS_TITLE_FLAME_NOTE
ld a, SPRITE_ANIM_OBJ_GS_TITLE_FLAME_NOTE
call InitSpriteAnimStruct
pop hl
pop bc
@ -176,7 +176,7 @@ TitleScreenMain::
bit 7, a
jr nz, .exit
call TitleScreenSequence
farcall EffectObjectJumpNoDelay
farcall PlaySpriteAnimations
call DelayFrame
and a
ret

View File

@ -1,6 +1,60 @@
INCLUDE "constants.asm"
SECTION "engine/palettes.asm@Overworld fade", ROMX
SECTION "engine/palettes.asm", ROMX
UpdateTimeOfDayPal:
call UpdateTime
call GetTimePalette
ret
_TimeOfDayPals:
ld hl, wTimeOfDayPalFlags
bit CLEAR_PALSET_F, [hl]
ret nz
ld a, [wTimeOfDay]
ld hl, wCurTimeOfDay
cp [hl]
ret z
call OverworldFadeOut
call GetTimePalette
call RestoreOverworldMapTiles
call OverworldFadeIn
ret
_LABEL_8C2FE_:
ld hl, wTimeOfDayPalFlags
res CLEAR_PALSET_F, [hl]
call OverworldFadeOut
call UpdateTime
call GetTimePalette
call RestoreOverworldMapTiles
call OverworldFadeIn
ret
_LABEL_8C313_:
ld hl, wTimeOfDayPalFlags
set CLEAR_PALSET_F, [hl]
call OverworldFadeOut
call GetTimePalette
call RestoreOverworldMapTiles
call OverworldFadeIn
ret
Function8c325:
call OverworldFadeOut
call UpdateTime
call GetTimePalette
call RestoreOverworldMapTiles
call OverworldFadeIn
ret
_UpdateTimePals:
ld c, $09
call GetFadeStep
call ApplyPalettesAtHL
ret
OverworldFadeIn::
ld c, 0
@ -16,9 +70,91 @@ OverworldFadeOut::
call FadeTowardsBlack
ret
ReplaceTimeOfDayPals::
ld hl, TimeOfDayPalsets
ld a, [wMapPermissions] ; wMapPermissions = $D661
cp TOWN
jr z, .get_palset
; TODO: merge this
SECTION "engine/palettes.asm@Palette fading, part 2?", ROMX
cp ROUTE
jr z, .get_palset
inc hl
cp CAVE
jr z, .get_palset
; INDOOR, ENVIRONMENT_5, GATE, DUNGEON
inc hl
.get_palset
ld a, [hl]
ld [wTimeOfDayPalset], a
ret
TimeOfDayPalsets:
db %11100100, %11100100, %01100000
GetTimePalette::
ld hl, wTimeOfDayPalFlags
bit CLEAR_PALSET_F, [hl]
jr nz, .ClearPalset
ld a, [wTimeOfDay]
ld [wCurTimeOfDay], a
ld e, a
ld d, $00
ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.Jumptable:
dw .Day, .Night, .Darkness, .Morning
.Day:
xor a
ldh [hOverworldFlashlightEffect], a
ld a, [wTimeOfDayPalset]
and %00000011
ld [wTimeOfDayPal], a
ret
.Night:
xor a
ldh [hOverworldFlashlightEffect], a
ld a, [wTimeOfDayPalset]
and %00001100
srl a
srl a
ld [wTimeOfDayPal], a
ret
.Darkness:
ld a, $03
ldh [hOverworldFlashlightEffect], a
ld a, [wTimeOfDayPalset]
and %00110000
swap a
ld [wTimeOfDayPal], a
ret
.Morning:
xor a
ldh [hOverworldFlashlightEffect], a
ld a, [wTimeOfDayPalset]
and %11000000
rlca
rlca
ld [wTimeOfDayPal], a
ret
.ClearPalset:
xor a
ldh [hOverworldFlashlightEffect], a
ld [wTimeOfDayPal], a
ret
ApplyPalettesAtHL::
push hl

View File

@ -0,0 +1,492 @@
INCLUDE "constants.asm"
SECTION "engine/dumps/bank23.asm@ClearSpriteAnims", ROMX
ClearSpriteAnims::
ld hl, wSpriteAnimData
ld bc, wSpriteAnimDataEnd - wSpriteAnimData
.loop
ld [hl], 0
inc hl
dec bc
ld a, c
or b
jr nz, .loop
ret
PlaySpriteAnimationsAndDelayFrame::
call PlaySpriteAnimations
call DelayFrame
ret
PlaySpriteAnimations::
push hl
push de
push bc
push af
ld a, LOW(wShadowOAM)
ld [wCurSpriteOAMAddr], a
call DoNextFrameForFirst16Sprites
pop af
pop bc
pop de
pop hl
ret
DoNextFrameForFirst16Sprites::
ld hl, wSpriteAnimationStructs
ld e, NUM_SPRITE_ANIM_STRUCTS
.loop
ld a, [hl]
and a
jr z, .next
ld c, l
ld b, h
push hl
push de
call DoSpriteAnimFrame ; Uses a massive dw
call UpdateAnimFrame
pop de
pop hl
jr c, .done
.next
ld bc, SPRITEANIMSTRUCT_LENGTH
add hl, bc
dec e
jr nz, .loop
ld a, [wCurSpriteOAMAddr]
ld l, a
ld h, HIGH(wShadowOAM)
; Clear (wShadowOAM + [wCurSpriteOAMAddr] --> Sprites + $40)
.loop2
ld a, l
cp LOW(wShadowOAMEnd)
jr nc, .done
xor a
ld [hli], a
jr .loop2
.done:
ret
; Initialize animation a at pixel x=e, y=d
_InitSpriteAnimStruct::
; Find if there's any room in the wSpriteAnimationStructs array, which is 10x16
push de
push af
ld hl, wSpriteAnimationStructs
ld e, NUM_SPRITE_ANIM_STRUCTS
.loop
ld a, [hl]
and a
jr z, .found
ld bc, SPRITEANIMSTRUCT_LENGTH
add hl, bc
dec e
jr nz, .loop
pop af
pop de
; We've reached the end. There is no more room here.
; Return carry.
scf
ret
.found
; Back up the structure address to bc.
pop af
ld c, l
ld b, h
; Get row a of SpriteAnimObjects, copy the pointer into de
ld hl, wSpriteAnimCount
inc [hl]
ld e, a
ld d, $00
ld hl, SpriteAnimObjects
add hl, de
add hl, de
add hl, de
ld e, l
ld d, h
; Set hl to the first field (field 0) in the current structure.
ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
; Load the index.
ld a, [wSpriteAnimCount]
ld [hlI], a
; Copy the table entry to the next two fields.
ld a, [de]
ld [hli], a ; SPRITEANIMSTRUCT_FRAMESET_ID
inc de
ld a, [de]
ld [hli], a ; SPRITEANIMSTRUCT_ANIM_SEQ_ID
inc de
; Look up the third field in the wSpriteAnimDict mapping.
; Take the mapped value and load it in.
ld a, [de]
call GetSpriteAnimVTile
ld [hli], a ; SPRITEANIMSTRUCT_TILE_ID
pop de
; Set hl to field 4 (X coordinate). Kinda pointless, because we're presumably already here.
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
; Load the original value of de into here.
ld a, e
ld [hli], a ; SPRITEANIMSTRUCT_XCOORD
ld a, d
ld [hli], a ; SPRITEANIMSTRUCT_YCOORD
; load 0 into the next four fields
xor a
ld [hli], a ; SPRITEANIMSTRUCT_XOFFSET
ld [hli], a ; SPRITEANIMSTRUCT_YOFFSET
xor a
ld [hli], a ; SPRITEANIMSTRUCT_DURATION
ld [hli], a ; SPRITEANIMSTRUCT_DURATIONOFFSET
; load -1 into the next field
dec a
ld [hli], a ; SPRITEANIMSTRUCT_FRAME
; load 0 into the last five fields
xor a
ld [hli], a ; SPRITEANIMSTRUCT_JUMPTABLE_INDEX
ld [hli], a ; SPRITEANIMSTRUCT_VAR1
ld [hli], a ; SPRITEANIMSTRUCT_VAR2
ld [hli], a ; SPRITEANIMSTRUCT_VAR3
ld [hl], a ; SPRITEANIMSTRUCT_VAR4
; back up the address of the first field to wSpriteAnimAddrBackup
ld a, c
ld [wSpriteAnimAddrBackup], a
ld a, b
ld [wSpriteAnimAddrBackup + 1], a
ret
; Clear the index field of the struct in bc.
DeinitializeSprite::
ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $00
ret
UpdateAnimFrame::
; Init RAM and read from memory array
call InitSpriteAnimBuffer
call GetSpriteAnimFrame
cp oamwait_command
jr z, .done
cp oamdelete_command
jr z, .delete
call GetFrameOAMPointer
; Add byte to [wCurAnimVTile]
ld a, [wCurAnimVTile]
add [hl]
ld [wCurAnimVTile], a
inc hl
; Load pointer into hl
ld a, [hli]
ld h, [hl]
ld l, a
push bc
ld a, [wCurSpriteOAMAddr] ; wCurSpriteOAMAddr = $C4BD
ld e, a
ld d, HIGH(wShadowOAM)
ld a, [hli]
ld c, a ; number of objects
.loop
; first byte: y (px)
; [de] = [wCurAnimYCoord] + [wCurAnimYOffset] + [wGlobalAnimYOffset] + AddOrSubtractY([hl])
ld a, [wCurAnimYCoord]
ld b, a
ld a, [wCurAnimYOffset]
add b
ld b, a
ld a, [wGlobalAnimYOffset]
add b
ld b, a
call AddOrSubtractY
add b
ld [de], a
inc hl
inc de
; second byte: x (px)
; [de] = [wCurAnimXCoord] + [wCurAnimXOffset] + [wGlobalAnimXOffset] + AddOrSubtractX([hl])
ld a, [wCurAnimXCoord]
ld b, a
ld a, [wCurAnimXOffset]
add b
ld b, a
ld a, [wGlobalAnimXOffset]
add b
ld b, a
call AddOrSubtractX
add b
ld [de], a
inc hl
inc de
; third byte: vtile
; [de] = [wCurAnimVTile] + [hl]
ld a, [wCurAnimVTile]
add [hl]
ld [de], a
inc hl
inc de
; fourth byte: attributes
; [de] = GetSpriteOAMAttr([hl])
call GetSpriteOAMAttr
ld [de], a
inc hl
inc de
ld a, e
ld [wCurSpriteOAMAddr], a
cp LOW(wShadowOAMEnd)
jr nc, .reached_the_end
dec c
jr nz, .loop
pop bc
jr .done
.delete
; Removes the object from the screen, as opposed to `oamend` which just stops all motion
call DeinitializeSprite
.done
and a
ret
.reached_the_end
pop bc
scf
ret
AddOrSubtractY:
push hl
ld a, [hl]
ld hl, wCurSpriteOAMFlags
bit OAM_Y_FLIP, [hl]
jr z, .ok
; -8 - a
add 8
xor $ff
inc a
.ok
pop hl
ret
AddOrSubtractX:
push hl
ld a, [hl]
ld hl, wCurSpriteOAMFlags
bit OAM_X_FLIP, [hl]
jr z, .ok
; -8 - a
add 8
xor $ff
inc a
.ok:
pop hl
ret
GetSpriteOAMAttr:
ld a, [wSpriteAnimAddrBackup] ; wSpriteAnimAddrBackup = $C4C0
ld b, a
ld a, [hl]
xor b
and PRIORITY | Y_FLIP | X_FLIP
ld b, a
ld a, [hl]
and OBP_NUM
or b
ret
InitSpriteAnimBuffer::
xor a
ld [wSpriteAnimAddrBackup], a
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld a, [hli]
ld [wCurAnimVTile], a
ld a, [hli]
ld [wCurAnimXCoord], a
ld a, [hli]
ld [wCurAnimYCoord], a
ld a, [hli]
ld [wCurAnimXOffset], a
ld a, [hli]
ld [wCurAnimYOffset], a
ret
; a = wSpriteAnimDict[a] if a in wSpriteAnimDict else vtile offset $00
GetSpriteAnimVTile::
push hl
push bc
ld hl, wTileMapBackup
ld b, a
ld c, NUM_SPRITEANIMDICT_ENTRIES
.loop
ld a, [hli]
cp b
jr z, .ok
inc hl
dec c
jr nz, .loop
xor a
jr .done
.ok
ld a, [hl]
.done
pop bc
pop hl
ret
; Unreferenced
ld a, [wSpriteAnimAddrBackup]
_ReinitSpriteAnimFrame::
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld [hl], 0
ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
ld [hl], -1
ret
GetSpriteAnimFrame::
.loop
ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld a, [hl]
and a
jr z, .next_frame
dec [hl]
call .GetPointer
ld a, [hli]
push af
jr .okay
.next_frame
ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
inc [hl]
call .GetPointer
ld a, [hli]
cp oamrestart_command
jr z, .restart
cp oamend_command
jr z, .repeat_last
push af
ld a, [hl]
push hl
and ~(Y_FLIP << 1 | X_FLIP << 1)
ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
add hl, bc
add [hl]
ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld [hl], a
pop hl
.okay
; The << 1 is compensated in the "oamframe" macro
ld a, [hl]
and Y_FLIP << 1 | X_FLIP << 1
srl a
ld [wCurSpriteOAMFlags], a
pop af
ret
.repeat_last
xor a
ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld [hl], a
ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
dec [hl]
dec [hl]
jr GetSpriteAnimFrame
.restart
xor a
ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld [hl], a
dec a
ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
ld [hl], a
jr GetSpriteAnimFrame
.GetPointer
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld e, [hl]
ld d, $00
ld hl, SpriteAnimFrameData
add hl, de
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
ld l, [hl]
ld h, $00
add hl, hl
add hl, de
ret
GetFrameOAMPointer:
ld e, a
ld d, $00
ld hl, SpriteAnimOAMData
add hl, de
add hl, de
add hl, de
ret
; Unreferenced in final game
LoadSpriteAnimGFX::
push hl
ld l, a
ld h, $00
add hl, hl
add hl, hl
ld de, SpriteAnimGFX
add hl, de
ld c, [hl]
inc hl
ld b, [hl]
inc hl
ld e, [hl]
inc hl
ld d, [hl]
pop hl
push bc
call Request2bpp
pop bc
ret
INCLUDE "data/sprite_anims/objects.inc"
INCLUDE "engine/sprite_anims/functions.inc"
INCLUDE "data/sprite_anims/framesets.inc"
INCLUDE "data/sprite_anims/oam.inc"
INCLUDE "data/sprite_anims/gfx.inc"
Sprites_Cosine:
; a = d * cos(a * pi/32)
add %010000 ; cos(x) = sin(x + pi/2)
; fallthrough
Sprites_Sine:
; a = d * sin(a * pi/32)
calc_sine_wave

File diff suppressed because it is too large Load Diff

View File

@ -169,13 +169,13 @@ TrainerGear_Loop:
bit TRAINERGEAR_END_LOOP_F, a
jr nz, .done
call TrainerGear_Jumptable
farcall EffectObjectJumpNoDelay
farcall PlaySpriteAnimations
call TrainerGear_UpdateTime
call DelayFrame
and a
ret
.done
callfar InitEffectObject
callfar ClearSpriteAnims
call ClearSprites
xor a
ldh [hSCX], a
@ -224,17 +224,17 @@ TrainerGear_Next:
ret
TrainerGear_InitPointerSprite:
callfar InitEffectObject
callfar ClearSpriteAnims
ld de, PointerGFX
ld hl, vChars0 tile TRAINERGEAR_GFX_POINTER
lb bc, BANK(PointerGFX), 4
call Request2bpp
ld a, SPRITE_ANIM_DICT_29
ld a, SPRITE_ANIM_DICT_ARROW_CURSOR
ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], TRAINERGEAR_GFX_POINTER
depixel 4, 3, 4, 4
ld a, SPRITE_ANIM_INDEX_TRAINERGEAR_POINTER
ld a, SPRITE_ANIM_OBJ_TRAINERGEAR_POINTER
call InitSpriteAnimStruct
call TrainerGear_Next
ret
@ -373,7 +373,7 @@ TrainerGear_Radio:
call WaitBGMap
depixel 9, 4, 4, 3
ld a, SPRITE_ANIM_INDEX_TRAINERGEAR_POINTER
ld a, SPRITE_ANIM_OBJ_TRAINERGEAR_POINTER
call InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
@ -382,7 +382,7 @@ TrainerGear_Radio:
add hl, bc
ld [hl], TRAINERGEAR_GFX_POINTER
depixel 8, 6
ld a, SPRITE_ANIM_INDEX_RADIO_TUNING_KNOB
ld a, SPRITE_ANIM_OBJ_RADIO_FREQUENCY_METER
call InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
@ -428,7 +428,7 @@ TrainerGear_RadioJumptable:
ret
.AdvanceDial:
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
and a
@ -457,7 +457,7 @@ TrainerGear_RadioJumptable:
ret
.TurnBackDial:
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld a, [hl]
and a
@ -487,14 +487,14 @@ TrainerGear_RadioJumptable:
ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld d, [hl]
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld e, [hl]
pop hl
add hl, de
ld e, l
ld d, h
ld hl, SPRITEANIMSTRUCT_0C
ld hl, SPRITEANIMSTRUCT_VAR1
add hl, bc
ld [hl], e
ld hl, SPRITEANIMSTRUCT_XOFFSET
@ -623,7 +623,7 @@ TrainerGear_PhoneJoypad:
ret
TrainerGear_ClearView:
callfar InitEffectObject
callfar ClearSpriteAnims
call ClearSprites
call WaitForAutoBgMapTransfer
coord hl, 0, 3

View File

@ -1,92 +0,0 @@
INCLUDE "constants.asm"
SECTION "engine/unknown11d32.asm", ROMX
Unknown11d32:
ld hl, hJoySum
ld a, [hl]
and D_UP
jr nz, .upJump
ld a, [hl]
and D_DOWN
jr nz, .downJump
ld a, [hl]
and D_LEFT
jr nz, .leftJump
ld a, [hl]
and D_RIGHT
jr nz, .rightJump
ret
.rightJump
ld hl, $000C
add hl, bc
ld a, [hl]
cp $0D
jr nc, .skip
inc [hl]
jr .escape
.skip
ld [hl], 0
jr .escape
.leftJump
ld hl, $000C
add hl, bc
ld a, [hl]
and a
jr z, .skip2
dec [hl]
jr .escape
.skip2
ld [hl], $0D
jr .escape
.downJump
ld hl, $000D
add hl, bc
ld a, [hl]
cp 4
jr nc, .skip3
inc [hl]
jr .escape
.skip3
ld [hl], 00
jr .escape
.upJump
ld hl, $000D
add hl, bc
ld a, [hl]
and a
jr z, .skip4
dec [hl]
jr .escape
.skip4
ld [hl], 4
jr .escape
.escape
ld hl, $000C
add hl, bc
ld e, [hl]
ld d, 0
ld hl, .Offsets1
add hl, de
ld a, [hl]
ld hl, $0006
add hl, bc
ld [hl], a
ld hl, $000D
add hl, bc
ld e, [hl]
ld d, 0
ld hl, .Offsets2
add hl, de
ld a, [hl]
ld hl, $0007
add hl, bc
ld [hl], a
ret
.Offsets1:
db $00, $08, $10, $18, $20, $28, $30, $48, $50, $58, $60, $68, $70, $78
.Offsets2:
db $00, $08, $18, $20, $30

View File

@ -379,6 +379,7 @@ INCBIN "gfx/battle_anims/pointer.2bpp"
INCBIN "gfx/battle_anims/attack_animations_2.2bpp"
SECTION "gfx.asm@Pokemon Party Sprites", ROMX
MenuMonIconGFX::
PoliwagIcon:: INCBIN "gfx/icons/poliwag.2bpp"
JigglypuffIcon:: INCBIN "gfx/icons/jigglypuff.2bpp"
DiglettIcon:: INCBIN "gfx/icons/diglett.2bpp"

View File

@ -136,12 +136,12 @@ JoyTitleScreenInput::
GetJoypadDebounced::
; Update hJoySum joypad input from either hJoyDown or
; hJoyState depending on hJoyDebounceSrc.
; hJoyState depending on hInMenu.
; hJoyState is only updated every 5 frames and
; the update is delayed by 15 frames after any button
; press.
call GetJoypad
ldh a, [hJoyDebounceSrc]
ldh a, [hInMenu]
and a
ldh a, [hJoyDown]
jr z, .joyDownSrc

View File

@ -76,12 +76,12 @@ GetBattleAnimByte::
ret
InitSpriteAnimStruct::
ld [wSpriteAnimIDBuffer], a
ld [wSpriteAnimAddrBackup], a
ldh a, [hROMBank]
push af
ld a, BANK(_InitSpriteAnimStruct)
call Bankswitch
ld a, [wSpriteAnimIDBuffer]
ld a, [wSpriteAnimAddrBackup]
call _InitSpriteAnimStruct
pop af
call Bankswitch

View File

@ -174,7 +174,6 @@ ROMX $04
"engine/menu/text_entry.asm@mail"
"gfx.asm@Mail Icon GFX"
"engine/menu/text_entry.asm@mail2"
"engine/unknown11d32.asm"
"engine/menu/start_menu.asm"
"gfx.asm@Trainer Card GFX"
@ -257,7 +256,7 @@ ROMX $0d
ROMX $0e
org $4000
org $43cd
org $4391
"engine/dumps/bank0e.asm"
org $4494
"gfx.asm@PokeBalls GFX"
@ -276,14 +275,7 @@ ROMX $0f
ROMX $10
org $4000
org $4943
"data/pokemon/dex_order_alpha.asm"
org $4b45
"engine/dumps/bank10.asm@ConvertMon_2to1"
org $4ecc
"data/types/search_strings.asm"
org $5068
"data/types/search_types.asm"
"engine/dumps/bank10.asm"
org $52a1
"data/moves/names.asm"
org $58b6
@ -379,16 +371,18 @@ ROMX $21
ROMX $23
org $4000
"engine/dumps/bank23.asm@AnimateTilesetImpl"
org $433e
"engine/palettes.asm@Overworld fade"
org $43d1
"engine/palettes.asm@Palette fading, part 2?"
org $42dc
"engine/palettes.asm"
org $446d
"engine/dumps/bank23.asm@RestoreOverworldMapTiles"
org $44be
"engine/battle/battle_transitions.asm"
org $4cfd
"engine/dumps/bank23.asm@ClearSpriteAnims"
org $60cc
"gfx.asm@Pokemon Party Sprites"
org $722a
"data/pokemon/menu_icons.asm"
org $70cc
"engine/gfx/mon_icons.asm"
ROMX $24
org $4000

View File

@ -15,3 +15,8 @@ DEF color EQUS "+ PAL_COLOR_SIZE *"
DEF tiles EQUS "* LEN_2BPP_TILE"
DEF tile EQUS "+ LEN_2BPP_TILE *"
MACRO dbsprite
; x tile, y tile, x pixel, y pixel, vtile offset, attributes
db (\2 * TILE_WIDTH) % $100 + \4, (\1 * TILE_WIDTH) % $100 + \3, \5, \6
ENDM

38
macros/oam_anims.asm Normal file
View File

@ -0,0 +1,38 @@
; Battle and sprite OAM animations
MACRO oamframe
db \1 ; duration
DEF x = \2
assert !(x & (1 << (OAM_X_FLIP + 1) | 1 << (OAM_Y_FLIP + 1))), \
"oamframe duration overflows into X/Y flip bits"
if _NARG > 2
rept _NARG - 2
DEF x |= 1 << (\3 + 1)
shift
endr
endc
db x ; flags
ENDM
const_def -1, -1
const oamend_command ; $ff
MACRO oamend
db oamend_command
ENDM
const oamrestart_command ; $fe
MACRO oamrestart
db oamrestart_command
ENDM
const oamwait_command ; $fd
MACRO oamwait
db oamwait_command
db \1 ; frames
ENDM
const oamdelete_command ; $fc
MACRO oamdelete
db oamdelete_command
ENDM

View File

@ -52,7 +52,7 @@ hJoyDown:: db
hJoyState:: db
hJoySum:: db
hJoyDebounceSrc:: db
hInMenu:: db
; hJoySum will be updated from
; 00 - hJoyDown
; <> - hJoyState

View File

@ -2,9 +2,13 @@ INCLUDE "constants.asm"
SECTION "Sprite Buffers", SRAM
UNION
sScratch:: ds SCREEN_WIDTH * SCREEN_HEIGHT
NEXTU
sSpriteBuffer0:: ds SPRITEBUFFERSIZE
sSpriteBuffer1:: ds SPRITEBUFFERSIZE
sSpriteBuffer2:: ds SPRITEBUFFERSIZE
ENDU
SECTION "Unknown, bank 0", SRAM

View File

@ -109,8 +109,12 @@ wc408:: db
wc409:: db
NEXTU
wSpriteAnimDict:: ds NUM_SPRITEANIMDICT_ENTRIES * 2
wSpriteAnimData::
; wSpriteAnimDict pairs keys with values
; keys: SPRITE_ANIM_DICT_* indexes (taken from SpriteAnimObjects)
; values: vTiles0 offsets
wSpriteAnimDict::
ds NUM_SPRITEANIMDICT_ENTRIES * 2
wSpriteAnimationStructs::
; field 0: index
@ -157,17 +161,31 @@ wHourBuffer:: db
wMinuteBuffer:: db
ds 150
wc4bd:: db
ds 2
wSpriteAnimIDBuffer:: db
UNION
wCurSpriteOAMAddr:: dw
NEXTU
ds 1
wCurIcon:: db
ENDU
wCurIconTile:: db
ds 6
UNION
wCurSpriteOAMFlags:: db
NEXTU
wSpriteAnimAddrBackup:: dw
ENDU
wGlobalAnimYOffset::
wc4c7:: db
wCurAnimVTile:: db
wGlobalAnimXOffset::
wc4c8:: db
wCurAnimXCoord:: db
wCurAnimYCoord:: db
wCurAnimXOffset:: db
wCurAnimYOffset:: db
wGlobalAnimYOffset:: db
wGlobalAnimXOffset:: db
wSpriteAnimDataEnd::
ds 7
@ -224,8 +242,45 @@ wMemoryGameLastMatches:: ds 5
wMemoryGameCounter:: db
wMemoryGameNumCardsMatched:: db
ENDU
NEXTU
ds 200
wPokedexOrder:: ds $100
wPokedexOrderEnd::
wDexListingScrollOffset:: db
wPokedexHandCursorPosIndex:: db
wCurDexMode:: db
wPokedexInputFlags:: db
wPokedexHandCursorStructAddress:: dw
wPokedexCursorStructAddress:: dw
wPokedexSlowpokeAnimStructAddress:: dw
wDexListingEnd:: db
wDexTempCursorY:: db
wDexTempListingScrollOffset:: db
wDexListingCursor:: db
wDexUnownCount::
wDexSearchMonType1:: db
wDexUnownModeListLength::
wDexSearchMonType2:: db
wDexArrowCursorPosIndex:: db
wDexCurUnownIndex::
wDexConvertedMonType:: db
wDexSearchResultCount:: db
wc5e3:: db
wc5e4:: db
wc5e5:: db
wc5e6:: db
wDexPlaySlowpokeAnimation:: db
ENDU
SECTION "Map Buffer", WRAM0
@ -311,8 +366,9 @@ wPicrossCurrentGridNumber:: ds 1
wPicrossCurrentCellNumber:: ds 1
wPicrossCurrentCellType:: ds 1
wPicrossJoypadAction:: ds 1
ds 1
wc607:: ds 1
wPicrossJoyStateBuffer:: ds 1
wPicrossCursorMovementDelay:: ds 1
wPicrossMarkedCells:: ds 4*4*4*4
ds 1
wPicrossLayoutBuffer:: ds $20
@ -466,7 +522,7 @@ wEnemyDamageTaken:: dw
UNION
wBattleReward:: ds 3
NEXTU
wca59:: ds 1
wPicrossAnimateDust:: ds 1
ENDU
wBattleAnimParam::
@ -645,6 +701,8 @@ wMemoryGameCardChoice::
wFlyDestination::
wIntroSceneFrameCounter::
wTrainerGearPointerPosition::
wPokedexSlowpokeNumSearchEntries::
wNestIconBlinkCounter::
wBattleTransitionCounter:: db
wBattleTransitionSineWaveOffset::
@ -856,13 +914,12 @@ SECTION "CCD0", WRAM0[$CCD0]
wccd0:: ds 1
wPlayerHPPal:: ds 1
wEnemyHPPal:: ds 1
wccd3:: ds 1
ds 5
wHPPals:: ds PARTY_LENGTH
wCurHPPal:: db
wccd9:: ds 1
ds 7
SECTION "CCE1", WRAM0[$CCE1]
; Todo: Replace instances of wcce1-f4 with "wSGBPals + #"
wSGBPals:: ; ds PALPACKET_LENGTH * 3
wcce1:: ds 1
@ -1189,6 +1246,8 @@ wBattleHasJustStarted:: db
wNamedObjectIndexBuffer::
wNumSetBits::
wTextDecimalByte::
wTempIconSpecies::
wTempSpecies::
wMoveGrammar::
wTypeMatchup::
wCurType::

View File

@ -28,6 +28,7 @@
0A:4C98 LinkTextboxAtHL
0A:4D6E Function28d6e
0A:4DA4 Function28da4
0A:533B TradeAnim_AnimateTrademonInTube
0A:5A1F Function29a1f ; prints text
0A:5ABF Function29abf ; prints text
@ -42,43 +43,23 @@
;0E:43CD DrawPlayerHUDBorder
;0E:43FD DrawEnemyHUDBorder
;0E:4415 PlaceHUDBorderTiles
;0E:4431 Function38431
;0E:4431 LinkBattle_TrainerHuds
0E:44D4 Function384d4
0E:4F45 Function38f45
0E:50E9 Battle_GetTrainerName
10:4000 Function40000
10:40A6 ShowPokedexMenu
10:4AC7 Function40ac7
10:4B07 Function40b07
;10:4B45 ConvertMon_2to1
;10:4B5C ConvertMon_1to2
10:5F93 Function4af93
10:5FA1 Function41fa1
10:61F8 Function421f8
10:6252 FillMoves
10:58B8 Data418b8
11:4000 _DisplayDexEntry
14:7274 Unknown53274
23:4325 Function8c325
23:42DC UpdateTimeOfDayPal
23:42E3 _TimeOfDayPals
23:4335 _UpdateTimePals
23:4354 ReplaceTimeOfDayPals
23:4370 GetTimePalette
23:4940 Function8c940
23:49C6 Function8c9c6
23:4CFD InitEffectObject
23:4D0C PlaySpriteAnimationsAndDelayFrame
23:4d13 EffectObjectJumpNoDelay
23:4D24 DoNextFrameForFirst16Sprites
23:4d52 _InitSpriteAnimStruct
23:60cc MenuMonIconGfx
23:70CC Function8f0cc
23:70E3 Function8f0e3
23:71CB FreezeMonIcons
23:71F2 Function8f1f2
32:76FF Functioncb6ff
32:7710 Functioncb710
@ -100,6 +81,9 @@
38:4E5F Cursor_AnimateCursor
38:4EA8 Cursor_InterpretJoypad
; Poker Cursor AnimSeq Function
38:5054 Functione1054
; Cry header shims
3C:57C5 CryHeader_f17c5