shithub: pokered

Download patch

ref: 0177688ad4d923c4970009fa87df48605bb43ed6
parent: d44c7c305c3f94b59e3e2c008408779836a0020a
parent: df62b8e81a4b0964d5f21dcc37916f996b5bd241
author: Rangi <35663410+Rangi42@users.noreply.github.com>
date: Sun Jul 19 19:04:16 EDT 2020

Merge pull request #279 from Rangi42/master

Identify sprite and battle animation data

--- a/Makefile
+++ b/Makefile
@@ -122,6 +122,8 @@
 gfx/intro_credits/red_nidorino_1.2bpp: rgbgfx += -h
 gfx/intro_credits/red_nidorino_2.2bpp: rgbgfx += -h
 gfx/intro_credits/red_nidorino_3.2bpp: rgbgfx += -h
+gfx/intro_credits/gengar.2bpp: rgbgfx += -h
+gfx/intro_credits/gengar.2bpp: tools/gfx += --remove-duplicates --preserve=0x19,0x76
 
 gfx/intro_credits/the_end.2bpp: tools/gfx += --interleave --png=$<
 
--- a/audio/low_health_alarm.asm
+++ b/audio/low_health_alarm.asm
@@ -61,15 +61,20 @@
 	jr nz, .copyLoop
 	ret
 
+alarm_tone: MACRO
+	db \1 ; length
+	db \2 ; envelope
+	dw \3 ; frequency
+ENDM
+
 ;bytes to write to sound channel 1 registers for health alarm.
-;starting at FF11 (FF10 is always zeroed), so these bytes are:
-;length, envelope, freq lo, freq hi
+;starting at FF11 (FF10 is always zeroed).
 .toneDataHi
-	db $A0,$E2,$50,$87
+	alarm_tone $A0, $E2, $8750
 
 .toneDataLo
-	db $B0,$E2,$EE,$86
+	alarm_tone $B0, $E2, $86EE
 
 ;written to stop the alarm
 .toneDataSilence
-	db $00,$00,$00,$80
+	alarm_tone $00, $00, $8000
--- a/audio/play_battle_music.asm
+++ b/audio/play_battle_music.asm
@@ -16,7 +16,7 @@
 	ld a, [wCurOpponent]
 	cp OPP_ID_OFFSET
 	jr c, .wildBattle
-	cp OPP_SONY3
+	cp OPP_RIVAL3
 	jr z, .finalBattle
 	cp OPP_LANCE
 	jr nz, .normalTrainerBattle
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -29,3 +29,14 @@
 ; hRedrawRowOrColumnMode
 REDRAW_COL EQU 1
 REDRAW_ROW EQU 2
+
+; tile list ids
+	const_def
+	const TILEMAP_MON_PIC
+	const TILEMAP_SLIDE_DOWN_MON_PIC_7X5
+	const TILEMAP_SLIDE_DOWN_MON_PIC_7X3
+	const TILEMAP_GENGAR_INTRO_1
+	const TILEMAP_GENGAR_INTRO_2
+	const TILEMAP_GENGAR_INTRO_3
+	const TILEMAP_GAME_BOY
+	const TILEMAP_LINK_CABLE
--- a/constants/move_animation_constants.asm
+++ b/constants/move_animation_constants.asm
@@ -1,6 +1,7 @@
 ; special effects that are part of move animations
-
-	const_def $D8
+	const_def $C0
+FIRST_SE_ID EQU const_value
+	const_skip $18
 	const SE_WAVY_SCREEN               ; $D8 used in Psywave/Night Shade/Psychic etc.
 	const SE_SUBSTITUTE_MON            ; $D9 used in Substitute (turns the pokemon into a mini sprite)
 	const SE_SHAKE_BACK_AND_FORTH      ; $DA used in Double Team
@@ -40,3 +41,414 @@
 	const SE_RESET_SCREEN_PALETTE      ; $FC used in Leer/Thunderpunch/etc.
 	const SE_DARK_SCREEN_PALETTE       ; $FD used in Hyper Beam/Thunderpunch/etc.
 	const SE_DARK_SCREEN_FLASH         ; $FE used in Cut/Take Down/etc.
+
+; subanimations that are part of move animations
+	const_def
+	const SUBANIM_00
+	const SUBANIM_01
+	const SUBANIM_02
+	const SUBANIM_03
+	const SUBANIM_04
+	const SUBANIM_05
+	const SUBANIM_06
+	const SUBANIM_07
+	const SUBANIM_08
+	const SUBANIM_09
+	const SUBANIM_0A
+	const SUBANIM_0B
+	const SUBANIM_0C
+	const SUBANIM_0D
+	const SUBANIM_0E
+	const SUBANIM_0F
+	const SUBANIM_10
+	const SUBANIM_11
+	const SUBANIM_12
+	const SUBANIM_13
+	const SUBANIM_14
+	const SUBANIM_15
+	const SUBANIM_16
+	const SUBANIM_17
+	const SUBANIM_18
+	const SUBANIM_19
+	const SUBANIM_1A
+	const SUBANIM_1B
+	const SUBANIM_1C
+	const SUBANIM_1D
+	const SUBANIM_1E
+	const SUBANIM_1F
+	const SUBANIM_20
+	const SUBANIM_21
+	const SUBANIM_22
+	const SUBANIM_23
+	const SUBANIM_24
+	const SUBANIM_25
+	const SUBANIM_26
+	const SUBANIM_27
+	const SUBANIM_28
+	const SUBANIM_29
+	const SUBANIM_2A
+	const SUBANIM_2B
+	const SUBANIM_2C
+	const SUBANIM_2D
+	const SUBANIM_2E
+	const SUBANIM_2F
+	const SUBANIM_30
+	const SUBANIM_31
+	const SUBANIM_32
+	const SUBANIM_33
+	const SUBANIM_34
+	const SUBANIM_35
+	const SUBANIM_36
+	const SUBANIM_37
+	const SUBANIM_38
+	const SUBANIM_39
+	const SUBANIM_3A
+	const SUBANIM_3B
+	const SUBANIM_3C
+	const SUBANIM_3D
+	const SUBANIM_3E
+	const SUBANIM_3F
+	const SUBANIM_40
+	const SUBANIM_41
+	const SUBANIM_42
+	const SUBANIM_43
+	const SUBANIM_44
+	const SUBANIM_45
+	const SUBANIM_46
+	const SUBANIM_47
+	const SUBANIM_48
+	const SUBANIM_49
+	const SUBANIM_4A
+	const SUBANIM_4B
+	const SUBANIM_4C
+	const SUBANIM_4D
+	const SUBANIM_4E
+	const SUBANIM_4F
+	const SUBANIM_50
+	const SUBANIM_51
+	const SUBANIM_52
+	const SUBANIM_53
+	const SUBANIM_54
+	const SUBANIM_55
+
+; types of subanimations
+	const_def
+	const SUBANIMTYPE_NORMAL
+	const SUBANIMTYPE_HVFLIP
+	const SUBANIMTYPE_HFLIP
+	const SUBANIMTYPE_COORDFLIP
+	const SUBANIMTYPE_REVERSE
+	const SUBANIMTYPE_ENEMY
+
+; frame blocks that are part of subanimations
+	const_def
+	const FRAMEBLOCK_00
+	const FRAMEBLOCK_01
+	const FRAMEBLOCK_02
+	const FRAMEBLOCK_03
+	const FRAMEBLOCK_04
+	const FRAMEBLOCK_05
+	const FRAMEBLOCK_06
+	const FRAMEBLOCK_07
+	const FRAMEBLOCK_08
+	const FRAMEBLOCK_09
+	const FRAMEBLOCK_0A
+	const FRAMEBLOCK_0B
+	const FRAMEBLOCK_0C
+	const FRAMEBLOCK_0D
+	const FRAMEBLOCK_0E
+	const FRAMEBLOCK_0F
+	const FRAMEBLOCK_10
+	const FRAMEBLOCK_11
+	const FRAMEBLOCK_12
+	const FRAMEBLOCK_13
+	const FRAMEBLOCK_14
+	const FRAMEBLOCK_15
+	const FRAMEBLOCK_16
+	const FRAMEBLOCK_17
+	const FRAMEBLOCK_18
+	const FRAMEBLOCK_19
+	const FRAMEBLOCK_1A
+	const FRAMEBLOCK_1B
+	const FRAMEBLOCK_1C
+	const FRAMEBLOCK_1D
+	const FRAMEBLOCK_1E
+	const FRAMEBLOCK_1F
+	const FRAMEBLOCK_20
+	const FRAMEBLOCK_21
+	const FRAMEBLOCK_22
+	const FRAMEBLOCK_23
+	const FRAMEBLOCK_24
+	const FRAMEBLOCK_25
+	const FRAMEBLOCK_26
+	const FRAMEBLOCK_27
+	const FRAMEBLOCK_28
+	const FRAMEBLOCK_29
+	const FRAMEBLOCK_2A
+	const FRAMEBLOCK_2B
+	const FRAMEBLOCK_2C
+	const FRAMEBLOCK_2D
+	const FRAMEBLOCK_2E
+	const FRAMEBLOCK_2F
+	const FRAMEBLOCK_30
+	const FRAMEBLOCK_31
+	const FRAMEBLOCK_32
+	const FRAMEBLOCK_33
+	const FRAMEBLOCK_34
+	const FRAMEBLOCK_35
+	const FRAMEBLOCK_36
+	const FRAMEBLOCK_37
+	const FRAMEBLOCK_38
+	const FRAMEBLOCK_39
+	const FRAMEBLOCK_3A
+	const FRAMEBLOCK_3B
+	const FRAMEBLOCK_3C
+	const FRAMEBLOCK_3D
+	const FRAMEBLOCK_3E
+	const FRAMEBLOCK_3F
+	const FRAMEBLOCK_40
+	const FRAMEBLOCK_41
+	const FRAMEBLOCK_42
+	const FRAMEBLOCK_43
+	const FRAMEBLOCK_44
+	const FRAMEBLOCK_45
+	const FRAMEBLOCK_46
+	const FRAMEBLOCK_47
+	const FRAMEBLOCK_SMALL_BLACK_CIRCLE
+	const FRAMEBLOCK_LARGE_BLACK_CIRCLE
+	const FRAMEBLOCK_4A
+	const FRAMEBLOCK_4B
+	const FRAMEBLOCK_4C
+	const FRAMEBLOCK_4D
+	const FRAMEBLOCK_4E
+	const FRAMEBLOCK_4F
+	const FRAMEBLOCK_50
+	const FRAMEBLOCK_51
+	const FRAMEBLOCK_52
+	const FRAMEBLOCK_53
+	const FRAMEBLOCK_54
+	const FRAMEBLOCK_55
+	const FRAMEBLOCK_56
+	const FRAMEBLOCK_57
+	const FRAMEBLOCK_58
+	const FRAMEBLOCK_59
+	const FRAMEBLOCK_5A
+	const FRAMEBLOCK_5B
+	const FRAMEBLOCK_5C
+	const FRAMEBLOCK_5D
+	const FRAMEBLOCK_5E
+	const FRAMEBLOCK_5F
+	const FRAMEBLOCK_60
+	const FRAMEBLOCK_61
+	const FRAMEBLOCK_62
+	const FRAMEBLOCK_63
+	const FRAMEBLOCK_64
+	const FRAMEBLOCK_65
+	const FRAMEBLOCK_66
+	const FRAMEBLOCK_67
+	const FRAMEBLOCK_68
+	const FRAMEBLOCK_69
+	const FRAMEBLOCK_6A
+	const FRAMEBLOCK_6B
+	const FRAMEBLOCK_6C
+	const FRAMEBLOCK_6D
+	const FRAMEBLOCK_6E
+	const FRAMEBLOCK_6F
+	const FRAMEBLOCK_70
+	const FRAMEBLOCK_71
+	const FRAMEBLOCK_72
+	const FRAMEBLOCK_73
+	const FRAMEBLOCK_74
+	const FRAMEBLOCK_75
+	const FRAMEBLOCK_76
+	const FRAMEBLOCK_77
+	const FRAMEBLOCK_78
+	const FRAMEBLOCK_79
+
+; base coordinates that are part of subanimations
+	const_def
+	const BASECOORD_00
+	const BASECOORD_01
+	const BASECOORD_02
+	const BASECOORD_03
+	const BASECOORD_04
+	const BASECOORD_05
+	const BASECOORD_06
+	const BASECOORD_07
+	const BASECOORD_08
+	const BASECOORD_09
+	const BASECOORD_0A
+	const BASECOORD_0B
+	const BASECOORD_0C
+	const BASECOORD_0D
+	const BASECOORD_0E
+	const BASECOORD_0F
+	const BASECOORD_10
+	const BASECOORD_11
+	const BASECOORD_12
+	const BASECOORD_13
+	const BASECOORD_14
+	const BASECOORD_15
+	const BASECOORD_16
+	const BASECOORD_17
+	const BASECOORD_18
+	const BASECOORD_19
+	const BASECOORD_1A
+	const BASECOORD_1B
+	const BASECOORD_1C
+	const BASECOORD_1D
+	const BASECOORD_1E
+	const BASECOORD_1F
+	const BASECOORD_20
+	const BASECOORD_21
+	const BASECOORD_22
+	const BASECOORD_23
+	const BASECOORD_24
+	const BASECOORD_25
+	const BASECOORD_26
+	const BASECOORD_27
+	const BASECOORD_28
+	const BASECOORD_29
+	const BASECOORD_2A
+	const BASECOORD_2B
+	const BASECOORD_2C
+	const BASECOORD_2D
+	const BASECOORD_2E
+	const BASECOORD_2F
+	const BASECOORD_30
+	const BASECOORD_31
+	const BASECOORD_32
+	const BASECOORD_33
+	const BASECOORD_34
+	const BASECOORD_35
+	const BASECOORD_36
+	const BASECOORD_37
+	const BASECOORD_38
+	const BASECOORD_39
+	const BASECOORD_3A
+	const BASECOORD_3B
+	const BASECOORD_3C
+	const BASECOORD_3D
+	const BASECOORD_3E
+	const BASECOORD_3F
+	const BASECOORD_40
+	const BASECOORD_41
+	const BASECOORD_42
+	const BASECOORD_43
+	const BASECOORD_44
+	const BASECOORD_45
+	const BASECOORD_46
+	const BASECOORD_47
+	const BASECOORD_48
+	const BASECOORD_49
+	const BASECOORD_4A
+	const BASECOORD_4B
+	const BASECOORD_4C
+	const BASECOORD_4D
+	const BASECOORD_4E
+	const BASECOORD_4F
+	const BASECOORD_50
+	const BASECOORD_51
+	const BASECOORD_52
+	const BASECOORD_53
+	const BASECOORD_54
+	const BASECOORD_55
+	const BASECOORD_56
+	const BASECOORD_57
+	const BASECOORD_58
+	const BASECOORD_59
+	const BASECOORD_5A
+	const BASECOORD_5B
+	const BASECOORD_5C
+	const BASECOORD_5D
+	const BASECOORD_5E
+	const BASECOORD_5F
+	const BASECOORD_60
+	const BASECOORD_61
+	const BASECOORD_62
+	const BASECOORD_63
+	const BASECOORD_64
+	const BASECOORD_65
+	const BASECOORD_66
+	const BASECOORD_67
+	const BASECOORD_68
+	const BASECOORD_69
+	const BASECOORD_6A
+	const BASECOORD_6B
+	const BASECOORD_6C
+	const BASECOORD_6D
+	const BASECOORD_6E
+	const BASECOORD_6F
+	const BASECOORD_70
+	const BASECOORD_71
+	const BASECOORD_72
+	const BASECOORD_73
+	const BASECOORD_74
+	const BASECOORD_75
+	const BASECOORD_76
+	const BASECOORD_77
+	const BASECOORD_78
+	const BASECOORD_79
+	const BASECOORD_7A
+	const BASECOORD_7B
+	const BASECOORD_7C
+	const BASECOORD_7D
+	const BASECOORD_7E
+	const BASECOORD_7F
+	const BASECOORD_80
+	const BASECOORD_81
+	const BASECOORD_82
+	const BASECOORD_83
+	const BASECOORD_84
+	const BASECOORD_85
+	const BASECOORD_86
+	const BASECOORD_87
+	const BASECOORD_88
+	const BASECOORD_89
+	const BASECOORD_8A
+	const BASECOORD_8B
+	const BASECOORD_8C
+	const BASECOORD_8D
+	const BASECOORD_8E
+	const BASECOORD_8F
+	const BASECOORD_90
+	const BASECOORD_91
+	const BASECOORD_92
+	const BASECOORD_93
+	const BASECOORD_94
+	const BASECOORD_95
+	const BASECOORD_96
+	const BASECOORD_97
+	const BASECOORD_98
+	const BASECOORD_99
+	const BASECOORD_9A
+	const BASECOORD_9B
+	const BASECOORD_9C
+	const BASECOORD_9D
+	const BASECOORD_9E
+	const BASECOORD_9F
+	const BASECOORD_A0
+	const BASECOORD_A1
+	const BASECOORD_A2
+	const BASECOORD_A3
+	const BASECOORD_A4
+	const BASECOORD_A5
+	const BASECOORD_A6
+	const BASECOORD_A7
+	const BASECOORD_A8
+	const BASECOORD_A9
+	const BASECOORD_AA
+	const BASECOORD_AB
+	const BASECOORD_AC
+	const BASECOORD_AD
+	const BASECOORD_AE
+	const BASECOORD_AF
+	const BASECOORD_B0
+
+; frame block modes that are part of subanimations
+	const_def
+	const FRAMEBLOCKMODE_00
+	const FRAMEBLOCKMODE_01
+	const FRAMEBLOCKMODE_02
+	const FRAMEBLOCKMODE_03
+	const FRAMEBLOCKMODE_04
--- a/constants/oam_constants.asm
+++ b/constants/oam_constants.asm
@@ -13,6 +13,7 @@
 OAM_PRIORITY  EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
 
 ; OAM attribute masks
-OAM_HFLIP     EQU 1 << OAM_X_FLIP ; horizontal flip
-OAM_VFLIP     EQU 1 << OAM_Y_FLIP ; vertical flip
+OAM_OBP1      EQU 1 << OAM_OBP_NUM  ; OBJ palette 1
+OAM_HFLIP     EQU 1 << OAM_X_FLIP   ; horizontal flip
+OAM_VFLIP     EQU 1 << OAM_Y_FLIP   ; vertical flip
 OAM_BEHIND_BG EQU 1 << OAM_PRIORITY ; behind bg (except color 0)
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -1,75 +1,76 @@
 ; overworld sprites
 	const_def
-	const SPRITE_NONE                      ; $00
-	const SPRITE_RED                       ; $01
-	const SPRITE_BLUE                      ; $02
-	const SPRITE_OAK                       ; $03
-	const SPRITE_BUG_CATCHER               ; $04
-	const SPRITE_SLOWBRO                   ; $05
-	const SPRITE_LASS                      ; $06
-	const SPRITE_BLACK_HAIR_BOY_1          ; $07
-	const SPRITE_LITTLE_GIRL               ; $08
-	const SPRITE_BIRD                      ; $09
-	const SPRITE_FAT_BALD_GUY              ; $0a
-	const SPRITE_GAMBLER                   ; $0b
-	const SPRITE_BLACK_HAIR_BOY_2          ; $0c
-	const SPRITE_GIRL                      ; $0d
-	const SPRITE_HIKER                     ; $0e
-	const SPRITE_FOULARD_WOMAN             ; $0f
-	const SPRITE_GENTLEMAN                 ; $10
-	const SPRITE_DAISY                     ; $11
-	const SPRITE_BIKER                     ; $12
-	const SPRITE_SAILOR                    ; $13
-	const SPRITE_COOK                      ; $14
-	const SPRITE_BIKE_SHOP_GUY             ; $15
-	const SPRITE_MR_FUJI                   ; $16
-	const SPRITE_GIOVANNI                  ; $17
-	const SPRITE_ROCKET                    ; $18
-	const SPRITE_MEDIUM                    ; $19
-	const SPRITE_WAITER                    ; $1a
-	const SPRITE_ERIKA                     ; $1b
-	const SPRITE_MOM_GEISHA                ; $1c
-	const SPRITE_BRUNETTE_GIRL             ; $1d
-	const SPRITE_LANCE                     ; $1e
-	const SPRITE_OAK_SCIENTIST_AIDE        ; $1f
-	const SPRITE_OAK_AIDE                  ; $20
-	const SPRITE_ROCKER                    ; $21
-	const SPRITE_SWIMMER                   ; $22
-	const SPRITE_WHITE_PLAYER              ; $23
-	const SPRITE_GYM_HELPER                ; $24
-	const SPRITE_OLD_PERSON                ; $25
-	const SPRITE_MART_GUY                  ; $26
-	const SPRITE_FISHER                    ; $27
-	const SPRITE_OLD_MEDIUM_WOMAN          ; $28
-	const SPRITE_NURSE                     ; $29
-	const SPRITE_CABLE_CLUB_WOMAN          ; $2a
-	const SPRITE_MR_MASTERBALL             ; $2b
-	const SPRITE_LAPRAS_GIVER              ; $2c
-	const SPRITE_WARDEN                    ; $2d
-	const SPRITE_SS_CAPTAIN                ; $2e
-	const SPRITE_FISHER2                   ; $2f
-	const SPRITE_BLACKBELT                 ; $30
-	const SPRITE_GUARD                     ; $31
-	const SPRITE_COP_GUARD                 ; $32
-	const SPRITE_MOM                       ; $33
-	const SPRITE_BALDING_GUY               ; $34
-	const SPRITE_YOUNG_BOY                 ; $35
-	const SPRITE_GAMEBOY_KID               ; $36
-	const SPRITE_GAMEBOY_KID_COPY          ; $37
-	const SPRITE_CLEFAIRY                  ; $38
-	const SPRITE_AGATHA                    ; $39
-	const SPRITE_BRUNO                     ; $3a
-	const SPRITE_LORELEI                   ; $3b
-	const SPRITE_SEEL                      ; $3c
-	const SPRITE_BALL                      ; $3d
-	const SPRITE_OMANYTE                   ; $3e
-	const SPRITE_BOULDER                   ; $3f
-	const SPRITE_PAPER_SHEET               ; $40
-	const SPRITE_BOOK_MAP_DEX              ; $41
-	const SPRITE_CLIPBOARD                 ; $42
-	const SPRITE_SNORLAX                   ; $43
-	const SPRITE_OLD_AMBER_COPY            ; $44
-	const SPRITE_OLD_AMBER                 ; $45
-	const SPRITE_LYING_OLD_MAN_UNUSED_1    ; $46
-	const SPRITE_LYING_OLD_MAN_UNUSED_2    ; $47
-	const SPRITE_LYING_OLD_MAN             ; $48
+	const SPRITE_NONE                    ; $00
+	const SPRITE_RED                     ; $01
+	const SPRITE_BLUE                    ; $02
+	const SPRITE_OAK                     ; $03
+	const SPRITE_YOUNGSTER               ; $04
+	const SPRITE_MONSTER                 ; $05
+	const SPRITE_COOLTRAINER_F           ; $06
+	const SPRITE_COOLTRAINER_M           ; $07
+	const SPRITE_LITTLE_GIRL             ; $08
+	const SPRITE_BIRD                    ; $09
+	const SPRITE_MIDDLE_AGED_MAN         ; $0a
+	const SPRITE_GAMBLER                 ; $0b
+	const SPRITE_SUPER_NERD              ; $0c
+	const SPRITE_GIRL                    ; $0d
+	const SPRITE_HIKER                   ; $0e
+	const SPRITE_BEAUTY                  ; $0f
+	const SPRITE_GENTLEMAN               ; $10
+	const SPRITE_DAISY                   ; $11
+	const SPRITE_BIKER                   ; $12
+	const SPRITE_SAILOR                  ; $13
+	const SPRITE_COOK                    ; $14
+	const SPRITE_BIKE_SHOP_CLERK         ; $15
+	const SPRITE_MR_FUJI                 ; $16
+	const SPRITE_GIOVANNI                ; $17
+	const SPRITE_ROCKET                  ; $18
+	const SPRITE_CHANNELER               ; $19
+	const SPRITE_WAITER                  ; $1a
+	const SPRITE_ERIKA                   ; $1b
+	const SPRITE_MIDDLE_AGED_WOMAN       ; $1c
+	const SPRITE_BRUNETTE_GIRL           ; $1d
+	const SPRITE_LANCE                   ; $1e
+	const SPRITE_UNUSED_SCIENTIST        ; $1f
+	const SPRITE_SCIENTIST               ; $20
+	const SPRITE_ROCKER                  ; $21
+	const SPRITE_SWIMMER                 ; $22
+	const SPRITE_SAFARI_ZONE_WORKER      ; $23
+	const SPRITE_GYM_GUIDE               ; $24
+	const SPRITE_GRAMPS                  ; $25
+	const SPRITE_CLERK                   ; $26
+	const SPRITE_FISHING_GURU            ; $27
+	const SPRITE_GRANNY                  ; $28
+	const SPRITE_NURSE                   ; $29
+	const SPRITE_LINK_RECEPTIONIST       ; $2a
+	const SPRITE_SILPH_PRESIDENT         ; $2b
+	const SPRITE_SILPH_WORKER            ; $2c
+	const SPRITE_WARDEN                  ; $2d
+	const SPRITE_CAPTAIN                 ; $2e
+	const SPRITE_FISHER                  ; $2f
+	const SPRITE_KOGA                    ; $30
+	const SPRITE_GUARD                   ; $31
+	const SPRITE_UNUSED_GUARD            ; $32
+	const SPRITE_MOM                     ; $33
+	const SPRITE_BALDING_GUY             ; $34
+	const SPRITE_LITTLE_BOY              ; $35
+	const SPRITE_UNUSED_GAMEBOY_KID      ; $36
+	const SPRITE_GAMEBOY_KID             ; $37
+	const SPRITE_FAIRY                   ; $38
+	const SPRITE_AGATHA                  ; $39
+	const SPRITE_BRUNO                   ; $3a
+	const SPRITE_LORELEI                 ; $3b
+	const SPRITE_SEEL                    ; $3c
+FIRST_STILL_SPRITE EQU const_value
+	const SPRITE_POKE_BALL               ; $3d
+	const SPRITE_FOSSIL                  ; $3e
+	const SPRITE_BOULDER                 ; $3f
+	const SPRITE_PAPER                   ; $40
+	const SPRITE_POKEDEX                 ; $41
+	const SPRITE_CLIPBOARD               ; $42
+	const SPRITE_SNORLAX                 ; $43
+	const SPRITE_UNUSED_OLD_AMBER        ; $44
+	const SPRITE_OLD_AMBER               ; $45
+	const SPRITE_UNUSED_GAMBLER_ASLEEP_1 ; $46
+	const SPRITE_UNUSED_GAMBLER_ASLEEP_2 ; $47
+	const SPRITE_GAMBLER_ASLEEP          ; $48
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -6,51 +6,51 @@
 ENDM
 
 	const_def
-	trainer_const NOBODY        ; $00
-	trainer_const YOUNGSTER     ; $01
-	trainer_const BUG_CATCHER   ; $02
-	trainer_const LASS          ; $03
-	trainer_const SAILOR        ; $04
-	trainer_const JR_TRAINER_M  ; $05
-	trainer_const JR_TRAINER_F  ; $06
-	trainer_const POKEMANIAC    ; $07
-	trainer_const SUPER_NERD    ; $08
-	trainer_const HIKER         ; $09
-	trainer_const BIKER         ; $0A
-	trainer_const BURGLAR       ; $0B
-	trainer_const ENGINEER      ; $0C
-	trainer_const JUGGLER_X     ; $0D
-	trainer_const FISHER        ; $0E
-	trainer_const SWIMMER       ; $0F
-	trainer_const CUE_BALL      ; $10
-	trainer_const GAMBLER       ; $11
-	trainer_const BEAUTY        ; $12
-	trainer_const PSYCHIC_TR    ; $13
-	trainer_const ROCKER        ; $14
-	trainer_const JUGGLER       ; $15
-	trainer_const TAMER         ; $16
-	trainer_const BIRD_KEEPER   ; $17
-	trainer_const BLACKBELT     ; $18
-	trainer_const SONY1         ; $19
-	trainer_const PROF_OAK      ; $1A
-	trainer_const CHIEF         ; $1B
-	trainer_const SCIENTIST     ; $1C
-	trainer_const GIOVANNI      ; $1D
-	trainer_const ROCKET        ; $1E
-	trainer_const COOLTRAINER_M ; $1F
-	trainer_const COOLTRAINER_F ; $20
-	trainer_const BRUNO         ; $21
-	trainer_const BROCK         ; $22
-	trainer_const MISTY         ; $23
-	trainer_const LT_SURGE      ; $24
-	trainer_const ERIKA         ; $25
-	trainer_const KOGA          ; $26
-	trainer_const BLAINE        ; $27
-	trainer_const SABRINA       ; $28
-	trainer_const GENTLEMAN     ; $29
-	trainer_const SONY2         ; $2A
-	trainer_const SONY3         ; $2B
-	trainer_const LORELEI       ; $2C
-	trainer_const CHANNELER     ; $2D
-	trainer_const AGATHA        ; $2E
-	trainer_const LANCE         ; $2F
+	trainer_const NOBODY         ; $00
+	trainer_const YOUNGSTER      ; $01
+	trainer_const BUG_CATCHER    ; $02
+	trainer_const LASS           ; $03
+	trainer_const SAILOR         ; $04
+	trainer_const JR_TRAINER_M   ; $05
+	trainer_const JR_TRAINER_F   ; $06
+	trainer_const POKEMANIAC     ; $07
+	trainer_const SUPER_NERD     ; $08
+	trainer_const HIKER          ; $09
+	trainer_const BIKER          ; $0A
+	trainer_const BURGLAR        ; $0B
+	trainer_const ENGINEER       ; $0C
+	trainer_const UNUSED_JUGGLER ; $0D
+	trainer_const FISHER         ; $0E
+	trainer_const SWIMMER        ; $0F
+	trainer_const CUE_BALL       ; $10
+	trainer_const GAMBLER        ; $11
+	trainer_const BEAUTY         ; $12
+	trainer_const PSYCHIC_TR     ; $13
+	trainer_const ROCKER         ; $14
+	trainer_const JUGGLER        ; $15
+	trainer_const TAMER          ; $16
+	trainer_const BIRD_KEEPER    ; $17
+	trainer_const BLACKBELT      ; $18
+	trainer_const RIVAL1         ; $19
+	trainer_const PROF_OAK       ; $1A
+	trainer_const CHIEF          ; $1B
+	trainer_const SCIENTIST      ; $1C
+	trainer_const GIOVANNI       ; $1D
+	trainer_const ROCKET         ; $1E
+	trainer_const COOLTRAINER_M  ; $1F
+	trainer_const COOLTRAINER_F  ; $20
+	trainer_const BRUNO          ; $21
+	trainer_const BROCK          ; $22
+	trainer_const MISTY          ; $23
+	trainer_const LT_SURGE       ; $24
+	trainer_const ERIKA          ; $25
+	trainer_const KOGA           ; $26
+	trainer_const BLAINE         ; $27
+	trainer_const SABRINA        ; $28
+	trainer_const GENTLEMAN      ; $29
+	trainer_const RIVAL2         ; $2A
+	trainer_const RIVAL3         ; $2B
+	trainer_const LORELEI        ; $2C
+	trainer_const CHANNELER      ; $2D
+	trainer_const AGATHA         ; $2E
+	trainer_const LANCE          ; $2F
--- /dev/null
+++ b/data/battle_anims/base_coords.asm
@@ -1,0 +1,178 @@
+FrameBlockBaseCoords:
+	db $10, $68 ; BASECOORD_00
+	db $10, $70 ; BASECOORD_01
+	db $10, $78 ; BASECOORD_02
+	db $10, $80 ; BASECOORD_03
+	db $10, $88 ; BASECOORD_04
+	db $10, $90 ; BASECOORD_05
+	db $10, $98 ; BASECOORD_06
+	db $18, $68 ; BASECOORD_07
+	db $18, $70 ; BASECOORD_08
+	db $18, $78 ; BASECOORD_09
+	db $34, $28 ; BASECOORD_0A
+	db $18, $80 ; BASECOORD_0B
+	db $18, $88 ; BASECOORD_0C
+	db $18, $98 ; BASECOORD_0D
+	db $20, $68 ; BASECOORD_0E
+	db $20, $70 ; BASECOORD_0F
+	db $20, $78 ; BASECOORD_10
+	db $20, $80 ; BASECOORD_11
+	db $20, $88 ; BASECOORD_12
+	db $20, $90 ; BASECOORD_13
+	db $20, $98 ; BASECOORD_14
+	db $28, $68 ; BASECOORD_15
+	db $28, $70 ; BASECOORD_16
+	db $28, $78 ; BASECOORD_17
+	db $28, $80 ; BASECOORD_18
+	db $28, $88 ; BASECOORD_19
+	db $30, $68 ; BASECOORD_1A
+	db $30, $70 ; BASECOORD_1B
+	db $30, $78 ; BASECOORD_1C
+	db $30, $80 ; BASECOORD_1D
+	db $30, $90 ; BASECOORD_1E
+	db $30, $98 ; BASECOORD_1F
+	db $38, $68 ; BASECOORD_20
+	db $38, $78 ; BASECOORD_21
+	db $38, $80 ; BASECOORD_22
+	db $38, $88 ; BASECOORD_23
+	db $40, $68 ; BASECOORD_24
+	db $40, $70 ; BASECOORD_25
+	db $40, $78 ; BASECOORD_26
+	db $40, $80 ; BASECOORD_27
+	db $40, $88 ; BASECOORD_28
+	db $40, $98 ; BASECOORD_29
+	db $10, $60 ; BASECOORD_2A
+	db $18, $60 ; BASECOORD_2B
+	db $20, $60 ; BASECOORD_2C
+	db $28, $60 ; BASECOORD_2D
+	db $30, $60 ; BASECOORD_2E
+	db $40, $60 ; BASECOORD_2F
+	db $58, $28 ; BASECOORD_30
+	db $43, $38 ; BASECOORD_31
+	db $33, $48 ; BASECOORD_32
+	db $20, $58 ; BASECOORD_33
+	db $32, $78 ; BASECOORD_34
+	db $58, $58 ; BASECOORD_35
+	db $2C, $6C ; BASECOORD_36
+	db $34, $80 ; BASECOORD_37
+	db $48, $70 ; BASECOORD_38
+	db $42, $36 ; BASECOORD_39
+	db $38, $44 ; BASECOORD_3A
+	db $40, $52 ; BASECOORD_3B
+	db $48, $60 ; BASECOORD_3C
+	db $3E, $6E ; BASECOORD_3D
+	db $28, $7C ; BASECOORD_3E
+	db $28, $8A ; BASECOORD_3F
+	db $50, $3C ; BASECOORD_40
+	db $48, $50 ; BASECOORD_41
+	db $40, $64 ; BASECOORD_42
+	db $38, $38 ; BASECOORD_43
+	db $50, $30 ; BASECOORD_44
+	db $50, $38 ; BASECOORD_45
+	db $50, $40 ; BASECOORD_46
+	db $50, $48 ; BASECOORD_47
+	db $50, $50 ; BASECOORD_48
+	db $48, $58 ; BASECOORD_49
+	db $50, $44 ; BASECOORD_4A
+	db $48, $48 ; BASECOORD_4B
+	db $48, $4C ; BASECOORD_4C
+	db $40, $50 ; BASECOORD_4D
+	db $40, $54 ; BASECOORD_4E
+	db $38, $58 ; BASECOORD_4F
+	db $38, $5C ; BASECOORD_50
+	db $30, $64 ; BASECOORD_51
+	db $48, $40 ; BASECOORD_52
+	db $48, $39 ; BASECOORD_53
+	db $24, $88 ; BASECOORD_54
+	db $24, $70 ; BASECOORD_55
+	db $1C, $70 ; BASECOORD_56
+	db $1C, $88 ; BASECOORD_57
+	db $34, $68 ; BASECOORD_58
+	db $34, $88 ; BASECOORD_59
+	db $68, $50 ; BASECOORD_5A
+	db $60, $50 ; BASECOORD_5B
+	db $68, $60 ; BASECOORD_5C
+	db $58, $50 ; BASECOORD_5D
+	db $60, $60 ; BASECOORD_5E
+	db $68, $40 ; BASECOORD_5F
+	db $40, $40 ; BASECOORD_60
+	db $38, $40 ; BASECOORD_61
+	db $0B, $60 ; BASECOORD_62
+	db $44, $48 ; BASECOORD_63
+	db $40, $14 ; BASECOORD_64
+	db $48, $1C ; BASECOORD_65
+	db $50, $24 ; BASECOORD_66
+	db $4C, $24 ; BASECOORD_67
+	db $10, $62 ; BASECOORD_68
+	db $12, $62 ; BASECOORD_69
+	db $12, $60 ; BASECOORD_6A
+	db $20, $72 ; BASECOORD_6B
+	db $22, $72 ; BASECOORD_6C
+	db $22, $70 ; BASECOORD_6D
+	db $28, $62 ; BASECOORD_6E
+	db $50, $0A ; BASECOORD_6F
+	db $52, $0A ; BASECOORD_70
+	db $38, $30 ; BASECOORD_71
+	db $40, $48 ; BASECOORD_72
+	db $30, $48 ; BASECOORD_73
+	db $40, $30 ; BASECOORD_74
+	db $30, $40 ; BASECOORD_75
+	db $38, $48 ; BASECOORD_76
+	db $40, $4A ; BASECOORD_77
+	db $48, $4B ; BASECOORD_78
+	db $50, $4C ; BASECOORD_79
+	db $58, $4D ; BASECOORD_7A
+	db $60, $4D ; BASECOORD_7B
+	db $68, $4D ; BASECOORD_7C
+	db $38, $10 ; BASECOORD_7D
+	db $50, $10 ; BASECOORD_7E
+	db $38, $28 ; BASECOORD_7F
+	db $48, $18 ; BASECOORD_80
+	db $40, $20 ; BASECOORD_81
+	db $48, $20 ; BASECOORD_82
+	db $40, $3C ; BASECOORD_83
+	db $38, $50 ; BASECOORD_84
+	db $28, $64 ; BASECOORD_85
+	db $1C, $90 ; BASECOORD_86
+	db $24, $80 ; BASECOORD_87
+	db $2C, $70 ; BASECOORD_88
+	db $30, $38 ; BASECOORD_89
+	db $10, $50 ; BASECOORD_8A
+	db $3C, $40 ; BASECOORD_8B
+	db $40, $58 ; BASECOORD_8C
+	db $30, $58 ; BASECOORD_8D
+	db $58, $48 ; BASECOORD_8E
+	db $50, $58 ; BASECOORD_8F
+	db $48, $68 ; BASECOORD_90
+	db $40, $18 ; BASECOORD_91
+	db $28, $58 ; BASECOORD_92
+	db $40, $38 ; BASECOORD_93
+	db $48, $38 ; BASECOORD_94
+	db $08, $70 ; BASECOORD_95
+	db $44, $1C ; BASECOORD_96
+	db $3C, $58 ; BASECOORD_97
+	db $38, $60 ; BASECOORD_98
+	db $08, $60 ; BASECOORD_99
+	db $38, $70 ; BASECOORD_9A
+	db $38, $6C ; BASECOORD_9B
+	db $38, $64 ; BASECOORD_9C
+	db $1C, $74 ; BASECOORD_9D
+	db $2E, $74 ; BASECOORD_9E
+	db $34, $50 ; BASECOORD_9F
+	db $2F, $60 ; BASECOORD_A0
+	db $31, $70 ; BASECOORD_A1
+	db $4C, $30 ; BASECOORD_A2
+	db $3B, $40 ; BASECOORD_A3
+	db $2D, $50 ; BASECOORD_A4
+	db $26, $60 ; BASECOORD_A5
+	db $2D, $70 ; BASECOORD_A6
+	db $28, $50 ; BASECOORD_A7
+	db $1E, $60 ; BASECOORD_A8
+	db $29, $70 ; BASECOORD_A9
+	db $16, $60 ; BASECOORD_AA
+	db $14, $58 ; BASECOORD_AB
+	db $12, $54 ; BASECOORD_AC
+	db $14, $50 ; BASECOORD_AD
+	db $18, $4C ; BASECOORD_AE
+	db $1C, $48 ; BASECOORD_AF
+	db $48, $28 ; BASECOORD_B0
--- /dev/null
+++ b/data/battle_anims/frame_blocks.asm
@@ -1,0 +1,1238 @@
+FrameBlockPointers:
+	dw FrameBlock00
+	dw FrameBlock01
+	dw FrameBlock02
+	dw FrameBlock03
+	dw FrameBlock04
+	dw FrameBlock05
+	dw FrameBlock06
+	dw FrameBlock07
+	dw FrameBlock08
+	dw FrameBlock09
+	dw FrameBlock0a
+	dw FrameBlock0b
+	dw FrameBlock0c
+	dw FrameBlock0d
+	dw FrameBlock0e
+	dw FrameBlock0f
+	dw FrameBlock10
+	dw FrameBlock11
+	dw FrameBlock12
+	dw FrameBlock13
+	dw FrameBlock14
+	dw FrameBlock15
+	dw FrameBlock16
+	dw FrameBlock17
+	dw FrameBlock18
+	dw FrameBlock19
+	dw FrameBlock1a
+	dw FrameBlock1b
+	dw FrameBlock1c
+	dw FrameBlock1d
+	dw FrameBlock1e
+	dw FrameBlock1f
+	dw FrameBlock20
+	dw FrameBlock21
+	dw FrameBlock22
+	dw FrameBlock23
+	dw FrameBlock24
+	dw FrameBlock25
+	dw FrameBlock26
+	dw FrameBlock27
+	dw FrameBlock28
+	dw FrameBlock29
+	dw FrameBlock2a
+	dw FrameBlock2b
+	dw FrameBlock2c
+	dw FrameBlock2d
+	dw FrameBlock2e
+	dw FrameBlock2f
+	dw FrameBlock30
+	dw FrameBlock31
+	dw FrameBlock32
+	dw FrameBlock33
+	dw FrameBlock34
+	dw FrameBlock35
+	dw FrameBlock36
+	dw FrameBlock37
+	dw FrameBlock38
+	dw FrameBlock39
+	dw FrameBlock3a
+	dw FrameBlock3b
+	dw FrameBlock3c
+	dw FrameBlock3d
+	dw FrameBlock3e
+	dw FrameBlock3f
+	dw FrameBlock40
+	dw FrameBlock41
+	dw FrameBlock42
+	dw FrameBlock43
+	dw FrameBlock44
+	dw FrameBlock45
+	dw FrameBlock46
+	dw FrameBlock47
+	dw SmallBlackCircleFrameBlock
+	dw LargeBlackCircleFrameBlock
+	dw FrameBlock4a
+	dw FrameBlock4b
+	dw FrameBlock4c
+	dw FrameBlock4d
+	dw FrameBlock4e
+	dw FrameBlock4f
+	dw FrameBlock50
+	dw FrameBlock51
+	dw FrameBlock52
+	dw FrameBlock53
+	dw FrameBlock54
+	dw FrameBlock55
+	dw FrameBlock56
+	dw FrameBlock57
+	dw FrameBlock58
+	dw FrameBlock59
+	dw FrameBlock5a
+	dw FrameBlock5b
+	dw FrameBlock5c
+	dw FrameBlock5d
+	dw FrameBlock5e
+	dw FrameBlock5f
+	dw FrameBlock60
+	dw FrameBlock61
+	dw FrameBlock62
+	dw FrameBlock63
+	dw FrameBlock64
+	dw FrameBlock65
+	dw FrameBlock66
+	dw FrameBlock67
+	dw FrameBlock68
+	dw FrameBlock69
+	dw FrameBlock6a
+	dw FrameBlock6b
+	dw FrameBlock6c
+	dw FrameBlock6d
+	dw FrameBlock6e
+	dw FrameBlock6f
+	dw FrameBlock70
+	dw FrameBlock71
+	dw FrameBlock72
+	dw FrameBlock73
+	dw FrameBlock74
+	dw FrameBlock75
+	dw FrameBlock76
+	dw FrameBlock77
+	dw FrameBlock78
+	dw FrameBlock79
+
+FrameBlock01:
+	db 9 ; #
+	dbsprite  0,  0,  0,  0, $2c, 0
+	dbsprite  1,  0,  0,  0, $2d, 0
+	dbsprite  2,  0,  0,  0, $2c, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $3c, 0
+	dbsprite  1,  1,  0,  0, $3d, 0
+	dbsprite  2,  1,  0,  0, $3c, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $2c, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $2d, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $2c, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock02:
+	db 16 ; #
+	dbsprite  0,  0,  0,  0, $20, 0
+	dbsprite  1,  0,  0,  0, $21, 0
+	dbsprite  2,  0,  0,  0, $21, OAM_HFLIP
+	dbsprite  3,  0,  0,  0, $20, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $30, 0
+	dbsprite  1,  1,  0,  0, $31, 0
+	dbsprite  2,  1,  0,  0, $31, OAM_HFLIP
+	dbsprite  3,  1,  0,  0, $30, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $30, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $31, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $31, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  2,  0,  0, $30, OAM_HFLIP | OAM_VFLIP
+	dbsprite  0,  3,  0,  0, $20, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $21, OAM_VFLIP
+	dbsprite  2,  3,  0,  0, $21, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  3,  0,  0, $20, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock03:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $02, 0
+	dbsprite  1,  0,  0,  0, $02, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $12, 0
+	dbsprite  1,  1,  0,  0, $12, OAM_HFLIP
+
+FrameBlock04:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $06, 0
+	dbsprite  1,  0,  0,  0, $07, 0
+	dbsprite  0,  1,  0,  0, $16, 0
+	dbsprite  1,  1,  0,  0, $17, 0
+
+FrameBlock05:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $07, OAM_HFLIP
+	dbsprite  1,  0,  0,  0, $06, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $17, OAM_HFLIP
+	dbsprite  1,  1,  0,  0, $16, OAM_HFLIP
+
+FrameBlock06:
+	db 12 ; #
+	dbsprite  1,  0,  0,  0, $23, 0
+	dbsprite  0,  1,  0,  0, $32, 0
+	dbsprite  1,  1,  0,  0, $33, 0
+	dbsprite  2,  0,  0,  0, $23, OAM_HFLIP
+	dbsprite  2,  1,  0,  0, $33, OAM_HFLIP
+	dbsprite  3,  1,  0,  0, $32, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $32, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $33, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $23, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $33, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  2,  0,  0, $32, OAM_HFLIP | OAM_VFLIP
+	dbsprite  2,  3,  0,  0, $23, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock07:
+	db 16 ; #
+	dbsprite  0,  0,  0,  0, $20, 0
+	dbsprite  1,  0,  0,  0, $21, 0
+	dbsprite  0,  1,  0,  0, $30, 0
+	dbsprite  1,  1,  0,  0, $31, 0
+	dbsprite  2,  0,  0,  0, $21, OAM_HFLIP
+	dbsprite  3,  0,  0,  0, $20, OAM_HFLIP
+	dbsprite  2,  1,  0,  0, $31, OAM_HFLIP
+	dbsprite  3,  1,  0,  0, $30, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $30, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $31, OAM_VFLIP
+	dbsprite  0,  3,  0,  0, $20, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $21, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $31, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  2,  0,  0, $30, OAM_HFLIP | OAM_VFLIP
+	dbsprite  2,  3,  0,  0, $21, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  3,  0,  0, $20, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock08:
+	db 16 ; #
+	dbsprite  0,  0,  0,  0, $20, 0
+	dbsprite  1,  0,  0,  0, $21, 0
+	dbsprite  0,  1,  0,  0, $30, 0
+	dbsprite  1,  1,  0,  0, $31, 0
+	dbsprite  3,  0,  0,  0, $21, OAM_HFLIP
+	dbsprite  4,  0,  0,  0, $20, OAM_HFLIP
+	dbsprite  3,  1,  0,  0, $31, OAM_HFLIP
+	dbsprite  4,  1,  0,  0, $30, OAM_HFLIP
+	dbsprite  0,  3,  0,  0, $30, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $31, OAM_VFLIP
+	dbsprite  0,  4,  0,  0, $20, OAM_VFLIP
+	dbsprite  1,  4,  0,  0, $21, OAM_VFLIP
+	dbsprite  3,  3,  0,  0, $31, OAM_HFLIP | OAM_VFLIP
+	dbsprite  4,  3,  0,  0, $30, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  4,  0,  0, $21, OAM_HFLIP | OAM_VFLIP
+	dbsprite  4,  4,  0,  0, $20, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock09:
+	db 12 ; #
+	dbsprite  0,  0,  0,  0, $24, 0
+	dbsprite  1,  0,  0,  0, $25, 0
+	dbsprite  0,  1,  0,  0, $34, 0
+	dbsprite  3,  0,  0,  0, $25, OAM_HFLIP
+	dbsprite  4,  0,  0,  0, $24, OAM_HFLIP
+	dbsprite  4,  1,  0,  0, $34, OAM_HFLIP
+	dbsprite  0,  3,  0,  0, $34, OAM_VFLIP
+	dbsprite  0,  4,  0,  0, $24, OAM_VFLIP
+	dbsprite  1,  4,  0,  0, $25, OAM_VFLIP
+	dbsprite  4,  3,  0,  0, $34, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  4,  0,  0, $25, OAM_HFLIP | OAM_VFLIP
+	dbsprite  4,  4,  0,  0, $24, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock0a:
+	db 12 ; #
+	dbsprite  0,  0,  0,  0, $24, 0
+	dbsprite  1,  0,  0,  0, $25, 0
+	dbsprite  0,  1,  0,  0, $34, 0
+	dbsprite  4,  0,  0,  0, $25, OAM_HFLIP
+	dbsprite  5,  0,  0,  0, $24, OAM_HFLIP
+	dbsprite  5,  1,  0,  0, $34, OAM_HFLIP
+	dbsprite  0,  4,  0,  0, $34, OAM_VFLIP
+	dbsprite  0,  5,  0,  0, $24, OAM_VFLIP
+	dbsprite  1,  5,  0,  0, $25, OAM_VFLIP
+	dbsprite  5,  4,  0,  0, $34, OAM_HFLIP | OAM_VFLIP
+	dbsprite  4,  5,  0,  0, $25, OAM_HFLIP | OAM_VFLIP
+	dbsprite  5,  5,  0,  0, $24, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock0b:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $05, 0
+	dbsprite  1,  0,  0,  0, $05, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $15, 0
+	dbsprite  1,  1,  0,  0, $15, OAM_HFLIP
+
+FrameBlock0c:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $04, 0
+	dbsprite  1,  0,  0,  0, $04, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $14, 0
+	dbsprite  1,  1,  0,  0, $14, OAM_HFLIP
+
+FrameBlock0d:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $0c, 0
+	dbsprite  1,  0,  0,  0, $0d, 0
+	dbsprite  0,  1,  0,  0, $1c, 0
+	dbsprite  1,  1,  0,  0, $1d, 0
+	dbsprite  0,  2,  0,  0, $1d, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $1c, OAM_HFLIP | OAM_VFLIP
+	dbsprite  0,  3,  0,  0, $0d, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $0c, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock0e:
+	db 4 ; #
+	dbsprite  0,  4,  0,  0, $0c, 0
+	dbsprite  1,  4,  0,  0, $0d, 0
+	dbsprite  0,  5,  0,  0, $1c, 0
+	dbsprite  1,  5,  0,  0, $1d, 0
+
+FrameBlock0f:
+	db 4 ; #
+	dbsprite  0,  6,  0,  0, $1d, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  6,  0,  0, $1c, OAM_HFLIP | OAM_VFLIP
+	dbsprite  0,  7,  0,  0, $0d, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  7,  0,  0, $0c, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock10:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $0e, 0
+	dbsprite  1,  0,  0,  0, $0f, 0
+	dbsprite  0,  1,  0,  0, $1e, 0
+	dbsprite  1,  1,  0,  0, $1f, 0
+	dbsprite  2,  0,  0,  0, $0f, OAM_HFLIP
+	dbsprite  3,  0,  0,  0, $0e, OAM_HFLIP
+	dbsprite  2,  1,  0,  0, $1f, OAM_HFLIP
+	dbsprite  3,  1,  0,  0, $1e, OAM_HFLIP
+
+FrameBlock11:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $0e, 0
+	dbsprite  1,  0,  0,  0, $0f, 0
+	dbsprite  0,  1,  0,  0, $1e, 0
+	dbsprite  1,  1,  0,  0, $1f, 0
+	dbsprite  4,  0,  0,  0, $0f, OAM_HFLIP
+	dbsprite  5,  0,  0,  0, $0e, OAM_HFLIP
+	dbsprite  4,  1,  0,  0, $1f, OAM_HFLIP
+	dbsprite  5,  1,  0,  0, $1e, OAM_HFLIP
+
+FrameBlock12:
+	db 3 ; #
+	dbsprite  0,  0,  0,  0, $37, 0
+	dbsprite  2,  1,  0,  0, $37, 0
+	dbsprite  4,  0,  0,  0, $37, 0
+
+FrameBlock13:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $36, 0
+	dbsprite  1,  0,  0,  0, $36, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $36, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $36, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock14:
+	db 8 ; #
+	dbsprite  2,  0,  0,  0, $28, 0
+	dbsprite  3,  0,  0,  0, $28, OAM_HFLIP
+	dbsprite  2,  1,  0,  0, $38, 0
+	dbsprite  3,  1,  0,  0, $38, OAM_HFLIP
+	dbsprite  4,  0,  0,  0, $36, 0
+	dbsprite  5,  0,  0,  0, $36, OAM_HFLIP
+	dbsprite  4,  1,  0,  0, $36, OAM_VFLIP
+	dbsprite  5,  1,  0,  0, $36, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock15:
+	db 12 ; #
+	dbsprite  0,  0,  0,  0, $28, 0
+	dbsprite  1,  0,  0,  0, $28, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $38, 0
+	dbsprite  1,  1,  0,  0, $38, OAM_HFLIP
+	dbsprite  2,  0,  0,  0, $29, 0
+	dbsprite  3,  0,  0,  0, $29, OAM_HFLIP
+	dbsprite  2,  1,  0,  0, $39, 0
+	dbsprite  3,  1,  0,  0, $39, OAM_HFLIP
+	dbsprite  4,  0,  0,  0, $28, 0
+	dbsprite  5,  0,  0,  0, $28, OAM_HFLIP
+	dbsprite  4,  1,  0,  0, $38, 0
+	dbsprite  5,  1,  0,  0, $38, OAM_HFLIP
+
+FrameBlock16:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $29, 0
+	dbsprite  1,  0,  0,  0, $29, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $39, 0
+	dbsprite  1,  1,  0,  0, $39, OAM_HFLIP
+	dbsprite  4,  0,  0,  0, $29, 0
+	dbsprite  5,  0,  0,  0, $29, OAM_HFLIP
+	dbsprite  4,  1,  0,  0, $39, 0
+	dbsprite  5,  1,  0,  0, $39, OAM_HFLIP
+
+FrameBlock17:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $08, 0
+	dbsprite  1,  0,  0,  0, $09, 0
+	dbsprite  0,  1,  0,  0, $18, 0
+	dbsprite  1,  1,  0,  0, $19, 0
+
+FrameBlock18:
+	db 1 ; #
+	dbsprite  0,  3,  0,  0, $45, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock19:
+	db 2 ; #
+	dbsprite  1,  3,  0,  0, $45, 0
+	dbsprite  1,  2,  0,  0, $46, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock1a:
+	db 2 ; #
+	dbsprite  2,  2,  0,  0, $45, OAM_HFLIP | OAM_VFLIP
+	dbsprite  2,  3,  0,  0, $46, 0
+
+FrameBlock1b:
+	db 2 ; #
+	dbsprite  3,  2,  0,  0, $45, 0
+	dbsprite  3,  1,  0,  0, $46, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock1c:
+	db 2 ; #
+	dbsprite  4,  1,  0,  0, $45, OAM_HFLIP | OAM_VFLIP
+	dbsprite  4,  2,  0,  0, $46, 0
+
+FrameBlock1d:
+	db 2 ; #
+	dbsprite  5,  1,  0,  0, $45, 0
+	dbsprite  5,  0,  0,  0, $46, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock1e:
+	db 2 ; #
+	dbsprite  6,  0,  0,  0, $45, OAM_HFLIP | OAM_VFLIP
+	dbsprite  6,  1,  0,  0, $46, 0
+
+FrameBlock75:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $43, 0
+	dbsprite  1,  0,  0,  0, $43, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $22, 0
+	dbsprite  1,  1,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock1f:
+	db 2 ; #
+	dbsprite  0,  0,  0,  0, $03, 0
+	dbsprite  6,  0,  0,  0, $03, OAM_HFLIP
+
+FrameBlock20:
+	db 6 ; #
+	dbsprite  0,  0,  0,  0, $03, 0
+	dbsprite  6,  0,  0,  0, $03, OAM_HFLIP
+	dbsprite  1,  1,  0,  0, $03, 0
+	dbsprite  5,  1,  0,  0, $03, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $13, 0
+	dbsprite  6,  1,  0,  0, $13, OAM_HFLIP
+
+FrameBlock21:
+	db 12 ; #
+	dbsprite  0,  0,  0,  0, $03, 0
+	dbsprite  6,  0,  0,  0, $03, OAM_HFLIP
+	dbsprite  1,  1,  0,  0, $03, 0
+	dbsprite  5,  1,  0,  0, $03, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $13, 0
+	dbsprite  6,  1,  0,  0, $13, OAM_HFLIP
+	dbsprite  2,  2,  0,  0, $03, 0
+	dbsprite  4,  2,  0,  0, $03, OAM_HFLIP
+	dbsprite  1,  2,  0,  0, $13, 0
+	dbsprite  5,  2,  0,  0, $13, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $03, 0
+	dbsprite  6,  2,  0,  0, $03, OAM_HFLIP
+
+FrameBlock22:
+	db 19 ; #
+	dbsprite  0,  0,  0,  0, $03, 0
+	dbsprite  0,  1,  0,  0, $13, 0
+	dbsprite  0,  2,  0,  0, $03, 0
+	dbsprite  0,  3,  0,  0, $13, 0
+	dbsprite  1,  1,  0,  0, $03, 0
+	dbsprite  1,  2,  0,  0, $13, 0
+	dbsprite  1,  3,  0,  0, $03, 0
+	dbsprite  2,  2,  0,  0, $03, 0
+	dbsprite  2,  3,  0,  0, $13, 0
+	dbsprite  3,  3,  0,  0, $03, 0
+	dbsprite  4,  2,  0,  0, $03, OAM_HFLIP
+	dbsprite  4,  3,  0,  0, $13, OAM_HFLIP
+	dbsprite  5,  1,  0,  0, $03, OAM_HFLIP
+	dbsprite  5,  2,  0,  0, $13, OAM_HFLIP
+	dbsprite  5,  3,  0,  0, $03, OAM_HFLIP
+	dbsprite  6,  0,  0,  0, $03, OAM_HFLIP
+	dbsprite  6,  1,  0,  0, $13, OAM_HFLIP
+	dbsprite  6,  2,  0,  0, $03, OAM_HFLIP
+	dbsprite  6,  3,  0,  0, $13, OAM_HFLIP
+
+FrameBlock23:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $0a, 0
+	dbsprite  1,  0,  0,  0, $0b, 0
+	dbsprite  0,  1,  0,  0, $1a, 0
+	dbsprite  1,  1,  0,  0, $1b, 0
+
+FrameBlock24:
+	db 2 ; #
+	dbsprite  0,  1,  0,  0, $0a, 0
+	dbsprite  1,  1,  0,  0, $0b, 0
+
+FrameBlock25:
+	db 12 ; #
+	dbsprite  0,  2,  0,  0, $0a, 0
+	dbsprite  1,  2,  0,  0, $0b, 0
+	dbsprite  0,  3,  0,  0, $1a, 0
+	dbsprite  1,  3,  0,  0, $1b, 0
+	dbsprite  2,  0,  0,  0, $0a, 0
+	dbsprite  3,  0,  0,  0, $0b, 0
+	dbsprite  2,  1,  0,  0, $1a, 0
+	dbsprite  3,  1,  0,  0, $1b, 0
+	dbsprite  4,  1,  0,  0, $0a, 0
+	dbsprite  5,  1,  0,  0, $0b, 0
+	dbsprite  4,  2,  0,  0, $1a, 0
+	dbsprite  5,  2,  0,  0, $1b, 0
+
+FrameBlock26:
+	db 4 ; #
+	dbsprite  2,  0,  0,  0, $44, 0
+	dbsprite  3,  0,  0,  0, $44, OAM_HFLIP
+	dbsprite  2,  1,  0,  0, $44, OAM_VFLIP
+	dbsprite  3,  1,  0,  0, $44, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock27:
+	db 5 ; #
+	dbsprite  1,  1,  0,  0, $44, 0
+	dbsprite  2,  1,  0,  0, $44, OAM_HFLIP
+	dbsprite  1,  2,  0,  0, $44, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $44, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  0,  0,  0, $47, 0
+
+FrameBlock28:
+	db 6 ; #
+	dbsprite  0,  2,  0,  0, $44, 0
+	dbsprite  1,  2,  0,  0, $44, OAM_HFLIP
+	dbsprite  0,  3,  0,  0, $44, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $44, OAM_HFLIP | OAM_VFLIP
+	dbsprite  2,  1,  0,  0, $47, 0
+	dbsprite  2,  0,  6,  2, $47, 0
+
+FrameBlock29:
+	db 4 ; #
+	dbsprite  0,  3,  0,  0, $47, 0
+	dbsprite  0,  2,  6,  2, $47, 0
+	dbsprite  1,  1,  4,  4, $47, 0
+	dbsprite  2,  0,  2,  6, $47, 0
+
+FrameBlock2a:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $44, 0
+	dbsprite  1,  0,  0,  0, $44, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $44, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $44, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock2b:
+	db 2 ; #
+	dbsprite  0,  0,  2,  6, $47, 0
+	dbsprite  1,  0,  0,  0, $47, 0
+
+FrameBlock2c:
+	db 1 ; #
+	dbsprite  0, 20,  0,  0, $4d, 0
+
+FrameBlock2d:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $26, 0
+	dbsprite  1,  0,  0,  0, $27, 0
+	dbsprite  0,  1,  0,  0, $36, 0
+	dbsprite  1,  1,  0,  0, $37, 0
+	dbsprite  0,  2,  0,  0, $28, 0
+	dbsprite  1,  2,  0,  0, $29, 0
+	dbsprite  0,  3,  0,  0, $38, 0
+	dbsprite  1,  3,  0,  0, $39, 0
+
+FrameBlock2e:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $27, OAM_HFLIP
+	dbsprite  1,  0,  0,  0, $26, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $37, OAM_HFLIP
+	dbsprite  1,  1,  0,  0, $36, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $29, OAM_HFLIP
+	dbsprite  1,  2,  0,  0, $28, OAM_HFLIP
+	dbsprite  0,  3,  0,  0, $39, OAM_HFLIP
+	dbsprite  1,  3,  0,  0, $38, OAM_HFLIP
+
+FrameBlock2f:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $0c, 0
+	dbsprite  1,  0,  0,  0, $0d, 0
+	dbsprite  0,  1,  0,  0, $0c, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $0d, OAM_VFLIP
+
+FrameBlock30:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $44, 0
+	dbsprite  1,  0,  0,  0, $44, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $44, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $44, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock31:
+	db 1 ; #
+	dbsprite  0,  0,  0,  0, $45, 0
+
+FrameBlock32:
+	db 7 ; #
+	dbsprite  0,  0,  0,  0, $4d, 0
+	dbsprite  1,  0,  0,  0, $2f, 0
+	dbsprite  2,  0,  0,  0, $4d, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $4e, 0
+	dbsprite  1,  1,  0,  0, $07, 0
+	dbsprite  2,  1,  0,  0, $4e, OAM_HFLIP
+	dbsprite  1,  2,  0,  0, $3f, 0
+
+FrameBlock33:
+	db 7 ; #
+	dbsprite  1,  0,  0,  0, $3f, OAM_VFLIP
+	dbsprite  0,  1,  0,  0, $4e, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $07, OAM_VFLIP
+	dbsprite  2,  1,  0,  0, $4e, OAM_HFLIP | OAM_VFLIP
+	dbsprite  0,  2,  0,  0, $4d, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $2f, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $4d, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock34:
+	db 1 ; #
+	dbsprite  0, 20,  0,  0, $00, OAM_OBP1
+
+FrameBlock35:
+	db 6 ; #
+	dbsprite  0,  0,  0,  0, $2a, 0
+	dbsprite  1,  0,  0,  0, $2b, 0
+	dbsprite  0,  1,  0,  0, $3a, 0
+	dbsprite  0,  2,  0,  0, $3a, OAM_VFLIP
+	dbsprite  0,  3,  0,  0, $2a, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $2b, OAM_VFLIP
+
+FrameBlock36:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $00, 0
+	dbsprite  1,  0,  0,  0, $01, 0
+	dbsprite  0,  1,  0,  0, $10, 0
+	dbsprite  1,  1,  0,  0, $11, 0
+
+FrameBlock37:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $01, OAM_BEHIND_BG | OAM_HFLIP
+	dbsprite  1,  0,  0,  0, $00, OAM_BEHIND_BG | OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $11, OAM_BEHIND_BG | OAM_HFLIP
+	dbsprite  1,  1,  0,  0, $10, OAM_BEHIND_BG | OAM_HFLIP
+
+FrameBlock38:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $0a, 0
+	dbsprite  1,  0,  0,  0, $0b, 0
+	dbsprite  0,  1,  0,  0, $1a, 0
+	dbsprite  1,  1,  0,  0, $1b, 0
+
+FrameBlock39:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $0b, OAM_HFLIP
+	dbsprite  1,  0,  0,  0, $0a, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $1b, OAM_HFLIP
+	dbsprite  1,  1,  0,  0, $1a, OAM_HFLIP
+
+FrameBlock3a:
+	db 4 ; #
+	dbsprite  0,  4,  0,  0, $05, 0
+	dbsprite  1,  4,  0,  0, $05, OAM_HFLIP
+	dbsprite  0,  5,  0,  0, $15, 0
+	dbsprite  1,  5,  0,  0, $15, OAM_HFLIP
+
+FrameBlock3b:
+	db 5 ; #
+	dbsprite  0,  3,  0,  0, $04, 0
+	dbsprite  1,  3,  0,  0, $04, OAM_HFLIP
+	dbsprite  0,  4,  0,  0, $14, 0
+	dbsprite  1,  4,  0,  0, $14, OAM_HFLIP
+	dbsprite  0,  5,  4,  0, $41, 0
+
+FrameBlock3c:
+	db 6 ; #
+	dbsprite  0,  2,  0,  0, $05, 0
+	dbsprite  1,  2,  0,  0, $05, OAM_HFLIP
+	dbsprite  0,  3,  0,  0, $15, 0
+	dbsprite  1,  3,  0,  0, $15, OAM_HFLIP
+	dbsprite  0,  4,  4,  0, $42, 0
+	dbsprite  0,  5,  4,  0, $42, 0
+
+FrameBlock3d:
+	db 7 ; #
+	dbsprite  0,  1,  0,  0, $04, 0
+	dbsprite  1,  1,  0,  0, $04, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $14, 0
+	dbsprite  1,  2,  0,  0, $14, OAM_HFLIP
+	dbsprite  0,  3,  4,  0, $41, 0
+	dbsprite  0,  4,  4,  0, $41, 0
+	dbsprite  0,  5,  4,  0, $41, 0
+
+FrameBlock3e:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $05, 0
+	dbsprite  1,  0,  0,  0, $05, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $15, 0
+	dbsprite  1,  1,  0,  0, $15, OAM_HFLIP
+	dbsprite  0,  2,  4,  0, $42, 0
+	dbsprite  0,  3,  4,  0, $42, 0
+	dbsprite  0,  4,  4,  0, $42, 0
+	dbsprite  0,  5,  4,  0, $42, 0
+
+FrameBlock3f:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $04, 0
+	dbsprite  1,  0,  0,  0, $04, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $14, 0
+	dbsprite  1,  1,  0,  0, $14, OAM_HFLIP
+	dbsprite  0,  2,  4,  0, $41, 0
+	dbsprite  0,  3,  4,  0, $41, 0
+	dbsprite  0,  4,  4,  0, $41, 0
+	dbsprite  0,  5,  4,  0, $41, 0
+
+FrameBlock40:
+	db 3 ; #
+	dbsprite  0,  0,  0,  0, $3d, 0
+	dbsprite  1,  0,  0,  0, $3d, 0
+	dbsprite  1,  1,  0,  0, $3d, 0
+
+FrameBlock41:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $06, 0
+	dbsprite  1,  0,  0,  0, $06, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $16, 0
+	dbsprite  1,  1,  0,  0, $17, 0
+
+FrameBlock42:
+	db 11 ; #
+	dbsprite  2,  0,  0,  0, $42, 0
+	dbsprite  0,  1,  0,  0, $42, 0
+	dbsprite  1,  1,  0,  0, $42, 0
+	dbsprite  2,  1,  0,  0, $42, 0
+	dbsprite  3,  1,  0,  0, $42, 0
+	dbsprite  4,  1,  0,  0, $42, 0
+	dbsprite  2,  2,  0,  0, $42, 0
+	dbsprite  1,  3,  0,  0, $42, 0
+	dbsprite  3,  3,  0,  0, $42, 0
+	dbsprite  0,  4,  0,  0, $42, 0
+	dbsprite  4,  4,  0,  0, $42, 0
+
+FrameBlock43:
+	db 11 ; #
+	dbsprite  2,  0,  0,  0, $41, 0
+	dbsprite  0,  1,  0,  0, $41, 0
+	dbsprite  1,  1,  0,  0, $41, 0
+	dbsprite  2,  1,  0,  0, $41, 0
+	dbsprite  3,  1,  0,  0, $41, 0
+	dbsprite  4,  1,  0,  0, $41, 0
+	dbsprite  2,  2,  0,  0, $41, 0
+	dbsprite  1,  3,  0,  0, $41, 0
+	dbsprite  3,  3,  0,  0, $41, 0
+	dbsprite  0,  4,  0,  0, $41, 0
+	dbsprite  4,  4,  0,  0, $41, 0
+
+FrameBlock44:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  5,  0,  0,  0, $49, 0
+	dbsprite  0,  5,  0,  0, $49, 0
+	dbsprite  5,  5,  0,  0, $49, 0
+
+FrameBlock45:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  3,  0,  0,  0, $49, 0
+	dbsprite  0,  3,  0,  0, $49, 0
+	dbsprite  3,  3,  0,  0, $49, 0
+
+FrameBlock46:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  1,  0,  0,  0, $49, 0
+	dbsprite  0,  1,  0,  0, $49, 0
+	dbsprite  1,  1,  0,  0, $49, 0
+
+FrameBlock47:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $43, 0
+	dbsprite  1,  0,  0,  0, $43, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $43, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+
+SmallBlackCircleFrameBlock:
+	db 4 ; #
+	dbsprite  1,  1,  0,  0, $33, 0
+	dbsprite  2,  1,  0,  0, $33, OAM_HFLIP
+	dbsprite  1,  2,  0,  0, $33, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $33, OAM_HFLIP | OAM_VFLIP
+
+LargeBlackCircleFrameBlock:
+	db 16 ; #
+	dbsprite  0,  0,  0,  0, $22, 0
+	dbsprite  1,  0,  0,  0, $23, 0
+	dbsprite  2,  0,  0,  0, $23, OAM_HFLIP
+	dbsprite  3,  0,  0,  0, $22, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $32, 0
+	dbsprite  1,  1,  0,  0, $43, 0
+	dbsprite  2,  1,  0,  0, $43, OAM_HFLIP
+	dbsprite  3,  1,  0,  0, $32, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $32, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $43, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  2,  0,  0, $32, OAM_HFLIP | OAM_VFLIP
+	dbsprite  0,  3,  0,  0, $22, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $23, OAM_VFLIP
+	dbsprite  2,  3,  0,  0, $23, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  3,  0,  0, $22, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock71:
+	db 16 ; #
+	dbsprite  0,  0,  0,  0, $22, 0
+	dbsprite  1,  0,  0,  0, $3b, 0
+	dbsprite  2,  0,  0,  0, $23, OAM_HFLIP
+	dbsprite  3,  0,  0,  0, $22, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $32, 0
+	dbsprite  1,  1,  0,  0, $43, 0
+	dbsprite  2,  1,  0,  0, $43, OAM_HFLIP
+	dbsprite  3,  1,  0,  0, $32, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $32, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $43, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  2,  0,  0, $32, OAM_HFLIP | OAM_VFLIP
+	dbsprite  0,  3,  0,  0, $22, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $23, OAM_VFLIP
+	dbsprite  2,  3,  0,  0, $23, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  3,  0,  0, $22, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock72:
+	db 12 ; #
+	dbsprite  0,  0,  0,  0, $32, 0
+	dbsprite  1,  0,  0,  0, $43, 0
+	dbsprite  2,  0,  0,  0, $43, OAM_HFLIP
+	dbsprite  3,  0,  0,  0, $32, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $32, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $43, OAM_VFLIP
+	dbsprite  2,  1,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  1,  0,  0, $32, OAM_HFLIP | OAM_VFLIP
+	dbsprite  0,  2,  0,  0, $22, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $23, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $23, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  2,  0,  0, $22, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock73:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $32, OAM_VFLIP
+	dbsprite  1,  0,  0,  0, $43, OAM_VFLIP
+	dbsprite  2,  0,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  0,  0,  0, $32, OAM_HFLIP | OAM_VFLIP
+	dbsprite  0,  1,  0,  0, $22, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $23, OAM_VFLIP
+	dbsprite  2,  1,  0,  0, $23, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  1,  0,  0, $22, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock74:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $22, OAM_VFLIP
+	dbsprite  1,  0,  0,  0, $23, OAM_VFLIP
+	dbsprite  2,  0,  0,  0, $23, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  0,  0,  0, $22, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock4a:
+	db 4 ; #
+	dbsprite  3,  1,  0,  0, $4c, OAM_HFLIP
+	dbsprite  1,  4,  0,  0, $4b, 0
+	dbsprite  4,  6,  0,  0, $4c, 0
+	dbsprite  6,  3,  0,  0, $4b, OAM_VFLIP
+
+FrameBlock4b:
+	db 4 ; #
+	dbsprite  3,  0,  0,  0, $4c, 0
+	dbsprite  0,  4,  0,  0, $4b, OAM_VFLIP
+	dbsprite  4,  7,  0,  0, $4c, OAM_HFLIP
+	dbsprite  7,  3,  0,  0, $4b, 0
+
+FrameBlock4c:
+	db 4 ; #
+	dbsprite  1,  2,  0,  0, $4a, OAM_VFLIP
+	dbsprite  2,  6,  0,  0, $4a, 0
+	dbsprite  6,  5,  0,  0, $4a, OAM_HFLIP
+	dbsprite  5,  1,  0,  0, $4a, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock4d:
+	db 4 ; #
+	dbsprite  0,  1,  0,  0, $4a, OAM_HFLIP
+	dbsprite  1,  7,  0,  0, $4a, OAM_HFLIP | OAM_VFLIP
+	dbsprite  7,  6,  0,  0, $4a, OAM_VFLIP
+	dbsprite  6,  0,  0,  0, $4a, 0
+
+FrameBlock4e:
+	db 8 ; #
+	dbsprite  6,  0,  0,  0, $44, 0
+	dbsprite  7,  0,  0,  0, $44, OAM_HFLIP
+	dbsprite  6,  1,  0,  0, $44, OAM_VFLIP
+	dbsprite  7,  1,  0,  0, $44, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  4,  2,  6, $44, 0
+	dbsprite  2,  4,  2,  6, $44, OAM_HFLIP
+	dbsprite  1,  5,  2,  6, $44, OAM_VFLIP
+	dbsprite  2,  5,  2,  6, $44, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock4f:
+	db 12 ; #
+	dbsprite  4,  1,  2,  6, $44, 0
+	dbsprite  5,  1,  2,  6, $44, OAM_HFLIP
+	dbsprite  4,  2,  2,  6, $44, OAM_VFLIP
+	dbsprite  5,  2,  2,  6, $44, OAM_HFLIP | OAM_VFLIP
+	dbsprite  6,  0,  2,  6, $47, 0
+	dbsprite  7,  0,  0,  0, $47, 0
+	dbsprite  2,  3,  6,  2, $44, 0
+	dbsprite  3,  3,  6,  2, $44, OAM_HFLIP
+	dbsprite  2,  4,  6,  2, $44, OAM_VFLIP
+	dbsprite  3,  4,  6,  2, $44, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  6,  0,  0, $47, 0
+	dbsprite  1,  5,  6,  2, $47, 0
+
+FrameBlock50:
+	db 8 ; #
+	dbsprite  6,  0,  2,  6, $47, 0
+	dbsprite  7,  0,  0,  0, $47, 0
+	dbsprite  4,  2,  6,  2, $47, 0
+	dbsprite  5,  1,  4,  4, $47, 0
+	dbsprite  3,  3,  2,  6, $47, 0
+	dbsprite  4,  3,  0,  0, $47, 0
+	dbsprite  1,  5,  6,  2, $47, 0
+	dbsprite  2,  4,  4,  4, $47, 0
+
+FrameBlock51:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $35, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $35, OAM_VFLIP
+	dbsprite  0,  2,  0,  0, $35, 0
+	dbsprite  0,  3,  0,  0, $35, OAM_HFLIP | OAM_VFLIP
+	dbsprite  8,  0,  0,  0, $35, 0
+	dbsprite  8,  1,  0,  0, $35, OAM_HFLIP | OAM_VFLIP
+	dbsprite  8,  2,  0,  0, $35, OAM_HFLIP
+	dbsprite  8,  3,  0,  0, $35, OAM_VFLIP
+
+FrameBlock52:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $2a, 0
+	dbsprite  1,  0,  0,  0, $2b, 0
+	dbsprite  0,  1,  0,  0, $3a, 0
+	dbsprite  1,  1,  0,  0, $3b, 0
+
+FrameBlock53:
+	db 3 ; #
+	dbsprite  0,  0,  0,  0, $3f, 0
+	dbsprite  1,  0,  0,  0, $3f, 0
+	dbsprite  0,  1,  6,  0, $3f, 0
+
+FrameBlock54:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $0e, 0
+	dbsprite  1,  0,  0,  0, $0e, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $0f, 0
+	dbsprite  1,  1,  0,  0, $0f, OAM_HFLIP
+
+FrameBlock55:
+	db 3 ; #
+	dbsprite  0,  2,  0,  0, $2c, 0
+	dbsprite  1,  2,  0,  0, $3c, 0
+	dbsprite  2,  2,  0,  0, $2d, 0
+
+FrameBlock56:
+	db 6 ; #
+	dbsprite  2,  2,  0,  0, $31, 0
+	dbsprite  3,  2,  0,  0, $31, 0
+	dbsprite  2,  1,  0,  0, $2c, 0
+	dbsprite  3,  1,  0,  0, $3c, 0
+	dbsprite  4,  1,  0,  0, $2d, 0
+	dbsprite  4,  2,  0,  0, $2d, 0
+
+FrameBlock57:
+	db 9 ; #
+	dbsprite  4,  1,  0,  0, $31, 0
+	dbsprite  4,  2,  0,  0, $31, 0
+	dbsprite  5,  1,  0,  0, $31, 0
+	dbsprite  5,  2,  0,  0, $31, 0
+	dbsprite  4,  0,  0,  0, $2c, 0
+	dbsprite  5,  0,  0,  0, $3c, 0
+	dbsprite  6,  0,  0,  0, $2d, 0
+	dbsprite  6,  1,  0,  0, $2d, 0
+	dbsprite  6,  2,  0,  0, $2d, 0
+
+FrameBlock58:
+	db 7 ; #
+	dbsprite  0,  0,  0,  0, $46, 0
+	dbsprite  0,  1,  2,  0, $47, 0
+	dbsprite  0,  2,  3,  0, $48, 0
+	dbsprite  0,  3,  4,  0, $48, 0
+	dbsprite  0,  4,  5,  0, $48, 0
+	dbsprite  0,  5,  5,  0, $48, 0
+	dbsprite  0,  6,  5,  0, $48, 0
+
+FrameBlock59:
+	db 1 ; #
+	dbsprite  0,  0,  0,  0, $42, 0
+
+FrameBlock5a:
+	db 12 ; #
+	dbsprite  0,  0,  0,  0, $24, 0
+	dbsprite  1,  0,  0,  0, $25, 0
+	dbsprite  0,  1,  0,  0, $34, 0
+	dbsprite  2,  0,  0,  0, $25, OAM_HFLIP
+	dbsprite  3,  0,  0,  0, $24, OAM_HFLIP
+	dbsprite  3,  1,  0,  0, $34, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $34, OAM_VFLIP
+	dbsprite  0,  3,  0,  0, $24, OAM_VFLIP
+	dbsprite  1,  3,  0,  0, $25, OAM_VFLIP
+	dbsprite  3,  2,  0,  0, $34, OAM_HFLIP | OAM_VFLIP
+	dbsprite  2,  3,  0,  0, $25, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  3,  0,  0, $24, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock5b:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $43, 0
+	dbsprite  1,  0,  0,  0, $43, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $43, OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock5c:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  1,  0,  0,  2, $49, 0
+	dbsprite  0,  3,  0,  0, $49, 0
+	dbsprite  2,  2,  0,  0, $49, 0
+	dbsprite  0,  1,  0,  0, $43, 0
+	dbsprite  1,  1,  0,  0, $43, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $43, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock5d:
+	db 11 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  0,  3,  2,  0, $49, 0
+	dbsprite  2,  2,  0,  4, $49, 0
+	dbsprite  0,  1,  0,  0, $43, 0
+	dbsprite  1,  0,  0,  0, $43, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $43, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  0,  0,  4, $43, 0
+	dbsprite  2,  0,  0,  4, $43, OAM_HFLIP
+	dbsprite  1,  1,  0,  4, $43, OAM_VFLIP
+	dbsprite  2,  1,  0,  4, $43, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock5e:
+	db 15 ; #
+	dbsprite  1,  0,  0,  0, $49, 0
+	dbsprite  2,  1,  0,  0, $49, 0
+	dbsprite  0,  4,  0,  0, $49, 0
+	dbsprite  0,  1,  0,  0, $43, 0
+	dbsprite  1,  1,  0,  0, $43, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $43, OAM_VFLIP
+	dbsprite  1,  2,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $43, 0
+	dbsprite  3,  2,  0,  0, $43, OAM_HFLIP
+	dbsprite  2,  3,  0,  0, $43, OAM_VFLIP
+	dbsprite  3,  3,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  4,  0,  0, $43, 0
+	dbsprite  2,  4,  0,  0, $43, OAM_HFLIP
+	dbsprite  1,  5,  0,  0, $43, OAM_VFLIP
+	dbsprite  2,  5,  0,  0, $43, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock5f:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  2,  0,  0,  0, $49, 0
+	dbsprite  4,  0,  0,  0, $49, 0
+	dbsprite  6,  0,  0,  0, $49, 0
+
+FrameBlock60:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  2,  0,  0,  0, $49, 0
+	dbsprite  4,  0,  0,  0, $49, 0
+	dbsprite  6,  0,  0,  0, $49, 0
+	dbsprite  1,  1,  0,  0, $49, 0
+	dbsprite  3,  1,  0,  0, $49, 0
+	dbsprite  5,  1,  0,  0, $49, 0
+	dbsprite  7,  1,  0,  0, $49, 0
+
+FrameBlock61:
+	db 12 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  2,  0,  0,  0, $49, 0
+	dbsprite  4,  0,  0,  0, $49, 0
+	dbsprite  6,  0,  0,  0, $49, 0
+	dbsprite  1,  1,  0,  0, $49, 0
+	dbsprite  3,  1,  0,  0, $49, 0
+	dbsprite  5,  1,  0,  0, $49, 0
+	dbsprite  7,  1,  0,  0, $49, 0
+	dbsprite  0,  2,  0,  0, $49, 0
+	dbsprite  2,  2,  0,  0, $49, 0
+	dbsprite  4,  2,  0,  0, $49, 0
+	dbsprite  6,  2,  0,  0, $49, 0
+
+FrameBlock62:
+	db 15 ; #
+	dbsprite  0,  0,  0,  0, $49, 0
+	dbsprite  2,  0,  0,  0, $49, 0
+	dbsprite  4,  0,  0,  0, $49, 0
+	dbsprite  6,  0,  0,  0, $49, 0
+	dbsprite  1,  1,  0,  0, $49, 0
+	dbsprite  3,  1,  0,  0, $49, 0
+	dbsprite  5,  1,  0,  0, $49, 0
+	dbsprite  7,  1,  0,  0, $49, 0
+	dbsprite  0,  2,  0,  0, $49, 0
+	dbsprite  2,  2,  0,  0, $49, 0
+	dbsprite  4,  2,  0,  0, $49, 0
+	dbsprite  6,  2,  0,  0, $49, 0
+	dbsprite  1,  3,  0,  0, $49, 0
+	dbsprite  3,  3,  0,  0, $49, 0
+	dbsprite  5,  3,  0,  0, $49, 0
+	dbsprite  7,  3,  0,  0, $49, 0
+
+FrameBlock63:
+	db 6 ; #
+	dbsprite  0,  2,  0,  0, $26, 0
+	dbsprite  1,  2,  0,  0, $27, 0
+	dbsprite  2,  1,  0,  0, $26, 0
+	dbsprite  3,  1,  0,  0, $27, 0
+	dbsprite  4,  0,  0,  0, $26, 0
+	dbsprite  5,  0,  0,  0, $27, 0
+
+FrameBlock64:
+	db 6 ; #
+	dbsprite  0,  3,  0,  0, $27, 0
+	dbsprite  1,  2,  0,  0, $26, 0
+	dbsprite  2,  2,  0,  0, $27, 0
+	dbsprite  3,  1,  0,  0, $26, 0
+	dbsprite  4,  1,  0,  0, $27, 0
+	dbsprite  5,  0,  0,  0, $26, 0
+
+FrameBlock65:
+	db 6 ; #
+	dbsprite  0,  0,  0,  0, $1c, 0
+	dbsprite  1,  0,  0,  0, $1d, 0
+	dbsprite  0,  2,  0,  0, $1c, 0
+	dbsprite  1,  2,  0,  0, $1d, 0
+	dbsprite  0,  4,  0,  0, $1c, 0
+	dbsprite  1,  4,  0,  0, $1d, 0
+
+FrameBlock66:
+	db 2 ; #
+	dbsprite  0,  0,  0,  0, $03, 0
+	dbsprite  0,  1,  0,  0, $13, 0
+
+FrameBlock67:
+	db 1 ; #
+	dbsprite  0,  0,  0,  0, $03, 0
+
+FrameBlock68:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $03, 0
+	dbsprite  1,  0,  0,  0, $03, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $13, 0
+	dbsprite  1,  1,  0,  0, $13, OAM_HFLIP
+
+FrameBlock69:
+	db 1 ; #
+	dbsprite  0,  0,  0,  0, $06, 0
+
+FrameBlock6a:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $2e, 0
+	dbsprite  6,  0,  0,  0, $2e, OAM_HFLIP
+	dbsprite  0,  6,  0,  0, $2e, OAM_VFLIP
+	dbsprite  6,  6,  0,  0, $2e, OAM_HFLIP | OAM_VFLIP
+	dbsprite  3,  0,  0,  0, $2f, 0
+	dbsprite  3,  6,  0,  0, $2f, OAM_VFLIP
+	dbsprite  0,  3,  0,  0, $3e, 0
+	dbsprite  6,  3,  0,  0, $3e, OAM_HFLIP
+
+FrameBlock6b:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $2e, 0
+	dbsprite  4,  0,  0,  0, $2e, OAM_HFLIP
+	dbsprite  0,  4,  0,  0, $2e, OAM_VFLIP
+	dbsprite  4,  4,  0,  0, $2e, OAM_HFLIP | OAM_VFLIP
+	dbsprite  2,  0,  0,  0, $2f, 0
+	dbsprite  2,  4,  0,  0, $2f, OAM_VFLIP
+	dbsprite  0,  2,  0,  0, $3e, 0
+	dbsprite  4,  2,  0,  0, $3e, OAM_HFLIP
+
+FrameBlock6c:
+	db 8 ; #
+	dbsprite  0,  0,  0,  0, $2e, 0
+	dbsprite  2,  0,  0,  0, $2e, OAM_HFLIP
+	dbsprite  0,  2,  0,  0, $2e, OAM_VFLIP
+	dbsprite  2,  2,  0,  0, $2e, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  0,  0,  0, $2f, 0
+	dbsprite  1,  2,  0,  0, $2f, OAM_VFLIP
+	dbsprite  0,  1,  0,  0, $3e, 0
+	dbsprite  2,  1,  0,  0, $3e, OAM_HFLIP
+
+FrameBlock6d:
+	db 2 ; #
+	dbsprite  0,  0,  0,  0, $1e, 0
+	dbsprite  1,  0,  0,  0, $1f, 0
+
+FrameBlock6e:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $48, 0
+	dbsprite  1,  0,  0,  0, $48, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $12, 0
+	dbsprite  1,  1,  0,  0, $12, OAM_HFLIP
+
+FrameBlock6f:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $4a, 0
+	dbsprite  1,  0,  0,  0, $07, 0
+	dbsprite  0,  1,  0,  0, $16, 0
+	dbsprite  1,  1,  0,  0, $17, 0
+
+FrameBlock70:
+	db 4 ; #
+	dbsprite  0,  0,  0,  0, $07, OAM_HFLIP
+	dbsprite  1,  0,  0,  0, $4a, OAM_HFLIP
+	dbsprite  0,  1,  0,  0, $17, OAM_HFLIP
+	dbsprite  1,  1,  0,  0, $16, OAM_HFLIP
+
+FrameBlock76:
+	db 7 ; #
+	dbsprite  2,  0,  0,  0, $2f, 0
+	dbsprite  1,  0,  0,  1, $2f, 0
+	dbsprite  3,  0,  0,  1, $2f, 0
+	dbsprite  0,  0,  0,  2, $2e, 0
+	dbsprite  4,  0,  0,  2, $2e, OAM_HFLIP
+	dbsprite  0,  1,  0,  2, $3e, 0
+	dbsprite  4,  1,  0,  2, $3e, OAM_HFLIP
+
+FrameBlock77:
+	db 4 ; #
+	dbsprite  0,  0,  2,  0, $4b, 0
+	dbsprite  1,  0,  2,  0, $4c, 0
+	dbsprite  0,  1,  0,  0, $4c, OAM_HFLIP | OAM_VFLIP
+	dbsprite  1,  1,  0,  0, $4b, OAM_HFLIP | OAM_VFLIP
+
+FrameBlock78:
+	db 1 ; #
+	dbsprite  0,  0,  0,  0, $4d, 0
+
+FrameBlock79:
+	db 1 ; #
+	dbsprite  0,  0,  0,  0, $4e, 0
+
+INCLUDE "data/battle_anims/base_coords.asm"
+
+FrameBlock00:
+	db 0 ; #
+
+	db $00 ; unused
--- /dev/null
+++ b/data/battle_anims/special_effect_pointers.asm
@@ -1,0 +1,47 @@
+special_effect: MACRO
+	db \1
+	dw \2
+ENDM
+
+SpecialEffectPointers:
+	; special effect id, effect routine address
+	special_effect SE_DARK_SCREEN_FLASH,         AnimationFlashScreen             ; $FE
+	special_effect SE_DARK_SCREEN_PALETTE,       AnimationDarkScreenPalette       ; $FD
+	special_effect SE_RESET_SCREEN_PALETTE,      AnimationResetScreenPalette      ; $FC
+	special_effect SE_SHAKE_SCREEN,              AnimationShakeScreen             ; $FB
+	special_effect SE_WATER_DROPLETS_EVERYWHERE, AnimationWaterDropletsEverywhere ; $FA
+	special_effect SE_DARKEN_MON_PALETTE,        AnimationDarkenMonPalette        ; $F9
+	special_effect SE_FLASH_SCREEN_LONG,         AnimationFlashScreenLong         ; $F8
+	special_effect SE_SLIDE_MON_UP,              AnimationSlideMonUp              ; $F7
+	special_effect SE_SLIDE_MON_DOWN,            AnimationSlideMonDown            ; $F6
+	special_effect SE_FLASH_MON_PIC,             AnimationFlashMonPic             ; $F5
+	special_effect SE_SLIDE_MON_OFF,             AnimationSlideMonOff             ; $F4
+	special_effect SE_BLINK_MON,                 AnimationBlinkMon                ; $F3
+	special_effect SE_MOVE_MON_HORIZONTALLY,     AnimationMoveMonHorizontally     ; $F2
+	special_effect SE_RESET_MON_POSITION,        AnimationResetMonPosition        ; $F1
+	special_effect SE_LIGHT_SCREEN_PALETTE,      AnimationLightScreenPalette      ; $F0
+	special_effect SE_HIDE_MON_PIC,              AnimationHideMonPic              ; $EF
+	special_effect SE_SQUISH_MON_PIC,            AnimationSquishMonPic            ; $EE
+	special_effect SE_SHOOT_BALLS_UPWARD,        AnimationShootBallsUpward        ; $ED
+	special_effect SE_SHOOT_MANY_BALLS_UPWARD,   AnimationShootManyBallsUpward    ; $EC
+	special_effect SE_BOUNCE_UP_AND_DOWN,        AnimationBoundUpAndDown          ; $EB
+	special_effect SE_MINIMIZE_MON,              AnimationMinimizeMon             ; $EA
+	special_effect SE_SLIDE_MON_DOWN_AND_HIDE,   AnimationSlideMonDownAndHide     ; $E9
+	special_effect SE_TRANSFORM_MON,             AnimationTransformMon            ; $E8
+	special_effect SE_LEAVES_FALLING,            AnimationLeavesFalling           ; $E7
+	special_effect SE_PETALS_FALLING,            AnimationPetalsFalling           ; $E6
+	special_effect SE_SLIDE_MON_HALF_OFF,        AnimationSlideMonHalfOff         ; $E5
+	special_effect SE_SHAKE_ENEMY_HUD,           AnimationShakeEnemyHUD           ; $E4
+	special_effect SE_SHAKE_ENEMY_HUD_2,         AnimationShakeEnemyHUD           ; $E3 unused
+	special_effect SE_SPIRAL_BALLS_INWARD,       AnimationSpiralBallsInward       ; $E2
+	special_effect SE_DELAY_ANIMATION_10,        AnimationDelay10                 ; $E1
+	special_effect SE_FLASH_ENEMY_MON_PIC,       AnimationFlashEnemyMonPic        ; $E0 unused
+	special_effect SE_HIDE_ENEMY_MON_PIC,        AnimationHideEnemyMonPic         ; $DF
+	special_effect SE_BLINK_ENEMY_MON,           AnimationBlinkEnemyMon           ; $DE
+	special_effect SE_SHOW_MON_PIC,              AnimationShowMonPic              ; $DD
+	special_effect SE_SHOW_ENEMY_MON_PIC,        AnimationShowEnemyMonPic         ; $DC
+	special_effect SE_SLIDE_ENEMY_MON_OFF,       AnimationSlideEnemyMonOff        ; $DB
+	special_effect SE_SHAKE_BACK_AND_FORTH,      AnimationShakeBackAndForth       ; $DA
+	special_effect SE_SUBSTITUTE_MON,            AnimationSubstitute              ; $D9
+	special_effect SE_WAVY_SCREEN,               AnimationWavyScreen              ; $D8
+	db -1 ; end
--- /dev/null
+++ b/data/battle_anims/special_effects.asm
@@ -1,0 +1,32 @@
+anim_special_effect: MACRO
+	db \1
+	dw \2
+ENDM
+
+AnimationIdSpecialEffects:
+	; animation id, effect routine address
+	anim_special_effect MEGA_PUNCH,            AnimationFlashScreen
+	anim_special_effect GUILLOTINE,            AnimationFlashScreen
+	anim_special_effect MEGA_KICK,             AnimationFlashScreen
+	anim_special_effect HEADBUTT,              AnimationFlashScreen
+	anim_special_effect TAIL_WHIP,             TailWhipAnimationUnused
+	anim_special_effect GROWL,                 DoGrowlSpecialEffects
+	anim_special_effect DISABLE,               AnimationFlashScreen
+	anim_special_effect BLIZZARD,              DoBlizzardSpecialEffects
+	anim_special_effect BUBBLEBEAM,            AnimationFlashScreen
+	anim_special_effect HYPER_BEAM,            FlashScreenEveryFourFrameBlocks
+	anim_special_effect THUNDERBOLT,           FlashScreenEveryEightFrameBlocks
+	anim_special_effect REFLECT,               AnimationFlashScreen
+	anim_special_effect SELFDESTRUCT,          DoExplodeSpecialEffects
+	anim_special_effect SPORE,                 AnimationFlashScreen
+	anim_special_effect EXPLOSION,             DoExplodeSpecialEffects
+	anim_special_effect ROCK_SLIDE,            DoRockSlideSpecialEffects
+	anim_special_effect TRADE_BALL_DROP_ANIM,  TradeHidePokemon
+	anim_special_effect TRADE_BALL_SHAKE_ANIM, TradeShakePokeball
+	anim_special_effect TRADE_BALL_TILT_ANIM,  TradeJumpPokeball
+	anim_special_effect TOSS_ANIM,             DoBallTossSpecialEffects
+	anim_special_effect SHAKE_ANIM,            DoBallShakeSpecialEffects
+	anim_special_effect POOF_ANIM,             DoPoofSpecialEffects
+	anim_special_effect GREATTOSS_ANIM,        DoBallTossSpecialEffects
+	anim_special_effect ULTRATOSS_ANIM,        DoBallTossSpecialEffects
+	db -1 ; end
--- /dev/null
+++ b/data/battle_anims/subanimations.asm
@@ -1,0 +1,954 @@
+SubanimationPointers:
+	dw Subanimation00
+	dw Subanimation01
+	dw Subanimation02
+	dw Subanimation03
+	dw Subanimation04
+	dw Subanimation05
+	dw Subanimation06
+	dw Subanimation07
+	dw Subanimation08
+	dw Subanimation09
+	dw Subanimation0a
+	dw Subanimation0b
+	dw Subanimation0c
+	dw Subanimation0d
+	dw Subanimation0e
+	dw Subanimation0f
+	dw Subanimation10
+	dw Subanimation11
+	dw Subanimation12
+	dw Subanimation13
+	dw Subanimation14
+	dw Subanimation15
+	dw Subanimation16
+	dw Subanimation17
+	dw Subanimation18
+	dw Subanimation19
+	dw Subanimation1a
+	dw Subanimation1b
+	dw Subanimation1c
+	dw Subanimation1d
+	dw Subanimation1e
+	dw Subanimation1f
+	dw Subanimation20
+	dw Subanimation21
+	dw Subanimation22
+	dw Subanimation23
+	dw Subanimation24
+	dw Subanimation25
+	dw Subanimation26
+	dw Subanimation27
+	dw Subanimation28
+	dw Subanimation29
+	dw Subanimation2a
+	dw Subanimation2b
+	dw Subanimation2c
+	dw Subanimation2d
+	dw Subanimation2e
+	dw Subanimation2f
+	dw Subanimation30
+	dw Subanimation31
+	dw Subanimation32
+	dw Subanimation33
+	dw Subanimation34
+	dw Subanimation35
+	dw Subanimation36
+	dw Subanimation37
+	dw Subanimation38
+	dw Subanimation39
+	dw Subanimation3a
+	dw Subanimation3b
+	dw Subanimation3c
+	dw Subanimation3d
+	dw Subanimation3e
+	dw Subanimation3f
+	dw Subanimation40
+	dw Subanimation41
+	dw Subanimation42
+	dw Subanimation43
+	dw Subanimation44
+	dw Subanimation45
+	dw Subanimation46
+	dw Subanimation47
+	dw Subanimation48
+	dw Subanimation49
+	dw Subanimation4a
+	dw Subanimation4b
+	dw Subanimation4c
+	dw Subanimation4d
+	dw Subanimation4e
+	dw Subanimation4f
+	dw Subanimation50
+	dw Subanimation51
+	dw Subanimation52
+	dw Subanimation53
+	dw Subanimation54
+	dw Subanimation55
+
+; format:
+; subanim type, count
+; REPT count
+;     db frame block id, base coordinate id, frame block mode
+; endr
+
+subanim: MACRO
+	db (\1 << 5) | \2
+ENDM
+
+Subanimation04:
+	subanim SUBANIMTYPE_HFLIP, 3
+	db FRAMEBLOCK_02, BASECOORD_1A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_03, FRAMEBLOCKMODE_00
+
+Subanimation05:
+	subanim SUBANIMTYPE_HFLIP, 1
+	db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
+
+Subanimation08:
+	subanim SUBANIMTYPE_NORMAL, 11
+	db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_44, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_94, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_60, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_9F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_8D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A0, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_1A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A1, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
+
+Subanimation07:
+	subanim SUBANIMTYPE_NORMAL, 11
+	db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A2, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A3, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A4, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A5, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_15, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A6, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
+
+Subanimation06:
+	subanim SUBANIMTYPE_NORMAL, 11
+	db FRAMEBLOCK_03, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A2, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_93, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_61, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_73, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A7, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_33, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A8, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_A9, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_34, FRAMEBLOCKMODE_00
+
+Subanimation09:
+	subanim SUBANIMTYPE_NORMAL, 4
+	db FRAMEBLOCK_03, BASECOORD_21, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_04, BASECOORD_21, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_03, BASECOORD_21, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_05, BASECOORD_21, FRAMEBLOCKMODE_04
+
+Subanimation0a:
+	subanim SUBANIMTYPE_HFLIP, 6
+	db FRAMEBLOCK_06, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_07, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_08, BASECOORD_36, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_09, BASECOORD_36, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0A, BASECOORD_15, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0A, BASECOORD_15, FRAMEBLOCKMODE_00
+
+Subanimation0b:
+	subanim SUBANIMTYPE_NORMAL, 4
+	db FRAMEBLOCK_01, BASECOORD_2D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_2F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_35, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_4D, FRAMEBLOCKMODE_00
+
+Subanimation55:
+	subanim SUBANIMTYPE_HFLIP, 1
+	db FRAMEBLOCK_01, BASECOORD_9D, FRAMEBLOCKMODE_00
+
+Subanimation11:
+	subanim SUBANIMTYPE_HFLIP, 12
+	db FRAMEBLOCK_0B, BASECOORD_26, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_26, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0B, BASECOORD_26, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_26, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0B, BASECOORD_28, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_28, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0B, BASECOORD_28, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_28, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0B, BASECOORD_27, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_27, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0B, BASECOORD_27, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_27, FRAMEBLOCKMODE_00
+
+Subanimation2b:
+	subanim SUBANIMTYPE_HFLIP, 11
+	db FRAMEBLOCK_0D, BASECOORD_03, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_0E, BASECOORD_03, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_0F, BASECOORD_03, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0D, BASECOORD_11, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0D, BASECOORD_11, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0D, BASECOORD_37, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0D, BASECOORD_37, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_10, BASECOORD_21, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_10, BASECOORD_21, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_11, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_11, BASECOORD_1B, FRAMEBLOCKMODE_00
+
+Subanimation2c:
+	subanim SUBANIMTYPE_HFLIP, 12
+	db FRAMEBLOCK_12, BASECOORD_01, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_12, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_12, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_12, BASECOORD_25, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_13, BASECOORD_38, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_13, BASECOORD_38, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_14, BASECOORD_38, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_14, BASECOORD_38, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_15, BASECOORD_38, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_15, BASECOORD_38, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_16, BASECOORD_38, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_16, BASECOORD_38, FRAMEBLOCKMODE_00
+
+Subanimation12:
+	subanim SUBANIMTYPE_COORDFLIP, 9
+	db FRAMEBLOCK_17, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_39, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_3A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_3B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_3C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_3D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_3E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_3F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_1F, FRAMEBLOCKMODE_00
+
+Subanimation00:
+	subanim SUBANIMTYPE_HFLIP, 1
+	db FRAMEBLOCK_01, BASECOORD_17, FRAMEBLOCKMODE_00
+
+Subanimation01:
+	subanim SUBANIMTYPE_HFLIP, 2
+	db FRAMEBLOCK_01, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_01, BASECOORD_1D, FRAMEBLOCKMODE_00
+
+Subanimation02:
+	subanim SUBANIMTYPE_HFLIP, 3
+	db FRAMEBLOCK_01, BASECOORD_12, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_01, BASECOORD_15, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_01, BASECOORD_1C, FRAMEBLOCKMODE_00
+
+Subanimation03:
+	subanim SUBANIMTYPE_HFLIP, 4
+	db FRAMEBLOCK_01, BASECOORD_0B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_01, BASECOORD_11, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_01, BASECOORD_18, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_01, BASECOORD_1D, FRAMEBLOCKMODE_00
+
+Subanimation0c:
+	subanim SUBANIMTYPE_HFLIP, 3
+	db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_00
+
+Subanimation0d:
+	subanim SUBANIMTYPE_HFLIP, 6
+	db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_15, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_17, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_19, FRAMEBLOCKMODE_00
+
+Subanimation0e:
+	subanim SUBANIMTYPE_HFLIP, 9
+	db FRAMEBLOCK_0C, BASECOORD_20, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_15, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_07, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_17, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_09, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_0C, BASECOORD_23, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_19, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_0C, BASECOORD_0C, FRAMEBLOCKMODE_00
+
+Subanimation1f:
+	subanim SUBANIMTYPE_REVERSE, 5
+	db FRAMEBLOCK_0C, BASECOORD_30, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_0C, BASECOORD_40, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_0C, BASECOORD_41, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_0C, BASECOORD_42, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_0C, BASECOORD_21, FRAMEBLOCKMODE_00
+
+Subanimation2e:
+	subanim SUBANIMTYPE_HVFLIP, 14
+	db FRAMEBLOCK_18, BASECOORD_43, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_75, BASECOORD_52, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_19, BASECOORD_43, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_75, BASECOORD_63, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_1A, BASECOORD_43, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_75, BASECOORD_4D, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_1B, BASECOORD_43, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_75, BASECOORD_97, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_1C, BASECOORD_43, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_75, BASECOORD_98, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_1D, BASECOORD_43, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_75, BASECOORD_58, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_1E, BASECOORD_43, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_75, BASECOORD_1B, FRAMEBLOCKMODE_00
+
+Subanimation2f:
+	subanim SUBANIMTYPE_HFLIP, 4
+	db FRAMEBLOCK_1F, BASECOORD_24, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_20, BASECOORD_20, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_21, BASECOORD_1A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_22, BASECOORD_15, FRAMEBLOCKMODE_00
+
+Subanimation30:
+	subanim SUBANIMTYPE_HFLIP, 18
+	db FRAMEBLOCK_23, BASECOORD_00, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_02, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_04, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_23, BASECOORD_07, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_02, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_04, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_23, BASECOORD_0E, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_02, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_0C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_25, BASECOORD_07, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_25, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_25, BASECOORD_15, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_24, BASECOORD_24, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_1C, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_23, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_23, BASECOORD_21, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_24, BASECOORD_28, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_24, BASECOORD_28, FRAMEBLOCKMODE_00
+
+Subanimation0f:
+	subanim SUBANIMTYPE_HFLIP, 12
+	db FRAMEBLOCK_26, BASECOORD_0E, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_26, BASECOORD_16, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_26, BASECOORD_1C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_27, BASECOORD_0E, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_27, BASECOORD_16, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_27, BASECOORD_1C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_28, BASECOORD_0E, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_28, BASECOORD_16, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_28, BASECOORD_1C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_29, BASECOORD_0E, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_29, BASECOORD_16, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_29, BASECOORD_1C, FRAMEBLOCKMODE_00
+
+Subanimation16:
+	subanim SUBANIMTYPE_HFLIP, 12
+	db FRAMEBLOCK_2A, BASECOORD_05, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2B, BASECOORD_05, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_2B, BASECOORD_0C, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_2A, BASECOORD_11, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_2B, BASECOORD_11, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_2B, BASECOORD_17, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_2A, BASECOORD_1B, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_2B, BASECOORD_1B, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_2B, BASECOORD_20, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_2A, BASECOORD_2F, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_2C, BASECOORD_00, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_2C, BASECOORD_00, FRAMEBLOCKMODE_00
+
+Subanimation10:
+	subanim SUBANIMTYPE_REVERSE, 8
+	db FRAMEBLOCK_2D, BASECOORD_44, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2E, BASECOORD_45, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2D, BASECOORD_46, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2E, BASECOORD_47, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2D, BASECOORD_48, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2E, BASECOORD_49, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2D, BASECOORD_2F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2E, BASECOORD_1A, FRAMEBLOCKMODE_00
+
+Subanimation31:
+	subanim SUBANIMTYPE_HVFLIP, 10
+	db FRAMEBLOCK_2F, BASECOORD_46, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_4A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_4B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_4C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_4D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_4E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_4F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_50, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_2E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_2F, BASECOORD_51, FRAMEBLOCKMODE_00
+
+Subanimation13:
+	subanim SUBANIMTYPE_REVERSE, 6
+	db FRAMEBLOCK_30, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_30, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_30, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_30, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_30, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_00
+
+Subanimation14:
+	subanim SUBANIMTYPE_HFLIP, 9
+	db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_31, BASECOORD_1C, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_31, BASECOORD_21, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_31, BASECOORD_26, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_30, BASECOORD_10, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_31, BASECOORD_1D, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_31, BASECOORD_22, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_31, BASECOORD_27, FRAMEBLOCKMODE_00
+
+Subanimation41:
+	subanim SUBANIMTYPE_REVERSE, 5
+	db FRAMEBLOCK_03, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_03, BASECOORD_10, FRAMEBLOCKMODE_00
+
+Subanimation42:
+	subanim SUBANIMTYPE_HFLIP, 3
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5A, BASECOORD_08, FRAMEBLOCKMODE_00
+
+Subanimation15:
+	subanim SUBANIMTYPE_HVFLIP, 2
+	db FRAMEBLOCK_35, BASECOORD_52, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_35, BASECOORD_53, FRAMEBLOCKMODE_00
+
+Subanimation17:
+	subanim SUBANIMTYPE_HFLIP, 4
+	db FRAMEBLOCK_36, BASECOORD_54, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_36, BASECOORD_55, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_37, BASECOORD_56, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_37, BASECOORD_57, FRAMEBLOCKMODE_00
+
+Subanimation18:
+	subanim SUBANIMTYPE_ENEMY, 4
+	db FRAMEBLOCK_36, BASECOORD_54, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_36, BASECOORD_55, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_37, BASECOORD_56, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_37, BASECOORD_57, FRAMEBLOCKMODE_00
+
+Subanimation40:
+	subanim SUBANIMTYPE_HFLIP, 6
+	db FRAMEBLOCK_17, BASECOORD_54, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_55, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_56, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_57, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_17, BASECOORD_13, FRAMEBLOCKMODE_00
+
+Subanimation19:
+	subanim SUBANIMTYPE_REVERSE, 12
+	db FRAMEBLOCK_38, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_39, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_38, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_39, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_38, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_39, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_38, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_39, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_38, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_39, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_38, BASECOORD_10, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_39, BASECOORD_10, FRAMEBLOCKMODE_00
+
+Subanimation1a:
+	subanim SUBANIMTYPE_HFLIP, 16
+	db FRAMEBLOCK_3A, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3B, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3C, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3D, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3E, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3F, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3E, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3F, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3A, BASECOORD_0B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3B, BASECOORD_0B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3C, BASECOORD_0B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3D, BASECOORD_0B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3E, BASECOORD_0B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3F, BASECOORD_0B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3E, BASECOORD_0B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3F, BASECOORD_0B, FRAMEBLOCKMODE_00
+
+Subanimation1b:
+	subanim SUBANIMTYPE_REVERSE, 4
+	db FRAMEBLOCK_40, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_40, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_40, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_40, BASECOORD_15, FRAMEBLOCKMODE_00
+
+Subanimation1c:
+	subanim SUBANIMTYPE_HFLIP, 3
+	db FRAMEBLOCK_41, BASECOORD_58, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_41, BASECOORD_59, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_41, BASECOORD_21, FRAMEBLOCKMODE_00
+
+Subanimation1d:
+	subanim SUBANIMTYPE_ENEMY, 15
+	db FRAMEBLOCK_24, BASECOORD_9A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_23, BASECOORD_1B, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_24, BASECOORD_22, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_23, BASECOORD_16, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_23, BASECOORD_1D, FRAMEBLOCKMODE_02
+	db FRAMEBLOCK_24, BASECOORD_98, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_25, BASECOORD_2C, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_25, BASECOORD_2A, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_25, BASECOORD_99, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_25, BASECOORD_62, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_25, BASECOORD_99, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_25, BASECOORD_62, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_25, BASECOORD_99, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_25, BASECOORD_62, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_25, BASECOORD_99, FRAMEBLOCKMODE_03
+
+Subanimation1e:
+	subanim SUBANIMTYPE_NORMAL, 1
+	db FRAMEBLOCK_25, BASECOORD_75, FRAMEBLOCKMODE_00
+
+Subanimation20:
+	subanim SUBANIMTYPE_HFLIP, 2
+	db FRAMEBLOCK_42, BASECOORD_07, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_43, BASECOORD_07, FRAMEBLOCKMODE_00
+
+Subanimation21:
+	subanim SUBANIMTYPE_HFLIP, 3
+	db FRAMEBLOCK_44, BASECOORD_00, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_45, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_46, BASECOORD_10, FRAMEBLOCKMODE_02
+
+Subanimation22:
+	subanim SUBANIMTYPE_REVERSE, 11
+	db FRAMEBLOCK_47, BASECOORD_10, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_56, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_07, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_AA, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_AB, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_AC, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_AD, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_AE, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_AF, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_89, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_B0, FRAMEBLOCKMODE_00
+
+Subanimation2d:
+	subanim SUBANIMTYPE_COORDFLIP, 6
+	db FRAMEBLOCK_44, BASECOORD_64, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_45, BASECOORD_65, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_46, BASECOORD_66, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_66, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_66, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_66, FRAMEBLOCKMODE_00
+
+Subanimation39:
+	subanim SUBANIMTYPE_COORDFLIP, 1
+	db FRAMEBLOCK_47, BASECOORD_67, FRAMEBLOCKMODE_00
+
+Subanimation4e:
+	subanim SUBANIMTYPE_HFLIP, 1
+	db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_03
+
+Subanimation4f:
+	subanim SUBANIMTYPE_HFLIP, 7
+	db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_71, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_71, BASECOORD_01, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_71, BASECOORD_95, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_72, BASECOORD_95, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_73, BASECOORD_95, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_74, BASECOORD_95, FRAMEBLOCKMODE_00
+
+Subanimation50:
+	subanim SUBANIMTYPE_HFLIP, 8
+	db FRAMEBLOCK_74, BASECOORD_95, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_73, BASECOORD_95, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_72, BASECOORD_95, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_71, BASECOORD_95, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_71, BASECOORD_01, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_71, BASECOORD_08, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_71, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_71, BASECOORD_16, FRAMEBLOCKMODE_00
+
+Subanimation29:
+	subanim SUBANIMTYPE_HFLIP, 29
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4B, BASECOORD_2A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4B, BASECOORD_2A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4C, BASECOORD_6A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4D, BASECOORD_69, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_6B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4C, BASECOORD_6A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4D, BASECOORD_69, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4B, BASECOORD_2A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_6C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4B, BASECOORD_2A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4C, BASECOORD_6A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4D, BASECOORD_69, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_6D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4C, BASECOORD_6A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4D, BASECOORD_2A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4B, BASECOORD_2A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4A, BASECOORD_68, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4B, BASECOORD_2A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4C, BASECOORD_6A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_4D, BASECOORD_2A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_6B, FRAMEBLOCKMODE_00
+
+Subanimation2a:
+	subanim SUBANIMTYPE_HFLIP, 4
+	db FRAMEBLOCK_4E, BASECOORD_2B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_4F, BASECOORD_2B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_50, BASECOORD_2B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_50, BASECOORD_2B, FRAMEBLOCKMODE_00
+
+Subanimation23:
+	subanim SUBANIMTYPE_HFLIP, 2
+	db FRAMEBLOCK_51, BASECOORD_2D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_51, BASECOORD_6E, FRAMEBLOCKMODE_00
+
+Subanimation24:
+	subanim SUBANIMTYPE_ENEMY, 2
+	db FRAMEBLOCK_51, BASECOORD_2D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_51, BASECOORD_6E, FRAMEBLOCKMODE_00
+
+Subanimation25:
+	subanim SUBANIMTYPE_COORDFLIP, 2
+	db FRAMEBLOCK_52, BASECOORD_71, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_52, BASECOORD_72, FRAMEBLOCKMODE_00
+
+Subanimation26:
+	subanim SUBANIMTYPE_NORMAL, 2
+	db FRAMEBLOCK_52, BASECOORD_01, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_52, BASECOORD_2C, FRAMEBLOCKMODE_00
+
+Subanimation3a:
+	subanim SUBANIMTYPE_COORDFLIP, 3
+	db FRAMEBLOCK_53, BASECOORD_71, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_53, BASECOORD_7F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_53, BASECOORD_81, FRAMEBLOCKMODE_00
+
+Subanimation3b:
+	subanim SUBANIMTYPE_NORMAL, 3
+	db FRAMEBLOCK_53, BASECOORD_01, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_53, BASECOORD_15, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_53, BASECOORD_2C, FRAMEBLOCKMODE_00
+
+Subanimation27:
+	subanim SUBANIMTYPE_ENEMY, 2
+	db FRAMEBLOCK_54, BASECOORD_01, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_54, BASECOORD_2C, FRAMEBLOCKMODE_00
+
+Subanimation28:
+	subanim SUBANIMTYPE_HVFLIP, 3
+	db FRAMEBLOCK_55, BASECOORD_73, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_56, BASECOORD_73, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_57, BASECOORD_73, FRAMEBLOCKMODE_00
+
+Subanimation32:
+	subanim SUBANIMTYPE_COORDFLIP, 3
+	db FRAMEBLOCK_47, BASECOORD_74, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_43, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_47, BASECOORD_75, FRAMEBLOCKMODE_00
+
+Subanimation33:
+	subanim SUBANIMTYPE_HVFLIP, 6
+	db FRAMEBLOCK_58, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_58, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_58, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_76, FRAMEBLOCKMODE_00
+
+Subanimation3c:
+	subanim SUBANIMTYPE_COORDFLIP, 7
+	db FRAMEBLOCK_59, BASECOORD_79, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_59, BASECOORD_7B, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_59, BASECOORD_77, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_59, BASECOORD_7A, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_59, BASECOORD_78, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_59, BASECOORD_7C, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_59, BASECOORD_76, FRAMEBLOCKMODE_00
+
+Subanimation3d:
+	subanim SUBANIMTYPE_NORMAL, 8
+	db FRAMEBLOCK_3A, BASECOORD_4D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3B, BASECOORD_4D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3C, BASECOORD_4D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3D, BASECOORD_4D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3E, BASECOORD_4D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3F, BASECOORD_4D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3E, BASECOORD_4D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_3F, BASECOORD_4D, FRAMEBLOCKMODE_00
+
+Subanimation34:
+	subanim SUBANIMTYPE_HVFLIP, 21
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_7D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_7D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5A, BASECOORD_7D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5A, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_7E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_7E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5A, BASECOORD_7E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_7F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_7F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5A, BASECOORD_7F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_80, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_80, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5A, BASECOORD_80, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_81, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_81, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5A, BASECOORD_81, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_SMALL_BLACK_CIRCLE, BASECOORD_82, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_LARGE_BLACK_CIRCLE, BASECOORD_82, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5A, BASECOORD_82, FRAMEBLOCKMODE_00
+
+Subanimation35:
+	subanim SUBANIMTYPE_HVFLIP, 4
+	db FRAMEBLOCK_5B, BASECOORD_83, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_5C, BASECOORD_84, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_5D, BASECOORD_85, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_5E, BASECOORD_09, FRAMEBLOCKMODE_00
+
+Subanimation36:
+	subanim SUBANIMTYPE_HFLIP, 8
+	db FRAMEBLOCK_5F, BASECOORD_2A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_5F, BASECOORD_00, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_60, BASECOORD_2A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_60, BASECOORD_00, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_61, BASECOORD_2A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_61, BASECOORD_00, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_62, BASECOORD_2A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_62, BASECOORD_00, FRAMEBLOCKMODE_00
+
+Subanimation37:
+	subanim SUBANIMTYPE_HVFLIP, 10
+	db FRAMEBLOCK_63, BASECOORD_89, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_64, BASECOORD_75, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_63, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_65, BASECOORD_0D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_65, BASECOORD_86, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_65, BASECOORD_12, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_65, BASECOORD_87, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_65, BASECOORD_17, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_65, BASECOORD_88, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_65, BASECOORD_1A, FRAMEBLOCKMODE_00
+
+Subanimation38:
+	subanim SUBANIMTYPE_HFLIP, 16
+	db FRAMEBLOCK_66, BASECOORD_8A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_66, BASECOORD_33, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_66, BASECOORD_2E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_67, BASECOORD_24, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_66, BASECOORD_01, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_66, BASECOORD_10, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_66, BASECOORD_1D, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_67, BASECOORD_28, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_66, BASECOORD_2A, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_66, BASECOORD_0E, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_66, BASECOORD_1B, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_67, BASECOORD_26, FRAMEBLOCKMODE_03
+	db FRAMEBLOCK_66, BASECOORD_03, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_66, BASECOORD_12, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_66, BASECOORD_1E, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_67, BASECOORD_29, FRAMEBLOCKMODE_00
+
+Subanimation3e:
+	subanim SUBANIMTYPE_REVERSE, 18
+	db FRAMEBLOCK_02, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_31, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_32, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_92, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_10, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_02, BASECOORD_10, FRAMEBLOCKMODE_00
+
+Subanimation3f:
+	subanim SUBANIMTYPE_COORDFLIP, 18
+	db FRAMEBLOCK_68, BASECOORD_4B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_8C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_20, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_1C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_19, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_14, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_8D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_15, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_10, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_0C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_06, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_8E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_8F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_90, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_26, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_23, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_68, BASECOORD_1F, FRAMEBLOCKMODE_00
+
+Subanimation44:
+	subanim SUBANIMTYPE_HVFLIP, 12
+	db FRAMEBLOCK_69, BASECOORD_4B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_8C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_20, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_1C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_19, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_14, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_76, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_8D, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_15, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_10, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_0C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_69, BASECOORD_06, FRAMEBLOCKMODE_00
+
+Subanimation43:
+	subanim SUBANIMTYPE_ENEMY, 3
+	db FRAMEBLOCK_6A, BASECOORD_07, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6B, BASECOORD_0F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6C, BASECOORD_17, FRAMEBLOCKMODE_00
+
+Subanimation45:
+	subanim SUBANIMTYPE_HVFLIP, 4
+	db FRAMEBLOCK_6D, BASECOORD_8B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6D, BASECOORD_84, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6D, BASECOORD_63, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6D, BASECOORD_8C, FRAMEBLOCKMODE_00
+
+Subanimation46:
+	subanim SUBANIMTYPE_HVFLIP, 6
+	db FRAMEBLOCK_6D, BASECOORD_8B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6D, BASECOORD_84, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6D, BASECOORD_63, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6D, BASECOORD_8C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6D, BASECOORD_0A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6D, BASECOORD_89, FRAMEBLOCKMODE_00
+
+Subanimation47:
+	subanim SUBANIMTYPE_HVFLIP, 3
+	db FRAMEBLOCK_06, BASECOORD_82, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_07, BASECOORD_82, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_08, BASECOORD_96, FRAMEBLOCKMODE_00
+
+Subanimation48:
+	subanim SUBANIMTYPE_NORMAL, 6
+	db FRAMEBLOCK_03, BASECOORD_41, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_04, BASECOORD_48, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_05, BASECOORD_48, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_03
+
+Subanimation49:
+	subanim SUBANIMTYPE_NORMAL, 4
+	db FRAMEBLOCK_04, BASECOORD_48, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_05, BASECOORD_48, FRAMEBLOCKMODE_04
+	db FRAMEBLOCK_03, BASECOORD_48, FRAMEBLOCKMODE_03
+
+Subanimation4a:
+	subanim SUBANIMTYPE_NORMAL, 1
+	db FRAMEBLOCK_04, BASECOORD_84, FRAMEBLOCKMODE_03
+
+Subanimation4b:
+	subanim SUBANIMTYPE_NORMAL, 3
+	db FRAMEBLOCK_06, BASECOORD_72, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_07, BASECOORD_72, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_08, BASECOORD_72, FRAMEBLOCKMODE_00
+
+Subanimation4c:
+	subanim SUBANIMTYPE_COORDFLIP, 8
+	db FRAMEBLOCK_6F, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6E, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_70, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6E, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6F, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6E, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_70, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_6E, BASECOORD_30, FRAMEBLOCKMODE_00
+
+Subanimation4d:
+	subanim SUBANIMTYPE_HVFLIP, 6
+	db FRAMEBLOCK_32, BASECOORD_4B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_33, BASECOORD_4F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_32, BASECOORD_20, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_33, BASECOORD_16, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_32, BASECOORD_19, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_33, BASECOORD_0D, FRAMEBLOCKMODE_00
+
+Subanimation51:
+	subanim SUBANIMTYPE_ENEMY, 6
+	db FRAMEBLOCK_76, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_76, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_76, BASECOORD_1B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_34, BASECOORD_1B, FRAMEBLOCKMODE_00
+
+Subanimation52:
+	subanim SUBANIMTYPE_HFLIP, 7
+	db FRAMEBLOCK_77, BASECOORD_25, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_77, BASECOORD_9B, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_77, BASECOORD_1A, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_77, BASECOORD_9C, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_77, BASECOORD_2F, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_77, BASECOORD_50, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_77, BASECOORD_8C, FRAMEBLOCKMODE_00
+
+Subanimation53:
+	subanim SUBANIMTYPE_NORMAL, 12
+	db FRAMEBLOCK_78, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_A2, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_93, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_61, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_73, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_A7, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_33, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_A8, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_A9, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_78, BASECOORD_34, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_01, BASECOORD_9E, FRAMEBLOCKMODE_00
+
+Subanimation54:
+	subanim SUBANIMTYPE_NORMAL, 11
+	db FRAMEBLOCK_79, BASECOORD_30, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_A2, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_93, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_61, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_73, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_A7, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_33, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_A8, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_0E, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_A9, FRAMEBLOCKMODE_00
+	db FRAMEBLOCK_79, BASECOORD_34, FRAMEBLOCKMODE_00
--- a/data/icon_pointers.asm
+++ b/data/icon_pointers.asm
@@ -7,9 +7,9 @@
 
 MonPartySpritePointers:
 	; gfx pointer, gfx tile offset, # tiles, vSprites tile offset
-	mon_icon_header SlowbroSprite,       12, 4, $00
-	mon_icon_header BallSprite,           0, 8, $04
-	mon_icon_header ClefairySprite,      12, 4, $0c
+	mon_icon_header MonsterSprite,       12, 4, $00
+	mon_icon_header PokeBallSprite,       0, 8, $04
+	mon_icon_header FairySprite,         12, 4, $0c
 	mon_icon_header BirdSprite,          12, 4, $10
 	mon_icon_header SeelSprite,           0, 4, $14
 	mon_icon_header BugIconFrame2,        0, 1, $18
@@ -21,9 +21,9 @@
 	mon_icon_header QuadrupedIconFrame1,  0, 1, $24
 	mon_icon_header QuadrupedIconFrame1,  1, 1, $26
 	mon_icon_header TradeBubbleIconGFX,   0, 4, $38
-	mon_icon_header SlowbroSprite,        0, 4, $40
-	mon_icon_header BallSprite,           0, 8, $44
-	mon_icon_header ClefairySprite,       0, 4, $4c
+	mon_icon_header MonsterSprite,        0, 4, $40
+	mon_icon_header PokeBallSprite,       0, 8, $44
+	mon_icon_header FairySprite,          0, 4, $4c
 	mon_icon_header BirdSprite,           0, 4, $50
 	mon_icon_header SeelSprite,          12, 4, $54
 	mon_icon_header BugIconFrame1,        0, 1, $58
--- a/data/items/key_items.asm
+++ b/data/items/key_items.asm
@@ -1,12 +1,103 @@
+key_item_bits: MACRO
+_bit = 0
+_byte = 0
+REPT _NARG
+_byte = _byte | ((\1) << _bit)
+_bit = _bit + 1
+IF _bit == 8
+	db _byte
+_byte = 0
+_bit = 0
+ENDC
+SHIFT
+ENDR
+IF _bit > 0
+	db _byte
+ENDC
+ENDM
+
 KeyItemBitfield:
-	db %11110000
-	db %00000001
-	db %11110000
-	db %01001111
-	db %00000000
-	db %10011111
-	db %00000000
-	db %11000000
-	db %11110000
-	db %00111011
-	db %00000000
+	key_item_bits \
+	FALSE, \ ; MASTER_BALL
+	FALSE, \ ; ULTRA_BALL
+	FALSE, \ ; GREAT_BALL
+	FALSE, \ ; POKE_BALL
+	TRUE,  \ ; TOWN_MAP
+	TRUE,  \ ; BICYCLE
+	TRUE,  \ ; SURFBOARD
+	TRUE,  \ ; SAFARI_BALL
+	TRUE,  \ ; POKEDEX
+	FALSE, \ ; MOON_STONE
+	FALSE, \ ; ANTIDOTE
+	FALSE, \ ; BURN_HEAL
+	FALSE, \ ; ICE_HEAL
+	FALSE, \ ; AWAKENING
+	FALSE, \ ; PARLYZ_HEAL
+	FALSE, \ ; FULL_RESTORE
+	FALSE, \ ; MAX_POTION
+	FALSE, \ ; HYPER_POTION
+	FALSE, \ ; SUPER_POTION
+	FALSE, \ ; POTION
+	TRUE,  \ ; BOULDERBADGE
+	TRUE,  \ ; CASCADEBADGE
+	TRUE,  \ ; THUNDERBADGE
+	TRUE,  \ ; RAINBOWBADGE
+	TRUE,  \ ; SOULBADGE
+	TRUE,  \ ; MARSHBADGE
+	TRUE,  \ ; VOLCANOBADGE
+	TRUE,  \ ; EARTHBADGE
+	FALSE, \ ; ESCAPE_ROPE
+	FALSE, \ ; REPEL
+	TRUE,  \ ; OLD_AMBER
+	FALSE, \ ; FIRE_STONE
+	FALSE, \ ; THUNDER_STONE
+	FALSE, \ ; WATER_STONE
+	FALSE, \ ; HP_UP
+	FALSE, \ ; PROTEIN
+	FALSE, \ ; IRON
+	FALSE, \ ; CARBOS
+	FALSE, \ ; CALCIUM
+	FALSE, \ ; RARE_CANDY
+	TRUE,  \ ; DOME_FOSSIL
+	TRUE,  \ ; HELIX_FOSSIL
+	TRUE,  \ ; SECRET_KEY
+	TRUE,  \ ; UNUSED_ITEM
+	TRUE,  \ ; BIKE_VOUCHER
+	FALSE, \ ; X_ACCURACY
+	FALSE, \ ; LEAF_STONE
+	TRUE,  \ ; CARD_KEY
+	FALSE, \ ; NUGGET
+	FALSE, \ ; PP_UP_2
+	FALSE, \ ; POKE_DOLL
+	FALSE, \ ; FULL_HEAL
+	FALSE, \ ; REVIVE
+	FALSE, \ ; MAX_REVIVE
+	FALSE, \ ; GUARD_SPEC
+	FALSE, \ ; SUPER_REPEL
+	FALSE, \ ; MAX_REPEL
+	FALSE, \ ; DIRE_HIT
+	FALSE, \ ; COIN
+	FALSE, \ ; FRESH_WATER
+	FALSE, \ ; SODA_POP
+	FALSE, \ ; LEMONADE
+	TRUE,  \ ; S_S_TICKET
+	TRUE,  \ ; GOLD_TEETH
+	FALSE, \ ; X_ATTACK
+	FALSE, \ ; X_DEFEND
+	FALSE, \ ; X_SPEED
+	FALSE, \ ; X_SPECIAL
+	TRUE,  \ ; COIN_CASE
+	TRUE,  \ ; OAKS_PARCEL
+	TRUE,  \ ; ITEMFINDER
+	TRUE,  \ ; SILPH_SCOPE
+	TRUE,  \ ; POKE_FLUTE
+	TRUE,  \ ; LIFT_KEY
+	FALSE, \ ; EXP_ALL
+	TRUE,  \ ; OLD_ROD
+	TRUE,  \ ; GOOD_ROD
+	TRUE,  \ ; SUPER_ROD
+	FALSE, \ ; PP_UP
+	FALSE, \ ; ETHER
+	FALSE, \ ; MAX_ETHER
+	FALSE, \ ; ELIXER
+	FALSE    ; MAX_ELIXER
--- a/data/maps/objects/BikeShop.asm
+++ b/data/maps/objects/BikeShop.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_BIKE_SHOP_GUY, 6, 2, STAY, NONE, 1 ; person
-	object SPRITE_MOM_GEISHA, 5, 6, WALK, 1, 2 ; person
-	object SPRITE_BUG_CATCHER, 1, 3, STAY, UP, 3 ; person
+	object SPRITE_BIKE_SHOP_CLERK, 6, 2, STAY, NONE, 1 ; person
+	object SPRITE_MIDDLE_AGED_WOMAN, 5, 6, WALK, 1, 2 ; person
+	object SPRITE_YOUNGSTER, 1, 3, STAY, UP, 3 ; person
 
 	; warp-to
 	warp_to 2, 7, BIKE_SHOP_WIDTH
--- a/data/maps/objects/BillsHouse.asm
+++ b/data/maps/objects/BillsHouse.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_SLOWBRO, 6, 5, STAY, NONE, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 4, 4, STAY, NONE, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 6, 5, STAY, NONE, 3 ; person
+	object SPRITE_MONSTER, 6, 5, STAY, NONE, 1 ; person
+	object SPRITE_SUPER_NERD, 4, 4, STAY, NONE, 2 ; person
+	object SPRITE_SUPER_NERD, 6, 5, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 2, 7, BILLS_HOUSE_WIDTH
--- a/data/maps/objects/BluesHouse.asm
+++ b/data/maps/objects/BluesHouse.asm
@@ -10,7 +10,7 @@
 	db 3 ; objects
 	object SPRITE_DAISY, 2, 3, STAY, RIGHT, 1 ; Daisy, sitting by map
 	object SPRITE_DAISY, 6, 4, WALK, 1, 2, 0 ; Daisy, walking around
-	object SPRITE_BOOK_MAP_DEX, 3, 3, STAY, NONE, 3, 0 ; map on table
+	object SPRITE_POKEDEX, 3, 3, STAY, NONE, 3, 0 ; map on table
 
 	; warp-to
 	warp_to 2, 7, BLUES_HOUSE_WIDTH
--- a/data/maps/objects/CeladonChiefHouse.asm
+++ b/data/maps/objects/CeladonChiefHouse.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_OLD_PERSON, 4, 2, STAY, DOWN, 1 ; person
+	object SPRITE_GRAMPS, 4, 2, STAY, DOWN, 1 ; person
 	object SPRITE_ROCKET, 1, 4, WALK, 0, 2 ; person
 	object SPRITE_SAILOR, 5, 6, STAY, LEFT, 3 ; person
 
--- a/data/maps/objects/CeladonCity.asm
+++ b/data/maps/objects/CeladonCity.asm
@@ -29,12 +29,12 @@
 
 	db 9 ; objects
 	object SPRITE_LITTLE_GIRL, 8, 17, WALK, 0, 1 ; person
-	object SPRITE_OLD_PERSON, 11, 28, STAY, UP, 2 ; person
+	object SPRITE_GRAMPS, 11, 28, STAY, UP, 2 ; person
 	object SPRITE_GIRL, 14, 19, WALK, 1, 3 ; person
-	object SPRITE_OLD_PERSON, 25, 22, STAY, DOWN, 4 ; person
-	object SPRITE_OLD_PERSON, 22, 16, STAY, DOWN, 5 ; person
-	object SPRITE_FISHER2, 32, 12, STAY, LEFT, 6 ; person
-	object SPRITE_SLOWBRO, 30, 12, STAY, RIGHT, 7 ; person
+	object SPRITE_GRAMPS, 25, 22, STAY, DOWN, 4 ; person
+	object SPRITE_GRAMPS, 22, 16, STAY, DOWN, 5 ; person
+	object SPRITE_FISHER, 32, 12, STAY, LEFT, 6 ; person
+	object SPRITE_MONSTER, 30, 12, STAY, RIGHT, 7 ; person
 	object SPRITE_ROCKET, 32, 29, WALK, 2, 8 ; person
 	object SPRITE_ROCKET, 42, 14, WALK, 2, 9 ; person
 
--- a/data/maps/objects/CeladonDiner.asm
+++ b/data/maps/objects/CeladonDiner.asm
@@ -9,10 +9,10 @@
 
 	db 5 ; objects
 	object SPRITE_COOK, 8, 5, WALK, 2, 1 ; person
-	object SPRITE_MOM_GEISHA, 7, 2, STAY, NONE, 2 ; person
-	object SPRITE_FAT_BALD_GUY, 1, 4, STAY, DOWN, 3 ; person
-	object SPRITE_FISHER2, 5, 3, STAY, RIGHT, 4 ; person
-	object SPRITE_GYM_HELPER, 0, 1, STAY, DOWN, 5 ; person
+	object SPRITE_MIDDLE_AGED_WOMAN, 7, 2, STAY, NONE, 2 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 1, 4, STAY, DOWN, 3 ; person
+	object SPRITE_FISHER, 5, 3, STAY, RIGHT, 4 ; person
+	object SPRITE_GYM_GUIDE, 0, 1, STAY, DOWN, 5 ; person
 
 	; warp-to
 	warp_to 3, 7, CELADON_DINER_WIDTH
--- a/data/maps/objects/CeladonGym.asm
+++ b/data/maps/objects/CeladonGym.asm
@@ -9,13 +9,13 @@
 
 	db 8 ; objects
 	object SPRITE_ERIKA, 4, 3, STAY, DOWN, 1, OPP_ERIKA, 1
-	object SPRITE_LASS, 2, 11, STAY, RIGHT, 2, OPP_LASS, 17
-	object SPRITE_FOULARD_WOMAN, 7, 10, STAY, LEFT, 3, OPP_BEAUTY, 1
-	object SPRITE_LASS, 9, 5, STAY, DOWN, 4, OPP_JR_TRAINER_F, 11
-	object SPRITE_FOULARD_WOMAN, 1, 5, STAY, DOWN, 5, OPP_BEAUTY, 2
-	object SPRITE_LASS, 6, 3, STAY, DOWN, 6, OPP_LASS, 18
-	object SPRITE_FOULARD_WOMAN, 3, 3, STAY, DOWN, 7, OPP_BEAUTY, 3
-	object SPRITE_LASS, 5, 3, STAY, DOWN, 8, OPP_COOLTRAINER_F, 1
+	object SPRITE_COOLTRAINER_F, 2, 11, STAY, RIGHT, 2, OPP_LASS, 17
+	object SPRITE_BEAUTY, 7, 10, STAY, LEFT, 3, OPP_BEAUTY, 1
+	object SPRITE_COOLTRAINER_F, 9, 5, STAY, DOWN, 4, OPP_JR_TRAINER_F, 11
+	object SPRITE_BEAUTY, 1, 5, STAY, DOWN, 5, OPP_BEAUTY, 2
+	object SPRITE_COOLTRAINER_F, 6, 3, STAY, DOWN, 6, OPP_LASS, 18
+	object SPRITE_BEAUTY, 3, 3, STAY, DOWN, 7, OPP_BEAUTY, 3
+	object SPRITE_COOLTRAINER_F, 5, 3, STAY, DOWN, 8, OPP_COOLTRAINER_F, 1
 
 	; warp-to
 	warp_to 4, 17, CELADON_GYM_WIDTH
--- a/data/maps/objects/CeladonHotel.asm
+++ b/data/maps/objects/CeladonHotel.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_OLD_MEDIUM_WOMAN, 3, 1, STAY, DOWN, 1 ; person
-	object SPRITE_FOULARD_WOMAN, 2, 4, STAY, NONE, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 8, 4, WALK, 2, 3 ; person
+	object SPRITE_GRANNY, 3, 1, STAY, DOWN, 1 ; person
+	object SPRITE_BEAUTY, 2, 4, STAY, NONE, 2 ; person
+	object SPRITE_SUPER_NERD, 8, 4, WALK, 2, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, CELADON_HOTEL_WIDTH
--- a/data/maps/objects/CeladonMansion1F.asm
+++ b/data/maps/objects/CeladonMansion1F.asm
@@ -12,10 +12,10 @@
 	sign 4, 9, 5 ; CeladonMansion1Text5
 
 	db 4 ; objects
-	object SPRITE_SLOWBRO, 0, 5, STAY, RIGHT, 1 ; person
-	object SPRITE_OLD_MEDIUM_WOMAN, 1, 5, STAY, DOWN, 2 ; person
-	object SPRITE_CLEFAIRY, 1, 8, WALK, 2, 3 ; person
-	object SPRITE_SLOWBRO, 4, 4, WALK, 1, 4 ; person
+	object SPRITE_MONSTER, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_GRANNY, 1, 5, STAY, DOWN, 2 ; person
+	object SPRITE_FAIRY, 1, 8, WALK, 2, 3 ; person
+	object SPRITE_MONSTER, 4, 4, WALK, 1, 4 ; person
 
 	; warp-to
 	warp_to 4, 11, CELADON_MANSION_1F_WIDTH
--- a/data/maps/objects/CeladonMansion3F.asm
+++ b/data/maps/objects/CeladonMansion3F.asm
@@ -14,10 +14,10 @@
 	sign 4, 9, 8 ; CeladonMansion3Text8
 
 	db 4 ; objects
-	object SPRITE_BIKE_SHOP_GUY, 0, 4, STAY, UP, 1 ; person
-	object SPRITE_MART_GUY, 3, 4, STAY, UP, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 0, 7, STAY, UP, 3 ; person
-	object SPRITE_LAPRAS_GIVER, 2, 3, STAY, NONE, 4 ; person
+	object SPRITE_BIKE_SHOP_CLERK, 0, 4, STAY, UP, 1 ; person
+	object SPRITE_CLERK, 3, 4, STAY, UP, 2 ; person
+	object SPRITE_SUPER_NERD, 0, 7, STAY, UP, 3 ; person
+	object SPRITE_SILPH_WORKER, 2, 3, STAY, NONE, 4 ; person
 
 	; warp-to
 	warp_to 6, 1, CELADON_MANSION_3F_WIDTH ; CELADON_MANSION_2F
--- a/data/maps/objects/CeladonMansionRoofHouse.asm
+++ b/data/maps/objects/CeladonMansionRoofHouse.asm
@@ -9,7 +9,7 @@
 
 	db 2 ; objects
 	object SPRITE_HIKER, 2, 2, STAY, DOWN, 1 ; person
-	object SPRITE_BALL, 4, 3, STAY, NONE, 2 ; person
+	object SPRITE_POKE_BALL, 4, 3, STAY, NONE, 2 ; person
 
 	; warp-to
 	warp_to 2, 7, CELADON_MANSION_ROOF_HOUSE_WIDTH ; CELADON_MANSION_ROOF
--- a/data/maps/objects/CeladonMart1F.asm
+++ b/data/maps/objects/CeladonMart1F.asm
@@ -14,7 +14,7 @@
 	sign 14, 1, 3 ; CeladonMart1Text3
 
 	db 1 ; objects
-	object SPRITE_CABLE_CLUB_WOMAN, 8, 3, STAY, DOWN, 1 ; person
+	object SPRITE_LINK_RECEPTIONIST, 8, 3, STAY, DOWN, 1 ; person
 
 	; warp-to
 	warp_to 2, 7, CELADON_MART_1F_WIDTH
--- a/data/maps/objects/CeladonMart2F.asm
+++ b/data/maps/objects/CeladonMart2F.asm
@@ -10,9 +10,9 @@
 	sign 14, 1, 5 ; CeladonMart2Text5
 
 	db 4 ; objects
-	object SPRITE_MART_GUY, 5, 3, STAY, DOWN, 1 ; person
-	object SPRITE_MART_GUY, 6, 3, STAY, DOWN, 2 ; person
-	object SPRITE_FAT_BALD_GUY, 19, 5, STAY, NONE, 3 ; person
+	object SPRITE_CLERK, 5, 3, STAY, DOWN, 1 ; person
+	object SPRITE_CLERK, 6, 3, STAY, DOWN, 2 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 19, 5, STAY, NONE, 3 ; person
 	object SPRITE_GIRL, 14, 4, WALK, 1, 4 ; person
 
 	; warp-to
--- a/data/maps/objects/CeladonMart3F.asm
+++ b/data/maps/objects/CeladonMart3F.asm
@@ -21,11 +21,11 @@
 	sign 10, 1, 17 ; CeladonMart3Text17
 
 	db 5 ; objects
-	object SPRITE_MART_GUY, 16, 5, STAY, NONE, 1 ; person
-	object SPRITE_GAMEBOY_KID_COPY, 11, 6, STAY, RIGHT, 2 ; person
-	object SPRITE_GAMEBOY_KID_COPY, 7, 2, STAY, DOWN, 3 ; person
-	object SPRITE_GAMEBOY_KID_COPY, 8, 2, STAY, DOWN, 4 ; person
-	object SPRITE_YOUNG_BOY, 2, 5, STAY, UP, 5 ; person
+	object SPRITE_CLERK, 16, 5, STAY, NONE, 1 ; person
+	object SPRITE_GAMEBOY_KID, 11, 6, STAY, RIGHT, 2 ; person
+	object SPRITE_GAMEBOY_KID, 7, 2, STAY, DOWN, 3 ; person
+	object SPRITE_GAMEBOY_KID, 8, 2, STAY, DOWN, 4 ; person
+	object SPRITE_LITTLE_BOY, 2, 5, STAY, UP, 5 ; person
 
 	; warp-to
 	warp_to 12, 1, CELADON_MART_3F_WIDTH ; CELADON_MART_4F
--- a/data/maps/objects/CeladonMart4F.asm
+++ b/data/maps/objects/CeladonMart4F.asm
@@ -10,9 +10,9 @@
 	sign 14, 1, 4 ; CeladonMart4Text4
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 5, 7, STAY, NONE, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 15, 5, WALK, 2, 2 ; person
-	object SPRITE_BUG_CATCHER, 5, 2, WALK, 2, 3 ; person
+	object SPRITE_CLERK, 5, 7, STAY, NONE, 1 ; person
+	object SPRITE_SUPER_NERD, 15, 5, WALK, 2, 2 ; person
+	object SPRITE_YOUNGSTER, 5, 2, WALK, 2, 3 ; person
 
 	; warp-to
 	warp_to 12, 1, CELADON_MART_4F_WIDTH ; CELADON_MART_3F
--- a/data/maps/objects/CeladonMart5F.asm
+++ b/data/maps/objects/CeladonMart5F.asm
@@ -12,8 +12,8 @@
 	db 4 ; objects
 	object SPRITE_GENTLEMAN, 14, 5, WALK, 1, 1 ; person
 	object SPRITE_SAILOR, 2, 6, STAY, NONE, 2 ; person
-	object SPRITE_MART_GUY, 5, 3, STAY, DOWN, 3 ; person
-	object SPRITE_MART_GUY, 6, 3, STAY, DOWN, 4 ; person
+	object SPRITE_CLERK, 5, 3, STAY, DOWN, 3 ; person
+	object SPRITE_CLERK, 6, 3, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 12, 1, CELADON_MART_5F_WIDTH ; CELADON_MART_ROOF
--- a/data/maps/objects/CeladonMartRoof.asm
+++ b/data/maps/objects/CeladonMartRoof.asm
@@ -11,7 +11,7 @@
 	sign 13, 2, 6 ; CeladonMartRoofText6
 
 	db 2 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 10, 4, STAY, LEFT, 1 ; person
+	object SPRITE_SUPER_NERD, 10, 4, STAY, LEFT, 1 ; person
 	object SPRITE_LITTLE_GIRL, 5, 5, WALK, 0, 2 ; person
 
 	; warp-to
--- a/data/maps/objects/CeladonPokecenter.asm
+++ b/data/maps/objects/CeladonPokecenter.asm
@@ -10,8 +10,8 @@
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 7, 3, WALK, 2, 2 ; person
-	object SPRITE_FOULARD_WOMAN, 10, 5, WALK, 0, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_BEAUTY, 10, 5, WALK, 0, 3 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, CELADON_POKECENTER_WIDTH
--- a/data/maps/objects/CeruleanBadgeHouse.asm
+++ b/data/maps/objects/CeruleanBadgeHouse.asm
@@ -9,7 +9,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_FAT_BALD_GUY, 5, 3, STAY, RIGHT, 1 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 5, 3, STAY, RIGHT, 1 ; person
 
 	; warp-to
 	warp_to 2, 0, CERULEAN_BADGE_HOUSE_WIDTH
--- a/data/maps/objects/CeruleanCave1F.asm
+++ b/data/maps/objects/CeruleanCave1F.asm
@@ -15,9 +15,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_BALL, 7, 13, STAY, NONE, 1, FULL_RESTORE
-	object SPRITE_BALL, 19, 3, STAY, NONE, 2, MAX_ELIXER
-	object SPRITE_BALL, 5, 0, STAY, NONE, 3, NUGGET
+	object SPRITE_POKE_BALL, 7, 13, STAY, NONE, 1, FULL_RESTORE
+	object SPRITE_POKE_BALL, 19, 3, STAY, NONE, 2, MAX_ELIXER
+	object SPRITE_POKE_BALL, 5, 0, STAY, NONE, 3, NUGGET
 
 	; warp-to
 	warp_to 24, 17, CERULEAN_CAVE_1F_WIDTH
--- a/data/maps/objects/CeruleanCave2F.asm
+++ b/data/maps/objects/CeruleanCave2F.asm
@@ -12,9 +12,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_BALL, 29, 9, STAY, NONE, 1, PP_UP
-	object SPRITE_BALL, 4, 15, STAY, NONE, 2, ULTRA_BALL
-	object SPRITE_BALL, 13, 6, STAY, NONE, 3, FULL_RESTORE
+	object SPRITE_POKE_BALL, 29, 9, STAY, NONE, 1, PP_UP
+	object SPRITE_POKE_BALL, 4, 15, STAY, NONE, 2, ULTRA_BALL
+	object SPRITE_POKE_BALL, 13, 6, STAY, NONE, 3, FULL_RESTORE
 
 	; warp-to
 	warp_to 29, 1, CERULEAN_CAVE_2F_WIDTH ; CERULEAN_CAVE_1F
--- a/data/maps/objects/CeruleanCaveB1F.asm
+++ b/data/maps/objects/CeruleanCaveB1F.asm
@@ -7,9 +7,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_SLOWBRO, 27, 13, STAY, DOWN, 1, MEWTWO, 70
-	object SPRITE_BALL, 16, 9, STAY, NONE, 2, ULTRA_BALL
-	object SPRITE_BALL, 18, 1, STAY, NONE, 3, MAX_REVIVE
+	object SPRITE_MONSTER, 27, 13, STAY, DOWN, 1, MEWTWO, 70
+	object SPRITE_POKE_BALL, 16, 9, STAY, NONE, 2, ULTRA_BALL
+	object SPRITE_POKE_BALL, 18, 1, STAY, NONE, 3, MAX_REVIVE
 
 	; warp-to
 	warp_to 3, 6, CERULEAN_CAVE_B1F_WIDTH ; CERULEAN_CAVE_1F
--- a/data/maps/objects/CeruleanCity.asm
+++ b/data/maps/objects/CeruleanCity.asm
@@ -24,14 +24,14 @@
 	db 11 ; objects
 	object SPRITE_BLUE, 20, 2, STAY, DOWN, 1 ; person
 	object SPRITE_ROCKET, 30, 8, STAY, NONE, 2, OPP_ROCKET, 5
-	object SPRITE_BLACK_HAIR_BOY_1, 31, 20, STAY, DOWN, 3 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 15, 18, WALK, 1, 4 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 9, 21, WALK, 2, 5 ; person
+	object SPRITE_COOLTRAINER_M, 31, 20, STAY, DOWN, 3 ; person
+	object SPRITE_SUPER_NERD, 15, 18, WALK, 1, 4 ; person
+	object SPRITE_SUPER_NERD, 9, 21, WALK, 2, 5 ; person
 	object SPRITE_GUARD, 28, 12, STAY, DOWN, 6 ; person
-	object SPRITE_LASS, 29, 26, STAY, LEFT, 7 ; person
-	object SPRITE_SLOWBRO, 28, 26, STAY, DOWN, 8 ; person
-	object SPRITE_LASS, 9, 27, WALK, 2, 9 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 4, 12, STAY, DOWN, 10 ; person
+	object SPRITE_COOLTRAINER_F, 29, 26, STAY, LEFT, 7 ; person
+	object SPRITE_MONSTER, 28, 26, STAY, DOWN, 8 ; person
+	object SPRITE_COOLTRAINER_F, 9, 27, WALK, 2, 9 ; person
+	object SPRITE_SUPER_NERD, 4, 12, STAY, DOWN, 10 ; person
 	object SPRITE_GUARD, 27, 12, STAY, DOWN, 11 ; person
 
 	; warp-to
--- a/data/maps/objects/CeruleanGym.asm
+++ b/data/maps/objects/CeruleanGym.asm
@@ -9,9 +9,9 @@
 
 	db 4 ; objects
 	object SPRITE_BRUNETTE_GIRL, 4, 2, STAY, DOWN, 1, OPP_MISTY, 1
-	object SPRITE_LASS, 2, 3, STAY, RIGHT, 2, OPP_JR_TRAINER_F, 1
+	object SPRITE_COOLTRAINER_F, 2, 3, STAY, RIGHT, 2, OPP_JR_TRAINER_F, 1
 	object SPRITE_SWIMMER, 8, 7, STAY, LEFT, 3, OPP_SWIMMER, 1
-	object SPRITE_GYM_HELPER, 7, 10, STAY, DOWN, 4 ; person
+	object SPRITE_GYM_GUIDE, 7, 10, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 4, 13, CERULEAN_GYM_WIDTH
--- a/data/maps/objects/CeruleanMart.asm
+++ b/data/maps/objects/CeruleanMart.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 3, 4, WALK, 1, 2 ; person
-	object SPRITE_LASS, 6, 2, WALK, 2, 3 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_COOLTRAINER_M, 3, 4, WALK, 1, 2 ; person
+	object SPRITE_COOLTRAINER_F, 6, 2, WALK, 2, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, CERULEAN_MART_WIDTH
--- a/data/maps/objects/CeruleanPokecenter.asm
+++ b/data/maps/objects/CeruleanPokecenter.asm
@@ -9,9 +9,9 @@
 
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 10, 5, WALK, 0, 2 ; person
+	object SPRITE_SUPER_NERD, 10, 5, WALK, 0, 2 ; person
 	object SPRITE_GENTLEMAN, 4, 3, STAY, DOWN, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, CERULEAN_POKECENTER_WIDTH
--- a/data/maps/objects/CeruleanTradeHouse.asm
+++ b/data/maps/objects/CeruleanTradeHouse.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 2 ; objects
-	object SPRITE_OLD_MEDIUM_WOMAN, 5, 4, STAY, LEFT, 1 ; person
+	object SPRITE_GRANNY, 5, 4, STAY, LEFT, 1 ; person
 	object SPRITE_GAMBLER, 1, 2, STAY, NONE, 2 ; person
 
 	; warp-to
--- a/data/maps/objects/CeruleanTrashedHouse.asm
+++ b/data/maps/objects/CeruleanTrashedHouse.asm
@@ -10,7 +10,7 @@
 	sign 3, 0, 3 ; CeruleanHouseTrashedText3
 
 	db 2 ; objects
-	object SPRITE_FISHER, 2, 1, STAY, DOWN, 1 ; person
+	object SPRITE_FISHING_GURU, 2, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GIRL, 5, 6, WALK, 2, 2 ; person
 
 	; warp-to
--- a/data/maps/objects/CinnabarGym.asm
+++ b/data/maps/objects/CinnabarGym.asm
@@ -8,15 +8,15 @@
 	db 0 ; signs
 
 	db 9 ; objects
-	object SPRITE_FAT_BALD_GUY, 3, 3, STAY, DOWN, 1, OPP_BLAINE, 1
-	object SPRITE_BLACK_HAIR_BOY_2, 17, 2, STAY, DOWN, 2, OPP_SUPER_NERD, 9
-	object SPRITE_BLACK_HAIR_BOY_2, 17, 8, STAY, DOWN, 3, OPP_BURGLAR, 4
-	object SPRITE_BLACK_HAIR_BOY_2, 11, 4, STAY, DOWN, 4, OPP_SUPER_NERD, 10
-	object SPRITE_BLACK_HAIR_BOY_2, 11, 8, STAY, DOWN, 5, OPP_BURGLAR, 5
-	object SPRITE_BLACK_HAIR_BOY_2, 11, 14, STAY, DOWN, 6, OPP_SUPER_NERD, 11
-	object SPRITE_BLACK_HAIR_BOY_2, 3, 14, STAY, DOWN, 7, OPP_BURGLAR, 6
-	object SPRITE_BLACK_HAIR_BOY_2, 3, 8, STAY, DOWN, 8, OPP_SUPER_NERD, 12
-	object SPRITE_GYM_HELPER, 16, 13, STAY, DOWN, 9 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 3, 3, STAY, DOWN, 1, OPP_BLAINE, 1
+	object SPRITE_SUPER_NERD, 17, 2, STAY, DOWN, 2, OPP_SUPER_NERD, 9
+	object SPRITE_SUPER_NERD, 17, 8, STAY, DOWN, 3, OPP_BURGLAR, 4
+	object SPRITE_SUPER_NERD, 11, 4, STAY, DOWN, 4, OPP_SUPER_NERD, 10
+	object SPRITE_SUPER_NERD, 11, 8, STAY, DOWN, 5, OPP_BURGLAR, 5
+	object SPRITE_SUPER_NERD, 11, 14, STAY, DOWN, 6, OPP_SUPER_NERD, 11
+	object SPRITE_SUPER_NERD, 3, 14, STAY, DOWN, 7, OPP_BURGLAR, 6
+	object SPRITE_SUPER_NERD, 3, 8, STAY, DOWN, 8, OPP_SUPER_NERD, 12
+	object SPRITE_GYM_GUIDE, 16, 13, STAY, DOWN, 9 ; person
 
 	; warp-to
 	warp_to 16, 17, CINNABAR_GYM_WIDTH
--- a/data/maps/objects/CinnabarLab.asm
+++ b/data/maps/objects/CinnabarLab.asm
@@ -15,7 +15,7 @@
 	sign 17, 4, 5 ; Lab1Text5
 
 	db 1 ; objects
-	object SPRITE_FISHER, 1, 3, STAY, NONE, 1 ; person
+	object SPRITE_FISHING_GURU, 1, 3, STAY, NONE, 1 ; person
 
 	; warp-to
 	warp_to 2, 7, CINNABAR_LAB_WIDTH
--- a/data/maps/objects/CinnabarLabFossilRoom.asm
+++ b/data/maps/objects/CinnabarLabFossilRoom.asm
@@ -8,8 +8,8 @@
 	db 0 ; signs
 
 	db 2 ; objects
-	object SPRITE_OAK_AIDE, 5, 2, WALK, 2, 1 ; person
-	object SPRITE_OAK_AIDE, 7, 6, STAY, UP, 2 ; person
+	object SPRITE_SCIENTIST, 5, 2, WALK, 2, 1 ; person
+	object SPRITE_SCIENTIST, 7, 6, STAY, UP, 2 ; person
 
 	; warp-to
 	warp_to 2, 7, CINNABAR_LAB_FOSSIL_ROOM_WIDTH ; CINNABAR_LAB
--- a/data/maps/objects/CinnabarLabMetronomeRoom.asm
+++ b/data/maps/objects/CinnabarLabMetronomeRoom.asm
@@ -11,8 +11,8 @@
 	sign 2, 1, 5 ; Lab3Text5
 
 	db 2 ; objects
-	object SPRITE_OAK_AIDE, 7, 2, STAY, DOWN, 1 ; person
-	object SPRITE_OAK_AIDE, 2, 3, WALK, 2, 2 ; person
+	object SPRITE_SCIENTIST, 7, 2, STAY, DOWN, 1 ; person
+	object SPRITE_SCIENTIST, 2, 3, WALK, 2, 2 ; person
 
 	; warp-to
 	warp_to 2, 7, CINNABAR_LAB_METRONOME_ROOM_WIDTH ; CINNABAR_LAB
--- a/data/maps/objects/CinnabarLabTradeRoom.asm
+++ b/data/maps/objects/CinnabarLabTradeRoom.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 3, 2, STAY, DOWN, 1 ; person
-	object SPRITE_OLD_PERSON, 1, 4, STAY, NONE, 2 ; person
-	object SPRITE_FOULARD_WOMAN, 5, 5, STAY, UP, 3 ; person
+	object SPRITE_SUPER_NERD, 3, 2, STAY, DOWN, 1 ; person
+	object SPRITE_GRAMPS, 1, 4, STAY, NONE, 2 ; person
+	object SPRITE_BEAUTY, 5, 5, STAY, UP, 3 ; person
 
 	; warp-to
 	warp_to 2, 7, CINNABAR_LAB_TRADE_ROOM_WIDTH ; CINNABAR_LAB
--- a/data/maps/objects/CinnabarMart.asm
+++ b/data/maps/objects/CinnabarMart.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_ERIKA, 6, 2, STAY, NONE, 2 ; person
-	object SPRITE_OAK_AIDE, 3, 4, STAY, NONE, 3 ; person
+	object SPRITE_SCIENTIST, 3, 4, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, CINNABAR_MART_WIDTH
--- a/data/maps/objects/CinnabarPokecenter.asm
+++ b/data/maps/objects/CinnabarPokecenter.asm
@@ -9,9 +9,9 @@
 
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
-	object SPRITE_LASS, 9, 4, WALK, 0, 2 ; person
+	object SPRITE_COOLTRAINER_F, 9, 4, WALK, 0, 2 ; person
 	object SPRITE_GENTLEMAN, 2, 6, STAY, NONE, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, CINNABAR_POKECENTER_WIDTH
--- a/data/maps/objects/CopycatsHouse1F.asm
+++ b/data/maps/objects/CopycatsHouse1F.asm
@@ -9,9 +9,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MOM_GEISHA, 2, 2, STAY, DOWN, 1 ; person
-	object SPRITE_FAT_BALD_GUY, 5, 4, STAY, LEFT, 2 ; person
-	object SPRITE_CLEFAIRY, 1, 4, WALK, 1, 3 ; person
+	object SPRITE_MIDDLE_AGED_WOMAN, 2, 2, STAY, DOWN, 1 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 5, 4, STAY, LEFT, 2 ; person
+	object SPRITE_FAIRY, 1, 4, WALK, 1, 3 ; person
 
 	; warp-to
 	warp_to 2, 7, COPYCATS_HOUSE_1F_WIDTH
--- a/data/maps/objects/CopycatsHouse2F.asm
+++ b/data/maps/objects/CopycatsHouse2F.asm
@@ -11,9 +11,9 @@
 	db 5 ; objects
 	object SPRITE_BRUNETTE_GIRL, 4, 3, WALK, 0, 1 ; person
 	object SPRITE_BIRD, 4, 6, WALK, 2, 2 ; person
-	object SPRITE_SLOWBRO, 5, 1, STAY, DOWN, 3 ; person
+	object SPRITE_MONSTER, 5, 1, STAY, DOWN, 3 ; person
 	object SPRITE_BIRD, 2, 0, STAY, DOWN, 4 ; person
-	object SPRITE_CLEFAIRY, 1, 6, STAY, RIGHT, 5 ; person
+	object SPRITE_FAIRY, 1, 6, STAY, RIGHT, 5 ; person
 
 	; warp-to
 	warp_to 7, 1, COPYCATS_HOUSE_2F_WIDTH ; COPYCATS_HOUSE_1F
--- a/data/maps/objects/DiglettsCaveRoute2.asm
+++ b/data/maps/objects/DiglettsCaveRoute2.asm
@@ -9,7 +9,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_FISHER, 3, 3, STAY, NONE, 1 ; person
+	object SPRITE_FISHING_GURU, 3, 3, STAY, NONE, 1 ; person
 
 	; warp-to
 	warp_to 2, 7, DIGLETTS_CAVE_ROUTE_2_WIDTH
--- a/data/maps/objects/FightingDojo.asm
+++ b/data/maps/objects/FightingDojo.asm
@@ -13,8 +13,8 @@
 	object SPRITE_HIKER, 3, 6, STAY, RIGHT, 3, OPP_BLACKBELT, 3
 	object SPRITE_HIKER, 5, 5, STAY, LEFT, 4, OPP_BLACKBELT, 4
 	object SPRITE_HIKER, 5, 7, STAY, LEFT, 5, OPP_BLACKBELT, 5
-	object SPRITE_BALL, 4, 1, STAY, NONE, 6 ; person
-	object SPRITE_BALL, 5, 1, STAY, NONE, 7 ; person
+	object SPRITE_POKE_BALL, 4, 1, STAY, NONE, 6 ; person
+	object SPRITE_POKE_BALL, 5, 1, STAY, NONE, 7 ; person
 
 	; warp-to
 	warp_to 4, 11, FIGHTING_DOJO_WIDTH
--- a/data/maps/objects/FuchsiaBillsGrandpasHouse.asm
+++ b/data/maps/objects/FuchsiaBillsGrandpasHouse.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MOM_GEISHA, 2, 3, STAY, RIGHT, 1 ; person
+	object SPRITE_MIDDLE_AGED_WOMAN, 2, 3, STAY, RIGHT, 1 ; person
 	object SPRITE_GAMBLER, 7, 2, STAY, UP, 2 ; person
-	object SPRITE_BUG_CATCHER, 5, 5, STAY, NONE, 3 ; person
+	object SPRITE_YOUNGSTER, 5, 5, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 2, 7, FUCHSIA_BILLS_GRANDPAS_HOUSE_WIDTH
--- a/data/maps/objects/FuchsiaCity.asm
+++ b/data/maps/objects/FuchsiaCity.asm
@@ -29,16 +29,16 @@
 	sign 7, 7, 24 ; FuchsiaCityText24
 
 	db 10 ; objects
-	object SPRITE_BUG_CATCHER, 10, 12, WALK, 2, 1 ; person
+	object SPRITE_YOUNGSTER, 10, 12, WALK, 2, 1 ; person
 	object SPRITE_GAMBLER, 28, 17, WALK, 2, 2 ; person
-	object SPRITE_FISHER2, 30, 14, STAY, DOWN, 3 ; person
-	object SPRITE_BUG_CATCHER, 24, 8, STAY, UP, 4 ; person
-	object SPRITE_CLEFAIRY, 31, 5, WALK, 0, 5 ; person
-	object SPRITE_BALL, 25, 6, STAY, NONE, 6 ; person
-	object SPRITE_SLOWBRO, 12, 6, WALK, 2, 7 ; person
-	object SPRITE_SLOWBRO, 30, 12, WALK, 2, 8 ; person
+	object SPRITE_FISHER, 30, 14, STAY, DOWN, 3 ; person
+	object SPRITE_YOUNGSTER, 24, 8, STAY, UP, 4 ; person
+	object SPRITE_FAIRY, 31, 5, WALK, 0, 5 ; person
+	object SPRITE_POKE_BALL, 25, 6, STAY, NONE, 6 ; person
+	object SPRITE_MONSTER, 12, 6, WALK, 2, 7 ; person
+	object SPRITE_MONSTER, 30, 12, WALK, 2, 8 ; person
 	object SPRITE_SEEL, 8, 17, WALK, 0, 9 ; person
-	object SPRITE_OMANYTE, 6, 5, STAY, NONE, 10 ; person
+	object SPRITE_FOSSIL, 6, 5, STAY, NONE, 10 ; person
 
 	; warp-to
 	warp_to 5, 13, FUCHSIA_CITY_WIDTH ; FUCHSIA_MART
--- a/data/maps/objects/FuchsiaGoodRodHouse.asm
+++ b/data/maps/objects/FuchsiaGoodRodHouse.asm
@@ -9,7 +9,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_FISHER, 5, 3, STAY, RIGHT, 1 ; person
+	object SPRITE_FISHING_GURU, 5, 3, STAY, RIGHT, 1 ; person
 
 	; warp-to
 	warp_to 2, 0, FUCHSIA_GOOD_ROD_HOUSE_WIDTH
--- a/data/maps/objects/FuchsiaGym.asm
+++ b/data/maps/objects/FuchsiaGym.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 8 ; objects
-	object SPRITE_BLACKBELT, 4, 10, STAY, DOWN, 1, OPP_KOGA, 1
+	object SPRITE_KOGA, 4, 10, STAY, DOWN, 1, OPP_KOGA, 1
 	object SPRITE_ROCKER, 8, 13, STAY, DOWN, 2, OPP_JUGGLER, 7
 	object SPRITE_ROCKER, 7, 8, STAY, RIGHT, 3, OPP_JUGGLER, 3
 	object SPRITE_ROCKER, 1, 12, STAY, DOWN, 4, OPP_JUGGLER, 8
@@ -15,7 +15,7 @@
 	object SPRITE_ROCKER, 3, 5, STAY, UP, 5, OPP_TAMER, 1
 	object SPRITE_ROCKER, 8, 2, STAY, DOWN, 6, OPP_TAMER, 2
 	object SPRITE_ROCKER, 2, 7, STAY, LEFT, 7, OPP_JUGGLER, 4
-	object SPRITE_GYM_HELPER, 7, 15, STAY, DOWN, 8 ; person
+	object SPRITE_GYM_GUIDE, 7, 15, STAY, DOWN, 8 ; person
 
 	; warp-to
 	warp_to 4, 17, FUCHSIA_GYM_WIDTH
--- a/data/maps/objects/FuchsiaMart.asm
+++ b/data/maps/objects/FuchsiaMart.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 1 ; person
-	object SPRITE_FAT_BALD_GUY, 4, 2, STAY, NONE, 2 ; person
-	object SPRITE_LASS, 6, 5, WALK, 1, 3 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 4, 2, STAY, NONE, 2 ; person
+	object SPRITE_COOLTRAINER_F, 6, 5, WALK, 1, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, FUCHSIA_MART_WIDTH
--- a/data/maps/objects/FuchsiaMeetingRoom.asm
+++ b/data/maps/objects/FuchsiaMeetingRoom.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_WHITE_PLAYER, 4, 1, STAY, DOWN, 1 ; person
-	object SPRITE_WHITE_PLAYER, 0, 2, STAY, UP, 2 ; person
-	object SPRITE_WHITE_PLAYER, 10, 1, STAY, DOWN, 3 ; person
+	object SPRITE_SAFARI_ZONE_WORKER, 4, 1, STAY, DOWN, 1 ; person
+	object SPRITE_SAFARI_ZONE_WORKER, 0, 2, STAY, UP, 2 ; person
+	object SPRITE_SAFARI_ZONE_WORKER, 10, 1, STAY, DOWN, 3 ; person
 
 	; warp-to
 	warp_to 4, 7, FUCHSIA_MEETING_ROOM_WIDTH
--- a/data/maps/objects/FuchsiaPokecenter.asm
+++ b/data/maps/objects/FuchsiaPokecenter.asm
@@ -10,8 +10,8 @@
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_ROCKER, 2, 3, STAY, NONE, 2 ; person
-	object SPRITE_LASS, 6, 5, WALK, 2, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_COOLTRAINER_F, 6, 5, WALK, 2, 3 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, FUCHSIA_POKECENTER_WIDTH
--- a/data/maps/objects/GameCorner.asm
+++ b/data/maps/objects/GameCorner.asm
@@ -10,15 +10,15 @@
 	sign 9, 4, 12 ; CeladonGameCornerText12
 
 	db 11 ; objects
-	object SPRITE_FOULARD_WOMAN, 2, 6, STAY, DOWN, 1 ; person
-	object SPRITE_MART_GUY, 5, 6, STAY, DOWN, 2 ; person
-	object SPRITE_FAT_BALD_GUY, 2, 10, STAY, LEFT, 3 ; person
-	object SPRITE_FOULARD_WOMAN, 2, 13, STAY, LEFT, 4 ; person
-	object SPRITE_FISHER, 5, 11, STAY, RIGHT, 5 ; person
-	object SPRITE_MOM_GEISHA, 8, 11, STAY, LEFT, 6 ; person
-	object SPRITE_GYM_HELPER, 8, 14, STAY, LEFT, 7 ; person
+	object SPRITE_BEAUTY, 2, 6, STAY, DOWN, 1 ; person
+	object SPRITE_CLERK, 5, 6, STAY, DOWN, 2 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 2, 10, STAY, LEFT, 3 ; person
+	object SPRITE_BEAUTY, 2, 13, STAY, LEFT, 4 ; person
+	object SPRITE_FISHING_GURU, 5, 11, STAY, RIGHT, 5 ; person
+	object SPRITE_MIDDLE_AGED_WOMAN, 8, 11, STAY, LEFT, 6 ; person
+	object SPRITE_GYM_GUIDE, 8, 14, STAY, LEFT, 7 ; person
 	object SPRITE_GAMBLER, 11, 15, STAY, RIGHT, 8 ; person
-	object SPRITE_MART_GUY, 14, 11, STAY, LEFT, 9 ; person
+	object SPRITE_CLERK, 14, 11, STAY, LEFT, 9 ; person
 	object SPRITE_GENTLEMAN, 17, 13, STAY, RIGHT, 10 ; person
 	object SPRITE_ROCKET, 9, 5, STAY, UP, 11, OPP_ROCKET, 7
 
--- a/data/maps/objects/IndigoPlateauLobby.asm
+++ b/data/maps/objects/IndigoPlateauLobby.asm
@@ -10,10 +10,10 @@
 
 	db 5 ; objects
 	object SPRITE_NURSE, 7, 5, STAY, DOWN, 1 ; person
-	object SPRITE_GYM_HELPER, 4, 9, STAY, RIGHT, 2 ; person
-	object SPRITE_LASS, 5, 1, STAY, DOWN, 3 ; person
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 4 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 13, 6, STAY, DOWN, 5 ; person
+	object SPRITE_GYM_GUIDE, 4, 9, STAY, RIGHT, 2 ; person
+	object SPRITE_COOLTRAINER_F, 5, 1, STAY, DOWN, 3 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 4 ; person
+	object SPRITE_LINK_RECEPTIONIST, 13, 6, STAY, DOWN, 5 ; person
 
 	; warp-to
 	warp_to 7, 11, INDIGO_PLATEAU_LOBBY_WIDTH
--- a/data/maps/objects/LavenderCuboneHouse.asm
+++ b/data/maps/objects/LavenderCuboneHouse.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 2 ; objects
-	object SPRITE_SLOWBRO, 3, 5, STAY, UP, 1 ; person
+	object SPRITE_MONSTER, 3, 5, STAY, UP, 1 ; person
 	object SPRITE_BRUNETTE_GIRL, 2, 4, STAY, RIGHT, 2 ; person
 
 	; warp-to
--- a/data/maps/objects/LavenderMart.asm
+++ b/data/maps/objects/LavenderMart.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
 	object SPRITE_BALDING_GUY, 3, 4, STAY, NONE, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 7, 2, STAY, NONE, 3 ; person
+	object SPRITE_COOLTRAINER_M, 7, 2, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, LAVENDER_MART_WIDTH
--- a/data/maps/objects/LavenderPokecenter.asm
+++ b/data/maps/objects/LavenderPokecenter.asm
@@ -11,7 +11,7 @@
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 5, 3, STAY, NONE, 2 ; person
 	object SPRITE_LITTLE_GIRL, 2, 6, WALK, 1, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, LAVENDER_POKECENTER_WIDTH
--- a/data/maps/objects/LavenderTown.asm
+++ b/data/maps/objects/LavenderTown.asm
@@ -19,8 +19,8 @@
 
 	db 3 ; objects
 	object SPRITE_LITTLE_GIRL, 15, 9, WALK, 0, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 9, 10, STAY, NONE, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 8, 7, WALK, 2, 3 ; person
+	object SPRITE_COOLTRAINER_M, 9, 10, STAY, NONE, 2 ; person
+	object SPRITE_SUPER_NERD, 8, 7, WALK, 2, 3 ; person
 
 	; warp-to
 	warp_to 3, 5, LAVENDER_TOWN_WIDTH ; LAVENDER_POKECENTER
--- a/data/maps/objects/MrFujisHouse.asm
+++ b/data/maps/objects/MrFujisHouse.asm
@@ -8,12 +8,12 @@
 	db 0 ; signs
 
 	db 6 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 3, 5, STAY, NONE, 1 ; person
+	object SPRITE_SUPER_NERD, 3, 5, STAY, NONE, 1 ; person
 	object SPRITE_LITTLE_GIRL, 6, 3, STAY, DOWN, 2 ; person
-	object SPRITE_SLOWBRO, 6, 4, STAY, UP, 3 ; person
-	object SPRITE_SLOWBRO, 1, 3, STAY, NONE, 4 ; person
+	object SPRITE_MONSTER, 6, 4, STAY, UP, 3 ; person
+	object SPRITE_MONSTER, 1, 3, STAY, NONE, 4 ; person
 	object SPRITE_MR_FUJI, 3, 1, STAY, NONE, 5 ; person
-	object SPRITE_BOOK_MAP_DEX, 3, 3, STAY, NONE, 6 ; person
+	object SPRITE_POKEDEX, 3, 3, STAY, NONE, 6 ; person
 
 	; warp-to
 	warp_to 2, 7, MR_FUJIS_HOUSE_WIDTH
--- a/data/maps/objects/MrPsychicsHouse.asm
+++ b/data/maps/objects/MrPsychicsHouse.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_FISHER, 5, 3, STAY, LEFT, 1 ; person
+	object SPRITE_FISHING_GURU, 5, 3, STAY, LEFT, 1 ; person
 
 	; warp-to
 	warp_to 2, 7, MR_PSYCHICS_HOUSE_WIDTH
--- a/data/maps/objects/MtMoon1F.asm
+++ b/data/maps/objects/MtMoon1F.asm
@@ -13,18 +13,18 @@
 
 	db 13 ; objects
 	object SPRITE_HIKER, 5, 6, STAY, DOWN, 1, OPP_HIKER, 1
-	object SPRITE_BUG_CATCHER, 12, 16, STAY, RIGHT, 2, OPP_YOUNGSTER, 3
-	object SPRITE_LASS, 30, 4, STAY, DOWN, 3, OPP_LASS, 5
-	object SPRITE_BLACK_HAIR_BOY_2, 24, 31, STAY, UP, 4, OPP_SUPER_NERD, 1
-	object SPRITE_LASS, 16, 23, STAY, DOWN, 5, OPP_LASS, 6
-	object SPRITE_BUG_CATCHER, 7, 22, STAY, DOWN, 6, OPP_BUG_CATCHER, 7
-	object SPRITE_BUG_CATCHER, 30, 27, STAY, RIGHT, 7, OPP_BUG_CATCHER, 8
-	object SPRITE_BALL, 2, 20, STAY, NONE, 8, POTION
-	object SPRITE_BALL, 2, 2, STAY, NONE, 9, MOON_STONE
-	object SPRITE_BALL, 35, 31, STAY, NONE, 10, RARE_CANDY
-	object SPRITE_BALL, 36, 23, STAY, NONE, 11, ESCAPE_ROPE
-	object SPRITE_BALL, 20, 33, STAY, NONE, 12, POTION
-	object SPRITE_BALL, 5, 32, STAY, NONE, 13, TM_WATER_GUN
+	object SPRITE_YOUNGSTER, 12, 16, STAY, RIGHT, 2, OPP_YOUNGSTER, 3
+	object SPRITE_COOLTRAINER_F, 30, 4, STAY, DOWN, 3, OPP_LASS, 5
+	object SPRITE_SUPER_NERD, 24, 31, STAY, UP, 4, OPP_SUPER_NERD, 1
+	object SPRITE_COOLTRAINER_F, 16, 23, STAY, DOWN, 5, OPP_LASS, 6
+	object SPRITE_YOUNGSTER, 7, 22, STAY, DOWN, 6, OPP_BUG_CATCHER, 7
+	object SPRITE_YOUNGSTER, 30, 27, STAY, RIGHT, 7, OPP_BUG_CATCHER, 8
+	object SPRITE_POKE_BALL, 2, 20, STAY, NONE, 8, POTION
+	object SPRITE_POKE_BALL, 2, 2, STAY, NONE, 9, MOON_STONE
+	object SPRITE_POKE_BALL, 35, 31, STAY, NONE, 10, RARE_CANDY
+	object SPRITE_POKE_BALL, 36, 23, STAY, NONE, 11, ESCAPE_ROPE
+	object SPRITE_POKE_BALL, 20, 33, STAY, NONE, 12, POTION
+	object SPRITE_POKE_BALL, 5, 32, STAY, NONE, 13, TM_WATER_GUN
 
 	; warp-to
 	warp_to 14, 35, MT_MOON_1F_WIDTH
--- a/data/maps/objects/MtMoonB2F.asm
+++ b/data/maps/objects/MtMoonB2F.asm
@@ -10,15 +10,15 @@
 	db 0 ; signs
 
 	db 9 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 12, 8, STAY, RIGHT, 1, OPP_SUPER_NERD, 2
+	object SPRITE_SUPER_NERD, 12, 8, STAY, RIGHT, 1, OPP_SUPER_NERD, 2
 	object SPRITE_ROCKET, 11, 16, STAY, DOWN, 2, OPP_ROCKET, 1
 	object SPRITE_ROCKET, 15, 22, STAY, DOWN, 3, OPP_ROCKET, 2
 	object SPRITE_ROCKET, 29, 11, STAY, UP, 4, OPP_ROCKET, 3
 	object SPRITE_ROCKET, 29, 17, STAY, LEFT, 5, OPP_ROCKET, 4
-	object SPRITE_OMANYTE, 12, 6, STAY, NONE, 6 ; person
-	object SPRITE_OMANYTE, 13, 6, STAY, NONE, 7 ; person
-	object SPRITE_BALL, 25, 21, STAY, NONE, 8, HP_UP
-	object SPRITE_BALL, 29, 5, STAY, NONE, 9, TM_MEGA_PUNCH
+	object SPRITE_FOSSIL, 12, 6, STAY, NONE, 6 ; person
+	object SPRITE_FOSSIL, 13, 6, STAY, NONE, 7 ; person
+	object SPRITE_POKE_BALL, 25, 21, STAY, NONE, 8, HP_UP
+	object SPRITE_POKE_BALL, 29, 5, STAY, NONE, 9, TM_MEGA_PUNCH
 
 	; warp-to
 	warp_to 25, 9, MT_MOON_B2F_WIDTH ; MT_MOON_B1F
--- a/data/maps/objects/MtMoonPokecenter.asm
+++ b/data/maps/objects/MtMoonPokecenter.asm
@@ -9,11 +9,11 @@
 
 	db 6 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
-	object SPRITE_BUG_CATCHER, 4, 3, STAY, UP, 2 ; person
+	object SPRITE_YOUNGSTER, 4, 3, STAY, UP, 2 ; person
 	object SPRITE_GENTLEMAN, 7, 3, STAY, UP, 3 ; person
-	object SPRITE_FAT_BALD_GUY, 10, 6, WALK, 2, 4 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 10, 6, WALK, 2, 4 ; person
 	object SPRITE_CLIPBOARD, 7, 2, STAY, NONE, 5 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 6 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 6 ; person
 
 	; warp-to
 	warp_to 3, 7, MT_MOON_POKECENTER_WIDTH
--- a/data/maps/objects/Museum1F.asm
+++ b/data/maps/objects/Museum1F.asm
@@ -11,10 +11,10 @@
 	db 0 ; signs
 
 	db 5 ; objects
-	object SPRITE_OAK_AIDE, 12, 4, STAY, LEFT, 1 ; person
+	object SPRITE_SCIENTIST, 12, 4, STAY, LEFT, 1 ; person
 	object SPRITE_GAMBLER, 1, 4, STAY, NONE, 2 ; person
-	object SPRITE_OAK_AIDE, 15, 2, STAY, DOWN, 3 ; person
-	object SPRITE_OAK_AIDE, 17, 4, STAY, NONE, 4 ; person
+	object SPRITE_SCIENTIST, 15, 2, STAY, DOWN, 3 ; person
+	object SPRITE_SCIENTIST, 17, 4, STAY, NONE, 4 ; person
 	object SPRITE_OLD_AMBER, 16, 2, STAY, NONE, 5 ; person
 
 	; warp-to
--- a/data/maps/objects/Museum2F.asm
+++ b/data/maps/objects/Museum2F.asm
@@ -9,9 +9,9 @@
 	sign 2, 5, 7 ; Museum2FText7
 
 	db 5 ; objects
-	object SPRITE_BUG_CATCHER, 1, 7, WALK, 2, 1 ; person
-	object SPRITE_OLD_PERSON, 0, 5, STAY, DOWN, 2 ; person
-	object SPRITE_OAK_AIDE, 7, 5, STAY, DOWN, 3 ; person
+	object SPRITE_YOUNGSTER, 1, 7, WALK, 2, 1 ; person
+	object SPRITE_GRAMPS, 0, 5, STAY, DOWN, 2 ; person
+	object SPRITE_SCIENTIST, 7, 5, STAY, DOWN, 3 ; person
 	object SPRITE_BRUNETTE_GIRL, 11, 5, STAY, NONE, 4 ; person
 	object SPRITE_HIKER, 12, 5, STAY, DOWN, 5 ; person
 
--- a/data/maps/objects/NameRatersHouse.asm
+++ b/data/maps/objects/NameRatersHouse.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_MR_MASTERBALL, 5, 3, STAY, LEFT, 1 ; person
+	object SPRITE_SILPH_PRESIDENT, 5, 3, STAY, LEFT, 1 ; person
 
 	; warp-to
 	warp_to 2, 7, NAME_RATERS_HOUSE_WIDTH
--- a/data/maps/objects/OaksLab.asm
+++ b/data/maps/objects/OaksLab.asm
@@ -8,17 +8,17 @@
 	db 0 ; signs
 
 	db 11 ; objects
-	object SPRITE_BLUE, 4, 3, STAY, NONE, 1, OPP_SONY1, 1
-	object SPRITE_BALL, 6, 3, STAY, NONE, 2 ; person
-	object SPRITE_BALL, 7, 3, STAY, NONE, 3 ; person
-	object SPRITE_BALL, 8, 3, STAY, NONE, 4 ; person
+	object SPRITE_BLUE, 4, 3, STAY, NONE, 1, OPP_RIVAL1, 1
+	object SPRITE_POKE_BALL, 6, 3, STAY, NONE, 2 ; person
+	object SPRITE_POKE_BALL, 7, 3, STAY, NONE, 3 ; person
+	object SPRITE_POKE_BALL, 8, 3, STAY, NONE, 4 ; person
 	object SPRITE_OAK, 5, 2, STAY, DOWN, 5 ; person
-	object SPRITE_BOOK_MAP_DEX, 2, 1, STAY, NONE, 6 ; person
-	object SPRITE_BOOK_MAP_DEX, 3, 1, STAY, NONE, 7 ; person
+	object SPRITE_POKEDEX, 2, 1, STAY, NONE, 6 ; person
+	object SPRITE_POKEDEX, 3, 1, STAY, NONE, 7 ; person
 	object SPRITE_OAK, 5, 10, STAY, UP, 8 ; person
 	object SPRITE_GIRL, 1, 9, WALK, 1, 9 ; person
-	object SPRITE_OAK_AIDE, 2, 10, STAY, NONE, 10 ; person
-	object SPRITE_OAK_AIDE, 8, 10, STAY, NONE, 11 ; person
+	object SPRITE_SCIENTIST, 2, 10, STAY, NONE, 10 ; person
+	object SPRITE_SCIENTIST, 8, 10, STAY, NONE, 11 ; person
 
 	; warp-to
 	warp_to 4, 11, OAKS_LAB_WIDTH
--- a/data/maps/objects/PalletTown.asm
+++ b/data/maps/objects/PalletTown.asm
@@ -15,7 +15,7 @@
 	db 3 ; objects
 	object SPRITE_OAK, 8, 5, STAY, NONE, 1 ; person
 	object SPRITE_GIRL, 3, 8, WALK, 0, 2 ; person
-	object SPRITE_FISHER2, 11, 14, WALK, 0, 3 ; person
+	object SPRITE_FISHER, 11, 14, WALK, 0, 3 ; person
 
 	; warp-to
 	warp_to 5, 5, PALLET_TOWN_WIDTH ; REDS_HOUSE_1F
--- a/data/maps/objects/PewterCity.asm
+++ b/data/maps/objects/PewterCity.asm
@@ -20,11 +20,11 @@
 	sign 25, 23, 12 ; PewterCityText12
 
 	db 5 ; objects
-	object SPRITE_LASS, 8, 15, STAY, NONE, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 17, 25, STAY, NONE, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 27, 17, STAY, NONE, 3 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 26, 25, WALK, 2, 4 ; person
-	object SPRITE_BUG_CATCHER, 35, 16, STAY, DOWN, 5 ; person
+	object SPRITE_COOLTRAINER_F, 8, 15, STAY, NONE, 1 ; person
+	object SPRITE_COOLTRAINER_M, 17, 25, STAY, NONE, 2 ; person
+	object SPRITE_SUPER_NERD, 27, 17, STAY, NONE, 3 ; person
+	object SPRITE_SUPER_NERD, 26, 25, WALK, 2, 4 ; person
+	object SPRITE_YOUNGSTER, 35, 16, STAY, DOWN, 5 ; person
 
 	; warp-to
 	warp_to 14, 7, PEWTER_CITY_WIDTH ; MUSEUM_1F
--- a/data/maps/objects/PewterGym.asm
+++ b/data/maps/objects/PewterGym.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 4, 1, STAY, DOWN, 1, OPP_BROCK, 1
-	object SPRITE_BLACK_HAIR_BOY_1, 3, 6, STAY, RIGHT, 2, OPP_JR_TRAINER_M, 1
-	object SPRITE_GYM_HELPER, 7, 10, STAY, DOWN, 3 ; person
+	object SPRITE_SUPER_NERD, 4, 1, STAY, DOWN, 1, OPP_BROCK, 1
+	object SPRITE_COOLTRAINER_M, 3, 6, STAY, RIGHT, 2, OPP_JR_TRAINER_M, 1
+	object SPRITE_GYM_GUIDE, 7, 10, STAY, DOWN, 3 ; person
 
 	; warp-to
 	warp_to 4, 13, PEWTER_GYM_WIDTH
--- a/data/maps/objects/PewterMart.asm
+++ b/data/maps/objects/PewterMart.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 1 ; person
-	object SPRITE_BUG_CATCHER, 3, 3, WALK, 1, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 5, 5, STAY, NONE, 3 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_YOUNGSTER, 3, 3, WALK, 1, 2 ; person
+	object SPRITE_SUPER_NERD, 5, 5, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, PEWTER_MART_WIDTH
--- a/data/maps/objects/PewterNidoranHouse.asm
+++ b/data/maps/objects/PewterNidoranHouse.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_SLOWBRO, 4, 5, STAY, LEFT, 1 ; person
-	object SPRITE_YOUNG_BOY, 3, 5, STAY, RIGHT, 2 ; person
-	object SPRITE_FAT_BALD_GUY, 1, 2, STAY, NONE, 3 ; person
+	object SPRITE_MONSTER, 4, 5, STAY, LEFT, 1 ; person
+	object SPRITE_LITTLE_BOY, 3, 5, STAY, RIGHT, 2 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 1, 2, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 2, 7, PEWTER_NIDORAN_HOUSE_WIDTH
--- a/data/maps/objects/PewterPokecenter.asm
+++ b/data/maps/objects/PewterPokecenter.asm
@@ -10,8 +10,8 @@
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 11, 7, STAY, LEFT, 2 ; person
-	object SPRITE_CLEFAIRY, 1, 3, STAY, DOWN, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_FAIRY, 1, 3, STAY, DOWN, 3 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, PEWTER_POKECENTER_WIDTH
--- a/data/maps/objects/PewterSpeechHouse.asm
+++ b/data/maps/objects/PewterSpeechHouse.asm
@@ -9,7 +9,7 @@
 
 	db 2 ; objects
 	object SPRITE_GAMBLER, 2, 3, STAY, RIGHT, 1 ; person
-	object SPRITE_BUG_CATCHER, 4, 5, STAY, NONE, 2 ; person
+	object SPRITE_YOUNGSTER, 4, 5, STAY, NONE, 2 ; person
 
 	; warp-to
 	warp_to 2, 7, PEWTER_SPEECH_HOUSE_WIDTH
--- a/data/maps/objects/PokemonFanClub.asm
+++ b/data/maps/objects/PokemonFanClub.asm
@@ -10,12 +10,12 @@
 	sign 6, 0, 8 ; FanClubText8
 
 	db 6 ; objects
-	object SPRITE_FISHER2, 6, 3, STAY, LEFT, 1 ; person
+	object SPRITE_FISHER, 6, 3, STAY, LEFT, 1 ; person
 	object SPRITE_GIRL, 1, 3, STAY, RIGHT, 2 ; person
-	object SPRITE_CLEFAIRY, 6, 4, STAY, LEFT, 3 ; person
+	object SPRITE_FAIRY, 6, 4, STAY, LEFT, 3 ; person
 	object SPRITE_SEEL, 1, 4, STAY, RIGHT, 4 ; person
 	object SPRITE_GENTLEMAN, 3, 1, STAY, DOWN, 5 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 5, 1, STAY, DOWN, 6 ; person
+	object SPRITE_LINK_RECEPTIONIST, 5, 1, STAY, DOWN, 6 ; person
 
 	; warp-to
 	warp_to 2, 7, POKEMON_FAN_CLUB_WIDTH
--- a/data/maps/objects/PokemonMansion1F.asm
+++ b/data/maps/objects/PokemonMansion1F.asm
@@ -14,9 +14,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_OAK_AIDE, 17, 17, STAY, LEFT, 1, OPP_SCIENTIST, 4
-	object SPRITE_BALL, 14, 3, STAY, NONE, 2, ESCAPE_ROPE
-	object SPRITE_BALL, 18, 21, STAY, NONE, 3, CARBOS
+	object SPRITE_SCIENTIST, 17, 17, STAY, LEFT, 1, OPP_SCIENTIST, 4
+	object SPRITE_POKE_BALL, 14, 3, STAY, NONE, 2, ESCAPE_ROPE
+	object SPRITE_POKE_BALL, 18, 21, STAY, NONE, 3, CARBOS
 
 	; warp-to
 	warp_to 4, 27, POKEMON_MANSION_1F_WIDTH
--- a/data/maps/objects/PokemonMansion2F.asm
+++ b/data/maps/objects/PokemonMansion2F.asm
@@ -10,10 +10,10 @@
 	db 0 ; signs
 
 	db 4 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 3, 17, WALK, 2, 1, OPP_BURGLAR, 7
-	object SPRITE_BALL, 28, 7, STAY, NONE, 2, CALCIUM
-	object SPRITE_BOOK_MAP_DEX, 18, 2, STAY, NONE, 3 ; person
-	object SPRITE_BOOK_MAP_DEX, 3, 22, STAY, NONE, 4 ; person
+	object SPRITE_SUPER_NERD, 3, 17, WALK, 2, 1, OPP_BURGLAR, 7
+	object SPRITE_POKE_BALL, 28, 7, STAY, NONE, 2, CALCIUM
+	object SPRITE_POKEDEX, 18, 2, STAY, NONE, 3 ; person
+	object SPRITE_POKEDEX, 3, 22, STAY, NONE, 4 ; person
 
 	; warp-to
 	warp_to 5, 10, POKEMON_MANSION_2F_WIDTH ; POKEMON_MANSION_1F
--- a/data/maps/objects/PokemonMansion3F.asm
+++ b/data/maps/objects/PokemonMansion3F.asm
@@ -9,11 +9,11 @@
 	db 0 ; signs
 
 	db 5 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 5, 11, WALK, 2, 1, OPP_BURGLAR, 8
-	object SPRITE_OAK_AIDE, 20, 11, STAY, LEFT, 2, OPP_SCIENTIST, 12
-	object SPRITE_BALL, 1, 16, STAY, NONE, 3, MAX_POTION
-	object SPRITE_BALL, 25, 5, STAY, NONE, 4, IRON
-	object SPRITE_BOOK_MAP_DEX, 6, 12, STAY, NONE, 5 ; person
+	object SPRITE_SUPER_NERD, 5, 11, WALK, 2, 1, OPP_BURGLAR, 8
+	object SPRITE_SCIENTIST, 20, 11, STAY, LEFT, 2, OPP_SCIENTIST, 12
+	object SPRITE_POKE_BALL, 1, 16, STAY, NONE, 3, MAX_POTION
+	object SPRITE_POKE_BALL, 25, 5, STAY, NONE, 4, IRON
+	object SPRITE_POKEDEX, 6, 12, STAY, NONE, 5 ; person
 
 	; warp-to
 	warp_to 7, 10, POKEMON_MANSION_3F_WIDTH ; POKEMON_MANSION_2F
--- a/data/maps/objects/PokemonMansionB1F.asm
+++ b/data/maps/objects/PokemonMansionB1F.asm
@@ -7,14 +7,14 @@
 	db 0 ; signs
 
 	db 8 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 16, 23, STAY, NONE, 1, OPP_BURGLAR, 9
-	object SPRITE_OAK_AIDE, 27, 11, STAY, DOWN, 2, OPP_SCIENTIST, 13
-	object SPRITE_BALL, 10, 2, STAY, NONE, 3, RARE_CANDY
-	object SPRITE_BALL, 1, 22, STAY, NONE, 4, FULL_RESTORE
-	object SPRITE_BALL, 19, 25, STAY, NONE, 5, TM_BLIZZARD
-	object SPRITE_BALL, 5, 4, STAY, NONE, 6, TM_SOLARBEAM
-	object SPRITE_BOOK_MAP_DEX, 16, 20, STAY, NONE, 7 ; person
-	object SPRITE_BALL, 5, 13, STAY, NONE, 8, SECRET_KEY
+	object SPRITE_SUPER_NERD, 16, 23, STAY, NONE, 1, OPP_BURGLAR, 9
+	object SPRITE_SCIENTIST, 27, 11, STAY, DOWN, 2, OPP_SCIENTIST, 13
+	object SPRITE_POKE_BALL, 10, 2, STAY, NONE, 3, RARE_CANDY
+	object SPRITE_POKE_BALL, 1, 22, STAY, NONE, 4, FULL_RESTORE
+	object SPRITE_POKE_BALL, 19, 25, STAY, NONE, 5, TM_BLIZZARD
+	object SPRITE_POKE_BALL, 5, 4, STAY, NONE, 6, TM_SOLARBEAM
+	object SPRITE_POKEDEX, 16, 20, STAY, NONE, 7 ; person
+	object SPRITE_POKE_BALL, 5, 13, STAY, NONE, 8, SECRET_KEY
 
 	; warp-to
 	warp_to 23, 22, POKEMON_MANSION_B1F_WIDTH ; POKEMON_MANSION_1F
--- a/data/maps/objects/PokemonTower1F.asm
+++ b/data/maps/objects/PokemonTower1F.asm
@@ -9,11 +9,11 @@
 	db 0 ; signs
 
 	db 5 ; objects
-	object SPRITE_CABLE_CLUB_WOMAN, 15, 13, STAY, UP, 1 ; person
-	object SPRITE_MOM_GEISHA, 6, 8, STAY, NONE, 2 ; person
+	object SPRITE_LINK_RECEPTIONIST, 15, 13, STAY, UP, 1 ; person
+	object SPRITE_MIDDLE_AGED_WOMAN, 6, 8, STAY, NONE, 2 ; person
 	object SPRITE_BALDING_GUY, 8, 12, STAY, NONE, 3 ; person
 	object SPRITE_GIRL, 13, 7, STAY, NONE, 4 ; person
-	object SPRITE_MEDIUM, 17, 7, STAY, LEFT, 5 ; person
+	object SPRITE_CHANNELER, 17, 7, STAY, LEFT, 5 ; person
 
 	; warp-to
 	warp_to 10, 17, POKEMON_TOWER_1F_WIDTH
--- a/data/maps/objects/PokemonTower2F.asm
+++ b/data/maps/objects/PokemonTower2F.asm
@@ -9,7 +9,7 @@
 
 	db 2 ; objects
 	object SPRITE_BLUE, 14, 5, STAY, NONE, 1 ; person
-	object SPRITE_MEDIUM, 3, 7, STAY, RIGHT, 2 ; person
+	object SPRITE_CHANNELER, 3, 7, STAY, RIGHT, 2 ; person
 
 	; warp-to
 	warp_to 3, 9, POKEMON_TOWER_2F_WIDTH ; POKEMON_TOWER_3F
--- a/data/maps/objects/PokemonTower3F.asm
+++ b/data/maps/objects/PokemonTower3F.asm
@@ -8,10 +8,10 @@
 	db 0 ; signs
 
 	db 4 ; objects
-	object SPRITE_MEDIUM, 12, 3, STAY, LEFT, 1, OPP_CHANNELER, 5
-	object SPRITE_MEDIUM, 9, 8, STAY, DOWN, 2, OPP_CHANNELER, 6
-	object SPRITE_MEDIUM, 10, 13, STAY, DOWN, 3, OPP_CHANNELER, 8
-	object SPRITE_BALL, 12, 1, STAY, NONE, 4, ESCAPE_ROPE
+	object SPRITE_CHANNELER, 12, 3, STAY, LEFT, 1, OPP_CHANNELER, 5
+	object SPRITE_CHANNELER, 9, 8, STAY, DOWN, 2, OPP_CHANNELER, 6
+	object SPRITE_CHANNELER, 10, 13, STAY, DOWN, 3, OPP_CHANNELER, 8
+	object SPRITE_POKE_BALL, 12, 1, STAY, NONE, 4, ESCAPE_ROPE
 
 	; warp-to
 	warp_to 3, 9, POKEMON_TOWER_3F_WIDTH ; POKEMON_TOWER_2F
--- a/data/maps/objects/PokemonTower4F.asm
+++ b/data/maps/objects/PokemonTower4F.asm
@@ -8,12 +8,12 @@
 	db 0 ; signs
 
 	db 6 ; objects
-	object SPRITE_MEDIUM, 5, 10, STAY, RIGHT, 1, OPP_CHANNELER, 9
-	object SPRITE_MEDIUM, 15, 7, STAY, DOWN, 2, OPP_CHANNELER, 10
-	object SPRITE_MEDIUM, 14, 12, STAY, LEFT, 3, OPP_CHANNELER, 12
-	object SPRITE_BALL, 12, 10, STAY, NONE, 4, ELIXER
-	object SPRITE_BALL, 9, 10, STAY, NONE, 5, AWAKENING
-	object SPRITE_BALL, 12, 16, STAY, NONE, 6, HP_UP
+	object SPRITE_CHANNELER, 5, 10, STAY, RIGHT, 1, OPP_CHANNELER, 9
+	object SPRITE_CHANNELER, 15, 7, STAY, DOWN, 2, OPP_CHANNELER, 10
+	object SPRITE_CHANNELER, 14, 12, STAY, LEFT, 3, OPP_CHANNELER, 12
+	object SPRITE_POKE_BALL, 12, 10, STAY, NONE, 4, ELIXER
+	object SPRITE_POKE_BALL, 9, 10, STAY, NONE, 5, AWAKENING
+	object SPRITE_POKE_BALL, 12, 16, STAY, NONE, 6, HP_UP
 
 	; warp-to
 	warp_to 3, 9, POKEMON_TOWER_4F_WIDTH ; POKEMON_TOWER_5F
--- a/data/maps/objects/PokemonTower5F.asm
+++ b/data/maps/objects/PokemonTower5F.asm
@@ -8,12 +8,12 @@
 	db 0 ; signs
 
 	db 6 ; objects
-	object SPRITE_MEDIUM, 12, 8, STAY, NONE, 1 ; person
-	object SPRITE_MEDIUM, 17, 7, STAY, LEFT, 2, OPP_CHANNELER, 14
-	object SPRITE_MEDIUM, 14, 3, STAY, LEFT, 3, OPP_CHANNELER, 16
-	object SPRITE_MEDIUM, 6, 10, STAY, RIGHT, 4, OPP_CHANNELER, 17
-	object SPRITE_MEDIUM, 9, 16, STAY, RIGHT, 5, OPP_CHANNELER, 18
-	object SPRITE_BALL, 6, 14, STAY, NONE, 6, NUGGET
+	object SPRITE_CHANNELER, 12, 8, STAY, NONE, 1 ; person
+	object SPRITE_CHANNELER, 17, 7, STAY, LEFT, 2, OPP_CHANNELER, 14
+	object SPRITE_CHANNELER, 14, 3, STAY, LEFT, 3, OPP_CHANNELER, 16
+	object SPRITE_CHANNELER, 6, 10, STAY, RIGHT, 4, OPP_CHANNELER, 17
+	object SPRITE_CHANNELER, 9, 16, STAY, RIGHT, 5, OPP_CHANNELER, 18
+	object SPRITE_POKE_BALL, 6, 14, STAY, NONE, 6, NUGGET
 
 	; warp-to
 	warp_to 3, 9, POKEMON_TOWER_5F_WIDTH ; POKEMON_TOWER_4F
--- a/data/maps/objects/PokemonTower6F.asm
+++ b/data/maps/objects/PokemonTower6F.asm
@@ -8,11 +8,11 @@
 	db 0 ; signs
 
 	db 5 ; objects
-	object SPRITE_MEDIUM, 12, 10, STAY, RIGHT, 1, OPP_CHANNELER, 19
-	object SPRITE_MEDIUM, 9, 5, STAY, DOWN, 2, OPP_CHANNELER, 20
-	object SPRITE_MEDIUM, 16, 5, STAY, LEFT, 3, OPP_CHANNELER, 21
-	object SPRITE_BALL, 6, 8, STAY, NONE, 4, RARE_CANDY
-	object SPRITE_BALL, 14, 14, STAY, NONE, 5, X_ACCURACY
+	object SPRITE_CHANNELER, 12, 10, STAY, RIGHT, 1, OPP_CHANNELER, 19
+	object SPRITE_CHANNELER, 9, 5, STAY, DOWN, 2, OPP_CHANNELER, 20
+	object SPRITE_CHANNELER, 16, 5, STAY, LEFT, 3, OPP_CHANNELER, 21
+	object SPRITE_POKE_BALL, 6, 8, STAY, NONE, 4, RARE_CANDY
+	object SPRITE_POKE_BALL, 14, 14, STAY, NONE, 5, X_ACCURACY
 
 	; warp-to
 	warp_to 18, 9, POKEMON_TOWER_6F_WIDTH ; POKEMON_TOWER_5F
--- a/data/maps/objects/PowerPlant.asm
+++ b/data/maps/objects/PowerPlant.asm
@@ -9,20 +9,20 @@
 	db 0 ; signs
 
 	db 14 ; objects
-	object SPRITE_BALL, 9, 20, STAY, NONE, 1, VOLTORB, 40
-	object SPRITE_BALL, 32, 18, STAY, NONE, 2, VOLTORB, 40
-	object SPRITE_BALL, 21, 25, STAY, NONE, 3, VOLTORB, 40
-	object SPRITE_BALL, 25, 18, STAY, NONE, 4, ELECTRODE, 43
-	object SPRITE_BALL, 23, 34, STAY, NONE, 5, VOLTORB, 40
-	object SPRITE_BALL, 26, 28, STAY, NONE, 6, VOLTORB, 40
-	object SPRITE_BALL, 21, 14, STAY, NONE, 7, ELECTRODE, 43
-	object SPRITE_BALL, 37, 32, STAY, NONE, 8, VOLTORB, 40
+	object SPRITE_POKE_BALL, 9, 20, STAY, NONE, 1, VOLTORB, 40
+	object SPRITE_POKE_BALL, 32, 18, STAY, NONE, 2, VOLTORB, 40
+	object SPRITE_POKE_BALL, 21, 25, STAY, NONE, 3, VOLTORB, 40
+	object SPRITE_POKE_BALL, 25, 18, STAY, NONE, 4, ELECTRODE, 43
+	object SPRITE_POKE_BALL, 23, 34, STAY, NONE, 5, VOLTORB, 40
+	object SPRITE_POKE_BALL, 26, 28, STAY, NONE, 6, VOLTORB, 40
+	object SPRITE_POKE_BALL, 21, 14, STAY, NONE, 7, ELECTRODE, 43
+	object SPRITE_POKE_BALL, 37, 32, STAY, NONE, 8, VOLTORB, 40
 	object SPRITE_BIRD, 4, 9, STAY, UP, 9, ZAPDOS, 50
-	object SPRITE_BALL, 7, 25, STAY, NONE, 10, CARBOS
-	object SPRITE_BALL, 28, 3, STAY, NONE, 11, HP_UP
-	object SPRITE_BALL, 34, 3, STAY, NONE, 12, RARE_CANDY
-	object SPRITE_BALL, 26, 32, STAY, NONE, 13, TM_THUNDER
-	object SPRITE_BALL, 20, 32, STAY, NONE, 14, TM_REFLECT
+	object SPRITE_POKE_BALL, 7, 25, STAY, NONE, 10, CARBOS
+	object SPRITE_POKE_BALL, 28, 3, STAY, NONE, 11, HP_UP
+	object SPRITE_POKE_BALL, 34, 3, STAY, NONE, 12, RARE_CANDY
+	object SPRITE_POKE_BALL, 26, 32, STAY, NONE, 13, TM_THUNDER
+	object SPRITE_POKE_BALL, 20, 32, STAY, NONE, 14, TM_REFLECT
 
 	; warp-to
 	warp_to 4, 35, POWER_PLANT_WIDTH
--- a/data/maps/objects/RockTunnel1F.asm
+++ b/data/maps/objects/RockTunnel1F.asm
@@ -18,10 +18,10 @@
 	object SPRITE_HIKER, 7, 5, STAY, DOWN, 1, OPP_HIKER, 12
 	object SPRITE_HIKER, 5, 16, STAY, DOWN, 2, OPP_HIKER, 13
 	object SPRITE_HIKER, 17, 15, STAY, LEFT, 3, OPP_HIKER, 14
-	object SPRITE_BLACK_HAIR_BOY_2, 23, 8, STAY, LEFT, 4, OPP_POKEMANIAC, 7
-	object SPRITE_LASS, 37, 21, STAY, LEFT, 5, OPP_JR_TRAINER_F, 17
-	object SPRITE_LASS, 22, 24, STAY, DOWN, 6, OPP_JR_TRAINER_F, 18
-	object SPRITE_LASS, 32, 24, STAY, RIGHT, 7, OPP_JR_TRAINER_F, 19
+	object SPRITE_SUPER_NERD, 23, 8, STAY, LEFT, 4, OPP_POKEMANIAC, 7
+	object SPRITE_COOLTRAINER_F, 37, 21, STAY, LEFT, 5, OPP_JR_TRAINER_F, 17
+	object SPRITE_COOLTRAINER_F, 22, 24, STAY, DOWN, 6, OPP_JR_TRAINER_F, 18
+	object SPRITE_COOLTRAINER_F, 32, 24, STAY, RIGHT, 7, OPP_JR_TRAINER_F, 19
 
 	; warp-to
 	warp_to 15, 3, ROCK_TUNNEL_1F_WIDTH
--- a/data/maps/objects/RockTunnelB1F.asm
+++ b/data/maps/objects/RockTunnelB1F.asm
@@ -10,14 +10,14 @@
 	db 0 ; signs
 
 	db 8 ; objects
-	object SPRITE_LASS, 11, 13, STAY, DOWN, 1, OPP_JR_TRAINER_F, 9
+	object SPRITE_COOLTRAINER_F, 11, 13, STAY, DOWN, 1, OPP_JR_TRAINER_F, 9
 	object SPRITE_HIKER, 6, 10, STAY, DOWN, 2, OPP_HIKER, 9
-	object SPRITE_BLACK_HAIR_BOY_2, 3, 5, STAY, DOWN, 3, OPP_POKEMANIAC, 3
-	object SPRITE_BLACK_HAIR_BOY_2, 20, 21, STAY, RIGHT, 4, OPP_POKEMANIAC, 4
+	object SPRITE_SUPER_NERD, 3, 5, STAY, DOWN, 3, OPP_POKEMANIAC, 3
+	object SPRITE_SUPER_NERD, 20, 21, STAY, RIGHT, 4, OPP_POKEMANIAC, 4
 	object SPRITE_HIKER, 30, 10, STAY, DOWN, 5, OPP_HIKER, 10
-	object SPRITE_LASS, 14, 28, STAY, RIGHT, 6, OPP_JR_TRAINER_F, 10
+	object SPRITE_COOLTRAINER_F, 14, 28, STAY, RIGHT, 6, OPP_JR_TRAINER_F, 10
 	object SPRITE_HIKER, 33, 5, STAY, RIGHT, 7, OPP_HIKER, 11
-	object SPRITE_BLACK_HAIR_BOY_2, 26, 30, STAY, DOWN, 8, OPP_POKEMANIAC, 5
+	object SPRITE_SUPER_NERD, 26, 30, STAY, DOWN, 8, OPP_POKEMANIAC, 5
 
 	; warp-to
 	warp_to 33, 25, ROCK_TUNNEL_B1F_WIDTH ; ROCK_TUNNEL_1F
--- a/data/maps/objects/RockTunnelPokecenter.asm
+++ b/data/maps/objects/RockTunnelPokecenter.asm
@@ -10,8 +10,8 @@
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 7, 3, WALK, 2, 2 ; person
-	object SPRITE_FISHER2, 2, 5, STAY, NONE, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_FISHER, 2, 5, STAY, NONE, 3 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, ROCK_TUNNEL_POKECENTER_WIDTH
--- a/data/maps/objects/RocketHideoutB1F.asm
+++ b/data/maps/objects/RocketHideoutB1F.asm
@@ -16,8 +16,8 @@
 	object SPRITE_ROCKET, 18, 17, STAY, DOWN, 3, OPP_ROCKET, 10
 	object SPRITE_ROCKET, 15, 25, STAY, RIGHT, 4, OPP_ROCKET, 11
 	object SPRITE_ROCKET, 28, 18, STAY, LEFT, 5, OPP_ROCKET, 12
-	object SPRITE_BALL, 11, 14, STAY, NONE, 6, ESCAPE_ROPE
-	object SPRITE_BALL, 9, 17, STAY, NONE, 7, HYPER_POTION
+	object SPRITE_POKE_BALL, 11, 14, STAY, NONE, 6, ESCAPE_ROPE
+	object SPRITE_POKE_BALL, 9, 17, STAY, NONE, 7, HYPER_POTION
 
 	; warp-to
 	warp_to 23, 2, ROCKET_HIDEOUT_B1F_WIDTH ; ROCKET_HIDEOUT_B2F
--- a/data/maps/objects/RocketHideoutB2F.asm
+++ b/data/maps/objects/RocketHideoutB2F.asm
@@ -12,10 +12,10 @@
 
 	db 5 ; objects
 	object SPRITE_ROCKET, 20, 12, STAY, DOWN, 1, OPP_ROCKET, 13
-	object SPRITE_BALL, 1, 11, STAY, NONE, 2, MOON_STONE
-	object SPRITE_BALL, 16, 8, STAY, NONE, 3, NUGGET
-	object SPRITE_BALL, 6, 12, STAY, NONE, 4, TM_HORN_DRILL
-	object SPRITE_BALL, 3, 21, STAY, NONE, 5, SUPER_POTION
+	object SPRITE_POKE_BALL, 1, 11, STAY, NONE, 2, MOON_STONE
+	object SPRITE_POKE_BALL, 16, 8, STAY, NONE, 3, NUGGET
+	object SPRITE_POKE_BALL, 6, 12, STAY, NONE, 4, TM_HORN_DRILL
+	object SPRITE_POKE_BALL, 3, 21, STAY, NONE, 5, SUPER_POTION
 
 	; warp-to
 	warp_to 27, 8, ROCKET_HIDEOUT_B2F_WIDTH ; ROCKET_HIDEOUT_B1F
--- a/data/maps/objects/RocketHideoutB3F.asm
+++ b/data/maps/objects/RocketHideoutB3F.asm
@@ -10,8 +10,8 @@
 	db 4 ; objects
 	object SPRITE_ROCKET, 10, 22, STAY, RIGHT, 1, OPP_ROCKET, 14
 	object SPRITE_ROCKET, 26, 12, STAY, UP, 2, OPP_ROCKET, 15
-	object SPRITE_BALL, 26, 17, STAY, NONE, 3, TM_DOUBLE_EDGE
-	object SPRITE_BALL, 20, 14, STAY, NONE, 4, RARE_CANDY
+	object SPRITE_POKE_BALL, 26, 17, STAY, NONE, 3, TM_DOUBLE_EDGE
+	object SPRITE_POKE_BALL, 20, 14, STAY, NONE, 4, RARE_CANDY
 
 	; warp-to
 	warp_to 25, 6, ROCKET_HIDEOUT_B3F_WIDTH ; ROCKET_HIDEOUT_B2F
--- a/data/maps/objects/RocketHideoutB4F.asm
+++ b/data/maps/objects/RocketHideoutB4F.asm
@@ -13,11 +13,11 @@
 	object SPRITE_ROCKET, 23, 12, STAY, DOWN, 2, OPP_ROCKET, 16
 	object SPRITE_ROCKET, 26, 12, STAY, DOWN, 3, OPP_ROCKET, 17
 	object SPRITE_ROCKET, 11, 2, STAY, DOWN, 4, OPP_ROCKET, 18
-	object SPRITE_BALL, 10, 12, STAY, NONE, 5, HP_UP
-	object SPRITE_BALL, 9, 4, STAY, NONE, 6, TM_RAZOR_WIND
-	object SPRITE_BALL, 12, 20, STAY, NONE, 7, IRON
-	object SPRITE_BALL, 25, 2, STAY, NONE, 8, SILPH_SCOPE
-	object SPRITE_BALL, 10, 2, STAY, NONE, 9, LIFT_KEY
+	object SPRITE_POKE_BALL, 10, 12, STAY, NONE, 5, HP_UP
+	object SPRITE_POKE_BALL, 9, 4, STAY, NONE, 6, TM_RAZOR_WIND
+	object SPRITE_POKE_BALL, 12, 20, STAY, NONE, 7, IRON
+	object SPRITE_POKE_BALL, 25, 2, STAY, NONE, 8, SILPH_SCOPE
+	object SPRITE_POKE_BALL, 10, 2, STAY, NONE, 9, LIFT_KEY
 
 	; warp-to
 	warp_to 19, 10, ROCKET_HIDEOUT_B4F_WIDTH ; ROCKET_HIDEOUT_B3F
--- a/data/maps/objects/Route1.asm
+++ b/data/maps/objects/Route1.asm
@@ -7,8 +7,8 @@
 	sign 9, 27, 3 ; Route1Text3
 
 	db 2 ; objects
-	object SPRITE_BUG_CATCHER, 5, 24, WALK, 1, 1 ; person
-	object SPRITE_BUG_CATCHER, 15, 13, WALK, 2, 2 ; person
+	object SPRITE_YOUNGSTER, 5, 24, WALK, 1, 1 ; person
+	object SPRITE_YOUNGSTER, 15, 13, WALK, 2, 2 ; person
 
 	; warp-to (unused)
 	warp_to 2, 7, 4
--- a/data/maps/objects/Route10.asm
+++ b/data/maps/objects/Route10.asm
@@ -14,12 +14,12 @@
 	sign 5, 41, 10 ; Route10Text10
 
 	db 6 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 10, 44, STAY, LEFT, 1, OPP_POKEMANIAC, 1
+	object SPRITE_SUPER_NERD, 10, 44, STAY, LEFT, 1, OPP_POKEMANIAC, 1
 	object SPRITE_HIKER, 3, 57, STAY, UP, 2, OPP_HIKER, 7
-	object SPRITE_BLACK_HAIR_BOY_2, 14, 64, STAY, LEFT, 3, OPP_POKEMANIAC, 2
-	object SPRITE_LASS, 7, 25, STAY, LEFT, 4, OPP_JR_TRAINER_F, 7
+	object SPRITE_SUPER_NERD, 14, 64, STAY, LEFT, 3, OPP_POKEMANIAC, 2
+	object SPRITE_COOLTRAINER_F, 7, 25, STAY, LEFT, 4, OPP_JR_TRAINER_F, 7
 	object SPRITE_HIKER, 3, 61, STAY, DOWN, 5, OPP_HIKER, 8
-	object SPRITE_LASS, 7, 54, STAY, DOWN, 6, OPP_JR_TRAINER_F, 8
+	object SPRITE_COOLTRAINER_F, 7, 54, STAY, DOWN, 6, OPP_JR_TRAINER_F, 8
 
 	; warp-to
 	warp_to 11, 19, ROUTE_10_WIDTH ; ROCK_TUNNEL_POKECENTER
--- a/data/maps/objects/Route11.asm
+++ b/data/maps/objects/Route11.asm
@@ -14,14 +14,14 @@
 	db 10 ; objects
 	object SPRITE_GAMBLER, 10, 14, STAY, DOWN, 1, OPP_GAMBLER, 1
 	object SPRITE_GAMBLER, 26, 9, STAY, DOWN, 2, OPP_GAMBLER, 2
-	object SPRITE_BUG_CATCHER, 13, 5, STAY, LEFT, 3, OPP_YOUNGSTER, 9
-	object SPRITE_BLACK_HAIR_BOY_2, 36, 11, STAY, DOWN, 4, OPP_ENGINEER, 2
-	object SPRITE_BUG_CATCHER, 22, 4, STAY, UP, 5, OPP_YOUNGSTER, 10
+	object SPRITE_YOUNGSTER, 13, 5, STAY, LEFT, 3, OPP_YOUNGSTER, 9
+	object SPRITE_SUPER_NERD, 36, 11, STAY, DOWN, 4, OPP_ENGINEER, 2
+	object SPRITE_YOUNGSTER, 22, 4, STAY, UP, 5, OPP_YOUNGSTER, 10
 	object SPRITE_GAMBLER, 45, 7, STAY, DOWN, 6, OPP_GAMBLER, 3
 	object SPRITE_GAMBLER, 33, 3, STAY, UP, 7, OPP_GAMBLER, 4
-	object SPRITE_BUG_CATCHER, 43, 5, STAY, RIGHT, 8, OPP_YOUNGSTER, 11
-	object SPRITE_BLACK_HAIR_BOY_2, 45, 16, STAY, LEFT, 9, OPP_ENGINEER, 3
-	object SPRITE_BUG_CATCHER, 22, 12, STAY, UP, 10, OPP_YOUNGSTER, 12
+	object SPRITE_YOUNGSTER, 43, 5, STAY, RIGHT, 8, OPP_YOUNGSTER, 11
+	object SPRITE_SUPER_NERD, 45, 16, STAY, LEFT, 9, OPP_ENGINEER, 3
+	object SPRITE_YOUNGSTER, 22, 12, STAY, UP, 10, OPP_YOUNGSTER, 12
 
 	; warp-to
 	warp_to 49, 8, ROUTE_11_WIDTH ; ROUTE_11_GATE_1F
--- a/data/maps/objects/Route11Gate2F.asm
+++ b/data/maps/objects/Route11Gate2F.asm
@@ -9,8 +9,8 @@
 	sign 6, 2, 4 ; Route11GateUpstairsText4
 
 	db 2 ; objects
-	object SPRITE_BUG_CATCHER, 4, 2, WALK, 2, 1 ; person
-	object SPRITE_OAK_AIDE, 2, 6, STAY, NONE, 2 ; person
+	object SPRITE_YOUNGSTER, 4, 2, WALK, 2, 1 ; person
+	object SPRITE_SCIENTIST, 2, 6, STAY, NONE, 2 ; person
 
 	; warp-to
 	warp_to 7, 7, ROUTE_11_GATE_2F_WIDTH ; ROUTE_11_GATE_1F
--- a/data/maps/objects/Route12.asm
+++ b/data/maps/objects/Route12.asm
@@ -13,15 +13,15 @@
 
 	db 10 ; objects
 	object SPRITE_SNORLAX, 10, 62, STAY, DOWN, 1 ; person
-	object SPRITE_FISHER2, 14, 31, STAY, LEFT, 2, OPP_FISHER, 3
-	object SPRITE_FISHER2, 5, 39, STAY, UP, 3, OPP_FISHER, 4
-	object SPRITE_BLACK_HAIR_BOY_1, 11, 92, STAY, LEFT, 4, OPP_JR_TRAINER_M, 9
-	object SPRITE_BLACK_HAIR_BOY_2, 14, 76, STAY, UP, 5, OPP_ROCKER, 2
-	object SPRITE_FISHER2, 12, 40, STAY, LEFT, 6, OPP_FISHER, 5
-	object SPRITE_FISHER2, 9, 52, STAY, RIGHT, 7, OPP_FISHER, 6
-	object SPRITE_FISHER2, 6, 87, STAY, DOWN, 8, OPP_FISHER, 11
-	object SPRITE_BALL, 14, 35, STAY, NONE, 9, TM_PAY_DAY
-	object SPRITE_BALL, 5, 89, STAY, NONE, 10, IRON
+	object SPRITE_FISHER, 14, 31, STAY, LEFT, 2, OPP_FISHER, 3
+	object SPRITE_FISHER, 5, 39, STAY, UP, 3, OPP_FISHER, 4
+	object SPRITE_COOLTRAINER_M, 11, 92, STAY, LEFT, 4, OPP_JR_TRAINER_M, 9
+	object SPRITE_SUPER_NERD, 14, 76, STAY, UP, 5, OPP_ROCKER, 2
+	object SPRITE_FISHER, 12, 40, STAY, LEFT, 6, OPP_FISHER, 5
+	object SPRITE_FISHER, 9, 52, STAY, RIGHT, 7, OPP_FISHER, 6
+	object SPRITE_FISHER, 6, 87, STAY, DOWN, 8, OPP_FISHER, 11
+	object SPRITE_POKE_BALL, 14, 35, STAY, NONE, 9, TM_PAY_DAY
+	object SPRITE_POKE_BALL, 5, 89, STAY, NONE, 10, IRON
 
 	; warp-to
 	warp_to 10, 15, ROUTE_12_WIDTH ; ROUTE_12_GATE_1F
--- a/data/maps/objects/Route12SuperRodHouse.asm
+++ b/data/maps/objects/Route12SuperRodHouse.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_FISHER, 2, 4, STAY, RIGHT, 1 ; person
+	object SPRITE_FISHING_GURU, 2, 4, STAY, RIGHT, 1 ; person
 
 	; warp-to
 	warp_to 2, 7, ROUTE_12_SUPER_ROD_HOUSE_WIDTH
--- a/data/maps/objects/Route13.asm
+++ b/data/maps/objects/Route13.asm
@@ -9,13 +9,13 @@
 	sign 31, 11, 13 ; Route13Text13
 
 	db 10 ; objects
-	object SPRITE_BLACK_HAIR_BOY_1, 49, 10, STAY, RIGHT, 1, OPP_BIRD_KEEPER, 1
-	object SPRITE_LASS, 48, 10, STAY, DOWN, 2, OPP_JR_TRAINER_F, 12
-	object SPRITE_LASS, 27, 9, STAY, DOWN, 3, OPP_JR_TRAINER_F, 13
-	object SPRITE_LASS, 23, 10, STAY, LEFT, 4, OPP_JR_TRAINER_F, 14
-	object SPRITE_LASS, 50, 5, STAY, DOWN, 5, OPP_JR_TRAINER_F, 15
-	object SPRITE_BLACK_HAIR_BOY_1, 12, 4, STAY, RIGHT, 6, OPP_BIRD_KEEPER, 2
-	object SPRITE_FOULARD_WOMAN, 33, 6, STAY, DOWN, 7, OPP_BEAUTY, 4
-	object SPRITE_FOULARD_WOMAN, 32, 6, STAY, DOWN, 8, OPP_BEAUTY, 5
+	object SPRITE_COOLTRAINER_M, 49, 10, STAY, RIGHT, 1, OPP_BIRD_KEEPER, 1
+	object SPRITE_COOLTRAINER_F, 48, 10, STAY, DOWN, 2, OPP_JR_TRAINER_F, 12
+	object SPRITE_COOLTRAINER_F, 27, 9, STAY, DOWN, 3, OPP_JR_TRAINER_F, 13
+	object SPRITE_COOLTRAINER_F, 23, 10, STAY, LEFT, 4, OPP_JR_TRAINER_F, 14
+	object SPRITE_COOLTRAINER_F, 50, 5, STAY, DOWN, 5, OPP_JR_TRAINER_F, 15
+	object SPRITE_COOLTRAINER_M, 12, 4, STAY, RIGHT, 6, OPP_BIRD_KEEPER, 2
+	object SPRITE_BEAUTY, 33, 6, STAY, DOWN, 7, OPP_BEAUTY, 4
+	object SPRITE_BEAUTY, 32, 6, STAY, DOWN, 8, OPP_BEAUTY, 5
 	object SPRITE_BIKER, 10, 7, STAY, UP, 9, OPP_BIKER, 1
-	object SPRITE_BLACK_HAIR_BOY_1, 7, 13, STAY, UP, 10, OPP_BIRD_KEEPER, 3
+	object SPRITE_COOLTRAINER_M, 7, 13, STAY, UP, 10, OPP_BIRD_KEEPER, 3
--- a/data/maps/objects/Route14.asm
+++ b/data/maps/objects/Route14.asm
@@ -7,12 +7,12 @@
 	sign 17, 13, 11 ; Route14Text11
 
 	db 10 ; objects
-	object SPRITE_BLACK_HAIR_BOY_1, 4, 4, STAY, DOWN, 1, OPP_BIRD_KEEPER, 14
-	object SPRITE_BLACK_HAIR_BOY_1, 15, 6, STAY, DOWN, 2, OPP_BIRD_KEEPER, 15
-	object SPRITE_BLACK_HAIR_BOY_1, 12, 11, STAY, DOWN, 3, OPP_BIRD_KEEPER, 16
-	object SPRITE_BLACK_HAIR_BOY_1, 14, 15, STAY, UP, 4, OPP_BIRD_KEEPER, 17
-	object SPRITE_BLACK_HAIR_BOY_1, 15, 31, STAY, LEFT, 5, OPP_BIRD_KEEPER, 4
-	object SPRITE_BLACK_HAIR_BOY_1, 6, 49, STAY, UP, 6, OPP_BIRD_KEEPER, 5
+	object SPRITE_COOLTRAINER_M, 4, 4, STAY, DOWN, 1, OPP_BIRD_KEEPER, 14
+	object SPRITE_COOLTRAINER_M, 15, 6, STAY, DOWN, 2, OPP_BIRD_KEEPER, 15
+	object SPRITE_COOLTRAINER_M, 12, 11, STAY, DOWN, 3, OPP_BIRD_KEEPER, 16
+	object SPRITE_COOLTRAINER_M, 14, 15, STAY, UP, 4, OPP_BIRD_KEEPER, 17
+	object SPRITE_COOLTRAINER_M, 15, 31, STAY, LEFT, 5, OPP_BIRD_KEEPER, 4
+	object SPRITE_COOLTRAINER_M, 6, 49, STAY, UP, 6, OPP_BIRD_KEEPER, 5
 	object SPRITE_BIKER, 5, 39, STAY, DOWN, 7, OPP_BIKER, 13
 	object SPRITE_BIKER, 4, 30, STAY, RIGHT, 8, OPP_BIKER, 14
 	object SPRITE_BIKER, 15, 30, STAY, LEFT, 9, OPP_BIKER, 15
--- a/data/maps/objects/Route15.asm
+++ b/data/maps/objects/Route15.asm
@@ -11,17 +11,17 @@
 	sign 39, 9, 12 ; Route15Text12
 
 	db 11 ; objects
-	object SPRITE_LASS, 41, 11, STAY, DOWN, 1, OPP_JR_TRAINER_F, 20
-	object SPRITE_LASS, 53, 10, STAY, LEFT, 2, OPP_JR_TRAINER_F, 21
-	object SPRITE_BLACK_HAIR_BOY_1, 31, 13, STAY, UP, 3, OPP_BIRD_KEEPER, 6
-	object SPRITE_BLACK_HAIR_BOY_1, 35, 13, STAY, UP, 4, OPP_BIRD_KEEPER, 7
-	object SPRITE_FOULARD_WOMAN, 53, 11, STAY, DOWN, 5, OPP_BEAUTY, 9
-	object SPRITE_FOULARD_WOMAN, 41, 10, STAY, RIGHT, 6, OPP_BEAUTY, 10
+	object SPRITE_COOLTRAINER_F, 41, 11, STAY, DOWN, 1, OPP_JR_TRAINER_F, 20
+	object SPRITE_COOLTRAINER_F, 53, 10, STAY, LEFT, 2, OPP_JR_TRAINER_F, 21
+	object SPRITE_COOLTRAINER_M, 31, 13, STAY, UP, 3, OPP_BIRD_KEEPER, 6
+	object SPRITE_COOLTRAINER_M, 35, 13, STAY, UP, 4, OPP_BIRD_KEEPER, 7
+	object SPRITE_BEAUTY, 53, 11, STAY, DOWN, 5, OPP_BEAUTY, 9
+	object SPRITE_BEAUTY, 41, 10, STAY, RIGHT, 6, OPP_BEAUTY, 10
 	object SPRITE_BIKER, 48, 10, STAY, DOWN, 7, OPP_BIKER, 3
 	object SPRITE_BIKER, 46, 10, STAY, DOWN, 8, OPP_BIKER, 4
-	object SPRITE_LASS, 37, 5, STAY, RIGHT, 9, OPP_JR_TRAINER_F, 22
-	object SPRITE_LASS, 18, 13, STAY, UP, 10, OPP_JR_TRAINER_F, 23
-	object SPRITE_BALL, 18, 5, STAY, NONE, 11, TM_RAGE
+	object SPRITE_COOLTRAINER_F, 37, 5, STAY, RIGHT, 9, OPP_JR_TRAINER_F, 22
+	object SPRITE_COOLTRAINER_F, 18, 13, STAY, UP, 10, OPP_JR_TRAINER_F, 23
+	object SPRITE_POKE_BALL, 18, 5, STAY, NONE, 11, TM_RAGE
 
 	; warp-to
 	warp_to 7, 8, ROUTE_15_WIDTH ; ROUTE_15_GATE_1F
--- a/data/maps/objects/Route15Gate2F.asm
+++ b/data/maps/objects/Route15Gate2F.asm
@@ -8,7 +8,7 @@
 	sign 6, 2, 2 ; Route15GateUpstairsText2
 
 	db 1 ; objects
-	object SPRITE_OAK_AIDE, 4, 2, STAY, DOWN, 1
+	object SPRITE_SCIENTIST, 4, 2, STAY, DOWN, 1
 
 	; warp-to
 	warp_to 7, 7, ROUTE_15_GATE_2F_WIDTH ; ROUTE_15_GATE_1F
--- a/data/maps/objects/Route16Gate2F.asm
+++ b/data/maps/objects/Route16Gate2F.asm
@@ -9,7 +9,7 @@
 	sign 6, 2, 4 ; Route16GateUpstairsText4
 
 	db 2 ; objects
-	object SPRITE_YOUNG_BOY, 4, 2, STAY, NONE, 1 ; person
+	object SPRITE_LITTLE_BOY, 4, 2, STAY, NONE, 1 ; person
 	object SPRITE_LITTLE_GIRL, 2, 5, WALK, 2, 2 ; person
 
 	; warp-to
--- a/data/maps/objects/Route18.asm
+++ b/data/maps/objects/Route18.asm
@@ -12,9 +12,9 @@
 	sign 33, 5, 5 ; Route18Text5
 
 	db 3 ; objects
-	object SPRITE_BLACK_HAIR_BOY_1, 36, 11, STAY, RIGHT, 1, OPP_BIRD_KEEPER, 8
-	object SPRITE_BLACK_HAIR_BOY_1, 40, 15, STAY, LEFT, 2, OPP_BIRD_KEEPER, 9
-	object SPRITE_BLACK_HAIR_BOY_1, 42, 13, STAY, LEFT, 3, OPP_BIRD_KEEPER, 10
+	object SPRITE_COOLTRAINER_M, 36, 11, STAY, RIGHT, 1, OPP_BIRD_KEEPER, 8
+	object SPRITE_COOLTRAINER_M, 40, 15, STAY, LEFT, 2, OPP_BIRD_KEEPER, 9
+	object SPRITE_COOLTRAINER_M, 42, 13, STAY, LEFT, 3, OPP_BIRD_KEEPER, 10
 
 	; warp-to
 	warp_to 33, 8, ROUTE_18_WIDTH ; ROUTE_18_GATE_1F
--- a/data/maps/objects/Route18Gate2F.asm
+++ b/data/maps/objects/Route18Gate2F.asm
@@ -9,7 +9,7 @@
 	sign 6, 2, 3 ; Route18GateUpstairsText3
 
 	db 1 ; objects
-	object SPRITE_BUG_CATCHER, 4, 2, WALK, 2, 1 ; person
+	object SPRITE_YOUNGSTER, 4, 2, WALK, 2, 1 ; person
 
 	; warp-to
 	warp_to 7, 7, ROUTE_18_GATE_2F_WIDTH ; ROUTE_18_GATE_1F
--- a/data/maps/objects/Route19.asm
+++ b/data/maps/objects/Route19.asm
@@ -7,8 +7,8 @@
 	sign 11, 9, 11 ; Route19Text11
 
 	db 10 ; objects
-	object SPRITE_BLACK_HAIR_BOY_1, 8, 7, STAY, LEFT, 1, OPP_SWIMMER, 2
-	object SPRITE_BLACK_HAIR_BOY_1, 13, 7, STAY, LEFT, 2, OPP_SWIMMER, 3
+	object SPRITE_COOLTRAINER_M, 8, 7, STAY, LEFT, 1, OPP_SWIMMER, 2
+	object SPRITE_COOLTRAINER_M, 13, 7, STAY, LEFT, 2, OPP_SWIMMER, 3
 	object SPRITE_SWIMMER, 13, 25, STAY, LEFT, 3, OPP_SWIMMER, 4
 	object SPRITE_SWIMMER, 4, 27, STAY, RIGHT, 4, OPP_SWIMMER, 5
 	object SPRITE_SWIMMER, 16, 31, STAY, UP, 5, OPP_SWIMMER, 6
--- a/data/maps/objects/Route2.asm
+++ b/data/maps/objects/Route2.asm
@@ -14,8 +14,8 @@
 	sign 11, 11, 4 ; Route2Text4
 
 	db 2 ; objects
-	object SPRITE_BALL, 13, 54, STAY, NONE, 1, MOON_STONE
-	object SPRITE_BALL, 13, 45, STAY, NONE, 2, HP_UP
+	object SPRITE_POKE_BALL, 13, 54, STAY, NONE, 1, MOON_STONE
+	object SPRITE_POKE_BALL, 13, 45, STAY, NONE, 2, HP_UP
 
 	; warp-to
 	warp_to 12, 9, ROUTE_2_WIDTH ; DIGLETTS_CAVE_ROUTE_2
--- a/data/maps/objects/Route20.asm
+++ b/data/maps/objects/Route20.asm
@@ -16,7 +16,7 @@
 	object SPRITE_SWIMMER, 55, 14, STAY, RIGHT, 4, OPP_JR_TRAINER_F, 24
 	object SPRITE_SWIMMER, 38, 13, STAY, DOWN, 5, OPP_SWIMMER, 10
 	object SPRITE_SWIMMER, 87, 13, STAY, UP, 6, OPP_SWIMMER, 11
-	object SPRITE_BLACK_HAIR_BOY_1, 34, 9, STAY, UP, 7, OPP_BIRD_KEEPER, 11
+	object SPRITE_COOLTRAINER_M, 34, 9, STAY, UP, 7, OPP_BIRD_KEEPER, 11
 	object SPRITE_SWIMMER, 25, 7, STAY, UP, 8, OPP_BEAUTY, 7
 	object SPRITE_SWIMMER, 24, 12, STAY, DOWN, 9, OPP_JR_TRAINER_F, 16
 	object SPRITE_SWIMMER, 15, 8, STAY, UP, 10, OPP_BEAUTY, 8
--- a/data/maps/objects/Route21.asm
+++ b/data/maps/objects/Route21.asm
@@ -6,12 +6,12 @@
 	db 0 ; signs
 
 	db 9 ; objects
-	object SPRITE_FISHER2, 4, 24, STAY, LEFT, 1, OPP_FISHER, 7
-	object SPRITE_FISHER2, 6, 25, STAY, DOWN, 2, OPP_FISHER, 9
+	object SPRITE_FISHER, 4, 24, STAY, LEFT, 1, OPP_FISHER, 7
+	object SPRITE_FISHER, 6, 25, STAY, DOWN, 2, OPP_FISHER, 9
 	object SPRITE_SWIMMER, 10, 31, STAY, UP, 3, OPP_SWIMMER, 12
 	object SPRITE_SWIMMER, 12, 30, STAY, RIGHT, 4, OPP_CUE_BALL, 9
 	object SPRITE_SWIMMER, 16, 63, STAY, DOWN, 5, OPP_SWIMMER, 13
 	object SPRITE_SWIMMER, 5, 71, STAY, RIGHT, 6, OPP_SWIMMER, 14
 	object SPRITE_SWIMMER, 15, 71, STAY, LEFT, 7, OPP_SWIMMER, 15
-	object SPRITE_FISHER2, 14, 56, STAY, LEFT, 8, OPP_FISHER, 8
-	object SPRITE_FISHER2, 17, 57, STAY, RIGHT, 9, OPP_FISHER, 10
+	object SPRITE_FISHER, 14, 56, STAY, LEFT, 8, OPP_FISHER, 8
+	object SPRITE_FISHER, 17, 57, STAY, RIGHT, 9, OPP_FISHER, 10
--- a/data/maps/objects/Route24.asm
+++ b/data/maps/objects/Route24.asm
@@ -6,11 +6,11 @@
 	db 0 ; signs
 
 	db 8 ; objects
-	object SPRITE_BLACK_HAIR_BOY_1, 11, 15, STAY, LEFT, 1, OPP_ROCKET, 6
-	object SPRITE_BLACK_HAIR_BOY_1, 5, 20, STAY, UP, 2, OPP_JR_TRAINER_M, 2
-	object SPRITE_BLACK_HAIR_BOY_1, 11, 19, STAY, LEFT, 3, OPP_JR_TRAINER_M, 3
-	object SPRITE_LASS, 10, 22, STAY, RIGHT, 4, OPP_LASS, 7
-	object SPRITE_BUG_CATCHER, 11, 25, STAY, LEFT, 5, OPP_YOUNGSTER, 4
-	object SPRITE_LASS, 10, 28, STAY, RIGHT, 6, OPP_LASS, 8
-	object SPRITE_BUG_CATCHER, 11, 31, STAY, LEFT, 7, OPP_BUG_CATCHER, 9
-	object SPRITE_BALL, 10, 5, STAY, NONE, 8, TM_THUNDER_WAVE
+	object SPRITE_COOLTRAINER_M, 11, 15, STAY, LEFT, 1, OPP_ROCKET, 6
+	object SPRITE_COOLTRAINER_M, 5, 20, STAY, UP, 2, OPP_JR_TRAINER_M, 2
+	object SPRITE_COOLTRAINER_M, 11, 19, STAY, LEFT, 3, OPP_JR_TRAINER_M, 3
+	object SPRITE_COOLTRAINER_F, 10, 22, STAY, RIGHT, 4, OPP_LASS, 7
+	object SPRITE_YOUNGSTER, 11, 25, STAY, LEFT, 5, OPP_YOUNGSTER, 4
+	object SPRITE_COOLTRAINER_F, 10, 28, STAY, RIGHT, 6, OPP_LASS, 8
+	object SPRITE_YOUNGSTER, 11, 31, STAY, LEFT, 7, OPP_BUG_CATCHER, 9
+	object SPRITE_POKE_BALL, 10, 5, STAY, NONE, 8, TM_THUNDER_WAVE
--- a/data/maps/objects/Route25.asm
+++ b/data/maps/objects/Route25.asm
@@ -8,16 +8,16 @@
 	sign 43, 3, 11 ; Route25Text11
 
 	db 10 ; objects
-	object SPRITE_BUG_CATCHER, 14, 2, STAY, DOWN, 1, OPP_YOUNGSTER, 5
-	object SPRITE_BUG_CATCHER, 18, 5, STAY, UP, 2, OPP_YOUNGSTER, 6
-	object SPRITE_BLACK_HAIR_BOY_1, 24, 4, STAY, DOWN, 3, OPP_JR_TRAINER_M, 2
-	object SPRITE_LASS, 18, 8, STAY, RIGHT, 4, OPP_LASS, 9
-	object SPRITE_BUG_CATCHER, 32, 3, STAY, LEFT, 5, OPP_YOUNGSTER, 7
-	object SPRITE_LASS, 37, 4, STAY, DOWN, 6, OPP_LASS, 10
+	object SPRITE_YOUNGSTER, 14, 2, STAY, DOWN, 1, OPP_YOUNGSTER, 5
+	object SPRITE_YOUNGSTER, 18, 5, STAY, UP, 2, OPP_YOUNGSTER, 6
+	object SPRITE_COOLTRAINER_M, 24, 4, STAY, DOWN, 3, OPP_JR_TRAINER_M, 2
+	object SPRITE_COOLTRAINER_F, 18, 8, STAY, RIGHT, 4, OPP_LASS, 9
+	object SPRITE_YOUNGSTER, 32, 3, STAY, LEFT, 5, OPP_YOUNGSTER, 7
+	object SPRITE_COOLTRAINER_F, 37, 4, STAY, DOWN, 6, OPP_LASS, 10
 	object SPRITE_HIKER, 8, 4, STAY, RIGHT, 7, OPP_HIKER, 2
 	object SPRITE_HIKER, 23, 9, STAY, UP, 8, OPP_HIKER, 3
 	object SPRITE_HIKER, 13, 7, STAY, RIGHT, 9, OPP_HIKER, 4
-	object SPRITE_BALL, 22, 2, STAY, NONE, 10, TM_SEISMIC_TOSS
+	object SPRITE_POKE_BALL, 22, 2, STAY, NONE, 10, TM_SEISMIC_TOSS
 
 	; warp-to
 	warp_to 45, 3, ROUTE_25_WIDTH ; BILLS_HOUSE
--- a/data/maps/objects/Route2Gate.asm
+++ b/data/maps/objects/Route2Gate.asm
@@ -10,8 +10,8 @@
 	db 0 ; signs
 
 	db 2 ; objects
-	object SPRITE_OAK_AIDE, 1, 4, STAY, LEFT, 1 ; person
-	object SPRITE_BUG_CATCHER, 5, 4, WALK, 2, 2 ; person
+	object SPRITE_SCIENTIST, 1, 4, STAY, LEFT, 1 ; person
+	object SPRITE_YOUNGSTER, 5, 4, WALK, 2, 2 ; person
 
 	; warp-to
 	warp_to 4, 0, ROUTE_2_GATE_WIDTH
--- a/data/maps/objects/Route2TradeHouse.asm
+++ b/data/maps/objects/Route2TradeHouse.asm
@@ -8,8 +8,8 @@
 	db 0 ; signs
 
 	db 2 ; objects
-	object SPRITE_OAK_AIDE, 2, 4, STAY, RIGHT, 1 ; person
-	object SPRITE_GAMEBOY_KID_COPY, 4, 1, STAY, DOWN, 2 ; person
+	object SPRITE_SCIENTIST, 2, 4, STAY, RIGHT, 1 ; person
+	object SPRITE_GAMEBOY_KID, 4, 1, STAY, DOWN, 2 ; person
 
 	; warp-to
 	warp_to 2, 7, ROUTE_2_TRADE_HOUSE_WIDTH
--- a/data/maps/objects/Route3.asm
+++ b/data/maps/objects/Route3.asm
@@ -7,12 +7,12 @@
 	sign 59, 9, 10 ; Route3Text10
 
 	db 9 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 57, 11, STAY, NONE, 1 ; person
-	object SPRITE_BUG_CATCHER, 10, 6, STAY, RIGHT, 2, OPP_BUG_CATCHER, 4
-	object SPRITE_BUG_CATCHER, 14, 4, STAY, DOWN, 3, OPP_YOUNGSTER, 1
-	object SPRITE_LASS, 16, 9, STAY, LEFT, 4, OPP_LASS, 1
-	object SPRITE_BUG_CATCHER, 19, 5, STAY, DOWN, 5, OPP_BUG_CATCHER, 5
-	object SPRITE_LASS, 23, 4, STAY, LEFT, 6, OPP_LASS, 2
-	object SPRITE_BUG_CATCHER, 22, 9, STAY, LEFT, 7, OPP_YOUNGSTER, 2
-	object SPRITE_BUG_CATCHER, 24, 6, STAY, RIGHT, 8, OPP_BUG_CATCHER, 6
-	object SPRITE_LASS, 33, 10, STAY, UP, 9, OPP_LASS, 3
+	object SPRITE_SUPER_NERD, 57, 11, STAY, NONE, 1 ; person
+	object SPRITE_YOUNGSTER, 10, 6, STAY, RIGHT, 2, OPP_BUG_CATCHER, 4
+	object SPRITE_YOUNGSTER, 14, 4, STAY, DOWN, 3, OPP_YOUNGSTER, 1
+	object SPRITE_COOLTRAINER_F, 16, 9, STAY, LEFT, 4, OPP_LASS, 1
+	object SPRITE_YOUNGSTER, 19, 5, STAY, DOWN, 5, OPP_BUG_CATCHER, 5
+	object SPRITE_COOLTRAINER_F, 23, 4, STAY, LEFT, 6, OPP_LASS, 2
+	object SPRITE_YOUNGSTER, 22, 9, STAY, LEFT, 7, OPP_YOUNGSTER, 2
+	object SPRITE_YOUNGSTER, 24, 6, STAY, RIGHT, 8, OPP_BUG_CATCHER, 6
+	object SPRITE_COOLTRAINER_F, 33, 10, STAY, UP, 9, OPP_LASS, 3
--- a/data/maps/objects/Route4.asm
+++ b/data/maps/objects/Route4.asm
@@ -12,9 +12,9 @@
 	sign 27, 7, 6 ; Route4Text6
 
 	db 3 ; objects
-	object SPRITE_LASS, 9, 8, WALK, 0, 1 ; person
-	object SPRITE_LASS, 63, 3, STAY, RIGHT, 2, OPP_LASS, 4
-	object SPRITE_BALL, 57, 3, STAY, NONE, 3, TM_WHIRLWIND
+	object SPRITE_COOLTRAINER_F, 9, 8, WALK, 0, 1 ; person
+	object SPRITE_COOLTRAINER_F, 63, 3, STAY, RIGHT, 2, OPP_LASS, 4
+	object SPRITE_POKE_BALL, 57, 3, STAY, NONE, 3, TM_WHIRLWIND
 
 	; warp-to
 	warp_to 11, 5, ROUTE_4_WIDTH ; MT_MOON_POKECENTER
--- a/data/maps/objects/Route6.asm
+++ b/data/maps/objects/Route6.asm
@@ -11,12 +11,12 @@
 	sign 19, 15, 7 ; Route6Text7
 
 	db 6 ; objects
-	object SPRITE_BLACK_HAIR_BOY_1, 10, 21, STAY, RIGHT, 1, OPP_JR_TRAINER_M, 4
-	object SPRITE_LASS, 11, 21, STAY, LEFT, 2, OPP_JR_TRAINER_F, 2
-	object SPRITE_BUG_CATCHER, 0, 15, STAY, RIGHT, 3, OPP_BUG_CATCHER, 10
-	object SPRITE_BLACK_HAIR_BOY_1, 11, 31, STAY, LEFT, 4, OPP_JR_TRAINER_M, 5
-	object SPRITE_LASS, 11, 30, STAY, LEFT, 5, OPP_JR_TRAINER_F, 3
-	object SPRITE_BUG_CATCHER, 19, 26, STAY, LEFT, 6, OPP_BUG_CATCHER, 11
+	object SPRITE_COOLTRAINER_M, 10, 21, STAY, RIGHT, 1, OPP_JR_TRAINER_M, 4
+	object SPRITE_COOLTRAINER_F, 11, 21, STAY, LEFT, 2, OPP_JR_TRAINER_F, 2
+	object SPRITE_YOUNGSTER, 0, 15, STAY, RIGHT, 3, OPP_BUG_CATCHER, 10
+	object SPRITE_COOLTRAINER_M, 11, 31, STAY, LEFT, 4, OPP_JR_TRAINER_M, 5
+	object SPRITE_COOLTRAINER_F, 11, 30, STAY, LEFT, 5, OPP_JR_TRAINER_F, 3
+	object SPRITE_YOUNGSTER, 19, 26, STAY, LEFT, 6, OPP_BUG_CATCHER, 11
 
 	; warp-to
 	warp_to 9, 1, ROUTE_6_WIDTH ; ROUTE_6_GATE
--- a/data/maps/objects/Route8.asm
+++ b/data/maps/objects/Route8.asm
@@ -12,15 +12,15 @@
 	sign 17, 3, 10 ; Route8Text10
 
 	db 9 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 8, 5, STAY, RIGHT, 1, OPP_SUPER_NERD, 3
+	object SPRITE_SUPER_NERD, 8, 5, STAY, RIGHT, 1, OPP_SUPER_NERD, 3
 	object SPRITE_GAMBLER, 13, 9, STAY, UP, 2, OPP_GAMBLER, 5
-	object SPRITE_BLACK_HAIR_BOY_2, 42, 6, STAY, UP, 3, OPP_SUPER_NERD, 4
-	object SPRITE_LASS, 26, 3, STAY, LEFT, 4, OPP_LASS, 13
-	object SPRITE_BLACK_HAIR_BOY_2, 26, 4, STAY, RIGHT, 5, OPP_SUPER_NERD, 5
-	object SPRITE_LASS, 26, 5, STAY, LEFT, 6, OPP_LASS, 14
-	object SPRITE_LASS, 26, 6, STAY, RIGHT, 7, OPP_LASS, 15
+	object SPRITE_SUPER_NERD, 42, 6, STAY, UP, 3, OPP_SUPER_NERD, 4
+	object SPRITE_COOLTRAINER_F, 26, 3, STAY, LEFT, 4, OPP_LASS, 13
+	object SPRITE_SUPER_NERD, 26, 4, STAY, RIGHT, 5, OPP_SUPER_NERD, 5
+	object SPRITE_COOLTRAINER_F, 26, 5, STAY, LEFT, 6, OPP_LASS, 14
+	object SPRITE_COOLTRAINER_F, 26, 6, STAY, RIGHT, 7, OPP_LASS, 15
 	object SPRITE_GAMBLER, 46, 13, STAY, DOWN, 8, OPP_GAMBLER, 7
-	object SPRITE_LASS, 51, 12, STAY, LEFT, 9, OPP_LASS, 16
+	object SPRITE_COOLTRAINER_F, 51, 12, STAY, LEFT, 9, OPP_LASS, 16
 
 	; warp-to
 	warp_to 1, 9, ROUTE_8_WIDTH ; ROUTE_8_GATE
--- a/data/maps/objects/Route9.asm
+++ b/data/maps/objects/Route9.asm
@@ -7,13 +7,13 @@
 	sign 25, 7, 11 ; Route9Text11
 
 	db 10 ; objects
-	object SPRITE_LASS, 13, 10, STAY, LEFT, 1, OPP_JR_TRAINER_F, 5
-	object SPRITE_BLACK_HAIR_BOY_1, 24, 7, STAY, LEFT, 2, OPP_JR_TRAINER_M, 7
-	object SPRITE_BLACK_HAIR_BOY_1, 31, 7, STAY, RIGHT, 3, OPP_JR_TRAINER_M, 8
-	object SPRITE_LASS, 48, 8, STAY, RIGHT, 4, OPP_JR_TRAINER_F, 6
+	object SPRITE_COOLTRAINER_F, 13, 10, STAY, LEFT, 1, OPP_JR_TRAINER_F, 5
+	object SPRITE_COOLTRAINER_M, 24, 7, STAY, LEFT, 2, OPP_JR_TRAINER_M, 7
+	object SPRITE_COOLTRAINER_M, 31, 7, STAY, RIGHT, 3, OPP_JR_TRAINER_M, 8
+	object SPRITE_COOLTRAINER_F, 48, 8, STAY, RIGHT, 4, OPP_JR_TRAINER_F, 6
 	object SPRITE_HIKER, 16, 15, STAY, LEFT, 5, OPP_HIKER, 11
 	object SPRITE_HIKER, 43, 3, STAY, LEFT, 6, OPP_HIKER, 6
-	object SPRITE_BUG_CATCHER, 22, 2, STAY, DOWN, 7, OPP_BUG_CATCHER, 13
+	object SPRITE_YOUNGSTER, 22, 2, STAY, DOWN, 7, OPP_BUG_CATCHER, 13
 	object SPRITE_HIKER, 45, 15, STAY, RIGHT, 8, OPP_HIKER, 5
-	object SPRITE_BUG_CATCHER, 40, 8, STAY, RIGHT, 9, OPP_BUG_CATCHER, 14
-	object SPRITE_BALL, 10, 15, STAY, NONE, 10, TM_TELEPORT
+	object SPRITE_YOUNGSTER, 40, 8, STAY, RIGHT, 9, OPP_BUG_CATCHER, 14
+	object SPRITE_POKE_BALL, 10, 15, STAY, NONE, 10, TM_TELEPORT
--- a/data/maps/objects/SSAnne1FRooms.asm
+++ b/data/maps/objects/SSAnne1FRooms.asm
@@ -14,14 +14,14 @@
 	db 11 ; objects
 	object SPRITE_GENTLEMAN, 2, 3, STAY, LEFT, 1, OPP_GENTLEMAN, 1
 	object SPRITE_GENTLEMAN, 11, 4, STAY, UP, 2, OPP_GENTLEMAN, 2
-	object SPRITE_BUG_CATCHER, 11, 14, STAY, UP, 3, OPP_YOUNGSTER, 8
-	object SPRITE_LASS, 13, 11, STAY, LEFT, 4, OPP_LASS, 11
+	object SPRITE_YOUNGSTER, 11, 14, STAY, UP, 3, OPP_YOUNGSTER, 8
+	object SPRITE_COOLTRAINER_F, 13, 11, STAY, LEFT, 4, OPP_LASS, 11
 	object SPRITE_GIRL, 22, 3, WALK, 1, 5 ; person
-	object SPRITE_FAT_BALD_GUY, 0, 14, STAY, NONE, 6 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 0, 14, STAY, NONE, 6 ; person
 	object SPRITE_LITTLE_GIRL, 2, 11, STAY, DOWN, 7 ; person
-	object SPRITE_CLEFAIRY, 3, 11, STAY, DOWN, 8 ; person
+	object SPRITE_FAIRY, 3, 11, STAY, DOWN, 8 ; person
 	object SPRITE_GIRL, 10, 13, STAY, RIGHT, 9 ; person
-	object SPRITE_BALL, 12, 15, STAY, NONE, 10, TM_BODY_SLAM
+	object SPRITE_POKE_BALL, 12, 15, STAY, NONE, 10, TM_BODY_SLAM
 	object SPRITE_GENTLEMAN, 21, 13, WALK, 2, 11 ; person
 
 	; warp-to
--- a/data/maps/objects/SSAnne2F.asm
+++ b/data/maps/objects/SSAnne2F.asm
@@ -16,7 +16,7 @@
 
 	db 2 ; objects
 	object SPRITE_WAITER, 3, 7, WALK, 1, 1 ; person
-	object SPRITE_BLUE, 36, 4, STAY, DOWN, 2, OPP_SONY1, 1
+	object SPRITE_BLUE, 36, 4, STAY, DOWN, 2, OPP_RIVAL1, 1
 
 	; warp-to
 	warp_to 9, 11, SS_ANNE_2F_WIDTH ; SS_ANNE_2F_ROOMS
--- a/data/maps/objects/SSAnne2FRooms.asm
+++ b/data/maps/objects/SSAnne2FRooms.asm
@@ -19,18 +19,18 @@
 
 	db 13 ; objects
 	object SPRITE_GENTLEMAN, 10, 2, STAY, RIGHT, 1, OPP_GENTLEMAN, 3
-	object SPRITE_FISHER2, 13, 4, STAY, LEFT, 2, OPP_FISHER, 1
+	object SPRITE_FISHER, 13, 4, STAY, LEFT, 2, OPP_FISHER, 1
 	object SPRITE_GENTLEMAN, 0, 14, STAY, RIGHT, 3, OPP_GENTLEMAN, 5
-	object SPRITE_LASS, 2, 11, STAY, DOWN, 4, OPP_LASS, 12
+	object SPRITE_COOLTRAINER_F, 2, 11, STAY, DOWN, 4, OPP_LASS, 12
 	object SPRITE_GENTLEMAN, 1, 2, STAY, DOWN, 5 ; person
-	object SPRITE_BALL, 12, 1, STAY, NONE, 6, MAX_ETHER
+	object SPRITE_POKE_BALL, 12, 1, STAY, NONE, 6, MAX_ETHER
 	object SPRITE_GENTLEMAN, 21, 2, STAY, DOWN, 7 ; person
-	object SPRITE_OLD_PERSON, 22, 1, STAY, DOWN, 8 ; person
-	object SPRITE_BALL, 0, 12, STAY, NONE, 9, RARE_CANDY
+	object SPRITE_GRAMPS, 22, 1, STAY, DOWN, 8 ; person
+	object SPRITE_POKE_BALL, 0, 12, STAY, NONE, 9, RARE_CANDY
 	object SPRITE_GENTLEMAN, 12, 12, STAY, DOWN, 10 ; person
-	object SPRITE_YOUNG_BOY, 11, 14, STAY, NONE, 11 ; person
+	object SPRITE_LITTLE_BOY, 11, 14, STAY, NONE, 11 ; person
 	object SPRITE_BRUNETTE_GIRL, 22, 12, STAY, LEFT, 12 ; person
-	object SPRITE_FOULARD_WOMAN, 20, 12, STAY, RIGHT, 13 ; person
+	object SPRITE_BEAUTY, 20, 12, STAY, RIGHT, 13 ; person
 
 	; warp-to
 	warp_to 2, 5, SS_ANNE_2F_ROOMS_WIDTH ; SS_ANNE_2F
--- a/data/maps/objects/SSAnneB1FRooms.asm
+++ b/data/maps/objects/SSAnneB1FRooms.asm
@@ -21,12 +21,12 @@
 	object SPRITE_SAILOR, 12, 3, STAY, LEFT, 3, OPP_SAILOR, 5
 	object SPRITE_SAILOR, 22, 2, STAY, DOWN, 4, OPP_SAILOR, 6
 	object SPRITE_SAILOR, 0, 2, STAY, RIGHT, 5, OPP_SAILOR, 7
-	object SPRITE_FISHER2, 0, 4, STAY, RIGHT, 6, OPP_FISHER, 2
-	object SPRITE_BLACK_HAIR_BOY_2, 10, 13, STAY, RIGHT, 7 ; person
-	object SPRITE_SLOWBRO, 11, 12, STAY, NONE, 8 ; person
-	object SPRITE_BALL, 20, 2, STAY, NONE, 9, ETHER
-	object SPRITE_BALL, 10, 2, STAY, NONE, 10, TM_REST
-	object SPRITE_BALL, 12, 11, STAY, NONE, 11, MAX_POTION
+	object SPRITE_FISHER, 0, 4, STAY, RIGHT, 6, OPP_FISHER, 2
+	object SPRITE_SUPER_NERD, 10, 13, STAY, RIGHT, 7 ; person
+	object SPRITE_MONSTER, 11, 12, STAY, NONE, 8 ; person
+	object SPRITE_POKE_BALL, 20, 2, STAY, NONE, 9, ETHER
+	object SPRITE_POKE_BALL, 10, 2, STAY, NONE, 10, TM_REST
+	object SPRITE_POKE_BALL, 12, 11, STAY, NONE, 11, MAX_POTION
 
 	; warp-to
 	warp_to 2, 5, SS_ANNE_B1F_ROOMS_WIDTH ; SS_ANNE_B1F
--- a/data/maps/objects/SSAnneBow.asm
+++ b/data/maps/objects/SSAnneBow.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 5 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 5, 2, STAY, UP, 1 ; person
+	object SPRITE_SUPER_NERD, 5, 2, STAY, UP, 1 ; person
 	object SPRITE_SAILOR, 4, 9, STAY, NONE, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 7, 11, STAY, NONE, 3 ; person
+	object SPRITE_COOLTRAINER_M, 7, 11, STAY, NONE, 3 ; person
 	object SPRITE_SAILOR, 4, 4, STAY, DOWN, 4, OPP_SAILOR, 1
 	object SPRITE_SAILOR, 10, 8, STAY, UP, 5, OPP_SAILOR, 2
 
--- a/data/maps/objects/SSAnneCaptainsRoom.asm
+++ b/data/maps/objects/SSAnneCaptainsRoom.asm
@@ -9,7 +9,7 @@
 	sign 1, 2, 3 ; SSAnne7Text3
 
 	db 1 ; objects
-	object SPRITE_SS_CAPTAIN, 4, 2, STAY, UP, 1 ; person
+	object SPRITE_CAPTAIN, 4, 2, STAY, UP, 1 ; person
 
 	; warp-to
 	warp_to 0, 7, SS_ANNE_CAPTAINS_ROOM_WIDTH ; SS_ANNE_2F
--- a/data/maps/objects/SafariZoneCenter.asm
+++ b/data/maps/objects/SafariZoneCenter.asm
@@ -17,7 +17,7 @@
 	sign 14, 22, 3 ; SafariZoneCenterText3
 
 	db 1 ; objects
-	object SPRITE_BALL, 14, 10, STAY, NONE, 1, NUGGET
+	object SPRITE_POKE_BALL, 14, 10, STAY, NONE, 1, NUGGET
 
 	; warp-to
 	warp_to 14, 25, SAFARI_ZONE_CENTER_WIDTH ; SAFARI_ZONE_GATE
--- a/data/maps/objects/SafariZoneCenterRestHouse.asm
+++ b/data/maps/objects/SafariZoneCenterRestHouse.asm
@@ -9,7 +9,7 @@
 
 	db 2 ; objects
 	object SPRITE_GIRL, 3, 2, STAY, DOWN, 1 ; person
-	object SPRITE_OAK_AIDE, 1, 4, WALK, 1, 2 ; person
+	object SPRITE_SCIENTIST, 1, 4, WALK, 1, 2 ; person
 
 	; warp-to
 	warp_to 2, 7, SAFARI_ZONE_CENTER_REST_HOUSE_WIDTH ; SAFARI_ZONE_CENTER
--- a/data/maps/objects/SafariZoneEast.asm
+++ b/data/maps/objects/SafariZoneEast.asm
@@ -14,10 +14,10 @@
 	sign 5, 23, 7 ; SafariZoneEastText7
 
 	db 4 ; objects
-	object SPRITE_BALL, 21, 10, STAY, NONE, 1, FULL_RESTORE
-	object SPRITE_BALL, 3, 7, STAY, NONE, 2, MAX_POTION
-	object SPRITE_BALL, 20, 13, STAY, NONE, 3, CARBOS
-	object SPRITE_BALL, 15, 12, STAY, NONE, 4, TM_EGG_BOMB
+	object SPRITE_POKE_BALL, 21, 10, STAY, NONE, 1, FULL_RESTORE
+	object SPRITE_POKE_BALL, 3, 7, STAY, NONE, 2, MAX_POTION
+	object SPRITE_POKE_BALL, 20, 13, STAY, NONE, 3, CARBOS
+	object SPRITE_POKE_BALL, 15, 12, STAY, NONE, 4, TM_EGG_BOMB
 
 	; warp-to
 	warp_to 0, 4, SAFARI_ZONE_EAST_WIDTH ; SAFARI_ZONE_NORTH
--- a/data/maps/objects/SafariZoneEastRestHouse.asm
+++ b/data/maps/objects/SafariZoneEastRestHouse.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_OAK_AIDE, 1, 3, WALK, 1, 1 ; person
+	object SPRITE_SCIENTIST, 1, 3, WALK, 1, 1 ; person
 	object SPRITE_ROCKER, 4, 2, STAY, NONE, 2 ; person
-	object SPRITE_LAPRAS_GIVER, 5, 2, STAY, NONE, 3 ; person
+	object SPRITE_SILPH_WORKER, 5, 2, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 2, 7, SAFARI_ZONE_EAST_REST_HOUSE_WIDTH ; SAFARI_ZONE_EAST
--- a/data/maps/objects/SafariZoneGate.asm
+++ b/data/maps/objects/SafariZoneGate.asm
@@ -10,8 +10,8 @@
 	db 0 ; signs
 
 	db 2 ; objects
-	object SPRITE_WHITE_PLAYER, 6, 2, STAY, LEFT, 1 ; person
-	object SPRITE_WHITE_PLAYER, 1, 4, STAY, RIGHT, 2 ; person
+	object SPRITE_SAFARI_ZONE_WORKER, 6, 2, STAY, LEFT, 1 ; person
+	object SPRITE_SAFARI_ZONE_WORKER, 1, 4, STAY, RIGHT, 2 ; person
 
 	; warp-to
 	warp_to 3, 5, SAFARI_ZONE_GATE_WIDTH
--- a/data/maps/objects/SafariZoneNorth.asm
+++ b/data/maps/objects/SafariZoneNorth.asm
@@ -20,8 +20,8 @@
 	sign 26, 28, 7 ; SafariZoneNorthText7
 
 	db 2 ; objects
-	object SPRITE_BALL, 25, 1, STAY, NONE, 1, PROTEIN
-	object SPRITE_BALL, 19, 7, STAY, NONE, 2, TM_SKULL_BASH
+	object SPRITE_POKE_BALL, 25, 1, STAY, NONE, 1, PROTEIN
+	object SPRITE_POKE_BALL, 19, 7, STAY, NONE, 2, TM_SKULL_BASH
 
 	; warp-to
 	warp_to 2, 35, SAFARI_ZONE_NORTH_WIDTH ; SAFARI_ZONE_WEST
--- a/data/maps/objects/SafariZoneNorthRestHouse.asm
+++ b/data/maps/objects/SafariZoneNorthRestHouse.asm
@@ -8,8 +8,8 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_OAK_AIDE, 6, 3, WALK, 2, 1 ; person
-	object SPRITE_WHITE_PLAYER, 3, 4, STAY, NONE, 2 ; person
+	object SPRITE_SCIENTIST, 6, 3, WALK, 2, 1 ; person
+	object SPRITE_SAFARI_ZONE_WORKER, 3, 4, STAY, NONE, 2 ; person
 	object SPRITE_GENTLEMAN, 1, 5, WALK, 1, 3 ; person
 
 	; warp-to
--- a/data/maps/objects/SafariZoneSecretHouse.asm
+++ b/data/maps/objects/SafariZoneSecretHouse.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_FISHER, 3, 3, STAY, DOWN, 1 ; person
+	object SPRITE_FISHING_GURU, 3, 3, STAY, DOWN, 1 ; person
 
 	; warp-to
 	warp_to 2, 7, SAFARI_ZONE_SECRET_HOUSE_WIDTH ; SAFARI_ZONE_WEST
--- a/data/maps/objects/SafariZoneWest.asm
+++ b/data/maps/objects/SafariZoneWest.asm
@@ -18,10 +18,10 @@
 	sign 24, 22, 8 ; SafariZoneWestText8
 
 	db 4 ; objects
-	object SPRITE_BALL, 8, 20, STAY, NONE, 1, MAX_POTION
-	object SPRITE_BALL, 9, 7, STAY, NONE, 2, TM_DOUBLE_TEAM
-	object SPRITE_BALL, 18, 18, STAY, NONE, 3, MAX_REVIVE
-	object SPRITE_BALL, 19, 7, STAY, NONE, 4, GOLD_TEETH
+	object SPRITE_POKE_BALL, 8, 20, STAY, NONE, 1, MAX_POTION
+	object SPRITE_POKE_BALL, 9, 7, STAY, NONE, 2, TM_DOUBLE_TEAM
+	object SPRITE_POKE_BALL, 18, 18, STAY, NONE, 3, MAX_REVIVE
+	object SPRITE_POKE_BALL, 19, 7, STAY, NONE, 4, GOLD_TEETH
 
 	; warp-to
 	warp_to 20, 0, SAFARI_ZONE_WEST_WIDTH ; SAFARI_ZONE_NORTH
--- a/data/maps/objects/SafariZoneWestRestHouse.asm
+++ b/data/maps/objects/SafariZoneWestRestHouse.asm
@@ -8,8 +8,8 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_OAK_AIDE, 4, 4, WALK, 0, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 0, 2, STAY, RIGHT, 2 ; person
+	object SPRITE_SCIENTIST, 4, 4, WALK, 0, 1 ; person
+	object SPRITE_COOLTRAINER_M, 0, 2, STAY, RIGHT, 2 ; person
 	object SPRITE_ERIKA, 6, 2, STAY, DOWN, 3 ; person
 
 	; warp-to
--- a/data/maps/objects/SaffronCity.asm
+++ b/data/maps/objects/SaffronCity.asm
@@ -31,8 +31,8 @@
 	object SPRITE_ROCKET, 11, 25, WALK, 2, 5 ; person
 	object SPRITE_ROCKET, 32, 13, WALK, 2, 6 ; person
 	object SPRITE_ROCKET, 18, 30, WALK, 2, 7 ; person
-	object SPRITE_OAK_AIDE, 8, 14, WALK, 0, 8 ; person
-	object SPRITE_LAPRAS_GIVER, 23, 23, STAY, NONE, 9 ; person
+	object SPRITE_SCIENTIST, 8, 14, WALK, 0, 8 ; person
+	object SPRITE_SILPH_WORKER, 23, 23, STAY, NONE, 9 ; person
 	object SPRITE_ERIKA, 17, 30, WALK, 2, 10 ; person
 	object SPRITE_GENTLEMAN, 30, 12, STAY, DOWN, 11 ; person
 	object SPRITE_BIRD, 31, 12, STAY, DOWN, 12 ; person
--- a/data/maps/objects/SaffronGym.asm
+++ b/data/maps/objects/SaffronGym.asm
@@ -39,14 +39,14 @@
 
 	db 9 ; objects
 	object SPRITE_GIRL, 9, 8, STAY, DOWN, 1, OPP_SABRINA, 1
-	object SPRITE_MEDIUM, 10, 1, STAY, DOWN, 2, OPP_CHANNELER, 22
-	object SPRITE_BUG_CATCHER, 17, 1, STAY, DOWN, 3, OPP_PSYCHIC_TR, 1
-	object SPRITE_MEDIUM, 3, 7, STAY, DOWN, 4, OPP_CHANNELER, 23
-	object SPRITE_BUG_CATCHER, 17, 7, STAY, DOWN, 5, OPP_PSYCHIC_TR, 2
-	object SPRITE_MEDIUM, 3, 13, STAY, DOWN, 6, OPP_CHANNELER, 24
-	object SPRITE_BUG_CATCHER, 17, 13, STAY, DOWN, 7, OPP_PSYCHIC_TR, 3
-	object SPRITE_BUG_CATCHER, 3, 1, STAY, DOWN, 8, OPP_PSYCHIC_TR, 4
-	object SPRITE_GYM_HELPER, 10, 15, STAY, DOWN, 9 ; person
+	object SPRITE_CHANNELER, 10, 1, STAY, DOWN, 2, OPP_CHANNELER, 22
+	object SPRITE_YOUNGSTER, 17, 1, STAY, DOWN, 3, OPP_PSYCHIC_TR, 1
+	object SPRITE_CHANNELER, 3, 7, STAY, DOWN, 4, OPP_CHANNELER, 23
+	object SPRITE_YOUNGSTER, 17, 7, STAY, DOWN, 5, OPP_PSYCHIC_TR, 2
+	object SPRITE_CHANNELER, 3, 13, STAY, DOWN, 6, OPP_CHANNELER, 24
+	object SPRITE_YOUNGSTER, 17, 13, STAY, DOWN, 7, OPP_PSYCHIC_TR, 3
+	object SPRITE_YOUNGSTER, 3, 1, STAY, DOWN, 8, OPP_PSYCHIC_TR, 4
+	object SPRITE_GYM_GUIDE, 10, 15, STAY, DOWN, 9 ; person
 
 	; warp-to
 	warp_to 8, 17, SAFFRON_GYM_WIDTH
--- a/data/maps/objects/SaffronMart.asm
+++ b/data/maps/objects/SaffronMart.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_2, 4, 2, STAY, NONE, 2 ; person
-	object SPRITE_LASS, 6, 5, WALK, 0, 3 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_SUPER_NERD, 4, 2, STAY, NONE, 2 ; person
+	object SPRITE_COOLTRAINER_F, 6, 5, WALK, 0, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, SAFFRON_MART_WIDTH
--- a/data/maps/objects/SaffronPidgeyHouse.asm
+++ b/data/maps/objects/SaffronPidgeyHouse.asm
@@ -10,8 +10,8 @@
 	db 4 ; objects
 	object SPRITE_BRUNETTE_GIRL, 2, 3, STAY, RIGHT, 1 ; person
 	object SPRITE_BIRD, 0, 4, WALK, 1, 2 ; person
-	object SPRITE_BUG_CATCHER, 4, 1, STAY, DOWN, 3 ; person
-	object SPRITE_PAPER_SHEET, 3, 3, STAY, NONE, 4 ; person
+	object SPRITE_YOUNGSTER, 4, 1, STAY, DOWN, 3 ; person
+	object SPRITE_PAPER, 3, 3, STAY, NONE, 4 ; person
 
 	; warp-to
 	warp_to 2, 7, SAFFRON_PIDGEY_HOUSE_WIDTH
--- a/data/maps/objects/SaffronPokecenter.asm
+++ b/data/maps/objects/SaffronPokecenter.asm
@@ -9,9 +9,9 @@
 
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
-	object SPRITE_FOULARD_WOMAN, 5, 5, STAY, NONE, 2 ; person
+	object SPRITE_BEAUTY, 5, 5, STAY, NONE, 2 ; person
 	object SPRITE_GENTLEMAN, 8, 3, STAY, DOWN, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, SAFFRON_POKECENTER_WIDTH
--- a/data/maps/objects/SilphCo10F.asm
+++ b/data/maps/objects/SilphCo10F.asm
@@ -13,11 +13,11 @@
 
 	db 6 ; objects
 	object SPRITE_ROCKET, 1, 9, STAY, RIGHT, 1, OPP_ROCKET, 39
-	object SPRITE_OAK_AIDE, 10, 2, STAY, LEFT, 2, OPP_SCIENTIST, 11
+	object SPRITE_SCIENTIST, 10, 2, STAY, LEFT, 2, OPP_SCIENTIST, 11
 	object SPRITE_ERIKA, 9, 15, WALK, 0, 3 ; person
-	object SPRITE_BALL, 2, 12, STAY, NONE, 4, TM_EARTHQUAKE
-	object SPRITE_BALL, 4, 14, STAY, NONE, 5, RARE_CANDY
-	object SPRITE_BALL, 5, 11, STAY, NONE, 6, CARBOS
+	object SPRITE_POKE_BALL, 2, 12, STAY, NONE, 4, TM_EARTHQUAKE
+	object SPRITE_POKE_BALL, 4, 14, STAY, NONE, 5, RARE_CANDY
+	object SPRITE_POKE_BALL, 5, 11, STAY, NONE, 6, CARBOS
 
 	; warp-to
 	warp_to 8, 0, SILPH_CO_10F_WIDTH ; SILPH_CO_9F
--- a/data/maps/objects/SilphCo11F.asm
+++ b/data/maps/objects/SilphCo11F.asm
@@ -10,8 +10,8 @@
 	db 0 ; signs
 
 	db 5 ; objects
-	object SPRITE_MR_MASTERBALL, 7, 5, STAY, DOWN, 1 ; person
-	object SPRITE_FOULARD_WOMAN, 10, 5, STAY, DOWN, 2 ; person
+	object SPRITE_SILPH_PRESIDENT, 7, 5, STAY, DOWN, 1 ; person
+	object SPRITE_BEAUTY, 10, 5, STAY, DOWN, 2 ; person
 	object SPRITE_GIOVANNI, 6, 9, STAY, DOWN, 3, OPP_GIOVANNI, 2
 	object SPRITE_ROCKET, 3, 16, STAY, UP, 4, OPP_ROCKET, 41
 	object SPRITE_ROCKET, 15, 9, STAY, UP, 5, OPP_ROCKET, 40
--- a/data/maps/objects/SilphCo1F.asm
+++ b/data/maps/objects/SilphCo1F.asm
@@ -11,7 +11,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_CABLE_CLUB_WOMAN, 4, 2, STAY, DOWN, 1 ; person
+	object SPRITE_LINK_RECEPTIONIST, 4, 2, STAY, DOWN, 1 ; person
 
 	; warp-to
 	warp_to 10, 17, SILPH_CO_1F_WIDTH
--- a/data/maps/objects/SilphCo2F.asm
+++ b/data/maps/objects/SilphCo2F.asm
@@ -14,8 +14,8 @@
 
 	db 5 ; objects
 	object SPRITE_ERIKA, 10, 1, STAY, UP, 1 ; person
-	object SPRITE_OAK_AIDE, 5, 12, STAY, DOWN, 2, OPP_SCIENTIST, 2
-	object SPRITE_OAK_AIDE, 24, 13, STAY, LEFT, 3, OPP_SCIENTIST, 3
+	object SPRITE_SCIENTIST, 5, 12, STAY, DOWN, 2, OPP_SCIENTIST, 2
+	object SPRITE_SCIENTIST, 24, 13, STAY, LEFT, 3, OPP_SCIENTIST, 3
 	object SPRITE_ROCKET, 16, 11, STAY, UP, 4, OPP_ROCKET, 23
 	object SPRITE_ROCKET, 24, 7, STAY, UP, 5, OPP_ROCKET, 24
 
--- a/data/maps/objects/SilphCo3F.asm
+++ b/data/maps/objects/SilphCo3F.asm
@@ -16,10 +16,10 @@
 	db 0 ; signs
 
 	db 4 ; objects
-	object SPRITE_LAPRAS_GIVER, 24, 8, STAY, NONE, 1 ; person
+	object SPRITE_SILPH_WORKER, 24, 8, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 20, 7, STAY, LEFT, 2, OPP_ROCKET, 25
-	object SPRITE_OAK_AIDE, 7, 9, STAY, DOWN, 3, OPP_SCIENTIST, 4
-	object SPRITE_BALL, 8, 5, STAY, NONE, 4, HYPER_POTION
+	object SPRITE_SCIENTIST, 7, 9, STAY, DOWN, 3, OPP_SCIENTIST, 4
+	object SPRITE_POKE_BALL, 8, 5, STAY, NONE, 4, HYPER_POTION
 
 	; warp-to
 	warp_to 26, 0, SILPH_CO_3F_WIDTH ; SILPH_CO_2F
--- a/data/maps/objects/SilphCo4F.asm
+++ b/data/maps/objects/SilphCo4F.asm
@@ -13,13 +13,13 @@
 	db 0 ; signs
 
 	db 7 ; objects
-	object SPRITE_LAPRAS_GIVER, 6, 2, STAY, NONE, 1 ; person
+	object SPRITE_SILPH_WORKER, 6, 2, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 9, 14, STAY, RIGHT, 2, OPP_ROCKET, 26
-	object SPRITE_OAK_AIDE, 14, 6, STAY, LEFT, 3, OPP_SCIENTIST, 5
+	object SPRITE_SCIENTIST, 14, 6, STAY, LEFT, 3, OPP_SCIENTIST, 5
 	object SPRITE_ROCKET, 26, 10, STAY, UP, 4, OPP_ROCKET, 27
-	object SPRITE_BALL, 3, 9, STAY, NONE, 5, FULL_HEAL
-	object SPRITE_BALL, 4, 7, STAY, NONE, 6, MAX_REVIVE
-	object SPRITE_BALL, 5, 8, STAY, NONE, 7, ESCAPE_ROPE
+	object SPRITE_POKE_BALL, 3, 9, STAY, NONE, 5, FULL_HEAL
+	object SPRITE_POKE_BALL, 4, 7, STAY, NONE, 6, MAX_REVIVE
+	object SPRITE_POKE_BALL, 5, 8, STAY, NONE, 7, ESCAPE_ROPE
 
 	; warp-to
 	warp_to 24, 0, SILPH_CO_4F_WIDTH ; SILPH_CO_3F
--- a/data/maps/objects/SilphCo5F.asm
+++ b/data/maps/objects/SilphCo5F.asm
@@ -13,14 +13,14 @@
 	db 0 ; signs
 
 	db 11 ; objects
-	object SPRITE_LAPRAS_GIVER, 13, 9, STAY, NONE, 1 ; person
+	object SPRITE_SILPH_WORKER, 13, 9, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 8, 16, STAY, RIGHT, 2, OPP_ROCKET, 28
-	object SPRITE_OAK_AIDE, 8, 3, STAY, RIGHT, 3, OPP_SCIENTIST, 6
+	object SPRITE_SCIENTIST, 8, 3, STAY, RIGHT, 3, OPP_SCIENTIST, 6
 	object SPRITE_ROCKER, 18, 10, STAY, UP, 4, OPP_JUGGLER, 1
 	object SPRITE_ROCKET, 28, 4, STAY, UP, 5, OPP_ROCKET, 29
-	object SPRITE_BALL, 2, 13, STAY, NONE, 6, TM_TAKE_DOWN
-	object SPRITE_BALL, 4, 6, STAY, NONE, 7, PROTEIN
-	object SPRITE_BALL, 21, 16, STAY, NONE, 8, CARD_KEY
+	object SPRITE_POKE_BALL, 2, 13, STAY, NONE, 6, TM_TAKE_DOWN
+	object SPRITE_POKE_BALL, 4, 6, STAY, NONE, 7, PROTEIN
+	object SPRITE_POKE_BALL, 21, 16, STAY, NONE, 8, CARD_KEY
 	object SPRITE_CLIPBOARD, 22, 12, STAY, NONE, 9 ; person
 	object SPRITE_CLIPBOARD, 25, 10, STAY, NONE, 10 ; person
 	object SPRITE_CLIPBOARD, 24, 6, STAY, NONE, 11 ; person
--- a/data/maps/objects/SilphCo6F.asm
+++ b/data/maps/objects/SilphCo6F.asm
@@ -11,16 +11,16 @@
 	db 0 ; signs
 
 	db 10 ; objects
-	object SPRITE_LAPRAS_GIVER, 10, 6, STAY, NONE, 1 ; person
-	object SPRITE_LAPRAS_GIVER, 20, 6, STAY, NONE, 2 ; person
+	object SPRITE_SILPH_WORKER, 10, 6, STAY, NONE, 1 ; person
+	object SPRITE_SILPH_WORKER, 20, 6, STAY, NONE, 2 ; person
 	object SPRITE_ERIKA, 21, 6, STAY, DOWN, 3 ; person
 	object SPRITE_ERIKA, 11, 10, STAY, RIGHT, 4 ; person
-	object SPRITE_LAPRAS_GIVER, 18, 13, STAY, UP, 5 ; person
+	object SPRITE_SILPH_WORKER, 18, 13, STAY, UP, 5 ; person
 	object SPRITE_ROCKET, 17, 3, STAY, RIGHT, 6, OPP_ROCKET, 30
-	object SPRITE_OAK_AIDE, 7, 8, STAY, DOWN, 7, OPP_SCIENTIST, 7
+	object SPRITE_SCIENTIST, 7, 8, STAY, DOWN, 7, OPP_SCIENTIST, 7
 	object SPRITE_ROCKET, 14, 15, STAY, LEFT, 8, OPP_ROCKET, 31
-	object SPRITE_BALL, 3, 12, STAY, NONE, 9, HP_UP
-	object SPRITE_BALL, 2, 15, STAY, NONE, 10, X_ACCURACY
+	object SPRITE_POKE_BALL, 3, 12, STAY, NONE, 9, HP_UP
+	object SPRITE_POKE_BALL, 2, 15, STAY, NONE, 10, X_ACCURACY
 
 	; warp-to
 	warp_to 16, 0, SILPH_CO_6F_WIDTH ; SILPH_CO_7F
--- a/data/maps/objects/SilphCo7F.asm
+++ b/data/maps/objects/SilphCo7F.asm
@@ -12,17 +12,17 @@
 	db 0 ; signs
 
 	db 11 ; objects
-	object SPRITE_LAPRAS_GIVER, 1, 5, STAY, NONE, 1 ; person
-	object SPRITE_LAPRAS_GIVER, 13, 13, STAY, UP, 2 ; person
-	object SPRITE_LAPRAS_GIVER, 7, 10, STAY, NONE, 3 ; person
+	object SPRITE_SILPH_WORKER, 1, 5, STAY, NONE, 1 ; person
+	object SPRITE_SILPH_WORKER, 13, 13, STAY, UP, 2 ; person
+	object SPRITE_SILPH_WORKER, 7, 10, STAY, NONE, 3 ; person
 	object SPRITE_ERIKA, 10, 8, STAY, NONE, 4 ; person
 	object SPRITE_ROCKET, 13, 1, STAY, DOWN, 5, OPP_ROCKET, 32
-	object SPRITE_OAK_AIDE, 2, 13, STAY, DOWN, 6, OPP_SCIENTIST, 8
+	object SPRITE_SCIENTIST, 2, 13, STAY, DOWN, 6, OPP_SCIENTIST, 8
 	object SPRITE_ROCKET, 20, 2, STAY, LEFT, 7, OPP_ROCKET, 33
 	object SPRITE_ROCKET, 19, 14, STAY, RIGHT, 8, OPP_ROCKET, 34
 	object SPRITE_BLUE, 3, 7, STAY, UP, 9 ; person
-	object SPRITE_BALL, 1, 9, STAY, NONE, 10, CALCIUM
-	object SPRITE_BALL, 24, 11, STAY, NONE, 11, TM_SWORDS_DANCE
+	object SPRITE_POKE_BALL, 1, 9, STAY, NONE, 10, CALCIUM
+	object SPRITE_POKE_BALL, 24, 11, STAY, NONE, 11, TM_SWORDS_DANCE
 
 	; warp-to
 	warp_to 16, 0, SILPH_CO_7F_WIDTH ; SILPH_CO_8F
--- a/data/maps/objects/SilphCo8F.asm
+++ b/data/maps/objects/SilphCo8F.asm
@@ -13,9 +13,9 @@
 	db 0 ; signs
 
 	db 4 ; objects
-	object SPRITE_LAPRAS_GIVER, 4, 2, STAY, NONE, 1 ; person
+	object SPRITE_SILPH_WORKER, 4, 2, STAY, NONE, 1 ; person
 	object SPRITE_ROCKET, 19, 2, STAY, LEFT, 2, OPP_ROCKET, 35
-	object SPRITE_OAK_AIDE, 10, 2, STAY, DOWN, 3, OPP_SCIENTIST, 9
+	object SPRITE_SCIENTIST, 10, 2, STAY, DOWN, 3, OPP_SCIENTIST, 9
 	object SPRITE_ROCKET, 12, 15, STAY, RIGHT, 4, OPP_ROCKET, 36
 
 	; warp-to
--- a/data/maps/objects/SilphCo9F.asm
+++ b/data/maps/objects/SilphCo9F.asm
@@ -13,7 +13,7 @@
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 14, STAY, DOWN, 1 ; person
 	object SPRITE_ROCKET, 2, 4, STAY, UP, 2, OPP_ROCKET, 37
-	object SPRITE_OAK_AIDE, 21, 13, STAY, DOWN, 3, OPP_SCIENTIST, 10
+	object SPRITE_SCIENTIST, 21, 13, STAY, DOWN, 3, OPP_SCIENTIST, 10
 	object SPRITE_ROCKET, 13, 16, STAY, UP, 4, OPP_ROCKET, 38
 
 	; warp-to
--- a/data/maps/objects/UndergroundPathRoute7.asm
+++ b/data/maps/objects/UndergroundPathRoute7.asm
@@ -9,7 +9,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_FAT_BALD_GUY, 2, 4, STAY, NONE, 1 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 2, 4, STAY, NONE, 1 ; person
 
 	; warp-to
 	warp_to 3, 7, UNDERGROUND_PATH_ROUTE_7_WIDTH
--- a/data/maps/objects/UndergroundPathRoute7Copy.asm
+++ b/data/maps/objects/UndergroundPathRoute7Copy.asm
@@ -10,7 +10,7 @@
 
 	db 2 ; objects
 	object SPRITE_GIRL, 3, 2, STAY, NONE, 1 ; person
-	object SPRITE_FAT_BALD_GUY, 2, 4, STAY, NONE, 2 ; person
+	object SPRITE_MIDDLE_AGED_MAN, 2, 4, STAY, NONE, 2 ; person
 
 	; warp-to
 	warp_to 3, 7, UNDERGROUND_PATH_ROUTE_7_COPY_WIDTH
--- a/data/maps/objects/VermilionCity.asm
+++ b/data/maps/objects/VermilionCity.asm
@@ -22,11 +22,11 @@
 	sign 29, 15, 13 ; VermilionCityText13
 
 	db 6 ; objects
-	object SPRITE_FOULARD_WOMAN, 19, 7, WALK, 2, 1 ; person
+	object SPRITE_BEAUTY, 19, 7, WALK, 2, 1 ; person
 	object SPRITE_GAMBLER, 14, 6, STAY, NONE, 2 ; person
 	object SPRITE_SAILOR, 19, 30, STAY, UP, 3 ; person
 	object SPRITE_GAMBLER, 30, 7, STAY, NONE, 4 ; person
-	object SPRITE_SLOWBRO, 29, 9, WALK, 1, 5 ; person
+	object SPRITE_MONSTER, 29, 9, WALK, 1, 5 ; person
 	object SPRITE_SAILOR, 25, 27, WALK, 2, 6 ; person
 
 	; warp-to
--- a/data/maps/objects/VermilionGym.asm
+++ b/data/maps/objects/VermilionGym.asm
@@ -10,9 +10,9 @@
 	db 5 ; objects
 	object SPRITE_ROCKER, 5, 1, STAY, DOWN, 1, OPP_LT_SURGE, 1
 	object SPRITE_GENTLEMAN, 9, 6, STAY, LEFT, 2, OPP_GENTLEMAN, 3
-	object SPRITE_BLACK_HAIR_BOY_2, 3, 8, STAY, LEFT, 3, OPP_ROCKER, 1
+	object SPRITE_SUPER_NERD, 3, 8, STAY, LEFT, 3, OPP_ROCKER, 1
 	object SPRITE_SAILOR, 0, 10, STAY, RIGHT, 4, OPP_SAILOR, 8
-	object SPRITE_GYM_HELPER, 4, 14, STAY, DOWN, 5 ; person
+	object SPRITE_GYM_GUIDE, 4, 14, STAY, DOWN, 5 ; person
 
 	; warp-to
 	warp_to 4, 17, VERMILION_GYM_WIDTH
--- a/data/maps/objects/VermilionMart.asm
+++ b/data/maps/objects/VermilionMart.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 1 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 5, 6, STAY, NONE, 2 ; person
-	object SPRITE_LASS, 3, 3, WALK, 2, 3 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_COOLTRAINER_M, 5, 6, STAY, NONE, 2 ; person
+	object SPRITE_COOLTRAINER_F, 3, 3, WALK, 2, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, VERMILION_MART_WIDTH
--- a/data/maps/objects/VermilionOldRodHouse.asm
+++ b/data/maps/objects/VermilionOldRodHouse.asm
@@ -8,7 +8,7 @@
 	db 0 ; signs
 
 	db 1 ; objects
-	object SPRITE_FISHER, 2, 4, STAY, RIGHT, 1 ; person
+	object SPRITE_FISHING_GURU, 2, 4, STAY, RIGHT, 1 ; person
 
 	; warp-to
 	warp_to 2, 7, VERMILION_OLD_ROD_HOUSE_WIDTH
--- a/data/maps/objects/VermilionPidgeyHouse.asm
+++ b/data/maps/objects/VermilionPidgeyHouse.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_BUG_CATCHER, 5, 3, STAY, LEFT, 1 ; person
+	object SPRITE_YOUNGSTER, 5, 3, STAY, LEFT, 1 ; person
 	object SPRITE_BIRD, 3, 5, WALK, 2, 2 ; person
-	object SPRITE_PAPER_SHEET, 4, 3, STAY, NONE, 3 ; person
+	object SPRITE_PAPER, 4, 3, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 2, 7, VERMILION_PIDGEY_HOUSE_WIDTH
--- a/data/maps/objects/VermilionPokecenter.asm
+++ b/data/maps/objects/VermilionPokecenter.asm
@@ -9,9 +9,9 @@
 
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
-	object SPRITE_FISHER, 10, 5, STAY, NONE, 2 ; person
+	object SPRITE_FISHING_GURU, 10, 5, STAY, NONE, 2 ; person
 	object SPRITE_SAILOR, 5, 4, STAY, NONE, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, VERMILION_POKECENTER_WIDTH
--- a/data/maps/objects/VictoryRoad1F.asm
+++ b/data/maps/objects/VictoryRoad1F.asm
@@ -9,10 +9,10 @@
 	db 0 ; signs
 
 	db 7 ; objects
-	object SPRITE_LASS, 7, 5, STAY, RIGHT, 1, OPP_COOLTRAINER_F, 5
-	object SPRITE_BLACK_HAIR_BOY_1, 3, 2, STAY, DOWN, 2, OPP_COOLTRAINER_M, 5
-	object SPRITE_BALL, 11, 0, STAY, NONE, 3, TM_SKY_ATTACK
-	object SPRITE_BALL, 9, 2, STAY, NONE, 4, RARE_CANDY
+	object SPRITE_COOLTRAINER_F, 7, 5, STAY, RIGHT, 1, OPP_COOLTRAINER_F, 5
+	object SPRITE_COOLTRAINER_M, 3, 2, STAY, DOWN, 2, OPP_COOLTRAINER_M, 5
+	object SPRITE_POKE_BALL, 11, 0, STAY, NONE, 3, TM_SKY_ATTACK
+	object SPRITE_POKE_BALL, 9, 2, STAY, NONE, 4, RARE_CANDY
 	object SPRITE_BOULDER, 5, 15, STAY, BOULDER_MOVEMENT_BYTE_2, 5 ; person
 	object SPRITE_BOULDER, 14, 2, STAY, BOULDER_MOVEMENT_BYTE_2, 6 ; person
 	object SPRITE_BOULDER, 2, 10, STAY, BOULDER_MOVEMENT_BYTE_2, 7 ; person
--- a/data/maps/objects/VictoryRoad2F.asm
+++ b/data/maps/objects/VictoryRoad2F.asm
@@ -14,15 +14,15 @@
 
 	db 13 ; objects
 	object SPRITE_HIKER, 12, 9, STAY, LEFT, 1, OPP_BLACKBELT, 9
-	object SPRITE_BLACK_HAIR_BOY_2, 21, 13, STAY, LEFT, 2, OPP_JUGGLER, 2
-	object SPRITE_BLACK_HAIR_BOY_1, 19, 8, STAY, DOWN, 3, OPP_TAMER, 5
-	object SPRITE_BLACK_HAIR_BOY_2, 4, 2, STAY, DOWN, 4, OPP_POKEMANIAC, 6
-	object SPRITE_BLACK_HAIR_BOY_2, 26, 3, STAY, LEFT, 5, OPP_JUGGLER, 5
+	object SPRITE_SUPER_NERD, 21, 13, STAY, LEFT, 2, OPP_JUGGLER, 2
+	object SPRITE_COOLTRAINER_M, 19, 8, STAY, DOWN, 3, OPP_TAMER, 5
+	object SPRITE_SUPER_NERD, 4, 2, STAY, DOWN, 4, OPP_POKEMANIAC, 6
+	object SPRITE_SUPER_NERD, 26, 3, STAY, LEFT, 5, OPP_JUGGLER, 5
 	object SPRITE_BIRD, 11, 5, STAY, UP, 6, MOLTRES, 50
-	object SPRITE_BALL, 27, 5, STAY, NONE, 7, TM_SUBMISSION
-	object SPRITE_BALL, 18, 9, STAY, NONE, 8, FULL_HEAL
-	object SPRITE_BALL, 9, 11, STAY, NONE, 9, TM_MEGA_KICK
-	object SPRITE_BALL, 11, 0, STAY, NONE, 10, GUARD_SPEC
+	object SPRITE_POKE_BALL, 27, 5, STAY, NONE, 7, TM_SUBMISSION
+	object SPRITE_POKE_BALL, 18, 9, STAY, NONE, 8, FULL_HEAL
+	object SPRITE_POKE_BALL, 9, 11, STAY, NONE, 9, TM_MEGA_KICK
+	object SPRITE_POKE_BALL, 11, 0, STAY, NONE, 10, GUARD_SPEC
 	object SPRITE_BOULDER, 4, 14, STAY, BOULDER_MOVEMENT_BYTE_2, 11 ; person
 	object SPRITE_BOULDER, 5, 5, STAY, BOULDER_MOVEMENT_BYTE_2, 12 ; person
 	object SPRITE_BOULDER, 23, 16, STAY, BOULDER_MOVEMENT_BYTE_2, 13 ; person
--- a/data/maps/objects/VictoryRoad3F.asm
+++ b/data/maps/objects/VictoryRoad3F.asm
@@ -10,12 +10,12 @@
 	db 0 ; signs
 
 	db 10 ; objects
-	object SPRITE_BLACK_HAIR_BOY_1, 28, 5, STAY, LEFT, 1, OPP_COOLTRAINER_M, 2
-	object SPRITE_LASS, 7, 13, STAY, RIGHT, 2, OPP_COOLTRAINER_F, 2
-	object SPRITE_BLACK_HAIR_BOY_1, 6, 14, STAY, LEFT, 3, OPP_COOLTRAINER_M, 3
-	object SPRITE_LASS, 13, 3, STAY, RIGHT, 4, OPP_COOLTRAINER_F, 3
-	object SPRITE_BALL, 26, 5, STAY, NONE, 5, MAX_REVIVE
-	object SPRITE_BALL, 7, 7, STAY, NONE, 6, TM_EXPLOSION
+	object SPRITE_COOLTRAINER_M, 28, 5, STAY, LEFT, 1, OPP_COOLTRAINER_M, 2
+	object SPRITE_COOLTRAINER_F, 7, 13, STAY, RIGHT, 2, OPP_COOLTRAINER_F, 2
+	object SPRITE_COOLTRAINER_M, 6, 14, STAY, LEFT, 3, OPP_COOLTRAINER_M, 3
+	object SPRITE_COOLTRAINER_F, 13, 3, STAY, RIGHT, 4, OPP_COOLTRAINER_F, 3
+	object SPRITE_POKE_BALL, 26, 5, STAY, NONE, 5, MAX_REVIVE
+	object SPRITE_POKE_BALL, 7, 7, STAY, NONE, 6, TM_EXPLOSION
 	object SPRITE_BOULDER, 22, 3, STAY, BOULDER_MOVEMENT_BYTE_2, 7 ; person
 	object SPRITE_BOULDER, 13, 12, STAY, BOULDER_MOVEMENT_BYTE_2, 8 ; person
 	object SPRITE_BOULDER, 24, 10, STAY, BOULDER_MOVEMENT_BYTE_2, 9 ; person
--- a/data/maps/objects/ViridianCity.asm
+++ b/data/maps/objects/ViridianCity.asm
@@ -17,12 +17,12 @@
 	sign 27, 7, 13 ; ViridianCityText13
 
 	db 7 ; objects
-	object SPRITE_BUG_CATCHER, 13, 20, WALK, 0, 1 ; person
+	object SPRITE_YOUNGSTER, 13, 20, WALK, 0, 1 ; person
 	object SPRITE_GAMBLER, 30, 8, STAY, NONE, 2 ; person
-	object SPRITE_BUG_CATCHER, 30, 25, WALK, 0, 3 ; person
+	object SPRITE_YOUNGSTER, 30, 25, WALK, 0, 3 ; person
 	object SPRITE_GIRL, 17, 9, STAY, RIGHT, 4 ; person
-	object SPRITE_LYING_OLD_MAN, 18, 9, STAY, NONE, 5 ; person
-	object SPRITE_FISHER2, 6, 23, STAY, DOWN, 6 ; person
+	object SPRITE_GAMBLER_ASLEEP, 18, 9, STAY, NONE, 5 ; person
+	object SPRITE_FISHER, 6, 23, STAY, DOWN, 6 ; person
 	object SPRITE_GAMBLER, 17, 5, WALK, 2, 7 ; person
 
 	; warp-to
--- a/data/maps/objects/ViridianForest.asm
+++ b/data/maps/objects/ViridianForest.asm
@@ -18,14 +18,14 @@
 	sign 2, 1, 14 ; ViridianForestText14
 
 	db 8 ; objects
-	object SPRITE_BUG_CATCHER, 16, 43, STAY, NONE, 1 ; person
-	object SPRITE_BUG_CATCHER, 30, 33, STAY, LEFT, 2, OPP_BUG_CATCHER, 1
-	object SPRITE_BUG_CATCHER, 30, 19, STAY, LEFT, 3, OPP_BUG_CATCHER, 2
-	object SPRITE_BUG_CATCHER, 2, 18, STAY, LEFT, 4, OPP_BUG_CATCHER, 3
-	object SPRITE_BALL, 25, 11, STAY, NONE, 5, ANTIDOTE
-	object SPRITE_BALL, 12, 29, STAY, NONE, 6, POTION
-	object SPRITE_BALL, 1, 31, STAY, NONE, 7, POKE_BALL
-	object SPRITE_BUG_CATCHER, 27, 40, STAY, NONE, 8 ; person
+	object SPRITE_YOUNGSTER, 16, 43, STAY, NONE, 1 ; person
+	object SPRITE_YOUNGSTER, 30, 33, STAY, LEFT, 2, OPP_BUG_CATCHER, 1
+	object SPRITE_YOUNGSTER, 30, 19, STAY, LEFT, 3, OPP_BUG_CATCHER, 2
+	object SPRITE_YOUNGSTER, 2, 18, STAY, LEFT, 4, OPP_BUG_CATCHER, 3
+	object SPRITE_POKE_BALL, 25, 11, STAY, NONE, 5, ANTIDOTE
+	object SPRITE_POKE_BALL, 12, 29, STAY, NONE, 6, POTION
+	object SPRITE_POKE_BALL, 1, 31, STAY, NONE, 7, POKE_BALL
+	object SPRITE_YOUNGSTER, 27, 40, STAY, NONE, 8 ; person
 
 	; warp-to
 	warp_to 1, 0, VIRIDIAN_FOREST_WIDTH ; VIRIDIAN_FOREST_NORTH_GATE
--- a/data/maps/objects/ViridianForestNorthGate.asm
+++ b/data/maps/objects/ViridianForestNorthGate.asm
@@ -10,8 +10,8 @@
 	db 0 ; signs
 
 	db 2 ; objects
-	object SPRITE_BLACK_HAIR_BOY_2, 3, 2, STAY, NONE, 1 ; person
-	object SPRITE_OLD_PERSON, 2, 5, STAY, NONE, 2 ; person
+	object SPRITE_SUPER_NERD, 3, 2, STAY, NONE, 1 ; person
+	object SPRITE_GRAMPS, 2, 5, STAY, NONE, 2 ; person
 
 	; warp-to
 	warp_to 4, 0, VIRIDIAN_FOREST_NORTH_GATE_WIDTH
--- a/data/maps/objects/ViridianGym.asm
+++ b/data/maps/objects/ViridianGym.asm
@@ -9,16 +9,16 @@
 
 	db 11 ; objects
 	object SPRITE_GIOVANNI, 2, 1, STAY, DOWN, 1, OPP_GIOVANNI, 3
-	object SPRITE_BLACK_HAIR_BOY_1, 12, 7, STAY, DOWN, 2, OPP_COOLTRAINER_M, 9
+	object SPRITE_COOLTRAINER_M, 12, 7, STAY, DOWN, 2, OPP_COOLTRAINER_M, 9
 	object SPRITE_HIKER, 11, 11, STAY, UP, 3, OPP_BLACKBELT, 6
 	object SPRITE_ROCKER, 10, 7, STAY, DOWN, 4, OPP_TAMER, 3
 	object SPRITE_HIKER, 3, 7, STAY, LEFT, 5, OPP_BLACKBELT, 7
-	object SPRITE_BLACK_HAIR_BOY_1, 13, 5, STAY, RIGHT, 6, OPP_COOLTRAINER_M, 10
+	object SPRITE_COOLTRAINER_M, 13, 5, STAY, RIGHT, 6, OPP_COOLTRAINER_M, 10
 	object SPRITE_HIKER, 10, 1, STAY, DOWN, 7, OPP_BLACKBELT, 8
 	object SPRITE_ROCKER, 2, 16, STAY, RIGHT, 8, OPP_TAMER, 4
-	object SPRITE_BLACK_HAIR_BOY_1, 6, 5, STAY, DOWN, 9, OPP_COOLTRAINER_M, 1
-	object SPRITE_GYM_HELPER, 16, 15, STAY, DOWN, 10 ; person
-	object SPRITE_BALL, 16, 9, STAY, NONE, 11, REVIVE
+	object SPRITE_COOLTRAINER_M, 6, 5, STAY, DOWN, 9, OPP_COOLTRAINER_M, 1
+	object SPRITE_GYM_GUIDE, 16, 15, STAY, DOWN, 10 ; person
+	object SPRITE_POKE_BALL, 16, 9, STAY, NONE, 11, REVIVE
 
 	; warp-to
 	warp_to 16, 17, VIRIDIAN_GYM_WIDTH
--- a/data/maps/objects/ViridianMart.asm
+++ b/data/maps/objects/ViridianMart.asm
@@ -8,9 +8,9 @@
 	db 0 ; signs
 
 	db 3 ; objects
-	object SPRITE_MART_GUY, 0, 5, STAY, RIGHT, 1 ; person
-	object SPRITE_BUG_CATCHER, 5, 5, WALK, 1, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 3, 3, STAY, NONE, 3 ; person
+	object SPRITE_CLERK, 0, 5, STAY, RIGHT, 1 ; person
+	object SPRITE_YOUNGSTER, 5, 5, WALK, 1, 2 ; person
+	object SPRITE_COOLTRAINER_M, 3, 3, STAY, NONE, 3 ; person
 
 	; warp-to
 	warp_to 3, 7, VIRIDIAN_MART_WIDTH
--- a/data/maps/objects/ViridianPokecenter.asm
+++ b/data/maps/objects/ViridianPokecenter.asm
@@ -10,8 +10,8 @@
 	db 4 ; objects
 	object SPRITE_NURSE, 3, 1, STAY, DOWN, 1 ; person
 	object SPRITE_GENTLEMAN, 10, 5, WALK, 1, 2 ; person
-	object SPRITE_BLACK_HAIR_BOY_1, 4, 3, STAY, NONE, 3 ; person
-	object SPRITE_CABLE_CLUB_WOMAN, 11, 2, STAY, DOWN, 4 ; person
+	object SPRITE_COOLTRAINER_M, 4, 3, STAY, NONE, 3 ; person
+	object SPRITE_LINK_RECEPTIONIST, 11, 2, STAY, DOWN, 4 ; person
 
 	; warp-to
 	warp_to 3, 7, VIRIDIAN_POKECENTER_WIDTH
--- a/data/maps/objects/ViridianSchoolHouse.asm
+++ b/data/maps/objects/ViridianSchoolHouse.asm
@@ -9,7 +9,7 @@
 
 	db 2 ; objects
 	object SPRITE_BRUNETTE_GIRL, 3, 5, STAY, UP, 1 ; person
-	object SPRITE_LASS, 4, 1, STAY, DOWN, 2 ; person
+	object SPRITE_COOLTRAINER_F, 4, 1, STAY, DOWN, 2 ; person
 
 	; warp-to
 	warp_to 2, 7, VIRIDIAN_SCHOOL_HOUSE_WIDTH
--- a/data/maps/objects/WardensHouse.asm
+++ b/data/maps/objects/WardensHouse.asm
@@ -11,7 +11,7 @@
 
 	db 3 ; objects
 	object SPRITE_WARDEN, 2, 3, STAY, NONE, 1 ; person
-	object SPRITE_BALL, 8, 3, STAY, NONE, 2, RARE_CANDY
+	object SPRITE_POKE_BALL, 8, 3, STAY, NONE, 2, RARE_CANDY
 	object SPRITE_BOULDER, 8, 4, STAY, BOULDER_MOVEMENT_BYTE_2, 3 ; person
 
 	; warp-to
--- a/data/maps/sprite_sets.asm
+++ b/data/maps/sprite_sets.asm
@@ -37,154 +37,155 @@
 	db $02 ; ROUTE_24
 	db $02 ; ROUTE_25
 
+EAST_WEST   EQU 1
+NORTH_SOUTH EQU 2
+
 ; Format:
-; 00: determines whether the map is split East/West or North/South
-; $01 = East/West divide
-; $02 = North/South divide
+; 00: determines whether the map is split EAST_WEST or NORTH_SOUTH
 ; 01: coordinate of dividing line
 ; 02: sprite set ID if in the West or North side
 ; 03: sprite set ID if in the East or South side
 SplitMapSpriteSets:
-	db $02, $25, $02, $01 ; $f1
-	db $02, $32, $02, $03 ; $f2
-	db $01, $39, $04, $08 ; $f3
-	db $02, $15, $03, $08 ; $f4
-	db $01, $08, $0A, $08 ; $f5
-	db $01, $18, $09, $05 ; $f6
-	db $01, $22, $09, $0A ; $f7
-	db $01, $35, $01, $0A ; $f8
-	db $02, $21, $02, $07 ; $f9
-	db $02, $02, $07, $04 ; $fa
-	db $01, $11, $05, $07 ; $fb
-	db $01, $03, $07, $03 ; $fc
+	db NORTH_SOUTH, 37, $02, $01 ; $f1
+	db NORTH_SOUTH, 50, $02, $03 ; $f2
+	db EAST_WEST,   57, $04, $08 ; $f3
+	db NORTH_SOUTH, 21, $03, $08 ; $f4
+	db EAST_WEST,    8, $0A, $08 ; $f5
+	db EAST_WEST,   24, $09, $05 ; $f6
+	db EAST_WEST,   34, $09, $0A ; $f7
+	db EAST_WEST,   53, $01, $0A ; $f8
+	db NORTH_SOUTH, 33, $02, $07 ; $f9
+	db NORTH_SOUTH,  2, $07, $04 ; $fa
+	db EAST_WEST,   17, $05, $07 ; $fb
+	db EAST_WEST,    3, $07, $03 ; $fc
 
 SpriteSets:
 ; sprite set $01
 	db SPRITE_BLUE
-	db SPRITE_BUG_CATCHER
+	db SPRITE_YOUNGSTER
 	db SPRITE_GIRL
-	db SPRITE_FISHER2
-	db SPRITE_BLACK_HAIR_BOY_1
+	db SPRITE_FISHER
+	db SPRITE_COOLTRAINER_M
 	db SPRITE_GAMBLER
 	db SPRITE_SEEL
 	db SPRITE_OAK
 	db SPRITE_SWIMMER
-	db SPRITE_BALL
-	db SPRITE_LYING_OLD_MAN
+	db SPRITE_POKE_BALL
+	db SPRITE_GAMBLER_ASLEEP
 
 ; sprite set $02
-	db SPRITE_BUG_CATCHER
+	db SPRITE_YOUNGSTER
 	db SPRITE_ROCKET
-	db SPRITE_BLACK_HAIR_BOY_2
+	db SPRITE_SUPER_NERD
 	db SPRITE_HIKER
-	db SPRITE_SLOWBRO
+	db SPRITE_MONSTER
 	db SPRITE_BLUE
 	db SPRITE_GUARD
-	db SPRITE_LASS
-	db SPRITE_BLACK_HAIR_BOY_1
-	db SPRITE_BALL
-	db SPRITE_LYING_OLD_MAN_UNUSED_2
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_POKE_BALL
+	db SPRITE_UNUSED_GAMBLER_ASLEEP_2
 
 ; sprite set $03
 	db SPRITE_LITTLE_GIRL
 	db SPRITE_GIRL
-	db SPRITE_BLACK_HAIR_BOY_2
+	db SPRITE_SUPER_NERD
 	db SPRITE_HIKER
 	db SPRITE_GAMBLER
-	db SPRITE_SLOWBRO
-	db SPRITE_LASS
-	db SPRITE_BLACK_HAIR_BOY_1
+	db SPRITE_MONSTER
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_COOLTRAINER_M
 	db SPRITE_GUARD
-	db SPRITE_BALL
-	db SPRITE_LYING_OLD_MAN_UNUSED_2
+	db SPRITE_POKE_BALL
+	db SPRITE_UNUSED_GAMBLER_ASLEEP_2
 
 ; sprite set $04
-	db SPRITE_FOULARD_WOMAN
-	db SPRITE_BLACK_HAIR_BOY_2
-	db SPRITE_BUG_CATCHER
+	db SPRITE_BEAUTY
+	db SPRITE_SUPER_NERD
+	db SPRITE_YOUNGSTER
 	db SPRITE_GAMBLER
-	db SPRITE_SLOWBRO
+	db SPRITE_MONSTER
 	db SPRITE_GUARD
 	db SPRITE_SAILOR
-	db SPRITE_LASS
-	db SPRITE_BLACK_HAIR_BOY_1
-	db SPRITE_BALL
-	db SPRITE_LYING_OLD_MAN_UNUSED_2
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_POKE_BALL
+	db SPRITE_UNUSED_GAMBLER_ASLEEP_2
 
 ; sprite set $05
 	db SPRITE_LITTLE_GIRL
-	db SPRITE_YOUNG_BOY
+	db SPRITE_LITTLE_BOY
 	db SPRITE_GIRL
-	db SPRITE_FISHER2
-	db SPRITE_FAT_BALD_GUY
-	db SPRITE_OLD_PERSON
-	db SPRITE_SLOWBRO
+	db SPRITE_FISHER
+	db SPRITE_MIDDLE_AGED_MAN
+	db SPRITE_GRAMPS
+	db SPRITE_MONSTER
 	db SPRITE_GUARD
 	db SPRITE_ROCKET
-	db SPRITE_BALL
+	db SPRITE_POKE_BALL
 	db SPRITE_SNORLAX
 
 ; sprite set $06
-	db SPRITE_BUG_CATCHER
-	db SPRITE_GYM_HELPER
-	db SPRITE_SLOWBRO
+	db SPRITE_YOUNGSTER
+	db SPRITE_GYM_GUIDE
+	db SPRITE_MONSTER
 	db SPRITE_BLUE
-	db SPRITE_LASS
-	db SPRITE_BLACK_HAIR_BOY_1
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_COOLTRAINER_M
 	db SPRITE_SWIMMER
 	db SPRITE_GUARD
 	db SPRITE_GAMBLER
-	db SPRITE_BALL
-	db SPRITE_LYING_OLD_MAN_UNUSED_2
+	db SPRITE_POKE_BALL
+	db SPRITE_UNUSED_GAMBLER_ASLEEP_2
 
 ; sprite set $07
 	db SPRITE_ROCKET
-	db SPRITE_OAK_AIDE
-	db SPRITE_LAPRAS_GIVER
+	db SPRITE_SCIENTIST
+	db SPRITE_SILPH_WORKER
 	db SPRITE_ERIKA
 	db SPRITE_GENTLEMAN
 	db SPRITE_BIRD
 	db SPRITE_ROCKER
-	db SPRITE_BLACK_HAIR_BOY_1
-	db SPRITE_SLOWBRO
-	db SPRITE_BALL
-	db SPRITE_LYING_OLD_MAN_UNUSED_2
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_MONSTER
+	db SPRITE_POKE_BALL
+	db SPRITE_UNUSED_GAMBLER_ASLEEP_2
 
 ; sprite set $08
 	db SPRITE_BIKER
-	db SPRITE_BLACK_HAIR_BOY_2
-	db SPRITE_FAT_BALD_GUY
-	db SPRITE_LASS
-	db SPRITE_BLACK_HAIR_BOY_1
-	db SPRITE_FOULARD_WOMAN
-	db SPRITE_FISHER2
+	db SPRITE_SUPER_NERD
+	db SPRITE_MIDDLE_AGED_MAN
+	db SPRITE_COOLTRAINER_F
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_BEAUTY
+	db SPRITE_FISHER
 	db SPRITE_ROCKER
-	db SPRITE_SLOWBRO
-	db SPRITE_BALL
+	db SPRITE_MONSTER
+	db SPRITE_POKE_BALL
 	db SPRITE_SNORLAX
 
 ; sprite set $09
 	db SPRITE_BIKER
-	db SPRITE_BLACK_HAIR_BOY_1
-	db SPRITE_LAPRAS_GIVER
-	db SPRITE_FISHER2
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_SILPH_WORKER
+	db SPRITE_FISHER
 	db SPRITE_ROCKER
 	db SPRITE_HIKER
 	db SPRITE_GAMBLER
-	db SPRITE_FAT_BALD_GUY
-	db SPRITE_BLACK_HAIR_BOY_2
-	db SPRITE_BALL
+	db SPRITE_MIDDLE_AGED_MAN
+	db SPRITE_SUPER_NERD
+	db SPRITE_POKE_BALL
 	db SPRITE_SNORLAX
 
 ; sprite set $0a
 	db SPRITE_BIRD
-	db SPRITE_BLACK_HAIR_BOY_1
-	db SPRITE_CLEFAIRY
-	db SPRITE_FISHER2
+	db SPRITE_COOLTRAINER_M
+	db SPRITE_FAIRY
+	db SPRITE_FISHER
 	db SPRITE_GAMBLER
-	db SPRITE_SLOWBRO
+	db SPRITE_MONSTER
 	db SPRITE_SEEL
 	db SPRITE_SWIMMER
-	db SPRITE_BUG_CATCHER
-	db SPRITE_BALL
-	db SPRITE_OMANYTE
+	db SPRITE_YOUNGSTER
+	db SPRITE_POKE_BALL
+	db SPRITE_FOSSIL
--- a/data/moves/animation_special_effect_pointers.asm
+++ /dev/null
@@ -1,47 +1,0 @@
-special_effect: MACRO
-	db \1
-	dw \2
-ENDM
-
-SpecialEffectPointers:
-	; special effect id, effect routine address
-	special_effect SE_DARK_SCREEN_FLASH, AnimationFlashScreen ; $FE
-	special_effect SE_DARK_SCREEN_PALETTE, AnimationDarkScreenPalette ; $FD
-	special_effect SE_RESET_SCREEN_PALETTE, AnimationResetScreenPalette ; $FC
-	special_effect SE_SHAKE_SCREEN, AnimationShakeScreen ; $FB
-	special_effect SE_WATER_DROPLETS_EVERYWHERE, AnimationWaterDropletsEverywhere ; $FA
-	special_effect SE_DARKEN_MON_PALETTE, AnimationDarkenMonPalette ; $F9
-	special_effect SE_FLASH_SCREEN_LONG, AnimationFlashScreenLong ; $F8
-	special_effect SE_SLIDE_MON_UP, AnimationSlideMonUp ; $F7
-	special_effect SE_SLIDE_MON_DOWN, AnimationSlideMonDown ; $F6
-	special_effect SE_FLASH_MON_PIC, AnimationFlashMonPic ; $F5
-	special_effect SE_SLIDE_MON_OFF, AnimationSlideMonOff ; $F4
-	special_effect SE_BLINK_MON, AnimationBlinkMon ; $F3
-	special_effect SE_MOVE_MON_HORIZONTALLY, AnimationMoveMonHorizontally ; $F2
-	special_effect SE_RESET_MON_POSITION, AnimationResetMonPosition ; $F1
-	special_effect SE_LIGHT_SCREEN_PALETTE, AnimationLightScreenPalette ; $F0
-	special_effect SE_HIDE_MON_PIC, AnimationHideMonPic ; $EF
-	special_effect SE_SQUISH_MON_PIC, AnimationSquishMonPic ; $EE
-	special_effect SE_SHOOT_BALLS_UPWARD, AnimationShootBallsUpward ; $ED
-	special_effect SE_SHOOT_MANY_BALLS_UPWARD, AnimationShootManyBallsUpward ; $EC
-	special_effect SE_BOUNCE_UP_AND_DOWN, AnimationBoundUpAndDown ; $EB
-	special_effect SE_MINIMIZE_MON, AnimationMinimizeMon ; $EA
-	special_effect SE_SLIDE_MON_DOWN_AND_HIDE, AnimationSlideMonDownAndHide ; $E9
-	special_effect SE_TRANSFORM_MON, AnimationTransformMon ; $E8
-	special_effect SE_LEAVES_FALLING, AnimationLeavesFalling ; $E7
-	special_effect SE_PETALS_FALLING, AnimationPetalsFalling ; $E6
-	special_effect SE_SLIDE_MON_HALF_OFF, AnimationSlideMonHalfOff ; $E5
-	special_effect SE_SHAKE_ENEMY_HUD, AnimationShakeEnemyHUD ; $E4
-	special_effect SE_SHAKE_ENEMY_HUD_2, AnimationShakeEnemyHUD ; unused--same pointer as SE_SHAKE_ENEMY_HUD ($E4)
-	special_effect SE_SPIRAL_BALLS_INWARD, AnimationSpiralBallsInward ; $E2
-	special_effect SE_DELAY_ANIMATION_10, AnimationDelay10 ; $E1
-	special_effect SE_FLASH_ENEMY_MON_PIC, AnimationFlashEnemyMonPic ; unused--same as SE_FLASH_MON_PIC ($F5), but for the enemy mon
-	special_effect SE_HIDE_ENEMY_MON_PIC, AnimationHideEnemyMonPic ; $DF
-	special_effect SE_BLINK_ENEMY_MON, AnimationBlinkEnemyMon ; $DE
-	special_effect SE_SHOW_MON_PIC, AnimationShowMonPic ; $DD
-	special_effect SE_SHOW_ENEMY_MON_PIC, AnimationShowEnemyMonPic ; $DC
-	special_effect SE_SLIDE_ENEMY_MON_OFF, AnimationSlideEnemyMonOff ; $DB
-	special_effect SE_SHAKE_BACK_AND_FORTH, AnimationShakeBackAndForth ; $DA
-	special_effect SE_SUBSTITUTE_MON, AnimationSubstitute ; $D9
-	special_effect SE_WAVY_SCREEN, AnimationWavyScreen ; $D8
-	db -1 ; end
--- a/data/moves/animation_special_effects.asm
+++ /dev/null
@@ -1,32 +1,0 @@
-anim_special_effect: MACRO
-	db \1
-	dw \2
-ENDM
-
-AnimationIdSpecialEffects:
-	; animation id, effect routine address
-	anim_special_effect MEGA_PUNCH, AnimationFlashScreen
-	anim_special_effect GUILLOTINE, AnimationFlashScreen
-	anim_special_effect MEGA_KICK, AnimationFlashScreen
-	anim_special_effect HEADBUTT, AnimationFlashScreen
-	anim_special_effect TAIL_WHIP, TailWhipAnimationUnused
-	anim_special_effect GROWL, DoGrowlSpecialEffects
-	anim_special_effect DISABLE, AnimationFlashScreen
-	anim_special_effect BLIZZARD, DoBlizzardSpecialEffects
-	anim_special_effect BUBBLEBEAM, AnimationFlashScreen
-	anim_special_effect HYPER_BEAM, FlashScreenEveryFourFrameBlocks
-	anim_special_effect THUNDERBOLT, FlashScreenEveryEightFrameBlocks
-	anim_special_effect REFLECT, AnimationFlashScreen
-	anim_special_effect SELFDESTRUCT, DoExplodeSpecialEffects
-	anim_special_effect SPORE, AnimationFlashScreen
-	anim_special_effect EXPLOSION, DoExplodeSpecialEffects
-	anim_special_effect ROCK_SLIDE, DoRockSlideSpecialEffects
-	anim_special_effect TRADE_BALL_DROP_ANIM, TradeHidePokemon
-	anim_special_effect TRADE_BALL_SHAKE_ANIM, TradeShakePokeball
-	anim_special_effect TRADE_BALL_TILT_ANIM, TradeJumpPokeball
-	anim_special_effect TOSS_ANIM, DoBallTossSpecialEffects
-	anim_special_effect SHAKE_ANIM, DoBallShakeSpecialEffects
-	anim_special_effect POOF_ANIM, DoPoofSpecialEffects
-	anim_special_effect GREATTOSS_ANIM, DoBallTossSpecialEffects
-	anim_special_effect ULTRATOSS_ANIM, DoBallTossSpecialEffects
-	db -1 ; end
--- a/data/moves/animations.asm
+++ b/data/moves/animations.asm
@@ -203,3426 +203,1072 @@
 	dw ThrowBaitAnim
 	dw ZigZagScreenAnim
 
-; each animation is a list of subanimations and special effects
-; if first byte < $56
-;	db tileset_and_delay, sound_id, subanimation_id
-; if first byte >= $D8
-;	db special_effect_id, sound_id
-; $FF terminated
+; each animation is a list of subanimations
+; and/or special effects, terminated by -1
+
+;\1: sound_id
+;\2: special_effect_id or subanimation_id
+; if \2 is a subanimation_id:
+;\3: tileset_id
+;\4: delay
+battle_anim: MACRO
+	IF _NARG == 4
+		db (\3 << 6) | \4
+		db \1 - 1
+		db \2
+	ELSE
+		db \2
+		db \1 - 1
+	ENDC
+ENDM
+
 ZigZagScreenAnim:
-	db SE_WAVY_SCREEN, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_WAVY_SCREEN
+	db -1 ; end
 
 PoundAnim:
 StruggleAnim:
-	db $08, $00, $01
-	db $FF
+	battle_anim POUND, SUBANIM_01, 0, 8
+	db -1 ; end
 
 KarateChopAnim:
-	db $08, $01, $03
-	db $FF
+	battle_anim KARATE_CHOP, SUBANIM_03, 0, 8
+	db -1 ; end
 
 DoubleSlapAnim:
-	db $05, $02, $01
-	db $05, $02, $01
-	db $FF
+	battle_anim DOUBLESLAP, SUBANIM_01, 0, 5
+	battle_anim DOUBLESLAP, SUBANIM_01, 0, 5
+	db -1 ; end
 
 CometPunchAnim:
-	db $04, $03, $02
-	db $04, $03, $02
-	db $FF
+	battle_anim COMET_PUNCH, SUBANIM_02, 0, 4
+	battle_anim COMET_PUNCH, SUBANIM_02, 0, 4
+	db -1 ; end
 
 MegaPunchAnim:
-	db $46, $04, $04
-	db $FF
+	battle_anim MEGA_PUNCH, SUBANIM_04, 1, 6
+	db -1 ; end
 
 PayDayAnim:
-	db $08, $00, $01
-	db $04, $05, $52
-	db $FF
+	battle_anim POUND, SUBANIM_01, 0, 8
+	battle_anim PAY_DAY, SUBANIM_52, 0, 4
+	db -1 ; end
 
 FirePunchAnim:
-	db $06, $06, $02
-	db $46, $FF, $11
-	db $FF
+	battle_anim FIRE_PUNCH, SUBANIM_02, 0, 6
+	battle_anim NO_MOVE, SUBANIM_11, 1, 6
+	db -1 ; end
 
 IcePunchAnim:
-	db $06, $07, $02
-	db $10, $FF, $2F
-	db $FF
+	battle_anim ICE_PUNCH, SUBANIM_02, 0, 6
+	battle_anim NO_MOVE, SUBANIM_2F, 0, 16
+	db -1 ; end
 
 ThunderPunchAnim:
-	db $06, $08, $02
-	db SE_DARK_SCREEN_PALETTE, $FF
-	db $46, $FF, $2B
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim THUNDERPUNCH, SUBANIM_02, 0, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_2B, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 ScratchAnim:
-	db $06, $09, $0F
-	db $FF
+	battle_anim SCRATCH, SUBANIM_0F, 0, 6
+	db -1 ; end
 
 VicegripAnim:
-	db $08, $0A, $2A
-	db $FF
+	battle_anim VICEGRIP, SUBANIM_2A, 0, 8
+	db -1 ; end
 
 GuillotineAnim:
-	db $06, $0B, $2A
-	db $FF
+	battle_anim GUILLOTINE, SUBANIM_2A, 0, 6
+	db -1 ; end
 
 RazorWindAnim:
-	db $04, $0C, $16
-	db $FF
+	battle_anim RAZOR_WIND, SUBANIM_16, 0, 4
+	db -1 ; end
 
 SwordsDanceAnim:
-	db $46, $0D, $18
-	db $46, $0D, $18
-	db $46, $0D, $18
-	db $FF
+	battle_anim SWORDS_DANCE, SUBANIM_18, 1, 6
+	battle_anim SWORDS_DANCE, SUBANIM_18, 1, 6
+	battle_anim SWORDS_DANCE, SUBANIM_18, 1, 6
+	db -1 ; end
 
 CutAnim:
-	db SE_DARK_SCREEN_FLASH, $0E
-	db $04, $FF, $16
-	db $FF
+	battle_anim CUT, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SUBANIM_16, 0, 4
+	db -1 ; end
 
 GustAnim:
-	db $46, $0F, $10
-	db $06, $FF, $02
-	db $FF
+	battle_anim GUST, SUBANIM_10, 1, 6
+	battle_anim NO_MOVE, SUBANIM_02, 0, 6
+	db -1 ; end
 
 WingAttackAnim:
-	db $46, $10, $04
-	db $FF
+	battle_anim WING_ATTACK, SUBANIM_04, 1, 6
+	db -1 ; end
 
 WhirlwindAnim:
-	db $46, $11, $10
-	db SE_SLIDE_ENEMY_MON_OFF, $FF
-	db $FF
+	battle_anim WHIRLWIND, SUBANIM_10, 1, 6
+	battle_anim NO_MOVE, SE_SLIDE_ENEMY_MON_OFF
+	db -1 ; end
 
 FlyAnim:
-	db $46, $12, $04
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim FLY, SUBANIM_04, 1, 6
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 BindAnim:
-	db $04, $13, $23
-	db $04, $13, $23
-	db $FF
+	battle_anim BIND, SUBANIM_23, 0, 4
+	battle_anim BIND, SUBANIM_23, 0, 4
+	db -1 ; end
 
 SlamAnim:
-	db $06, $14, $02
-	db $FF
+	battle_anim SLAM, SUBANIM_02, 0, 6
+	db -1 ; end
 
 VineWhipAnim:
-	db $01, $15, $16
-	db $08, $FF, $01
-	db $FF
+	battle_anim VINE_WHIP, SUBANIM_16, 0, 1
+	battle_anim NO_MOVE, SUBANIM_01, 0, 8
+	db -1 ; end
 
 StompAnim:
-	db $48, $16, $05
-	db $FF
+	battle_anim STOMP, SUBANIM_05, 1, 8
+	db -1 ; end
 
 DoubleKickAnim:
-	db $08, $17, $01
-	db $08, $17, $01
-	db $FF
+	battle_anim DOUBLE_KICK, SUBANIM_01, 0, 8
+	battle_anim DOUBLE_KICK, SUBANIM_01, 0, 8
+	db -1 ; end
 
 MegaKickAnim:
-	db $46, $18, $04
-	db $FF
+	battle_anim MEGA_KICK, SUBANIM_04, 1, 6
+	db -1 ; end
 
 JumpKickAnim:
-	db $46, $19, $04
-	db $FF
+	battle_anim JUMP_KICK, SUBANIM_04, 1, 6
+	db -1 ; end
 
 RollingKickAnim:
-	db SE_DARK_SCREEN_FLASH, $1A
-	db $46, $FF, $04
-	db $FF
+	battle_anim ROLLING_KICK, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SUBANIM_04, 1, 6
+	db -1 ; end
 
 SandAttackAnim:
-	db $46, $1B, $28
-	db $FF
+	battle_anim SAND_ATTACK, SUBANIM_28, 1, 6
+	db -1 ; end
 
 HeatButtAnim:
-	db $46, $1C, $05
-	db $FF
+	battle_anim HEADBUTT, SUBANIM_05, 1, 6
+	db -1 ; end
 
 HornAttackAnim:
-	db $06, $1D, $45
-	db $46, $FF, $05
-	db $FF
+	battle_anim HORN_ATTACK, SUBANIM_45, 0, 6
+	battle_anim NO_MOVE, SUBANIM_05, 1, 6
+	db -1 ; end
 
 FuryAttackAnim:
-	db $02, $1E, $46
-	db $02, $FF, $46
-	db $FF
+	battle_anim FURY_ATTACK, SUBANIM_46, 0, 2
+	battle_anim NO_MOVE, SUBANIM_46, 0, 2
+	db -1 ; end
 
 HornDrillAnim:
-	db $42, $1F, $05
-	db $42, $FF, $05
-	db $42, $FF, $05
-	db $42, $FF, $05
-	db $42, $FF, $05
-	db $FF
+	battle_anim HORN_DRILL, SUBANIM_05, 1, 2
+	battle_anim NO_MOVE, SUBANIM_05, 1, 2
+	battle_anim NO_MOVE, SUBANIM_05, 1, 2
+	battle_anim NO_MOVE, SUBANIM_05, 1, 2
+	battle_anim NO_MOVE, SUBANIM_05, 1, 2
+	db -1 ; end
 
 TackleAnim:
-	db SE_MOVE_MON_HORIZONTALLY, $48
-	db SE_RESET_MON_POSITION, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_MOVE_MON_HORIZONTALLY
+	battle_anim NO_MOVE, SE_RESET_MON_POSITION
+	db -1 ; end
 
 BodySlamAnim:
-	db SE_MOVE_MON_HORIZONTALLY, $48
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_MON_POSITION, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_MOVE_MON_HORIZONTALLY
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_MON_POSITION
+	db -1 ; end
 
 WrapAnim:
-	db $04, $22, $23
-	db $04, $22, $23
-	db $04, $22, $23
-	db $FF
+	battle_anim WRAP, SUBANIM_23, 0, 4
+	battle_anim WRAP, SUBANIM_23, 0, 4
+	battle_anim WRAP, SUBANIM_23, 0, 4
+	db -1 ; end
 
 TakeDownAnim:
-	db SE_MOVE_MON_HORIZONTALLY, $48
-	db SE_DARK_SCREEN_FLASH, $23
-	db SE_RESET_MON_POSITION, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_MOVE_MON_HORIZONTALLY
+	battle_anim TAKE_DOWN, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_MON_POSITION
+	db -1 ; end
 
 ThrashAnim:
-	db $46, $24, $04
-	db $FF
+	battle_anim THRASH, SUBANIM_04, 1, 6
+	db -1 ; end
 
 DoubleEdgeAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $48
-	db $06, $FF, $2D
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db SE_MOVE_MON_HORIZONTALLY, $FF
-	db SE_DARK_SCREEN_FLASH, $25
-	db SE_RESET_MON_POSITION, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_2D, 0, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_MOVE_MON_HORIZONTALLY
+	battle_anim DOUBLE_EDGE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_MON_POSITION
+	db -1 ; end
 
 TailWhipAnim:
-	db SE_MOVE_MON_HORIZONTALLY, $84
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_RESET_MON_POSITION, $84
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_MOVE_MON_HORIZONTALLY, $84
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_RESET_MON_POSITION, $84
-	db $FF
+	battle_anim AMNESIA, SE_MOVE_MON_HORIZONTALLY
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim AMNESIA, SE_RESET_MON_POSITION
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim AMNESIA, SE_MOVE_MON_HORIZONTALLY
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim AMNESIA, SE_RESET_MON_POSITION
+	db -1 ; end
 
 PoisonStingAnim:
-	db $06, $27, $00
-	db $FF
+	battle_anim POISON_STING, SUBANIM_00, 0, 6
+	db -1 ; end
 
 TwineedleAnim:
-	db $05, $28, $01
-	db $05, $28, $01
-	db $FF
+	battle_anim TWINEEDLE, SUBANIM_01, 0, 5
+	battle_anim TWINEEDLE, SUBANIM_01, 0, 5
+	db -1 ; end
 
 PinMissileAnim:
-	db $03, $29, $01
-	db $FF
+	battle_anim PIN_MISSILE, SUBANIM_01, 0, 3
+	db -1 ; end
 
 LeerAnim:
-	db SE_DARK_SCREEN_PALETTE, $48
-	db SE_DARK_SCREEN_FLASH, $2A
-	db SE_DARK_SCREEN_FLASH, $2A
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_DARK_SCREEN_PALETTE
+	battle_anim LEER, SE_DARK_SCREEN_FLASH
+	battle_anim LEER, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 BiteAnim:
-	db $08, $2B, $02
-	db $FF
+	battle_anim BITE, SUBANIM_02, 0, 8
+	db -1 ; end
 
 GrowlAnim:
-	db $46, $2C, $12
-	db $FF
+	battle_anim GROWL, SUBANIM_12, 1, 6
+	db -1 ; end
 
 RoarAnim:
-	db $46, $2D, $15
-	db $46, $2D, $15
-	db $46, $2D, $15
-	db $FF
+	battle_anim ROAR, SUBANIM_15, 1, 6
+	battle_anim ROAR, SUBANIM_15, 1, 6
+	battle_anim ROAR, SUBANIM_15, 1, 6
+	db -1 ; end
 
 SingAnim:
-	db $46, $2E, $12
-	db $50, $FF, $40
-	db $50, $FF, $40
-	db $FF
+	battle_anim SING, SUBANIM_12, 1, 6
+	battle_anim NO_MOVE, SUBANIM_40, 1, 16
+	battle_anim NO_MOVE, SUBANIM_40, 1, 16
+	db -1 ; end
 
 SupersonicAnim:
-	db $06, $2F, $31
-	db $FF
+	battle_anim SUPERSONIC, SUBANIM_31, 0, 6
+	db -1 ; end
 
 SonicBoomAnim:
-	db $46, $2D, $15
-	db $46, $2D, $15
-	db $46, $0F, $10
-	db $46, $FF, $05
-	db $FF
+	battle_anim ROAR, SUBANIM_15, 1, 6
+	battle_anim ROAR, SUBANIM_15, 1, 6
+	battle_anim GUST, SUBANIM_10, 1, 6
+	battle_anim NO_MOVE, SUBANIM_05, 1, 6
+	db -1 ; end
 
 DisableAnim:
-	db SE_DARK_SCREEN_PALETTE, $48
-	db SE_DARK_SCREEN_FLASH, $2A
-	db SE_DARK_SCREEN_FLASH, $2A
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_DARK_SCREEN_PALETTE
+	battle_anim LEER, SE_DARK_SCREEN_FLASH
+	battle_anim LEER, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 AcidAnim:
-	db $46, $32, $13
-	db $46, $32, $14
-	db $FF
+	battle_anim ACID, SUBANIM_13, 1, 6
+	battle_anim ACID, SUBANIM_14, 1, 6
+	db -1 ; end
 
 EmberAnim:
-	db $46, $33, $11
-	db $FF
+	battle_anim EMBER, SUBANIM_11, 1, 6
+	db -1 ; end
 
 FlamethrowerAnim:
-	db $46, $34, $1F
-	db $46, $34, $0C
-	db $46, $34, $0D
-	db $FF
+	battle_anim FLAMETHROWER, SUBANIM_1F, 1, 6
+	battle_anim FLAMETHROWER, SUBANIM_0C, 1, 6
+	battle_anim FLAMETHROWER, SUBANIM_0D, 1, 6
+	db -1 ; end
 
 MistAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db SE_WATER_DROPLETS_EVERYWHERE, $38
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim SURF, SE_WATER_DROPLETS_EVERYWHERE
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 WaterGunAnim:
-	db $06, $36, $2C
-	db $FF
+	battle_anim WATER_GUN, SUBANIM_2C, 0, 6
+	db -1 ; end
 
 HydroPumpAnim:
-	db $06, $37, $1A
-	db $06, $37, $1A
-	db $FF
+	battle_anim HYDRO_PUMP, SUBANIM_1A, 0, 6
+	battle_anim HYDRO_PUMP, SUBANIM_1A, 0, 6
+	db -1 ; end
 
 SurfAnim:
-	db SE_WATER_DROPLETS_EVERYWHERE, $38
-	db $06, $37, $1A
-	db $FF
+	battle_anim SURF, SE_WATER_DROPLETS_EVERYWHERE
+	battle_anim HYDRO_PUMP, SUBANIM_1A, 0, 6
+	db -1 ; end
 
 IceBeamAnim:
-	db $03, $39, $2E
-	db $10, $FF, $2F
-	db $FF
+	battle_anim ICE_BEAM, SUBANIM_2E, 0, 3
+	battle_anim NO_MOVE, SUBANIM_2F, 0, 16
+	db -1 ; end
 
 BlizzardAnim:
-	db $04, $3A, $38
-	db $04, $37, $38
-	db $FF
+	battle_anim BLIZZARD, SUBANIM_38, 0, 4
+	battle_anim HYDRO_PUMP, SUBANIM_38, 0, 4
+	db -1 ; end
 
 PsyBeamAnim:
-	db $03, $3B, $2E
-	db SE_FLASH_SCREEN_LONG, $FF
-	db $FF
+	battle_anim PSYBEAM, SUBANIM_2E, 0, 3
+	battle_anim NO_MOVE, SE_FLASH_SCREEN_LONG
+	db -1 ; end
 
 BubbleBeamAnim:
-	db $12, $3C, $35
-	db $FF
+	battle_anim BUBBLEBEAM, SUBANIM_35, 0, 18
+	db -1 ; end
 
 AuroraBeamAnim:
-	db $03, $3D, $2E
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db $FF
+	battle_anim AURORA_BEAM, SUBANIM_2E, 0, 3
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	db -1 ; end
 
 HyperBeamAnim:
-	db SE_DARK_SCREEN_PALETTE, $48
-	db SE_SPIRAL_BALLS_INWARD, $FF
-	db $02, $3E, $2E
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_DARK_SCREEN_FLASH, $FF
-	db $46, $04, $04
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_DARK_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
+	battle_anim HYPER_BEAM, SUBANIM_2E, 0, 2
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim MEGA_PUNCH, SUBANIM_04, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 PeckAnim:
-	db $08, $3F, $01
-	db $FF
+	battle_anim PECK, SUBANIM_01, 0, 8
+	db -1 ; end
 
 DrillPeckAnim:
-	db $46, $40, $04
-	db $FF
+	battle_anim DRILL_PECK, SUBANIM_04, 1, 6
+	db -1 ; end
 
 SubmissionAnim:
-	db SE_SLIDE_MON_OFF, $41
-	db $06, $FF, $01
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim SUBMISSION, SE_SLIDE_MON_OFF
+	battle_anim NO_MOVE, SUBANIM_01, 0, 6
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 LowKickAnim:
-	db SE_SLIDE_MON_OFF, $42
-	db $46, $FF, $04
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim LOW_KICK, SE_SLIDE_MON_OFF
+	battle_anim NO_MOVE, SUBANIM_04, 1, 6
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 CounterAnim:
-	db SE_SLIDE_MON_OFF, $43
-	db $46, $FF, $04
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim COUNTER, SE_SLIDE_MON_OFF
+	battle_anim NO_MOVE, SUBANIM_04, 1, 6
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 SeismicTossAnim:
-	db SE_BLINK_ENEMY_MON, $FF
-	db $41, $8B, $4E
-	db SE_HIDE_ENEMY_MON_PIC, $FF
-	db SE_SLIDE_MON_OFF, $FF
-	db $42, $44, $4F
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_SHOW_MON_PIC, $FF
-	db $41, $44, $50
-	db SE_SHOW_ENEMY_MON_PIC, $FF
-	db SE_SHAKE_SCREEN, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_BLINK_ENEMY_MON
+	battle_anim BARRAGE, SUBANIM_4E, 1, 1
+	battle_anim NO_MOVE, SE_HIDE_ENEMY_MON_PIC
+	battle_anim NO_MOVE, SE_SLIDE_MON_OFF
+	battle_anim SEISMIC_TOSS, SUBANIM_4F, 1, 2
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	battle_anim SEISMIC_TOSS, SUBANIM_50, 1, 1
+	battle_anim NO_MOVE, SE_SHOW_ENEMY_MON_PIC
+	battle_anim NO_MOVE, SE_SHAKE_SCREEN
+	db -1 ; end
 
 StrengthAnim:
-	db SE_MOVE_MON_HORIZONTALLY, $48
-	db SE_RESET_MON_POSITION, $FF
-	db $46, $06, $04
-	db $FF
+	battle_anim LEECH_SEED, SE_MOVE_MON_HORIZONTALLY
+	battle_anim NO_MOVE, SE_RESET_MON_POSITION
+	battle_anim FIRE_PUNCH, SUBANIM_04, 1, 6
+	db -1 ; end
 
 AbsorbAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $46
-	db $06, $FF, $21
-	db $06, $FF, $22
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim ABSORB, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_21, 0, 6
+	battle_anim NO_MOVE, SUBANIM_22, 0, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 MegaDrainAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $47
-	db SE_DARK_SCREEN_FLASH, $FF
-	db $06, $FF, $21
-	db $06, $FF, $22
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim MEGA_DRAIN, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SUBANIM_21, 0, 6
+	battle_anim NO_MOVE, SUBANIM_22, 0, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 LeechSeedAnim:
-	db $46, $48, $1B
-	db $55, $4D, $1C
-	db $FF
+	battle_anim LEECH_SEED, SUBANIM_1B, 1, 6
+	battle_anim STUN_SPORE, SUBANIM_1C, 1, 21
+	db -1 ; end
 
 GrowthAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $49
-	db SE_SPIRAL_BALLS_INWARD, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim GROWTH, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 RazorLeafAnim:
-	db SE_LEAVES_FALLING, $4A
-	db $41, $80, $44
-	db $01, $0C, $16
-	db $FF
+	battle_anim RAZOR_LEAF, SE_LEAVES_FALLING
+	battle_anim SWIFT, SUBANIM_44, 1, 1
+	battle_anim RAZOR_WIND, SUBANIM_16, 0, 1
+	db -1 ; end
 
 SolarBeamAnim:
-	db $06, $4B, $2E
-	db $06, $FF, $01
-	db $FF
+	battle_anim SOLARBEAM, SUBANIM_2E, 0, 6
+	battle_anim NO_MOVE, SUBANIM_01, 0, 6
+	db -1 ; end
 
 PoisonPowderAnim:
-	db $06, $4C, $36
-	db $FF
+	battle_anim POISONPOWDER, SUBANIM_36, 0, 6
+	db -1 ; end
 
 StunSporeAnim:
-	db $06, $4D, $36
-	db $FF
+	battle_anim STUN_SPORE, SUBANIM_36, 0, 6
+	db -1 ; end
 
 SleepPowderAnim:
-	db $06, $4E, $36
-	db $FF
+	battle_anim SLEEP_POWDER, SUBANIM_36, 0, 6
+	db -1 ; end
 
 PedalDanceAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $4F
-	db SE_PETALS_FALLING, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim PETAL_DANCE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_PETALS_FALLING
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 StringShotAnim:
-	db $08, $50, $37
-	db $FF
+	battle_anim STRING_SHOT, SUBANIM_37, 0, 8
+	db -1 ; end
 
 DragonRageAnim:
-	db $46, $51, $1F
-	db $46, $FF, $0C
-	db $46, $FF, $0D
-	db $46, $FF, $0E
-	db $FF
+	battle_anim DRAGON_RAGE, SUBANIM_1F, 1, 6
+	battle_anim NO_MOVE, SUBANIM_0C, 1, 6
+	battle_anim NO_MOVE, SUBANIM_0D, 1, 6
+	battle_anim NO_MOVE, SUBANIM_0E, 1, 6
+	db -1 ; end
 
 FireSpinAnim:
-	db $46, $52, $0C
-	db $46, $FF, $0D
-	db $46, $FF, $0E
-	db $FF
+	battle_anim FIRE_SPIN, SUBANIM_0C, 1, 6
+	battle_anim NO_MOVE, SUBANIM_0D, 1, 6
+	battle_anim NO_MOVE, SUBANIM_0E, 1, 6
+	db -1 ; end
 
 ThunderShockAnim:
-	db $42, $53, $29
-	db $FF
+	battle_anim THUNDERSHOCK, SUBANIM_29, 1, 2
+	db -1 ; end
 
 ThunderBoltAnim:
-	db $41, $54, $29
-	db $41, $54, $29
-	db $FF
+	battle_anim THUNDERBOLT, SUBANIM_29, 1, 1
+	battle_anim THUNDERBOLT, SUBANIM_29, 1, 1
+	db -1 ; end
 
 ThunderWaveAnim:
-	db $42, $55, $29
-	db $02, $FF, $23
-	db $04, $FF, $23
-	db $FF
+	battle_anim THUNDER_WAVE, SUBANIM_29, 1, 2
+	battle_anim NO_MOVE, SUBANIM_23, 0, 2
+	battle_anim NO_MOVE, SUBANIM_23, 0, 4
+	db -1 ; end
 
 ThunderAnim:
-	db SE_DARK_SCREEN_PALETTE, $56
-	db SE_DARK_SCREEN_FLASH, $FF
-	db $46, $FF, $2B
-	db SE_DARK_SCREEN_FLASH, $FF
-	db $42, $54, $29
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim THUNDER, SE_DARK_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SUBANIM_2B, 1, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim THUNDERBOLT, SUBANIM_29, 1, 2
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 RockThrowAnim:
-	db $04, $57, $30
-	db $FF
+	battle_anim ROCK_THROW, SUBANIM_30, 0, 4
+	db -1 ; end
 
 EarthquakeAnim:
-	db SE_SHAKE_SCREEN, $58
-	db SE_SHAKE_SCREEN, $58
-	db $FF
+	battle_anim EARTHQUAKE, SE_SHAKE_SCREEN
+	battle_anim EARTHQUAKE, SE_SHAKE_SCREEN
+	db -1 ; end
 
 FissureAnim:
-	db SE_DARK_SCREEN_FLASH, $59
-	db SE_SHAKE_SCREEN, $FF
-	db SE_DARK_SCREEN_FLASH, $59
-	db SE_SHAKE_SCREEN, $FF
-	db $FF
+	battle_anim FISSURE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_SHAKE_SCREEN
+	battle_anim FISSURE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_SHAKE_SCREEN
+	db -1 ; end
 
 DigAnim:
-	db $46, $5A, $04
-	db SE_SLIDE_MON_UP, $FF
-	db $FF
+	battle_anim DIG, SUBANIM_04, 1, 6
+	battle_anim NO_MOVE, SE_SLIDE_MON_UP
+	db -1 ; end
 
 ToxicAnim:
-	db SE_WATER_DROPLETS_EVERYWHERE, $38
-	db $46, $5B, $14
-	db $FF
+	battle_anim SURF, SE_WATER_DROPLETS_EVERYWHERE
+	battle_anim TOXIC, SUBANIM_14, 1, 6
+	db -1 ; end
 
 ConfusionAnim:
-	db SE_FLASH_SCREEN_LONG, $5C
-	db $FF
+	battle_anim CONFUSION, SE_FLASH_SCREEN_LONG
+	db -1 ; end
 
 PsychicAnim:
-	db SE_FLASH_SCREEN_LONG, $5D
-	db SE_WAVY_SCREEN, $FF
-	db $FF
+	battle_anim PSYCHIC_M, SE_FLASH_SCREEN_LONG
+	battle_anim NO_MOVE, SE_WAVY_SCREEN
+	db -1 ; end
 
 HypnosisAnim:
-	db SE_FLASH_SCREEN_LONG, $5E
-	db $FF
+	battle_anim HYPNOSIS, SE_FLASH_SCREEN_LONG
+	db -1 ; end
 
 MeditateAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $5F
-	db $46, $FF, $43
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim MEDITATE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_43, 1, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 AgilityAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $60
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim AGILITY, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 QuickAttackAnim:
-	db SE_SLIDE_MON_OFF, $61
-	db $46, $FF, $04
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim QUICK_ATTACK, SE_SLIDE_MON_OFF
+	battle_anim NO_MOVE, SUBANIM_04, 1, 6
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 RageAnim:
-	db $06, $62, $01
-	db $FF
+	battle_anim RAGE, SUBANIM_01, 0, 6
+	db -1 ; end
 
 TeleportAnim:
-	db SE_SQUISH_MON_PIC, $63
-	db SE_SHOOT_BALLS_UPWARD, $FF
-	db $FF
+	battle_anim TELEPORT, SE_SQUISH_MON_PIC
+	battle_anim NO_MOVE, SE_SHOOT_BALLS_UPWARD
+	db -1 ; end
 
 NightShadeAnim:
-	db SE_FLASH_SCREEN_LONG, $5C
-	db SE_WAVY_SCREEN, $FF
-	db $FF
+	battle_anim CONFUSION, SE_FLASH_SCREEN_LONG
+	battle_anim NO_MOVE, SE_WAVY_SCREEN
+	db -1 ; end
 
 MimicAnim:
-	db $46, $65, $21
-	db $46, $65, $22
-	db $FF
+	battle_anim MIMIC, SUBANIM_21, 1, 6
+	battle_anim MIMIC, SUBANIM_22, 1, 6
+	db -1 ; end
 
 ScreechAnim:
-	db $46, $66, $12
-	db $FF
+	battle_anim SCREECH, SUBANIM_12, 1, 6
+	db -1 ; end
 
 DoubleTeamAnim:
-	db SE_DARK_SCREEN_PALETTE, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db SE_SHAKE_BACK_AND_FORTH, $67
-	db SE_SHOW_MON_PIC, $FF
-	db $46, $6F, $33
-	db $FF
+	battle_anim NO_MOVE, SE_DARK_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	battle_anim DOUBLE_TEAM, SE_SHAKE_BACK_AND_FORTH
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	battle_anim BARRIER, SUBANIM_33, 1, 6
+	db -1 ; end
 
 RecoverAnim:
-	db SE_BLINK_MON, $68
-	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db SE_SPIRAL_BALLS_INWARD, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim RECOVER, SE_BLINK_MON
+	battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 HardenAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $69
-	db $46, $FF, $43
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim HARDEN, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_43, 1, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 MinimizeAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $6A
-	db SE_SPIRAL_BALLS_INWARD, $FF
-	db SE_MINIMIZE_MON, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim MINIMIZE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
+	battle_anim NO_MOVE, SE_MINIMIZE_MON
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 SmokeScreenAnim:
-	db $46, $6B, $28
-	db $04, $FF, $0A
-	db SE_DARKEN_MON_PALETTE, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DARK_SCREEN_PALETTE, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_DARKEN_MON_PALETTE, $FF
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim SMOKESCREEN, SUBANIM_28, 1, 6
+	battle_anim NO_MOVE, SUBANIM_0A, 0, 4
+	battle_anim NO_MOVE, SE_DARKEN_MON_PALETTE
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DARK_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_DARKEN_MON_PALETTE
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 ConfuseRayAnim:
-	db SE_DARK_SCREEN_PALETTE, $6C
-	db $46, $FF, $3E
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim CONFUSE_RAY, SE_DARK_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_3E, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 WithdrawAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $6E
-	db SE_SLIDE_MON_DOWN, $FF
-	db $06, $FF, $51
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim DEFENSE_CURL, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SLIDE_MON_DOWN
+	battle_anim NO_MOVE, SUBANIM_51, 0, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 DefenseCurlAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $6E
-	db $06, $FF, $43
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim DEFENSE_CURL, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_43, 0, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 BarrierAnim:
-	db $46, $6F, $33
-	db $46, $6F, $33
-	db $FF
+	battle_anim BARRIER, SUBANIM_33, 1, 6
+	battle_anim BARRIER, SUBANIM_33, 1, 6
+	db -1 ; end
 
 LightScreenAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db $46, $70, $33
-	db $46, $70, $33
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim LIGHT_SCREEN, SUBANIM_33, 1, 6
+	battle_anim LIGHT_SCREEN, SUBANIM_33, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 HazeAnim:
-	db SE_DARKEN_MON_PALETTE, $FF
-	db SE_WATER_DROPLETS_EVERYWHERE, $38
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_DARKEN_MON_PALETTE
+	battle_anim SURF, SE_WATER_DROPLETS_EVERYWHERE
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 ReflectAnim:
-	db SE_DARK_SCREEN_PALETTE, $FF
-	db $46, $72, $33
-	db $46, $72, $33
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_DARK_SCREEN_PALETTE
+	battle_anim REFLECT, SUBANIM_33, 1, 6
+	battle_anim REFLECT, SUBANIM_33, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 FocusEnergyAnim:
-	db SE_SPIRAL_BALLS_INWARD, $73
-	db $FF
+	battle_anim FOCUS_ENERGY, SE_SPIRAL_BALLS_INWARD
+	db -1 ; end
 
 BideAnim:
-	db $46, $74, $04
-	db $FF
+	battle_anim BIDE, SUBANIM_04, 1, 6
+	db -1 ; end
 
 MetronomeAnim:
-	db SE_MOVE_MON_HORIZONTALLY, $84
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_RESET_MON_POSITION, $84
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_MOVE_MON_HORIZONTALLY, $84
-	db SE_DELAY_ANIMATION_10, $FF
-	db SE_RESET_MON_POSITION, $84
-	db $FF
+	battle_anim AMNESIA, SE_MOVE_MON_HORIZONTALLY
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim AMNESIA, SE_RESET_MON_POSITION
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim AMNESIA, SE_MOVE_MON_HORIZONTALLY
+	battle_anim NO_MOVE, SE_DELAY_ANIMATION_10
+	battle_anim AMNESIA, SE_RESET_MON_POSITION
+	db -1 ; end
 
 MirrorMoveAnim:
-	db $08, $76, $01
-	db $FF
+	battle_anim MIRROR_MOVE, SUBANIM_01, 0, 8
+	db -1 ; end
 
 SelfdestructAnim:
-	db $43, $77, $34
-	db $FF
+	battle_anim SELFDESTRUCT, SUBANIM_34, 1, 3
+	db -1 ; end
 
 EggBombAnim:
-	db $44, $78, $41
-	db $44, $78, $42
-	db $FF
+	battle_anim EGG_BOMB, SUBANIM_41, 1, 4
+	battle_anim EGG_BOMB, SUBANIM_42, 1, 4
+	db -1 ; end
 
 LickAnim:
-	db $46, $7B, $14
-	db $FF
+	battle_anim SLUDGE, SUBANIM_14, 1, 6
+	db -1 ; end
 
 SmogAnim:
-	db SE_DARKEN_MON_PALETTE, $48
-	db $46, $7A, $19
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_DARKEN_MON_PALETTE
+	battle_anim SMOG, SUBANIM_19, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 SludgeAnim:
-	db $46, $7B, $13
-	db $46, $7B, $14
-	db $FF
+	battle_anim SLUDGE, SUBANIM_13, 1, 6
+	battle_anim SLUDGE, SUBANIM_14, 1, 6
+	db -1 ; end
 
 BoneClubAnim:
-	db $08, $7C, $02
-	db $FF
+	battle_anim BONE_CLUB, SUBANIM_02, 0, 8
+	db -1 ; end
 
 FireBlastAnim:
-	db $46, $7D, $1F
-	db $46, $FF, $20
-	db $46, $FF, $20
-	db $46, $FF, $0C
-	db $46, $FF, $0D
-	db $FF
+	battle_anim FIRE_BLAST, SUBANIM_1F, 1, 6
+	battle_anim NO_MOVE, SUBANIM_20, 1, 6
+	battle_anim NO_MOVE, SUBANIM_20, 1, 6
+	battle_anim NO_MOVE, SUBANIM_0C, 1, 6
+	battle_anim NO_MOVE, SUBANIM_0D, 1, 6
+	db -1 ; end
 
 WaterfallAnim:
-	db SE_SLIDE_MON_DOWN, $48
-	db $06, $37, $1A
-	db $08, $FF, $02
-	db SE_SLIDE_MON_UP, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_SLIDE_MON_DOWN
+	battle_anim HYDRO_PUMP, SUBANIM_1A, 0, 6
+	battle_anim NO_MOVE, SUBANIM_02, 0, 8
+	battle_anim NO_MOVE, SE_SLIDE_MON_UP
+	db -1 ; end
 
 ClampAnim:
-	db $08, $7F, $2A
-	db $06, $83, $23
-	db $06, $83, $23
-	db $FF
+	battle_anim CLAMP, SUBANIM_2A, 0, 8
+	battle_anim CONSTRICT, SUBANIM_23, 0, 6
+	battle_anim CONSTRICT, SUBANIM_23, 0, 6
+	db -1 ; end
 
 SwiftAnim:
-	db $43, $80, $3F
-	db $FF
+	battle_anim SWIFT, SUBANIM_3F, 1, 3
+	db -1 ; end
 
 SkullBashAnim:
-	db $46, $81, $05
-	db $FF
+	battle_anim SKULL_BASH, SUBANIM_05, 1, 6
+	db -1 ; end
 
 SpikeCannonAnim:
-	db $44, $82, $04
-	db $FF
+	battle_anim SPIKE_CANNON, SUBANIM_04, 1, 4
+	db -1 ; end
 
 ConstrictAnim:
-	db $06, $83, $23
-	db $06, $83, $23
-	db $06, $83, $23
-	db $FF
+	battle_anim CONSTRICT, SUBANIM_23, 0, 6
+	battle_anim CONSTRICT, SUBANIM_23, 0, 6
+	battle_anim CONSTRICT, SUBANIM_23, 0, 6
+	db -1 ; end
 
 AmnesiaAnim:
-	db $08, $84, $25
-	db $08, $84, $25
-	db $FF
+	battle_anim AMNESIA, SUBANIM_25, 0, 8
+	battle_anim AMNESIA, SUBANIM_25, 0, 8
+	db -1 ; end
 
 KinesisAnim:
-	db $08, $85, $01
-	db $FF
+	battle_anim KINESIS, SUBANIM_01, 0, 8
+	db -1 ; end
 
 SoftboiledAnim:
-	db SE_SLIDE_MON_HALF_OFF, $48
-	db $08, $86, $4C
-	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db SE_SPIRAL_BALLS_INWARD, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_SLIDE_MON_HALF_OFF
+	battle_anim SOFTBOILED, SUBANIM_4C, 0, 8
+	battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 HiJumpKickAnim:
-	db $46, $87, $04
-	db $FF
+	battle_anim HI_JUMP_KICK, SUBANIM_04, 1, 6
+	db -1 ; end
 
 GlareAnim:
-	db SE_DARK_SCREEN_PALETTE, $48
-	db SE_DARK_SCREEN_FLASH, $88
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_DARK_SCREEN_PALETTE
+	battle_anim GLARE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 DreamEaterAnim:
-	db SE_FLASH_SCREEN_LONG, $89
-	db SE_DARK_SCREEN_PALETTE, $89
-	db $08, $89, $02
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim DREAM_EATER, SE_FLASH_SCREEN_LONG
+	battle_anim DREAM_EATER, SE_DARK_SCREEN_PALETTE
+	battle_anim DREAM_EATER, SUBANIM_02, 0, 8
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 PoisonGasAnim:
-	db $46, $8A, $19
-	db $FF
+	battle_anim POISON_GAS, SUBANIM_19, 1, 6
+	db -1 ; end
 
 BarrageAnim:
-	db $43, $8B, $41
-	db $05, $FF, $55
-	db $FF
+	battle_anim BARRAGE, SUBANIM_41, 1, 3
+	battle_anim NO_MOVE, SUBANIM_55, 0, 5
+	db -1 ; end
 
 LeechLifeAnim:
-	db $08, $8C, $02
-	db SE_DARK_SCREEN_FLASH, $FF
-	db $06, $FF, $21
-	db $06, $FF, $22
-	db SE_DARK_SCREEN_FLASH, $FF
-	db $FF
+	battle_anim LEECH_LIFE, SUBANIM_02, 0, 8
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SUBANIM_21, 0, 6
+	battle_anim NO_MOVE, SUBANIM_22, 0, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	db -1 ; end
 
 LovelyKissAnim:
-	db $06, $8D, $12
-	db $FF
+	battle_anim LOVELY_KISS, SUBANIM_12, 0, 6
+	db -1 ; end
 
 SkyAttackAnim:
-	db SE_SQUISH_MON_PIC, $8E
-	db SE_SHOOT_BALLS_UPWARD, $FF
-	db $46, $87, $04
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim SKY_ATTACK, SE_SQUISH_MON_PIC
+	battle_anim NO_MOVE, SE_SHOOT_BALLS_UPWARD
+	battle_anim HI_JUMP_KICK, SUBANIM_04, 1, 6
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 TransformAnim:
-	db $46, $8F, $21
-	db $44, $8F, $22
-	db $08, $FF, $47
-	db SE_TRANSFORM_MON, $FF
-	db $FF
+	battle_anim TRANSFORM, SUBANIM_21, 1, 6
+	battle_anim TRANSFORM, SUBANIM_22, 1, 4
+	battle_anim NO_MOVE, SUBANIM_47, 0, 8
+	battle_anim NO_MOVE, SE_TRANSFORM_MON
+	db -1 ; end
 
 BubbleAnim:
-	db $16, $90, $35
-	db $FF
+	battle_anim BUBBLE, SUBANIM_35, 0, 22
+	db -1 ; end
 
 DizzyPunchAnim:
-	db $06, $91, $17
-	db $06, $91, $17
-	db $06, $91, $17
-	db $06, $02, $02
-	db $FF
+	battle_anim DIZZY_PUNCH, SUBANIM_17, 0, 6
+	battle_anim DIZZY_PUNCH, SUBANIM_17, 0, 6
+	battle_anim DIZZY_PUNCH, SUBANIM_17, 0, 6
+	battle_anim DOUBLESLAP, SUBANIM_02, 0, 6
+	db -1 ; end
 
 SporeAnim:
-	db $06, $92, $36
-	db $FF
+	battle_anim SPORE, SUBANIM_36, 0, 6
+	db -1 ; end
 
 FlashAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $48
-	db SE_DARK_SCREEN_FLASH, $88
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_LIGHT_SCREEN_PALETTE
+	battle_anim GLARE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 PsywaveAnim:
-	db $06, $2F, $31
-	db SE_WAVY_SCREEN, $5C
-	db $FF
+	battle_anim SUPERSONIC, SUBANIM_31, 0, 6
+	battle_anim CONFUSION, SE_WAVY_SCREEN
+	db -1 ; end
 
 SplashAnim:
-	db SE_BOUNCE_UP_AND_DOWN, $95
-	db $FF
+	battle_anim SPLASH, SE_BOUNCE_UP_AND_DOWN
+	db -1 ; end
 
 AcidArmorAnim:
-	db SE_SLIDE_MON_DOWN_AND_HIDE, $96
-	db $FF
+	battle_anim ACID_ARMOR, SE_SLIDE_MON_DOWN_AND_HIDE
+	db -1 ; end
 
 CrabHammerAnim:
-	db $46, $97, $05
-	db $06, $FF, $2A
-	db $FF
+	battle_anim CRABHAMMER, SUBANIM_05, 1, 6
+	battle_anim NO_MOVE, SUBANIM_2A, 0, 6
+	db -1 ; end
 
 ExplosionAnim:
-	db $43, $98, $34
-	db $FF
+	battle_anim EXPLOSION, SUBANIM_34, 1, 3
+	db -1 ; end
 
 FurySwipesAnim:
-	db $04, $99, $0F
-	db $FF
+	battle_anim FURY_SWIPES, SUBANIM_0F, 0, 4
+	db -1 ; end
 
 BonemerangAnim:
-	db $06, $9A, $02
-	db $FF
+	battle_anim BONEMERANG, SUBANIM_02, 0, 6
+	db -1 ; end
 
 RestAnim:
-	db $10, $9B, $3A
-	db $10, $9B, $3A
-	db $FF
+	battle_anim REST, SUBANIM_3A, 0, 16
+	battle_anim REST, SUBANIM_3A, 0, 16
+	db -1 ; end
 
 RockSlideAnim:
-	db $04, $9C, $1D
-	db $03, $9C, $1E
-	db $46, $9D, $04
-	db $FF
+	battle_anim ROCK_SLIDE, SUBANIM_1D, 0, 4
+	battle_anim ROCK_SLIDE, SUBANIM_1E, 0, 3
+	battle_anim HYPER_FANG, SUBANIM_04, 1, 6
+	db -1 ; end
 
 HyperFangAnim:
-	db $06, $9D, $02
-	db $FF
+	battle_anim HYPER_FANG, SUBANIM_02, 0, 6
+	db -1 ; end
 
 SharpenAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $9E
-	db $46, $FF, $43
-	db SE_DARK_SCREEN_FLASH, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim SHARPEN, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_43, 1, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 ConversionAnim:
-	db SE_DARK_SCREEN_FLASH, $9F
-	db $46, $FF, $21
-	db $46, $FF, $22
-	db SE_DARK_SCREEN_FLASH, $FF
-	db $FF
+	battle_anim CONVERSION, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SUBANIM_21, 1, 6
+	battle_anim NO_MOVE, SUBANIM_22, 1, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	db -1 ; end
 
 TriAttackAnim:
-	db SE_DARK_SCREEN_FLASH, $A0
-	db $46, $FF, $4D
-	db SE_DARK_SCREEN_FLASH, $FF
-	db $FF
+	battle_anim TRI_ATTACK, SE_DARK_SCREEN_FLASH
+	battle_anim NO_MOVE, SUBANIM_4D, 1, 6
+	battle_anim NO_MOVE, SE_DARK_SCREEN_FLASH
+	db -1 ; end
 
 SuperFangAnim:
-	db SE_DARK_SCREEN_PALETTE, $48
-	db $46, $A1, $04
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim LEECH_SEED, SE_DARK_SCREEN_PALETTE
+	battle_anim SUPER_FANG, SUBANIM_04, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 SlashAnim:
-	db $06, $A2, $0F
-	db $FF
+	battle_anim SLASH, SUBANIM_0F, 0, 6
+	db -1 ; end
 
 SubstituteAnim:
-	db SE_SLIDE_MON_OFF, $A3
-	db $08, $FF, $47
-	db SE_SUBSTITUTE_MON, $FF
-	db $FF
+	battle_anim SUBSTITUTE, SE_SLIDE_MON_OFF
+	battle_anim NO_MOVE, SUBANIM_47, 0, 8
+	battle_anim NO_MOVE, SE_SUBSTITUTE_MON
+	db -1 ; end
 
 BallTossAnim:
-	db $03, $FF, $06
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_06, 0, 3
+	db -1 ; end
 
 GreatTossAnim:
-	db $03, $FF, $07
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_07, 0, 3
+	db -1 ; end
 
 UltraTossAnim:
-	db $02, $FF, $08
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_08, 0, 2
+	db -1 ; end
 
 BallShakeAnim:
-	db $04, $FF, $09
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_09, 0, 4
+	db -1 ; end
 
 BallPoofAnim:
-	db $04, $FF, $0A
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_0A, 0, 4
+	db -1 ; end
 
 ShowPicAnim:
-	db SE_SHOW_ENEMY_MON_PIC, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_SHOW_ENEMY_MON_PIC
+	db -1 ; end
 
 HidePicAnim:
-	db SE_HIDE_ENEMY_MON_PIC, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_HIDE_ENEMY_MON_PIC
+	db -1 ; end
 
 EnemyFlashAnim:
-	db SE_SHOW_MON_PIC, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_SHOW_MON_PIC
+	db -1 ; end
 
 PlayerFlashAnim:
-	db SE_FLASH_MON_PIC, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_FLASH_MON_PIC
+	db -1 ; end
 
 EnemyHUDShakeAnim:
-	db SE_SHAKE_ENEMY_HUD, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_SHAKE_ENEMY_HUD
+	db -1 ; end
 
 TradeBallDropAnim:
-	db $86, $FF, $48
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_48, 2, 6
+	db -1 ; end
 
 TradeBallAppear1Anim:
-	db $84, $FF, $49
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_49, 2, 4
+	db -1 ; end
 
 TradeBallAppear2Anim:
-	db $86, $FF, $4A
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_4A, 2, 6
+	db -1 ; end
 
 TradeBallPoofAnim:
-	db $86, $FF, $4B
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_4B, 2, 6
+	db -1 ; end
 
 XStatItemAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db SE_SPIRAL_BALLS_INWARD, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 ShrinkingSquareAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db $46, $FF, $43
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SUBANIM_43, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 XStatItemBlackAnim:
-	db SE_DARKEN_MON_PALETTE, $FF
-	db SE_SPIRAL_BALLS_INWARD, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_DARKEN_MON_PALETTE
+	battle_anim NO_MOVE, SE_SPIRAL_BALLS_INWARD
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 ShrinkingSquareBlackAnim:
-	db SE_DARKEN_MON_PALETTE, $FF
-	db $46, $FF, $43
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_DARKEN_MON_PALETTE
+	battle_anim NO_MOVE, SUBANIM_43, 1, 6
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 UnusedAnim:
-	db SE_LIGHT_SCREEN_PALETTE, $FF
-	db SE_SHOOT_MANY_BALLS_UPWARD, $FF
-	db SE_RESET_SCREEN_PALETTE, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_LIGHT_SCREEN_PALETTE
+	battle_anim NO_MOVE, SE_SHOOT_MANY_BALLS_UPWARD
+	battle_anim NO_MOVE, SE_RESET_SCREEN_PALETTE
+	db -1 ; end
 
 ParalyzeAnim:
-	db $04, $13, $24
-	db $04, $13, $24
-	db $FF
+	battle_anim BIND, SUBANIM_24, 0, 4
+	battle_anim BIND, SUBANIM_24, 0, 4
+	db -1 ; end
 
 PoisonAnim:
-	db $08, $13, $27
-	db $08, $13, $27
-	db $FF
+	battle_anim BIND, SUBANIM_27, 0, 8
+	battle_anim BIND, SUBANIM_27, 0, 8
+	db -1 ; end
 
 SleepPlayerAnim:
-	db $10, $9B, $3A
-	db $10, $9B, $3A
-	db $FF
+	battle_anim REST, SUBANIM_3A, 0, 16
+	battle_anim REST, SUBANIM_3A, 0, 16
+	db -1 ; end
 
 SleepEnemyAnim:
-	db $10, $9B, $3B
-	db $10, $9B, $3B
-	db $FF
+	battle_anim REST, SUBANIM_3B, 0, 16
+	battle_anim REST, SUBANIM_3B, 0, 16
+	db -1 ; end
 
 ConfusedPlayerAnim:
-	db $08, $84, $25
-	db $08, $84, $25
-	db $FF
+	battle_anim AMNESIA, SUBANIM_25, 0, 8
+	battle_anim AMNESIA, SUBANIM_25, 0, 8
+	db -1 ; end
 
 ConfusedEnemyAnim:
-	db $08, $84, $26
-	db $08, $84, $26
-	db $FF
+	battle_anim AMNESIA, SUBANIM_26, 0, 8
+	battle_anim AMNESIA, SUBANIM_26, 0, 8
+	db -1 ; end
 
 BallBlockAnim:
-	db $03, $FF, $0B
-	db $FF
+	battle_anim NO_MOVE, SUBANIM_0B, 0, 3
+	db -1 ; end
 
 FaintAnim:
-	db SE_SLIDE_MON_DOWN, $5A
-	db $FF
+	battle_anim DIG, SE_SLIDE_MON_DOWN
+	db -1 ; end
 
 ShakeScreenAnim:
-	db SE_SHAKE_SCREEN, $FF
-	db $FF
+	battle_anim NO_MOVE, SE_SHAKE_SCREEN
+	db -1 ; end
 
 ThrowRockAnim:
-	db $03, $8B, $53
-	db $FF
+	battle_anim BARRAGE, SUBANIM_53, 0, 3
+	db -1 ; end
 
 ThrowBaitAnim:
-	db $03, $8B, $54
-	db $FF
-
-SubanimationPointers:
-	dw Subanimation00
-	dw Subanimation01
-	dw Subanimation02
-	dw Subanimation03
-	dw Subanimation04
-	dw Subanimation05
-	dw Subanimation06
-	dw Subanimation07
-	dw Subanimation08
-	dw Subanimation09
-	dw Subanimation0a
-	dw Subanimation0b
-	dw Subanimation0c
-	dw Subanimation0d
-	dw Subanimation0e
-	dw Subanimation0f
-	dw Subanimation10
-	dw Subanimation11
-	dw Subanimation12
-	dw Subanimation13
-	dw Subanimation14
-	dw Subanimation15
-	dw Subanimation16
-	dw Subanimation17
-	dw Subanimation18
-	dw Subanimation19
-	dw Subanimation1a
-	dw Subanimation1b
-	dw Subanimation1c
-	dw Subanimation1d
-	dw Subanimation1e
-	dw Subanimation1f
-	dw Subanimation20
-	dw Subanimation21
-	dw Subanimation22
-	dw Subanimation23
-	dw Subanimation24
-	dw Subanimation25
-	dw Subanimation26
-	dw Subanimation27
-	dw Subanimation28
-	dw Subanimation29
-	dw Subanimation2a
-	dw Subanimation2b
-	dw Subanimation2c
-	dw Subanimation2d
-	dw Subanimation2e
-	dw Subanimation2f
-	dw Subanimation30
-	dw Subanimation31
-	dw Subanimation32
-	dw Subanimation33
-	dw Subanimation34
-	dw Subanimation35
-	dw Subanimation36
-	dw Subanimation37
-	dw Subanimation38
-	dw Subanimation39
-	dw Subanimation3a
-	dw Subanimation3b
-	dw Subanimation3c
-	dw Subanimation3d
-	dw Subanimation3e
-	dw Subanimation3f
-	dw Subanimation40
-	dw Subanimation41
-	dw Subanimation42
-	dw Subanimation43
-	dw Subanimation44
-	dw Subanimation45
-	dw Subanimation46
-	dw Subanimation47
-	dw Subanimation48
-	dw Subanimation49
-	dw Subanimation4a
-	dw Subanimation4b
-	dw Subanimation4c
-	dw Subanimation4d
-	dw Subanimation4e
-	dw Subanimation4f
-	dw Subanimation50
-	dw Subanimation51
-	dw Subanimation52
-	dw Subanimation53
-	dw Subanimation54
-	dw Subanimation55
-
-Subanimation04:
-	db $43
-	db $02, $1a, $00
-	db $02, $10, $00
-	db $02, $03, $00
-
-Subanimation05:
-	db $41
-	db $02, $10, $00
-
-Subanimation08:
-	db $0b
-	db $03, $30, $00
-	db $03, $44, $00
-	db $03, $94, $00
-	db $03, $60, $00
-	db $03, $76, $00
-	db $03, $9f, $00
-	db $03, $8d, $00
-	db $03, $a0, $00
-	db $03, $1a, $00
-	db $03, $a1, $00
-	db $03, $34, $00
-
-Subanimation07:
-	db $0b
-	db $03, $30, $00
-	db $03, $a2, $00
-	db $03, $31, $00
-	db $03, $a3, $00
-	db $03, $32, $00
-	db $03, $a4, $00
-	db $03, $92, $00
-	db $03, $a5, $00
-	db $03, $15, $00
-	db $03, $a6, $00
-	db $03, $34, $00
-
-Subanimation06:
-	db $0b
-	db $03, $30, $00
-	db $03, $a2, $00
-	db $03, $93, $00
-	db $03, $61, $00
-	db $03, $73, $00
-	db $03, $a7, $00
-	db $03, $33, $00
-	db $03, $a8, $00
-	db $03, $0e, $00
-	db $03, $a9, $00
-	db $03, $34, $00
-
-Subanimation09:
-	db $04
-	db $03, $21, $04
-	db $04, $21, $04
-	db $03, $21, $04
-	db $05, $21, $04
-
-Subanimation0a:
-	db $46
-	db $06, $1b, $00
-	db $07, $1b, $00
-	db $08, $36, $00
-	db $09, $36, $00
-	db $0a, $15, $00
-	db $0a, $15, $00
-
-Subanimation0b:
-	db $04
-	db $01, $2d, $00
-	db $03, $2f, $00
-	db $03, $35, $00
-	db $03, $4d, $00
-
-Subanimation55:
-	db $41
-	db $01, $9d, $00
-
-Subanimation11:
-	db $4c
-	db $0b, $26, $00
-	db $0c, $26, $00
-	db $0b, $26, $00
-	db $0c, $26, $00
-	db $0b, $28, $00
-	db $0c, $28, $00
-	db $0b, $28, $00
-	db $0c, $28, $00
-	db $0b, $27, $00
-	db $0c, $27, $00
-	db $0b, $27, $00
-	db $0c, $27, $00
-
-Subanimation2b:
-	db $4b
-	db $0d, $03, $03
-	db $0e, $03, $03
-	db $0f, $03, $00
-	db $0d, $11, $00
-	db $0d, $11, $00
-	db $0d, $37, $00
-	db $0d, $37, $00
-	db $10, $21, $00
-	db $10, $21, $00
-	db $11, $1b, $00
-	db $11, $1b, $00
-
-Subanimation2c:
-	db $4c
-	db $12, $01, $00
-	db $12, $0f, $00
-	db $12, $1b, $00
-	db $12, $25, $00
-	db $13, $38, $00
-	db $13, $38, $02
-	db $14, $38, $00
-	db $14, $38, $02
-	db $15, $38, $00
-	db $15, $38, $00
-	db $16, $38, $00
-	db $16, $38, $00
-
-Subanimation12:
-	db $69
-	db $17, $30, $00
-	db $17, $39, $00
-	db $17, $3a, $00
-	db $17, $3b, $00
-	db $17, $3c, $00
-	db $17, $3d, $00
-	db $17, $3e, $00
-	db $17, $3f, $00
-	db $17, $1f, $00
-
-Subanimation00:
-	db $41
-	db $01, $17, $00
-
-Subanimation01:
-	db $42
-	db $01, $0f, $00
-	db $01, $1d, $00
-
-Subanimation02:
-	db $43
-	db $01, $12, $00
-	db $01, $15, $00
-	db $01, $1c, $00
-
-Subanimation03:
-	db $44
-	db $01, $0b, $00
-	db $01, $11, $00
-	db $01, $18, $00
-	db $01, $1d, $00
-
-Subanimation0c:
-	db $43
-	db $0c, $20, $00
-	db $0c, $21, $00
-	db $0c, $23, $00
-
-Subanimation0d:
-	db $46
-	db $0c, $20, $02
-	db $0c, $15, $00
-	db $0c, $21, $02
-	db $0c, $17, $00
-	db $0c, $23, $02
-	db $0c, $19, $00
-
-Subanimation0e:
-	db $49
-	db $0c, $20, $02
-	db $0c, $15, $02
-	db $0c, $07, $00
-	db $0c, $21, $02
-	db $0c, $17, $02
-	db $0c, $09, $00
-	db $0c, $23, $02
-	db $0c, $19, $02
-	db $0c, $0c, $00
-
-Subanimation1f:
-	db $85
-	db $0c, $30, $03
-	db $0c, $40, $03
-	db $0c, $41, $03
-	db $0c, $42, $03
-	db $0c, $21, $00
-
-Subanimation2e:
-	db $2e
-	db $18, $43, $02
-	db $75, $52, $04
-	db $19, $43, $02
-	db $75, $63, $04
-	db $1a, $43, $02
-	db $75, $4d, $04
-	db $1b, $43, $02
-	db $75, $97, $04
-	db $1c, $43, $02
-	db $75, $98, $04
-	db $1d, $43, $02
-	db $75, $58, $04
-	db $1e, $43, $02
-	db $75, $1b, $00
-
-Subanimation2f:
-	db $44
-	db $1f, $24, $00
-	db $20, $20, $00
-	db $21, $1a, $00
-	db $22, $15, $00
-
-Subanimation30:
-	db $52
-	db $23, $00, $02
-	db $23, $02, $02
-	db $23, $04, $00
-	db $23, $07, $02
-	db $23, $02, $02
-	db $23, $04, $00
-	db $23, $0e, $02
-	db $23, $02, $02
-	db $23, $0c, $00
-	db $25, $07, $00
-	db $25, $0e, $00
-	db $25, $15, $00
-	db $24, $24, $02
-	db $23, $1c, $02
-	db $23, $23, $00
-	db $23, $21, $02
-	db $24, $28, $00
-	db $24, $28, $00
-
-Subanimation0f:
-	db $4c
-	db $26, $0e, $02
-	db $26, $16, $02
-	db $26, $1c, $00
-	db $27, $0e, $02
-	db $27, $16, $02
-	db $27, $1c, $00
-	db $28, $0e, $02
-	db $28, $16, $02
-	db $28, $1c, $00
-	db $29, $0e, $02
-	db $29, $16, $02
-	db $29, $1c, $00
-
-Subanimation16:
-	db $4c
-	db $2a, $05, $00
-	db $2b, $05, $02
-	db $2b, $0c, $02
-	db $2a, $11, $04
-	db $2b, $11, $02
-	db $2b, $17, $02
-	db $2a, $1b, $04
-	db $2b, $1b, $02
-	db $2b, $20, $02
-	db $2a, $2f, $04
-	db $2c, $00, $02
-	db $2c, $00, $00
-
-Subanimation10:
-	db $88
-	db $2d, $44, $00
-	db $2e, $45, $00
-	db $2d, $46, $00
-	db $2e, $47, $00
-	db $2d, $48, $00
-	db $2e, $49, $00
-	db $2d, $2f, $00
-	db $2e, $1a, $00
-
-Subanimation31:
-	db $2a
-	db $2f, $46, $00
-	db $2f, $4a, $00
-	db $2f, $4b, $00
-	db $2f, $4c, $00
-	db $2f, $4d, $00
-	db $2f, $4e, $00
-	db $2f, $4f, $00
-	db $2f, $50, $00
-	db $2f, $2e, $00
-	db $2f, $51, $00
-
-Subanimation13:
-	db $86
-	db $30, $31, $00
-	db $30, $32, $00
-	db $30, $92, $00
-	db $30, $0e, $00
-	db $30, $0f, $00
-	db $30, $10, $00
-
-Subanimation14:
-	db $49
-	db $30, $10, $00
-	db $30, $10, $03
-	db $31, $1c, $04
-	db $31, $21, $04
-	db $31, $26, $00
-	db $30, $10, $02
-	db $31, $1d, $04
-	db $31, $22, $04
-	db $31, $27, $00
-
-Subanimation41:
-	db $85
-	db $03, $31, $00
-	db $03, $32, $00
-	db $03, $92, $00
-	db $03, $0e, $00
-	db $03, $10, $00
-
-Subanimation42:
-	db $43
-	db $48, $08, $00
-	db $49, $08, $00
-	db $5a, $08, $00
-
-Subanimation15:
-	db $22
-	db $35, $52, $00
-	db $35, $53, $00
-
-Subanimation17:
-	db $44
-	db $36, $54, $00
-	db $36, $55, $00
-	db $37, $56, $00
-	db $37, $57, $00
-
-Subanimation18:
-	db $a4
-	db $36, $54, $00
-	db $36, $55, $00
-	db $37, $56, $00
-	db $37, $57, $00
-
-Subanimation40:
-	db $46
-	db $17, $54, $00
-	db $17, $55, $00
-	db $17, $0e, $00
-	db $17, $56, $00
-	db $17, $57, $00
-	db $17, $13, $00
-
-Subanimation19:
-	db $8c
-	db $38, $31, $00
-	db $39, $31, $00
-	db $38, $32, $00
-	db $39, $32, $00
-	db $38, $92, $00
-	db $39, $92, $00
-	db $38, $0e, $00
-	db $39, $0e, $00
-	db $38, $0f, $00
-	db $39, $0f, $00
-	db $38, $10, $00
-	db $39, $10, $00
-
-Subanimation1a:
-	db $50
-	db $3a, $08, $00
-	db $3b, $08, $00
-	db $3c, $08, $00
-	db $3d, $08, $00
-	db $3e, $08, $00
-	db $3f, $08, $00
-	db $3e, $08, $00
-	db $3f, $08, $00
-	db $3a, $0b, $00
-	db $3b, $0b, $00
-	db $3c, $0b, $00
-	db $3d, $0b, $00
-	db $3e, $0b, $00
-	db $3f, $0b, $00
-	db $3e, $0b, $00
-	db $3f, $0b, $00
-
-Subanimation1b:
-	db $84
-	db $40, $31, $00
-	db $40, $32, $00
-	db $40, $92, $00
-	db $40, $15, $00
-
-Subanimation1c:
-	db $43
-	db $41, $58, $00
-	db $41, $59, $00
-	db $41, $21, $00
-
-Subanimation1d:
-	db $af
-	db $24, $9a, $00
-	db $23, $1b, $02
-	db $24, $22, $00
-	db $23, $16, $02
-	db $23, $1d, $02
-	db $24, $98, $00
-	db $25, $2c, $04
-	db $25, $2a, $04
-	db $25, $99, $04
-	db $25, $62, $04
-	db $25, $99, $04
-	db $25, $62, $04
-	db $25, $99, $04
-	db $25, $62, $04
-	db $25, $99, $03
-
-Subanimation1e:
-	db $01
-	db $25, $75, $00
-
-Subanimation20:
-	db $42
-	db $42, $07, $00
-	db $43, $07, $00
-
-Subanimation21:
-	db $43
-	db $44, $00, $00
-	db $45, $08, $00
-	db $46, $10, $02
-
-Subanimation22:
-	db $8b
-	db $47, $10, $00
-	db $47, $56, $00
-	db $47, $07, $00
-	db $47, $aa, $00
-	db $47, $ab, $00
-	db $47, $ac, $00
-	db $47, $ad, $00
-	db $47, $ae, $00
-	db $47, $af, $00
-	db $47, $89, $00
-	db $47, $b0, $00
-
-Subanimation2d:
-	db $66
-	db $44, $64, $00
-	db $45, $65, $00
-	db $46, $66, $00
-	db $47, $66, $00
-	db $47, $66, $00
-	db $47, $66, $00
-
-Subanimation39:
-	db $61
-	db $47, $67, $00
-
-Subanimation4e:
-	db $41
-	db $71, $0f, $03
-
-Subanimation4f:
-	db $47
-	db $71, $0f, $00
-	db $71, $08, $00
-	db $71, $01, $00
-	db $71, $95, $00
-	db $72, $95, $00
-	db $73, $95, $00
-	db $74, $95, $00
-
-Subanimation50:
-	db $48
-	db $74, $95, $00
-	db $73, $95, $00
-	db $72, $95, $00
-	db $71, $95, $00
-	db $71, $01, $00
-	db $71, $08, $00
-	db $71, $0f, $00
-	db $71, $16, $00
-
-Subanimation29:
-	db $5d
-	db $48, $0f, $00
-	db $4a, $68, $03
-	db $4b, $2a, $03
-	db $49, $0f, $00
-	db $4a, $68, $03
-	db $4b, $2a, $00
-	db $4c, $6a, $03
-	db $4d, $69, $03
-	db $49, $6b, $00
-	db $4c, $6a, $03
-	db $4d, $69, $00
-	db $4a, $68, $03
-	db $4b, $2a, $03
-	db $49, $6c, $00
-	db $4a, $68, $03
-	db $4b, $2a, $00
-	db $4c, $6a, $03
-	db $4d, $69, $03
-	db $49, $6d, $00
-	db $4c, $6a, $03
-	db $4d, $2a, $00
-	db $4a, $68, $03
-	db $4b, $2a, $03
-	db $49, $0f, $00
-	db $4a, $68, $03
-	db $4b, $2a, $00
-	db $4c, $6a, $03
-	db $4d, $2a, $03
-	db $49, $6b, $00
-
-Subanimation2a:
-	db $44
-	db $4e, $2b, $00
-	db $4f, $2b, $00
-	db $50, $2b, $00
-	db $50, $2b, $00
-
-Subanimation23:
-	db $42
-	db $51, $2d, $00
-	db $51, $6e, $00
-
-Subanimation24:
-	db $a2
-	db $51, $2d, $00
-	db $51, $6e, $00
-
-Subanimation25:
-	db $62
-	db $52, $71, $00
-	db $52, $72, $00
-
-Subanimation26:
-	db $02
-	db $52, $01, $00
-	db $52, $2c, $00
-
-Subanimation3a:
-	db $63
-	db $53, $71, $00
-	db $53, $7f, $00
-	db $53, $81, $00
-
-Subanimation3b:
-	db $03
-	db $53, $01, $00
-	db $53, $15, $00
-	db $53, $2c, $00
-
-Subanimation27:
-	db $a2
-	db $54, $01, $00
-	db $54, $2c, $00
-
-Subanimation28:
-	db $23
-	db $55, $73, $03
-	db $56, $73, $03
-	db $57, $73, $00
-
-Subanimation32:
-	db $63
-	db $47, $74, $00
-	db $47, $43, $00
-	db $47, $75, $00
-
-Subanimation33:
-	db $26
-	db $58, $76, $00
-	db $34, $76, $00
-	db $58, $76, $00
-	db $34, $76, $00
-	db $58, $76, $00
-	db $34, $76, $00
-
-Subanimation3c:
-	db $67
-	db $59, $79, $03
-	db $59, $7b, $03
-	db $59, $77, $03
-	db $59, $7a, $03
-	db $59, $78, $03
-	db $59, $7c, $03
-	db $59, $76, $00
-
-Subanimation3d:
-	db $08
-	db $3a, $4d, $00
-	db $3b, $4d, $00
-	db $3c, $4d, $00
-	db $3d, $4d, $00
-	db $3e, $4d, $00
-	db $3f, $4d, $00
-	db $3e, $4d, $00
-	db $3f, $4d, $00
-
-Subanimation34:
-	db $35
-	db $48, $7d, $00
-	db $49, $7d, $00
-	db $5a, $7d, $00
-	db $48, $30, $00
-	db $49, $30, $00
-	db $5a, $30, $00
-	db $48, $7e, $00
-	db $49, $7e, $00
-	db $5a, $7e, $00
-	db $48, $7f, $00
-	db $49, $7f, $00
-	db $5a, $7f, $00
-	db $48, $80, $00
-	db $49, $80, $00
-	db $5a, $80, $00
-	db $48, $81, $00
-	db $49, $81, $00
-	db $5a, $81, $00
-	db $48, $82, $00
-	db $49, $82, $00
-	db $5a, $82, $00
-
-Subanimation35:
-	db $24
-	db $5b, $83, $03
-	db $5c, $84, $03
-	db $5d, $85, $03
-	db $5e, $09, $00
-
-Subanimation36:
-	db $48
-	db $5f, $2a, $00
-	db $5f, $00, $00
-	db $60, $2a, $00
-	db $60, $00, $00
-	db $61, $2a, $00
-	db $61, $00, $00
-	db $62, $2a, $00
-	db $62, $00, $00
-
-Subanimation37:
-	db $2a
-	db $63, $89, $00
-	db $64, $75, $00
-	db $63, $76, $00
-	db $65, $0d, $00
-	db $65, $86, $00
-	db $65, $12, $00
-	db $65, $87, $00
-	db $65, $17, $00
-	db $65, $88, $00
-	db $65, $1a, $00
-
-Subanimation38:
-	db $50
-	db $66, $8a, $00
-	db $66, $33, $00
-	db $66, $2e, $00
-	db $67, $24, $03
-	db $66, $01, $04
-	db $66, $10, $04
-	db $66, $1d, $04
-	db $67, $28, $03
-	db $66, $2a, $04
-	db $66, $0e, $04
-	db $66, $1b, $04
-	db $67, $26, $03
-	db $66, $03, $04
-	db $66, $12, $04
-	db $66, $1e, $04
-	db $67, $29, $00
-
-Subanimation3e:
-	db $92
-	db $02, $31, $00
-	db $34, $31, $00
-	db $02, $31, $00
-	db $02, $32, $00
-	db $34, $32, $00
-	db $02, $32, $00
-	db $02, $92, $00
-	db $34, $92, $00
-	db $02, $92, $00
-	db $02, $0e, $00
-	db $34, $0e, $00
-	db $02, $0e, $00
-	db $02, $0f, $00
-	db $34, $0f, $00
-	db $02, $0f, $00
-	db $02, $10, $00
-	db $34, $10, $00
-	db $02, $10, $00
-
-Subanimation3f:
-	db $72
-	db $68, $4b, $00
-	db $68, $8c, $00
-	db $68, $20, $00
-	db $68, $1c, $00
-	db $68, $19, $00
-	db $68, $14, $00
-	db $68, $76, $00
-	db $68, $8d, $00
-	db $68, $15, $00
-	db $68, $10, $00
-	db $68, $0c, $00
-	db $68, $06, $00
-	db $68, $8e, $00
-	db $68, $8f, $00
-	db $68, $90, $00
-	db $68, $26, $00
-	db $68, $23, $00
-	db $68, $1f, $00
-
-Subanimation44:
-	db $2c
-	db $69, $4b, $00
-	db $69, $8c, $00
-	db $69, $20, $00
-	db $69, $1c, $00
-	db $69, $19, $00
-	db $69, $14, $00
-	db $69, $76, $00
-	db $69, $8d, $00
-	db $69, $15, $00
-	db $69, $10, $00
-	db $69, $0c, $00
-	db $69, $06, $00
-
-Subanimation43:
-	db $a3
-	db $6a, $07, $00
-	db $6b, $0f, $00
-	db $6c, $17, $00
-
-Subanimation45:
-	db $24
-	db $6d, $8b, $00
-	db $6d, $84, $00
-	db $6d, $63, $00
-	db $6d, $8c, $00
-
-Subanimation46:
-	db $26
-	db $6d, $8b, $00
-	db $6d, $84, $00
-	db $6d, $63, $00
-	db $6d, $8c, $00
-	db $6d, $0a, $00
-	db $6d, $89, $00
-
-Subanimation47:
-	db $23
-	db $06, $82, $00
-	db $07, $82, $00
-	db $08, $96, $00
-
-Subanimation48:
-	db $06
-	db $03, $41, $04
-	db $03, $48, $04
-	db $04, $48, $04
-	db $03, $48, $04
-	db $05, $48, $04
-	db $03, $48, $03
-
-Subanimation49:
-	db $04
-	db $04, $48, $04
-	db $03, $48, $04
-	db $05, $48, $04
-	db $03, $48, $03
-
-Subanimation4a:
-	db $01
-	db $04, $84, $03
-
-Subanimation4b:
-	db $03
-	db $06, $72, $00
-	db $07, $72, $00
-	db $08, $72, $00
-
-Subanimation4c:
-	db $68
-	db $6f, $30, $00
-	db $6e, $30, $00
-	db $70, $30, $00
-	db $6e, $30, $00
-	db $6f, $30, $00
-	db $6e, $30, $00
-	db $70, $30, $00
-	db $6e, $30, $00
-
-Subanimation4d:
-	db $26
-	db $32, $4b, $00
-	db $33, $4f, $00
-	db $32, $20, $00
-	db $33, $16, $00
-	db $32, $19, $00
-	db $33, $0d, $00
-
-Subanimation51:
-	db $a6
-	db $76, $1b, $00
-	db $34, $1b, $00
-	db $76, $1b, $00
-	db $34, $1b, $00
-	db $76, $1b, $00
-	db $34, $1b, $00
-
-Subanimation52:
-	db $47
-	db $77, $25, $00
-	db $77, $9b, $00
-	db $77, $1a, $00
-	db $77, $9c, $00
-	db $77, $2f, $00
-	db $77, $50, $00
-	db $77, $8c, $00
-
-Subanimation53:
-	db $0c
-	db $78, $30, $00
-	db $78, $a2, $00
-	db $78, $93, $00
-	db $78, $61, $00
-	db $78, $73, $00
-	db $78, $a7, $00
-	db $78, $33, $00
-	db $78, $a8, $00
-	db $78, $0e, $00
-	db $78, $a9, $00
-	db $78, $34, $00
-	db $01, $9e, $00
-
-Subanimation54:
-	db $0b
-	db $79, $30, $00
-	db $79, $a2, $00
-	db $79, $93, $00
-	db $79, $61, $00
-	db $79, $73, $00
-	db $79, $a7, $00
-	db $79, $33, $00
-	db $79, $a8, $00
-	db $79, $0e, $00
-	db $79, $a9, $00
-	db $79, $34, $00
-
-FrameBlockPointers:
-	dw FrameBlock00
-	dw FrameBlock01
-	dw FrameBlock02
-	dw FrameBlock03
-	dw FrameBlock04
-	dw FrameBlock05
-	dw FrameBlock06
-	dw FrameBlock07
-	dw FrameBlock08
-	dw FrameBlock09
-	dw FrameBlock0a
-	dw FrameBlock0b
-	dw FrameBlock0c
-	dw FrameBlock0d
-	dw FrameBlock0e
-	dw FrameBlock0f
-	dw FrameBlock10
-	dw FrameBlock11
-	dw FrameBlock12
-	dw FrameBlock13
-	dw FrameBlock14
-	dw FrameBlock15
-	dw FrameBlock16
-	dw FrameBlock17
-	dw FrameBlock18
-	dw FrameBlock19
-	dw FrameBlock1a
-	dw FrameBlock1b
-	dw FrameBlock1c
-	dw FrameBlock1d
-	dw FrameBlock1e
-	dw FrameBlock1f
-	dw FrameBlock20
-	dw FrameBlock21
-	dw FrameBlock22
-	dw FrameBlock23
-	dw FrameBlock24
-	dw FrameBlock25
-	dw FrameBlock26
-	dw FrameBlock27
-	dw FrameBlock28
-	dw FrameBlock29
-	dw FrameBlock2a
-	dw FrameBlock2b
-	dw FrameBlock2c
-	dw FrameBlock2d
-	dw FrameBlock2e
-	dw FrameBlock2f
-	dw FrameBlock30
-	dw FrameBlock31
-	dw FrameBlock32
-	dw FrameBlock33
-	dw FrameBlock34
-	dw FrameBlock35
-	dw FrameBlock36
-	dw FrameBlock37
-	dw FrameBlock38
-	dw FrameBlock39
-	dw FrameBlock3a
-	dw FrameBlock3b
-	dw FrameBlock3c
-	dw FrameBlock3d
-	dw FrameBlock3e
-	dw FrameBlock3f
-	dw FrameBlock40
-	dw FrameBlock41
-	dw FrameBlock42
-	dw FrameBlock43
-	dw FrameBlock44
-	dw FrameBlock45
-	dw FrameBlock46
-	dw FrameBlock47
-	dw SmallBlackCircleFrameBlock
-	dw LargeBlockCircleFrameBlock
-	dw FrameBlock4a
-	dw FrameBlock4b
-	dw FrameBlock4c
-	dw FrameBlock4d
-	dw FrameBlock4e
-	dw FrameBlock4f
-	dw FrameBlock50
-	dw FrameBlock51
-	dw FrameBlock52
-	dw FrameBlock53
-	dw FrameBlock54
-	dw FrameBlock55
-	dw FrameBlock56
-	dw FrameBlock57
-	dw FrameBlock58
-	dw FrameBlock59
-	dw FrameBlock5a
-	dw FrameBlock5b
-	dw FrameBlock5c
-	dw FrameBlock5d
-	dw FrameBlock5e
-	dw FrameBlock5f
-	dw FrameBlock60
-	dw FrameBlock61
-	dw FrameBlock62
-	dw FrameBlock63
-	dw FrameBlock64
-	dw FrameBlock65
-	dw FrameBlock66
-	dw FrameBlock67
-	dw FrameBlock68
-	dw FrameBlock69
-	dw FrameBlock6a
-	dw FrameBlock6b
-	dw FrameBlock6c
-	dw FrameBlock6d
-	dw FrameBlock6e
-	dw FrameBlock6f
-	dw FrameBlock70
-	dw FrameBlock71
-	dw FrameBlock72
-	dw FrameBlock73
-	dw FrameBlock74
-	dw FrameBlock75
-	dw FrameBlock76
-	dw FrameBlock77
-	dw FrameBlock78
-	dw FrameBlock79
-
-; FrameBlock format is as follows:
-; first byte = number of tiles in FrameBlock
-;
-; Next, each group of 4 bytes describes a tile in the FrameBlock
-; first byte = y offset
-; second byte = x offset
-; third byte = tile id (it's actually tile id - $31)
-; fourth byte = tile properties (xflip/yflip/etc.)
-FrameBlock01:
-	db $09
-	db $00, $00, $2c, $00
-	db $00, $08, $2d, $00
-	db $00, $10, $2c, $20
-	db $08, $00, $3c, $00
-	db $08, $08, $3d, $00
-	db $08, $10, $3c, $20
-	db $10, $00, $2c, $40
-	db $10, $08, $2d, $40
-	db $10, $10, $2c, $60
-
-FrameBlock02:
-	db $10
-	db $00, $00, $20, $00
-	db $00, $08, $21, $00
-	db $00, $10, $21, $20
-	db $00, $18, $20, $20
-	db $08, $00, $30, $00
-	db $08, $08, $31, $00
-	db $08, $10, $31, $20
-	db $08, $18, $30, $20
-	db $10, $00, $30, $40
-	db $10, $08, $31, $40
-	db $10, $10, $31, $60
-	db $10, $18, $30, $60
-	db $18, $00, $20, $40
-	db $18, $08, $21, $40
-	db $18, $10, $21, $60
-	db $18, $18, $20, $60
-
-FrameBlock03:
-	db $04
-	db $00, $00, $02, $00
-	db $00, $08, $02, $20
-	db $08, $00, $12, $00
-	db $08, $08, $12, $20
-
-FrameBlock04:
-	db $04
-	db $00, $00, $06, $00
-	db $00, $08, $07, $00
-	db $08, $00, $16, $00
-	db $08, $08, $17, $00
-
-FrameBlock05:
-	db $04
-	db $00, $00, $07, $20
-	db $00, $08, $06, $20
-	db $08, $00, $17, $20
-	db $08, $08, $16, $20
-
-FrameBlock06:
-	db $0c
-	db $00, $08, $23, $00
-	db $08, $00, $32, $00
-	db $08, $08, $33, $00
-	db $00, $10, $23, $20
-	db $08, $10, $33, $20
-	db $08, $18, $32, $20
-	db $10, $00, $32, $40
-	db $10, $08, $33, $40
-	db $18, $08, $23, $40
-	db $10, $10, $33, $60
-	db $10, $18, $32, $60
-	db $18, $10, $23, $60
-
-FrameBlock07:
-	db $10
-	db $00, $00, $20, $00
-	db $00, $08, $21, $00
-	db $08, $00, $30, $00
-	db $08, $08, $31, $00
-	db $00, $10, $21, $20
-	db $00, $18, $20, $20
-	db $08, $10, $31, $20
-	db $08, $18, $30, $20
-	db $10, $00, $30, $40
-	db $10, $08, $31, $40
-	db $18, $00, $20, $40
-	db $18, $08, $21, $40
-	db $10, $10, $31, $60
-	db $10, $18, $30, $60
-	db $18, $10, $21, $60
-	db $18, $18, $20, $60
-
-FrameBlock08:
-	db $10
-	db $00, $00, $20, $00
-	db $00, $08, $21, $00
-	db $08, $00, $30, $00
-	db $08, $08, $31, $00
-	db $00, $18, $21, $20
-	db $00, $20, $20, $20
-	db $08, $18, $31, $20
-	db $08, $20, $30, $20
-	db $18, $00, $30, $40
-	db $18, $08, $31, $40
-	db $20, $00, $20, $40
-	db $20, $08, $21, $40
-	db $18, $18, $31, $60
-	db $18, $20, $30, $60
-	db $20, $18, $21, $60
-	db $20, $20, $20, $60
-
-FrameBlock09:
-	db $0c
-	db $00, $00, $24, $00
-	db $00, $08, $25, $00
-	db $08, $00, $34, $00
-	db $00, $18, $25, $20
-	db $00, $20, $24, $20
-	db $08, $20, $34, $20
-	db $18, $00, $34, $40
-	db $20, $00, $24, $40
-	db $20, $08, $25, $40
-	db $18, $20, $34, $60
-	db $20, $18, $25, $60
-	db $20, $20, $24, $60
-
-FrameBlock0a:
-	db $0c
-	db $00, $00, $24, $00
-	db $00, $08, $25, $00
-	db $08, $00, $34, $00
-	db $00, $20, $25, $20
-	db $00, $28, $24, $20
-	db $08, $28, $34, $20
-	db $20, $00, $34, $40
-	db $28, $00, $24, $40
-	db $28, $08, $25, $40
-	db $20, $28, $34, $60
-	db $28, $20, $25, $60
-	db $28, $28, $24, $60
-
-FrameBlock0b:
-	db $04
-	db $00, $00, $05, $00
-	db $00, $08, $05, $20
-	db $08, $00, $15, $00
-	db $08, $08, $15, $20
-
-FrameBlock0c:
-	db $04
-	db $00, $00, $04, $00
-	db $00, $08, $04, $20
-	db $08, $00, $14, $00
-	db $08, $08, $14, $20
-
-FrameBlock0d:
-	db $08
-	db $00, $00, $0c, $00
-	db $00, $08, $0d, $00
-	db $08, $00, $1c, $00
-	db $08, $08, $1d, $00
-	db $10, $00, $1d, $60
-	db $10, $08, $1c, $60
-	db $18, $00, $0d, $60
-	db $18, $08, $0c, $60
-
-FrameBlock0e:
-	db $04
-	db $20, $00, $0c, $00
-	db $20, $08, $0d, $00
-	db $28, $00, $1c, $00
-	db $28, $08, $1d, $00
-
-FrameBlock0f:
-	db $04
-	db $30, $00, $1d, $60
-	db $30, $08, $1c, $60
-	db $38, $00, $0d, $60
-	db $38, $08, $0c, $60
-
-FrameBlock10:
-	db $08
-	db $00, $00, $0e, $00
-	db $00, $08, $0f, $00
-	db $08, $00, $1e, $00
-	db $08, $08, $1f, $00
-	db $00, $10, $0f, $20
-	db $00, $18, $0e, $20
-	db $08, $10, $1f, $20
-	db $08, $18, $1e, $20
-
-FrameBlock11:
-	db $08
-	db $00, $00, $0e, $00
-	db $00, $08, $0f, $00
-	db $08, $00, $1e, $00
-	db $08, $08, $1f, $00
-	db $00, $20, $0f, $20
-	db $00, $28, $0e, $20
-	db $08, $20, $1f, $20
-	db $08, $28, $1e, $20
-
-FrameBlock12:
-	db $03
-	db $00, $00, $37, $00
-	db $08, $10, $37, $00
-	db $00, $20, $37, $00
-
-FrameBlock13:
-	db $04
-	db $00, $00, $36, $00
-	db $00, $08, $36, $20
-	db $08, $00, $36, $40
-	db $08, $08, $36, $60
-
-FrameBlock14:
-	db $08
-	db $00, $10, $28, $00
-	db $00, $18, $28, $20
-	db $08, $10, $38, $00
-	db $08, $18, $38, $20
-	db $00, $20, $36, $00
-	db $00, $28, $36, $20
-	db $08, $20, $36, $40
-	db $08, $28, $36, $60
-
-FrameBlock15:
-	db $0c
-	db $00, $00, $28, $00
-	db $00, $08, $28, $20
-	db $08, $00, $38, $00
-	db $08, $08, $38, $20
-	db $00, $10, $29, $00
-	db $00, $18, $29, $20
-	db $08, $10, $39, $00
-	db $08, $18, $39, $20
-	db $00, $20, $28, $00
-	db $00, $28, $28, $20
-	db $08, $20, $38, $00
-	db $08, $28, $38, $20
-
-FrameBlock16:
-	db $08
-	db $00, $00, $29, $00
-	db $00, $08, $29, $20
-	db $08, $00, $39, $00
-	db $08, $08, $39, $20
-	db $00, $20, $29, $00
-	db $00, $28, $29, $20
-	db $08, $20, $39, $00
-	db $08, $28, $39, $20
-
-FrameBlock17:
-	db $04
-	db $00, $00, $08, $00
-	db $00, $08, $09, $00
-	db $08, $00, $18, $00
-	db $08, $08, $19, $00
-
-FrameBlock18:
-	db $01
-	db $18, $00, $45, $60
-
-FrameBlock19:
-	db $02
-	db $18, $08, $45, $00
-	db $10, $08, $46, $60
-
-FrameBlock1a:
-	db $02
-	db $10, $10, $45, $60
-	db $18, $10, $46, $00
-
-FrameBlock1b:
-	db $02
-	db $10, $18, $45, $00
-	db $08, $18, $46, $60
-
-FrameBlock1c:
-	db $02
-	db $08, $20, $45, $60
-	db $10, $20, $46, $00
-
-FrameBlock1d:
-	db $02
-	db $08, $28, $45, $00
-	db $00, $28, $46, $60
-
-FrameBlock1e:
-	db $02
-	db $00, $30, $45, $60
-	db $08, $30, $46, $00
-
-FrameBlock75:
-	db $04
-	db $00, $00, $43, $00
-	db $00, $08, $43, $20
-	db $08, $00, $22, $00
-	db $08, $08, $43, $60
-
-FrameBlock1f:
-	db $02
-	db $00, $00, $03, $00
-	db $00, $30, $03, $20
-
-FrameBlock20:
-	db $06
-	db $00, $00, $03, $00
-	db $00, $30, $03, $20
-	db $08, $08, $03, $00
-	db $08, $28, $03, $20
-	db $08, $00, $13, $00
-	db $08, $30, $13, $20
-
-FrameBlock21:
-	db $0c
-	db $00, $00, $03, $00
-	db $00, $30, $03, $20
-	db $08, $08, $03, $00
-	db $08, $28, $03, $20
-	db $08, $00, $13, $00
-	db $08, $30, $13, $20
-	db $10, $10, $03, $00
-	db $10, $20, $03, $20
-	db $10, $08, $13, $00
-	db $10, $28, $13, $20
-	db $10, $00, $03, $00
-	db $10, $30, $03, $20
-
-FrameBlock22:
-	db $13
-	db $00, $00, $03, $00
-	db $08, $00, $13, $00
-	db $10, $00, $03, $00
-	db $18, $00, $13, $00
-	db $08, $08, $03, $00
-	db $10, $08, $13, $00
-	db $18, $08, $03, $00
-	db $10, $10, $03, $00
-	db $18, $10, $13, $00
-	db $18, $18, $03, $00
-	db $10, $20, $03, $20
-	db $18, $20, $13, $20
-	db $08, $28, $03, $20
-	db $10, $28, $13, $20
-	db $18, $28, $03, $20
-	db $00, $30, $03, $20
-	db $08, $30, $13, $20
-	db $10, $30, $03, $20
-	db $18, $30, $13, $20
-
-FrameBlock23:
-	db $04
-	db $00, $00, $0a, $00
-	db $00, $08, $0b, $00
-	db $08, $00, $1a, $00
-	db $08, $08, $1b, $00
-
-FrameBlock24:
-	db $02
-	db $08, $00, $0a, $00
-	db $08, $08, $0b, $00
-
-FrameBlock25:
-	db $0c
-	db $10, $00, $0a, $00
-	db $10, $08, $0b, $00
-	db $18, $00, $1a, $00
-	db $18, $08, $1b, $00
-	db $00, $10, $0a, $00
-	db $00, $18, $0b, $00
-	db $08, $10, $1a, $00
-	db $08, $18, $1b, $00
-	db $08, $20, $0a, $00
-	db $08, $28, $0b, $00
-	db $10, $20, $1a, $00
-	db $10, $28, $1b, $00
-
-FrameBlock26:
-	db $04
-	db $00, $10, $44, $00
-	db $00, $18, $44, $20
-	db $08, $10, $44, $40
-	db $08, $18, $44, $60
-
-FrameBlock27:
-	db $05
-	db $08, $08, $44, $00
-	db $08, $10, $44, $20
-	db $10, $08, $44, $40
-	db $10, $10, $44, $60
-	db $00, $18, $47, $00
-
-FrameBlock28:
-	db $06
-	db $10, $00, $44, $00
-	db $10, $08, $44, $20
-	db $18, $00, $44, $40
-	db $18, $08, $44, $60
-	db $08, $10, $47, $00
-	db $02, $16, $47, $00
-
-FrameBlock29:
-	db $04
-	db $18, $00, $47, $00
-	db $12, $06, $47, $00
-	db $0c, $0c, $47, $00
-	db $06, $12, $47, $00
-
-FrameBlock2a:
-	db $04
-	db $00, $00, $44, $00
-	db $00, $08, $44, $20
-	db $08, $00, $44, $40
-	db $08, $08, $44, $60
-
-FrameBlock2b:
-	db $02
-	db $06, $02, $47, $00
-	db $00, $08, $47, $00
-
-FrameBlock2c:
-	db $01
-	db $a0, $00, $4d, $00
-
-FrameBlock2d:
-	db $08
-	db $00, $00, $26, $00
-	db $00, $08, $27, $00
-	db $08, $00, $36, $00
-	db $08, $08, $37, $00
-	db $10, $00, $28, $00
-	db $10, $08, $29, $00
-	db $18, $00, $38, $00
-	db $18, $08, $39, $00
-
-FrameBlock2e:
-	db $08
-	db $00, $00, $27, $20
-	db $00, $08, $26, $20
-	db $08, $00, $37, $20
-	db $08, $08, $36, $20
-	db $10, $00, $29, $20
-	db $10, $08, $28, $20
-	db $18, $00, $39, $20
-	db $18, $08, $38, $20
-
-FrameBlock2f:
-	db $04
-	db $00, $00, $0c, $00
-	db $00, $08, $0d, $00
-	db $08, $00, $0c, $40
-	db $08, $08, $0d, $40
-
-FrameBlock30:
-	db $04
-	db $00, $00, $44, $00
-	db $00, $08, $44, $20
-	db $08, $00, $44, $40
-	db $08, $08, $44, $60
-
-FrameBlock31:
-	db $01
-	db $00, $00, $45, $00
-
-FrameBlock32:
-	db $07
-	db $00, $00, $4d, $00
-	db $00, $08, $2f, $00
-	db $00, $10, $4d, $20
-	db $08, $00, $4e, $00
-	db $08, $08, $07, $00
-	db $08, $10, $4e, $20
-	db $10, $08, $3f, $00
-
-FrameBlock33:
-	db $07
-	db $00, $08, $3f, $40
-	db $08, $00, $4e, $40
-	db $08, $08, $07, $40
-	db $08, $10, $4e, $60
-	db $10, $00, $4d, $40
-	db $10, $08, $2f, $40
-	db $10, $10, $4d, $60
-
-FrameBlock34:
-	db $01
-	db $a0, $00, $00, $10
-
-FrameBlock35:
-	db $06
-	db $00, $00, $2a, $00
-	db $00, $08, $2b, $00
-	db $08, $00, $3a, $00
-	db $10, $00, $3a, $40
-	db $18, $00, $2a, $40
-	db $18, $08, $2b, $40
-
-FrameBlock36:
-	db $04
-	db $00, $00, $00, $00
-	db $00, $08, $01, $00
-	db $08, $00, $10, $00
-	db $08, $08, $11, $00
-
-FrameBlock37:
-	db $04
-	db $00, $00, $01, $a0
-	db $00, $08, $00, $a0
-	db $08, $00, $11, $a0
-	db $08, $08, $10, $a0
-
-FrameBlock38:
-	db $04
-	db $00, $00, $0a, $00
-	db $00, $08, $0b, $00
-	db $08, $00, $1a, $00
-	db $08, $08, $1b, $00
-
-FrameBlock39:
-	db $04
-	db $00, $00, $0b, $20
-	db $00, $08, $0a, $20
-	db $08, $00, $1b, $20
-	db $08, $08, $1a, $20
-
-FrameBlock3a:
-	db $04
-	db $20, $00, $05, $00
-	db $20, $08, $05, $20
-	db $28, $00, $15, $00
-	db $28, $08, $15, $20
-
-FrameBlock3b:
-	db $05
-	db $18, $00, $04, $00
-	db $18, $08, $04, $20
-	db $20, $00, $14, $00
-	db $20, $08, $14, $20
-	db $28, $04, $41, $00
-
-FrameBlock3c:
-	db $06
-	db $10, $00, $05, $00
-	db $10, $08, $05, $20
-	db $18, $00, $15, $00
-	db $18, $08, $15, $20
-	db $20, $04, $42, $00
-	db $28, $04, $42, $00
-
-FrameBlock3d:
-	db $07
-	db $08, $00, $04, $00
-	db $08, $08, $04, $20
-	db $10, $00, $14, $00
-	db $10, $08, $14, $20
-	db $18, $04, $41, $00
-	db $20, $04, $41, $00
-	db $28, $04, $41, $00
-
-FrameBlock3e:
-	db $08
-	db $00, $00, $05, $00
-	db $00, $08, $05, $20
-	db $08, $00, $15, $00
-	db $08, $08, $15, $20
-	db $10, $04, $42, $00
-	db $18, $04, $42, $00
-	db $20, $04, $42, $00
-	db $28, $04, $42, $00
-
-FrameBlock3f:
-	db $08
-	db $00, $00, $04, $00
-	db $00, $08, $04, $20
-	db $08, $00, $14, $00
-	db $08, $08, $14, $20
-	db $10, $04, $41, $00
-	db $18, $04, $41, $00
-	db $20, $04, $41, $00
-	db $28, $04, $41, $00
-
-FrameBlock40:
-	db $03
-	db $00, $00, $3d, $00
-	db $00, $08, $3d, $00
-	db $08, $08, $3d, $00
-
-FrameBlock41:
-	db $04
-	db $00, $00, $06, $00
-	db $00, $08, $06, $20
-	db $08, $00, $16, $00
-	db $08, $08, $17, $00
-
-FrameBlock42:
-	db $0b
-	db $00, $10, $42, $00
-	db $08, $00, $42, $00
-	db $08, $08, $42, $00
-	db $08, $10, $42, $00
-	db $08, $18, $42, $00
-	db $08, $20, $42, $00
-	db $10, $10, $42, $00
-	db $18, $08, $42, $00
-	db $18, $18, $42, $00
-	db $20, $00, $42, $00
-	db $20, $20, $42, $00
-
-FrameBlock43:
-	db $0b
-	db $00, $10, $41, $00
-	db $08, $00, $41, $00
-	db $08, $08, $41, $00
-	db $08, $10, $41, $00
-	db $08, $18, $41, $00
-	db $08, $20, $41, $00
-	db $10, $10, $41, $00
-	db $18, $08, $41, $00
-	db $18, $18, $41, $00
-	db $20, $00, $41, $00
-	db $20, $20, $41, $00
-
-FrameBlock44:
-	db $04
-	db $00, $00, $49, $00
-	db $00, $28, $49, $00
-	db $28, $00, $49, $00
-	db $28, $28, $49, $00
-
-FrameBlock45:
-	db $04
-	db $00, $00, $49, $00
-	db $00, $18, $49, $00
-	db $18, $00, $49, $00
-	db $18, $18, $49, $00
-
-FrameBlock46:
-	db $04
-	db $00, $00, $49, $00
-	db $00, $08, $49, $00
-	db $08, $00, $49, $00
-	db $08, $08, $49, $00
-
-FrameBlock47:
-	db $04
-	db $00, $00, $43, $00
-	db $00, $08, $43, $20
-	db $08, $00, $43, $40
-	db $08, $08, $43, $60
-
-SmallBlackCircleFrameBlock:
-	db $04
-	db $08, $08, $33, $00
-	db $08, $10, $33, $20
-	db $10, $08, $33, $40
-	db $10, $10, $33, $60
-
-LargeBlockCircleFrameBlock:
-	db $10
-	db $00, $00, $22, $00
-	db $00, $08, $23, $00
-	db $00, $10, $23, $20
-	db $00, $18, $22, $20
-	db $08, $00, $32, $00
-	db $08, $08, $43, $00
-	db $08, $10, $43, $20
-	db $08, $18, $32, $20
-	db $10, $00, $32, $40
-	db $10, $08, $43, $40
-	db $10, $10, $43, $60
-	db $10, $18, $32, $60
-	db $18, $00, $22, $40
-	db $18, $08, $23, $40
-	db $18, $10, $23, $60
-	db $18, $18, $22, $60
-
-FrameBlock71:
-	db $10
-	db $00, $00, $22, $00
-	db $00, $08, $3b, $00
-	db $00, $10, $23, $20
-	db $00, $18, $22, $20
-	db $08, $00, $32, $00
-	db $08, $08, $43, $00
-	db $08, $10, $43, $20
-	db $08, $18, $32, $20
-	db $10, $00, $32, $40
-	db $10, $08, $43, $40
-	db $10, $10, $43, $60
-	db $10, $18, $32, $60
-	db $18, $00, $22, $40
-	db $18, $08, $23, $40
-	db $18, $10, $23, $60
-	db $18, $18, $22, $60
-
-FrameBlock72:
-	db $0c
-	db $00, $00, $32, $00
-	db $00, $08, $43, $00
-	db $00, $10, $43, $20
-	db $00, $18, $32, $20
-	db $08, $00, $32, $40
-	db $08, $08, $43, $40
-	db $08, $10, $43, $60
-	db $08, $18, $32, $60
-	db $10, $00, $22, $40
-	db $10, $08, $23, $40
-	db $10, $10, $23, $60
-	db $10, $18, $22, $60
-
-FrameBlock73:
-	db $08
-	db $00, $00, $32, $40
-	db $00, $08, $43, $40
-	db $00, $10, $43, $60
-	db $00, $18, $32, $60
-	db $08, $00, $22, $40
-	db $08, $08, $23, $40
-	db $08, $10, $23, $60
-	db $08, $18, $22, $60
-
-FrameBlock74:
-	db $04
-	db $00, $00, $22, $40
-	db $00, $08, $23, $40
-	db $00, $10, $23, $60
-	db $00, $18, $22, $60
-
-FrameBlock4a:
-	db $04
-	db $08, $18, $4c, $20
-	db $20, $08, $4b, $00
-	db $30, $20, $4c, $00
-	db $18, $30, $4b, $40
-
-FrameBlock4b:
-	db $04
-	db $00, $18, $4c, $00
-	db $20, $00, $4b, $40
-	db $38, $20, $4c, $20
-	db $18, $38, $4b, $00
-
-FrameBlock4c:
-	db $04
-	db $10, $08, $4a, $40
-	db $30, $10, $4a, $00
-	db $28, $30, $4a, $20
-	db $08, $28, $4a, $60
-
-FrameBlock4d:
-	db $04
-	db $08, $00, $4a, $20
-	db $38, $08, $4a, $60
-	db $30, $38, $4a, $40
-	db $00, $30, $4a, $00
-
-FrameBlock4e:
-	db $08
-	db $00, $30, $44, $00
-	db $00, $38, $44, $20
-	db $08, $30, $44, $40
-	db $08, $38, $44, $60
-	db $26, $0a, $44, $00
-	db $26, $12, $44, $20
-	db $2e, $0a, $44, $40
-	db $2e, $12, $44, $60
-
-FrameBlock4f:
-	db $0c
-	db $0e, $22, $44, $00
-	db $0e, $2a, $44, $20
-	db $16, $22, $44, $40
-	db $16, $2a, $44, $60
-	db $06, $32, $47, $00
-	db $00, $38, $47, $00
-	db $1a, $16, $44, $00
-	db $1a, $1e, $44, $20
-	db $22, $16, $44, $40
-	db $22, $1e, $44, $60
-	db $30, $08, $47, $00
-	db $2a, $0e, $47, $00
-
-FrameBlock50:
-	db $08
-	db $06, $32, $47, $00
-	db $00, $38, $47, $00
-	db $12, $26, $47, $00
-	db $0c, $2c, $47, $00
-	db $1e, $1a, $47, $00
-	db $18, $20, $47, $00
-	db $2a, $0e, $47, $00
-	db $24, $14, $47, $00
-
-FrameBlock51:
-	db $08
-	db $00, $00, $35, $20
-	db $08, $00, $35, $40
-	db $10, $00, $35, $00
-	db $18, $00, $35, $60
-	db $00, $40, $35, $00
-	db $08, $40, $35, $60
-	db $10, $40, $35, $20
-	db $18, $40, $35, $40
-
-FrameBlock52:
-	db $04
-	db $00, $00, $2a, $00
-	db $00, $08, $2b, $00
-	db $08, $00, $3a, $00
-	db $08, $08, $3b, $00
-
-FrameBlock53:
-	db $03
-	db $00, $00, $3f, $00
-	db $00, $08, $3f, $00
-	db $08, $06, $3f, $00
-
-FrameBlock54:
-	db $04
-	db $00, $00, $0e, $00
-	db $00, $08, $0e, $20
-	db $08, $00, $0f, $00
-	db $08, $08, $0f, $20
-
-FrameBlock55:
-	db $03
-	db $10, $00, $2c, $00
-	db $10, $08, $3c, $00
-	db $10, $10, $2d, $00
-
-FrameBlock56:
-	db $06
-	db $10, $10, $31, $00
-	db $10, $18, $31, $00
-	db $08, $10, $2c, $00
-	db $08, $18, $3c, $00
-	db $08, $20, $2d, $00
-	db $10, $20, $2d, $00
-
-FrameBlock57:
-	db $09
-	db $08, $20, $31, $00
-	db $10, $20, $31, $00
-	db $08, $28, $31, $00
-	db $10, $28, $31, $00
-	db $00, $20, $2c, $00
-	db $00, $28, $3c, $00
-	db $00, $30, $2d, $00
-	db $08, $30, $2d, $00
-	db $10, $30, $2d, $00
-
-FrameBlock58:
-	db $07
-	db $00, $00, $46, $00
-	db $08, $02, $47, $00
-	db $10, $03, $48, $00
-	db $18, $04, $48, $00
-	db $20, $05, $48, $00
-	db $28, $05, $48, $00
-	db $30, $05, $48, $00
-
-FrameBlock59:
-	db $01
-	db $00, $00, $42, $00
-
-FrameBlock5a:
-	db $0c
-	db $00, $00, $24, $00
-	db $00, $08, $25, $00
-	db $08, $00, $34, $00
-	db $00, $10, $25, $20
-	db $00, $18, $24, $20
-	db $08, $18, $34, $20
-	db $10, $00, $34, $40
-	db $18, $00, $24, $40
-	db $18, $08, $25, $40
-	db $10, $18, $34, $60
-	db $18, $10, $25, $60
-	db $18, $18, $24, $60
-
-FrameBlock5b:
-	db $04
-	db $00, $00, $43, $00
-	db $00, $08, $43, $20
-	db $08, $00, $43, $40
-	db $08, $08, $43, $60
-
-FrameBlock5c:
-	db $08
-	db $00, $00, $49, $00
-	db $02, $08, $49, $00
-	db $18, $00, $49, $00
-	db $10, $10, $49, $00
-	db $08, $00, $43, $00
-	db $08, $08, $43, $20
-	db $10, $00, $43, $40
-	db $10, $08, $43, $60
-
-FrameBlock5d:
-	db $0b
-	db $00, $00, $49, $00
-	db $18, $02, $49, $00
-	db $14, $10, $49, $00
-	db $08, $00, $43, $00
-	db $00, $08, $43, $20
-	db $10, $00, $43, $40
-	db $10, $08, $43, $60
-	db $04, $08, $43, $00
-	db $04, $10, $43, $20
-	db $0c, $08, $43, $40
-	db $0c, $10, $43, $60
-
-FrameBlock5e:
-	db $0f
-	db $00, $08, $49, $00
-	db $08, $10, $49, $00
-	db $20, $00, $49, $00
-	db $08, $00, $43, $00
-	db $08, $08, $43, $20
-	db $10, $00, $43, $40
-	db $10, $08, $43, $60
-	db $10, $10, $43, $00
-	db $10, $18, $43, $20
-	db $18, $10, $43, $40
-	db $18, $18, $43, $60
-	db $20, $08, $43, $00
-	db $20, $10, $43, $20
-	db $28, $08, $43, $40
-	db $28, $10, $43, $60
-
-FrameBlock5f:
-	db $04
-	db $00, $00, $49, $00
-	db $00, $10, $49, $00
-	db $00, $20, $49, $00
-	db $00, $30, $49, $00
-
-FrameBlock60:
-	db $08
-	db $00, $00, $49, $00
-	db $00, $10, $49, $00
-	db $00, $20, $49, $00
-	db $00, $30, $49, $00
-	db $08, $08, $49, $00
-	db $08, $18, $49, $00
-	db $08, $28, $49, $00
-	db $08, $38, $49, $00
-
-FrameBlock61:
-	db $0c
-	db $00, $00, $49, $00
-	db $00, $10, $49, $00
-	db $00, $20, $49, $00
-	db $00, $30, $49, $00
-	db $08, $08, $49, $00
-	db $08, $18, $49, $00
-	db $08, $28, $49, $00
-	db $08, $38, $49, $00
-	db $10, $00, $49, $00
-	db $10, $10, $49, $00
-	db $10, $20, $49, $00
-	db $10, $30, $49, $00
-
-FrameBlock62:
-	db $0f
-	db $00, $00, $49, $00
-	db $00, $10, $49, $00
-	db $00, $20, $49, $00
-	db $00, $30, $49, $00
-	db $08, $08, $49, $00
-	db $08, $18, $49, $00
-	db $08, $28, $49, $00
-	db $08, $38, $49, $00
-	db $10, $00, $49, $00
-	db $10, $10, $49, $00
-	db $10, $20, $49, $00
-	db $10, $30, $49, $00
-	db $18, $08, $49, $00
-	db $18, $18, $49, $00
-	db $18, $28, $49, $00
-	db $18, $38, $49, $00 ; unused
-
-FrameBlock63:
-	db $06
-	db $10, $00, $26, $00
-	db $10, $08, $27, $00
-	db $08, $10, $26, $00
-	db $08, $18, $27, $00
-	db $00, $20, $26, $00
-	db $00, $28, $27, $00
-
-FrameBlock64:
-	db $06
-	db $18, $00, $27, $00
-	db $10, $08, $26, $00
-	db $10, $10, $27, $00
-	db $08, $18, $26, $00
-	db $08, $20, $27, $00
-	db $00, $28, $26, $00
-
-FrameBlock65:
-	db $06
-	db $00, $00, $1c, $00
-	db $00, $08, $1d, $00
-	db $10, $00, $1c, $00
-	db $10, $08, $1d, $00
-	db $20, $00, $1c, $00
-	db $20, $08, $1d, $00
-
-FrameBlock66:
-	db $02
-	db $00, $00, $03, $00
-	db $08, $00, $13, $00
-
-FrameBlock67:
-	db $01
-	db $00, $00, $03, $00
-
-FrameBlock68:
-	db $04
-	db $00, $00, $03, $00
-	db $00, $08, $03, $20
-	db $08, $00, $13, $00
-	db $08, $08, $13, $20
-
-FrameBlock69:
-	db $01
-	db $00, $00, $06, $00
-
-FrameBlock6a:
-	db $08
-	db $00, $00, $2e, $00
-	db $00, $30, $2e, $20
-	db $30, $00, $2e, $40
-	db $30, $30, $2e, $60
-	db $00, $18, $2f, $00
-	db $30, $18, $2f, $40
-	db $18, $00, $3e, $00
-	db $18, $30, $3e, $20
-
-FrameBlock6b:
-	db $08
-	db $00, $00, $2e, $00
-	db $00, $20, $2e, $20
-	db $20, $00, $2e, $40
-	db $20, $20, $2e, $60
-	db $00, $10, $2f, $00
-	db $20, $10, $2f, $40
-	db $10, $00, $3e, $00
-	db $10, $20, $3e, $20
-
-FrameBlock6c:
-	db $08
-	db $00, $00, $2e, $00
-	db $00, $10, $2e, $20
-	db $10, $00, $2e, $40
-	db $10, $10, $2e, $60
-	db $00, $08, $2f, $00
-	db $10, $08, $2f, $40
-	db $08, $00, $3e, $00
-	db $08, $10, $3e, $20
-
-FrameBlock6d:
-	db $02
-	db $00, $00, $1e, $00
-	db $00, $08, $1f, $00
-
-FrameBlock6e:
-	db $04
-	db $00, $00, $48, $00
-	db $00, $08, $48, $20
-	db $08, $00, $12, $00
-	db $08, $08, $12, $20
-
-FrameBlock6f:
-	db $04
-	db $00, $00, $4a, $00
-	db $00, $08, $07, $00
-	db $08, $00, $16, $00
-	db $08, $08, $17, $00
-
-FrameBlock70:
-	db $04
-	db $00, $00, $07, $20
-	db $00, $08, $4a, $20
-	db $08, $00, $17, $20
-	db $08, $08, $16, $20
-
-FrameBlock76:
-	db $07
-	db $00, $10, $2f, $00
-	db $01, $08, $2f, $00
-	db $01, $18, $2f, $00
-	db $02, $00, $2e, $00
-	db $02, $20, $2e, $20
-	db $0a, $00, $3e, $00
-	db $0a, $20, $3e, $20
-
-FrameBlock77:
-	db $04
-	db $00, $02, $4b, $00
-	db $00, $0a, $4c, $00
-	db $08, $00, $4c, $60
-	db $08, $08, $4b, $60
-
-FrameBlock78:
-	db $01
-	db $00, $00, $4d, $00
-
-FrameBlock79:
-	db $01
-	db $00, $00, $4e, $00
-
-FrameBlockBaseCoords:
-	db $10, $68
-	db $10, $70
-	db $10, $78
-	db $10, $80
-	db $10, $88
-	db $10, $90
-	db $10, $98
-	db $18, $68
-	db $18, $70
-	db $18, $78
-	db $34, $28
-	db $18, $80
-	db $18, $88
-	db $18, $98
-	db $20, $68
-	db $20, $70
-	db $20, $78
-	db $20, $80
-	db $20, $88
-	db $20, $90
-	db $20, $98
-	db $28, $68
-	db $28, $70
-	db $28, $78
-	db $28, $80
-	db $28, $88
-	db $30, $68
-	db $30, $70
-	db $30, $78
-	db $30, $80
-	db $30, $90
-	db $30, $98
-	db $38, $68
-	db $38, $78
-	db $38, $80
-	db $38, $88
-	db $40, $68
-	db $40, $70
-	db $40, $78
-	db $40, $80
-	db $40, $88
-	db $40, $98
-	db $10, $60
-	db $18, $60
-	db $20, $60
-	db $28, $60
-	db $30, $60
-	db $40, $60
-	db $58, $28
-	db $43, $38
-	db $33, $48
-	db $20, $58
-	db $32, $78
-	db $58, $58
-	db $2C, $6C
-	db $34, $80
-	db $48, $70
-	db $42, $36
-	db $38, $44
-	db $40, $52
-	db $48, $60
-	db $3E, $6E
-	db $28, $7C
-	db $28, $8A
-	db $50, $3C
-	db $48, $50
-	db $40, $64
-	db $38, $38
-	db $50, $30
-	db $50, $38
-	db $50, $40
-	db $50, $48
-	db $50, $50
-	db $48, $58
-	db $50, $44
-	db $48, $48
-	db $48, $4C
-	db $40, $50
-	db $40, $54
-	db $38, $58
-	db $38, $5C
-	db $30, $64
-	db $48, $40
-	db $48, $39
-	db $24, $88
-	db $24, $70
-	db $1C, $70
-	db $1C, $88
-	db $34, $68
-	db $34, $88
-	db $68, $50
-	db $60, $50
-	db $68, $60
-	db $58, $50
-	db $60, $60
-	db $68, $40
-	db $40, $40
-	db $38, $40
-	db $0B, $60
-	db $44, $48
-	db $40, $14
-	db $48, $1C
-	db $50, $24
-	db $4C, $24
-	db $10, $62
-	db $12, $62
-	db $12, $60
-	db $20, $72
-	db $22, $72
-	db $22, $70
-	db $28, $62
-	db $50, $0A
-	db $52, $0A
-	db $38, $30
-	db $40, $48
-	db $30, $48
-	db $40, $30
-	db $30, $40
-	db $38, $48
-	db $40, $4A
-	db $48, $4B
-	db $50, $4C
-	db $58, $4D
-	db $60, $4D
-	db $68, $4D
-	db $38, $10
-	db $50, $10
-	db $38, $28
-	db $48, $18
-	db $40, $20
-	db $48, $20
-	db $40, $3C
-	db $38, $50
-	db $28, $64
-	db $1C, $90
-	db $24, $80
-	db $2C, $70
-	db $30, $38
-	db $10, $50
-	db $3C, $40
-	db $40, $58
-	db $30, $58
-	db $58, $48
-	db $50, $58
-	db $48, $68
-	db $40, $18
-	db $28, $58
-	db $40, $38
-	db $48, $38
-	db $08, $70
-	db $44, $1C
-	db $3C, $58
-	db $38, $60
-	db $08, $60
-	db $38, $70
-	db $38, $6C
-	db $38, $64
-	db $1C, $74
-	db $2E, $74
-	db $34, $50
-	db $2F, $60
-	db $31, $70
-	db $4C, $30
-	db $3B, $40
-	db $2D, $50
-	db $26, $60
-	db $2D, $70
-	db $28, $50
-	db $1E, $60
-	db $29, $70
-	db $16, $60
-	db $14, $58
-	db $12, $54
-	db $14, $50
-	db $18, $4C
-	db $1C, $48
-	db $48, $28
-
-FrameBlock00:
-	db $00, $00
+	battle_anim BARRAGE, SUBANIM_54, 0, 3
+	db -1 ; end
--- a/data/pokemon/dex_entries.asm
+++ b/data/pokemon/dex_entries.asm
@@ -1255,5 +1255,5 @@
 MissingNoDexEntry:
 	db "???@"
 	db 10 ; 1.0 m
-	db 100 ; 10.0 kg
-	text "コメント さくせいちゅう@" ; コメント作成中 (Comment to be written)
+	dw 100 ; 10.0 kg
+	db "コメント さくせいちゅう@" ; コメント作成中 (Comment to be written)
--- a/data/sprites/sprites.asm
+++ b/data/sprites/sprites.asm
@@ -6,75 +6,75 @@
 
 SpriteSheetPointerTable:
 	; graphics, tile count
-	overworld_sprite RedSprite, 12            ; SPRITE_RED
-	overworld_sprite BlueSprite, 12           ; SPRITE_BLUE
-	overworld_sprite OakSprite, 12            ; SPRITE_OAK
-	overworld_sprite BugCatcherSprite, 12     ; SPRITE_BUG_CATCHER
-	overworld_sprite SlowbroSprite, 12        ; SPRITE_SLOWBRO
-	overworld_sprite LassSprite, 12           ; SPRITE_LASS
-	overworld_sprite BlackHairBoy1Sprite, 12  ; SPRITE_BLACK_HAIR_BOY_1
-	overworld_sprite LittleGirlSprite, 12     ; SPRITE_LITTLE_GIRL
-	overworld_sprite BirdSprite, 12           ; SPRITE_BIRD
-	overworld_sprite FatBaldGuySprite, 12     ; SPRITE_FAT_BALD_GUY
-	overworld_sprite GamblerSprite, 12        ; SPRITE_GAMBLER
-	overworld_sprite BlackHairBoy2Sprite, 12  ; SPRITE_BLACK_HAIR_BOY_2
-	overworld_sprite GirlSprite, 12           ; SPRITE_GIRL
-	overworld_sprite HikerSprite, 12          ; SPRITE_HIKER
-	overworld_sprite FoulardWomanSprite, 12   ; SPRITE_FOULARD_WOMAN
-	overworld_sprite GentlemanSprite, 12      ; SPRITE_GENTLEMAN
-	overworld_sprite DaisySprite, 12          ; SPRITE_DAISY
-	overworld_sprite BikerSprite, 12          ; SPRITE_BIKER
-	overworld_sprite SailorSprite, 12         ; SPRITE_SAILOR
-	overworld_sprite CookSprite, 12           ; SPRITE_COOK
-	overworld_sprite BikeShopGuySprite, 12    ; SPRITE_BIKE_SHOP_GUY
-	overworld_sprite MrFujiSprite, 12         ; SPRITE_MR_FUJI
-	overworld_sprite GiovanniSprite, 12       ; SPRITE_GIOVANNI
-	overworld_sprite RocketSprite, 12         ; SPRITE_ROCKET
-	overworld_sprite MediumSprite, 12         ; SPRITE_MEDIUM
-	overworld_sprite WaiterSprite, 12         ; SPRITE_WAITER
-	overworld_sprite ErikaSprite, 12          ; SPRITE_ERIKA
-	overworld_sprite MomGeishaSprite, 12      ; SPRITE_MOM_GEISHA
-	overworld_sprite BrunetteGirlSprite, 12   ; SPRITE_BRUNETTE_GIRL
-	overworld_sprite LanceSprite, 12          ; SPRITE_LANCE
-	overworld_sprite OakAideSprite, 12        ; SPRITE_OAK_SCIENTIST_AIDE
-	overworld_sprite OakAideSprite, 12        ; SPRITE_OAK_AIDE
-	overworld_sprite RockerSprite, 12         ; SPRITE_ROCKER
-	overworld_sprite SwimmerSprite, 12        ; SPRITE_SWIMMER
-	overworld_sprite WhitePlayerSprite, 12    ; SPRITE_WHITE_PLAYER
-	overworld_sprite GymHelperSprite, 12      ; SPRITE_GYM_HELPER
-	overworld_sprite OldPersonSprite, 12      ; SPRITE_OLD_PERSON
-	overworld_sprite MartGuySprite, 12        ; SPRITE_MART_GUY
-	overworld_sprite FisherSprite, 12         ; SPRITE_FISHER
-	overworld_sprite OldMediumWomanSprite, 12 ; SPRITE_OLD_MEDIUM_WOMAN
-	overworld_sprite NurseSprite, 12          ; SPRITE_NURSE
-	overworld_sprite CableClubWomanSprite, 12 ; SPRITE_CABLE_CLUB_WOMAN
-	overworld_sprite MrMasterballSprite, 12   ; SPRITE_MR_MASTERBALL
-	overworld_sprite LaprasGiverSprite, 12    ; SPRITE_LAPRAS_GIVER
-	overworld_sprite WardenSprite, 12         ; SPRITE_WARDEN
-	overworld_sprite SsCaptainSprite, 12      ; SPRITE_SS_CAPTAIN
-	overworld_sprite Fisher2Sprite, 12        ; SPRITE_FISHER2
-	overworld_sprite BlackbeltSprite, 12      ; SPRITE_BLACKBELT
-	overworld_sprite GuardSprite, 12          ; SPRITE_GUARD
-	overworld_sprite GuardSprite, 12          ; $32
-	overworld_sprite MomSprite, 12            ; SPRITE_MOM
-	overworld_sprite BaldingGuySprite, 12     ; SPRITE_BALDING_GUY
-	overworld_sprite YoungBoySprite, 12       ; SPRITE_YOUNG_BOY
-	overworld_sprite GameboyKidSprite, 12     ; SPRITE_GAMEBOY_KID
-	overworld_sprite GameboyKidSprite, 12     ; SPRITE_GAMEBOY_KID_COPY
-	overworld_sprite ClefairySprite, 12       ; SPRITE_CLEFAIRY
-	overworld_sprite AgathaSprite, 12         ; SPRITE_AGATHA
-	overworld_sprite BrunoSprite, 12          ; SPRITE_BRUNO
-	overworld_sprite LoreleiSprite, 12        ; SPRITE_LORELEI
-	overworld_sprite SeelSprite, 12           ; SPRITE_SEEL
-	overworld_sprite BallSprite, 4            ; SPRITE_BALL
-	overworld_sprite OmanyteSprite, 4         ; SPRITE_OMANYTE
-	overworld_sprite BoulderSprite, 4         ; SPRITE_BOULDER
-	overworld_sprite PaperSheetSprite, 4      ; SPRITE_PAPER_SHEET
-	overworld_sprite BookMapDexSprite, 4      ; SPRITE_BOOK_MAP_DEX
-	overworld_sprite ClipboardSprite, 4       ; SPRITE_CLIPBOARD
-	overworld_sprite SnorlaxSprite, 4         ; SPRITE_SNORLAX
-	overworld_sprite OldAmberSprite, 4        ; SPRITE_OLD_AMBER_COPY
-	overworld_sprite OldAmberSprite, 4        ; SPRITE_OLD_AMBER
-	overworld_sprite LyingOldManSprite, 4     ; SPRITE_LYING_OLD_MAN_UNUSED_1
-	overworld_sprite LyingOldManSprite, 4     ; SPRITE_LYING_OLD_MAN_UNUSED_2
-	overworld_sprite LyingOldManSprite, 4     ; SPRITE_LYING_OLD_MAN
+	overworld_sprite RedSprite, 12              ; SPRITE_RED
+	overworld_sprite BlueSprite, 12             ; SPRITE_BLUE
+	overworld_sprite OakSprite, 12              ; SPRITE_OAK
+	overworld_sprite YoungsterSprite, 12        ; SPRITE_YOUNGSTER
+	overworld_sprite MonsterSprite, 12          ; SPRITE_MONSTER
+	overworld_sprite CooltrainerFSprite, 12     ; SPRITE_COOLTRAINER_F
+	overworld_sprite CooltrainerMSprite, 12     ; SPRITE_COOLTRAINER_M
+	overworld_sprite LittleGirlSprite, 12       ; SPRITE_LITTLE_GIRL
+	overworld_sprite BirdSprite, 12             ; SPRITE_BIRD
+	overworld_sprite MiddleAgedManSprite, 12    ; SPRITE_MIDDLE_AGED_MAN
+	overworld_sprite GamblerSprite, 12          ; SPRITE_GAMBLER
+	overworld_sprite SuperNerdSprite, 12        ; SPRITE_SUPER_NERD
+	overworld_sprite GirlSprite, 12             ; SPRITE_GIRL
+	overworld_sprite HikerSprite, 12            ; SPRITE_HIKER
+	overworld_sprite BeautySprite, 12           ; SPRITE_BEAUTY
+	overworld_sprite GentlemanSprite, 12        ; SPRITE_GENTLEMAN
+	overworld_sprite DaisySprite, 12            ; SPRITE_DAISY
+	overworld_sprite BikerSprite, 12            ; SPRITE_BIKER
+	overworld_sprite SailorSprite, 12           ; SPRITE_SAILOR
+	overworld_sprite CookSprite, 12             ; SPRITE_COOK
+	overworld_sprite BikeShopClerkSprite, 12    ; SPRITE_BIKE_SHOP_CLERK
+	overworld_sprite MrFujiSprite, 12           ; SPRITE_MR_FUJI
+	overworld_sprite GiovanniSprite, 12         ; SPRITE_GIOVANNI
+	overworld_sprite RocketSprite, 12           ; SPRITE_ROCKET
+	overworld_sprite ChannelerSprite, 12        ; SPRITE_CHANNELER
+	overworld_sprite WaiterSprite, 12           ; SPRITE_WAITER
+	overworld_sprite ErikaSprite, 12            ; SPRITE_ERIKA
+	overworld_sprite MiddleAgedWomanSprite, 12  ; SPRITE_MIDDLE_AGED_WOMAN
+	overworld_sprite BrunetteGirlSprite, 12     ; SPRITE_BRUNETTE_GIRL
+	overworld_sprite LanceSprite, 12            ; SPRITE_LANCE
+	overworld_sprite ScientistSprite, 12        ; SPRITE_UNUSED_SCIENTIST
+	overworld_sprite ScientistSprite, 12        ; SPRITE_SCIENTIST
+	overworld_sprite RockerSprite, 12           ; SPRITE_ROCKER
+	overworld_sprite SwimmerSprite, 12          ; SPRITE_SWIMMER
+	overworld_sprite SafariZoneWorkerSprite, 12 ; SPRITE_SAFARI_ZONE_WORKER
+	overworld_sprite GymGuideSprite, 12         ; SPRITE_GYM_GUIDE
+	overworld_sprite GrampsSprite, 12           ; SPRITE_GRAMPS
+	overworld_sprite ClerkSprite, 12            ; SPRITE_CLERK
+	overworld_sprite FishingGuruSprite, 12      ; SPRITE_FISHING_GURU
+	overworld_sprite GrannySprite, 12           ; SPRITE_GRANNY
+	overworld_sprite NurseSprite, 12            ; SPRITE_NURSE
+	overworld_sprite LinkReceptionistSprite, 12 ; SPRITE_LINK_RECEPTIONIST
+	overworld_sprite SilphPresidentSprite, 12   ; SPRITE_SILPH_PRESIDENT
+	overworld_sprite SilphWorkerSprite, 12      ; SPRITE_SILPH_WORKER
+	overworld_sprite WardenSprite, 12           ; SPRITE_WARDEN
+	overworld_sprite CaptainSprite, 12          ; SPRITE_CAPTAIN
+	overworld_sprite FisherSprite, 12           ; SPRITE_FISHER
+	overworld_sprite KogaSprite, 12             ; SPRITE_KOGA
+	overworld_sprite GuardSprite, 12            ; SPRITE_GUARD
+	overworld_sprite GuardSprite, 12            ; SPRITE_UNUSED_GUARD
+	overworld_sprite MomSprite, 12              ; SPRITE_MOM
+	overworld_sprite BaldingGuySprite, 12       ; SPRITE_BALDING_GUY
+	overworld_sprite LittleBoySprite, 12        ; SPRITE_LITTLE_BOY
+	overworld_sprite GameboyKidSprite, 12       ; SPRITE_UNUSED_GAMEBOY_KID
+	overworld_sprite GameboyKidSprite, 12       ; SPRITE_GAMEBOY_KID
+	overworld_sprite FairySprite, 12            ; SPRITE_FAIRY
+	overworld_sprite AgathaSprite, 12           ; SPRITE_AGATHA
+	overworld_sprite BrunoSprite, 12            ; SPRITE_BRUNO
+	overworld_sprite LoreleiSprite, 12          ; SPRITE_LORELEI
+	overworld_sprite SeelSprite, 12             ; SPRITE_SEEL
+	overworld_sprite PokeBallSprite, 4          ; SPRITE_POKE_BALL
+	overworld_sprite FossilSprite, 4            ; SPRITE_FOSSIL
+	overworld_sprite BoulderSprite, 4           ; SPRITE_BOULDER
+	overworld_sprite PaperSprite, 4             ; SPRITE_PAPER
+	overworld_sprite PokedexSprite, 4           ; SPRITE_POKEDEX
+	overworld_sprite ClipboardSprite, 4         ; SPRITE_CLIPBOARD
+	overworld_sprite SnorlaxSprite, 4           ; SPRITE_SNORLAX
+	overworld_sprite OldAmberSprite, 4          ; SPRITE_UNUSED_OLD_AMBER
+	overworld_sprite OldAmberSprite, 4          ; SPRITE_OLD_AMBER
+	overworld_sprite GamblerAsleepSprite, 4     ; SPRITE_UNUSED_GAMBLER_ASLEEP_1
+	overworld_sprite GamblerAsleepSprite, 4     ; SPRITE_UNUSED_GAMBLER_ASLEEP_2
+	overworld_sprite GamblerAsleepSprite, 4     ; SPRITE_GAMBLER_ASLEEP
--- /dev/null
+++ b/data/tilemaps.asm
@@ -1,0 +1,46 @@
+tile_ids: MACRO
+	dw \1
+	dn \3, \2
+ENDM
+
+TileIDListPointerTable:
+; entries correspond to TILEMAP_* constants (see constants/gfx_constants.asm)
+	; tilemap pointer, width, height
+	tile_ids MonTiles,               7,  7
+	tile_ids SlideDownMonTiles_7x5,  7,  5
+	tile_ids SlideDownMonTiles_7x3,  7,  3
+	tile_ids GengarIntroTiles1,      7,  7
+	tile_ids GengarIntroTiles2,      7,  7
+	tile_ids GengarIntroTiles3,      7,  7
+	tile_ids GameBoyTiles,           6,  8
+	tile_ids LinkCableTiles,        12,  3
+
+DownscaledMonTiles_5x5:
+	INCBIN "gfx/pokemon/downscaled_5x5.tilemap"
+
+DownscaledMonTiles_3x3:
+	INCBIN "gfx/pokemon/downscaled_3x3.tilemap"
+
+MonTiles:
+	INCBIN "gfx/pokemon/front.tilemap"
+
+SlideDownMonTiles_7x5:
+	INCBIN "gfx/pokemon/slide_down_7x5.tilemap"
+
+SlideDownMonTiles_7x3:
+	INCBIN "gfx/pokemon/slide_down_7x3.tilemap"
+
+GengarIntroTiles1:
+	INCBIN "gfx/intro_credits/gengar_1.tilemap"
+
+GengarIntroTiles2:
+	INCBIN "gfx/intro_credits/gengar_2.tilemap"
+
+GengarIntroTiles3:
+	INCBIN "gfx/intro_credits/gengar_3.tilemap"
+
+GameBoyTiles:
+	INCBIN "gfx/trade/game_boy.tilemap"
+
+LinkCableTiles:
+	INCBIN "gfx/trade/link_cable.tilemap"
--- a/data/trainers/ai_pointers.asm
+++ b/data/trainers/ai_pointers.asm
@@ -15,7 +15,7 @@
 	dbw 3, GenericAI
 	dbw 3, GenericAI
 	dbw 3, GenericAI
-	dbw 3, JugglerAI ; juggler_x
+	dbw 3, JugglerAI ; unused_juggler
 	dbw 3, GenericAI
 	dbw 3, GenericAI
 	dbw 3, GenericAI
--- a/data/trainers/encounter_types.asm
+++ b/data/trainers/encounter_types.asm
@@ -6,7 +6,7 @@
 	db -1 ; end
 
 EvilTrainerList::
-	db OPP_JUGGLER_X
+	db OPP_UNUSED_JUGGLER
 	db OPP_GAMBLER
 	db OPP_ROCKER
 	db OPP_JUGGLER
--- a/data/trainers/move_choices.asm
+++ b/data/trainers/move_choices.asm
@@ -20,7 +20,7 @@
 	move_choices 1       ; BIKER
 	move_choices 1, 3    ; BURGLAR
 	move_choices 1       ; ENGINEER
-	move_choices 1, 2    ; JUGGLER_X
+	move_choices 1, 2    ; UNUSED_JUGGLER
 	move_choices 1, 3    ; FISHER
 	move_choices 1, 3    ; SWIMMER
 	move_choices         ; CUE_BALL
@@ -32,7 +32,7 @@
 	move_choices 1       ; TAMER
 	move_choices 1       ; BIRD_KEEPER
 	move_choices 1       ; BLACKBELT
-	move_choices 1       ; SONY1
+	move_choices 1       ; RIVAL1
 	move_choices 1, 3    ; PROF_OAK
 	move_choices 1, 2    ; CHIEF
 	move_choices 1, 2    ; SCIENTIST
@@ -49,8 +49,8 @@
 	move_choices 1, 3    ; BLAINE
 	move_choices 1, 3    ; SABRINA
 	move_choices 1, 2    ; GENTLEMAN
-	move_choices 1, 3    ; SONY2
-	move_choices 1, 3    ; SONY3
+	move_choices 1, 3    ; RIVAL2
+	move_choices 1, 3    ; RIVAL3
 	move_choices 1, 2, 3 ; LORELEI
 	move_choices 1       ; CHANNELER
 	move_choices 1       ; AGATHA
--- a/data/trainers/name_pointers.asm
+++ b/data/trainers/name_pointers.asm
@@ -12,7 +12,7 @@
 	dw wTrainerName
 	dw .BurglarName
 	dw .EngineerName
-	dw .JugglerXName
+	dw .UnusedJugglerName
 	dw wTrainerName
 	dw .SwimmerName
 	dw wTrainerName
@@ -48,24 +48,24 @@
 	dw wTrainerName
 	dw wTrainerName
 
-.YoungsterName:    db "YOUNGSTER@"
-.BugCatcherName:   db "BUG CATCHER@"
-.LassName:         db "LASS@"
-.JrTrainerMName:   db "JR.TRAINER♂@"
-.JrTrainerFName:   db "JR.TRAINER♀@"
-.PokemaniacName:   db "POKéMANIAC@"
-.SuperNerdName:    db "SUPER NERD@"
-.BurglarName:      db "BURGLAR@"
-.EngineerName:     db "ENGINEER@"
-.JugglerXName:     db "JUGGLER@"
-.SwimmerName:      db "SWIMMER@"
-.BeautyName:       db "BEAUTY@"
-.RockerName:       db "ROCKER@"
-.JugglerName:      db "JUGGLER@"
-.BlackbeltName:    db "BLACKBELT@"
-.ProfOakName:      db "PROF.OAK@"
-.ChiefName:        db "CHIEF@"
-.ScientistName:    db "SCIENTIST@"
-.RocketName:       db "ROCKET@"
-.CooltrainerMName: db "COOLTRAINER♂@"
-.CooltrainerFName: db "COOLTRAINER♀@"
+.YoungsterName:     db "YOUNGSTER@"
+.BugCatcherName:    db "BUG CATCHER@"
+.LassName:          db "LASS@"
+.JrTrainerMName:    db "JR.TRAINER♂@"
+.JrTrainerFName:    db "JR.TRAINER♀@"
+.PokemaniacName:    db "POKéMANIAC@"
+.SuperNerdName:     db "SUPER NERD@"
+.BurglarName:       db "BURGLAR@"
+.EngineerName:      db "ENGINEER@"
+.UnusedJugglerName: db "JUGGLER@"
+.SwimmerName:       db "SWIMMER@"
+.BeautyName:        db "BEAUTY@"
+.RockerName:        db "ROCKER@"
+.JugglerName:       db "JUGGLER@"
+.BlackbeltName:     db "BLACKBELT@"
+.ProfOakName:       db "PROF.OAK@"
+.ChiefName:         db "CHIEF@"
+.ScientistName:     db "SCIENTIST@"
+.RocketName:        db "ROCKET@"
+.CooltrainerMName:  db "COOLTRAINER♂@"
+.CooltrainerFName:  db "COOLTRAINER♀@"
--- a/data/trainers/parties.asm
+++ b/data/trainers/parties.asm
@@ -11,7 +11,7 @@
 	dw BikerData
 	dw BurglarData
 	dw EngineerData
-	dw Juggler1Data
+	dw UnusedJugglerData
 	dw FisherData
 	dw SwimmerData
 	dw CueBallData
@@ -308,7 +308,7 @@
 	db 21, MAGNEMITE, 0
 	db 18, MAGNEMITE, MAGNEMITE, MAGNETON, 0
 
-Juggler1Data:
+UnusedJugglerData:
 ; none
 
 FisherData:
--- a/engine/battle/animations.asm
+++ b/engine/battle/animations.asm
@@ -17,11 +17,11 @@
 	ld [wFBTileCounter], a
 	ld a, [wSubAnimTransform]
 	dec a
-	jr z, .flipHorizontalAndVertical   ; 1
+	jr z, .flipHorizontalAndVertical   ; SUBANIMTYPE_HVFLIP
 	dec a
-	jp z, .flipHorizontalTranslateDown ; 2
+	jp z, .flipHorizontalTranslateDown ; SUBANIMTYPE_HFLIP
 	dec a
-	jr z, .flipBaseCoords              ; 3
+	jr z, .flipBaseCoords              ; SUBANIMTYPE_COORDFLIP
 .noTransformation
 	ld a, [wBaseCoordY]
 	add [hl]
@@ -43,7 +43,7 @@
 	ld b, a
 	ld a, 168
 	sub b ; flip X base coordinate
-.finishCopying ; finish copying values to OAM (when [wSubAnimTransform] not 1 or 2)
+.finishCopying ; finish copying values to OAM (when subanimation not transformed)
 	add [hl] ; X offset
 	ld [de], a ; store X
 	inc hl
@@ -132,15 +132,15 @@
 	jp nz, .loop ; go back up if there are more tiles to draw
 .afterDrawingTiles
 	ld a, [wFBMode]
-	cp 2
+	cp FRAMEBLOCKMODE_02
 	jr z, .advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer
 	ld a, [wSubAnimFrameDelay]
 	ld c, a
 	call DelayFrames
 	ld a, [wFBMode]
-	cp 3
+	cp FRAMEBLOCKMODE_03
 	jr z, .advanceFrameBlockDestAddr ; skip cleaning OAM buffer
-	cp 4
+	cp FRAMEBLOCKMODE_04
 	jr z, .done ; skip cleaning OAM buffer and don't advance the frame block destination address
 	ld a, [wAnimationID]
 	cp GROWL
@@ -177,9 +177,9 @@
 	ld l, a
 .animationLoop
 	ld a, [hli]
-	cp $FF
+	cp -1
 	jr z, .AnimationOver
-	cp $C0 ; is this subanimation or a special effect?
+	cp FIRST_SE_ID ; is this subanimation or a special effect?
 	jr c, .playSubanimation
 .doSpecialEffect
 	ld c, a
@@ -194,7 +194,7 @@
 	jr .searchSpecialEffectTableLoop
 .foundMatch
 	ld a, [hli]
-	cp $FF ; is there a sound to play?
+	cp NO_MOVE - 1 ; is there a sound to play?
 	jr z, .skipPlayingSound
 	ld [wAnimSoundID], a ; store sound
 	push hl
@@ -267,11 +267,11 @@
 	ld d, a ; de = address of subanimation
 	ld a, [de]
 	ld b, a
-	and 31
+	and %00011111
 	ld [wSubAnimCounter], a ; number of frame blocks
 	ld a, b
 	and %11100000
-	cp 5 << 5 ; is subanimation type 5?
+	cp SUBANIMTYPE_ENEMY << 5
 	jr nz, .isNotType5
 .isType5
 	call GetSubanimationTransform2
@@ -283,7 +283,7 @@
 	srl a
 	swap a
 	ld [wSubAnimTransform], a
-	cp 4 ; is the animation reversed?
+	cp SUBANIMTYPE_REVERSE
 	ld hl, 0
 	jr nz, .storeSubentryAddr
 ; if the animation is reversed, then place the initial subentry address at the end of the list of subentries
@@ -303,8 +303,8 @@
 	ld [wSubAnimSubEntryAddr + 1], a
 	ret
 
-; called if the subanimation type is not 5
-; sets the transform to 0 (i.e. no transform) if it's the player's turn
+; called if the subanimation type is not SUBANIMTYPE_ENEMY
+; sets the transform to SUBANIMTYPE_NORMAL if it's the player's turn
 ; sets the transform to the subanimation type if it's the enemy's turn
 GetSubanimationTransform1:
 	ld b, a
@@ -312,18 +312,18 @@
 	and a
 	ld a, b
 	ret nz
-	xor a
+	xor a ; SUBANIMTYPE_NORMAL << 5
 	ret
 
-; called if the subanimation type is 5
-; sets the transform to 2 (i.e. horizontal and vertical flip) if it's the player's turn
-; sets the transform to 0 (i.e. no transform) if it's the enemy's turn
+; called if the subanimation type is SUBANIMTYPE_ENEMY
+; sets the transform to SUBANIMTYPE_HFLIP if it's the player's turn
+; sets the transform to SUBANIMTYPE_NORMAL if it's the enemy's turn
 GetSubanimationTransform2:
 	ldh a, [hWhoseTurn]
 	and a
-	ld a, 2 << 5
+	ld a, SUBANIMTYPE_HFLIP << 5
 	ret z
-	xor a
+	xor a ; SUBANIMTYPE_NORMAL << 5
 	ret
 
 ; loads tile patterns for battle animations
@@ -347,19 +347,18 @@
 	ld c, a ; number of tiles
 	jp CopyVideoData ; load tileset
 
+anim_tileset: MACRO
+	db \1
+	dw \2
+	db -1 ; padding
+ENDM
+
 AnimationTilesetPointers:
-	db 79 ; number of tiles
-	dw AnimationTileset1
-	db $FF
+	; number of tiles, gfx pointer
+	anim_tileset 79, AnimationTileset1
+	anim_tileset 79, AnimationTileset2
+	anim_tileset 64, AnimationTileset1
 
-	db 79 ; number of tiles
-	dw AnimationTileset2
-	db $FF
-
-	db 64 ; number of tiles
-	dw AnimationTileset1
-	db $FF
-
 AnimationTileset1:
 	INCBIN "gfx/battle/attack_anim_1.2bpp"
 
@@ -412,7 +411,7 @@
 	ld [wSubAnimSubEntryAddr], a
 	ld [wUnusedD09B], a
 	ld [wSubAnimTransform], a
-	dec a
+	dec a ; NO_MOVE - 1
 	ld [wAnimSoundID], a
 	pop af
 	pop bc
@@ -461,10 +460,10 @@
 	jp hl
 
 AnimationTypePointerTable:
-	dw ShakeScreenVertically ; enemy mon has used a damaging move without a side effect
+	dw ShakeScreenVertically        ; enemy mon has used a damaging move without a side effect
 	dw ShakeScreenHorizontallyHeavy ; enemy mon has used a damaging move with a side effect
-	dw ShakeScreenHorizontallySlow ; enemy mon has used a non-damaging move
-	dw BlinkEnemyMonSprite ; player mon has used a damaging move without a side effect
+	dw ShakeScreenHorizontallySlow  ; enemy mon has used a non-damaging move
+	dw BlinkEnemyMonSprite          ; player mon has used a damaging move without a side effect
 	dw ShakeScreenHorizontallyLight ; player mon has used a damaging move with a side effect
 	dw ShakeScreenHorizontallySlow2 ; player mon has used a non-damaging move
 
@@ -549,7 +548,7 @@
 
 PlaySubanimation:
 	ld a, [wAnimSoundID]
-	cp $FF
+	cp NO_MOVE - 1
 	jr z, .skipPlayingSound
 	call GetMoveSound
 	call PlaySound
@@ -601,7 +600,7 @@
 	ld a, [wSubAnimSubEntryAddr]
 	ld l, a
 	ld a, [wSubAnimTransform]
-	cp 4 ; is the animation reversed?
+	cp SUBANIMTYPE_REVERSE
 	ld bc, 3
 	jr nz, .nextSubanimationSubentry
 	ld bc, -3
@@ -650,7 +649,7 @@
 	pop hl
 	ret
 
-INCLUDE "data/moves/animation_special_effects.asm"
+INCLUDE "data/battle_anims/special_effects.asm"
 
 DoBallTossSpecialEffects:
 	ld a, [wcf91]
@@ -912,7 +911,7 @@
 	ld c, 20
 	jp DelayFrames
 
-INCLUDE "data/moves/animation_special_effect_pointers.asm"
+INCLUDE "data/battle_anims/special_effect_pointers.asm"
 
 AnimationDelay10:
 	ld c, 10
@@ -1149,7 +1148,7 @@
 
 AnimationSlideMonDown:
 ; Slides the mon's sprite down out of the screen.
-	xor a
+	xor a ; TILEMAP_MON_PIC
 	call GetTileIDList
 .loop
 	call GetMonSpriteTileMapPointerFromRowCount
@@ -1356,7 +1355,7 @@
 	jp CallWithTurnFlipped
 
 AnimationShowMonPic:
-	xor a
+	xor a ; TILEMAP_MON_PIC
 	call GetTileIDList
 	call GetMonSpriteTileMapPointerFromRowCount
 	call CopyPicTiles
@@ -1380,7 +1379,7 @@
 	decoord 13, 0
 
 .next
-	xor a
+	xor a ; TILEMAP_MON_PIC
 	ld c, $10
 .loop
 	push af
@@ -1425,7 +1424,7 @@
 	jr z, .next
 	hlcoord 11, 0
 .next
-	xor a
+	xor a ; TILEMAP_MON_PIC
 	push hl
 	call GetTileIDList
 	pop hl
@@ -1716,8 +1715,8 @@
 
 AnimationSlideMonDownAndHide:
 ; Slides the mon's sprite down and disappears. Used in Acid Armor.
-	ld a, $1
-	ld c, $2
+	ld a, TILEMAP_SLIDE_DOWN_MON_PIC_7X5
+	ld c, 2
 .loop
 	push bc
 	push af
@@ -1736,7 +1735,7 @@
 	jr nz, .loop
 	call AnimationHideMonPic
 	ld hl, wTempPic
-	ld bc, $310
+	ld bc, 7 * 7 tiles
 	xor a
 	call FillMemory
 	jp CopyTempPicToMonPic
@@ -1902,39 +1901,39 @@
 	ldh a, [hWhoseTurn]
 	and a
 	jr z, .playerTurn
-	ld hl, SlowbroSprite ; facing down sprite
+	ld hl, MonsterSprite tile 0 ; facing down sprite
 	ld de, wTempPic + $120
-	call CopySlowbroSpriteData
-	ld hl, SlowbroSprite + $10
+	call CopyMonsterSpriteData
+	ld hl, MonsterSprite tile 1
 	ld de, wTempPic + $120 + $70
-	call CopySlowbroSpriteData
-	ld hl, SlowbroSprite + $20
+	call CopyMonsterSpriteData
+	ld hl, MonsterSprite tile 2
 	ld de, wTempPic + $120 + $10
-	call CopySlowbroSpriteData
-	ld hl, SlowbroSprite + $30
+	call CopyMonsterSpriteData
+	ld hl, MonsterSprite tile 3
 	ld de, wTempPic + $120 + $10 + $70
-	call CopySlowbroSpriteData
+	call CopyMonsterSpriteData
 	jr .next
 .playerTurn
-	ld hl, SlowbroSprite + $40 ; facing up sprite
+	ld hl, MonsterSprite tile 4 ; facing up sprite
 	ld de, wTempPic + $120 + $70
-	call CopySlowbroSpriteData
-	ld hl, SlowbroSprite + $50
+	call CopyMonsterSpriteData
+	ld hl, MonsterSprite tile 5
 	ld de, wTempPic + $120 + $e0
-	call CopySlowbroSpriteData
-	ld hl, SlowbroSprite + $60
+	call CopyMonsterSpriteData
+	ld hl, MonsterSprite tile 6
 	ld de, wTempPic + $120 + $80
-	call CopySlowbroSpriteData
-	ld hl, SlowbroSprite + $70
+	call CopyMonsterSpriteData
+	ld hl, MonsterSprite tile 7
 	ld de, wTempPic + $120 + $f0
-	call CopySlowbroSpriteData
+	call CopyMonsterSpriteData
 .next
 	call CopyTempPicToMonPic
 	jp AnimationShowMonPic
 
-CopySlowbroSpriteData:
-	ld bc, $10
-	ld a, BANK(SlowbroSprite)
+CopyMonsterSpriteData:
+	ld bc, 1 tiles
+	ld a, BANK(MonsterSprite)
 	jp FarCopyData2
 
 HideSubstituteShowMonAnim:
@@ -2008,7 +2007,7 @@
 	ld [wd0b5], a
 	call GetMonHeader
 	predef LoadMonBackPic
-	xor a
+	xor a ; TILEMAP_MON_PIC
 	call GetTileIDList
 	call GetMonSpriteTileMapPointerFromRowCount
 	call CopyPicTiles
@@ -2266,98 +2265,7 @@
 	pop hl
 	ret
 
-TileIDListPointerTable:
-	dw Unknown_79b24
-	dn 7, 7
-	dw Unknown_79b55
-	dn 5, 7
-	dw Unknown_79b78
-	dn 3, 7
-	dw GengarIntroTiles1
-	dn 7, 7
-	dw GengarIntroTiles2
-	dn 7, 7
-	dw GengarIntroTiles3
-	dn 7, 7
-	dw Unknown_79c20
-	dn 8, 6
-	dw Unknown_79c50
-	dn 3, 12
-
-DownscaledMonTiles_5x5:
-	db $31,$38,$46,$54,$5B
-	db $32,$39,$47,$55,$5C
-	db $34,$3B,$49,$57,$5E
-	db $36,$3D,$4B,$59,$60
-	db $37,$3E,$4C,$5A,$61
-
-DownscaledMonTiles_3x3:
-	db $31,$46,$5B
-	db $34,$49,$5E
-	db $37,$4C,$61
-
-Unknown_79b24:
-	db $00,$07,$0E,$15,$1C,$23,$2A
-	db $01,$08,$0F,$16,$1D,$24,$2B
-	db $02,$09,$10,$17,$1E,$25,$2C
-	db $03,$0A,$11,$18,$1F,$26,$2D
-	db $04,$0B,$12,$19,$20,$27,$2E
-	db $05,$0C,$13,$1A,$21,$28,$2F
-	db $06,$0D,$14,$1B,$22,$29,$30
-
-Unknown_79b55:
-	db $00,$07,$0E,$15,$1C,$23,$2A
-	db $01,$08,$0F,$16,$1D,$24,$2B
-	db $03,$0A,$11,$18,$1F,$26,$2D
-	db $04,$0B,$12,$19,$20,$27,$2E
-	db $05,$0C,$13,$1A,$21,$28,$2F
-
-Unknown_79b78:
-	db $00,$07,$0E,$15,$1C,$23,$2A
-	db $02,$09,$10,$17,$1E,$25,$2C
-	db $04,$0B,$12,$19,$20,$27,$2E
-
-GengarIntroTiles1:
-	db $00,$00,$00,$00,$00,$00,$00
-	db $00,$00,$00,$00,$00,$19,$00
-	db $02,$06,$0B,$10,$14,$1A,$00
-	db $00,$07,$0C,$11,$15,$1B,$00
-	db $03,$08,$0D,$12,$16,$1C,$00
-	db $04,$09,$0E,$13,$17,$1D,$1F
-	db $05,$0A,$0F,$01,$18,$1E,$20
-
-GengarIntroTiles2:
-	db $00,$00,$00,$30,$00,$37,$00
-	db $00,$00,$2B,$31,$34,$38,$3D
-	db $21,$26,$2C,$01,$35,$39,$3E
-	db $22,$27,$2D,$32,$36,$01,$00
-	db $23,$28,$2E,$33,$01,$3A,$00
-	db $24,$29,$2F,$01,$01,$3B,$00
-	db $25,$2A,$01,$01,$01,$3C,$00
-
-GengarIntroTiles3:
-	db $00,$00,$00,$00,$00,$00,$00
-	db $00,$00,$47,$4D,$00,$00,$00
-	db $00,$00,$48,$4E,$52,$56,$5B
-	db $3F,$43,$49,$4F,$53,$57,$5C
-	db $40,$44,$4A,$50,$54,$58,$00
-	db $41,$45,$4B,$51,$4C,$59,$5D
-	db $42,$46,$4C,$4C,$55,$5A,$5E
-
-Unknown_79c20:
-	db $31,$32,$32,$32,$32,$33
-	db $34,$35,$36,$36,$37,$38
-	db $34,$39,$3A,$3A,$3B,$38
-	db $3C,$3D,$3E,$3E,$3F,$40
-	db $41,$42,$43,$43,$44,$45
-	db $46,$47,$43,$48,$49,$4A
-	db $41,$43,$4B,$4C,$4D,$4E
-	db $4F,$50,$50,$50,$51,$52
-
-Unknown_79c50:
-	db $43,$55,$56,$53,$53,$53,$53,$53,$53,$53,$53,$53
-	db $43,$57,$58,$54,$54,$54,$54,$54,$54,$54,$54,$54
-	db $43,$59,$5A,$43,$43,$43,$43,$43,$43,$43,$43,$43
+INCLUDE "data/tilemaps.asm"
 
 AnimationLeavesFalling:
 ; Makes leaves float down from the top of the screen. This is used
--- a/engine/battle/battle_transitions.asm
+++ b/engine/battle/battle_transitions.asm
@@ -326,7 +326,7 @@
 	ld hl, BattleTransition_FlashScreenPalettes
 .loop
 	ld a, [hli]
-	cp $1
+	cp 1
 	jr z, .done
 	ldh [rBGP], a
 	ld c, 2
@@ -339,7 +339,7 @@
 
 BattleTransition_FlashScreenPalettes:
 	db $F9,$FE,$FF,$FE,$F9,$E4,$90,$40,$00,$40,$90,$E4
-	db $01 ; terminator
+	db 1 ; end
 
 ; used for low level trainer dungeon battles
 BattleTransition_Shrink:
@@ -649,87 +649,36 @@
 	ld l, a
 	jp BattleTransition_Circle_Sub3
 
+half_circle: MACRO
+	; quadrant x, circle data, target coord
+	db \1
+	dw \2
+	dwcoord \3, \4
+ENDM
+
 BattleTransition_HalfCircle1:
-	db $01
-	dw BattleTransition_CircleData1
-	dwcoord 18, 6
+	half_circle $01, BattleTransition_CircleData1, 18,  6
+	half_circle $01, BattleTransition_CircleData2, 19,  3
+	half_circle $01, BattleTransition_CircleData3, 18,  0
+	half_circle $01, BattleTransition_CircleData4, 14,  0
+	half_circle $01, BattleTransition_CircleData5, 10,  0
+	half_circle $00, BattleTransition_CircleData5,  9,  0
+	half_circle $00, BattleTransition_CircleData4,  5,  0
+	half_circle $00, BattleTransition_CircleData3,  1,  0
+	half_circle $00, BattleTransition_CircleData2,  0,  3
+	half_circle $00, BattleTransition_CircleData1,  1,  6
 
-	db $01
-	dw BattleTransition_CircleData2
-	dwcoord 19, 3
-
-	db $01
-	dw BattleTransition_CircleData3
-	dwcoord 18, 0
-
-	db $01
-	dw BattleTransition_CircleData4
-	dwcoord 14, 0
-
-	db $01
-	dw BattleTransition_CircleData5
-	dwcoord 10, 0
-
-	db $00
-	dw BattleTransition_CircleData5
-	dwcoord 9, 0
-
-	db $00
-	dw BattleTransition_CircleData4
-	dwcoord 5, 0
-
-	db $00
-	dw BattleTransition_CircleData3
-	dwcoord 1, 0
-
-	db $00
-	dw BattleTransition_CircleData2
-	dwcoord 0, 3
-
-	db $00
-	dw BattleTransition_CircleData1
-	dwcoord 1, 6
-
 BattleTransition_HalfCircle2:
-	db $00
-	dw BattleTransition_CircleData1
-	dwcoord 1, 11
-
-	db $00
-	dw BattleTransition_CircleData2
-	dwcoord 0, 14
-
-	db $00
-	dw BattleTransition_CircleData3
-	dwcoord 1, 17
-
-	db $00
-	dw BattleTransition_CircleData4
-	dwcoord 5, 17
-
-	db $00
-	dw BattleTransition_CircleData5
-	dwcoord 9, 17
-
-	db $01
-	dw BattleTransition_CircleData5
-	dwcoord 10, 17
-
-	db $01
-	dw BattleTransition_CircleData4
-	dwcoord 14, 17
-
-	db $01
-	dw BattleTransition_CircleData3
-	dwcoord 18, 17
-
-	db $01
-	dw BattleTransition_CircleData2
-	dwcoord 19, 14
-
-	db $01
-	dw BattleTransition_CircleData1
-	dwcoord 18, 11
+	half_circle $00, BattleTransition_CircleData1,  1, 11
+	half_circle $00, BattleTransition_CircleData2,  0, 14
+	half_circle $00, BattleTransition_CircleData3,  1, 17
+	half_circle $00, BattleTransition_CircleData4,  5, 17
+	half_circle $00, BattleTransition_CircleData5,  9, 17
+	half_circle $01, BattleTransition_CircleData5, 10, 17
+	half_circle $01, BattleTransition_CircleData4, 14, 17
+	half_circle $01, BattleTransition_CircleData3, 18, 17
+	half_circle $01, BattleTransition_CircleData2, 19, 14
+	half_circle $01, BattleTransition_CircleData1, 18, 11
 
 BattleTransition_Circle_Sub3:
 	push hl
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -921,7 +921,7 @@
 	ld b, MUSIC_DEFEATED_TRAINER
 .gymleader
 	ld a, [wTrainerClass]
-	cp SONY3 ; final battle against rival
+	cp RIVAL3 ; final battle against rival
 	jr nz, .notrival
 	ld b, MUSIC_DEFEATED_GYM_LEADER
 	ld hl, wFlags_D733
@@ -1134,7 +1134,7 @@
 	cp LINK_STATE_BATTLING
 	jr z, .notSony1Battle
 	ld a, [wCurOpponent]
-	cp OPP_SONY1
+	cp OPP_RIVAL1
 	jr nz, .notSony1Battle
 	hlcoord 0, 0  ; sony 1 battle
 	lb bc, 8, 21
--- a/engine/battle/get_trainer_name.asm
+++ b/engine/battle/get_trainer_name.asm
@@ -5,11 +5,11 @@
 	jr nz, .foundName
 	ld hl, wRivalName
 	ld a, [wTrainerClass]
-	cp SONY1
+	cp RIVAL1
 	jr z, .foundName
-	cp SONY2
+	cp RIVAL2
 	jr z, .foundName
-	cp SONY3
+	cp RIVAL3
 	jr z, .foundName
 	ld [wd0b5], a
 	ld a, TRAINER_NAME
--- a/engine/battle/read_trainer_party.asm
+++ b/engine/battle/read_trainer_party.asm
@@ -116,7 +116,7 @@
 
 ; no matches found. is this trainer champion rival?
 	ld a, b
-	cp SONY3
+	cp RIVAL3
 	jr z, .ChampionRival
 	jr .FinishUp ; nope
 .GiveTeamMoves
--- a/engine/battle/scale_sprites.asm
+++ b/engine/battle/scale_sprites.asm
@@ -79,7 +79,19 @@
 
 ; repeats each input bit twice
 DuplicateBitsTable:
-	db $00, $03, $0c, $0f
-	db $30, $33, $3c, $3f
-	db $c0, $c3, $cc, $cf
-	db $f0, $f3, $fc, $ff
+	db %00000000
+	db %00000011
+	db %00001100
+	db %00001111
+	db %00110000
+	db %00110011
+	db %00111100
+	db %00111111
+	db %11000000
+	db %11000011
+	db %11001100
+	db %11001111
+	db %11110000
+	db %11110011
+	db %11111100
+	db %11111111
--- a/engine/events/hidden_objects/cinnabar_gym_quiz.asm
+++ b/engine/events/hidden_objects/cinnabar_gym_quiz.asm
@@ -183,12 +183,18 @@
 	jr nz, .loop
 	ret
 
+gym_gate_coord: MACRO
+	db \1, \2, \3, 0
+ENDM
+
+HORIZONTAL_GATE_BLOCK EQU $54
+VERTICAL_GATE_BLOCK   EQU $5f
+
 CinnabarGymGateCoords:
-	; format: x-coord, y-coord, direction, padding
-	; direction: $54 = horizontal gate, $5f = vertical gate
-	db $09,$03,$54,$00
-	db $06,$03,$54,$00
-	db $06,$06,$54,$00
-	db $03,$08,$5f,$00
-	db $02,$06,$54,$00
-	db $02,$03,$54,$00
+	; x coord, y coord, block id
+	gym_gate_coord 9, 3, HORIZONTAL_GATE_BLOCK
+	gym_gate_coord 6, 3, HORIZONTAL_GATE_BLOCK
+	gym_gate_coord 6, 6, HORIZONTAL_GATE_BLOCK
+	gym_gate_coord 3, 8, VERTICAL_GATE_BLOCK
+	gym_gate_coord 2, 6, HORIZONTAL_GATE_BLOCK
+	gym_gate_coord 2, 3, HORIZONTAL_GATE_BLOCK
--- a/engine/link/cable_club.asm
+++ b/engine/link/cable_club.asm
@@ -274,7 +274,7 @@
 	jr nz, .trading
 	ld a, LINK_STATE_BATTLING
 	ld [wLinkState], a
-	ld a, OPP_SONY1
+	ld a, OPP_RIVAL1
 	ld [wCurOpponent], a
 	call ClearScreen
 	call Delay3
--- a/engine/menus/naming_screen.asm
+++ b/engine/menus/naming_screen.asm
@@ -469,7 +469,7 @@
 	call PlaceString
 	ld hl, $1
 	add hl, bc
-	ld [hl], $c9
+	ld [hl], "の" ; leftover from Japanese version; blank tile $c9 in English
 	hlcoord 1, 3
 	ld de, NicknameTextString
 	jr .placeString
--- a/engine/menus/pokedex.asm
+++ b/engine/menus/pokedex.asm
@@ -599,10 +599,8 @@
 
 ; horizontal line that divides the pokedex text description from the rest of the data
 PokedexDataDividerLine:
-	db $68,$69,$6B,$69,$6B
-	db $69,$6B,$69,$6B,$6B
-	db $6B,$6B,$69,$6B,$69
-	db $6B,$69,$6B,$69,$6A
+	db $68, $69, $6B, $69, $6B, $69, $6B, $69, $6B, $6B
+	db $6B, $6B, $69, $6B, $69, $6B, $69, $6B, $69, $6A
 	db "@"
 
 ; draws a line of tiles
--- a/engine/movie/gamefreak.asm
+++ b/engine/movie/gamefreak.asm
@@ -146,7 +146,7 @@
 	ret
 
 SmallStarsOAM:
-	db $00,$00,$A2,$90
+	dbsprite  0,  0,  0,  0, $A2, OAM_BEHIND_BG | OAM_OBP1
 SmallStarsOAMEnd:
 
 SmallStarsWaveCoordsPointerTable:
@@ -161,28 +161,28 @@
 ; These arrays contain the Y and X coordinates of each OAM entry.
 
 SmallStarsWave1Coords:
-	db $68,$30
-	db $68,$40
-	db $68,$58
-	db $68,$78
+	db $68, $30
+	db $68, $40
+	db $68, $58
+	db $68, $78
 
 SmallStarsWave2Coords:
-	db $68,$38
-	db $68,$48
-	db $68,$60
-	db $68,$70
+	db $68, $38
+	db $68, $48
+	db $68, $60
+	db $68, $70
 
 SmallStarsWave3Coords:
-	db $68,$34
-	db $68,$4C
-	db $68,$54
-	db $68,$64
+	db $68, $34
+	db $68, $4C
+	db $68, $54
+	db $68, $64
 
 SmallStarsWave4Coords:
-	db $68,$3C
-	db $68,$5C
-	db $68,$6C
-	db $68,$74
+	db $68, $3C
+	db $68, $5C
+	db $68, $6C
+	db $68, $74
 
 SmallStarsEmptyWave:
 	db $FF
@@ -213,29 +213,29 @@
 	ret
 
 GameFreakLogoOAMData:
-	db $48,$50,$8D,$00
-	db $48,$58,$8E,$00
-	db $50,$50,$8F,$00
-	db $50,$58,$90,$00
-	db $58,$50,$91,$00
-	db $58,$58,$92,$00
-	db $60,$30,$80,$00
-	db $60,$38,$81,$00
-	db $60,$40,$82,$00
-	db $60,$48,$83,$00
-	db $60,$50,$93,$00
-	db $60,$58,$84,$00
-	db $60,$60,$85,$00
-	db $60,$68,$83,$00
-	db $60,$70,$81,$00
-	db $60,$78,$86,$00
+	dbsprite 10,  9,  0,  0, $8d, 0
+	dbsprite 11,  9,  0,  0, $8e, 0
+	dbsprite 10, 10,  0,  0, $8f, 0
+	dbsprite 11, 10,  0,  0, $90, 0
+	dbsprite 10, 11,  0,  0, $91, 0
+	dbsprite 11, 11,  0,  0, $92, 0
+	dbsprite  6, 12,  0,  0, $80, 0
+	dbsprite  7, 12,  0,  0, $81, 0
+	dbsprite  8, 12,  0,  0, $82, 0
+	dbsprite  9, 12,  0,  0, $83, 0
+	dbsprite 10, 12,  0,  0, $93, 0
+	dbsprite 11, 12,  0,  0, $84, 0
+	dbsprite 12, 12,  0,  0, $85, 0
+	dbsprite 13, 12,  0,  0, $83, 0
+	dbsprite 14, 12,  0,  0, $81, 0
+	dbsprite 15, 12,  0,  0, $86, 0
 GameFreakLogoOAMDataEnd:
 
 GameFreakShootingStarOAMData:
-	db $00,$A0,$A0,$10
-	db $00,$A8,$A0,$30
-	db $08,$A0,$A1,$10
-	db $08,$A8,$A1,$30
+	dbsprite 20,  0,  0,  0, $a0, OAM_OBP1
+	dbsprite 21,  0,  0,  0, $a0, OAM_OBP1 | OAM_HFLIP
+	dbsprite 20,  1,  0,  0, $a1, OAM_OBP1
+	dbsprite 21,  1,  0,  0, $a1, OAM_OBP1 | OAM_HFLIP
 GameFreakShootingStarOAMDataEnd:
 
 FallingStar:
--- a/engine/movie/hall_of_fame.asm
+++ b/engine/movie/hall_of_fame.asm
@@ -202,7 +202,7 @@
 
 HoFLoadMonPlayerPicTileIDs:
 ; c = base tile ID
-	ld b, 0
+	ld b, TILEMAP_MON_PIC
 	hlcoord 12, 5
 	predef_jump CopyTileIDsFromList
 
--- a/engine/movie/intro.asm
+++ b/engine/movie/intro.asm
@@ -1,4 +1,4 @@
-const_value = -1
+	const_def -1
 	const MOVE_NIDORINO_RIGHT
 	const MOVE_GENGAR_RIGHT
 	const MOVE_GENGAR_LEFT
@@ -5,11 +5,6 @@
 
 ANIMATION_END EQU 80
 
-const_value = 3
-	const GENGAR_INTRO_TILES1
-	const GENGAR_INTRO_TILES2
-	const GENGAR_INTRO_TILES3
-
 PlayIntro:
 	xor a
 	ldh [hJoyHeld], a
@@ -34,7 +29,7 @@
 	ldh [rOBP1], a
 	xor a
 	ldh [hSCX], a
-	ld b, GENGAR_INTRO_TILES1
+	ld b, TILEMAP_GENGAR_INTRO_1
 	call IntroCopyTiles
 	ld a, 0
 	ld [wBaseCoordX], a
@@ -77,7 +72,7 @@
 	ret c
 
 ; raise
-	ld b, GENGAR_INTRO_TILES2
+	ld b, TILEMAP_GENGAR_INTRO_2
 	call IntroCopyTiles
 	ld a, SFX_INTRO_RAISE
 	call PlaySound
@@ -88,7 +83,7 @@
 	ret c
 
 ; slash
-	ld b, GENGAR_INTRO_TILES3
+	ld b, TILEMAP_GENGAR_INTRO_3
 	call IntroCopyTiles
 	ld a, SFX_INTRO_CRASH
 	call PlaySound
@@ -107,7 +102,7 @@
 
 	lb de, 8 / 2, MOVE_GENGAR_LEFT
 	call IntroMoveMon
-	ld b, GENGAR_INTRO_TILES1
+	ld b, TILEMAP_GENGAR_INTRO_1
 	call IntroCopyTiles
 	ld c, 60
 	call CheckForUserInterruption
@@ -445,6 +440,7 @@
 
 FightIntroBackMon:
 	INCBIN "gfx/intro_credits/gengar.2bpp"
+	ds 16, $00 ; blank tile
 FightIntroBackMonEnd:
 
 FightIntroFrontMon:
--- a/engine/movie/trade.asm
+++ b/engine/movie/trade.asm
@@ -59,11 +59,11 @@
 addtradefunc: MACRO
 \1TradeFunc::
 	dw \1
-	ENDM
+ENDM
 
 tradefunc: MACRO
 	db (\1TradeFunc - TradeFuncPointerTable) / 2
-	ENDM
+ENDM
 
 ; The functions in the sequences below are executed in order by TradeFuncCommon.
 ; They are from opposite perspectives. The external clock one makes use of
@@ -86,7 +86,7 @@
 	tradefunc Trade_ShowEnemyMon
 	tradefunc Trade_Delay100
 	tradefunc Trade_Cleanup
-	db $FF
+	db -1 ; end
 
 ExternalClockTradeFuncSequence:
 	tradefunc LoadTradingGFXAndMonNames
@@ -110,7 +110,7 @@
 	tradefunc Trade_ShowClearedWindow
 	tradefunc PrintTradeWentToText
 	tradefunc Trade_Cleanup
-	db $FF
+	db -1 ; end
 
 TradeFuncPointerTable:
 	addtradefunc LoadTradingGFXAndMonNames
@@ -282,7 +282,7 @@
 	ld a, %10001011
 	ldh [rLCDC], a
 	hlcoord 6, 2
-	ld b, $7 ; open end of link cable tile ID list index
+	ld b, TILEMAP_LINK_CABLE
 	call CopyTileIDsFromList_ZeroBaseTileID
 	call Trade_CopyTileMapToVRAM
 	ld a, SFX_HEAL_HP
@@ -346,8 +346,8 @@
 	ret
 
 Trade_BallInsideLinkCableOAM:
-	db $7E,$00,$7E,$20
-	db $7E,$40,$7E,$60
+	dbsprite  0, 15,  0,  6, $7e, OAM_HFLIP
+	dbsprite  8, 15,  0,  6, $7e, OAM_HFLIP | OAM_VFLIP
 
 Trade_ShowEnemyMon:
 	ld a, TRADE_BALL_TILT_ANIM
@@ -474,7 +474,7 @@
 
 ; draw gameboy pic
 	hlcoord 5, 3
-	ld b, $6
+	ld b, TILEMAP_GAME_BOY
 	call CopyTileIDsFromList_ZeroBaseTileID
 
 ; draw text box with player name below gameboy pic
@@ -521,7 +521,7 @@
 
 ; draw gameboy pic
 	hlcoord 7, 8
-	ld b, $6
+	ld b, TILEMAP_GAME_BOY
 	call CopyTileIDsFromList_ZeroBaseTileID
 
 ; draw text box with enemy name above link cable
@@ -697,31 +697,33 @@
 	jr nz, .loop
 	ret
 
+trade_circle_oam: MACRO
+	dw \1
+	db \2, \3
+ENDM
+
 Trade_CircleOAMPointers:
-	dw Trade_CircleOAM0
-	db $08,$08
-	dw Trade_CircleOAM1
-	db $18,$08
-	dw Trade_CircleOAM2
-	db $08,$18
-	dw Trade_CircleOAM3
-	db $18,$18
+	; oam pointer, upper-left x coord, upper-left y coord
+	trade_circle_oam Trade_CircleOAM0, $08, $08
+	trade_circle_oam Trade_CircleOAM1, $18, $08
+	trade_circle_oam Trade_CircleOAM2, $08, $18
+	trade_circle_oam Trade_CircleOAM3, $18, $18
 
 Trade_CircleOAM0:
-	db $38,$10,$39,$10
-	db $3A,$10,$3B,$10
+	dbsprite  2,  7,  0,  0, $39, OAM_OBP1
+	dbsprite  2,  7,  0,  2, $3b, OAM_OBP1
 
 Trade_CircleOAM1:
-	db $39,$30,$38,$30
-	db $3B,$30,$3A,$30
+	dbsprite  6,  7,  0,  1, $38, OAM_OBP1 | OAM_HFLIP
+	dbsprite  6,  7,  0,  3, $3a, OAM_OBP1 | OAM_HFLIP
 
 Trade_CircleOAM2:
-	db $3A,$50,$3B,$50
-	db $38,$50,$39,$50
+	dbsprite 10,  7,  0,  2, $3b, OAM_OBP1 | OAM_VFLIP
+	dbsprite 10,  7,  0,  0, $39, OAM_OBP1 | OAM_VFLIP
 
 Trade_CircleOAM3:
-	db $3B,$70,$3A,$70
-	db $39,$70,$38,$70
+	dbsprite 14,  7,  0,  3, $3a, OAM_OBP1 | OAM_HFLIP | OAM_VFLIP
+	dbsprite 14,  7,  0,  1, $38, OAM_OBP1 | OAM_HFLIP | OAM_VFLIP
 
 ; a = species
 Trade_LoadMonSprite:
--- a/engine/overworld/auto_movement.asm
+++ b/engine/overworld/auto_movement.asm
@@ -286,7 +286,7 @@
 	jp SetSpriteMovementBytesToFF
 
 RivalIDs:
-	db OPP_SONY1
-	db OPP_SONY2
-	db OPP_SONY3
+	db OPP_RIVAL1
+	db OPP_RIVAL2
+	db OPP_RIVAL3
 	db -1 ; end
--- a/engine/overworld/cut.asm
+++ b/engine/overworld/cut.asm
@@ -123,8 +123,8 @@
 	jp WriteOAMBlock
 
 CutOrBoulderDustAnimationTilesAndAttributes:
-	db $FC,$10,$FD,$10
-	db $FE,$10,$FF,$10
+	dbsprite  2, -1,  0,  4, $fd, OAM_OBP1
+	dbsprite  2, -1,  0,  6, $ff, OAM_OBP1
 
 GetCutOrBoulderDustAnimationOffsets:
 	ld hl, wSpritePlayerStateData1YPixels
--- a/engine/overworld/emotion_bubbles.asm
+++ b/engine/overworld/emotion_bubbles.asm
@@ -67,8 +67,8 @@
 	dw HappyEmote
 
 EmotionBubblesOAM:
-	db $F8,$00,$F9,$00
-	db $FA,$00,$FB,$00
+	dbsprite  0, -1,  0,  0, $f9, 0
+	dbsprite  0, -1,  0,  2, $fb, 0
 
 EmotionBubbles:
 ShockEmote:    INCBIN "gfx/emotes/shock.2bpp"
--- a/engine/overworld/healing_machine.asm
+++ b/engine/overworld/healing_machine.asm
@@ -66,13 +66,15 @@
 	INCBIN "gfx/overworld/heal_machine.2bpp"
 
 PokeCenterOAMData:
-	db $24,$34,$7C,$10 ; heal machine monitor
-	db $2B,$30,$7D,$10 ; pokeballs 1-6
-	db $2B,$38,$7D,$30
-	db $30,$30,$7D,$10
-	db $30,$38,$7D,$30
-	db $35,$30,$7D,$10
-	db $35,$38,$7D,$30
+	; heal machine monitor
+	dbsprite  6,  4,  4,  4, $7c, OAM_OBP1
+	; poke balls 1-6
+	dbsprite  6,  5,  0,  3, $7d, OAM_OBP1
+	dbsprite  7,  5,  0,  3, $7d, OAM_OBP1 | OAM_HFLIP
+	dbsprite  6,  6,  0,  0, $7d, OAM_OBP1
+	dbsprite  7,  6,  0,  0, $7d, OAM_OBP1 | OAM_HFLIP
+	dbsprite  6,  6,  0,  5, $7d, OAM_OBP1
+	dbsprite  7,  6,  0,  5, $7d, OAM_OBP1 | OAM_HFLIP
 
 ; d = value to xor with palette
 FlashSprite8Times:
--- a/engine/overworld/ledges.asm
+++ b/engine/overworld/ledges.asm
@@ -72,5 +72,5 @@
 LedgeHoppingShadowEnd:
 
 LedgeHoppingShadowOAM:
-	db $FF,$10,$FF,$20
-	db $FF,$40,$FF,$60
+	dbsprite  2, -1,  0,  7, $ff, OAM_HFLIP
+	dbsprite  8, -1,  0,  7, $ff, OAM_HFLIP | OAM_VFLIP
--- a/engine/overworld/map_sprites.asm
+++ b/engine/overworld/map_sprites.asm
@@ -98,7 +98,7 @@
 	push af
 	ld a, [hl] ; [x#SPRITESTATEDATA2_IMAGEBASEOFFSET]
 	ld b, a ; b = current sprite picture ID
-	cp SPRITE_BALL ; is it a 4-tile sprite?
+	cp FIRST_STILL_SPRITE ; is it a 4-tile sprite?
 	jr c, .notFourTileSprite
 	pop af
 	ldh a, [hFourTileSpriteCount]
--- a/engine/overworld/player_animations.asm
+++ b/engine/overworld/player_animations.asm
@@ -470,14 +470,10 @@
 
 FishingRodOAM:
 ; specifies how the fishing rod should be drawn on the screen
-; first byte = screen y coordinate
-; second byte = screen x coordinate
-; third byte = tile number
-; fourth byte = sprite properties
-	db $5B, $4C, $FD, $00 ; player facing down
-	db $44, $4C, $FD, $00 ; player facing up
-	db $50, $40, $FE, $00 ; player facing left
-	db $50, $58, $FE, $20 ; player facing right ($20 means "horizontally flip the tile")
+	dbsprite  9, 11,  4,  3, $fd, 0         ; down
+	dbsprite  9,  8,  4,  4, $fd, 0         ; up
+	dbsprite  8, 10,  0,  0, $fe, 0         ; left
+	dbsprite 11, 10,  0,  0, $fe, OAM_HFLIP ; right
 
 fishing_gfx: MACRO
 	dw \1
binary files a/gfx/intro_credits/gengar.png b/gfx/intro_credits/gengar.png differ
binary files /dev/null b/gfx/intro_credits/gengar_1.tilemap differ
binary files /dev/null b/gfx/intro_credits/gengar_2.tilemap differ
binary files /dev/null b/gfx/intro_credits/gengar_3.tilemap differ
--- /dev/null
+++ b/gfx/pokemon/downscaled_3x3.tilemap
@@ -1,0 +1,1 @@
+1F[4I^7La
\ No newline at end of file
--- /dev/null
+++ b/gfx/pokemon/downscaled_5x5.tilemap
@@ -1,0 +1,1 @@
+18FT[29GU\4;IW^6=KY`7>LZa
\ No newline at end of file
binary files /dev/null b/gfx/pokemon/front.tilemap differ
binary files /dev/null b/gfx/pokemon/slide_down_7x3.tilemap differ
binary files /dev/null b/gfx/pokemon/slide_down_7x5.tilemap differ
--- a/gfx/sprites.asm
+++ b/gfx/sprites.asm
@@ -1,73 +1,73 @@
 SECTION "NPC Sprites 1", ROMX
 
-OakAideSprite::         INCBIN "gfx/sprites/oak_aide.2bpp"
-RockerSprite::          INCBIN "gfx/sprites/rocker.2bpp"
-SwimmerSprite::         INCBIN "gfx/sprites/swimmer.2bpp"
-WhitePlayerSprite::     INCBIN "gfx/sprites/white_player.2bpp"
-GymHelperSprite::       INCBIN "gfx/sprites/gym_helper.2bpp"
-OldPersonSprite::       INCBIN "gfx/sprites/old_person.2bpp"
-MartGuySprite::         INCBIN "gfx/sprites/mart_guy.2bpp"
-FisherSprite::          INCBIN "gfx/sprites/fisher.2bpp"
-OldMediumWomanSprite::  INCBIN "gfx/sprites/old_medium_woman.2bpp"
-NurseSprite::           INCBIN "gfx/sprites/nurse.2bpp"
-CableClubWomanSprite::  INCBIN "gfx/sprites/cable_club_woman.2bpp"
-MrMasterballSprite::    INCBIN "gfx/sprites/mr_masterball.2bpp"
-LaprasGiverSprite::     INCBIN "gfx/sprites/lapras_giver.2bpp"
-WardenSprite::          INCBIN "gfx/sprites/warden.2bpp"
-SsCaptainSprite::       INCBIN "gfx/sprites/ss_captain.2bpp"
-Fisher2Sprite::         INCBIN "gfx/sprites/fisher2.2bpp"
-BlackbeltSprite::       INCBIN "gfx/sprites/blackbelt.2bpp"
-GuardSprite::           INCBIN "gfx/sprites/guard.2bpp"
-BallSprite::            INCBIN "gfx/sprites/ball.2bpp"
-OmanyteSprite::         INCBIN "gfx/sprites/omanyte.2bpp"
-BoulderSprite::         INCBIN "gfx/sprites/boulder.2bpp"
-PaperSheetSprite::      INCBIN "gfx/sprites/paper_sheet.2bpp"
-BookMapDexSprite::      INCBIN "gfx/sprites/book_map_dex.2bpp"
-ClipboardSprite::       INCBIN "gfx/sprites/clipboard.2bpp"
-SnorlaxSprite::         INCBIN "gfx/sprites/snorlax.2bpp"
-OldAmberSprite::        INCBIN "gfx/sprites/old_amber.2bpp"
-LyingOldManSprite::     INCBIN "gfx/sprites/lying_old_man.2bpp"
+ScientistSprite::        INCBIN "gfx/sprites/scientist.2bpp"
+RockerSprite::           INCBIN "gfx/sprites/rocker.2bpp"
+SwimmerSprite::          INCBIN "gfx/sprites/swimmer.2bpp"
+SafariZoneWorkerSprite:: INCBIN "gfx/sprites/safari_zone_worker.2bpp"
+GymGuideSprite::         INCBIN "gfx/sprites/gym_guide.2bpp"
+GrampsSprite::           INCBIN "gfx/sprites/gramps.2bpp"
+ClerkSprite::            INCBIN "gfx/sprites/clerk.2bpp"
+FishingGuruSprite::      INCBIN "gfx/sprites/fishing_guru.2bpp"
+GrannySprite::           INCBIN "gfx/sprites/granny.2bpp"
+NurseSprite::            INCBIN "gfx/sprites/nurse.2bpp"
+LinkReceptionistSprite:: INCBIN "gfx/sprites/link_receptionist.2bpp"
+SilphPresidentSprite::   INCBIN "gfx/sprites/silph_president.2bpp"
+SilphWorkerSprite::      INCBIN "gfx/sprites/silph_worker.2bpp"
+WardenSprite::           INCBIN "gfx/sprites/warden.2bpp"
+CaptainSprite::          INCBIN "gfx/sprites/captain.2bpp"
+FisherSprite::           INCBIN "gfx/sprites/fisher.2bpp"
+KogaSprite::             INCBIN "gfx/sprites/koga.2bpp"
+GuardSprite::            INCBIN "gfx/sprites/guard.2bpp"
+PokeBallSprite::         INCBIN "gfx/sprites/poke_ball.2bpp"
+FossilSprite::           INCBIN "gfx/sprites/fossil.2bpp"
+BoulderSprite::          INCBIN "gfx/sprites/boulder.2bpp"
+PaperSprite::            INCBIN "gfx/sprites/paper.2bpp"
+PokedexSprite::          INCBIN "gfx/sprites/pokedex.2bpp"
+ClipboardSprite::        INCBIN "gfx/sprites/clipboard.2bpp"
+SnorlaxSprite::          INCBIN "gfx/sprites/snorlax.2bpp"
+OldAmberSprite::         INCBIN "gfx/sprites/old_amber.2bpp"
+GamblerAsleepSprite::    INCBIN "gfx/sprites/gambler_asleep.2bpp"
 
 
 SECTION "NPC Sprites 2", ROMX
 
-RedCyclingSprite::     INCBIN "gfx/sprites/cycling.2bpp"
-RedSprite::            INCBIN "gfx/sprites/red.2bpp"
-BlueSprite::           INCBIN "gfx/sprites/blue.2bpp"
-OakSprite::            INCBIN "gfx/sprites/oak.2bpp"
-BugCatcherSprite::     INCBIN "gfx/sprites/bug_catcher.2bpp"
-SlowbroSprite::        INCBIN "gfx/sprites/slowbro.2bpp"
-LassSprite::           INCBIN "gfx/sprites/lass.2bpp"
-BlackHairBoy1Sprite::  INCBIN "gfx/sprites/black_hair_boy_1.2bpp"
-LittleGirlSprite::     INCBIN "gfx/sprites/little_girl.2bpp"
-BirdSprite::           INCBIN "gfx/sprites/bird.2bpp"
-FatBaldGuySprite::     INCBIN "gfx/sprites/fat_bald_guy.2bpp"
-GamblerSprite::        INCBIN "gfx/sprites/gambler.2bpp"
-BlackHairBoy2Sprite::  INCBIN "gfx/sprites/black_hair_boy_2.2bpp"
-GirlSprite::           INCBIN "gfx/sprites/girl.2bpp"
-HikerSprite::          INCBIN "gfx/sprites/hiker.2bpp"
-FoulardWomanSprite::   INCBIN "gfx/sprites/foulard_woman.2bpp"
-GentlemanSprite::      INCBIN "gfx/sprites/gentleman.2bpp"
-DaisySprite::          INCBIN "gfx/sprites/daisy.2bpp"
-BikerSprite::          INCBIN "gfx/sprites/biker.2bpp"
-SailorSprite::         INCBIN "gfx/sprites/sailor.2bpp"
-CookSprite::           INCBIN "gfx/sprites/cook.2bpp"
-BikeShopGuySprite::    INCBIN "gfx/sprites/bike_shop_guy.2bpp"
-MrFujiSprite::         INCBIN "gfx/sprites/mr_fuji.2bpp"
-GiovanniSprite::       INCBIN "gfx/sprites/giovanni.2bpp"
-RocketSprite::         INCBIN "gfx/sprites/rocket.2bpp"
-MediumSprite::         INCBIN "gfx/sprites/medium.2bpp"
-WaiterSprite::         INCBIN "gfx/sprites/waiter.2bpp"
-ErikaSprite::          INCBIN "gfx/sprites/erika.2bpp"
-MomGeishaSprite::      INCBIN "gfx/sprites/mom_geisha.2bpp"
-BrunetteGirlSprite::   INCBIN "gfx/sprites/brunette_girl.2bpp"
-LanceSprite::          INCBIN "gfx/sprites/lance.2bpp"
-MomSprite::            INCBIN "gfx/sprites/mom.2bpp"
-BaldingGuySprite::     INCBIN "gfx/sprites/balding_guy.2bpp"
-YoungBoySprite::       INCBIN "gfx/sprites/young_boy.2bpp"
-GameboyKidSprite::     INCBIN "gfx/sprites/gameboy_kid.2bpp"
-ClefairySprite::       INCBIN "gfx/sprites/clefairy.2bpp"
-AgathaSprite::         INCBIN "gfx/sprites/agatha.2bpp"
-BrunoSprite::          INCBIN "gfx/sprites/bruno.2bpp"
-LoreleiSprite::        INCBIN "gfx/sprites/lorelei.2bpp"
-SeelSprite::           INCBIN "gfx/sprites/seel.2bpp"
+RedBikeSprite::          INCBIN "gfx/sprites/red_bike.2bpp"
+RedSprite::              INCBIN "gfx/sprites/red.2bpp"
+BlueSprite::             INCBIN "gfx/sprites/blue.2bpp"
+OakSprite::              INCBIN "gfx/sprites/oak.2bpp"
+YoungsterSprite::        INCBIN "gfx/sprites/youngster.2bpp"
+MonsterSprite::          INCBIN "gfx/sprites/monster.2bpp"
+CooltrainerFSprite::     INCBIN "gfx/sprites/cooltrainer_f.2bpp"
+CooltrainerMSprite::     INCBIN "gfx/sprites/cooltrainer_m.2bpp"
+LittleGirlSprite::       INCBIN "gfx/sprites/little_girl.2bpp"
+BirdSprite::             INCBIN "gfx/sprites/bird.2bpp"
+MiddleAgedManSprite::    INCBIN "gfx/sprites/middle_aged_man.2bpp"
+GamblerSprite::          INCBIN "gfx/sprites/gambler.2bpp"
+SuperNerdSprite::        INCBIN "gfx/sprites/super_nerd.2bpp"
+GirlSprite::             INCBIN "gfx/sprites/girl.2bpp"
+HikerSprite::            INCBIN "gfx/sprites/hiker.2bpp"
+BeautySprite::           INCBIN "gfx/sprites/beauty.2bpp"
+GentlemanSprite::        INCBIN "gfx/sprites/gentleman.2bpp"
+DaisySprite::            INCBIN "gfx/sprites/daisy.2bpp"
+BikerSprite::            INCBIN "gfx/sprites/biker.2bpp"
+SailorSprite::           INCBIN "gfx/sprites/sailor.2bpp"
+CookSprite::             INCBIN "gfx/sprites/cook.2bpp"
+BikeShopClerkSprite::    INCBIN "gfx/sprites/bike_shop_clerk.2bpp"
+MrFujiSprite::           INCBIN "gfx/sprites/mr_fuji.2bpp"
+GiovanniSprite::         INCBIN "gfx/sprites/giovanni.2bpp"
+RocketSprite::           INCBIN "gfx/sprites/rocket.2bpp"
+ChannelerSprite::        INCBIN "gfx/sprites/channeler.2bpp"
+WaiterSprite::           INCBIN "gfx/sprites/waiter.2bpp"
+ErikaSprite::            INCBIN "gfx/sprites/erika.2bpp"
+MiddleAgedWomanSprite::  INCBIN "gfx/sprites/middle_aged_woman.2bpp"
+BrunetteGirlSprite::     INCBIN "gfx/sprites/brunette_girl.2bpp"
+LanceSprite::            INCBIN "gfx/sprites/lance.2bpp"
+MomSprite::              INCBIN "gfx/sprites/mom.2bpp"
+BaldingGuySprite::       INCBIN "gfx/sprites/balding_guy.2bpp"
+LittleBoySprite::        INCBIN "gfx/sprites/little_boy.2bpp"
+GameboyKidSprite::       INCBIN "gfx/sprites/gameboy_kid.2bpp"
+FairySprite::            INCBIN "gfx/sprites/fairy.2bpp"
+AgathaSprite::           INCBIN "gfx/sprites/agatha.2bpp"
+BrunoSprite::            INCBIN "gfx/sprites/bruno.2bpp"
+LoreleiSprite::          INCBIN "gfx/sprites/lorelei.2bpp"
+SeelSprite::             INCBIN "gfx/sprites/seel.2bpp"
binary files a/gfx/sprites/ball.png /dev/null differ
binary files /dev/null b/gfx/sprites/beauty.png differ
binary files /dev/null b/gfx/sprites/bike_shop_clerk.png differ
binary files a/gfx/sprites/bike_shop_guy.png /dev/null differ
binary files a/gfx/sprites/black_hair_boy_1.png /dev/null differ
binary files a/gfx/sprites/black_hair_boy_2.png /dev/null differ
binary files a/gfx/sprites/blackbelt.png /dev/null differ
binary files a/gfx/sprites/book_map_dex.png /dev/null differ
binary files a/gfx/sprites/bug_catcher.png /dev/null differ
binary files a/gfx/sprites/cable_club_woman.png /dev/null differ
binary files /dev/null b/gfx/sprites/captain.png differ
binary files /dev/null b/gfx/sprites/channeler.png differ
binary files a/gfx/sprites/clefairy.png /dev/null differ
binary files /dev/null b/gfx/sprites/clerk.png differ
binary files /dev/null b/gfx/sprites/cooltrainer_f.png differ
binary files /dev/null b/gfx/sprites/cooltrainer_m.png differ
binary files a/gfx/sprites/cycling.png /dev/null differ
binary files /dev/null b/gfx/sprites/fairy.png differ
binary files a/gfx/sprites/fat_bald_guy.png /dev/null differ
binary files a/gfx/sprites/fisher.png b/gfx/sprites/fisher.png differ
binary files a/gfx/sprites/fisher2.png /dev/null differ
binary files /dev/null b/gfx/sprites/fishing_guru.png differ
binary files /dev/null b/gfx/sprites/fossil.png differ
binary files a/gfx/sprites/foulard_woman.png /dev/null differ
binary files /dev/null b/gfx/sprites/gambler_asleep.png differ
binary files /dev/null b/gfx/sprites/gramps.png differ
binary files /dev/null b/gfx/sprites/granny.png differ
binary files /dev/null b/gfx/sprites/gym_guide.png differ
binary files a/gfx/sprites/gym_helper.png /dev/null differ
binary files /dev/null b/gfx/sprites/koga.png differ
binary files a/gfx/sprites/lapras_giver.png /dev/null differ
binary files a/gfx/sprites/lass.png /dev/null differ
binary files /dev/null b/gfx/sprites/link_receptionist.png differ
binary files /dev/null b/gfx/sprites/little_boy.png differ
binary files a/gfx/sprites/lying_old_man.png /dev/null differ
binary files a/gfx/sprites/mart_guy.png /dev/null differ
binary files a/gfx/sprites/medium.png /dev/null differ
binary files /dev/null b/gfx/sprites/middle_aged_man.png differ
binary files /dev/null b/gfx/sprites/middle_aged_woman.png differ
binary files a/gfx/sprites/mom_geisha.png /dev/null differ
binary files /dev/null b/gfx/sprites/monster.png differ
binary files a/gfx/sprites/mr_masterball.png /dev/null differ
binary files a/gfx/sprites/oak_aide.png /dev/null differ
binary files a/gfx/sprites/old_medium_woman.png /dev/null differ
binary files a/gfx/sprites/old_person.png /dev/null differ
binary files a/gfx/sprites/omanyte.png /dev/null differ
binary files /dev/null b/gfx/sprites/paper.png differ
binary files a/gfx/sprites/paper_sheet.png /dev/null differ
binary files /dev/null b/gfx/sprites/poke_ball.png differ
binary files /dev/null b/gfx/sprites/pokedex.png differ
binary files /dev/null b/gfx/sprites/red_bike.png differ
binary files /dev/null b/gfx/sprites/safari_zone_worker.png differ
binary files /dev/null b/gfx/sprites/scientist.png differ
binary files /dev/null b/gfx/sprites/silph_president.png differ
binary files /dev/null b/gfx/sprites/silph_worker.png differ
binary files a/gfx/sprites/slowbro.png /dev/null differ
binary files a/gfx/sprites/ss_captain.png /dev/null differ
binary files /dev/null b/gfx/sprites/super_nerd.png differ
binary files a/gfx/sprites/white_player.png /dev/null differ
binary files a/gfx/sprites/young_boy.png /dev/null differ
binary files /dev/null b/gfx/sprites/youngster.png differ
--- /dev/null
+++ b/gfx/trade/game_boy.tilemap
@@ -1,0 +1,1 @@
+12222345667849::;8<=>>?@ABCCDEFGCHIJACKLMNOPPPQR
\ No newline at end of file
--- /dev/null
+++ b/gfx/trade/link_cable.tilemap
@@ -1,0 +1,1 @@
+CUVSSSSSSSSSCWXTTTTTTTTTCYZCCCCCCCCC
\ No newline at end of file
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -2010,7 +2010,7 @@
 	jr LoadPlayerSpriteGraphicsCommon
 
 LoadBikePlayerSpriteGraphics::
-	ld de, RedCyclingSprite
+	ld de, RedBikeSprite
 	ld hl, vNPCSprites
 
 LoadPlayerSpriteGraphicsCommon::
--- a/home/trainers.asm
+++ b/home/trainers.asm
@@ -395,11 +395,11 @@
 
 PlayTrainerMusic::
 	ld a, [wEngagedTrainerClass]
-	cp OPP_SONY1
+	cp OPP_RIVAL1
 	ret z
-	cp OPP_SONY2
+	cp OPP_RIVAL2
 	ret z
-	cp OPP_SONY3
+	cp OPP_RIVAL3
 	ret z
 	ld a, [wGymLeaderNo]
 	and a
--- a/macros/gfx.asm
+++ b/macros/gfx.asm
@@ -15,3 +15,8 @@
 
 tiles EQUS "* LEN_2BPP_TILE"
 tile  EQUS "+ LEN_2BPP_TILE *"
+
+dbsprite: MACRO
+; 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
--- a/main.asm
+++ b/main.asm
@@ -352,6 +352,8 @@
 INCLUDE "engine/overworld/dust_smoke.asm"
 INCLUDE "gfx/fishing.asm"
 INCLUDE "data/moves/animations.asm"
+INCLUDE "data/battle_anims/subanimations.asm"
+INCLUDE "data/battle_anims/frame_blocks.asm"
 INCLUDE "engine/movie/evolution.asm"
 INCLUDE "engine/overworld/elevator.asm"
 INCLUDE "engine/items/tm_prices.asm"
--- a/scripts/CeladonGym.asm
+++ b/scripts/CeladonGym.asm
@@ -2,7 +2,7 @@
 	ld hl, wCurrentMapScriptFlags
 	bit 6, [hl]
 	res 6, [hl]
-	call nz, CeladonGymScript_48927
+	call nz, .LoadNames
 	call EnableAutoTextBoxDrawing
 	ld hl, CeladonGymTrainerHeader0
 	ld de, CeladonGym_ScriptPointers
@@ -11,15 +11,15 @@
 	ld [wCeladonGymCurScript], a
 	ret
 
-CeladonGymScript_48927:
-	ld hl, Gym4CityName
-	ld de, Gym4LeaderName
+.LoadNames:
+	ld hl, .CityName
+	ld de, .LeaderName
 	jp LoadGymLeaderAndCityName
 
-Gym4CityName:
+.CityName:
 	db "CELADON CITY@"
 
-Gym4LeaderName:
+.LeaderName:
 	db "ERIKA@"
 
 CeladonGymText_48943:
--- a/scripts/CeruleanCity.asm
+++ b/scripts/CeruleanCity.asm
@@ -138,7 +138,7 @@
 	ld hl, CeruleanCityText_1966d
 	ld de, CeruleanCityText_19672
 	call SaveEndBattleTextPointers
-	ld a, OPP_SONY1
+	ld a, OPP_RIVAL1
 	ld [wCurOpponent], a
 
 	; select which team to use during the encounter
--- a/scripts/CeruleanGym.asm
+++ b/scripts/CeruleanGym.asm
@@ -2,7 +2,7 @@
 	ld hl, wCurrentMapScriptFlags
 	bit 6, [hl]
 	res 6, [hl]
-	call nz, CeruleanGymScript_5c6d0
+	call nz, .LoadNames
 	call EnableAutoTextBoxDrawing
 	ld hl, CeruleanGymTrainerHeader0
 	ld de, CeruleanGym_ScriptPointers
@@ -11,15 +11,15 @@
 	ld [wCeruleanGymCurScript], a
 	ret
 
-CeruleanGymScript_5c6d0:
-	ld hl, Gym2CityName
-	ld de, Gym2LeaderName
+.LoadNames:
+	ld hl, .CityName
+	ld de, .LeaderName
 	jp LoadGymLeaderAndCityName
 
-Gym2CityName:
+.CityName:
 	db "CERULEAN CITY@"
 
-Gym2LeaderName:
+.LeaderName:
 	db "MISTY@"
 
 CeruleanGymScript_5c6ed:
--- a/scripts/ChampionsRoom.asm
+++ b/scripts/ChampionsRoom.asm
@@ -64,7 +64,7 @@
 	ld hl, GaryDefeatedText
 	ld de, GaryVictoryText
 	call SaveEndBattleTextPointers
-	ld a, OPP_SONY3
+	ld a, OPP_RIVAL3
 	ld [wCurOpponent], a
 
 	; select which team to use during the encounter
--- a/scripts/CinnabarGym.asm
+++ b/scripts/CinnabarGym.asm
@@ -10,7 +10,7 @@
 	bit 6, [hl]
 	res 6, [hl]
 	push hl
-	call nz, CinnabarGymScript_75772
+	call nz, .LoadNames
 	pop hl
 	bit 5, [hl]
 	res 5, [hl]
@@ -17,14 +17,16 @@
 	call nz, UpdateCinnabarGymGateTileBlocks
 	ResetEvent EVENT_2A7
 	ret
-CinnabarGymScript_75772:
-	ld hl, Gym7CityName
-	ld de, Gym7LeaderName
+
+.LoadNames:
+	ld hl, .CityName
+	ld de, .LeaderName
 	jp LoadGymLeaderAndCityName
 
-Gym7CityName:
+.CityName:
 	db "CINNABAR ISLAND@"
-Gym7LeaderName:
+
+.LeaderName:
 	db "BLAINE@"
 
 CinnabarGymScript_75792:
--- a/scripts/FuchsiaGym.asm
+++ b/scripts/FuchsiaGym.asm
@@ -1,5 +1,5 @@
 FuchsiaGym_Script:
-	call FuchsiaGymScript_75453
+	call .LoadNames
 	call EnableAutoTextBoxDrawing
 	ld hl, FuchsiaGymTrainerHeader0
 	ld de, FuchsiaGym_ScriptPointers
@@ -8,19 +8,20 @@
 	ld [wFuchsiaGymCurScript], a
 	ret
 
-FuchsiaGymScript_75453:
+.LoadNames:
 	ld hl, wCurrentMapScriptFlags
 	bit 6, [hl]
 	res 6, [hl]
 	ret z
-	ld hl, Gym5CityName
-	ld de, Gym5LeaderName
+	ld hl, .CityName
+	ld de, .LeaderName
 	call LoadGymLeaderAndCityName
 	ret
 
-Gym5CityName:
+.CityName:
 	db "FUCHSIA CITY@"
-Gym5LeaderName:
+
+.LeaderName:
 	db "KOGA@"
 
 FuchsiaGymScript_75477:
--- a/scripts/OaksLab.asm
+++ b/scripts/OaksLab.asm
@@ -381,7 +381,7 @@
 	ret nz
 
 	; define which team rival uses, and fight it
-	ld a, OPP_SONY1
+	ld a, OPP_RIVAL1
 	ld [wCurOpponent], a
 	ld a, [wRivalStarter]
 	cp STARTER2
--- a/scripts/PewterGym.asm
+++ b/scripts/PewterGym.asm
@@ -2,7 +2,7 @@
 	ld hl, wCurrentMapScriptFlags
 	bit 6, [hl]
 	res 6, [hl]
-	call nz, PewterGymScript_5c3a4
+	call nz, .LoadNames
 	call EnableAutoTextBoxDrawing
 	ld hl, PewterGymTrainerHeader0
 	ld de, PewterGym_ScriptPointers
@@ -11,15 +11,15 @@
 	ld [wPewterGymCurScript], a
 	ret
 
-PewterGymScript_5c3a4:
-	ld hl, Gym1CityName
-	ld de, Gym1LeaderName
+.LoadNames:
+	ld hl, .CityName
+	ld de, .LeaderName
 	jp LoadGymLeaderAndCityName
 
-Gym1CityName:
+.CityName:
 	db "PEWTER CITY@"
 
-Gym1LeaderName:
+.LeaderName:
 	db "BROCK@"
 
 PewterGymScript_5c3bf:
--- a/scripts/PokemonTower2F.asm
+++ b/scripts/PokemonTower2F.asm
@@ -146,7 +146,7 @@
 	ld hl, PokemonTower2Text_60632
 	ld de, PokemonTower2Text_60637
 	call SaveEndBattleTextPointers
-	ld a, OPP_SONY2
+	ld a, OPP_RIVAL2
 	ld [wCurOpponent], a
 
 	; select which team to use during the encounter
--- a/scripts/Route22.asm
+++ b/scripts/Route22.asm
@@ -131,7 +131,7 @@
 	ld hl, Route22RivalDefeatedText1
 	ld de, Route22Text_511bc
 	call SaveEndBattleTextPointers
-	ld a, OPP_SONY1
+	ld a, OPP_RIVAL1
 	ld [wCurOpponent], a
 	ld hl, StarterMons_50faf
 	call Route22Script_50ed6
@@ -287,7 +287,7 @@
 	ld hl, Route22RivalDefeatedText2
 	ld de, Route22Text_511d0
 	call SaveEndBattleTextPointers
-	ld a, OPP_SONY2
+	ld a, OPP_RIVAL2
 	ld [wCurOpponent], a
 	ld hl, StarterMons_510d9
 	call Route22Script_50ed6
--- a/scripts/SSAnne2F.asm
+++ b/scripts/SSAnne2F.asm
@@ -96,7 +96,7 @@
 	ldh [hSpriteIndexOrTextID], a
 	call DisplayTextID
 	call Delay3
-	ld a, OPP_SONY2
+	ld a, OPP_RIVAL2
 	ld [wCurOpponent], a
 
 	; select which team to use during the encounter
--- a/scripts/SaffronGym.asm
+++ b/scripts/SaffronGym.asm
@@ -2,7 +2,7 @@
 	ld hl, wCurrentMapScriptFlags
 	bit 6, [hl]
 	res 6, [hl]
-	call nz, .extra
+	call nz, .LoadNames
 	call EnableAutoTextBoxDrawing
 	ld hl, SaffronGymTrainerHeader0
 	ld de, SaffronGym_ScriptPointers
@@ -11,15 +11,15 @@
 	ld [wSaffronGymCurScript], a
 	ret
 
-.extra
-	ld hl, Gym6CityName
-	ld de, Gym6LeaderName
+.LoadNames:
+	ld hl, .CityName
+	ld de, .LeaderName
 	jp LoadGymLeaderAndCityName
 
-Gym6CityName:
+.CityName:
 	db "SAFFRON CITY@"
 
-Gym6LeaderName:
+.LeaderName:
 	db "SABRINA@"
 
 SaffronGymText_5d048:
--- a/scripts/SilphCo7F.asm
+++ b/scripts/SilphCo7F.asm
@@ -183,7 +183,7 @@
 	ld hl, SilphCo7Text14
 	ld de, SilphCo7Text_51ecd
 	call SaveEndBattleTextPointers
-	ld a, OPP_SONY2
+	ld a, OPP_RIVAL2
 	ld [wCurOpponent], a
 	ld a, [wRivalStarter]
 	cp STARTER2
--- a/scripts/VermilionGym.asm
+++ b/scripts/VermilionGym.asm
@@ -3,7 +3,7 @@
 	bit 5, [hl]
 	res 5, [hl]
 	push hl
-	call nz, VermilionGymLoadName
+	call nz, .LoadNames
 	pop hl
 	bit 6, [hl]
 	res 6, [hl]
@@ -16,15 +16,15 @@
 	ld [wVermilionGymCurScript], a
 	ret
 
-VermilionGymLoadName:
-	ld hl, Gym3CityName
-	ld de, Gym3LeaderName
+.LoadNames:
+	ld hl, .CityName
+	ld de, .LeaderName
 	jp LoadGymLeaderAndCityName
 
-Gym3CityName:
+.CityName:
 	db "VERMILION CITY@"
 
-Gym3LeaderName:
+.LeaderName:
 	db "LT.SURGE@"
 
 VermilionGymSetDoorTile:
--- a/scripts/ViridianGym.asm
+++ b/scripts/ViridianGym.asm
@@ -1,6 +1,6 @@
 ViridianGym_Script:
-	ld hl, Gym8CityName
-	ld de, Gym8LeaderName
+	ld hl, .CityName
+	ld de, .LeaderName
 	call LoadGymLeaderAndCityName
 	call EnableAutoTextBoxDrawing
 	ld hl, ViridianGymTrainerHeader0
@@ -10,9 +10,10 @@
 	ld [wViridianGymCurScript], a
 	ret
 
-Gym8CityName:
+.CityName:
 	db "VIRIDIAN CITY@"
-Gym8LeaderName:
+
+.LeaderName:
 	db "GIOVANNI@"
 
 ViridianGymScript_748d6:
--- a/wram.asm
+++ b/wram.asm
@@ -2944,7 +2944,7 @@
 ; bit 0: play time being counted
 ; bit 1: remnant of debug mode; only set by the debug build.
 ; if it is set:
-; 1. skips most of Prof. Oak's speech, and uses NINTEN as the player's name and SONY as the rival's name
+; 1. skips most of Prof. Oak's speech, and uses NINTEN as the player's name and RIVAL as the rival's name
 ; 2. does not have the player start in floor two of the player's house (instead sending them to [wLastMap])
 ; 3. allows wild battles to be avoided by holding down B
 ; furthermore, in the debug build: