summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_anim_8074480.s20
-rw-r--r--asm/battle_controller_link_opponent.s8
-rw-r--r--asm/battle_controller_opponent.s16
-rw-r--r--asm/battle_controller_pokedude.s8
-rw-r--r--asm/battle_gfx_sfx_util.s40
-rw-r--r--asm/battle_records.s2
-rw-r--r--asm/battle_script_commands.s2
-rw-r--r--asm/battle_transition.s2
-rw-r--r--asm/decompress.s48
-rw-r--r--asm/egg_hatch.s4
-rw-r--r--asm/evolution_scene.s18
-rw-r--r--asm/field_effect.s22
-rw-r--r--asm/hall_of_fame.s16
-rw-r--r--asm/overworld.s4
-rw-r--r--asm/pokedex_screen.s12
-rw-r--r--asm/pokemon_special_anim.s4
-rw-r--r--asm/pokemon_storage_system.s4
-rw-r--r--asm/pokemon_summary_screen.s8
-rw-r--r--asm/trade.s16
-rw-r--r--asm/trainer_card.s2
-rw-r--r--asm/trainer_pokemon_sprites.s1102
-rw-r--r--asm/unk_8147AA8.s4
-rw-r--r--data/data.s10
-rw-r--r--data/trainer_pokemon_sprites.s25
-rw-r--r--include/gba/types.h52
-rw-r--r--include/trainer_pokemon_sprites.h (renamed from include/battle_dome_cards.h)6
-rw-r--r--ld_script.txt5
-rw-r--r--src/bag.c78
-rw-r--r--src/fame_checker.c8
-rw-r--r--src/seagallop.c4
-rw-r--r--src/trainer_pokemon_sprites.c324
-rw-r--r--sym_ewram.txt7
32 files changed, 594 insertions, 1287 deletions
diff --git a/asm/battle_anim_8074480.s b/asm/battle_anim_8074480.s
index b900ba15a..f90748d37 100644
--- a/asm/battle_anim_8074480.s
+++ b/asm/battle_anim_8074480.s
@@ -5050,7 +5050,7 @@ _0807694E:
beq _080769C4
_0807699A:
lsls r0, r6, 3
- ldr r1, _080769C0 @ =gUnknown_82350AC
+ ldr r1, _080769C0 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080769B8 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -5065,10 +5065,10 @@ _080769B0: .4byte gUnknown_83AE084
_080769B4: .4byte gUnknown_83AE054
_080769B8: .4byte gMonSpritesGfxPtr
_080769BC: .4byte gUnknown_2024018
-_080769C0: .4byte gUnknown_82350AC
+_080769C0: .4byte gMonFrontPicTable
_080769C4:
lsls r0, r6, 3
- ldr r1, _080769E4 @ =gUnknown_82350AC
+ ldr r1, _080769E4 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080769E8 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -5080,10 +5080,10 @@ _080769C4:
str r2, [sp]
adds r2, r6, 0
mov r3, r8
- bl sub_800ECF0
+ bl LoadSpecialPokePic
b _08076A7C
.align 2, 0
-_080769E4: .4byte gUnknown_82350AC
+_080769E4: .4byte gMonFrontPicTable
_080769E8: .4byte gMonSpritesGfxPtr
_080769EC:
adds r0, r6, 0
@@ -5120,7 +5120,7 @@ _080769EC:
beq _08076A60
_08076A32:
lsls r0, r6, 3
- ldr r1, _08076A58 @ =gUnknown_823654C
+ ldr r1, _08076A58 @ =gMonBackPicTable
adds r0, r1
ldr r1, _08076A5C @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -5137,11 +5137,11 @@ _08076A46:
b _08076A7C
.align 2, 0
_08076A54: .4byte gUnknown_2024018
-_08076A58: .4byte gUnknown_823654C
+_08076A58: .4byte gMonBackPicTable
_08076A5C: .4byte gMonSpritesGfxPtr
_08076A60:
lsls r0, r6, 3
- ldr r1, _08076AC8 @ =gUnknown_823654C
+ ldr r1, _08076AC8 @ =gMonBackPicTable
adds r0, r1
ldr r1, _08076ACC @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -5152,7 +5152,7 @@ _08076A60:
str r2, [sp]
adds r2, r6, 0
mov r3, r8
- bl sub_800ECF0
+ bl LoadSpecialPokePic
_08076A7C:
ldr r5, _08076ACC @ =gMonSpritesGfxPtr
ldr r0, [r5]
@@ -5190,7 +5190,7 @@ _08076A7C:
ldr r3, _08076AD8 @ =gUnknown_82349CC
b _08076AEE
.align 2, 0
-_08076AC8: .4byte gUnknown_823654C
+_08076AC8: .4byte gMonBackPicTable
_08076ACC: .4byte gMonSpritesGfxPtr
_08076AD0: .4byte 0x06010000
_08076AD4: .4byte gUnknown_83AE054
diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s
index e2c52a592..a778933e8 100644
--- a/asm/battle_controller_link_opponent.s
+++ b/asm/battle_controller_link_opponent.s
@@ -4302,7 +4302,7 @@ _0803C992:
adds r0, r4
movs r1, 0x2
strh r1, [r0, 0x2E]
- ldr r0, _0803CAE4 @ =gUnknown_8239A1C
+ ldr r0, _0803CAE4 @ =gTrainerFrontPicPaletteTable
mov r1, r9
lsls r6, r1, 3
adds r0, r6, r0
@@ -4334,7 +4334,7 @@ _0803C992:
lsls r0, 22
lsrs r0, 22
strh r0, [r1, 0x38]
- ldr r0, _0803CAE8 @ =gUnknown_823957C
+ ldr r0, _0803CAE8 @ =gTrainerFrontPicTable
adds r6, r0
ldrh r0, [r6, 0x6]
bl GetSpriteTileStartByTag
@@ -4395,8 +4395,8 @@ _0803CAD4: .4byte gUnknown_823932C
_0803CAD8: .4byte gUnknown_2023D44
_0803CADC: .4byte gSprites
_0803CAE0: .4byte 0x0000ff10
-_0803CAE4: .4byte gUnknown_8239A1C
-_0803CAE8: .4byte gUnknown_823957C
+_0803CAE4: .4byte gTrainerFrontPicPaletteTable
+_0803CAE8: .4byte gTrainerFrontPicTable
_0803CAEC: .4byte 0x000003ff
_0803CAF0: .4byte 0xfffffc00
_0803CAF4: .4byte sub_8033EEC
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index 12185d562..f1585b5e7 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -4251,7 +4251,7 @@ _08037D3A:
adds r0, r4
movs r1, 0x2
strh r1, [r0, 0x2E]
- ldr r0, _08037E88 @ =gUnknown_8239A1C
+ ldr r0, _08037E88 @ =gTrainerFrontPicPaletteTable
mov r1, r9
lsls r6, r1, 3
adds r0, r6, r0
@@ -4283,7 +4283,7 @@ _08037D3A:
lsls r0, 22
lsrs r0, 22
strh r0, [r1, 0x38]
- ldr r0, _08037E8C @ =gUnknown_823957C
+ ldr r0, _08037E8C @ =gTrainerFrontPicTable
adds r6, r0
ldrh r0, [r6, 0x6]
bl GetSpriteTileStartByTag
@@ -4344,8 +4344,8 @@ _08037E78: .4byte gUnknown_823932C
_08037E7C: .4byte gUnknown_2023D44
_08037E80: .4byte gSprites
_08037E84: .4byte 0x0000ff10
-_08037E88: .4byte gUnknown_8239A1C
-_08037E8C: .4byte gUnknown_823957C
+_08037E88: .4byte gTrainerFrontPicPaletteTable
+_08037E8C: .4byte gTrainerFrontPicTable
_08037E90: .4byte 0x000003ff
_08037E94: .4byte 0xfffffc00
_08037E98: .4byte sub_8033EEC
@@ -4473,7 +4473,7 @@ _08037F0E:
adds r0, r4
ldr r1, _08038058 @ =0x0000fffe
strh r1, [r0, 0x2E]
- ldr r0, _0803805C @ =gUnknown_8239A1C
+ ldr r0, _0803805C @ =gTrainerFrontPicPaletteTable
mov r3, r9
lsls r6, r3, 3
adds r0, r6, r0
@@ -4505,7 +4505,7 @@ _08037F0E:
lsls r0, 22
lsrs r0, 22
strh r0, [r1, 0x38]
- ldr r0, _08038060 @ =gUnknown_823957C
+ ldr r0, _08038060 @ =gTrainerFrontPicTable
adds r6, r0
ldrh r0, [r6, 0x6]
bl GetSpriteTileStartByTag
@@ -4564,8 +4564,8 @@ _0803804C: .4byte gUnknown_823932C
_08038050: .4byte gUnknown_2023D44
_08038054: .4byte gSprites
_08038058: .4byte 0x0000fffe
-_0803805C: .4byte gUnknown_8239A1C
-_08038060: .4byte gUnknown_823957C
+_0803805C: .4byte gTrainerFrontPicPaletteTable
+_08038060: .4byte gTrainerFrontPicTable
_08038064: .4byte 0x000003ff
_08038068: .4byte 0xfffffc00
_0803806C: .4byte sub_8033EEC
diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s
index 957a6f658..37e3d688a 100644
--- a/asm/battle_controller_pokedude.s
+++ b/asm/battle_controller_pokedude.s
@@ -4304,7 +4304,7 @@ _081583F0:
adds r0, r4
movs r1, 0x2
strh r1, [r0, 0x2E]
- ldr r0, _08158524 @ =gUnknown_8239A1C
+ ldr r0, _08158524 @ =gTrainerFrontPicPaletteTable
mov r1, r8
lsls r6, r1, 3
adds r0, r6
@@ -4334,7 +4334,7 @@ _081583F0:
lsls r0, 22
lsrs r0, 22
strh r0, [r1, 0x38]
- ldr r0, _08158528 @ =gUnknown_823957C
+ ldr r0, _08158528 @ =gTrainerFrontPicTable
adds r0, r6
ldrh r0, [r0, 0x6]
bl GetSpriteTileStartByTag
@@ -4390,8 +4390,8 @@ _08158514: .4byte gUnknown_823932C
_08158518: .4byte gUnknown_2023D44
_0815851C: .4byte gSprites
_08158520: .4byte 0x0000ff10
-_08158524: .4byte gUnknown_8239A1C
-_08158528: .4byte gUnknown_823957C
+_08158524: .4byte gTrainerFrontPicPaletteTable
+_08158528: .4byte gTrainerFrontPicTable
_0815852C: .4byte 0x000003ff
_08158530: .4byte 0xfffffc00
_08158534: .4byte sub_8033EEC
diff --git a/asm/battle_gfx_sfx_util.s b/asm/battle_gfx_sfx_util.s
index 9ae7accdc..d5ae72291 100644
--- a/asm/battle_gfx_sfx_util.s
+++ b/asm/battle_gfx_sfx_util.s
@@ -756,7 +756,7 @@ _0803436C:
bl GetBattlerPosition
lsls r0, 24
lsls r2, r5, 3
- ldr r1, _080343C4 @ =gUnknown_82350AC
+ ldr r1, _080343C4 @ =gMonFrontPicTable
adds r2, r1
ldr r1, _080343C8 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -788,7 +788,7 @@ _0803436C:
b _080343DA
.align 2, 0
_080343C0: .4byte gUnknown_2024008
-_080343C4: .4byte gUnknown_82350AC
+_080343C4: .4byte gMonFrontPicTable
_080343C8: .4byte gMonSpritesGfxPtr
_080343CC: .4byte gUnknown_2024018
_080343D0:
@@ -946,7 +946,7 @@ _080344E4:
beq _08034548
_0803451C:
lsls r0, r5, 3
- ldr r1, _08034540 @ =gUnknown_823654C
+ ldr r1, _08034540 @ =gMonBackPicTable
adds r0, r1
ldr r1, _08034544 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -961,11 +961,11 @@ _0803451C:
.align 2, 0
_08034538: .4byte gUnknown_2024008
_0803453C: .4byte gUnknown_2024018
-_08034540: .4byte gUnknown_823654C
+_08034540: .4byte gMonBackPicTable
_08034544: .4byte gMonSpritesGfxPtr
_08034548:
lsls r0, r5, 3
- ldr r1, _08034584 @ =gUnknown_823654C
+ ldr r1, _08034584 @ =gMonBackPicTable
adds r0, r1
ldr r1, _08034588 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -994,7 +994,7 @@ _08034562:
bl GetMonFrontSpritePal
b _0803459A
.align 2, 0
-_08034584: .4byte gUnknown_823654C
+_08034584: .4byte gMonBackPicTable
_08034588: .4byte gMonSpritesGfxPtr
_0803458C: .4byte gUnknown_2024018
_08034590:
@@ -1149,7 +1149,7 @@ sub_80346C4: @ 80346C4
adds r4, r0, 0
lsls r4, 24
lsls r5, 3
- ldr r6, _0803473C @ =gUnknown_823957C
+ ldr r6, _0803473C @ =gTrainerFrontPicTable
adds r6, r5, r6
ldr r0, _08034740 @ =gMonSpritesGfxPtr
mov r8, r0
@@ -1181,7 +1181,7 @@ sub_80346C4: @ 80346C4
str r0, [sp, 0x4]
mov r0, sp
bl LoadSpriteSheet
- ldr r0, _0803474C @ =gUnknown_8239A1C
+ ldr r0, _0803474C @ =gTrainerFrontPicPaletteTable
adds r5, r0
adds r0, r5, 0
bl sub_800F078
@@ -1192,11 +1192,11 @@ sub_80346C4: @ 80346C4
pop {r0}
bx r0
.align 2, 0
-_0803473C: .4byte gUnknown_823957C
+_0803473C: .4byte gTrainerFrontPicTable
_08034740: .4byte gMonSpritesGfxPtr
_08034744: .4byte 0xffff0000
_08034748: .4byte 0x0000ffff
-_0803474C: .4byte gUnknown_8239A1C
+_0803474C: .4byte gTrainerFrontPicPaletteTable
thumb_func_end sub_80346C4
thumb_func_start sub_8034750
@@ -1231,12 +1231,12 @@ sub_803477C: @ 803477C
push {r4,lr}
adds r4, r0, 0
lsls r4, 16
- ldr r0, _080347A0 @ =gUnknown_8239A1C
+ ldr r0, _080347A0 @ =gTrainerFrontPicPaletteTable
lsrs r4, 13
adds r0, r4, r0
ldrh r0, [r0, 0x4]
bl FreeSpritePaletteByTag
- ldr r0, _080347A4 @ =gUnknown_823957C
+ ldr r0, _080347A4 @ =gTrainerFrontPicTable
adds r4, r0
ldrh r0, [r4, 0x6]
bl FreeSpriteTilesByTag
@@ -1244,8 +1244,8 @@ sub_803477C: @ 803477C
pop {r0}
bx r0
.align 2, 0
-_080347A0: .4byte gUnknown_8239A1C
-_080347A4: .4byte gUnknown_823957C
+_080347A0: .4byte gTrainerFrontPicPaletteTable
+_080347A4: .4byte gTrainerFrontPicTable
thumb_func_end sub_803477C
thumb_func_start sub_80347A8
@@ -1852,7 +1852,7 @@ _08034C16:
adds r7, r0, 0
mov r1, r8
lsls r0, r1, 3
- ldr r1, _08034D60 @ =gUnknown_82350AC
+ ldr r1, _08034D60 @ =gMonFrontPicTable
adds r0, r1
ldr r4, _08034D64 @ =gMonSpritesGfxPtr
ldr r1, [r4]
@@ -1961,7 +1961,7 @@ _08034C16:
.align 2, 0
_08034D58: .4byte gBattlerPartyIndexes
_08034D5C: .4byte gEnemyParty
-_08034D60: .4byte gUnknown_82350AC
+_08034D60: .4byte gMonFrontPicTable
_08034D64: .4byte gMonSpritesGfxPtr
_08034D68: .4byte gSprites
_08034D6C: .4byte gUnknown_2023D44
@@ -2122,7 +2122,7 @@ _08034E90:
adds r7, r0, 0
mov r2, r8
lsls r0, r2, 3
- ldr r1, _08034F04 @ =gUnknown_823654C
+ ldr r1, _08034F04 @ =gMonBackPicTable
adds r0, r1
ldr r1, _08034F08 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -2142,7 +2142,7 @@ _08034E90:
.align 2, 0
_08034EFC: .4byte gBattlerPartyIndexes
_08034F00: .4byte gPlayerParty
-_08034F04: .4byte gUnknown_823654C
+_08034F04: .4byte gMonBackPicTable
_08034F08: .4byte gMonSpritesGfxPtr
_08034F0C: .4byte gUnknown_2024008
_08034F10:
@@ -2166,7 +2166,7 @@ _08034F10:
adds r7, r0, 0
mov r2, r8
lsls r0, r2, 3
- ldr r1, _0803507C @ =gUnknown_82350AC
+ ldr r1, _0803507C @ =gMonFrontPicTable
adds r0, r1
ldr r1, _08035080 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -2315,7 +2315,7 @@ _08035062:
.align 2, 0
_08035074: .4byte gBattlerPartyIndexes
_08035078: .4byte gEnemyParty
-_0803507C: .4byte gUnknown_82350AC
+_0803507C: .4byte gMonFrontPicTable
_08035080: .4byte gMonSpritesGfxPtr
_08035084: .4byte gUnknown_2024008
_08035088: .4byte gUnknown_2023D44
diff --git a/asm/battle_records.s b/asm/battle_records.s
index c407a988a..2684fbd43 100644
--- a/asm/battle_records.s
+++ b/asm/battle_records.s
@@ -474,7 +474,7 @@ sub_80CD608: @ 80CD608
bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
- bl dp13_810BB8C
+ bl ResetAllPicSprites
bl ResetPaletteFade
bl FreeAllSpritePalettes
pop {r0}
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
index b01533468..9c69714cb 100644
--- a/asm/battle_script_commands.s
+++ b/asm/battle_script_commands.s
@@ -32536,7 +32536,7 @@ _0802DAE0:
str r0, [sp, 0xC]
adds r0, r5, 0
movs r3, 0x1
- bl sub_810C1CC
+ bl CreateMonPicSprite_HandleDeoxys
str r4, [sp, 0x14]
add r0, sp, 0x14
ldr r1, _0802DB48 @ =gPlttBufferFaded
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index 195d67c8c..cf761a220 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -4953,7 +4953,7 @@ sub_80D2EA4: @ 80D2EA4
ldr r0, [r0]
ldrb r0, [r0, 0x8]
movs r1, 0x1
- bl sub_810C374
+ bl PlayerGenderToFrontTrainerPicId_Debug
lsls r0, 24
lsrs r0, 24
movs r1, 0x88
diff --git a/asm/decompress.s b/asm/decompress.s
index 8c213a8d1..175304245 100644
--- a/asm/decompress.s
+++ b/asm/decompress.s
@@ -132,12 +132,12 @@ DecompressPicFromTable: @ 800EC8C
lsls r0, 1
cmp r5, r0
ble _0800ECAC
- ldr r0, _0800ECA8 @ =gUnknown_82350AC
+ ldr r0, _0800ECA8 @ =gMonFrontPicTable
ldr r0, [r0]
bl LZ77UnCompWram
b _0800ECB4
.align 2, 0
-_0800ECA8: .4byte gUnknown_82350AC
+_0800ECA8: .4byte gMonFrontPicTable
_0800ECAC:
ldr r0, [r3]
adds r1, r4, 0
@@ -158,7 +158,7 @@ sub_800ECC4: @ 800ECC4
adds r4, r0, 0
adds r5, r1, 0
lsls r0, r2, 3
- ldr r1, _0800ECEC @ =gUnknown_82350AC
+ ldr r1, _0800ECEC @ =gMonFrontPicTable
adds r0, r1
movs r1, 0
cmp r4, r0
@@ -168,17 +168,17 @@ _0800ECDA:
str r1, [sp]
adds r0, r4, 0
adds r1, r5, 0
- bl sub_800ECF0
+ bl LoadSpecialPokePic
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_0800ECEC: .4byte gUnknown_82350AC
+_0800ECEC: .4byte gMonFrontPicTable
thumb_func_end sub_800ECC4
- thumb_func_start sub_800ECF0
-sub_800ECF0: @ 800ECF0
+ thumb_func_start LoadSpecialPokePic
+LoadSpecialPokePic: @ 800ECF0
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -227,34 +227,34 @@ _0800ED48:
mov r0, r8
cmp r0, 0
bne _0800ED5C
- ldr r0, _0800ED58 @ =gUnknown_823654C
+ ldr r0, _0800ED58 @ =gMonBackPicTable
lsls r1, 3
adds r1, r0
ldr r0, [r1]
b _0800ED78
.align 2, 0
-_0800ED58: .4byte gUnknown_823654C
+_0800ED58: .4byte gMonBackPicTable
_0800ED5C:
- ldr r0, _0800ED68 @ =gUnknown_82350AC
+ ldr r0, _0800ED68 @ =gMonFrontPicTable
lsls r1, 3
adds r1, r0
ldr r0, [r1]
b _0800ED78
.align 2, 0
-_0800ED68: .4byte gUnknown_82350AC
+_0800ED68: .4byte gMonFrontPicTable
_0800ED6C:
movs r0, 0xCE
lsls r0, 1
cmp r7, r0
ble _0800ED84
- ldr r0, _0800ED80 @ =gUnknown_82350AC
+ ldr r0, _0800ED80 @ =gMonFrontPicTable
ldr r0, [r0]
_0800ED78:
adds r1, r4, 0
bl LZ77UnCompWram
b _0800ED8C
.align 2, 0
-_0800ED80: .4byte gUnknown_82350AC
+_0800ED80: .4byte gMonFrontPicTable
_0800ED84:
ldr r0, [r6]
adds r1, r4, 0
@@ -274,7 +274,7 @@ _0800ED8C:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_800ECF0
+ thumb_func_end LoadSpecialPokePic
thumb_func_start sub_800EDAC
sub_800EDAC: @ 800EDAC
@@ -748,12 +748,12 @@ DecompressPicFromTable_DontHandleDeoxys: @ 800F0E0
lsls r0, 1
cmp r2, r0
ble _0800F0FC
- ldr r0, _0800F0F8 @ =gUnknown_82350AC
+ ldr r0, _0800F0F8 @ =gMonFrontPicTable
ldr r0, [r0]
bl LZ77UnCompWram
b _0800F102
.align 2, 0
-_0800F0F8: .4byte gUnknown_82350AC
+_0800F0F8: .4byte gMonFrontPicTable
_0800F0FC:
ldr r0, [r3]
bl LZ77UnCompWram
@@ -769,7 +769,7 @@ HandleLoadSpecialPokePic_DontHandleDeoxys: @ 800F108
adds r4, r0, 0
adds r5, r1, 0
lsls r0, r2, 3
- ldr r1, _0800F130 @ =gUnknown_82350AC
+ ldr r1, _0800F130 @ =gMonFrontPicTable
adds r0, r1
movs r1, 0
cmp r4, r0
@@ -785,7 +785,7 @@ _0800F11E:
pop {r0}
bx r0
.align 2, 0
-_0800F130: .4byte gUnknown_82350AC
+_0800F130: .4byte gMonFrontPicTable
thumb_func_end HandleLoadSpecialPokePic_DontHandleDeoxys
thumb_func_start LoadSpecialPokePic_DontHandleDeoxys
@@ -838,34 +838,34 @@ _0800F18C:
mov r0, r8
cmp r0, 0
bne _0800F1A0
- ldr r0, _0800F19C @ =gUnknown_823654C
+ ldr r0, _0800F19C @ =gMonBackPicTable
lsls r1, 3
adds r1, r0
ldr r0, [r1]
b _0800F1BC
.align 2, 0
-_0800F19C: .4byte gUnknown_823654C
+_0800F19C: .4byte gMonBackPicTable
_0800F1A0:
- ldr r0, _0800F1AC @ =gUnknown_82350AC
+ ldr r0, _0800F1AC @ =gMonFrontPicTable
lsls r1, 3
adds r1, r0
ldr r0, [r1]
b _0800F1BC
.align 2, 0
-_0800F1AC: .4byte gUnknown_82350AC
+_0800F1AC: .4byte gMonFrontPicTable
_0800F1B0:
movs r0, 0xCE
lsls r0, 1
cmp r7, r0
ble _0800F1C8
- ldr r0, _0800F1C4 @ =gUnknown_82350AC
+ ldr r0, _0800F1C4 @ =gMonFrontPicTable
ldr r0, [r0]
_0800F1BC:
adds r1, r5, 0
bl LZ77UnCompWram
b _0800F1D0
.align 2, 0
-_0800F1C4: .4byte gUnknown_82350AC
+_0800F1C4: .4byte gMonFrontPicTable
_0800F1C8:
ldr r0, [r6]
adds r1, r5, 0
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s
index aa5b2d8f6..914012da5 100644
--- a/asm/egg_hatch.s
+++ b/asm/egg_hatch.s
@@ -398,7 +398,7 @@ _08046F1C:
bl GetMonData
adds r3, r0, 0
lsls r0, r4, 3
- ldr r1, _08046F64 @ =gUnknown_82350AC
+ ldr r1, _08046F64 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _08046F68 @ =gMonSpritesGfxPtr
ldr r2, [r1]
@@ -418,7 +418,7 @@ _08046F1C:
strh r4, [r0]
b _08046FA6
.align 2, 0
-_08046F64: .4byte gUnknown_82350AC
+_08046F64: .4byte gMonFrontPicTable
_08046F68: .4byte gMonSpritesGfxPtr
_08046F6C:
adds r0, r5, 0
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index f66a066ae..db6f44919 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -239,7 +239,7 @@ EvolutionScene: @ 80CDDF4
bl GetMonData
mov r9, r0
lsls r0, r5, 3
- ldr r1, _080CE0B8 @ =gUnknown_82350AC
+ ldr r1, _080CE0B8 @ =gMonFrontPicTable
adds r0, r1
ldr r2, _080CE0BC @ =gMonSpritesGfxPtr
ldr r1, [r2]
@@ -295,7 +295,7 @@ EvolutionScene: @ 80CDDF4
strb r0, [r1]
mov r1, r10
lsls r0, r1, 3
- ldr r2, _080CE0B8 @ =gUnknown_82350AC
+ ldr r2, _080CE0B8 @ =gMonFrontPicTable
adds r0, r2
ldr r2, _080CE0BC @ =gMonSpritesGfxPtr
ldr r1, [r2]
@@ -415,7 +415,7 @@ _080CE0A8: .4byte gUnknown_2039A20
_080CE0AC: .4byte gStringVar1
_080CE0B0: .4byte gStringVar2
_080CE0B4: .4byte gSpeciesNames
-_080CE0B8: .4byte gUnknown_82350AC
+_080CE0B8: .4byte gMonFrontPicTable
_080CE0BC: .4byte gMonSpritesGfxPtr
_080CE0C0: .4byte gMultiuseSpriteTemplate
_080CE0C4: .4byte gDummySpriteAffineAnimTable
@@ -524,7 +524,7 @@ CB2_EvolutionSceneLoadGraphics: @ 80CE0E8
movs r0, 0x4
strb r0, [r1]
lsls r0, r5, 3
- ldr r1, _080CE2B8 @ =gUnknown_82350AC
+ ldr r1, _080CE2B8 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080CE2BC @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -618,7 +618,7 @@ _080CE2A8: .4byte gBattle_BG3_X
_080CE2AC: .4byte gBattle_BG3_Y
_080CE2B0: .4byte gUnknown_2022B50
_080CE2B4: .4byte gReservedSpritePaletteCount
-_080CE2B8: .4byte gUnknown_82350AC
+_080CE2B8: .4byte gMonFrontPicTable
_080CE2BC: .4byte gMonSpritesGfxPtr
_080CE2C0: .4byte gMultiuseSpriteTemplate
_080CE2C4: .4byte gDummySpriteAffineAnimTable
@@ -770,7 +770,7 @@ _080CE414:
bl GetMonData
adds r4, r0, 0
lsls r0, r6, 3
- ldr r1, _080CE454 @ =gUnknown_82350AC
+ ldr r1, _080CE454 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080CE458 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -788,7 +788,7 @@ _080CE414:
bl LoadCompressedPalette
b _080CE4EC
.align 2, 0
-_080CE454: .4byte gUnknown_82350AC
+_080CE454: .4byte gMonFrontPicTable
_080CE458: .4byte gMonSpritesGfxPtr
_080CE45C:
adds r0, r6, 0
@@ -951,7 +951,7 @@ TradeEvolutionScene: @ 80CE540
movs r4, 0
strb r6, [r0]
lsls r0, r5, 3
- ldr r1, _080CE6C4 @ =gUnknown_82350AC
+ ldr r1, _080CE6C4 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080CE6C8 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -1069,7 +1069,7 @@ _080CE6B4: .4byte gStringVar2
_080CE6B8: .4byte gSpeciesNames
_080CE6BC: .4byte gAffineAnimsDisabled
_080CE6C0: .4byte gUnknown_2039A20
-_080CE6C4: .4byte gUnknown_82350AC
+_080CE6C4: .4byte gMonFrontPicTable
_080CE6C8: .4byte gMonSpritesGfxPtr
_080CE6CC: .4byte gMultiuseSpriteTemplate
_080CE6D0: .4byte gDummySpriteAffineAnimTable
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 785e36266..6727b116c 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -603,13 +603,13 @@ CreateTrainerSprite: @ 8083858
lsrs r0, 24
mov r9, r0
lsrs r4, 21
- ldr r3, _080838E0 @ =gUnknown_8239A1C
+ ldr r3, _080838E0 @ =gTrainerFrontPicPaletteTable
mov r8, r3
add r8, r4
mov r0, r8
adds r1, r7, 0
bl LoadCompressedObjectPaletteOverrideBuffer
- ldr r0, _080838E4 @ =gUnknown_823957C
+ ldr r0, _080838E4 @ =gTrainerFrontPicTable
adds r4, r0
adds r0, r4, 0
adds r1, r7, 0
@@ -649,8 +649,8 @@ CreateTrainerSprite: @ 8083858
pop {r1}
bx r1
.align 2, 0
-_080838E0: .4byte gUnknown_8239A1C
-_080838E4: .4byte gUnknown_823957C
+_080838E0: .4byte gTrainerFrontPicPaletteTable
+_080838E4: .4byte gTrainerFrontPicTable
_080838E8: .4byte gUnknown_83CBE50
_080838EC: .4byte gDummySpriteAnimTable
_080838F0: .4byte gDummySpriteAffineAnimTable
@@ -666,12 +666,12 @@ LoadTrainerGfx_TrainerCard: @ 80838F8
lsls r4, 24
lsls r5, 16
lsrs r5, 16
- ldr r0, _08083928 @ =gUnknown_823957C
+ ldr r0, _08083928 @ =gTrainerFrontPicTable
lsrs r4, 21
adds r0, r4, r0
ldr r0, [r0]
bl LZDecompressVram
- ldr r0, _0808392C @ =gUnknown_8239A1C
+ ldr r0, _0808392C @ =gTrainerFrontPicPaletteTable
adds r4, r0
ldr r0, [r4]
adds r1, r5, 0
@@ -681,8 +681,8 @@ LoadTrainerGfx_TrainerCard: @ 80838F8
pop {r0}
bx r0
.align 2, 0
-_08083928: .4byte gUnknown_823957C
-_0808392C: .4byte gUnknown_8239A1C
+_08083928: .4byte gTrainerFrontPicTable
+_0808392C: .4byte gTrainerFrontPicPaletteTable
thumb_func_end LoadTrainerGfx_TrainerCard
thumb_func_start AddNewGameBirchObject
@@ -742,7 +742,7 @@ sub_8083970: @ 8083970
movs r1, 0
adds r2, r3, 0
movs r3, 0x1
- bl sub_810C1CC
+ bl CreateMonPicSprite_HandleDeoxys
lsls r0, 16
lsrs r5, r0, 16
ldrh r0, [r4, 0x4]
@@ -806,7 +806,7 @@ sub_80839D4: @ 80839D4
mov r1, r9
mov r2, r10
movs r3, 0x1
- bl sub_810C1CC
+ bl CreateMonPicSprite_HandleDeoxys
lsls r0, 16
lsrs r4, r0, 16
mov r1, r8
@@ -854,7 +854,7 @@ sub_8083A5C: @ 8083A5C
bl FreeOamMatrix
_08083A7A:
adds r0, r5, 0
- bl sub_810C214
+ bl FreeAndDestroyMonPicSprite
pop {r4,r5}
pop {r0}
bx r0
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index c74165999..8a240ed43 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -692,7 +692,7 @@ _080F22F2:
ldr r3, _080F238C @ =0x0000ffff
str r3, [sp, 0xC]
movs r3, 0x1
- bl sub_810C1CC
+ bl CreateMonPicSprite_HandleDeoxys
lsls r0, 24
lsrs r0, 24
ldr r3, _080F2390 @ =gSprites
@@ -1172,7 +1172,7 @@ sub_80F26D4: @ 80F26D4
ldr r0, [r0]
ldrb r0, [r0, 0x8]
movs r1, 0x1
- bl sub_810C374
+ bl PlayerGenderToFrontTrainerPicId_Debug
lsls r0, 16
lsrs r0, 16
movs r1, 0x6
@@ -1182,7 +1182,7 @@ sub_80F26D4: @ 80F26D4
movs r1, 0x1
movs r2, 0x78
movs r3, 0x48
- bl sub_810C2A4
+ bl CreateTrainerPicSprite
ldr r1, _080F2750 @ =gTasks
lsls r4, r5, 2
adds r4, r5
@@ -1383,7 +1383,7 @@ _080F28AC:
ldrb r0, [r4]
cmp r0, 0xFF
beq _080F28B6
- bl sub_810C214
+ bl FreeAndDestroyMonPicSprite
_080F28B6:
adds r4, 0x2
subs r5, 0x1
@@ -1394,7 +1394,7 @@ _080F28B6:
lsls r1, 3
adds r1, r0
ldrh r0, [r1, 0x10]
- bl sub_810C2E8
+ bl FreeAndDestroyTrainerPicSprite
movs r0, 0
bl HideBg
movs r0, 0x1
@@ -1825,7 +1825,7 @@ _080F2C4C:
ldr r3, _080F2CA0 @ =0x0000ffff
str r3, [sp, 0xC]
movs r3, 0x1
- bl sub_810C1CC
+ bl CreateMonPicSprite_HandleDeoxys
lsls r0, 16
lsrs r0, 16
ldr r2, _080F2CA4 @ =gSprites
@@ -2118,7 +2118,7 @@ _080F2EC4:
ldrb r0, [r0]
cmp r0, 0xFF
beq _080F2ED6
- bl sub_810C214
+ bl FreeAndDestroyMonPicSprite
_080F2ED6:
adds r0, r4, 0x1
lsls r0, 16
@@ -3074,7 +3074,7 @@ sub_80F36BC: @ 80F36BC
bl ResetTasks
bl ResetSpriteData
bl reset_temp_tile_data_buffers
- bl dp13_810BB8C
+ bl ResetAllPicSprites
bl FreeAllSpritePalettes
ldr r1, _080F36EC @ =gReservedSpritePaletteCount
movs r0, 0x8
diff --git a/asm/overworld.s b/asm/overworld.s
index d191a9009..38c5bbdd7 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -4631,7 +4631,7 @@ sub_8057024: @ 8057024
bl ResetSpriteData
bl ResetPaletteFade
bl ScanlineEffect_Clear
- bl dp13_810BB8C
+ bl ResetAllPicSprites
bl ResetCameraUpdateInfo
bl InstallCameraPanAheadCallback
cmp r4, 0
@@ -5396,7 +5396,7 @@ _08057690:
b _0805772A
_0805769C:
bl ScanlineEffect_Clear
- bl dp13_810BB8C
+ bl ResetAllPicSprites
bl ResetCameraUpdateInfo
bl InstallCameraPanAheadCallback
bl FieldEffectActiveListClear
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 1d0be1b23..33c3c0851 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -7777,7 +7777,7 @@ _08106504:
ldrb r0, [r0]
movs r1, 0x2
bl CopyWindowToVram
- bl dp13_810BB8C
+ bl ResetAllPicSprites
ldr r0, _081066BC @ =gUnknown_8452368
movs r1, 0x90
lsls r1, 1
@@ -7802,7 +7802,7 @@ _08106534:
ldr r0, [sp, 0x1C]
movs r1, 0x8
movs r3, 0x1
- bl sub_810C1CC
+ bl CreateMonPicSprite_HandleDeoxys
ldr r1, [r7]
adds r1, 0x58
strb r0, [r1]
@@ -7892,7 +7892,7 @@ _08106534:
ldr r0, [r0]
ldrb r0, [r0, 0x8]
movs r1, 0x1
- bl sub_810C374
+ bl PlayerGenderToFrontTrainerPicId_Debug
lsls r0, 16
lsrs r0, 16
movs r3, 0
@@ -7902,7 +7902,7 @@ _08106534:
movs r1, 0x1
movs r2, 0x50
movs r3, 0x68
- bl sub_810C2A4
+ bl CreateTrainerPicSprite
ldr r1, [r7]
adds r1, 0x59
strb r0, [r1]
@@ -8114,7 +8114,7 @@ _081067CE:
ldrb r0, [r1]
cmp r0, 0xFF
beq _081067F2
- bl sub_810C2E8
+ bl FreeAndDestroyTrainerPicSprite
_081067F2:
ldr r0, [r4]
adds r1, r0, 0
@@ -8122,7 +8122,7 @@ _081067F2:
ldrb r0, [r1]
cmp r0, 0xFF
beq _08106802
- bl sub_810C214
+ bl FreeAndDestroyMonPicSprite
_08106802:
movs r0, 0
pop {r4,r5}
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s
index 20ed51bda..56b077cef 100644
--- a/asm/pokemon_special_anim.s
+++ b/asm/pokemon_special_anim.s
@@ -2441,7 +2441,7 @@ _0811D884:
cmp r4, 0
beq _0811D916
lsls r0, r7, 3
- ldr r1, _0811D900 @ =gUnknown_82350AC
+ ldr r1, _0811D900 @ =gMonFrontPicTable
adds r0, r1
adds r1, r6, 0
adds r2, r7, 0
@@ -2474,7 +2474,7 @@ _0811D884:
bl sub_811DB14
b _0811D910
.align 2, 0
-_0811D900: .4byte gUnknown_82350AC
+_0811D900: .4byte gMonFrontPicTable
_0811D904: .4byte gUnknown_8459A30
_0811D908: .4byte gSprites
_0811D90C:
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 8b8407ce0..dada77eb3 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -7229,7 +7229,7 @@ sub_808F3F8: @ 808F3F8
cmp r2, 0
beq _0808F48C
lsls r0, r2, 3
- ldr r1, _0808F470 @ =gUnknown_82350AC
+ ldr r1, _0808F470 @ =gMonFrontPicTable
adds r0, r1
ldr r5, _0808F474 @ =0x000022bc
adds r1, r4, r5
@@ -7270,7 +7270,7 @@ sub_808F3F8: @ 808F3F8
.align 2, 0
_0808F468: .4byte gUnknown_20397B0
_0808F46C: .4byte 0x00002238
-_0808F470: .4byte gUnknown_82350AC
+_0808F470: .4byte gMonFrontPicTable
_0808F474: .4byte 0x000022bc
_0808F478: .4byte 0x00000cd8
_0808F47C: .4byte 0x0000223c
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 1688f2ed5..62cedeb88 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -10258,7 +10258,7 @@ sub_813995C: @ 813995C
adds r1, r4, 0
adds r2, r6, 0
movs r3, 0x1
- bl sub_810C16C
+ bl CreateMonPicSprite
b _08139A40
.align 2, 0
_081399CC: .4byte gUnknown_203B170
@@ -10290,7 +10290,7 @@ _081399E8:
adds r1, r4, 0
adds r2, r6, 0
movs r3, 0x1
- bl sub_810C16C
+ bl CreateMonPicSprite
b _08139A40
.align 2, 0
_08139A1C: .4byte gUnknown_203B16C
@@ -10308,7 +10308,7 @@ _08139A24:
adds r1, r4, 0
adds r2, r6, 0
movs r3, 0x1
- bl sub_810C1CC
+ bl CreateMonPicSprite_HandleDeoxys
_08139A40:
lsls r0, 16
lsrs r5, r0, 16
@@ -10593,7 +10593,7 @@ sub_8139C80: @ 8139C80
ldr r1, _08139CA8 @ =0x00003010
adds r0, r1
ldrb r0, [r0]
- bl sub_810C214
+ bl FreeAndDestroyMonPicSprite
ldr r4, _08139CAC @ =gUnknown_203B170
ldr r0, [r4]
bl Free
diff --git a/asm/trade.s b/asm/trade.s
index 70ca6a736..d26aed7d8 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -7285,7 +7285,7 @@ _08050040:
cmp r6, 0
bne _0805007C
lsls r0, r5, 3
- ldr r1, _08050074 @ =gUnknown_82350AC
+ ldr r1, _08050074 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _08050078 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -7296,11 +7296,11 @@ _08050040:
movs r4, 0
b _0805009A
.align 2, 0
-_08050074: .4byte gUnknown_82350AC
+_08050074: .4byte gMonFrontPicTable
_08050078: .4byte gMonSpritesGfxPtr
_0805007C:
lsls r0, r5, 3
- ldr r1, _080500BC @ =gUnknown_82350AC
+ ldr r1, _080500BC @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080500C0 @ =gMonSpritesGfxPtr
ldr r2, [r1]
@@ -7329,7 +7329,7 @@ _0805009A:
str r7, [r1]
b _0805011E
.align 2, 0
-_080500BC: .4byte gUnknown_82350AC
+_080500BC: .4byte gMonFrontPicTable
_080500C0: .4byte gMonSpritesGfxPtr
_080500C4: .4byte gUnknown_2031DAC
_080500C8:
@@ -10807,7 +10807,7 @@ _08052042:
adds r0, 0xF2
ldrh r2, [r0]
lsls r0, r2, 3
- ldr r1, _08052068 @ =gUnknown_82350AC
+ ldr r1, _08052068 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _0805206C @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -10819,7 +10819,7 @@ _08052042:
.align 2, 0
_08052060: .4byte gSprites
_08052064: .4byte SpriteCallbackDummy
-_08052068: .4byte gUnknown_82350AC
+_08052068: .4byte gMonFrontPicTable
_0805206C: .4byte gMonSpritesGfxPtr
_08052070:
ldr r4, _0805211C @ =gSprites
@@ -13032,7 +13032,7 @@ _0805349E:
adds r0, 0xF2
ldrh r2, [r0]
lsls r0, r2, 3
- ldr r1, _080534C4 @ =gUnknown_82350AC
+ ldr r1, _080534C4 @ =gMonFrontPicTable
adds r0, r1
ldr r1, _080534C8 @ =gMonSpritesGfxPtr
ldr r1, [r1]
@@ -13044,7 +13044,7 @@ _0805349E:
.align 2, 0
_080534BC: .4byte gSprites
_080534C0: .4byte SpriteCallbackDummy
-_080534C4: .4byte gUnknown_82350AC
+_080534C4: .4byte gMonFrontPicTable
_080534C8: .4byte gMonSpritesGfxPtr
_080534CC:
ldr r4, _08053578 @ =gSprites
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index 0b0d6c2cf..1dcdc4849 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -5019,7 +5019,7 @@ _0808B8FC:
adds r0, r1, r4
ldrb r0, [r0]
movs r1, 0x1
- bl sub_810C374
+ bl PlayerGenderToFrontTrainerPicId_Debug
lsls r0, 16
lsrs r0, 16
ldr r5, _0808B944 @ =gUnknown_83CD8EC
diff --git a/asm/trainer_pokemon_sprites.s b/asm/trainer_pokemon_sprites.s
deleted file mode 100644
index 3ff8f9318..000000000
--- a/asm/trainer_pokemon_sprites.s
+++ /dev/null
@@ -1,1102 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_91
-nullsub_91: @ 810BB88
- bx lr
- thumb_func_end nullsub_91
-
- thumb_func_start dp13_810BB8C
-dp13_810BB8C: @ 810BB8C
- push {r4-r7,lr}
- ldr r4, _0810BBAC @ =gUnknown_8453178
- ldr r3, _0810BBB0 @ =gUnknown_203AD58
- movs r2, 0x7
-_0810BB94:
- adds r1, r3, 0
- adds r0, r4, 0
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- adds r3, 0xC
- subs r2, 0x1
- cmp r2, 0
- bge _0810BB94
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810BBAC: .4byte gUnknown_8453178
-_0810BBB0: .4byte gUnknown_203AD58
- thumb_func_end dp13_810BB8C
-
- thumb_func_start load_pokemon_image_TODO
-load_pokemon_image_TODO: @ 810BBB4
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r1, 0
- adds r5, r3, 0
- ldr r3, [sp, 0x18]
- ldr r1, [sp, 0x1C]
- lsls r0, 16
- lsrs r4, r0, 16
- adds r7, r4, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsls r1, 24
- lsrs r1, 24
- adds r0, r1, 0
- cmp r3, 0
- bne _0810BC28
- cmp r2, 0
- beq _0810BBF4
- cmp r1, 0
- bne _0810BBE8
- lsls r0, r4, 3
- ldr r1, _0810BBE4 @ =gUnknown_82350AC
- b _0810BBFC
- .align 2, 0
-_0810BBE4: .4byte gUnknown_82350AC
-_0810BBE8:
- lsls r0, r4, 3
- ldr r1, _0810BBF0 @ =gUnknown_82350AC
- b _0810BC14
- .align 2, 0
-_0810BBF0: .4byte gUnknown_82350AC
-_0810BBF4:
- cmp r0, 0
- bne _0810BC10
- lsls r0, r4, 3
- ldr r1, _0810BC0C @ =gUnknown_823654C
-_0810BBFC:
- adds r0, r1
- str r2, [sp]
- adds r1, r5, 0
- adds r2, r4, 0
- adds r3, r6, 0
- bl sub_800ECF0
- b _0810BC4E
- .align 2, 0
-_0810BC0C: .4byte gUnknown_823654C
-_0810BC10:
- lsls r0, r4, 3
- ldr r1, _0810BC24 @ =gUnknown_823654C
-_0810BC14:
- adds r0, r1
- str r2, [sp]
- adds r1, r5, 0
- adds r2, r4, 0
- adds r3, r6, 0
- bl LoadSpecialPokePic_DontHandleDeoxys
- b _0810BC4E
- .align 2, 0
-_0810BC24: .4byte gUnknown_823654C
-_0810BC28:
- cmp r2, 0
- beq _0810BC40
- lsls r0, r4, 3
- ldr r1, _0810BC3C @ =gUnknown_823957C
- adds r0, r1
- adds r1, r5, 0
- adds r2, r4, 0
- bl DecompressPicFromTable
- b _0810BC4E
- .align 2, 0
-_0810BC3C: .4byte gUnknown_823957C
-_0810BC40:
- lsls r0, r7, 3
- ldr r1, _0810BC58 @ =gUnknown_8239FA4
- adds r0, r1
- adds r1, r5, 0
- adds r2, r7, 0
- bl DecompressPicFromTable
-_0810BC4E:
- movs r0, 0
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810BC58: .4byte gUnknown_8239FA4
- thumb_func_end load_pokemon_image_TODO
-
- thumb_func_start sub_810BC5C
-sub_810BC5C: @ 810BC5C
- push {r4,lr}
- sub sp, 0x8
- ldr r4, [sp, 0x10]
- lsls r0, 16
- lsrs r0, 16
- lsls r2, 24
- lsrs r2, 24
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- bl load_pokemon_image_TODO
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_810BC5C
-
- thumb_func_start sub_810BC84
-sub_810BC84: @ 810BC84
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r1, 0
- mov r8, r2
- ldr r1, [sp, 0x18]
- ldr r2, [sp, 0x1C]
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- lsls r3, 24
- lsrs r5, r3, 24
- mov r12, r5
- lsls r1, 16
- lsrs r3, r1, 16
- adds r1, r3, 0
- lsls r2, 24
- cmp r2, 0
- bne _0810BCE8
- ldr r0, _0810BCC8 @ =0x0000ffff
- cmp r3, r0
- bne _0810BCD0
- ldr r2, _0810BCCC @ =gUnknown_203AD40
- ldrh r1, [r2, 0x2]
- adds r0, r3, 0
- orrs r0, r1
- strh r0, [r2, 0x2]
- adds r0, r4, 0
- adds r1, r7, 0
- mov r2, r8
- bl GetFrontSpritePalFromSpeciesAndPersonality
- lsls r1, r5, 20
- b _0810BD04
- .align 2, 0
-_0810BCC8: .4byte 0x0000ffff
-_0810BCCC: .4byte gUnknown_203AD40
-_0810BCD0:
- ldr r0, _0810BCE4 @ =gUnknown_203AD40
- strh r3, [r0, 0x2]
- adds r0, r4, 0
- adds r1, r7, 0
- mov r2, r8
- bl GetMonSpritePalStructFromOtIdPersonality
- bl LoadCompressedObjectPalette
- b _0810BD2E
- .align 2, 0
-_0810BCE4: .4byte gUnknown_203AD40
-_0810BCE8:
- ldr r0, _0810BD14 @ =0x0000ffff
- cmp r3, r0
- bne _0810BD20
- ldr r2, _0810BD18 @ =gUnknown_203AD40
- ldrh r1, [r2, 0x2]
- adds r0, r3, 0
- orrs r0, r1
- strh r0, [r2, 0x2]
- ldr r1, _0810BD1C @ =gUnknown_8239A1C
- lsls r0, r4, 3
- adds r0, r1
- ldr r0, [r0]
- mov r2, r12
- lsls r1, r2, 20
-_0810BD04:
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- b _0810BD2E
- .align 2, 0
-_0810BD14: .4byte 0x0000ffff
-_0810BD18: .4byte gUnknown_203AD40
-_0810BD1C: .4byte gUnknown_8239A1C
-_0810BD20:
- ldr r0, _0810BD38 @ =gUnknown_203AD40
- strh r1, [r0, 0x2]
- lsls r0, r6, 3
- ldr r1, _0810BD3C @ =gUnknown_8239A1C
- adds r0, r1
- bl LoadCompressedObjectPalette
-_0810BD2E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810BD38: .4byte gUnknown_203AD40
-_0810BD3C: .4byte gUnknown_8239A1C
- thumb_func_end sub_810BC84
-
- thumb_func_start sub_810BD40
-sub_810BD40: @ 810BD40
- push {r4,r5,lr}
- adds r5, r1, 0
- ldr r1, [sp, 0xC]
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r4, r3, 24
- lsls r1, 24
- cmp r1, 0
- bne _0810BD64
- adds r1, r5, 0
- bl GetFrontSpritePalFromSpeciesAndPersonality
- lsls r1, r4, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- b _0810BD74
-_0810BD64:
- ldr r1, _0810BD7C @ =gUnknown_8239A1C
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- lsls r1, r4, 4
- movs r2, 0x20
- bl LoadCompressedPalette
-_0810BD74:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810BD7C: .4byte gUnknown_8239A1C
- thumb_func_end sub_810BD40
-
- thumb_func_start uns_builder_assign_animtable1
-uns_builder_assign_animtable1: @ 810BD80
- push {lr}
- lsls r0, 24
- cmp r0, 0
- bne _0810BD98
- ldr r1, _0810BD90 @ =gUnknown_203AD40
- ldr r0, _0810BD94 @ =gUnknown_82349BC
- str r0, [r1, 0x8]
- b _0810BDA0
- .align 2, 0
-_0810BD90: .4byte gUnknown_203AD40
-_0810BD94: .4byte gUnknown_82349BC
-_0810BD98:
- ldr r0, _0810BDA4 @ =gUnknown_203AD40
- ldr r1, _0810BDA8 @ =gTrainerFrontAnimsPtrTable
- ldr r1, [r1]
- str r1, [r0, 0x8]
-_0810BDA0:
- pop {r0}
- bx r0
- .align 2, 0
-_0810BDA4: .4byte gUnknown_203AD40
-_0810BDA8: .4byte gTrainerFrontAnimsPtrTable
- thumb_func_end uns_builder_assign_animtable1
-
- thumb_func_start oamt_spawn_poke_or_trainer_picture
-oamt_spawn_poke_or_trainer_picture: @ 810BDAC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- str r1, [sp, 0xC]
- str r2, [sp, 0x10]
- ldr r1, [sp, 0x50]
- ldr r2, [sp, 0x54]
- ldr r4, [sp, 0x58]
- ldr r5, [sp, 0x5C]
- ldr r6, [sp, 0x60]
- ldr r7, [sp, 0x64]
- mov r8, r7
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x18]
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x20]
- lsls r5, 16
- lsrs r5, 16
- mov r10, r5
- lsls r6, 24
- lsrs r6, 24
- mov r9, r6
- mov r0, r8
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r1, _0810BE44 @ =gUnknown_203AD58
- ldrb r0, [r1, 0xB]
- cmp r0, 0
- beq _0810BE1C
-_0810BE04:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bhi _0810BE1C
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0xB]
- cmp r0, 0
- bne _0810BE04
-_0810BE1C:
- cmp r4, 0x8
- beq _0810BE40
- movs r0, 0x80
- lsls r0, 6
- bl Alloc
- adds r7, r0, 0
- cmp r7, 0
- beq _0810BE40
- movs r0, 0x20
- bl Alloc
- mov r8, r0
- cmp r0, 0
- bne _0810BE4C
- adds r0, r7, 0
- bl Free
-_0810BE40:
- ldr r0, _0810BE48 @ =0x0000ffff
- b _0810BF16
- .align 2, 0
-_0810BE44: .4byte gUnknown_203AD58
-_0810BE48: .4byte 0x0000ffff
-_0810BE4C:
- mov r1, r9
- str r1, [sp]
- str r5, [sp, 0x4]
- ldr r0, [sp, 0x8]
- ldr r1, [sp, 0x10]
- ldr r2, [sp, 0x14]
- adds r3, r7, 0
- bl load_pokemon_image_TODO
- lsls r0, 16
- cmp r0, 0
- bne _0810BE40
- lsls r2, r4, 1
- str r2, [sp, 0x2C]
- ldr r5, _0810BF28 @ =gUnknown_203AD40
- ldr r0, _0810BF2C @ =gUnknown_8453184
- mov r12, r0
- ldr r1, [sp, 0x18]
- lsls r1, 16
- str r1, [sp, 0x24]
- ldr r2, [sp, 0x1C]
- lsls r2, 16
- str r2, [sp, 0x28]
- movs r3, 0x80
- lsls r3, 4
- mov r0, r8
- adds r1, r7, 0
- adds r6, r3, 0
- movs r2, 0x3
-_0810BE86:
- str r1, [r0]
- strh r3, [r0, 0x4]
- adds r0, 0x8
- adds r1, r6
- subs r2, 0x1
- cmp r2, 0
- bge _0810BE86
- ldr r0, _0810BF30 @ =0x0000ffff
- strh r0, [r5]
- mov r0, r12
- str r0, [r5, 0x4]
- mov r0, r9
- bl uns_builder_assign_animtable1
- mov r1, r8
- str r1, [r5, 0xC]
- ldr r0, _0810BF34 @ =gDummySpriteAffineAnimTable
- str r0, [r5, 0x10]
- ldr r0, _0810BF38 @ =nullsub_91
- str r0, [r5, 0x14]
- mov r2, r10
- str r2, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x8]
- ldr r1, [sp, 0xC]
- ldr r2, [sp, 0x10]
- ldr r3, [sp, 0x20]
- bl sub_810BC84
- ldr r2, [sp, 0x24]
- asrs r1, r2, 16
- ldr r0, [sp, 0x28]
- asrs r2, r0, 16
- adds r0, r5, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- adds r6, r2, 0
- ldr r0, _0810BF30 @ =0x0000ffff
- cmp r10, r0
- bne _0810BEF6
- ldr r0, _0810BF3C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldr r2, [sp, 0x20]
- lsls r3, r2, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
-_0810BEF6:
- ldr r1, _0810BF40 @ =gUnknown_203AD58
- ldr r2, [sp, 0x2C]
- adds r0, r2, r4
- lsls r0, 2
- adds r2, r0, r1
- str r7, [r2]
- adds r1, 0x4
- adds r0, r1
- mov r7, r8
- str r7, [r0]
- mov r0, r10
- strh r0, [r2, 0x8]
- strb r6, [r2, 0xA]
- movs r0, 0x1
- strb r0, [r2, 0xB]
- adds r0, r6, 0
-_0810BF16:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810BF28: .4byte gUnknown_203AD40
-_0810BF2C: .4byte gUnknown_8453184
-_0810BF30: .4byte 0x0000ffff
-_0810BF34: .4byte gDummySpriteAffineAnimTable
-_0810BF38: .4byte nullsub_91
-_0810BF3C: .4byte gSprites
-_0810BF40: .4byte gUnknown_203AD58
- thumb_func_end oamt_spawn_poke_or_trainer_picture
-
- thumb_func_start sub_810BF44
-sub_810BF44: @ 810BF44
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- ldr r4, [sp, 0x34]
- ldr r5, [sp, 0x38]
- ldr r6, [sp, 0x3C]
- ldr r7, [sp, 0x40]
- mov r8, r7
- ldr r7, [sp, 0x44]
- mov r9, r7
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r6, 24
- lsrs r6, 24
- mov r7, r8
- lsls r7, 16
- lsrs r7, 16
- mov r8, r7
- mov r7, r9
- lsls r7, 24
- lsrs r7, 24
- lsls r4, 16
- asrs r4, 16
- str r4, [sp]
- lsls r5, 16
- asrs r5, 16
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r4, r8
- str r4, [sp, 0xC]
- str r7, [sp, 0x10]
- movs r4, 0
- str r4, [sp, 0x14]
- bl oamt_spawn_poke_or_trainer_picture
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810BF44
-
- thumb_func_start sub_810BFA4
-sub_810BFA4: @ 810BFA4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r2, 0
- ldr r0, _0810BFDC @ =gUnknown_203AD58
- ldrb r1, [r0, 0xA]
- adds r3, r0, 0
- cmp r1, r4
- beq _0810BFD4
- adds r1, r3, 0
-_0810BFBC:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bhi _0810BFD4
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0xA]
- cmp r0, r4
- bne _0810BFBC
-_0810BFD4:
- cmp r2, 0x8
- bne _0810BFE4
- ldr r0, _0810BFE0 @ =0x0000ffff
- b _0810C03A
- .align 2, 0
-_0810BFDC: .4byte gUnknown_203AD58
-_0810BFE0: .4byte 0x0000ffff
-_0810BFE4:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r3
- ldr r1, [r5]
- mov r8, r1
- adds r1, r3, 0x4
- adds r0, r1
- ldr r7, [r0]
- ldrh r1, [r5, 0x8]
- ldr r0, _0810C044 @ =0x0000ffff
- lsls r6, r4, 4
- cmp r1, r0
- beq _0810C018
- ldr r1, _0810C048 @ =gSprites
- adds r0, r6, r4
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- bl GetSpritePaletteTagByPaletteNum
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
-_0810C018:
- adds r0, r6, r4
- lsls r0, 2
- ldr r1, _0810C048 @ =gSprites
- adds r0, r1
- bl DestroySprite
- mov r0, r8
- bl Free
- adds r0, r7, 0
- bl Free
- adds r1, r5, 0
- ldr r0, _0810C04C @ =gUnknown_8453178
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0
-_0810C03A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810C044: .4byte 0x0000ffff
-_0810C048: .4byte gSprites
-_0810C04C: .4byte gUnknown_8453178
- thumb_func_end sub_810BFA4
-
- thumb_func_start sub_810C050
-sub_810C050: @ 810C050
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- mov r9, r1
- adds r7, r2, 0
- adds r4, r3, 0
- ldr r1, [sp, 0x20]
- ldr r2, [sp, 0x24]
- ldr r3, [sp, 0x28]
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r6, r3, 24
- adds r0, r2, 0
- movs r1, 0x7
- bl GetWindowAttribute
- adds r3, r0, 0
- movs r0, 0
- str r0, [sp]
- adds r0, r5, 0
- adds r1, r7, 0
- adds r2, r4, 0
- bl sub_810BC5C
- lsls r0, 16
- cmp r0, 0
- bne _0810C0AC
- str r6, [sp]
- adds r0, r5, 0
- mov r1, r9
- adds r2, r7, 0
- mov r3, r8
- bl sub_810BD40
- movs r0, 0
- b _0810C0AE
-_0810C0AC:
- ldr r0, _0810C0BC @ =0x0000ffff
-_0810C0AE:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810C0BC: .4byte 0x0000ffff
- thumb_func_end sub_810C050
-
- thumb_func_start sub_810C0C0
-sub_810C0C0: @ 810C0C0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- str r1, [sp, 0x18]
- str r2, [sp, 0x1C]
- ldr r1, [sp, 0x44]
- ldr r2, [sp, 0x48]
- ldr r4, [sp, 0x4C]
- ldr r5, [sp, 0x50]
- ldr r6, [sp, 0x54]
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x20]
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x80
- lsls r0, 6
- bl Alloc
- adds r4, r0, 0
- cmp r4, 0
- beq _0810C156
- str r6, [sp]
- mov r0, r9
- ldr r1, [sp, 0x1C]
- adds r2, r7, 0
- adds r3, r4, 0
- bl sub_810BC5C
- lsls r0, 16
- cmp r0, 0
- bne _0810C156
- movs r0, 0x40
- str r0, [sp]
- str r0, [sp, 0x4]
- mov r1, r10
- str r1, [sp, 0x8]
- mov r1, r8
- str r1, [sp, 0xC]
- str r0, [sp, 0x10]
- str r0, [sp, 0x14]
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl BlitBitmapRectToWindow
- str r6, [sp]
- mov r0, r9
- ldr r1, [sp, 0x18]
- ldr r2, [sp, 0x1C]
- ldr r3, [sp, 0x20]
- bl sub_810BD40
- adds r0, r4, 0
- bl Free
- movs r0, 0
- b _0810C158
-_0810C156:
- ldr r0, _0810C168 @ =0x0000ffff
-_0810C158:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810C168: .4byte 0x0000ffff
- thumb_func_end sub_810C0C0
-
- thumb_func_start sub_810C16C
-sub_810C16C: @ 810C16C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- ldr r4, [sp, 0x34]
- ldr r5, [sp, 0x38]
- ldr r6, [sp, 0x3C]
- ldr r7, [sp, 0x40]
- mov r8, r7
- ldr r7, [sp, 0x44]
- mov r9, r7
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r6, 24
- lsrs r6, 24
- mov r7, r8
- lsls r7, 16
- lsrs r7, 16
- mov r8, r7
- mov r7, r9
- lsls r7, 24
- lsrs r7, 24
- lsls r4, 16
- asrs r4, 16
- str r4, [sp]
- lsls r5, 16
- asrs r5, 16
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r4, r8
- str r4, [sp, 0xC]
- movs r4, 0
- str r4, [sp, 0x10]
- str r7, [sp, 0x14]
- bl oamt_spawn_poke_or_trainer_picture
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810C16C
-
- thumb_func_start sub_810C1CC
-sub_810C1CC: @ 810C1CC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- ldr r6, [sp, 0x34]
- ldr r7, [sp, 0x38]
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r7, 16
- lsrs r7, 16
- lsls r4, 16
- asrs r4, 16
- str r4, [sp]
- lsls r5, 16
- asrs r5, 16
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- str r7, [sp, 0xC]
- movs r4, 0
- str r4, [sp, 0x10]
- bl sub_810C16C
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810C1CC
-
- thumb_func_start sub_810C214
-sub_810C214: @ 810C214
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_810BFA4
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_810C214
-
- thumb_func_start sub_810C228
-sub_810C228: @ 810C228
- push {r4-r6,lr}
- sub sp, 0x14
- ldr r5, [sp, 0x24]
- ldr r6, [sp, 0x28]
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- str r4, [sp, 0x10]
- bl sub_810C0C0
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x14
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810C228
-
- thumb_func_start sub_810C25C
-sub_810C25C: @ 810C25C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- ldr r6, [sp, 0x34]
- ldr r7, [sp, 0x38]
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 24
- lsrs r6, 24
- lsls r7, 24
- lsrs r7, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- str r7, [sp, 0xC]
- movs r4, 0
- str r4, [sp, 0x10]
- bl sub_810C0C0
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810C25C
-
- thumb_func_start sub_810C2A4
-sub_810C2A4: @ 810C2A4
- push {r4,r5,lr}
- sub sp, 0x14
- adds r5, r1, 0
- ldr r1, [sp, 0x20]
- ldr r4, [sp, 0x24]
- lsls r0, 16
- lsrs r0, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r2, 16
- asrs r2, 16
- str r2, [sp]
- lsls r3, 16
- asrs r3, 16
- str r3, [sp, 0x4]
- str r1, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r1, 0x1
- str r1, [sp, 0x10]
- movs r1, 0
- movs r2, 0
- adds r3, r5, 0
- bl sub_810BF44
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x14
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_810C2A4
-
- thumb_func_start sub_810C2E8
-sub_810C2E8: @ 810C2E8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_810BFA4
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_810C2E8
-
- thumb_func_start sub_810C2FC
-sub_810C2FC: @ 810C2FC
- push {r4,lr}
- sub sp, 0xC
- adds r4, r1, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r2, [sp]
- str r3, [sp, 0x4]
- movs r1, 0x1
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0
- adds r3, r4, 0
- bl sub_810C050
- lsls r0, 16
- lsrs r0, 16
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_810C2FC
-
- thumb_func_start sub_810C330
-sub_810C330: @ 810C330
- push {r4,r5,lr}
- sub sp, 0x14
- adds r5, r1, 0
- ldr r1, [sp, 0x20]
- ldr r4, [sp, 0x24]
- lsls r0, 16
- lsrs r0, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r1, 24
- lsrs r1, 24
- lsls r4, 24
- lsrs r4, 24
- str r2, [sp]
- str r3, [sp, 0x4]
- str r1, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r1, 0x1
- str r1, [sp, 0x10]
- movs r1, 0
- movs r2, 0
- adds r3, r5, 0
- bl sub_810C0C0
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x14
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_810C330
-
- thumb_func_start sub_810C374
-sub_810C374: @ 810C374
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- bne _0810C39A
- cmp r0, 0
- beq _0810C394
- ldr r0, _0810C390 @ =gFacilityClassToPicIndex
- adds r0, 0x87
- ldrb r0, [r0]
- b _0810C39A
- .align 2, 0
-_0810C390: .4byte gFacilityClassToPicIndex
-_0810C394:
- ldr r0, _0810C3A0 @ =gFacilityClassToPicIndex
- adds r0, 0x86
- ldrb r0, [r0]
-_0810C39A:
- pop {r1}
- bx r1
- .align 2, 0
-_0810C3A0: .4byte gFacilityClassToPicIndex
- thumb_func_end sub_810C374
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s
index c0451378c..d430d7624 100644
--- a/asm/unk_8147AA8.s
+++ b/asm/unk_8147AA8.s
@@ -6877,7 +6877,7 @@ _0814AE2A:
beq _0814AEEC
ldrh r2, [r7]
lsls r0, r2, 3
- ldr r1, _0814AED8 @ =gUnknown_82350AC
+ ldr r1, _0814AED8 @ =gMonFrontPicTable
adds r0, r1
ldr r3, [r7, 0x8]
mov r1, r8
@@ -6948,7 +6948,7 @@ _0814AE2A:
strb r1, [r0]
b _0814AEF8
.align 2, 0
-_0814AED8: .4byte gUnknown_82350AC
+_0814AED8: .4byte gMonFrontPicTable
_0814AEDC: .4byte 0xffff0000
_0814AEE0: .4byte 0x000081a8
_0814AEE4: .4byte gSprites
diff --git a/data/data.s b/data/data.s
index 2d3806e4a..eb704206c 100644
--- a/data/data.s
+++ b/data/data.s
@@ -76,7 +76,7 @@ gUnknown_82349BC:: @ 82349BC
gUnknown_82349CC:: @ 82349CC
.incbin "baserom.gba", 0x2349CC, 0x6E0
-gUnknown_82350AC:: @ 82350AC
+gMonFrontPicTable:: @ 82350AC
.incbin "baserom.gba", 0x2350AC, 0xE8
gUnknown_8235194:: @ 8235194
@@ -85,7 +85,7 @@ gUnknown_8235194:: @ 8235194
gUnknown_8235E6C:: @ 8235E6C
.incbin "baserom.gba", 0x235E6C, 0x6E0
-gUnknown_823654C:: @ 823654C
+gMonBackPicTable:: @ 823654C
.incbin "baserom.gba", 0x23654C, 0xDC0
gMonPaletteTable:: @ 823730C
@@ -103,10 +103,10 @@ gTrainerFrontAnimsPtrTable:: @ 82390DC
gUnknown_823932C:: @ 823932C
.incbin "baserom.gba", 0x23932C, 0x250
-gUnknown_823957C:: @ 823957C
+gTrainerFrontPicTable:: @ 823957C
.incbin "baserom.gba", 0x23957C, 0x4A0
-gUnknown_8239A1C:: @ 8239A1C
+gTrainerFrontPicPaletteTable:: @ 8239A1C
.incbin "baserom.gba", 0x239A1C, 0x558
gTrainerBackAnimsPtrTable:: @ 8239F74
@@ -115,7 +115,7 @@ gTrainerBackAnimsPtrTable:: @ 8239F74
gUnknown_8239F8C:: @ 8239F8C
.incbin "baserom.gba", 0x239F8C, 0x18
-gUnknown_8239FA4:: @ 8239FA4
+gTrainerBackPicTable:: @ 8239FA4
.incbin "baserom.gba", 0x239FA4, 0x30
gUnknown_8239FD4:: @ 8239FD4
diff --git a/data/trainer_pokemon_sprites.s b/data/trainer_pokemon_sprites.s
deleted file mode 100644
index 6d5477040..000000000
--- a/data/trainer_pokemon_sprites.s
+++ /dev/null
@@ -1,25 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .section .rodata
-
- .align 2
-gUnknown_845312C:: @ 845312C
- window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x0f, 0x02a2
- window_template 0x00, 0x06, 0x0f, 0x0e, 0x04, 0x0c, 0x02a2
- window_template 0x00, 0x06, 0x0f, 0x0f, 0x04, 0x0c, 0x02da
- window_template 0x00, 0x06, 0x0f, 0x10, 0x04, 0x0c, 0x0316
- window_template 0x00, 0x06, 0x0f, 0x17, 0x04, 0x0c, 0x0356
- window_template 0x00, 0x16, 0x11, 0x07, 0x02, 0x0f, 0x020a
- window_template 0x00, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x020a
- window_template 0x00, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x020a
- window_template 0x00, 0x16, 0x0b, 0x07, 0x08, 0x0f, 0x020a
-
-gUnknown_8453174::
- .byte 16, 8, 4, 0
-
- .align 2
-gUnknown_8453178:: @ 8453178
- .space 12
-
-gUnknown_8453184:: @ 8453184
- .byte 0, 0, 0, 0xc0, 0, 0, 0, 0
diff --git a/include/gba/types.h b/include/gba/types.h
index 480619d21..9f2594703 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -28,29 +28,42 @@ typedef u8 bool8;
typedef u16 bool16;
typedef u32 bool32;
+struct BgCnt
+{
+ u16 priority:2;
+ u16 charBaseBlock:2;
+ u16 dummy:2;
+ u16 mosaic:1;
+ u16 palettes:1;
+ u16 screenBaseBlock:5;
+ u16 areaOverflowMode:1;
+ u16 screenSize:2;
+};
+typedef volatile struct BgCnt vBgCnt;
+
struct PlttData
{
u16 r:5; // red
u16 g:5; // green
u16 b:5; // blue
u16 unused_15:1;
-} /*__attribute__((packed))*/;
+};
struct OamData
{
/*0x00*/ u32 y:8;
- /*0x01*/ u32 affineMode:2; // 0x1, 0x2 = 0x3
- u32 objMode:2; // 0x4, 0x8 = 0xC
+ /*0x01*/ u32 affineMode:2; // 0x1, 0x2 -> 0x4
+ u32 objMode:2; // 0x4, 0x8 -> 0xC
u32 mosaic:1; // 0x10
u32 bpp:1; // 0x20
- u32 shape:2; // 0x40, 0x80
+ u32 shape:2; // 0x40, 0x80 -> 0xC0
/*0x02*/ u32 x:9;
- u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
- u32 size:2;
+ u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
+ u32 size:2; // 0x4000, 0x8000 -> 0xC000
- /*0x04*/ u16 tileNum:10;
- u16 priority:2;
+ /*0x04*/ u16 tileNum:10; // 0x3FF
+ u16 priority:2; // 0x400, 0x800 -> 0xC00
u16 paletteNum:4;
/*0x06*/ u16 affineParam;
};
@@ -74,6 +87,29 @@ struct OamData
#define ST_OAM_H_RECTANGLE 1
#define ST_OAM_V_RECTANGLE 2
+#define ST_OAM_SIZE_0 0
+#define ST_OAM_SIZE_1 1
+#define ST_OAM_SIZE_2 2
+#define ST_OAM_SIZE_3 3
+
+#define SPRITE_SIZE_8x8 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_SQUARE))
+#define SPRITE_SIZE_16x16 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_SQUARE))
+#define SPRITE_SIZE_32x32 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_SQUARE))
+#define SPRITE_SIZE_64x64 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_SQUARE))
+
+#define SPRITE_SIZE_16x8 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_H_RECTANGLE))
+#define SPRITE_SIZE_32x8 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_H_RECTANGLE))
+#define SPRITE_SIZE_32x16 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_H_RECTANGLE))
+#define SPRITE_SIZE_64x32 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_H_RECTANGLE))
+
+#define SPRITE_SIZE_8x16 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_V_RECTANGLE))
+#define SPRITE_SIZE_8x32 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_V_RECTANGLE))
+#define SPRITE_SIZE_16x32 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_V_RECTANGLE))
+#define SPRITE_SIZE_32x64 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_V_RECTANGLE))
+
+#define SPRITE_SIZE(dim) ((SPRITE_SIZE_##dim >> 2) & 0x03)
+#define SPRITE_SHAPE(dim) (SPRITE_SIZE_##dim & 0x03)
+
struct BgAffineSrcData
{
s32 texX;
diff --git a/include/battle_dome_cards.h b/include/trainer_pokemon_sprites.h
index 94c9876f3..3ae75ed0f 100644
--- a/include/battle_dome_cards.h
+++ b/include/trainer_pokemon_sprites.h
@@ -3,7 +3,7 @@
#include "global.h"
-bool16 dp13_810BB8C(void);
+bool16 ResetAllPicSprites(void);
u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 sub_818D7D8(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 sub_818D820(u16 spriteId);
@@ -11,7 +11,7 @@ u16 sub_818D8AC(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16
u16 sub_818D8F0(u16 spriteId);
u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
u8 sub_818D97C(u8 a0, u8 a1);
-u8 sub_810C2A4(u16, u8, s16, s16, u8, u16);
-void sub_810C2E8(u16);
+u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
+u16 FreeAndDestroyTrainerPicSprite(u16);
#endif //GUARD_BATTLE_DOME_CARDS_H
diff --git a/ld_script.txt b/ld_script.txt
index ece412fc7..05ce768dd 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -213,8 +213,7 @@ SECTIONS {
asm/item_menu.o(.text);
asm/save_location.o(.text);
src/bag.o(.text);
- asm/bag.o(.text);
- asm/trainer_pokemon_sprites.o(.text);
+ src/trainer_pokemon_sprites.o(.text);
asm/unk_810C3A4.o(.text);
src/vs_seeker.o(.text);
asm/item_pc.o(.text);
@@ -391,7 +390,7 @@ SECTIONS {
src/save.o(.rodata);
data/data_83FECCC.o(.rodata);
src/bag.o(.rodata);
- data/trainer_pokemon_sprites.o(.rodata);
+ src/trainer_pokemon_sprites.o(.rodata);
src/vs_seeker.o(.rodata);
data/data_83FECCC.o(.rodata.8453F6C);
src/quest_log.o(.rodata);
diff --git a/src/bag.c b/src/bag.c
index f82358a10..4386f5fdf 100644
--- a/src/bag.c
+++ b/src/bag.c
@@ -121,6 +121,84 @@ const struct WindowTemplate gUnknown_8453124 = {
.baseBlock = 0x28a
};
+const struct WindowTemplate gUnknown_845312C[] = {
+ {
+ .priority = 0x00,
+ .tilemapLeft = 0x02,
+ .tilemapTop = 0x0f,
+ .width = 0x1a,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x02a2
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x0e,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x02a2
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x0f,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x02da
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x10,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0316
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x17,
+ .height = 0x04,
+ .paletteNum = 0x0c,
+ .baseBlock = 0x0356
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x11,
+ .width = 0x07,
+ .height = 0x02,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x020a
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0f,
+ .width = 0x07,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x020a
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0d,
+ .width = 0x07,
+ .height = 0x06,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x020a
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x16,
+ .tilemapTop = 0x0b,
+ .width = 0x07,
+ .height = 0x08,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x020a
+ }
+};
+
+const u8 gUnknown_8453174[] = {16, 8, 4};
+
EWRAM_DATA u8 gUnknown_203AD34[11] = {};
void sub_810B858(void)
diff --git a/src/fame_checker.c b/src/fame_checker.c
index c47e52f06..795863aca 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -8,7 +8,7 @@
#include "battle.h"
#include "battle_setup.h"
#include "menu.h"
-#include "battle_dome_cards.h"
+#include "trainer_pokemon_sprites.h"
#include "scanline_effect.h"
#include "new_menu_helpers.h"
#include "item_menu.h"
@@ -1012,7 +1012,7 @@ static void FCSetup_ResetTasksAndSpriteResources(void)
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
- dp13_810BB8C();
+ ResetAllPicSprites();
ResetPaletteFade();
npc_paltag_set_load(0);
gReservedSpritePaletteCount = 7;
@@ -1181,7 +1181,7 @@ static u8 CreatePersonPicSprite(u8 fcPersonIdx)
}
else
{
- spriteId = sub_810C2A4(sFameCheckerTrainerPicIdxs[fcPersonIdx], 1, 0x94, 0x42, 6, 0xFFFF);
+ spriteId = CreateTrainerPicSprite(sFameCheckerTrainerPicIdxs[fcPersonIdx], 1, 0x94, 0x42, 6, 0xFFFF);
}
gSprites[spriteId].callback = SpriteCB_FCSpinningPokeball;
if (gSaveBlock1Ptr->fameChecker[fcPersonIdx].pickState == FCPICKSTATE_SILHOUETTE)
@@ -1202,7 +1202,7 @@ static void DestroyPersonPicSprite(u8 taskId, u16 who)
)
DestroySprite(&gSprites[data[2]]);
else
- sub_810C2E8(data[2]);
+ FreeAndDestroyTrainerPicSprite(data[2]);
}
static void UpdateIconDescriptionBox(u8 whichText)
diff --git a/src/seagallop.c b/src/seagallop.c
index 585838607..72813f525 100644
--- a/src/seagallop.c
+++ b/src/seagallop.c
@@ -4,7 +4,7 @@
#include "palette.h"
#include "malloc.h"
#include "scanline_effect.h"
-#include "battle_dome_cards.h"
+#include "trainer_pokemon_sprites.h"
#include "window.h"
#include "text_window.h"
#include "sound.h"
@@ -365,7 +365,7 @@ static void ResetAllAssets(void)
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
- dp13_810BB8C();
+ ResetAllPicSprites();
ResetPaletteFade();
FreeAllSpritePalettes();
}
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
new file mode 100644
index 000000000..ecd889d80
--- /dev/null
+++ b/src/trainer_pokemon_sprites.c
@@ -0,0 +1,324 @@
+#include "global.h"
+#include "sprite.h"
+#include "window.h"
+#include "malloc.h"
+#include "constants/species.h"
+#include "palette.h"
+#include "decompress.h"
+#include "trainer_pokemon_sprites.h"
+#include "pokemon.h"
+#include "constants/trainer_classes.h"
+
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+extern const struct CompressedSpriteSheet gMonBackPicTable[];
+extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
+extern const struct CompressedSpriteSheet gTrainerBackPicTable[];
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
+extern const union AnimCmd *const gUnknown_82349BC[];
+extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
+
+// Static type declarations
+
+struct PicData
+{
+ u8 *frames;
+ struct SpriteFrameImage *images;
+ u16 paletteTag;
+ u8 spriteId;
+ u8 active;
+};
+
+// Static RAM declarations
+#define PICS_COUNT 8
+
+static EWRAM_DATA struct SpriteTemplate sCreatingSpriteTemplate = {};
+static EWRAM_DATA struct PicData sSpritePics[PICS_COUNT] = {};
+
+// Static ROM declarations
+
+// .rodata
+
+static const struct PicData gUnknown_8453178 = {};
+
+static const struct OamData gUnknown_8453184 =
+{
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64)
+};
+
+// .text
+
+void DummyPicSpriteCallback(struct Sprite *sprite)
+{
+
+}
+
+bool16 ResetAllPicSprites(void)
+{
+ int i;
+
+ for (i = 0; i < PICS_COUNT; i ++)
+ sSpritePics[i] = gUnknown_8453178;
+
+ return FALSE;
+}
+
+static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer, bool8 ignoreDeoxys)
+{
+ if (!isTrainer)
+ {
+ if (isFrontPic)
+ {
+ if (!ignoreDeoxys)
+ LoadSpecialPokePic(&gMonFrontPicTable[species], dest, species, personality, isFrontPic);
+ else
+ LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], dest, species, personality, isFrontPic);
+ }
+ else
+ {
+ if (!ignoreDeoxys)
+ LoadSpecialPokePic(&gMonBackPicTable[species], dest, species, personality, isFrontPic);
+ else
+ LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], dest, species, personality, isFrontPic);
+ }
+ }
+ else
+ {
+ if (isFrontPic)
+ DecompressPicFromTable(&gTrainerFrontPicTable[species], dest, species);
+ else
+ DecompressPicFromTable(&gTrainerBackPicTable[species], dest, species);
+ }
+ return FALSE;
+}
+
+static bool16 DecompressPic_HandleDeoxys(u16 species, u32 personality, bool8 isFrontPic, u8 *dest, bool8 isTrainer)
+{
+ return DecompressPic(species, personality, isFrontPic, dest, isTrainer, FALSE);
+}
+
+void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer)
+{
+ if (!isTrainer)
+ {
+ if (paletteTag == 0xFFFF)
+ {
+ sCreatingSpriteTemplate.paletteTag = 0xFFFF;
+ LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x100 + paletteSlot * 0x10, 0x20);
+ }
+ else
+ {
+ sCreatingSpriteTemplate.paletteTag = paletteTag;
+ LoadCompressedObjectPalette(GetMonSpritePalStructFromOtIdPersonality(species, otId, personality));
+ }
+ }
+ else
+ {
+ if (paletteTag == 0xFFFF)
+ {
+ sCreatingSpriteTemplate.paletteTag = 0xFFFF;
+ LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, 0x100 + paletteSlot * 0x10, 0x20);
+ }
+ else
+ {
+ sCreatingSpriteTemplate.paletteTag = paletteTag;
+ LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[species]);
+ }
+ }
+}
+
+void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer)
+{
+ if (!isTrainer)
+ LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), paletteSlot * 0x10, 0x20);
+ else
+ LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, paletteSlot * 0x10, 0x20);
+}
+
+void AssignSpriteAnimsTable(bool8 isTrainer)
+{
+ if (!isTrainer)
+ sCreatingSpriteTemplate.anims = gUnknown_82349BC;
+ else
+ sCreatingSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[0];
+}
+
+u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer, bool8 ignoreDeoxys)
+{
+ u8 i;
+ u8 *framePics;
+ struct SpriteFrameImage *images;
+ int j;
+ u8 spriteId;
+
+ for (i = 0; i < PICS_COUNT; i ++)
+ {
+ if (!sSpritePics[i].active)
+ {
+ break;
+ }
+ }
+ if (i == PICS_COUNT)
+ {
+ return 0xFFFF;
+ }
+ framePics = Alloc(4 * 0x800);
+ if (!framePics)
+ {
+ return 0xFFFF;
+ }
+ images = Alloc(4 * sizeof(struct SpriteFrameImage));
+ if (!images)
+ {
+ Free(framePics);
+ return 0xFFFF;
+ }
+ if (DecompressPic(species, personality, isFrontPic, framePics, isTrainer, ignoreDeoxys))
+ {
+ // debug trap?
+ return 0xFFFF;
+ }
+ for (j = 0; j < 4; j ++)
+ {
+ images[j].data = framePics + 0x800 * j;
+ images[j].size = 0x800;
+ }
+ sCreatingSpriteTemplate.tileTag = 0xFFFF;
+ sCreatingSpriteTemplate.oam = &gUnknown_8453184;
+ AssignSpriteAnimsTable(isTrainer);
+ sCreatingSpriteTemplate.images = images;
+ sCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sCreatingSpriteTemplate.callback = DummyPicSpriteCallback;
+ LoadPicPaletteByTagOrSlot(species, otId, personality, paletteSlot, paletteTag, isTrainer);
+ spriteId = CreateSprite(&sCreatingSpriteTemplate, x, y, 0);
+ if (paletteTag == 0xFFFF)
+ {
+ gSprites[spriteId].oam.paletteNum = paletteSlot;
+ }
+ sSpritePics[i].frames = framePics;
+ sSpritePics[i].images = images;
+ sSpritePics[i].paletteTag = paletteTag;
+ sSpritePics[i].spriteId = spriteId;
+ sSpritePics[i].active = TRUE;
+ return spriteId;
+}
+
+u16 CreatePicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer)
+{
+ return CreatePicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, isTrainer, FALSE);
+}
+
+u16 FreeAndDestroyPicSpriteInternal(u16 spriteId)
+{
+ u8 i;
+ u8 *framePics;
+ struct SpriteFrameImage *images;
+
+ for (i = 0; i < PICS_COUNT; i ++)
+ {
+ if (sSpritePics[i].spriteId == spriteId)
+ {
+ break;
+ }
+ }
+ if (i == PICS_COUNT)
+ {
+ return 0xFFFF;
+ }
+ framePics = sSpritePics[i].frames;
+ images = sSpritePics[i].images;
+ if (sSpritePics[i].paletteTag != 0xFFFF)
+ {
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
+ }
+ DestroySprite(&gSprites[spriteId]);
+ Free(framePics);
+ Free(images);
+ sSpritePics[i] = gUnknown_8453178;
+ return 0;
+}
+
+u16 sub_810C050(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer)
+{
+ if (DecompressPic_HandleDeoxys(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE))
+ {
+ return 0xFFFF;
+ }
+ LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer);
+ return 0;
+}
+
+u16 sub_810C0C0(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId, bool8 isTrainer)
+{
+ u8 *framePics;
+
+ framePics = Alloc(4 * 0x800);
+ if (framePics && !DecompressPic_HandleDeoxys(species, personality, isFrontPic, framePics, isTrainer))
+ {
+ BlitBitmapRectToWindow(windowId, framePics, 0, 0, 0x40, 0x40, destX, destY, 0x40, 0x40);
+ LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer);
+ Free(framePics);
+ return 0;
+ }
+ return 0xFFFF;
+}
+
+u16 CreateMonPicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys)
+{
+ return CreatePicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE, ignoreDeoxys);
+}
+
+u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
+{
+ return CreateMonPicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE);
+}
+
+u16 FreeAndDestroyMonPicSprite(u16 spriteId)
+{
+ return FreeAndDestroyPicSpriteInternal(spriteId);
+}
+
+u16 sub_810C228(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId)
+{
+ return sub_810C0C0(species, otId, personality, isFrontPic, 0, 0, paletteSlot, windowId, FALSE);
+}
+
+u16 sub_810C25C(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId)
+{
+ return sub_810C0C0(species, otId, personality, isFrontPic, destX, destY, paletteSlot, windowId, FALSE);
+}
+
+u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag)
+{
+ return CreatePicSprite_HandleDeoxys(species, 0, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE);
+}
+
+u16 FreeAndDestroyTrainerPicSprite(u16 spriteId)
+{
+ return FreeAndDestroyPicSpriteInternal(spriteId);
+}
+
+u16 sub_810C2FC(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId)
+{
+ return sub_810C050(species, 0, 0, isFrontPic, paletteSlot, windowId, TRUE);
+}
+
+u16 sub_810C330(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId)
+{
+ return sub_810C0C0(species, 0, 0, isFrontPic, destX, destY, paletteSlot, windowId, TRUE);
+}
+
+u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass)
+{
+ if (getClass == TRUE)
+ {
+ switch (gender)
+ {
+ default:
+ return gFacilityClassToPicIndex[0x87];
+ case MALE:
+ return gFacilityClassToPicIndex[0x86];
+ }
+ }
+ return gender;
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index f301d9cc4..f61ca9aa0 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1347,12 +1347,9 @@ gSpecialVar_ItemId: @ 203AD30
.include "src/bag.o"
.align 2
-gUnknown_203AD40: @ 203AD40
- .space 0x18
-
-gUnknown_203AD58: @ 203AD58
- .space 0x60
+ .include "src/trainer_pokemon_sprites.o"
+ .align 2
.include "src/vs_seeker.o"
gUnknown_203ADBC: @ 203ADBC