shithub: pokecrystal

Download patch

ref: d91e42ca5e3796108b01df9e6535e84892cbf9cc
parent: e0088adb3f692e03e695f912bb0c4bf2e8189e75
author: Remy Oukaour <remy.oukaour@gmail.com>
date: Wed Jan 10 13:10:01 EST 2018

Group some mutually edited files in data/sprites/

--- a/constants/map_data_constants.asm
+++ b/constants/map_data_constants.asm
@@ -202,7 +202,7 @@
 	const OBJECTTYPE_6
 
 
-; Emotes indexes (see data/emotes.asm)
+; Emotes indexes (see data/sprites/emotes.asm)
 	const_def
 	const EMOTE_SHOCK ; 0
 	const EMOTE_QUESTION ; 1
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -105,7 +105,7 @@
 	const SPRITE_RAIKOU ; 65
 	const SPRITE_STANDING_YOUNGSTER ; 66
 
-; SpriteMons indexes (see data/sprite_mons.asm)
+; SpriteMons indexes (see data/sprites/sprite_mons.asm)
 const_value set $80
 SPRITE_POKEMON EQU const_value
 	const SPRITE_UNOWN ; 80
--- a/constants/sprite_data_constants.asm
+++ b/constants/sprite_data_constants.asm
@@ -36,7 +36,7 @@
 	const PAL_NPC_TREE   ; e
 	const PAL_NPC_ROCK   ; f
 
-; SpriteMovementData indexes (see data/map_objects.asm)
+; SpriteMovementData indexes (see data/sprites/map_objects.asm)
 	const_def
 	const SPRITEMOVEDATA_00                   ; 00
 	const SPRITEMOVEDATA_ITEM_TREE            ; 01
@@ -158,7 +158,7 @@
 	const OBJECT_ACTION_GRASS_SHAKE  ; 0f
 	const OBJECT_ACTION_SKYFALL      ; 10
 
-; Facings indexes (see data/facings.asm)
+; Facings indexes (see data/sprites/facings.asm)
 	const_def
 	const FACING_STEP_DOWN_0    ; 00
 	const FACING_STEP_DOWN_1    ; 01
--- a/data/emotes.asm
+++ /dev/null
@@ -1,22 +1,0 @@
-emote: MACRO
-; graphics pointer, length, starting tile
-	dw \1
-	db \2 tiles, BANK(\1)
-	dw vTiles1 tile \3
-ENDM
-
-Emotes: ; 144d
-; entries correspond to EMOTE_* constants
-	emote ShockEmote,     4, $78
-	emote QuestionEmote,  4, $78
-	emote HappyEmote,     4, $78
-	emote SadEmote,       4, $78
-	emote HeartEmote,     4, $78
-	emote BoltEmote,      4, $78
-	emote SleepEmote,     4, $78
-	emote FishEmote,      4, $78
-	emote JumpShadowGFX,  1, $7c
-	emote FishingRodGFX,  2, $7c
-	emote BoulderDustGFX, 2, $7e
-	emote GrassRustleGFX, 1, $7e
-; 14495
--- a/data/facings.asm
+++ /dev/null
@@ -1,264 +1,0 @@
-Facings: ; 4049
-; entries correspond to FACING_* constants
-	dw FacingStepDown0
-	dw FacingStepDown1
-	dw FacingStepDown2
-	dw FacingStepDown3
-	dw FacingStepUp0
-	dw FacingStepUp1
-	dw FacingStepUp2
-	dw FacingStepUp3
-	dw FacingStepLeft0
-	dw FacingStepLeft1
-	dw FacingStepLeft2
-	dw FacingStepLeft3
-	dw FacingStepRight0
-	dw FacingStepRight1
-	dw FacingStepRight2
-	dw FacingStepRight3
-	dw FacingFishDown
-	dw FacingFishUp
-	dw FacingFishLeft
-	dw FacingFishRight
-	dw FacingEmote
-	dw FacingShadow
-	dw FacingBigDollAsymmetric
-	dw FacingBigDollSymmetric
-	dw FacingWeirdTree0
-	dw FacingWeirdTree1
-	dw FacingWeirdTree2
-	dw FacingWeirdTree3
-	dw FacingBoulderDust1
-	dw FacingBoulderDust2
-	dw FacingGrass1
-	dw FacingGrass2
-FacingsEnd:
-	dw 0
-
-NUM_FACINGS EQU (FacingsEnd - Facings) / 2
-
-
-; Tables used as a reference to transform OAM data.
-
-; Format:
-;	db y, x, attributes, tile index
-
-FacingStepDown0:
-FacingStepDown2:
-FacingWeirdTree0:
-FacingWeirdTree2: ; standing down
-	db 4 ; #
-	db  0,  0, 0, $00
-	db  0,  8, 0, $01
-	db  8,  0, 2, $02
-	db  8,  8, 2, $03
-; 409c
-
-FacingStepDown1: ; walking down 1
-	db 4 ; #
-	db  0,  0, 0, $80
-	db  0,  8, 0, $81
-	db  8,  0, 2, $82
-	db  8,  8, 2, $83
-; 40ad
-
-FacingStepDown3: ; walking down 2
-	db 4 ; #
-	db  0,  8, X_FLIP, $80
-	db  0,  0, X_FLIP, $81
-	db  8,  8, 2 | X_FLIP, $82
-	db  8,  0, 2 | X_FLIP, $83
-; 40be
-
-FacingStepUp0:
-FacingStepUp2: ; standing up
-	db 4 ; #
-	db  0,  0, 0, $04
-	db  0,  8, 0, $05
-	db  8,  0, 2, $06
-	db  8,  8, 2, $07
-; 40cf
-
-FacingStepUp1: ; walking up 1
-	db 4 ; #
-	db  0,  0, 0, $84
-	db  0,  8, 0, $85
-	db  8,  0, 2, $86
-	db  8,  8, 2, $87
-; 40e0
-
-FacingStepUp3: ; walking up 2
-	db 4 ; #
-	db  0,  8, X_FLIP, $84
-	db  0,  0, X_FLIP, $85
-	db  8,  8, 2 | X_FLIP, $86
-	db  8,  0, 2 | X_FLIP, $87
-; 40f1
-
-FacingStepLeft0:
-FacingStepLeft2: ; standing left
-	db 4 ; #
-	db  0,  0, 0, $08
-	db  0,  8, 0, $09
-	db  8,  0, 2, $0a
-	db  8,  8, 2, $0b
-; 4102
-
-FacingStepRight0:
-FacingStepRight2: ; standing right
-	db 4 ; #
-	db  0,  8, X_FLIP, $08
-	db  0,  0, X_FLIP, $09
-	db  8,  8, 2 | X_FLIP, $0a
-	db  8,  0, 2 | X_FLIP, $0b
-; 4113
-
-FacingStepLeft1:
-FacingStepLeft3: ; walking left
-	db 4 ; #
-	db  0,  0, 0, $88
-	db  0,  8, 0, $89
-	db  8,  0, 2, $8a
-	db  8,  8, 2, $8b
-; 4124
-
-FacingStepRight1:
-FacingStepRight3: ; walking right
-	db 4 ; #
-	db  0,  8, X_FLIP, $88
-	db  0,  0, X_FLIP, $89
-	db  8,  8, 2 | X_FLIP, $8a
-	db  8,  0, 2 | X_FLIP, $8b
-; 4135
-
-FacingFishDown: ; fishing down
-	db 5 ; #
-	db  0,  0, 0, $00
-	db  0,  8, 0, $01
-	db  8,  0, 2, $02
-	db  8,  8, 2, $03
-	db 16,  0, 4, $fc
-; 414a
-
-FacingFishUp: ; fishing up
-	db 5 ; #
-	db  0,  0, 0, $04
-	db  0,  8, 0, $05
-	db  8,  0, 2, $06
-	db  8,  8, 2, $07
-	db -8,  0, 4, $fc
-; 415f
-
-FacingFishLeft: ; fishing left
-	db 5 ; #
-	db  0,  0, 0, $08
-	db  0,  8, 0, $09
-	db  8,  0, 2, $0a
-	db  8,  8, 2, $0b
-	db  5, -8, 4 | X_FLIP, $fd
-; 4174
-
-FacingFishRight: ; fishing right
-	db 5 ; #
-	db  0,  8, X_FLIP, $08
-	db  0,  0, X_FLIP, $09
-	db  8,  8, 2 | X_FLIP, $0a
-	db  8,  0, 2 | X_FLIP, $0b
-	db  5, 16, 4, $fd
-; 4189
-
-FacingEmote: ; emote
-	db 4 ; #
-	db  0,  0, 4, $f8
-	db  0,  8, 4, $f9
-	db  8,  0, 4, $fa
-	db  8,  8, 4, $fb
-; 419a
-
-FacingShadow: ; shadow
-	db 2 ; #
-	db  0,  0, 4, $fc
-	db  0,  8, 4 | X_FLIP, $fc
-; 41a3
-
-FacingBigDollSymmetric: ; big snorlax or lapras doll
-	db 16 ; #
-	db  0,  0, 0, $00
-	db  0,  8, 0, $01
-	db  8,  0, 0, $02
-	db  8,  8, 0, $03
-	db 16,  0, 0, $04
-	db 16,  8, 0, $05
-	db 24,  0, 0, $06
-	db 24,  8, 0, $07
-	db  0, 24, X_FLIP, $00
-	db  0, 16, X_FLIP, $01
-	db  8, 24, X_FLIP, $02
-	db  8, 16, X_FLIP, $03
-	db 16, 24, X_FLIP, $04
-	db 16, 16, X_FLIP, $05
-	db 24, 24, X_FLIP, $06
-	db 24, 16, X_FLIP, $07
-; 41e4
-
-FacingWeirdTree1: ; 41e4
-	db 4 ; #
-	db  0,  0, 0, $04
-	db  0,  8, 0, $05
-	db  8,  0, 0, $06
-	db  8,  8, 0, $07
-; 41f5
-
-FacingWeirdTree3: ; 41f5
-	db 4 ; #
-	db  0,  8, X_FLIP, $04
-	db  0,  0, X_FLIP, $05
-	db  8,  8, X_FLIP, $06
-	db  8,  0, X_FLIP, $07
-; 4206
-
-FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
-	db 14 ; #
-	db  0,  0, 0, $00
-	db  0,  8, 0, $01
-	db  8,  0, 0, $04
-	db  8,  8, 0, $05
-	db 16,  8, 0, $07
-	db 24,  8, 0, $0a
-	db  0, 24, 0, $03
-	db  0, 16, 0, $02
-	db  8, 24, X_FLIP, $02
-	db  8, 16, 0, $06
-	db 16, 24, 0, $09
-	db 16, 16, 0, $08
-	db 24, 24, X_FLIP, $04
-	db 24, 16, 0, $0b
-; 423f
-
-FacingBoulderDust1: ; boulder dust 1
-	db 4 ; #
-	db  0,  0, 4, $fe
-	db  0,  8, 4, $fe
-	db  8,  0, 4, $fe
-	db  8,  8, 4, $fe
-; 4250
-
-FacingBoulderDust2: ; boulder dust 2
-	db 4 ; #
-	db  0,  0, 4, $ff
-	db  0,  8, 4, $ff
-	db  8,  0, 4, $ff
-	db  8,  8, 4, $ff
-; 4261
-
-FacingGrass1: ; 4261
-	db 2 ; #
-	db  8,  0, 4, $fe
-	db  8,  8, 4 | X_FLIP, $fe
-; 426a
-
-FacingGrass2: ; 426a
-	db 2 ; #
-	db  9, -1, 4, $fe
-	db  9,  9, 4 | X_FLIP, $fe
-; 4273
--- a/data/map_objects.asm
+++ /dev/null
@@ -1,47 +1,0 @@
-sprite_movement_data: MACRO
-	db \1, \2, \3, \4, \5
-	dn \6, 0
-ENDM
-
-SpriteMovementData:: ; 4273
-; entries correspond to SPRITEMOVEDATA_* constants
-	; function,                                              facing, action,                  flags1, flags2, palette flags
-	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_00
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $0c,    $00,    %0000 ; SPRITEMOVEDATA_ITEM_TREE
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WANDER
-	sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN,      DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINRANDOM_SLOW
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y,         DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WALK_UP_DOWN
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X,         DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WALK_LEFT_RIGHT
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_DOWN
-	sprite_movement_data SPRITEMOVEFN_STANDING,              UP,     OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_UP
-	sprite_movement_data SPRITEMOVEFN_STANDING,              LEFT,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_LEFT
-	sprite_movement_data SPRITEMOVEFN_STANDING,              RIGHT,  OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_RIGHT
-	sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN,      DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINRANDOM_FAST
-	sprite_movement_data SPRITEMOVEFN_OBEY_DPAD,             DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_PLAYER
-	sprite_movement_data SPRITEMOVEFN_08,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0C
-	sprite_movement_data SPRITEMOVEFN_09,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0D
-	sprite_movement_data SPRITEMOVEFN_0A,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0E
-	sprite_movement_data SPRITEMOVEFN_0B,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0F
-	sprite_movement_data SPRITEMOVEFN_0C,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_10
-	sprite_movement_data SPRITEMOVEFN_0D,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_11
-	sprite_movement_data SPRITEMOVEFN_0E,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_12
-	sprite_movement_data SPRITEMOVEFN_FOLLOW,                DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_FOLLOWING
-	sprite_movement_data SPRITEMOVEFN_SCRIPTED,              DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_SCRIPTED
-	sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX,           DOWN,   OBJECT_ACTION_BIG_SNORLAX,  $2e,    $01,    %1100 ; SPRITEMOVEDATA_SNORLAX
-	sprite_movement_data SPRITEMOVEFN_BOUNCE,                DOWN,   OBJECT_ACTION_BOUNCE,       $2e,    $00,    %0000 ; SPRITEMOVEDATA_POKEMON
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $0c,    $00,    %0000 ; SPRITEMOVEDATA_SUDOWOODO
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $2e,    $10,    %0000 ; SPRITEMOVEDATA_SMASHABLE_ROCK
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_STAND,        $2e,    $00,    %0100 ; SPRITEMOVEDATA_STRENGTH_BOULDER
-	sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT,        DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_FOLLOWNOTEXACT
-	sprite_movement_data SPRITEMOVEFN_SHADOW,                DOWN,   OBJECT_ACTION_00,           $8e,    $01,    %0000 ; SPRITEMOVEDATA_SHADOW
-	sprite_movement_data SPRITEMOVEFN_EMOTE,                 DOWN,   OBJECT_ACTION_EMOTE,        $8e,    $02,    %0000 ; SPRITEMOVEDATA_EMOTE
-	sprite_movement_data SPRITEMOVEFN_SCREENSHAKE,           DOWN,   OBJECT_ACTION_00,           $82,    $00,    %0000 ; SPRITEMOVEDATA_SCREENSHAKE
-	sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
-	sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE,        RIGHT,  OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINCLOCKWISE
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_BIG_LAPRAS,   $2e,    $01,    %1100 ; SPRITEMOVEDATA_20
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_BIG_DOLL,     $2e,    $01,    %1100 ; SPRITEMOVEDATA_BIGDOLL
-	sprite_movement_data SPRITEMOVEFN_BOULDERDUST,           DOWN,   OBJECT_ACTION_BOULDER_DUST, $8e,    $01,    %0000 ; SPRITEMOVEDATA_BOULDERDUST
-	sprite_movement_data SPRITEMOVEFN_GRASS,                 DOWN,   OBJECT_ACTION_GRASS_SHAKE,  $8e,    $02,    %0000 ; SPRITEMOVEDATA_GRASS
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0010 ; SPRITEMOVEDATA_LAPRAS
-	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; 25
-; 4357
--- a/data/sprite_mons.asm
+++ /dev/null
@@ -1,38 +1,0 @@
-SpriteMons: ; 14495
-; entries correspond to SPRITE_* constants past SPRITE_POKEMON
-	db UNOWN
-	db GEODUDE
-	db GROWLITHE
-	db WEEDLE
-	db SHELLDER
-	db ODDISH
-	db GENGAR
-	db ZUBAT
-	db MAGIKARP
-	db SQUIRTLE
-	db TOGEPI
-	db BUTTERFREE
-	db DIGLETT
-	db POLIWAG
-	db PIKACHU
-	db CLEFAIRY
-	db CHARMANDER
-	db JYNX
-	db STARMIE
-	db BULBASAUR
-	db JIGGLYPUFF
-	db GRIMER
-	db EKANS
-	db PARAS
-	db TENTACOOL
-	db TAUROS
-	db MACHOP
-	db VOLTORB
-	db LAPRAS
-	db RHYDON
-	db MOLTRES
-	db SNORLAX
-	db GYARADOS
-	db LUGIA
-	db HO_OH
-; 144b8
--- a/data/sprites.asm
+++ /dev/null
@@ -1,111 +1,0 @@
-overworld_sprite: MACRO
-; pointer, length, type, palette
-	dw \1
-	db \2 * 4 tiles, BANK(\1)
-	db \3, \4
-ENDM
-
-OverworldSprites: ; 14736
-; entries correspond to SPRITE_* constants
-	overworld_sprite ChrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite ChrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite GameboyKidSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
-	overworld_sprite SilverSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite OakSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite RedSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BlueSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BillSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite ElderSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite JanineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite KurtSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite MomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BlaineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite RedsMomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite DaisySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite ElmSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite WillSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-	overworld_sprite FalknerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite WhitneySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BugsySpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite MortySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite ChuckSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite JasmineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite PryceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite ClairSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BrockSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite KarenSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BrunoSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite MistySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite LanceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite SurgeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite ErikaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite KogaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite SabrinaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite CooltrainerMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite CooltrainerFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BugCatcherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite TwinSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite YoungsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite LassSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite TeacherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BuenaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite SuperNerdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite RockerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite PokefanMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite PokefanFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite GrampsSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite GrannySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite SwimmerGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite SwimmerGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BigSnorlaxSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-	overworld_sprite SurfingPikachuSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite RocketSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite RocketGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite NurseSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-	overworld_sprite LinkReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite ClerkSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
-	overworld_sprite FisherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite FishingGuruSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite ScientistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite KimonoGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite SageSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite UnusedGuySpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-	overworld_sprite GentlemanSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BlackBeltSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite ReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite OfficerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite CalSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite SlowpokeSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite CaptainSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite BigLaprasSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
-	overworld_sprite GymGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite SailorSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite BikerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
-	overworld_sprite PharmacistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite MonsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite FairySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BirdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite DragonSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
-	overworld_sprite BigOnixSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
-	overworld_sprite N64SpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-	overworld_sprite SudowoodoSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
-	overworld_sprite SurfSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite PokeBallSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite PokedexSpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-	overworld_sprite PaperSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-	overworld_sprite VirtualBoySpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite OldLinkReceptionistSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
-	overworld_sprite RockSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
-	overworld_sprite BoulderSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
-	overworld_sprite SnesSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-	overworld_sprite FamicomSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite FruitTreeSpriteGFX, 1, STILL_SPRITE, PAL_OW_TREE
-	overworld_sprite GoldTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
-	overworld_sprite SilverTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_SILVER
-	overworld_sprite KrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite KrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
-	overworld_sprite KurtOutsideSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
-	overworld_sprite SuicuneSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
-	overworld_sprite EnteiSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite RaikouSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
-	overworld_sprite StandingYoungsterSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
--- /dev/null
+++ b/data/sprites/emotes.asm
@@ -1,0 +1,22 @@
+emote: MACRO
+; graphics pointer, length, starting tile
+	dw \1
+	db \2 tiles, BANK(\1)
+	dw vTiles1 tile \3
+ENDM
+
+Emotes: ; 144d
+; entries correspond to EMOTE_* constants
+	emote ShockEmote,     4, $78
+	emote QuestionEmote,  4, $78
+	emote HappyEmote,     4, $78
+	emote SadEmote,       4, $78
+	emote HeartEmote,     4, $78
+	emote BoltEmote,      4, $78
+	emote SleepEmote,     4, $78
+	emote FishEmote,      4, $78
+	emote JumpShadowGFX,  1, $7c
+	emote FishingRodGFX,  2, $7c
+	emote BoulderDustGFX, 2, $7e
+	emote GrassRustleGFX, 1, $7e
+; 14495
--- /dev/null
+++ b/data/sprites/facings.asm
@@ -1,0 +1,264 @@
+Facings: ; 4049
+; entries correspond to FACING_* constants
+	dw FacingStepDown0
+	dw FacingStepDown1
+	dw FacingStepDown2
+	dw FacingStepDown3
+	dw FacingStepUp0
+	dw FacingStepUp1
+	dw FacingStepUp2
+	dw FacingStepUp3
+	dw FacingStepLeft0
+	dw FacingStepLeft1
+	dw FacingStepLeft2
+	dw FacingStepLeft3
+	dw FacingStepRight0
+	dw FacingStepRight1
+	dw FacingStepRight2
+	dw FacingStepRight3
+	dw FacingFishDown
+	dw FacingFishUp
+	dw FacingFishLeft
+	dw FacingFishRight
+	dw FacingEmote
+	dw FacingShadow
+	dw FacingBigDollAsymmetric
+	dw FacingBigDollSymmetric
+	dw FacingWeirdTree0
+	dw FacingWeirdTree1
+	dw FacingWeirdTree2
+	dw FacingWeirdTree3
+	dw FacingBoulderDust1
+	dw FacingBoulderDust2
+	dw FacingGrass1
+	dw FacingGrass2
+FacingsEnd:
+	dw 0
+
+NUM_FACINGS EQU (FacingsEnd - Facings) / 2
+
+
+; Tables used as a reference to transform OAM data.
+
+; Format:
+;	db y, x, attributes, tile index
+
+FacingStepDown0:
+FacingStepDown2:
+FacingWeirdTree0:
+FacingWeirdTree2: ; standing down
+	db 4 ; #
+	db  0,  0, 0, $00
+	db  0,  8, 0, $01
+	db  8,  0, 2, $02
+	db  8,  8, 2, $03
+; 409c
+
+FacingStepDown1: ; walking down 1
+	db 4 ; #
+	db  0,  0, 0, $80
+	db  0,  8, 0, $81
+	db  8,  0, 2, $82
+	db  8,  8, 2, $83
+; 40ad
+
+FacingStepDown3: ; walking down 2
+	db 4 ; #
+	db  0,  8, X_FLIP, $80
+	db  0,  0, X_FLIP, $81
+	db  8,  8, 2 | X_FLIP, $82
+	db  8,  0, 2 | X_FLIP, $83
+; 40be
+
+FacingStepUp0:
+FacingStepUp2: ; standing up
+	db 4 ; #
+	db  0,  0, 0, $04
+	db  0,  8, 0, $05
+	db  8,  0, 2, $06
+	db  8,  8, 2, $07
+; 40cf
+
+FacingStepUp1: ; walking up 1
+	db 4 ; #
+	db  0,  0, 0, $84
+	db  0,  8, 0, $85
+	db  8,  0, 2, $86
+	db  8,  8, 2, $87
+; 40e0
+
+FacingStepUp3: ; walking up 2
+	db 4 ; #
+	db  0,  8, X_FLIP, $84
+	db  0,  0, X_FLIP, $85
+	db  8,  8, 2 | X_FLIP, $86
+	db  8,  0, 2 | X_FLIP, $87
+; 40f1
+
+FacingStepLeft0:
+FacingStepLeft2: ; standing left
+	db 4 ; #
+	db  0,  0, 0, $08
+	db  0,  8, 0, $09
+	db  8,  0, 2, $0a
+	db  8,  8, 2, $0b
+; 4102
+
+FacingStepRight0:
+FacingStepRight2: ; standing right
+	db 4 ; #
+	db  0,  8, X_FLIP, $08
+	db  0,  0, X_FLIP, $09
+	db  8,  8, 2 | X_FLIP, $0a
+	db  8,  0, 2 | X_FLIP, $0b
+; 4113
+
+FacingStepLeft1:
+FacingStepLeft3: ; walking left
+	db 4 ; #
+	db  0,  0, 0, $88
+	db  0,  8, 0, $89
+	db  8,  0, 2, $8a
+	db  8,  8, 2, $8b
+; 4124
+
+FacingStepRight1:
+FacingStepRight3: ; walking right
+	db 4 ; #
+	db  0,  8, X_FLIP, $88
+	db  0,  0, X_FLIP, $89
+	db  8,  8, 2 | X_FLIP, $8a
+	db  8,  0, 2 | X_FLIP, $8b
+; 4135
+
+FacingFishDown: ; fishing down
+	db 5 ; #
+	db  0,  0, 0, $00
+	db  0,  8, 0, $01
+	db  8,  0, 2, $02
+	db  8,  8, 2, $03
+	db 16,  0, 4, $fc
+; 414a
+
+FacingFishUp: ; fishing up
+	db 5 ; #
+	db  0,  0, 0, $04
+	db  0,  8, 0, $05
+	db  8,  0, 2, $06
+	db  8,  8, 2, $07
+	db -8,  0, 4, $fc
+; 415f
+
+FacingFishLeft: ; fishing left
+	db 5 ; #
+	db  0,  0, 0, $08
+	db  0,  8, 0, $09
+	db  8,  0, 2, $0a
+	db  8,  8, 2, $0b
+	db  5, -8, 4 | X_FLIP, $fd
+; 4174
+
+FacingFishRight: ; fishing right
+	db 5 ; #
+	db  0,  8, X_FLIP, $08
+	db  0,  0, X_FLIP, $09
+	db  8,  8, 2 | X_FLIP, $0a
+	db  8,  0, 2 | X_FLIP, $0b
+	db  5, 16, 4, $fd
+; 4189
+
+FacingEmote: ; emote
+	db 4 ; #
+	db  0,  0, 4, $f8
+	db  0,  8, 4, $f9
+	db  8,  0, 4, $fa
+	db  8,  8, 4, $fb
+; 419a
+
+FacingShadow: ; shadow
+	db 2 ; #
+	db  0,  0, 4, $fc
+	db  0,  8, 4 | X_FLIP, $fc
+; 41a3
+
+FacingBigDollSymmetric: ; big snorlax or lapras doll
+	db 16 ; #
+	db  0,  0, 0, $00
+	db  0,  8, 0, $01
+	db  8,  0, 0, $02
+	db  8,  8, 0, $03
+	db 16,  0, 0, $04
+	db 16,  8, 0, $05
+	db 24,  0, 0, $06
+	db 24,  8, 0, $07
+	db  0, 24, X_FLIP, $00
+	db  0, 16, X_FLIP, $01
+	db  8, 24, X_FLIP, $02
+	db  8, 16, X_FLIP, $03
+	db 16, 24, X_FLIP, $04
+	db 16, 16, X_FLIP, $05
+	db 24, 24, X_FLIP, $06
+	db 24, 16, X_FLIP, $07
+; 41e4
+
+FacingWeirdTree1: ; 41e4
+	db 4 ; #
+	db  0,  0, 0, $04
+	db  0,  8, 0, $05
+	db  8,  0, 0, $06
+	db  8,  8, 0, $07
+; 41f5
+
+FacingWeirdTree3: ; 41f5
+	db 4 ; #
+	db  0,  8, X_FLIP, $04
+	db  0,  0, X_FLIP, $05
+	db  8,  8, X_FLIP, $06
+	db  8,  0, X_FLIP, $07
+; 4206
+
+FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
+	db 14 ; #
+	db  0,  0, 0, $00
+	db  0,  8, 0, $01
+	db  8,  0, 0, $04
+	db  8,  8, 0, $05
+	db 16,  8, 0, $07
+	db 24,  8, 0, $0a
+	db  0, 24, 0, $03
+	db  0, 16, 0, $02
+	db  8, 24, X_FLIP, $02
+	db  8, 16, 0, $06
+	db 16, 24, 0, $09
+	db 16, 16, 0, $08
+	db 24, 24, X_FLIP, $04
+	db 24, 16, 0, $0b
+; 423f
+
+FacingBoulderDust1: ; boulder dust 1
+	db 4 ; #
+	db  0,  0, 4, $fe
+	db  0,  8, 4, $fe
+	db  8,  0, 4, $fe
+	db  8,  8, 4, $fe
+; 4250
+
+FacingBoulderDust2: ; boulder dust 2
+	db 4 ; #
+	db  0,  0, 4, $ff
+	db  0,  8, 4, $ff
+	db  8,  0, 4, $ff
+	db  8,  8, 4, $ff
+; 4261
+
+FacingGrass1: ; 4261
+	db 2 ; #
+	db  8,  0, 4, $fe
+	db  8,  8, 4 | X_FLIP, $fe
+; 426a
+
+FacingGrass2: ; 426a
+	db 2 ; #
+	db  9, -1, 4, $fe
+	db  9,  9, 4 | X_FLIP, $fe
+; 4273
--- /dev/null
+++ b/data/sprites/map_objects.asm
@@ -1,0 +1,47 @@
+sprite_movement_data: MACRO
+	db \1, \2, \3, \4, \5
+	dn \6, 0
+ENDM
+
+SpriteMovementData:: ; 4273
+; entries correspond to SPRITEMOVEDATA_* constants
+	; function,                                              facing, action,                  flags1, flags2, palette flags
+	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_00
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $0c,    $00,    %0000 ; SPRITEMOVEDATA_ITEM_TREE
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WANDER
+	sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN,      DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINRANDOM_SLOW
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y,         DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WALK_UP_DOWN
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X,         DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_WALK_LEFT_RIGHT
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_DOWN
+	sprite_movement_data SPRITEMOVEFN_STANDING,              UP,     OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_UP
+	sprite_movement_data SPRITEMOVEFN_STANDING,              LEFT,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_LEFT
+	sprite_movement_data SPRITEMOVEFN_STANDING,              RIGHT,  OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_STANDING_RIGHT
+	sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN,      DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINRANDOM_FAST
+	sprite_movement_data SPRITEMOVEFN_OBEY_DPAD,             DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_PLAYER
+	sprite_movement_data SPRITEMOVEFN_08,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0C
+	sprite_movement_data SPRITEMOVEFN_09,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0D
+	sprite_movement_data SPRITEMOVEFN_0A,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0E
+	sprite_movement_data SPRITEMOVEFN_0B,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_0F
+	sprite_movement_data SPRITEMOVEFN_0C,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_10
+	sprite_movement_data SPRITEMOVEFN_0D,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_11
+	sprite_movement_data SPRITEMOVEFN_0E,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_12
+	sprite_movement_data SPRITEMOVEFN_FOLLOW,                DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_FOLLOWING
+	sprite_movement_data SPRITEMOVEFN_SCRIPTED,              DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_SCRIPTED
+	sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX,           DOWN,   OBJECT_ACTION_BIG_SNORLAX,  $2e,    $01,    %1100 ; SPRITEMOVEDATA_SNORLAX
+	sprite_movement_data SPRITEMOVEFN_BOUNCE,                DOWN,   OBJECT_ACTION_BOUNCE,       $2e,    $00,    %0000 ; SPRITEMOVEDATA_POKEMON
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $0c,    $00,    %0000 ; SPRITEMOVEDATA_SUDOWOODO
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   OBJECT_ACTION_STAND,        $2e,    $10,    %0000 ; SPRITEMOVEDATA_SMASHABLE_ROCK
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_STAND,        $2e,    $00,    %0100 ; SPRITEMOVEDATA_STRENGTH_BOULDER
+	sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT,        DOWN,   OBJECT_ACTION_STAND,        $02,    $00,    %0000 ; SPRITEMOVEDATA_FOLLOWNOTEXACT
+	sprite_movement_data SPRITEMOVEFN_SHADOW,                DOWN,   OBJECT_ACTION_00,           $8e,    $01,    %0000 ; SPRITEMOVEDATA_SHADOW
+	sprite_movement_data SPRITEMOVEFN_EMOTE,                 DOWN,   OBJECT_ACTION_EMOTE,        $8e,    $02,    %0000 ; SPRITEMOVEDATA_EMOTE
+	sprite_movement_data SPRITEMOVEFN_SCREENSHAKE,           DOWN,   OBJECT_ACTION_00,           $82,    $00,    %0000 ; SPRITEMOVEDATA_SCREENSHAKE
+	sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE
+	sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE,        RIGHT,  OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; SPRITEMOVEDATA_SPINCLOCKWISE
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_BIG_LAPRAS,   $2e,    $01,    %1100 ; SPRITEMOVEDATA_20
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   OBJECT_ACTION_BIG_DOLL,     $2e,    $01,    %1100 ; SPRITEMOVEDATA_BIGDOLL
+	sprite_movement_data SPRITEMOVEFN_BOULDERDUST,           DOWN,   OBJECT_ACTION_BOULDER_DUST, $8e,    $01,    %0000 ; SPRITEMOVEDATA_BOULDERDUST
+	sprite_movement_data SPRITEMOVEFN_GRASS,                 DOWN,   OBJECT_ACTION_GRASS_SHAKE,  $8e,    $02,    %0000 ; SPRITEMOVEDATA_GRASS
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0010 ; SPRITEMOVEDATA_LAPRAS
+	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   OBJECT_ACTION_STAND,        $00,    $00,    %0000 ; 25
+; 4357
--- /dev/null
+++ b/data/sprites/sprite_mons.asm
@@ -1,0 +1,38 @@
+SpriteMons: ; 14495
+; entries correspond to SPRITE_* constants past SPRITE_POKEMON
+	db UNOWN
+	db GEODUDE
+	db GROWLITHE
+	db WEEDLE
+	db SHELLDER
+	db ODDISH
+	db GENGAR
+	db ZUBAT
+	db MAGIKARP
+	db SQUIRTLE
+	db TOGEPI
+	db BUTTERFREE
+	db DIGLETT
+	db POLIWAG
+	db PIKACHU
+	db CLEFAIRY
+	db CHARMANDER
+	db JYNX
+	db STARMIE
+	db BULBASAUR
+	db JIGGLYPUFF
+	db GRIMER
+	db EKANS
+	db PARAS
+	db TENTACOOL
+	db TAUROS
+	db MACHOP
+	db VOLTORB
+	db LAPRAS
+	db RHYDON
+	db MOLTRES
+	db SNORLAX
+	db GYARADOS
+	db LUGIA
+	db HO_OH
+; 144b8
--- /dev/null
+++ b/data/sprites/sprites.asm
@@ -1,0 +1,111 @@
+overworld_sprite: MACRO
+; pointer, length, type, palette
+	dw \1
+	db \2 * 4 tiles, BANK(\1)
+	db \3, \4
+ENDM
+
+OverworldSprites: ; 14736
+; entries correspond to SPRITE_* constants
+	overworld_sprite ChrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite ChrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite GameboyKidSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
+	overworld_sprite SilverSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite OakSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite RedSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BlueSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BillSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite ElderSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite JanineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite KurtSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite MomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BlaineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite RedsMomSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite DaisySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite ElmSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite WillSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
+	overworld_sprite FalknerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite WhitneySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BugsySpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite MortySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite ChuckSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite JasmineSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite PryceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite ClairSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BrockSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite KarenSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BrunoSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite MistySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite LanceSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite SurgeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite ErikaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite KogaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite SabrinaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite CooltrainerMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite CooltrainerFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BugCatcherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite TwinSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite YoungsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite LassSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite TeacherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BuenaSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite SuperNerdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite RockerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite PokefanMSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite PokefanFSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite GrampsSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite GrannySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite SwimmerGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite SwimmerGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BigSnorlaxSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
+	overworld_sprite SurfingPikachuSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite RocketSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite RocketGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite NurseSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
+	overworld_sprite LinkReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite ClerkSpriteGFX, 3, WALKING_SPRITE, PAL_OW_GREEN
+	overworld_sprite FisherSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite FishingGuruSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite ScientistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite KimonoGirlSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite SageSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite UnusedGuySpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
+	overworld_sprite GentlemanSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BlackBeltSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite ReceptionistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite OfficerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite CalSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite SlowpokeSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite CaptainSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite BigLaprasSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
+	overworld_sprite GymGuySpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite SailorSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite BikerSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BROWN
+	overworld_sprite PharmacistSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite MonsterSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite FairySpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BirdSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite DragonSpriteGFX, 3, WALKING_SPRITE, PAL_OW_RED
+	overworld_sprite BigOnixSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
+	overworld_sprite N64SpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
+	overworld_sprite SudowoodoSpriteGFX, 3, STANDING_SPRITE, PAL_OW_GREEN
+	overworld_sprite SurfSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite PokeBallSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite PokedexSpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
+	overworld_sprite PaperSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
+	overworld_sprite VirtualBoySpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite OldLinkReceptionistSpriteGFX, 3, STANDING_SPRITE, PAL_OW_RED
+	overworld_sprite RockSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
+	overworld_sprite BoulderSpriteGFX, 1, STILL_SPRITE, PAL_OW_ROCK
+	overworld_sprite SnesSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
+	overworld_sprite FamicomSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite FruitTreeSpriteGFX, 1, STILL_SPRITE, PAL_OW_TREE
+	overworld_sprite GoldTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_BROWN
+	overworld_sprite SilverTrophySpriteGFX, 1, STILL_SPRITE, PAL_OW_SILVER
+	overworld_sprite KrisSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite KrisBikeSpriteGFX, 3, WALKING_SPRITE, PAL_OW_BLUE
+	overworld_sprite KurtOutsideSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BROWN
+	overworld_sprite SuicuneSpriteGFX, 1, STILL_SPRITE, PAL_OW_BLUE
+	overworld_sprite EnteiSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite RaikouSpriteGFX, 1, STILL_SPRITE, PAL_OW_RED
+	overworld_sprite StandingYoungsterSpriteGFX, 3, STANDING_SPRITE, PAL_OW_BLUE
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -1341,7 +1341,7 @@
 INCLUDE "gfx/tilesets/bg_tiles.pal"
 
 MapObjectPals::
-INCLUDE "gfx/overworld/map_objects.pal"
+INCLUDE "gfx/overworld/map_sprites.pal"
 
 RoofPals:
 INCLUDE "gfx/tilesets/roofs.pal"
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -1,6 +1,6 @@
-INCLUDE "data/facings.asm"
+INCLUDE "data/sprites/facings.asm"
 
-INCLUDE "data/map_objects.asm"
+INCLUDE "data/sprites/map_objects.asm"
 
 
 ; 4357
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -719,10 +719,10 @@
 ; 1444d
 
 
-INCLUDE "data/emotes.asm"
+INCLUDE "data/sprites/emotes.asm"
 
-INCLUDE "data/sprite_mons.asm"
+INCLUDE "data/sprites/sprite_mons.asm"
 
 INCLUDE "data/maps/outdoor_sprites.asm"
 
-INCLUDE "data/sprites.asm"
+INCLUDE "data/sprites/sprites.asm"
--- a/gfx/overworld/map_objects.pal
+++ /dev/null
@@ -1,39 +1,0 @@
-; morn
-	RGB 28,31,16, 31,19,10, 31,07,01, 00,00,00 ; red
-	RGB 28,31,16, 31,19,10, 10,09,31, 00,00,00 ; blue
-	RGB 28,31,16, 31,19,10, 07,23,03, 00,00,00 ; green
-	RGB 28,31,16, 31,19,10, 15,10,03, 00,00,00 ; brown
-	RGB 28,31,16, 31,19,10, 30,10,06, 00,00,00 ; pink
-	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
-	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree
-	RGB 28,31,16, 24,18,07, 20,15,03, 07,07,07 ; rock
-
-; day
-	RGB 27,31,27, 31,19,10, 31,07,01, 00,00,00 ; red
-	RGB 27,31,27, 31,19,10, 10,09,31, 00,00,00 ; blue
-	RGB 27,31,27, 31,19,10, 07,23,03, 00,00,00 ; green
-	RGB 27,31,27, 31,19,10, 15,10,03, 00,00,00 ; brown
-	RGB 27,31,27, 31,19,10, 30,10,06, 00,00,00 ; pink
-	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
-	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree
-	RGB 27,31,27, 24,18,07, 20,15,03, 07,07,07 ; rock
-
-; nite
-	RGB 15,14,24, 31,19,10, 31,07,01, 00,00,00 ; red
-	RGB 15,14,24, 31,19,10, 10,09,31, 00,00,00 ; blue
-	RGB 15,14,24, 31,19,10, 07,23,03, 00,00,00 ; green
-	RGB 15,14,24, 31,19,10, 15,10,03, 00,00,00 ; brown
-	RGB 15,14,24, 31,19,10, 30,10,06, 00,00,00 ; pink
-	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
-	RGB 15,14,24, 08,13,19, 00,11,13, 00,00,00 ; tree
-	RGB 15,14,24, 12,09,15, 08,04,05, 00,00,00 ; rock
-
-; dark
-	RGB 01,01,02, 31,19,10, 31,07,01, 00,00,00 ; red
-	RGB 01,01,02, 31,19,10, 10,09,31, 00,00,00 ; blue
-	RGB 01,01,02, 31,19,10, 07,23,03, 00,00,00 ; green
-	RGB 01,01,02, 31,19,10, 15,10,03, 00,00,00 ; brown
-	RGB 01,01,02, 31,19,10, 30,10,06, 00,00,00 ; pink
-	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; tree
-	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; rock
--- /dev/null
+++ b/gfx/overworld/map_sprites.pal
@@ -1,0 +1,39 @@
+; morn
+	RGB 28,31,16, 31,19,10, 31,07,01, 00,00,00 ; red
+	RGB 28,31,16, 31,19,10, 10,09,31, 00,00,00 ; blue
+	RGB 28,31,16, 31,19,10, 07,23,03, 00,00,00 ; green
+	RGB 28,31,16, 31,19,10, 15,10,03, 00,00,00 ; brown
+	RGB 28,31,16, 31,19,10, 30,10,06, 00,00,00 ; pink
+	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
+	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree
+	RGB 28,31,16, 24,18,07, 20,15,03, 07,07,07 ; rock
+
+; day
+	RGB 27,31,27, 31,19,10, 31,07,01, 00,00,00 ; red
+	RGB 27,31,27, 31,19,10, 10,09,31, 00,00,00 ; blue
+	RGB 27,31,27, 31,19,10, 07,23,03, 00,00,00 ; green
+	RGB 27,31,27, 31,19,10, 15,10,03, 00,00,00 ; brown
+	RGB 27,31,27, 31,19,10, 30,10,06, 00,00,00 ; pink
+	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
+	RGB 22,31,10, 12,25,01, 05,14,00, 07,07,07 ; tree
+	RGB 27,31,27, 24,18,07, 20,15,03, 07,07,07 ; rock
+
+; nite
+	RGB 15,14,24, 31,19,10, 31,07,01, 00,00,00 ; red
+	RGB 15,14,24, 31,19,10, 10,09,31, 00,00,00 ; blue
+	RGB 15,14,24, 31,19,10, 07,23,03, 00,00,00 ; green
+	RGB 15,14,24, 31,19,10, 15,10,03, 00,00,00 ; brown
+	RGB 15,14,24, 31,19,10, 30,10,06, 00,00,00 ; pink
+	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
+	RGB 15,14,24, 08,13,19, 00,11,13, 00,00,00 ; tree
+	RGB 15,14,24, 12,09,15, 08,04,05, 00,00,00 ; rock
+
+; dark
+	RGB 01,01,02, 31,19,10, 31,07,01, 00,00,00 ; red
+	RGB 01,01,02, 31,19,10, 10,09,31, 00,00,00 ; blue
+	RGB 01,01,02, 31,19,10, 07,23,03, 00,00,00 ; green
+	RGB 01,01,02, 31,19,10, 15,10,03, 00,00,00 ; brown
+	RGB 01,01,02, 31,19,10, 30,10,06, 00,00,00 ; pink
+	RGB 31,31,31, 31,31,31, 13,13,13, 00,00,00 ; silver
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; tree
+	RGB 01,01,02, 00,00,00, 00,00,00, 00,00,00 ; rock
--- a/home/text.asm
+++ b/home/text.asm
@@ -47,10 +47,8 @@
 
 
 TextBox:: ; fe8
-; Draw a text box at hl with room for
-; b lines of c characters each.
-; Places a border around the textbox,
-; then switches the palette to the
+; Draw a text box at hl with room for b lines of c characters each.
+; Places a border around the textbox, then switches the palette to the
 ; text black-and-white scheme.
 	push bc
 	push hl