summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2018-09-08 02:43:19 -0500
committerDiegoisawesome <diego@domoreaweso.me>2018-09-08 02:43:19 -0500
commiteb8b0ff0f7dc48caa9c74469d28a7d73f79a8556 (patch)
treed1f19cb69ee1b998a91bfab73790c7bcb4c21889
parent12521fb1a828bcfc6d648c8cab5cc97b0f777698 (diff)
parentcf8f73bde1fc1cf34e98a3f3e1231dbe260abb27 (diff)
Merge branch 'master' of github.com:pret/pokeemerald
-rw-r--r--data/battle_pyramid_bag.s40
-rw-r--r--data/berries.inc689
-rw-r--r--data/field_player_avatar.s103
-rw-r--r--data/starter_choose.s159
-rw-r--r--ld_script.txt4
-rw-r--r--src/battle_pyramid_bag.c64
-rw-r--r--src/field_player_avatar.c190
-rw-r--r--src/starter_choose.c345
8 files changed, 559 insertions, 1035 deletions
diff --git a/data/battle_pyramid_bag.s b/data/battle_pyramid_bag.s
deleted file mode 100644
index de459075f..000000000
--- a/data/battle_pyramid_bag.s
+++ /dev/null
@@ -1,40 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-
- .align 2
-gOamData_861F378:: @ 861F378
- .2byte 0x0100, 0xc000, 0x0400, 0x0000
-
- .align 2
-gSpriteAnim_861F380:: @ 861F380
- .2byte 0x0000, 0x0004, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_861F388:: @ 861F388
- .4byte gSpriteAnim_861F380
-
- .align 2
-gSpriteAffineAnim_861F38C:: @ 861F38C
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gSpriteAffineAnim_861F39C:: @ 861F39C
- .2byte 0x0000, 0x0000, 0x02fe, 0x0000, 0x0000, 0x0000, 0x0402, 0x0000, 0x0000, 0x0000, 0x04fe, 0x0000, 0x0000, 0x0000, 0x0202, 0x0000
- .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gSpriteAffineAnimTable_861F3C4:: @ 861F3C4
- .4byte gSpriteAffineAnim_861F38C
- .4byte gSpriteAffineAnim_861F39C
-
- .align 2
-gUnknown_0861F3CC:: @ 861F3CC
- obj_tiles gBattleFrontierGfx_PyramidBag, 0x0800, 0x1024
-
- .align 2
-gUnknown_0861F3D4:: @ 861F3D4
- spr_template 0x1024, 0x1024, gOamData_861F378, gSpriteAnimTable_861F388, NULL, gSpriteAffineAnimTable_861F3C4, SpriteCallbackDummy
-
diff --git a/data/berries.inc b/data/berries.inc
deleted file mode 100644
index f06c32a1a..000000000
--- a/data/berries.inc
+++ /dev/null
@@ -1,689 +0,0 @@
- .align 2
-gBerries:: @ 858A670
- .string "CHERI$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 20 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Cheri
- .4byte gBerryDescriptionPart2_Cheri
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "CHESTO$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 80 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Chesto
- .4byte gBerryDescriptionPart2_Chesto
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "PECHA$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 40 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Pecha
- .4byte gBerryDescriptionPart2_Pecha
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "RAWST$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 32 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Rawst
- .4byte gBerryDescriptionPart2_Rawst
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "ASPEAR$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 50 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Aspear
- .4byte gBerryDescriptionPart2_Aspear
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "LEPPA$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 28 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Leppa
- .4byte gBerryDescriptionPart2_Leppa
- .byte 4 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "ORAN$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 35 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Oran
- .4byte gBerryDescriptionPart2_Oran
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "PERSIM$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 47 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Persim
- .4byte gBerryDescriptionPart2_Persim
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "LUM$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 34 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Lum
- .4byte gBerryDescriptionPart2_Lum
- .byte 12 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "SITRUS$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 95 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Sitrus
- .4byte gBerryDescriptionPart2_Sitrus
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "FIGY$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 100 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Figy
- .4byte gBerryDescriptionPart2_Figy
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "WIKI$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 115 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Wiki
- .4byte gBerryDescriptionPart2_Wiki
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "MAGO$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 126 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Mago
- .4byte gBerryDescriptionPart2_Mago
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "AGUAV$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 64 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Aguav
- .4byte gBerryDescriptionPart2_Aguav
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "IAPAPA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 223 @ size (in millimeters)
- .byte 3 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Iapapa
- .4byte gBerryDescriptionPart2_Iapapa
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 25 @ smoothness
- .byte 0 @ padding
-
- .string "RAZZ$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 120 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Razz
- .4byte gBerryDescriptionPart2_Razz
- .byte 1 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "BLUK$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 108 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Bluk
- .4byte gBerryDescriptionPart2_Bluk
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "NANAB$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 77 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Nanab
- .4byte gBerryDescriptionPart2_Nanab
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "WEPEAR$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 74 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Wepear
- .4byte gBerryDescriptionPart2_Wepear
- .byte 1 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "PINAP$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 80 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 3 @ min yield
- .4byte gBerryDescriptionPart1_Pinap
- .4byte gBerryDescriptionPart2_Pinap
- .byte 1 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "POMEG$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 135 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Pomeg
- .4byte gBerryDescriptionPart2_Pomeg
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "KELPSY$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 150 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Kelpsy
- .4byte gBerryDescriptionPart2_Kelpsy
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "QUALOT$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 110 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Qualot
- .4byte gBerryDescriptionPart2_Qualot
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "HONDEW$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 162 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Hondew
- .4byte gBerryDescriptionPart2_Hondew
- .byte 3 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "GREPA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 149 @ size (in millimeters)
- .byte 6 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Grepa
- .4byte gBerryDescriptionPart2_Grepa
- .byte 3 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 20 @ smoothness
- .byte 0 @ padding
-
- .string "TAMATO$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 200 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Tamato
- .4byte gBerryDescriptionPart2_Tamato
- .byte 6 @ stage duration (in hours)
- .byte 20 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "CORNN$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 75 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Cornn
- .4byte gBerryDescriptionPart2_Cornn
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 20 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "MAGOST$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 140 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Magost
- .4byte gBerryDescriptionPart2_Magost
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 20 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "RABUTA$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 226 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Rabuta
- .4byte gBerryDescriptionPart2_Rabuta
- .byte 6 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 20 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "NOMEL$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 285 @ size (in millimeters)
- .byte 4 @ max yield
- .byte 2 @ min yield
- .4byte gBerryDescriptionPart1_Nomel
- .4byte gBerryDescriptionPart2_Nomel
- .byte 6 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 20 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "SPELON$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 133 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Spelon
- .4byte gBerryDescriptionPart2_Spelon
- .byte 18 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 10 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "PAMTRE$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 244 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Pamtre
- .4byte gBerryDescriptionPart2_Pamtre
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 10 @ sweet
- .byte 0 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "WATMEL$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 250 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Watmel
- .4byte gBerryDescriptionPart2_Watmel
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 10 @ bitter
- .byte 0 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "DURIN$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 280 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Durin
- .4byte gBerryDescriptionPart2_Durin
- .byte 18 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 10 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "BELUE$", 7
- .byte BERRY_FIRMNESS_VERY_SOFT
- .2byte 300 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Belue
- .4byte gBerryDescriptionPart2_Belue
- .byte 18 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 70 @ smoothness
- .byte 0 @ padding
-
- .string "LIECHI$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 111 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Liechi
- .4byte gBerryDescriptionPart2_Liechi
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 0 @ bitter
- .byte 10 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "GANLON$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 33 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Ganlon
- .4byte gBerryDescriptionPart2_Ganlon
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 0 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "SALAC$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 95 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Salac
- .4byte gBerryDescriptionPart2_Salac
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 0 @ dry
- .byte 40 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "PETAYA$", 7
- .byte BERRY_FIRMNESS_VERY_HARD
- .2byte 237 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Petaya
- .4byte gBerryDescriptionPart2_Petaya
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 0 @ dry
- .byte 0 @ sweet
- .byte 40 @ bitter
- .byte 0 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "APICOT$", 7
- .byte BERRY_FIRMNESS_HARD
- .2byte 75 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Apicot
- .4byte gBerryDescriptionPart2_Apicot
- .byte 24 @ stage duration (in hours)
- .byte 0 @ spicy
- .byte 40 @ dry
- .byte 0 @ sweet
- .byte 0 @ bitter
- .byte 40 @ sour
- .byte 80 @ smoothness
- .byte 0 @ padding
-
- .string "LANSAT$", 7
- .byte BERRY_FIRMNESS_SOFT
- .2byte 97 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Lansat
- .4byte gBerryDescriptionPart2_Lansat
- .byte 24 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "STARF$", 7
- .byte BERRY_FIRMNESS_SUPER_HARD
- .2byte 153 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Starf
- .4byte gBerryDescriptionPart2_Starf
- .byte 24 @ stage duration (in hours)
- .byte 10 @ spicy
- .byte 10 @ dry
- .byte 10 @ sweet
- .byte 10 @ bitter
- .byte 10 @ sour
- .byte 30 @ smoothness
- .byte 0 @ padding
-
- .string "ENIGMA$", 7
- .byte BERRY_FIRMNESS_UNKNOWN
- .2byte 0 @ size (in millimeters)
- .byte 2 @ max yield
- .byte 1 @ min yield
- .4byte gBerryDescriptionPart1_Enigma
- .4byte gBerryDescriptionPart2_Enigma
- .byte 24 @ stage duration (in hours)
- .byte 40 @ spicy
- .byte 40 @ dry
- .byte 40 @ sweet
- .byte 40 @ bitter
- .byte 40 @ sour
- .byte 40 @ smoothness
- .byte 0 @ padding
diff --git a/data/field_player_avatar.s b/data/field_player_avatar.s
deleted file mode 100644
index cc3ff2447..000000000
--- a/data/field_player_avatar.s
+++ /dev/null
@@ -1,103 +0,0 @@
-@ the third big chunk of data
-
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_084974B8:: @ 84974B8
- .4byte PlayerAvatarTransition_Normal
- .4byte PlayerAvatarTransition_MachBike
- .4byte PlayerAvatarTransition_AcroBike
- .4byte PlayerAvatarTransition_Surfing
- .4byte PlayerAvatarTransition_Underwater
- .4byte PlayerAvatarTransition_ReturnToField
- .4byte PlayerAvatarTransition_Dummy
- .4byte PlayerAvatarTransition_Dummy
-
-gUnknown_084974D8:: @ 84974D8
- .4byte MetatileBehavior_IsSouthArrowWarp
- .4byte MetatileBehavior_IsNorthArrowWarp
- .4byte MetatileBehavior_IsWestArrowWarp
- .4byte MetatileBehavior_IsEastArrowWarp
-
-gUnknown_084974E8:: @ 84974E8
- .byte 0x64, 0x69, 0x65, 0x6a, 0x66, 0x6b, 0x67, 0x6c, 0x6f, 0x70, 0x68, 0x6d, 0x89, 0x8a, 0xbf, 0xc0
-
-gUnknown_084974F8:: @ 84974F8
- .byte 0x00, 0x59, 0x01, 0x5a, 0x3f, 0x5b, 0x02, 0x5c, 0x6f, 0x70, 0x03, 0x5d, 0x89, 0x8a, 0xbf, 0xc0
-
-gUnknown_08497508:: @ 8497508
- .byte 0xe6, 0xe7
-
-gUnknown_0849750A:: @ 849750A
- .byte 0xeb, 0xec
-
-gUnknown_0849750C:: @ 849750C
- .byte 0x00, 0x01, 0x01, 0x02, 0x3f, 0x04, 0x02, 0x08, 0x6f, 0x10, 0x59, 0x01, 0x5a, 0x02, 0x5b, 0x04, 0x5c, 0x08, 0x70, 0x10
-
-gUnknown_08497520:: @ 8497520
- .4byte MetatileBehavior_IsSouthArrowWarp
- .4byte MetatileBehavior_IsNorthArrowWarp
- .4byte MetatileBehavior_IsWestArrowWarp
- .4byte MetatileBehavior_IsEastArrowWarp
-
-gUnknown_08497530:: @ 8497530
- .4byte sub_808C3A4
- .4byte do_boulder_dust
- .4byte sub_808C484
-
-gUnknown_0849753C:: @ 849753C
- .4byte sub_808C544
-
-gUnknown_08497540:: @ 8497540
- .4byte sub_808C61C
- .4byte sub_808C644
- .4byte sub_808C6BC
- .4byte sub_808C6FC
-
-gUnknown_08497550:: @ 8497550
- .byte 3, 4, 2, 1
-
-gUnknown_08497554:: @ 8497554
- .byte 16, 16, 17, 18, 19
-
- .align 2
-gUnknown_0849755C:: @ 849755C
- .4byte fish0
- .4byte fish1
- .4byte fish2
- .4byte fish3
- .4byte fish4
- .4byte fish5
- .4byte fish6
- .4byte fish7
- .4byte fish8
- .4byte fish9
- .4byte fishA_wait_for_a_pressed
- .4byte fishB
- .4byte fishC
- .4byte fishD
- .4byte fishE
- .4byte fishF
-
-gUnknown_0849759C:: @ 849759C
- .2byte 1, 1, 1
-
-gUnknown_084975A2:: @ 84975A2
- .2byte 1, 3, 6
-
-gUnknown_084975A8:: @ 84975A8
- .string "·$"
-
-gUnknown_084975AA:: @ 84975AA
- .2byte 36, 33, 30
-
-gUnknown_084975B0:: @ 84975B0
- .2byte 0, 0
- .2byte 0x28, 10
- .2byte 0x46, 30
-
-gUnknown_084975BC:: @ 84975BC
- .byte 0x01, 0x03, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00
diff --git a/data/starter_choose.s b/data/starter_choose.s
deleted file mode 100644
index 92b95d80c..000000000
--- a/data/starter_choose.s
+++ /dev/null
@@ -1,159 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .include "include/constants/species.h"
-
- .section .rodata
-
- .align 2
-gBirchBagGrassPal:: @ 85B0A00
- .incbin "graphics/misc/birch_bag.gbapal"
- .incbin "graphics/misc/birch_grass.gbapal"
-
- .align 2
-gBirchBallarrow_Pal:: @ 85B0A40
- .incbin "graphics/misc/birch_ballarrow.gbapal"
-
- .align 2
-gBirchCircle_Pal:: @ 85B0A60
- .incbin "graphics/misc/birch_circle.gbapal"
-
- .align 2
-gBirchBagTilemap:: @ 85B0A80
- .incbin "graphics/misc/birch_bag_map.bin.lz"
-
- .align 2
-gBirchGrassTilemap:: @ 85B0C0C
- .incbin "graphics/misc/birch_grass_map.bin.lz"
-
- .align 2
-gBirchHelpGfx:: @ 85B0E04
- .incbin "graphics/misc/birch_help.4bpp.lz"
-
- .align 2
-gUnknown_085B18AC:: @ 85B18AC
- .incbin "graphics/misc/birch_ballarrow.4bpp.lz"
-
- .align 2
-gUnknown_085B1BCC:: @ 85B1BCC
- .incbin "graphics/misc/birch_circle.4bpp.lz"
-
- .align 2
-gUnknown_085B1DCC:: @ 85B1DCC
- window_template 0x00, 0x03, 0x0f, 0x18, 0x04, 0x0e, 0x0200
- null_window_template
-
- .align 2
-gUnknown_085B1DDC:: @ 85B1DDC
- window_template 0x00, 0x18, 0x09, 0x05, 0x04, 0x0e, 0x0260
-
- .align 2
-gUnknown_085B1DE4:: @ 85B1DE4
- window_template 0x00, 0x00, 0x00, 0x0d, 0x04, 0x0e, 0x0274
-
-sPokeballCoords:: @ 85B1DEC
- .byte 0x3c, 0x40, 0x78, 0x58, 0xb4, 0x40
-
-gStarterChoose_LabelCoords:: @ 85B1DF2
- .byte 0x00, 0x09, 0x10, 0x0a, 0x08, 0x04
-
-sStarterMon:: @ 85B1DF8
- .2byte SPECIES_TREECKO
- .2byte SPECIES_TORCHIC
- .2byte SPECIES_MUDKIP
-
- .align 2
-gUnknown_085B1E00:: @ 85B1E00
- .4byte 0x000001f8, 0x00003072, 0x00001063
-
-gUnknown_085B1E0C:: @ 85B1E0C
- .byte 0x00, 0x01, 0x03
-
- .align 2
-gOamData_85B1E10:: @ 85B1E10
- .2byte 0x00a0, 0x8000, 0x0400, 0x0000
-
- .align 2
-gOamData_85B1E18:: @ 85B1E18
- .2byte 0x00a0, 0x8000, 0x0400, 0x0000
-
- .align 2
-gOamData_85B1E20:: @ 85B1E20
- .2byte 0x03a0, 0xc000, 0x0400, 0x0000
-
-gUnknown_085B1E28:: @ 85B1E28
- .byte 0x3c, 0x20, 0x78, 0x38, 0xb4, 0x20, 0x00, 0x00
-
- .align 2
-gSpriteAnim_85B1E30:: @ 85B1E30
- .2byte 0x0030, 0x001e, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_85B1E38:: @ 85B1E38
- .2byte 0x0000, 0x001e, 0xffff, 0x0000
-
- .align 2
-gSpriteAnim_85B1E40:: @ 85B1E40
- .2byte 0x0010, 0x0004, 0x0000, 0x0004, 0x0020, 0x0004, 0x0000, 0x0004, 0x0010, 0x0004, 0x0000, 0x0004, 0x0020, 0x0004, 0x0000, 0x0004
- .2byte 0x0000, 0x0020, 0x0010, 0x0008, 0x0000, 0x0008, 0x0020, 0x0008, 0x0000, 0x0008, 0x0010, 0x0008, 0x0000, 0x0008, 0x0020, 0x0008
- .2byte 0x0000, 0x0008, 0xfffe, 0x0000
-
- .align 2
-gSpriteAnim_85B1E88:: @ 85B1E88
- .2byte 0x0000, 0x0008, 0xffff, 0x0000
-
- .align 2
-gSpriteAnimTable_85B1E90:: @ 85B1E90
- .4byte gSpriteAnim_85B1E30
-
- .align 2
-gSpriteAnimTable_85B1E94:: @ 85B1E94
- .4byte gSpriteAnim_85B1E38
- .4byte gSpriteAnim_85B1E40
-
- .align 2
-gSpriteAnimTable_85B1E9C:: @ 85B1E9C
- .4byte gSpriteAnim_85B1E88
-
- .align 2
-gSpriteAffineAnim_85B1EA0:: @ 85B1EA0
- .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0010, 0x0010, 0x0f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gSpriteAffineAnim_85B1EB8:: @ 85B1EB8
- .2byte 0x0014, 0x0014, 0x0000, 0x0000, 0x0014, 0x0014, 0x0f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085B1ED0:: @ 85B1ED0
- .4byte gSpriteAffineAnim_85B1EA0
-
- .align 2
-gSpriteAffineAnimTable_85B1ED4:: @ 85B1ED4
- .4byte gSpriteAffineAnim_85B1EB8
-
- .align 2
-gUnknown_085B1ED8:: @ 85B1ED8
- obj_tiles gUnknown_085B18AC, 0x0800, 0x1000
- null_obj_tiles
-
- .align 2
-gUnknown_085B1EE8:: @ 85B1EE8
- obj_tiles gUnknown_085B1BCC, 0x0800, 0x1001
- null_obj_tiles
-
- .align 2
-gUnknown_085B1EF8:: @ 85B1EF8
- obj_pal gBirchBallarrow_Pal, 0x1000
- obj_pal gBirchCircle_Pal, 0x1001
- null_obj_pal
-
- .align 2
-sSpriteTemplate_Hand:: @ 85B1F10
- spr_template 0x1000, 0x1000, gOamData_85B1E10, gSpriteAnimTable_85B1E90, NULL, gDummySpriteAffineAnimTable, sub_81346DC
-
- .align 2
-sSpriteTemplate_PokeBall:: @ 85B1F28
- spr_template 0x1000, 0x1000, gOamData_85B1E18, gSpriteAnimTable_85B1E94, NULL, gDummySpriteAffineAnimTable, sub_813473C
-
- .align 2
-gUnknown_085B1F40:: @ 85B1F40
- spr_template 0x1001, 0x1001, gOamData_85B1E20, gSpriteAnimTable_85B1E9C, NULL, gSpriteAffineAnimTable_85B1ED4, StarterPokemonSpriteCallback
diff --git a/ld_script.txt b/ld_script.txt
index 1a8361706..f64e2083a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -409,7 +409,6 @@ SECTIONS {
src/metatile_behavior.o(.rodata);
src/field_door.o(.rodata);
src/field_player_avatar.o(.rodata);
- data/field_player_avatar.o(.rodata);
src/event_object_movement.o(.rodata);
src/text_window.o(.rodata);
src/scrcmd.o(.rodata);
@@ -475,7 +474,7 @@ SECTIONS {
data/contest_painting.o(.rodata);
src/battle_ai_script_commands.o(.rodata);
src/trader.o(.rodata);
- data/starter_choose.o(.rodata);
+ src/starter_choose.o(.rodata);
src/wallclock.o(.rodata);
src/pokeblock.o(.rodata);
src/fldeff_flash.o(.rodata);
@@ -545,7 +544,6 @@ SECTIONS {
src/pokemon_summary_screen.o(.rodata);
src/unk_pokedex_area_screen_helper.o(.rodata);
src/battle_pyramid_bag.o(.rodata);
- data/battle_pyramid_bag.o(.rodata);
data/pokenav.o(.rodata);
src/match_call.o(.rodata);
data/pokenav.o(.rodata.after.match.call);
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index 6629e6a0a..bc2821d16 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -42,6 +42,7 @@ extern const u8 gUnknown_08D9ADD0[];
extern const u8 gUnknown_08D9AE04[];
extern const u8 gUnknown_08D9AF44[];
extern const u16 gUnknown_0860F074[];
+extern const u8 gBattleFrontierGfx_PyramidBag[];
// This file's functions.
static void Task_HandlePyramidBagInput(u8 taskId);
@@ -281,8 +282,67 @@ static const struct WindowTemplate gUnknown_0861F350[] =
},
};
-extern const struct CompressedSpriteSheet gUnknown_0861F3CC;
-extern const struct SpriteTemplate gUnknown_0861F3D4;
+static const struct OamData gOamData_861F378 =
+{
+ .y = 0,
+ .affineMode = 1,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd gSpriteAnim_861F380[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd * const gSpriteAnimTable_861F388[] =
+{
+ gSpriteAnim_861F380,
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_861F38C[] =
+{
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_861F39C[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 254, 2),
+ AFFINEANIMCMD_FRAME(0, 0, 2, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 254, 4),
+ AFFINEANIMCMD_FRAME(0, 0, 2, 2),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd * const gSpriteAffineAnimTable_861F3C4[] =
+{
+ gSpriteAffineAnim_861F38C,
+ gSpriteAffineAnim_861F39C,
+};
+
+static const struct CompressedSpriteSheet gUnknown_0861F3CC = {gBattleFrontierGfx_PyramidBag, 0x0800, 0x1024};
+
+static const struct SpriteTemplate gUnknown_0861F3D4 =
+{
+ .tileTag = 0x1024,
+ .paletteTag = 0x1024,
+ .oam = &gOamData_861F378,
+ .anims = gSpriteAnimTable_861F388,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_861F3C4,
+ .callback = SpriteCallbackDummy
+};
// code
void sub_81C4EEC(void)
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 6ab721643..38845beb8 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1,17 +1,19 @@
#include "global.h"
-#include "global.fieldmap.h"
-#include "sprite.h"
-#include "event_object_movement.h"
#include "bike.h"
-#include "metatile_behavior.h"
-#include "metatile_behaviors.h"
-#include "constants/flags.h"
#include "event_data.h"
+#include "event_object_movement.h"
+#include "field_player_avatar.h"
#include "fieldmap.h"
+#include "global.fieldmap.h"
+#include "metatile_behavior.h"
+#include "metatile_behaviors.h"
#include "overworld.h"
#include "rotating_gate.h"
+#include "sprite.h"
+#include "task.h"
+#include "constants/event_objects.h"
#include "constants/event_object_movement_constants.h"
-#include "field_player_avatar.h"
+#include "constants/flags.h"
extern void task_add_bump_boulder(u8, u8);
static bool8 ShouldJumpLedge(s16, s16, u8);
@@ -42,6 +44,42 @@ static void PlayerNotOnBikeTurningInPlace(u8, u16);
static void PlayerNotOnBikeMoving(u8, u16);
extern void sub_808C750(u8);
+extern void PlayerAvatarTransition_Normal(struct EventObject *a);
+extern void PlayerAvatarTransition_MachBike(struct EventObject *a);
+extern void PlayerAvatarTransition_AcroBike(struct EventObject *a);
+extern void PlayerAvatarTransition_Surfing(struct EventObject *a);
+extern void PlayerAvatarTransition_Underwater(struct EventObject *a);
+extern void PlayerAvatarTransition_ReturnToField(struct EventObject *a);
+extern void PlayerAvatarTransition_Dummy(struct EventObject *a);
+
+extern u8 sub_808C3A4(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
+extern u8 do_boulder_dust(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
+extern u8 sub_808C484(struct Task *task, struct EventObject *playerObject, struct EventObject *strengthObject);
+
+extern u8 sub_808C544(struct Task *task, struct EventObject *eventObject);
+
+extern u8 sub_808C61C(struct Task *task, struct EventObject *eventObject);
+extern u8 sub_808C644(struct Task *task, struct EventObject *eventObject);
+extern u8 sub_808C6BC(struct Task *task, struct EventObject *eventObject);
+extern u8 sub_808C6FC(struct Task *task, struct EventObject *eventObject);
+
+extern u8 fish0(struct Task *task);
+extern u8 fish1(struct Task *task);
+extern u8 fish2(struct Task *task);
+extern u8 fish3(struct Task *task);
+extern u8 fish4(struct Task *task);
+extern u8 fish5(struct Task *task);
+extern u8 fish6(struct Task *task);
+extern u8 fish7(struct Task *task);
+extern u8 fish8(struct Task *task);
+extern u8 fish9(struct Task *task);
+extern u8 fishA_wait_for_a_pressed(struct Task *task);
+extern u8 fishB(struct Task *task);
+extern u8 fishC(struct Task *task);
+extern u8 fishD(struct Task *task);
+extern u8 fishE(struct Task *task);
+extern u8 fishF(struct Task *task);
+
static bool8 (*const gUnknown_084973FC[])(u8) =
{
MetatileBehavior_IsTrickHouseSlipperyFloor,
@@ -105,6 +143,144 @@ static bool8 (*const gUnknown_0849749C[])(u8) =
static const u8 gUnknown_084974B0[] = {9, 10, 11, 12, 13, 0, 0, 0};
+void (*const gUnknown_084974B8[])(struct EventObject *) =
+{
+ PlayerAvatarTransition_Normal,
+ PlayerAvatarTransition_MachBike,
+ PlayerAvatarTransition_AcroBike,
+ PlayerAvatarTransition_Surfing,
+ PlayerAvatarTransition_Underwater,
+ PlayerAvatarTransition_ReturnToField,
+ PlayerAvatarTransition_Dummy,
+ PlayerAvatarTransition_Dummy,
+};
+
+bool8 (*const gUnknown_084974D8[])(u8) =
+{
+ MetatileBehavior_IsSouthArrowWarp,
+ MetatileBehavior_IsNorthArrowWarp,
+ MetatileBehavior_IsWestArrowWarp,
+ MetatileBehavior_IsEastArrowWarp,
+};
+
+const u8 gUnknown_084974E8[][2] =
+{
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL, EVENT_OBJ_GFX_RIVAL_MAY_NORMAL},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, EVENT_OBJ_GFX_RIVAL_MAY_MACH_BIKE},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, EVENT_OBJ_GFX_RIVAL_MAY_ACRO_BIKE},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_SURFING, EVENT_OBJ_GFX_RIVAL_MAY_SURFING},
+ {EVENT_OBJ_GFX_BRENDAN_UNDERWATER, EVENT_OBJ_GFX_MAY_UNDERWATER},
+ {EVENT_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, EVENT_OBJ_GFX_RIVAL_MAY_FIELD_MOVE},
+ {EVENT_OBJ_GFX_BRENDAN_FISHING, EVENT_OBJ_GFX_MAY_FISHING},
+ {EVENT_OBJ_GFX_BRENDAN_WATERING, EVENT_OBJ_GFX_MAY_WATERING}
+};
+
+const u8 gUnknown_084974F8[][2] =
+{
+ {EVENT_OBJ_GFX_BRENDAN_NORMAL, EVENT_OBJ_GFX_MAY_NORMAL},
+ {EVENT_OBJ_GFX_BRENDAN_MACH_BIKE, EVENT_OBJ_GFX_MAY_MACH_BIKE},
+ {EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE, EVENT_OBJ_GFX_MAY_ACRO_BIKE},
+ {EVENT_OBJ_GFX_BRENDAN_SURFING, EVENT_OBJ_GFX_MAY_SURFING},
+ {EVENT_OBJ_GFX_BRENDAN_UNDERWATER, EVENT_OBJ_GFX_MAY_UNDERWATER},
+ {EVENT_OBJ_GFX_BRENDAN_FIELD_MOVE, EVENT_OBJ_GFX_MAY_FIELD_MOVE},
+ {EVENT_OBJ_GFX_BRENDAN_FISHING, EVENT_OBJ_GFX_MAY_FISHING},
+ {EVENT_OBJ_GFX_BRENDAN_WATERING, EVENT_OBJ_GFX_MAY_WATERING},
+};
+
+const u8 gUnknown_08497508[] = {EVENT_OBJ_GFX_RED, EVENT_OBJ_GFX_LEAF};
+
+const u8 gUnknown_0849750A[] = {EVENT_OBJ_GFX_LINK_RS_BRENDAN, EVENT_OBJ_GFX_LINK_RS_MAY};
+
+const u8 gUnknown_0849750C[2][5][2] =
+{
+ //male
+ {
+ {EVENT_OBJ_GFX_BRENDAN_NORMAL, 1},
+ {EVENT_OBJ_GFX_BRENDAN_MACH_BIKE, 2},
+ {EVENT_OBJ_GFX_BRENDAN_ACRO_BIKE, 4},
+ {EVENT_OBJ_GFX_BRENDAN_SURFING, 8},
+ {EVENT_OBJ_GFX_BRENDAN_UNDERWATER, 16},
+ },
+ //female
+ {
+ {EVENT_OBJ_GFX_MAY_NORMAL, 1},
+ {EVENT_OBJ_GFX_MAY_MACH_BIKE, 2},
+ {EVENT_OBJ_GFX_MAY_ACRO_BIKE, 4},
+ {EVENT_OBJ_GFX_MAY_SURFING, 8},
+ {EVENT_OBJ_GFX_MAY_UNDERWATER, 16},
+ }
+};
+
+bool8 (*const gUnknown_08497520[])(u8) = //Duplicate of sArrowWarpMetatileBehaviorChecks
+{
+ MetatileBehavior_IsSouthArrowWarp,
+ MetatileBehavior_IsNorthArrowWarp,
+ MetatileBehavior_IsWestArrowWarp,
+ MetatileBehavior_IsEastArrowWarp,
+};
+
+u8 (*const gUnknown_08497530[])(struct Task *, struct EventObject *, struct EventObject *) =
+{
+ sub_808C3A4,
+ do_boulder_dust,
+ sub_808C484,
+};
+
+u8 (*const gUnknown_0849753C[])(struct Task *, struct EventObject *) =
+{
+ sub_808C544,
+};
+
+u8 (*const gUnknown_08497540[])(struct Task *, struct EventObject *) =
+{
+ sub_808C61C,
+ sub_808C644,
+ sub_808C6BC,
+ sub_808C6FC,
+};
+
+const u8 gUnknown_08497550[] = {3, 4, 2, 1};
+
+const u8 gUnknown_08497554[] = {16, 16, 17, 18, 19};
+
+u8 (*const gUnknown_0849755C[])(struct Task *) =
+{
+ fish0,
+ fish1,
+ fish2,
+ fish3,
+ fish4,
+ fish5,
+ fish6,
+ fish7,
+ fish8,
+ fish9,
+ fishA_wait_for_a_pressed,
+ fishB,
+ fishC,
+ fishD,
+ fishE,
+ fishF,
+};
+
+const u16 gUnknown_0849759C[] = {1, 1, 1};
+
+const u16 gUnknown_084975A2[] = {1, 3, 6};
+
+const u8 gUnknown_084975A8[] = _("·");
+
+const u16 gUnknown_084975AA[] = {36, 33, 30};
+
+const u16 gUnknown_084975B0[] =
+{
+ 0, 0,
+ 0x28, 10,
+ 0x46, 30,
+};
+
+const u8 gUnknown_084975BC[] = {0x01, 0x03, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00};
+
+// .text
void MovementType_Player(struct Sprite *sprite)
{
UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, EventObjectCB2_NoMovement2);
diff --git a/src/starter_choose.c b/src/starter_choose.c
index c1e7eea40..71784b016 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -1,26 +1,27 @@
#include "global.h"
-#include "starter_choose.h"
-#include "palette.h"
-#include "sprite.h"
-#include "pokemon.h"
-#include "task.h"
#include "bg.h"
+#include "data2.h"
+#include "decompress.h"
+#include "event_data.h"
#include "gpu_regs.h"
+#include "international_string_util.h"
#include "main.h"
-#include "window.h"
-#include "text.h"
-#include "text_window.h"
-#include "decompress.h"
#include "menu.h"
-#include "sound.h"
-#include "constants/songs.h"
-#include "event_data.h"
+#include "palette.h"
#include "pokedex.h"
-#include "data2.h"
-#include "international_string_util.h"
-#include "trig.h"
+#include "pokemon.h"
#include "scanline_effect.h"
+#include "sound.h"
+#include "sprite.h"
+#include "starter_choose.h"
+#include "task.h"
+#include "text.h"
+#include "text_window.h"
#include "trainer_pokemon_sprites.h"
+#include "trig.h"
+#include "window.h"
+#include "constants/songs.h"
+#include "constants/species.h"
#define STARTER_MON_COUNT 3
@@ -32,23 +33,6 @@
extern const u8 gText_BirchInTrouble[];
extern const u8 gText_ConfirmStarterChoice[];
-extern const u16 sStarterMon[STARTER_MON_COUNT];
-extern const struct BgTemplate gUnknown_085B1E00[3];
-extern const struct WindowTemplate gUnknown_085B1DCC[];
-extern const struct WindowTemplate gUnknown_085B1DDC;
-extern const struct CompressedSpriteSheet gUnknown_085B1ED8[];
-extern const struct CompressedSpriteSheet gUnknown_085B1EE8[];
-extern const struct SpritePalette gUnknown_085B1EF8[];
-extern const struct SpriteTemplate sSpriteTemplate_PokeBall;
-extern const struct SpriteTemplate sSpriteTemplate_Hand;
-extern const struct SpriteTemplate gUnknown_085B1F40;
-extern const union AffineAnimCmd *const gUnknown_085B1ED0;
-extern const u8 sPokeballCoords[STARTER_MON_COUNT][2];
-extern const struct WindowTemplate gUnknown_085B1DE4;
-extern const u8 gStarterChoose_LabelCoords[][2];
-extern const u8 gUnknown_085B1E0C[];
-extern const u8 gUnknown_085B1E28[][2];
-
// this file's functions
static void MainCallback2_StarterChoose(void);
static void sub_8134604(void);
@@ -62,10 +46,307 @@ static void Task_MoveStarterChooseCursor(u8 taskId);
static void sub_8134668(u8 taskId);
static void CreateStarterPokemonLabel(u8 selection);
static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y);
+void sub_81346DC(struct Sprite *sprite);
+void sub_813473C(struct Sprite *sprite);
void StarterPokemonSpriteCallback(struct Sprite *sprite);
static IWRAM_DATA u16 sStarterChooseWindowId;
+// .rodata
+const u16 gBirchBagGrassPal[][16] =
+{
+ INCBIN_U16("graphics/misc/birch_bag.gbapal"),
+ INCBIN_U16("graphics/misc/birch_grass.gbapal"),
+};
+
+const u16 gBirchBallarrow_Pal[] = INCBIN_U16("graphics/misc/birch_ballarrow.gbapal");
+
+const u16 gBirchCircle_Pal[] = INCBIN_U16("graphics/misc/birch_circle.gbapal");
+
+const u8 gBirchBagTilemap[] = INCBIN_U8("graphics/misc/birch_bag_map.bin.lz");
+
+const u8 gBirchGrassTilemap[] = INCBIN_U8("graphics/misc/birch_grass_map.bin.lz");
+
+const u8 gBirchHelpGfx[] = INCBIN_U8("graphics/misc/birch_help.4bpp.lz");
+
+const u8 gUnknown_085B18AC[] = INCBIN_U8("graphics/misc/birch_ballarrow.4bpp.lz");
+
+const u8 gUnknown_085B1BCC[] = INCBIN_U8("graphics/misc/birch_circle.4bpp.lz");
+
+static const struct WindowTemplate gUnknown_085B1DCC[] =
+{
+ {
+ .priority = 0,
+ .tilemapLeft = 3,
+ .tilemapTop = 15,
+ .width = 24,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x0200
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const struct WindowTemplate gUnknown_085B1DDC =
+{
+ .priority = 0,
+ .tilemapLeft = 24,
+ .tilemapTop = 9,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x0260
+};
+
+static const struct WindowTemplate gUnknown_085B1DE4 =
+{
+ .priority = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 13,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x0274
+};
+
+static const u8 sPokeballCoords[STARTER_MON_COUNT][2] =
+{
+ {0x3c, 0x40},
+ {0x78, 0x58},
+ {0xb4, 0x40},
+};
+
+static const u8 gStarterChoose_LabelCoords[][2] =
+{
+ {0x00, 0x09},
+ {0x10, 0x0a},
+ {0x08, 0x04},
+};
+
+static const u16 sStarterMon[STARTER_MON_COUNT] =
+{
+ SPECIES_TREECKO,
+ SPECIES_TORCHIC,
+ SPECIES_MUDKIP,
+};
+
+static const struct BgTemplate gUnknown_085B1E00[3] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 7,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 6,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+};
+
+static const u8 gUnknown_085B1E0C[] = {0x00, 0x01, 0x03};
+
+static const struct OamData gOamData_85B1E10 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gOamData_85B1E18 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gOamData_85B1E20 =
+{
+ .y = 160,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const u8 gUnknown_085B1E28[][2] =
+{
+ {0x3c, 0x20},
+ {0x78, 0x38},
+ {0xb4, 0x20},
+};
+
+static const union AnimCmd gSpriteAnim_85B1E30[] =
+{
+ ANIMCMD_FRAME(48, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_85B1E38[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_85B1E40[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd gSpriteAnim_85B1E88[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd * const gSpriteAnimTable_85B1E90[] =
+{
+ gSpriteAnim_85B1E30,
+};
+
+static const union AnimCmd * const gSpriteAnimTable_85B1E94[] =
+{
+ gSpriteAnim_85B1E38,
+ gSpriteAnim_85B1E40,
+};
+
+static const union AnimCmd * const gSpriteAnimTable_85B1E9C[] =
+{
+ gSpriteAnim_85B1E88,
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_85B1EA0[] =
+{
+ AFFINEANIMCMD_FRAME(16, 16, 0, 0),
+ AFFINEANIMCMD_FRAME(16, 16, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_85B1EB8[] =
+{
+ AFFINEANIMCMD_FRAME(20, 20, 0, 0),
+ AFFINEANIMCMD_FRAME(20, 20, 0, 15),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd * const gUnknown_085B1ED0 = {gSpriteAffineAnim_85B1EA0};
+static const union AffineAnimCmd * const gSpriteAffineAnimTable_85B1ED4[] = {gSpriteAffineAnim_85B1EB8};
+
+static const struct CompressedSpriteSheet gUnknown_085B1ED8[] =
+{
+ gUnknown_085B18AC, 0x0800, 0x1000,
+ NULL,
+};
+
+static const struct CompressedSpriteSheet gUnknown_085B1EE8[] =
+{
+ gUnknown_085B1BCC, 0x0800, 0x1001,
+ NULL,
+};
+
+static const struct SpritePalette gUnknown_085B1EF8[] =
+{
+ gBirchBallarrow_Pal, 0x1000,
+ gBirchCircle_Pal, 0x1001,
+ NULL,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_Hand =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_85B1E10,
+ .anims = gSpriteAnimTable_85B1E90,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81346DC
+};
+
+static const struct SpriteTemplate sSpriteTemplate_PokeBall =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_85B1E18,
+ .anims = gSpriteAnimTable_85B1E94,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813473C
+};
+
+static const struct SpriteTemplate gUnknown_085B1F40 =
+{
+ .tileTag = 0x1001,
+ .paletteTag = 0x1001,
+ .oam = &gOamData_85B1E20,
+ .anims = gSpriteAnimTable_85B1E9C,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_85B1ED4,
+ .callback = StarterPokemonSpriteCallback
+};
+
+// .text
u16 GetStarterPokemon(u16 chosenStarterId)
{
if (chosenStarterId > STARTER_MON_COUNT)