summaryrefslogtreecommitdiff
path: root/src/data
diff options
context:
space:
mode:
Diffstat (limited to 'src/data')
-rw-r--r--src/data/duel/duel_configurations.asm370
-rw-r--r--src/data/multichoice.asm59
-rw-r--r--src/data/palette_pointers.asm170
-rw-r--r--src/data/scenes.asm260
-rw-r--r--src/data/script_table.asm105
-rw-r--r--src/data/sprite_animation_pointers.asm224
6 files changed, 1188 insertions, 0 deletions
diff --git a/src/data/duel/duel_configurations.asm b/src/data/duel/duel_configurations.asm
new file mode 100644
index 0000000..916d4cf
--- /dev/null
+++ b/src/data/duel/duel_configurations.asm
@@ -0,0 +1,370 @@
+DeckIDDuelConfigurations:
+ db SAMS_PRACTICE_DECK_ID ; deck ID
+ db SAM_PIC ; NPC portrait
+ tx SamNPCName ; name text ID
+ db PRIZES_2 ; number of prize cards
+ db MUSIC_STOP ; theme
+ dw NULL ; rank
+ dw NULL ; element
+
+ db SAMS_NORMAL_DECK_ID ; deck ID
+ db SAM_PIC ; NPC portrait
+ tx SamNPCName ; name text ID
+ db PRIZES_2 ; number of prize cards
+ db MUSIC_STOP ; theme
+ dw NULL ; rank
+ dw NULL ; element
+
+ db LIGHTNING_AND_FIRE_DECK_ID ; deck ID
+ db AARON_PIC ; NPC portrait
+ tx AaronNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx TechText ; rank
+ dw NULL ; element
+
+ db WATER_AND_FIGHTING_DECK_ID ; deck ID
+ db AARON_PIC ; NPC portrait
+ tx AaronNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx TechText ; rank
+ dw NULL ; element
+
+ db GRASS_AND_PSYCHIC_DECK_ID ; deck ID
+ db AARON_PIC ; NPC portrait
+ tx AaronNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx TechText ; rank
+ dw NULL ; element
+
+ db LEGENDARY_MOLTRES_DECK_ID ; deck ID
+ db COURTNEY_PIC ; NPC portrait
+ tx CourtneyNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_3 ; theme
+ tx GrandMasterText ; rank
+ dw NULL ; element
+
+ db LEGENDARY_ZAPDOS_DECK_ID ; deck ID
+ db STEVE_PIC ; NPC portrait
+ tx SteveNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_3 ; theme
+ tx GrandMasterText ; rank
+ dw NULL ; element
+
+ db LEGENDARY_ARTICUNO_DECK_ID ; deck ID
+ db JACK_PIC ; NPC portrait
+ tx JackNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_3 ; theme
+ tx GrandMasterText ; rank
+ dw NULL ; element
+
+ db LEGENDARY_DRAGONITE_DECK_ID ; deck ID
+ db ROD_PIC ; NPC portrait
+ tx RodNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_3 ; theme
+ tx GrandMasterText ; rank
+ dw NULL ; element
+
+ db FIRST_STRIKE_DECK_ID ; deck ID
+ db MITCH_PIC ; NPC portrait
+ tx MitchNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_2 ; theme
+ tx ClubMasterText ; rank
+ tx ChallengeMachineFightingIconText ; element
+
+ db ROCK_CRUSHER_DECK_ID ; deck ID
+ db GENE_PIC ; NPC portrait
+ tx GeneNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_2 ; theme
+ tx ClubMasterText ; rank
+ tx ChallengeMachineFightingIconText ; element
+
+ db GO_GO_RAIN_DANCE_DECK_ID ; deck ID
+ db AMY_PIC ; NPC portrait
+ tx AmyNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_2 ; theme
+ tx ClubMasterText ; rank
+ tx ChallengeMachineWaterIconText ; element
+
+ db ZAPPING_SELFDESTRUCT_DECK_ID ; deck ID
+ db ISAAC_PIC ; NPC portrait
+ tx IsaacNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_2 ; theme
+ tx ClubMasterText ; rank
+ tx ChallengeMachineLightningIconText ; element
+
+ db FLOWER_POWER_DECK_ID ; deck ID
+ db NIKKI_PIC ; NPC portrait
+ tx NikkiNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_2 ; theme
+ tx ClubMasterText ; rank
+ tx ChallengeMachineGrassIconText ; element
+
+ db STRANGE_PSYSHOCK_DECK_ID ; deck ID
+ db MURRAY_PIC ; NPC portrait
+ tx MurrayNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_2 ; theme
+ tx ClubMasterText ; rank
+ tx ChallengeMachinePsychicIconText ; element
+
+ db WONDERS_OF_SCIENCE_DECK_ID ; deck ID
+ db RICK_PIC ; NPC portrait
+ tx RickNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_2 ; theme
+ tx ClubMasterText ; rank
+ tx ChallengeMachineGrassIconText ; element
+
+ db FIRE_CHARGE_DECK_ID ; deck ID
+ db KEN_PIC ; NPC portrait
+ tx KenNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_DUEL_THEME_2 ; theme
+ tx ClubMasterText ; rank
+ tx ChallengeMachineFireIconText ; element
+
+ db IM_RONALD_DECK_ID ; deck ID
+ db RONALD_PIC ; NPC portrait
+ tx RonaldNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_STOP ; theme
+ dw NULL ; rank
+ dw NULL ; element
+
+ db POWERFUL_RONALD_DECK_ID ; deck ID
+ db RONALD_PIC ; NPC portrait
+ tx RonaldNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_STOP ; theme
+ dw NULL ; rank
+ dw NULL ; element
+
+ db INVINCIBLE_RONALD_DECK_ID ; deck ID
+ db RONALD_PIC ; NPC portrait
+ tx RonaldNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_STOP ; theme
+ dw NULL ; rank
+ dw NULL ; element
+
+ db LEGENDARY_RONALD_DECK_ID ; deck ID
+ db RONALD_PIC ; NPC portrait
+ tx RonaldNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_STOP ; theme
+ dw NULL ; rank
+ dw NULL ; element
+
+ db MUSCLES_FOR_BRAINS_DECK_ID ; deck ID
+ db CHRIS_PIC ; NPC portrait
+ tx ChrisNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFightingIconText ; element
+
+ db HEATED_BATTLE_DECK_ID ; deck ID
+ db MICHAEL_PIC ; NPC portrait
+ tx MichaelNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFightingIconText ; element
+
+ db LOVE_TO_BATTLE_DECK_ID ; deck ID
+ db JESSICA_PIC ; NPC portrait
+ tx JessicaNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFightingIconText ; element
+
+ db EXCAVATION_DECK_ID ; deck ID
+ db RYAN_PIC ; NPC portrait
+ tx RyanNPCName ; name text ID
+ db PRIZES_3 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFightingIconText ; element
+
+ db BLISTERING_POKEMON_DECK_ID ; deck ID
+ db ANDREW_PIC ; NPC portrait
+ tx AndrewNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFightingIconText ; element
+
+ db HARD_POKEMON_DECK_ID ; deck ID
+ db MATTHEW_PIC ; NPC portrait
+ tx MatthewNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFightingIconText ; element
+
+ db WATERFRONT_POKEMON_DECK_ID ; deck ID
+ db SARA_PIC ; NPC portrait
+ tx SaraNPCName ; name text ID
+ db PRIZES_2 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineWaterIconText ; element
+
+ db LONELY_FRIENDS_DECK_ID ; deck ID
+ db AMANDA_PIC ; NPC portrait
+ tx AmandaNPCName ; name text ID
+ db PRIZES_3 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineWaterIconText ; element
+
+ db SOUND_OF_THE_WAVES_DECK_ID ; deck ID
+ db JOSHUA_PIC ; NPC portrait
+ tx JoshuaNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineWaterIconText ; element
+
+ db PIKACHU_DECK_ID ; deck ID
+ db JENNIFER_PIC ; NPC portrait
+ tx JenniferNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineLightningIconText ; element
+
+ db BOOM_BOOM_SELFDESTRUCT_DECK_ID ; deck ID
+ db NICHOLAS_PIC ; NPC portrait
+ tx NicholasNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineLightningIconText ; element
+
+ db POWER_GENERATOR_DECK_ID ; deck ID
+ db BRANDON_PIC ; NPC portrait
+ tx BrandonNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineLightningIconText ; element
+
+ db ETCETERA_DECK_ID ; deck ID
+ db BRITTANY_PIC ; NPC portrait
+ tx BrittanyNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineGrassIconText ; element
+
+ db FLOWER_GARDEN_DECK_ID ; deck ID
+ db KRISTIN_PIC ; NPC portrait
+ tx KristinNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineGrassIconText ; element
+
+ db KALEIDOSCOPE_DECK_ID ; deck ID
+ db HEATHER_PIC ; NPC portrait
+ tx HeatherNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineGrassIconText ; element
+
+ db GHOST_DECK_ID ; deck ID
+ db ROBERT_PIC ; NPC portrait
+ tx RobertNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachinePsychicIconText ; element
+
+ db NAP_TIME_DECK_ID ; deck ID
+ db DANIEL_PIC ; NPC portrait
+ tx DanielNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachinePsychicIconText ; element
+
+ db STRANGE_POWER_DECK_ID ; deck ID
+ db STEPHANIE_PIC ; NPC portrait
+ tx StephanieNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachinePsychicIconText ; element
+
+ db FLYIN_POKEMON_DECK_ID ; deck ID
+ db JOSEPH_PIC ; NPC portrait
+ tx JosephNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineGrassIconText ; element
+
+ db LOVELY_NIDORAN_DECK_ID ; deck ID
+ db DAVID_PIC ; NPC portrait
+ tx DavidNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineGrassIconText ; element
+
+ db POISON_DECK_ID ; deck ID
+ db ERIK_PIC ; NPC portrait
+ tx ErikNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineGrassIconText ; element
+
+ db ANGER_DECK_ID ; deck ID
+ db JOHN_PIC ; NPC portrait
+ tx JohnNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFireIconText ; element
+
+ db FLAMETHROWER_DECK_ID ; deck ID
+ db ADAM_PIC ; NPC portrait
+ tx AdamNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFireIconText ; element
+
+ db RESHUFFLE_DECK_ID ; deck ID
+ db JONATHAN_PIC ; NPC portrait
+ tx JonathanNPCName ; name text ID
+ db PRIZES_4 ; number of prize cards
+ db MUSIC_DUEL_THEME_1 ; theme
+ tx ClubMemberText ; rank
+ tx ChallengeMachineFireIconText ; element
+
+ db IMAKUNI_DECK_ID ; deck ID
+ db IMAKUNI_PIC ; NPC portrait
+ tx ImakuniNPCName ; name text ID
+ db PRIZES_6 ; number of prize cards
+ db MUSIC_IMAKUNI ; theme
+ tx StrangeLifeformText ; rank
+ dw NULL ; element
+
+ db -1 ; end
diff --git a/src/data/multichoice.asm b/src/data/multichoice.asm
new file mode 100644
index 0000000..7f5bde8
--- /dev/null
+++ b/src/data/multichoice.asm
@@ -0,0 +1,59 @@
+MultichoiceTextbox_ConfigTable_ChooseDeckToDuelAgainst:
+ db $04, $00 ; x, y to start drawing box
+ db $10, $08 ; width, height of box
+ db $06, $02 ; x, y coordinate to start printing next text
+ tx LightningAndFireDeckChoiceText ; text id to print next
+ db $06, $04 ; x, y coordinate to start printing next text
+ tx WaterAndFightingDeckChoiceText ; text id to print next
+ db $06, $06 ; x, y coordinate to start printing next text
+ tx GrassAndPsychicDeckChoiceText ; text id to print next
+ db $ff ; marker byte -- end text entries
+ db $05, $02 ; cursor starting x, y
+ db $02 ; number of tiles the cursor moves per toggle
+ db $03 ; cursor max index
+ db SYM_CURSOR_R ; cursor image
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
+
+MultichoiceTextbox_ConfigTable_ChooseDeckStarterDeck:
+ db $04, $00 ; x, y to start drawing box
+ db $10, $08 ; width, height of box
+ db $06, $02 ; x, y coordinate to start printing next text
+ tx CharmanderAndFriendsDeckChoiceText ; text id to print next
+ db $06, $04 ; x, y coordinate to start printing next text
+ tx SquirtleAndFriendsDeckChoiceText ; text id to print next
+ db $06, $06 ; x, y coordinate to start printing next text
+ tx BulbasaurAndFriendsDeckChoiceText ; text id to print next
+ db $ff ; marker byte -- end text entries
+ db $05, $02 ; cursor starting x, y
+ db $02 ; number of tiles the cursor moves per toggle
+ db $03 ; cursor max index
+ db SYM_CURSOR_R ; cursor image
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
+
+SamNormalMultichoice_ConfigurationTable:
+ db $0a, $00 ; x, y to start drawing box
+ db $0a, $0a ; width, height of box
+ db $0c, $02 ; x, y coordinate to start printing next text
+ tx Text03ff ; text id to print next
+ db $ff ; marker byte -- end text entries
+ db $0b, $02 ; cursor starting x, y
+ db $02 ; number of tiles the cursor moves per toggle
+ db $04 ; cursor max index
+ db SYM_CURSOR_R ; cursor image
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
+
+SamRulesMultichoice_ConfigurationTable:
+ db $06, $00 ; x, y to start drawing box
+ db $0e, $12 ; width, height of box
+ db $08, $02 ; x coordinate to start printing text
+ tx Text0400 ; text id to print next
+ db $ff ; marker byte -- end text entries
+ db $07, $02 ; cursor starting x, y
+ db $02 ; number of tiles the cursor moves per toggle
+ db $08 ; cursor max index
+ db SYM_CURSOR_R ; cursor image
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
diff --git a/src/data/palette_pointers.asm b/src/data/palette_pointers.asm
new file mode 100644
index 0000000..8a0d71a
--- /dev/null
+++ b/src/data/palette_pointers.asm
@@ -0,0 +1,170 @@
+; \1 = palette pointer
+; \2 = number of palettes
+; \3 = number of OBJ colors
+palette_pointer: MACRO
+ dwb \1, BANK(\1) - BANK(Palettes)
+ db (\2 << 4) + \3
+ENDM
+
+Palettes:
+ palette_pointer Palette0, 8, 1 ; PALETTE_0
+ palette_pointer Palette1, 8, 0 ; PALETTE_1
+ palette_pointer Palette2, 8, 0 ; PALETTE_2
+ palette_pointer Palette3, 8, 0 ; PALETTE_3
+ palette_pointer Palette4, 8, 0 ; PALETTE_4
+ palette_pointer Palette5, 8, 0 ; PALETTE_5
+ palette_pointer Palette6, 8, 0 ; PALETTE_6
+ palette_pointer Palette7, 8, 0 ; PALETTE_7
+ palette_pointer Palette8, 8, 0 ; PALETTE_8
+ palette_pointer Palette9, 8, 0 ; PALETTE_9
+ palette_pointer Palette10, 8, 0 ; PALETTE_10
+ palette_pointer Palette11, 8, 0 ; PALETTE_11
+ palette_pointer Palette12, 8, 0 ; PALETTE_12
+ palette_pointer Palette13, 8, 0 ; PALETTE_13
+ palette_pointer Palette14, 8, 0 ; PALETTE_14
+ palette_pointer Palette15, 8, 0 ; PALETTE_15
+ palette_pointer Palette16, 8, 0 ; PALETTE_16
+ palette_pointer Palette17, 8, 0 ; PALETTE_17
+ palette_pointer Palette18, 8, 0 ; PALETTE_18
+ palette_pointer Palette19, 8, 0 ; PALETTE_19
+ palette_pointer Palette20, 8, 0 ; PALETTE_20
+ palette_pointer Palette21, 8, 0 ; PALETTE_21
+ palette_pointer Palette22, 8, 0 ; PALETTE_22
+ palette_pointer Palette23, 8, 0 ; PALETTE_23
+ palette_pointer Palette24, 8, 0 ; PALETTE_24
+ palette_pointer Palette25, 8, 0 ; PALETTE_25
+ palette_pointer Palette26, 8, 0 ; PALETTE_26
+ palette_pointer Palette27, 8, 0 ; PALETTE_27
+ palette_pointer Palette28, 8, 0 ; PALETTE_28
+ palette_pointer Palette29, 8, 2 ; PALETTE_29
+ palette_pointer Palette30, 8, 2 ; PALETTE_30
+ palette_pointer Palette31, 1, 1 ; PALETTE_31
+ palette_pointer Palette32, 1, 1 ; PALETTE_32
+ palette_pointer Palette33, 1, 1 ; PALETTE_33
+ palette_pointer Palette34, 1, 1 ; PALETTE_34
+ palette_pointer Palette35, 1, 1 ; PALETTE_35
+ palette_pointer Palette36, 1, 1 ; PALETTE_36
+ palette_pointer Palette37, 1, 1 ; PALETTE_37
+ palette_pointer Palette38, 1, 1 ; PALETTE_38
+ palette_pointer Palette39, 1, 1 ; PALETTE_39
+ palette_pointer Palette40, 1, 1 ; PALETTE_40
+ palette_pointer Palette41, 1, 1 ; PALETTE_41
+ palette_pointer Palette42, 1, 1 ; PALETTE_42
+ palette_pointer Palette43, 1, 1 ; PALETTE_43
+ palette_pointer Palette44, 1, 1 ; PALETTE_44
+ palette_pointer Palette45, 1, 1 ; PALETTE_45
+ palette_pointer Palette46, 1, 1 ; PALETTE_46
+ palette_pointer Palette47, 1, 1 ; PALETTE_47
+ palette_pointer Palette48, 1, 1 ; PALETTE_48
+ palette_pointer Palette49, 1, 1 ; PALETTE_49
+ palette_pointer Palette50, 1, 1 ; PALETTE_50
+ palette_pointer Palette51, 1, 1 ; PALETTE_51
+ palette_pointer Palette52, 1, 1 ; PALETTE_52
+ palette_pointer Palette53, 1, 1 ; PALETTE_53
+ palette_pointer Palette54, 1, 1 ; PALETTE_54
+ palette_pointer Palette55, 1, 1 ; PALETTE_55
+ palette_pointer Palette56, 1, 1 ; PALETTE_56
+ palette_pointer Palette57, 1, 1 ; PALETTE_57
+ palette_pointer Palette58, 1, 1 ; PALETTE_58
+ palette_pointer Palette59, 1, 1 ; PALETTE_59
+ palette_pointer Palette60, 1, 1 ; PALETTE_60
+ palette_pointer Palette61, 1, 1 ; PALETTE_61
+ palette_pointer Palette62, 1, 1 ; PALETTE_62
+ palette_pointer Palette63, 1, 1 ; PALETTE_63
+ palette_pointer Palette64, 1, 1 ; PALETTE_64
+ palette_pointer Palette65, 1, 1 ; PALETTE_65
+ palette_pointer Palette66, 1, 1 ; PALETTE_66
+ palette_pointer Palette67, 1, 1 ; PALETTE_67
+ palette_pointer Palette68, 1, 1 ; PALETTE_68
+ palette_pointer Palette69, 1, 1 ; PALETTE_69
+ palette_pointer Palette70, 1, 1 ; PALETTE_70
+ palette_pointer Palette71, 1, 1 ; PALETTE_71
+ palette_pointer Palette72, 1, 1 ; PALETTE_72
+ palette_pointer Palette73, 1, 1 ; PALETTE_73
+ palette_pointer Palette74, 1, 1 ; PALETTE_74
+ palette_pointer Palette75, 1, 1 ; PALETTE_75
+ palette_pointer Palette76, 1, 1 ; PALETTE_76
+ palette_pointer Palette77, 1, 1 ; PALETTE_77
+ palette_pointer Palette78, 1, 1 ; PALETTE_78
+ palette_pointer Palette79, 1, 1 ; PALETTE_79
+ palette_pointer Palette80, 1, 1 ; PALETTE_80
+ palette_pointer Palette81, 1, 1 ; PALETTE_81
+ palette_pointer Palette82, 1, 1 ; PALETTE_82
+ palette_pointer Palette83, 1, 1 ; PALETTE_83
+ palette_pointer Palette84, 1, 1 ; PALETTE_84
+ palette_pointer Palette85, 1, 1 ; PALETTE_85
+ palette_pointer Palette86, 1, 1 ; PALETTE_86
+ palette_pointer Palette87, 1, 1 ; PALETTE_87
+ palette_pointer Palette88, 1, 1 ; PALETTE_88
+ palette_pointer Palette89, 1, 1 ; PALETTE_89
+ palette_pointer Palette90, 1, 1 ; PALETTE_90
+ palette_pointer Palette91, 1, 1 ; PALETTE_91
+ palette_pointer Palette92, 1, 1 ; PALETTE_92
+ palette_pointer Palette93, 1, 1 ; PALETTE_93
+ palette_pointer Palette94, 8, 0 ; PALETTE_94
+ palette_pointer Palette95, 8, 0 ; PALETTE_95
+ palette_pointer Palette96, 8, 0 ; PALETTE_96
+ palette_pointer Palette97, 8, 0 ; PALETTE_97
+ palette_pointer Palette98, 8, 0 ; PALETTE_98
+ palette_pointer Palette99, 8, 0 ; PALETTE_99
+ palette_pointer Palette100, 8, 0 ; PALETTE_100
+ palette_pointer Palette101, 7, 0 ; PALETTE_101
+ palette_pointer Palette102, 7, 0 ; PALETTE_102
+ palette_pointer Palette103, 7, 0 ; PALETTE_103
+ palette_pointer Palette104, 7, 0 ; PALETTE_104
+ palette_pointer Palette105, 7, 0 ; PALETTE_105
+ palette_pointer Palette106, 7, 0 ; PALETTE_106
+ palette_pointer Palette107, 7, 0 ; PALETTE_107
+ palette_pointer Palette108, 0, 1 ; PALETTE_108
+ palette_pointer Palette109, 0, 1 ; PALETTE_109
+ palette_pointer Palette110, 0, 0 ; PALETTE_110
+ palette_pointer Palette111, 8, 1 ; PALETTE_111
+ palette_pointer Palette112, 8, 1 ; PALETTE_112
+ palette_pointer Palette113, 8, 1 ; PALETTE_113
+ palette_pointer Palette114, 4, 2 ; PALETTE_114
+ palette_pointer Palette115, 4, 2 ; PALETTE_115
+ palette_pointer Palette116, 4, 2 ; PALETTE_116
+ palette_pointer Palette117, 1, 0 ; PALETTE_117
+ palette_pointer Palette118, 6, 0 ; PALETTE_118
+ palette_pointer Palette119, 1, 0 ; PALETTE_119
+ palette_pointer Palette120, 1, 0 ; PALETTE_120
+ palette_pointer Palette121, 1, 0 ; PALETTE_121
+ palette_pointer Palette122, 1, 0 ; PALETTE_122
+ palette_pointer Palette123, 1, 0 ; PALETTE_123
+ palette_pointer Palette124, 1, 0 ; PALETTE_124
+ palette_pointer Palette125, 1, 0 ; PALETTE_125
+ palette_pointer Palette126, 1, 0 ; PALETTE_126
+ palette_pointer Palette127, 1, 0 ; PALETTE_127
+ palette_pointer Palette128, 1, 0 ; PALETTE_128
+ palette_pointer Palette129, 1, 0 ; PALETTE_129
+ palette_pointer Palette130, 1, 0 ; PALETTE_130
+ palette_pointer Palette131, 1, 0 ; PALETTE_131
+ palette_pointer Palette132, 1, 0 ; PALETTE_132
+ palette_pointer Palette133, 1, 0 ; PALETTE_133
+ palette_pointer Palette134, 1, 0 ; PALETTE_134
+ palette_pointer Palette135, 1, 0 ; PALETTE_135
+ palette_pointer Palette136, 1, 0 ; PALETTE_136
+ palette_pointer Palette137, 1, 0 ; PALETTE_137
+ palette_pointer Palette138, 1, 0 ; PALETTE_138
+ palette_pointer Palette139, 1, 0 ; PALETTE_139
+ palette_pointer Palette140, 1, 0 ; PALETTE_140
+ palette_pointer Palette141, 1, 0 ; PALETTE_141
+ palette_pointer Palette142, 1, 0 ; PALETTE_142
+ palette_pointer Palette143, 1, 0 ; PALETTE_143
+ palette_pointer Palette144, 1, 0 ; PALETTE_144
+ palette_pointer Palette145, 1, 0 ; PALETTE_145
+ palette_pointer Palette146, 1, 0 ; PALETTE_146
+ palette_pointer Palette147, 1, 0 ; PALETTE_147
+ palette_pointer Palette148, 1, 0 ; PALETTE_148
+ palette_pointer Palette149, 1, 0 ; PALETTE_149
+ palette_pointer Palette150, 1, 0 ; PALETTE_150
+ palette_pointer Palette151, 1, 0 ; PALETTE_151
+ palette_pointer Palette152, 1, 0 ; PALETTE_152
+ palette_pointer Palette153, 1, 0 ; PALETTE_153
+ palette_pointer Palette154, 1, 0 ; PALETTE_154
+ palette_pointer Palette155, 1, 0 ; PALETTE_155
+ palette_pointer Palette156, 1, 0 ; PALETTE_156
+ palette_pointer Palette157, 1, 0 ; PALETTE_157
+ palette_pointer Palette158, 1, 0 ; PALETTE_158
+ palette_pointer Palette159, 1, 0 ; PALETTE_159
+ palette_pointer Palette160, 1, 0 ; PALETTE_160
diff --git a/src/data/scenes.asm b/src/data/scenes.asm
new file mode 100644
index 0000000..5303a1c
--- /dev/null
+++ b/src/data/scenes.asm
@@ -0,0 +1,260 @@
+ScenePointers:
+ dw Scene_TitleScreen
+ dw Scene_ColosseumBooster
+ dw Scene_EvolutionBooster
+ dw Scene_MysteryBooster
+ dw Scene_LaboratoryBooster
+ dw Scene_CharizardIntro
+ dw Scene_ScytherIntro
+ dw Scene_AerodactylIntro
+ dw Scene_GradientBlackAndRed
+ dw Scene_GradientWhiteAndRed
+ dw Scene_GradientBlackAndGreen
+ dw Scene_GradientWhiteAndGreen
+ dw Scene_ColorWheel
+ dw Scene_ColorTest
+ dw Scene_GameBoyLinkConnecting
+ dw Scene_GameBoyLinkTransmitting
+ dw Scene_GameBoyLinkNotConnected
+ dw Scene_GameBoyPrinterTransmitting
+ dw Scene_GameBoyPrinterNotConnected
+ dw Scene_CardPop
+ dw Scene_CardPopError
+ dw Scene_JapaneseTitleScreen
+ dw Scene_Nintendo
+ dw Scene_Companies
+ dw Scene_JapaneseTitleScreen2
+ dw Scene_Copyright
+ dw Scene_JapaneseTitleScreen2
+ dw Scene_ColorPalette
+
+; format:
+; dw compressed sgb packet
+; dw custom sgb packet loading routine
+; db palette (non-cgb), palette (cgb), palette offset
+; db tilemap (non-cgb), tilemap (cgb), vram tile offset, vram0 or vram1
+; db sprite
+;
+; if sprite is non-zero:
+; db palette (non-cgb), palette (cgb), palette offset
+; db animation (non-cgb), animation (cgb), x offset, y offset
+; dw 0-terminator
+
+Scene_TitleScreen:
+ dw SGBData_TitleScreen
+ dw NULL
+ db PALETTE_25, PALETTE_25, $00
+ db TILEMAP_TITLE_SCREEN, TILEMAP_TITLE_SCREEN_CGB, $00, $00
+ db $00
+
+Scene_JapaneseTitleScreen:
+ dw SGBData_TitleScreen
+ dw NULL
+ db PALETTE_25, PALETTE_25, $00
+ db TILEMAP_JAPANESE_TITLE_SCREEN, TILEMAP_JAPANESE_TITLE_SCREEN_CGB, $80, $00
+ db $00
+
+Scene_ColosseumBooster:
+ dw SGBData_ColosseumBooster
+ dw NULL
+ db PALETTE_108, PALETTE_101, $01
+ db TILEMAP_COLOSSEUM, TILEMAP_COLOSSEUM_CGB, $80, $00
+ db SPRITE_BOOSTER_PACK_OAM
+ db PALETTE_117, PALETTE_117, $00
+ db $ff, SPRITE_ANIM_189, $00, $00
+ dw $00
+
+Scene_EvolutionBooster:
+ dw SGBData_EvolutionBooster
+ dw NULL
+ db PALETTE_108, PALETTE_102, $01
+ db TILEMAP_EVOLUTION, TILEMAP_EVOLUTION_CGB, $80, $00
+ db SPRITE_BOOSTER_PACK_OAM
+ db PALETTE_117, PALETTE_117, $00
+ db $ff, SPRITE_ANIM_189, $00, $00
+ dw $00
+
+Scene_MysteryBooster:
+ dw SGBData_MysteryBooster
+ dw NULL
+ db PALETTE_108, PALETTE_103, $01
+ db TILEMAP_MYSTERY, TILEMAP_MYSTERY_CGB, $80, $00
+ db SPRITE_BOOSTER_PACK_OAM
+ db PALETTE_117, PALETTE_117, $00
+ db $ff, SPRITE_ANIM_189, $00, $00
+ dw $00
+
+Scene_LaboratoryBooster:
+ dw SGBData_LaboratoryBooster
+ dw NULL
+ db PALETTE_108, PALETTE_104, $01
+ db TILEMAP_LABORATORY, TILEMAP_LABORATORY_CGB, $80, $00
+ db SPRITE_BOOSTER_PACK_OAM
+ db PALETTE_117, PALETTE_117, $00
+ db $ff, SPRITE_ANIM_189, $00, $00
+ dw $00
+
+Scene_CharizardIntro:
+ dw SGBData_CharizardIntro
+ dw NULL
+ db PALETTE_108, PALETTE_105, $01
+ db TILEMAP_CHARIZARD_INTRO, TILEMAP_CHARIZARD_INTRO_CGB, $80, $00
+ db $00
+
+Scene_ScytherIntro:
+ dw SGBData_ScytherIntro
+ dw NULL
+ db PALETTE_108, PALETTE_106, $01
+ db TILEMAP_SCYTHER_INTRO, TILEMAP_SCYTHER_INTRO_CGB, $80, $00
+ db $00
+
+Scene_AerodactylIntro:
+ dw SGBData_AerodactylIntro
+ dw NULL
+ db PALETTE_108, PALETTE_107, $01
+ db TILEMAP_AERODACTYL_INTRO, TILEMAP_AERODACTYL_INTRO_CGB, $80, $00
+ db $00
+
+Scene_GradientBlackAndRed:
+ dw NULL
+ dw NULL
+ db PALETTE_94, PALETTE_94, $00
+ db TILEMAP_SOLID_TILES_1, TILEMAP_SOLID_TILES_1, $01, $00
+ db $00
+
+Scene_GradientWhiteAndRed:
+ dw NULL
+ dw NULL
+ db PALETTE_95, PALETTE_95, $00
+ db TILEMAP_SOLID_TILES_1, TILEMAP_SOLID_TILES_1, $01, $00
+ db $00
+
+Scene_GradientBlackAndGreen:
+ dw NULL
+ dw NULL
+ db PALETTE_96, PALETTE_96, $00
+ db TILEMAP_SOLID_TILES_1, TILEMAP_SOLID_TILES_1, $01, $00
+ db $00
+
+Scene_GradientWhiteAndGreen:
+ dw NULL
+ dw NULL
+ db PALETTE_97, PALETTE_97, $00
+ db TILEMAP_SOLID_TILES_1, TILEMAP_SOLID_TILES_1, $01, $00
+ db $00
+
+Scene_ColorWheel:
+ dw NULL
+ dw NULL
+ db PALETTE_98, PALETTE_98, $00
+ db TILEMAP_SOLID_TILES_2, TILEMAP_SOLID_TILES_2, $01, $00
+ db $00
+
+Scene_ColorTest:
+ dw NULL
+ dw NULL
+ db PALETTE_99, PALETTE_99, $00
+ db TILEMAP_SOLID_TILES_3, TILEMAP_SOLID_TILES_3, $01, $00
+ db $00
+
+Scene_ColorPalette:
+ dw NULL
+ dw NULL
+ db PALETTE_110, PALETTE_110, $00
+ db TILEMAP_SOLID_TILES_4, TILEMAP_SOLID_TILES_4, $fc, $01
+ db $00
+
+Scene_GameBoyLinkConnecting:
+ dw SGBData_GameBoyLink
+ dw NULL
+ db PALETTE_111, PALETTE_111, $00
+ db TILEMAP_GAMEBOY_LINK_CONNECTING, TILEMAP_GAMEBOY_LINK_CONNECTING_CGB, $90, $00
+ db $00
+
+Scene_GameBoyLinkTransmitting:
+ dw SGBData_GameBoyLink
+ dw NULL
+ db PALETTE_111, PALETTE_111, $00
+ db TILEMAP_GAMEBOY_LINK, TILEMAP_GAMEBOY_LINK_CGB, $90, $00
+ db SPRITE_DUEL_52
+ db PALETTE_114, PALETTE_114, $00
+ db SPRITE_ANIM_179, SPRITE_ANIM_176, $50, $50
+ dw $00
+
+Scene_GameBoyLinkNotConnected:
+ dw SGBData_GameBoyLink
+ dw NULL
+ db PALETTE_111, PALETTE_111, $00
+ db TILEMAP_GAMEBOY_LINK, TILEMAP_GAMEBOY_LINK_CGB, $90, $00
+ db SPRITE_DUEL_52
+ db PALETTE_114, PALETTE_114, $00
+ db SPRITE_ANIM_180, SPRITE_ANIM_177, $50, $50
+ dw $00
+
+Scene_GameBoyPrinterTransmitting:
+ dw SGBData_GameBoyPrinter
+ dw LoadScene_SetGameBoyPrinterAttrBlk
+ db PALETTE_112, PALETTE_112, $00
+ db TILEMAP_GAMEBOY_PRINTER, TILEMAP_GAMEBOY_PRINTER_CGB, $90, $00
+ db SPRITE_DUEL_53
+ db PALETTE_115, PALETTE_115, $00
+ db SPRITE_ANIM_183, SPRITE_ANIM_181, $50, $30
+ dw $00
+
+Scene_GameBoyPrinterNotConnected:
+ dw SGBData_GameBoyPrinter
+ dw LoadScene_SetGameBoyPrinterAttrBlk
+ db PALETTE_112, PALETTE_112, $00
+ db TILEMAP_GAMEBOY_PRINTER, TILEMAP_GAMEBOY_PRINTER_CGB, $90, $00
+ db SPRITE_DUEL_53
+ db PALETTE_115, PALETTE_115, $00
+ db SPRITE_ANIM_184, SPRITE_ANIM_182, $50, $30
+ dw $00
+
+Scene_CardPop:
+ dw SGBData_CardPop
+ dw LoadScene_SetCardPopAttrBlk
+ db PALETTE_113, PALETTE_113, $00
+ db TILEMAP_CARD_POP, TILEMAP_CARD_POP_CGB, $80, $00
+ db SPRITE_DUEL_54
+ db PALETTE_116, PALETTE_116, $00
+ db SPRITE_ANIM_187, SPRITE_ANIM_185, $50, $40
+ dw $00
+
+Scene_CardPopError:
+ dw SGBData_CardPop
+ dw LoadScene_SetCardPopAttrBlk
+ db PALETTE_113, PALETTE_113, $00
+ db TILEMAP_CARD_POP, TILEMAP_CARD_POP_CGB, $80, $00
+ db SPRITE_DUEL_54
+ db PALETTE_116, PALETTE_116, $00
+ db SPRITE_ANIM_188, SPRITE_ANIM_186, $50, $40
+ dw $00
+
+Scene_Nintendo:
+ dw NULL
+ dw NULL
+ db PALETTE_27, PALETTE_27, $00
+ db TILEMAP_NINTENDO, TILEMAP_NINTENDO, $00, $00
+ db $00
+
+Scene_Companies:
+ dw NULL
+ dw NULL
+ db PALETTE_28, PALETTE_28, $00
+ db TILEMAP_COMPANIES, TILEMAP_COMPANIES, $00, $00
+ db $00
+
+Scene_Copyright:
+ dw NULL
+ dw NULL
+ db PALETTE_26, PALETTE_26, $00
+ db TILEMAP_COPYRIGHT, TILEMAP_COPYRIGHT_CGB, $00, $00
+ db $00
+
+Scene_JapaneseTitleScreen2:
+ dw NULL
+ dw NULL
+ db PALETTE_109, PALETTE_100, $00
+ db TILEMAP_JAPANESE_TITLE_SCREEN_2, TILEMAP_JAPANESE_TITLE_SCREEN_2_CGB, $01, $00
+ db $00
diff --git a/src/data/script_table.asm b/src/data/script_table.asm
new file mode 100644
index 0000000..e275512
--- /dev/null
+++ b/src/data/script_table.asm
@@ -0,0 +1,105 @@
+OverworldScriptTable:
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_CloseAdvancedTextBox
+ dw ScriptCommand_PrintNPCText
+ dw ScriptCommand_PrintText
+ dw ScriptCommand_AskQuestionJump
+ dw ScriptCommand_StartDuel
+ dw ScriptCommand_PrintVariableNPCText
+ dw ScriptCommand_PrintVariableText
+ dw ScriptCommand_PrintTextQuitFully
+ dw ScriptCommand_UnloadActiveNPC
+ dw ScriptCommand_MoveActiveNPCByDirection
+ dw ScriptCommand_CloseTextBox
+ dw ScriptCommand_GiveBoosterPacks
+ dw ScriptCommand_JumpIfCardOwned
+ dw ScriptCommand_JumpIfCardInCollection
+ dw ScriptCommand_GiveCard
+ dw ScriptCommand_TakeCard
+ dw ScriptCommand_JumpIfAnyEnergyCardsInCollection
+ dw ScriptCommand_RemoveAllEnergyCardsFromCollection
+ dw ScriptCommand_JumpIfEnoughCardsOwned
+ dw ScriptCommand_JumpBasedOnFightingClubPupilStatus
+ dw ScriptCommand_SetActiveNPCDirection
+ dw ScriptCommand_PickNextMan1RequestedCard
+ dw ScriptCommand_LoadMan1RequestedCardIntoTxRamSlot
+ dw ScriptCommand_JumpIfMan1RequestedCardOwned
+ dw ScriptCommand_JumpIfMan1RequestedCardInCollection
+ dw ScriptCommand_RemoveMan1RequestedCardFromCollection
+ dw ScriptCommand_Jump
+ dw ScriptCommand_TryGiveMedalPCPacks
+ dw ScriptCommand_SetPlayerDirection
+ dw ScriptCommand_MovePlayer
+ dw ScriptCommand_ShowCardReceivedScreen
+ dw ScriptCommand_SetDialogNPC
+ dw ScriptCommand_SetNextNPCAndScript
+ dw ScriptCommand_SetSpriteAttributes
+ dw ScriptCommand_SetActiveNPCCoords
+ dw ScriptCommand_DoFrames
+ dw ScriptCommand_JumpIfActiveNPCCoordsMatch
+ dw ScriptCommand_JumpIfPlayerCoordsMatch
+ dw ScriptCommand_MoveActiveNPC
+ dw ScriptCommand_GiveOneOfEachTrainerBooster
+ dw ScriptCommand_JumpIfNPCLoaded
+ dw ScriptCommand_ShowMedalReceivedScreen
+ dw ScriptCommand_LoadCurrentMapNameIntoTxRamSlot
+ dw ScriptCommand_LoadChallengeHallNPCIntoTxRamSlot
+ dw ScriptCommand_StartChallengeHallDuel
+ dw ScriptCommand_PrintTextForChallengeCup
+ dw ScriptCommand_MoveChallengeHallNPC
+ dw ScriptCommand_UnloadChallengeHallNPC
+ dw ScriptCommand_SetChallengeHallNPCCoords
+ dw ScriptCommand_PickChallengeHallOpponent
+ dw ScriptCommand_OpenMenu
+ dw ScriptCommand_PickChallengeCupPrizeCard
+ dw ScriptCommand_QuitScriptFully
+ dw ScriptCommand_ReplaceMapBlocks
+ dw ScriptCommand_ChooseDeckToDuelAgainstMultichoice
+ dw ScriptCommand_OpenDeckMachine
+ dw ScriptCommand_ChooseStarterDeckMultichoice
+ dw ScriptCommand_EnterMap
+ dw ScriptCommand_MoveArbitraryNPC
+ dw ScriptCommand_PickLegendaryCard
+ dw ScriptCommand_FlashScreen
+ dw ScriptCommand_SaveGame
+ dw ScriptCommand_BattleCenter
+ dw ScriptCommand_GiftCenter
+ dw ScriptCommand_PlayCredits
+ dw ScriptCommand_TryGivePCPack
+ dw ScriptCommand_nop
+ dw ScriptCommand_GiveStarterDeck
+ dw ScriptCommand_WalkPlayerToMasonLaboratory
+ dw ScriptCommand_OverrideSong
+ dw ScriptCommand_SetDefaultSong
+ dw ScriptCommand_PlaySong
+ dw ScriptCommand_PlaySFX
+ dw ScriptCommand_PauseSong
+ dw ScriptCommand_ResumeSong
+ dw ScriptCommand_PlayDefaultSong
+ dw ScriptCommand_WaitForSongToFinish
+ dw ScriptCommand_RecordMasterWin
+ dw ScriptCommand_AskQuestionJumpDefaultYes
+ dw ScriptCommand_ShowSamNormalMultichoice
+ dw ScriptCommand_ShowSamRulesMultichoice
+ dw ScriptCommand_ChallengeMachine
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_SetEventValue
+ dw ScriptCommand_JumpIfEventZero
+ dw ScriptCommand_JumpIfEventNonzero
+ dw ScriptCommand_JumpIfEventEqual
+ dw ScriptCommand_JumpIfEventNotEqual
+ dw ScriptCommand_JumpIfEventGreaterOrEqual
+ dw ScriptCommand_JumpIfEventLessThan
+ dw ScriptCommand_MaxOutEventValue
+ dw ScriptCommand_ZeroOutEventValue
+ dw ScriptCommand_JumpIfEventTrue
+ dw ScriptCommand_JumpIfEventFalse
+ dw ScriptCommand_IncrementEventValue
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_EndScript
+ dw ScriptCommand_EndScript
diff --git a/src/data/sprite_animation_pointers.asm b/src/data/sprite_animation_pointers.asm
new file mode 100644
index 0000000..7c432c6
--- /dev/null
+++ b/src/data/sprite_animation_pointers.asm
@@ -0,0 +1,224 @@
+; \1 = anim data pointer
+anim_data_pointer: MACRO
+ dwb \1, BANK(\1) - BANK(SpriteAnimations)
+ db $00 ; unused (padding?)
+ENDM
+
+SpriteAnimations:
+ anim_data_pointer AnimData0 ; SPRITE_ANIM_LIGHT_NPC_UP
+ anim_data_pointer AnimData1 ; SPRITE_ANIM_LIGHT_NPC_RIGHT
+ anim_data_pointer AnimData2 ; SPRITE_ANIM_LIGHT_NPC_DOWN
+ anim_data_pointer AnimData3 ; SPRITE_ANIM_LIGHT_NPC_LEFT
+ anim_data_pointer AnimData4 ; SPRITE_ANIM_DARK_NPC_UP
+ anim_data_pointer AnimData5 ; SPRITE_ANIM_DARK_NPC_RIGHT
+ anim_data_pointer AnimData6 ; SPRITE_ANIM_DARK_NPC_DOWN
+ anim_data_pointer AnimData7 ; SPRITE_ANIM_DARK_NPC_LEFT
+ anim_data_pointer AnimData8 ; SPRITE_ANIM_SGB_AMY_LAYING
+ anim_data_pointer AnimData9 ; SPRITE_ANIM_SGB_AMY_STAND
+ anim_data_pointer AnimData10 ; SPRITE_ANIM_SGB_CLERK_NPC_UP
+ anim_data_pointer AnimData11 ; SPRITE_ANIM_SGB_CLERK_NPC_RIGHT
+ anim_data_pointer AnimData12 ; SPRITE_ANIM_SGB_CLERK_NPC_DOWN
+ anim_data_pointer AnimData13 ; SPRITE_ANIM_SGB_CLERK_NPC_LEFT
+ anim_data_pointer AnimData14 ; SPRITE_ANIM_BLUE_NPC_UP
+ anim_data_pointer AnimData15 ; SPRITE_ANIM_BLUE_NPC_RIGHT
+ anim_data_pointer AnimData16 ; SPRITE_ANIM_BLUE_NPC_DOWN
+ anim_data_pointer AnimData17 ; SPRITE_ANIM_BLUE_NPC_LEFT
+ anim_data_pointer AnimData18 ; SPRITE_ANIM_PINK_NPC_UP
+ anim_data_pointer AnimData19 ; SPRITE_ANIM_PINK_NPC_RIGHT
+ anim_data_pointer AnimData20 ; SPRITE_ANIM_PINK_NPC_DOWN
+ anim_data_pointer AnimData21 ; SPRITE_ANIM_PINK_NPC_LEFT
+ anim_data_pointer AnimData22 ; SPRITE_ANIM_YELLOW_NPC_UP
+ anim_data_pointer AnimData23 ; SPRITE_ANIM_YELLOW_NPC_RIGHT
+ anim_data_pointer AnimData24 ; SPRITE_ANIM_YELLOW_NPC_DOWN
+ anim_data_pointer AnimData25 ; SPRITE_ANIM_YELLOW_NPC_LEFT
+ anim_data_pointer AnimData26 ; SPRITE_ANIM_GREEN_NPC_UP
+ anim_data_pointer AnimData27 ; SPRITE_ANIM_GREEN_NPC_RIGHT
+ anim_data_pointer AnimData28 ; SPRITE_ANIM_GREEN_NPC_DOWN
+ anim_data_pointer AnimData29 ; SPRITE_ANIM_GREEN_NPC_LEFT
+ anim_data_pointer AnimData30 ; SPRITE_ANIM_RED_NPC_UP
+ anim_data_pointer AnimData31 ; SPRITE_ANIM_RED_NPC_RIGHT
+ anim_data_pointer AnimData32 ; SPRITE_ANIM_RED_NPC_DOWN
+ anim_data_pointer AnimData33 ; SPRITE_ANIM_RED_NPC_LEFT
+ anim_data_pointer AnimData34 ; SPRITE_ANIM_PURPLE_NPC_UP
+ anim_data_pointer AnimData35 ; SPRITE_ANIM_PURPLE_NPC_RIGHT
+ anim_data_pointer AnimData36 ; SPRITE_ANIM_PURPLE_NPC_DOWN
+ anim_data_pointer AnimData37 ; SPRITE_ANIM_PURPLE_NPC_LEFT
+ anim_data_pointer AnimData38 ; SPRITE_ANIM_WHITE_NPC_UP
+ anim_data_pointer AnimData39 ; SPRITE_ANIM_WHITE_NPC_RIGHT
+ anim_data_pointer AnimData40 ; SPRITE_ANIM_WHITE_NPC_DOWN
+ anim_data_pointer AnimData41 ; SPRITE_ANIM_WHITE_NPC_LEFT
+ anim_data_pointer AnimData42 ; SPRITE_ANIM_INDIGO_NPC_UP
+ anim_data_pointer AnimData43 ; SPRITE_ANIM_INDIGO_NPC_RIGHT
+ anim_data_pointer AnimData44 ; SPRITE_ANIM_INDIGO_NPC_DOWN
+ anim_data_pointer AnimData45 ; SPRITE_ANIM_INDIGO_NPC_LEFT
+ anim_data_pointer AnimData46 ; SPRITE_ANIM_CGB_AMY_LAYING
+ anim_data_pointer AnimData47 ; SPRITE_ANIM_CGB_AMY_STAND
+ anim_data_pointer AnimData48 ; SPRITE_ANIM_CGB_CLERK_NPC_UP
+ anim_data_pointer AnimData49 ; SPRITE_ANIM_CGB_CLERK_NPC_RIGHT
+ anim_data_pointer AnimData50 ; SPRITE_ANIM_CGB_CLERK_NPC_DOWN
+ anim_data_pointer AnimData51 ; SPRITE_ANIM_CGB_CLERK_NPC_LEFT
+ anim_data_pointer AnimData52 ; SPRITE_ANIM_SGB_VOLCANO_SMOKE
+ anim_data_pointer AnimData53 ; SPRITE_ANIM_SGB_OWMAP_CURSOR
+ anim_data_pointer AnimData54 ; SPRITE_ANIM_SGB_OWMAP_CURSOR_FAST
+ anim_data_pointer AnimData55 ; SPRITE_ANIM_CGB_VOLCANO_SMOKE
+ anim_data_pointer AnimData56 ; SPRITE_ANIM_CGB_OWMAP_CURSOR
+ anim_data_pointer AnimData57 ; SPRITE_ANIM_CGB_OWMAP_CURSOR_FAST
+ anim_data_pointer AnimData58 ; SPRITE_ANIM_TORCH
+ anim_data_pointer AnimData59 ; SPRITE_ANIM_SGB_CARD_TOP_LEFT
+ anim_data_pointer AnimData60 ; SPRITE_ANIM_SGB_CARD_TOP_RIGHT
+ anim_data_pointer AnimData61 ; SPRITE_ANIM_SGB_CARD_LEFT_SPARK
+ anim_data_pointer AnimData62 ; SPRITE_ANIM_SGB_CARD_BOTTOM_LEFT
+ anim_data_pointer AnimData63 ; SPRITE_ANIM_SGB_CARD_BOTTOM_RIGHT
+ anim_data_pointer AnimData64 ; SPRITE_ANIM_SGB_CARD_RIGHT_SPARK
+ anim_data_pointer AnimData65 ; SPRITE_ANIM_CGB_CARD_TOP_LEFT
+ anim_data_pointer AnimData66 ; SPRITE_ANIM_CGB_CARD_TOP_RIGHT
+ anim_data_pointer AnimData67 ; SPRITE_ANIM_CGB_CARD_LEFT_SPARK
+ anim_data_pointer AnimData68 ; SPRITE_ANIM_CGB_CARD_BOTTOM_LEFT
+ anim_data_pointer AnimData69 ; SPRITE_ANIM_CGB_CARD_BOTTOM_RIGHT
+ anim_data_pointer AnimData70 ; SPRITE_ANIM_CGB_CARD_RIGHT_SPARK
+ anim_data_pointer AnimData71 ; SPRITE_ANIM_71
+ anim_data_pointer AnimData72 ; SPRITE_ANIM_72
+ anim_data_pointer AnimData73 ; SPRITE_ANIM_73
+ anim_data_pointer AnimData74 ; SPRITE_ANIM_74
+ anim_data_pointer AnimData75 ; SPRITE_ANIM_75
+ anim_data_pointer AnimData76 ; SPRITE_ANIM_76
+ anim_data_pointer AnimData77 ; SPRITE_ANIM_77
+ anim_data_pointer AnimData78 ; SPRITE_ANIM_78
+ anim_data_pointer AnimData79 ; SPRITE_ANIM_79
+ anim_data_pointer AnimData80 ; SPRITE_ANIM_80
+ anim_data_pointer AnimData81 ; SPRITE_ANIM_81
+ anim_data_pointer AnimData82 ; SPRITE_ANIM_82
+ anim_data_pointer AnimData83 ; SPRITE_ANIM_83
+ anim_data_pointer AnimData84 ; SPRITE_ANIM_84
+ anim_data_pointer AnimData85 ; SPRITE_ANIM_85
+ anim_data_pointer AnimData86 ; SPRITE_ANIM_86
+ anim_data_pointer AnimData87 ; SPRITE_ANIM_87
+ anim_data_pointer AnimData88 ; SPRITE_ANIM_88
+ anim_data_pointer AnimData89 ; SPRITE_ANIM_89
+ anim_data_pointer AnimData90 ; SPRITE_ANIM_90
+ anim_data_pointer AnimData91 ; SPRITE_ANIM_91
+ anim_data_pointer AnimData92 ; SPRITE_ANIM_92
+ anim_data_pointer AnimData93 ; SPRITE_ANIM_93
+ anim_data_pointer AnimData94 ; SPRITE_ANIM_94
+ anim_data_pointer AnimData95 ; SPRITE_ANIM_95
+ anim_data_pointer AnimData96 ; SPRITE_ANIM_96
+ anim_data_pointer AnimData97 ; SPRITE_ANIM_97
+ anim_data_pointer AnimData98 ; SPRITE_ANIM_98
+ anim_data_pointer AnimData99 ; SPRITE_ANIM_99
+ anim_data_pointer AnimData100 ; SPRITE_ANIM_100
+ anim_data_pointer AnimData101 ; SPRITE_ANIM_101
+ anim_data_pointer AnimData102 ; SPRITE_ANIM_102
+ anim_data_pointer AnimData103 ; SPRITE_ANIM_103
+ anim_data_pointer AnimData104 ; SPRITE_ANIM_104
+ anim_data_pointer AnimData105 ; SPRITE_ANIM_105
+ anim_data_pointer AnimData106 ; SPRITE_ANIM_106
+ anim_data_pointer AnimData107 ; SPRITE_ANIM_107
+ anim_data_pointer AnimData108 ; SPRITE_ANIM_108
+ anim_data_pointer AnimData109 ; SPRITE_ANIM_109
+ anim_data_pointer AnimData110 ; SPRITE_ANIM_110
+ anim_data_pointer AnimData111 ; SPRITE_ANIM_111
+ anim_data_pointer AnimData112 ; SPRITE_ANIM_112
+ anim_data_pointer AnimData113 ; SPRITE_ANIM_113
+ anim_data_pointer AnimData114 ; SPRITE_ANIM_114
+ anim_data_pointer AnimData115 ; SPRITE_ANIM_115
+ anim_data_pointer AnimData116 ; SPRITE_ANIM_116
+ anim_data_pointer AnimData117 ; SPRITE_ANIM_117
+ anim_data_pointer AnimData118 ; SPRITE_ANIM_118
+ anim_data_pointer AnimData119 ; SPRITE_ANIM_119
+ anim_data_pointer AnimData120 ; SPRITE_ANIM_120
+ anim_data_pointer AnimData121 ; SPRITE_ANIM_121
+ anim_data_pointer AnimData122 ; SPRITE_ANIM_122
+ anim_data_pointer AnimData123 ; SPRITE_ANIM_123
+ anim_data_pointer AnimData124 ; SPRITE_ANIM_124
+ anim_data_pointer AnimData125 ; SPRITE_ANIM_125
+ anim_data_pointer AnimData126 ; SPRITE_ANIM_126
+ anim_data_pointer AnimData127 ; SPRITE_ANIM_127
+ anim_data_pointer AnimData128 ; SPRITE_ANIM_128
+ anim_data_pointer AnimData129 ; SPRITE_ANIM_129
+ anim_data_pointer AnimData130 ; SPRITE_ANIM_130
+ anim_data_pointer AnimData131 ; SPRITE_ANIM_131
+ anim_data_pointer AnimData132 ; SPRITE_ANIM_132
+ anim_data_pointer AnimData133 ; SPRITE_ANIM_133
+ anim_data_pointer AnimData134 ; SPRITE_ANIM_134
+ anim_data_pointer AnimData135 ; SPRITE_ANIM_135
+ anim_data_pointer AnimData136 ; SPRITE_ANIM_136
+ anim_data_pointer AnimData137 ; SPRITE_ANIM_137
+ anim_data_pointer AnimData138 ; SPRITE_ANIM_138
+ anim_data_pointer AnimData139 ; SPRITE_ANIM_139
+ anim_data_pointer AnimData140 ; SPRITE_ANIM_140
+ anim_data_pointer AnimData141 ; SPRITE_ANIM_141
+ anim_data_pointer AnimData142 ; SPRITE_ANIM_142
+ anim_data_pointer AnimData143 ; SPRITE_ANIM_143
+ anim_data_pointer AnimData144 ; SPRITE_ANIM_144
+ anim_data_pointer AnimData145 ; SPRITE_ANIM_145
+ anim_data_pointer AnimData146 ; SPRITE_ANIM_146
+ anim_data_pointer AnimData147 ; SPRITE_ANIM_147
+ anim_data_pointer AnimData148 ; SPRITE_ANIM_148
+ anim_data_pointer AnimData149 ; SPRITE_ANIM_149
+ anim_data_pointer AnimData150 ; SPRITE_ANIM_150
+ anim_data_pointer AnimData151 ; SPRITE_ANIM_151
+ anim_data_pointer AnimData152 ; SPRITE_ANIM_152
+ anim_data_pointer AnimData153 ; SPRITE_ANIM_153
+ anim_data_pointer AnimData154 ; SPRITE_ANIM_154
+ anim_data_pointer AnimData155 ; SPRITE_ANIM_155
+ anim_data_pointer AnimData156 ; SPRITE_ANIM_156
+ anim_data_pointer AnimData157 ; SPRITE_ANIM_157
+ anim_data_pointer AnimData158 ; SPRITE_ANIM_158
+ anim_data_pointer AnimData159 ; SPRITE_ANIM_159
+ anim_data_pointer AnimData160 ; SPRITE_ANIM_160
+ anim_data_pointer AnimData161 ; SPRITE_ANIM_161
+ anim_data_pointer AnimData162 ; SPRITE_ANIM_162
+ anim_data_pointer AnimData163 ; SPRITE_ANIM_163
+ anim_data_pointer AnimData164 ; SPRITE_ANIM_164
+ anim_data_pointer AnimData165 ; SPRITE_ANIM_165
+ anim_data_pointer AnimData166 ; SPRITE_ANIM_166
+ anim_data_pointer AnimData167 ; SPRITE_ANIM_167
+ anim_data_pointer AnimData168 ; SPRITE_ANIM_168
+ anim_data_pointer AnimData169 ; SPRITE_ANIM_169
+ anim_data_pointer AnimData170 ; SPRITE_ANIM_170
+ anim_data_pointer AnimData171 ; SPRITE_ANIM_171
+ anim_data_pointer AnimData172 ; SPRITE_ANIM_172
+ anim_data_pointer AnimData173 ; SPRITE_ANIM_173
+ anim_data_pointer AnimData174 ; SPRITE_ANIM_174
+ anim_data_pointer AnimData175 ; SPRITE_ANIM_175
+ anim_data_pointer AnimData176 ; SPRITE_ANIM_176
+ anim_data_pointer AnimData177 ; SPRITE_ANIM_177
+ anim_data_pointer AnimData178 ; SPRITE_ANIM_178
+ anim_data_pointer AnimData179 ; SPRITE_ANIM_179
+ anim_data_pointer AnimData180 ; SPRITE_ANIM_180
+ anim_data_pointer AnimData181 ; SPRITE_ANIM_181
+ anim_data_pointer AnimData182 ; SPRITE_ANIM_182
+ anim_data_pointer AnimData183 ; SPRITE_ANIM_183
+ anim_data_pointer AnimData184 ; SPRITE_ANIM_184
+ anim_data_pointer AnimData185 ; SPRITE_ANIM_185
+ anim_data_pointer AnimData186 ; SPRITE_ANIM_186
+ anim_data_pointer AnimData187 ; SPRITE_ANIM_187
+ anim_data_pointer AnimData188 ; SPRITE_ANIM_188
+ anim_data_pointer AnimData189 ; SPRITE_ANIM_189
+ anim_data_pointer AnimData190 ; SPRITE_ANIM_190
+ anim_data_pointer AnimData191 ; SPRITE_ANIM_191
+ anim_data_pointer AnimData192 ; SPRITE_ANIM_192
+ anim_data_pointer AnimData193 ; SPRITE_ANIM_193
+ anim_data_pointer AnimData194 ; SPRITE_ANIM_194
+ anim_data_pointer AnimData195 ; SPRITE_ANIM_195
+ anim_data_pointer AnimData196 ; SPRITE_ANIM_196
+ anim_data_pointer AnimData197 ; SPRITE_ANIM_197
+ anim_data_pointer AnimData198 ; SPRITE_ANIM_198
+ anim_data_pointer AnimData199 ; SPRITE_ANIM_199
+ anim_data_pointer AnimData200 ; SPRITE_ANIM_200
+ anim_data_pointer AnimData201 ; SPRITE_ANIM_201
+ anim_data_pointer AnimData202 ; SPRITE_ANIM_202
+ anim_data_pointer AnimData203 ; SPRITE_ANIM_203
+ anim_data_pointer AnimData204 ; SPRITE_ANIM_204
+ anim_data_pointer AnimData205 ; SPRITE_ANIM_205
+ anim_data_pointer AnimData206 ; SPRITE_ANIM_206
+ anim_data_pointer AnimData207 ; SPRITE_ANIM_207
+ anim_data_pointer AnimData208 ; SPRITE_ANIM_208
+ anim_data_pointer AnimData209 ; SPRITE_ANIM_209
+ anim_data_pointer AnimData210 ; SPRITE_ANIM_210
+ anim_data_pointer AnimData211 ; SPRITE_ANIM_211
+ anim_data_pointer AnimData212 ; SPRITE_ANIM_212
+ anim_data_pointer AnimData213 ; SPRITE_ANIM_213
+ anim_data_pointer AnimData214 ; SPRITE_ANIM_214
+ anim_data_pointer AnimData215 ; SPRITE_ANIM_215
+ anim_data_pointer AnimData216 ; SPRITE_ANIM_216