summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_1.s2
-rw-r--r--asm/battle_anim.s4
-rw-r--r--asm/battle_anim_special.s12
-rw-r--r--asm/battle_anim_status_effects.s4
-rw-r--r--asm/battle_gfx_sfx_util.s36
-rw-r--r--asm/battle_interface.s2
-rw-r--r--asm/berry_crush_3.s2
-rw-r--r--asm/berry_pouch.s4
-rw-r--r--asm/credits.s14
-rw-r--r--asm/decompress.s887
-rw-r--r--asm/evolution_graphics.s2
-rw-r--r--asm/field_effect.s4
-rw-r--r--asm/hall_of_fame.s4
-rw-r--r--asm/intro.s4
-rw-r--r--asm/item_menu.s8
-rw-r--r--asm/link_rfu.s2
-rw-r--r--asm/link_rfu_2.s2
-rw-r--r--asm/menu_indicators.s6
-rw-r--r--asm/party_menu.s10
-rw-r--r--asm/pokeball.s12
-rw-r--r--asm/pokedex_area_markers.s2
-rw-r--r--asm/pokemon_jump.s2
-rw-r--r--asm/pokemon_jump_2.s6
-rw-r--r--asm/pokemon_special_anim.s8
-rw-r--r--asm/pokemon_storage_system.s4
-rw-r--r--asm/slot_machine.s2
-rw-r--r--asm/smokescreen.s4
-rw-r--r--asm/title_screen.s2
-rw-r--r--asm/trade.s8
-rw-r--r--asm/union_room_chat.s2
-rw-r--r--include/decompress.h19
-rw-r--r--ld_script.txt2
-rw-r--r--src/daycare.c4
-rw-r--r--src/decompress.c664
-rw-r--r--src/item_menu_icons.c4
-rw-r--r--src/item_pc.c4
-rw-r--r--src/mevent_8145654.c2
-rw-r--r--src/oak_speech.c10
-rw-r--r--src/tm_case.c2
-rw-r--r--src/trainer_pokemon_sprites.c4
-rw-r--r--src/unk_815C980.c2
-rw-r--r--src/unk_815F138.c2
42 files changed, 776 insertions, 1004 deletions
diff --git a/asm/battle_1.s b/asm/battle_1.s
index 753d31a20..310d1a791 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -1197,7 +1197,7 @@ sub_800FAE0: @ 800FAE0
ldr r0, _0800FB8C @ =gBattle_BG2_Y
strh r1, [r0]
ldr r0, _0800FB90 @ =gUnknown_8248318
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0800FC26
.align 2, 0
_0800FB64: .4byte gBattleTypeFlags
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index 7e698830f..9aa80db64 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -483,11 +483,11 @@ ScriptCmd_loadspritegfx: @ 8072868
lsls r5, r4, 3
ldr r0, _080728B8 @ =gUnknown_8399388
adds r0, r5, r0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080728BC @ =gUnknown_8399C90
adds r5, r0
adds r0, r5, 0
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
ldr r0, [r6]
adds r0, 0x2
str r0, [r6]
diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s
index 704a1e9a7..02a1216c6 100644
--- a/asm/battle_anim_special.s
+++ b/asm/battle_anim_special.s
@@ -3264,10 +3264,10 @@ sub_80F05B4: @ 80F05B4
cmp r0, r1
bne _080F05DA
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080F05E8 @ =gUnknown_840BFA8
adds r0, r5, r0
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
_080F05DA:
pop {r4,r5}
pop {r0}
@@ -5514,9 +5514,9 @@ _080F177E:
cmp r0, r7
bne _080F179E
ldr r0, _080F17E8 @ =gUnknown_83AD350
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080F17EC @ =gUnknown_83ADC58
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
_080F179E:
ldr r5, _080F17F0 @ =sub_80F181C
adds r0, r5, 0
@@ -5941,9 +5941,9 @@ sub_80F1AE0: @ 80F1AE0
lsls r4, 24
lsrs r4, 24
ldr r0, _080F1B08 @ =gUnknown_83AD470
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080F1B0C @ =gUnknown_83ADD78
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
ldr r0, _080F1B10 @ =0x0000281d
bl IndexOfSpritePaletteTag
adds r0, r4, 0
diff --git a/asm/battle_anim_status_effects.s b/asm/battle_anim_status_effects.s
index 5530fd869..b1da74298 100644
--- a/asm/battle_anim_status_effects.s
+++ b/asm/battle_anim_status_effects.s
@@ -26,9 +26,9 @@ sub_8078178: @ 8078178
lsrs r0, 24
mov r8, r0
ldr r0, _08078224 @ =gUnknown_83AD048
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _08078228 @ =gUnknown_83AD950
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
ldr r1, _0807822C @ =gTasks
mov r2, r8
lsls r0, r2, 2
diff --git a/asm/battle_gfx_sfx_util.s b/asm/battle_gfx_sfx_util.s
index efbd89e9e..ba54bafbb 100644
--- a/asm/battle_gfx_sfx_util.s
+++ b/asm/battle_gfx_sfx_util.s
@@ -975,7 +975,7 @@ _08034548:
ldr r1, [r1]
adds r2, r5, 0
adds r3, r4, 0
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
_08034562:
mov r2, r8
lsls r1, r2, 4
@@ -1184,7 +1184,7 @@ sub_80346C4: @ 80346C4
ldr r0, _0803474C @ =gTrainerFrontPicPaletteTable
adds r5, r0
adds r0, r5, 0
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
add sp, 0x8
pop {r3}
mov r8, r3
@@ -1262,9 +1262,9 @@ sub_80347A8: @ 80347A8
cmp r0, 0
bne _080347E0
ldr r0, _080347D8 @ =gUnknown_8260208
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080347DC @ =gUnknown_8260210
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
movs r5, 0x2
b _08034802
.align 2, 0
@@ -1274,16 +1274,16 @@ _080347DC: .4byte gUnknown_8260210
_080347E0:
ldr r4, _08034828 @ =gUnknown_8260218
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
adds r4, 0x8
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r4, _0803482C @ =gUnknown_8260228
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
adds r4, 0x8
adds r0, r4, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
movs r5, 0x4
_08034802:
movs r4, 0
@@ -1296,7 +1296,7 @@ _0803480C:
ldrb r0, [r0]
lsls r0, 3
adds r0, r6
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
@@ -1349,14 +1349,14 @@ _08034864:
cmp r0, 0
beq _08034890
ldr r0, _0803488C @ =gUnknown_8260238
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_08034888: .4byte gBattleTypeFlags
_0803488C: .4byte gUnknown_8260238
_08034890:
ldr r0, _08034898 @ =gUnknown_8260208
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_08034898: .4byte gUnknown_8260208
@@ -1364,7 +1364,7 @@ _0803489C:
cmp r4, 0x3
bne _080348AC
ldr r0, _080348A8 @ =gUnknown_8260210
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_080348A8: .4byte gUnknown_8260210
@@ -1388,7 +1388,7 @@ _080348CC:
cmp r4, 0x2
bne _080348DC
ldr r0, _080348D8 @ =gUnknown_8260218
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_080348D8: .4byte gUnknown_8260218
@@ -1396,7 +1396,7 @@ _080348DC:
cmp r4, 0x3
bne _080348EC
ldr r0, _080348E8 @ =gUnknown_8260220
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_080348E8: .4byte gUnknown_8260220
@@ -1404,7 +1404,7 @@ _080348EC:
cmp r4, 0x4
bne _080348FC
ldr r0, _080348F8 @ =gUnknown_8260228
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_080348F8: .4byte gUnknown_8260228
@@ -1412,7 +1412,7 @@ _080348FC:
cmp r4, 0x5
bne _0803490C
ldr r0, _08034908 @ =gUnknown_8260230
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_08034908: .4byte gUnknown_8260230
@@ -1449,7 +1449,7 @@ _08034944:
lsls r0, 3
ldr r1, _08034954 @ =gUnknown_8260240
adds r0, r1
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
b _0803495A
.align 2, 0
_08034950: .4byte gUnknown_2023BD6
@@ -2911,7 +2911,7 @@ LoadAndCreateEnemyShadowSprites: @ 8035538
mov r7, r8
push {r7}
ldr r0, _08035614 @ =gUnknown_8250A0C
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
movs r0, 0x1
bl GetBattlerAtPosition
adds r5, r0, 0
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
index 393eb4ee6..fa06f684b 100644
--- a/asm/battle_interface.s
+++ b/asm/battle_interface.s
@@ -2381,7 +2381,7 @@ _08048DC4:
bge _08048DB0
mov r6, r10
adds r0, r4, r6
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _08048E4C @ =gUnknown_826049C
adds r0, r4, r0
bl LoadSpriteSheet
diff --git a/asm/berry_crush_3.s b/asm/berry_crush_3.s
index 22c83d3bd..716967e65 100644
--- a/asm/berry_crush_3.s
+++ b/asm/berry_crush_3.s
@@ -2845,7 +2845,7 @@ sub_814ECE0: @ 814ECE0
_0814ECF6:
lsls r0, r5, 3
adds r0, r4
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 568ddb90a..6aaa9ba76 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -498,7 +498,7 @@ _0813D170: .4byte gSaveBlock2Ptr
_0813D174: .4byte gUnknown_8E85BF4
_0813D178:
ldr r0, _0813D18C @ =gUnknown_84644A8
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
_0813D17E:
ldr r1, [r5]
adds r1, r6
@@ -510,7 +510,7 @@ _0813D17E:
_0813D18C: .4byte gUnknown_84644A8
_0813D190:
ldr r0, _0813D1A8 @ =gUnknown_84644B0
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
ldr r0, _0813D1AC @ =gUnknown_203F36C
ldr r0, [r0]
ldr r1, _0813D1B0 @ =0x0000080c
diff --git a/asm/credits.s b/asm/credits.s
index 6317b95f7..e52275e77 100644
--- a/asm/credits.s
+++ b/asm/credits.s
@@ -1987,7 +1987,7 @@ _080F49D8:
ands r1, r3
orrs r1, r2
str r1, [r0, 0x4]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4A1C @ =gUnknown_8410E10
b _080F4A36
.align 2, 0
@@ -2005,7 +2005,7 @@ _080F4A20:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x2]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4A48 @ =gUnknown_8411BF8
_080F4A36:
movs r1, 0xF8
@@ -2025,7 +2025,7 @@ _080F4A4C:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x2]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4ADC @ =gUnknown_84129A0
movs r1, 0xF8
lsls r1, 1
@@ -2107,7 +2107,7 @@ _080F4AFE:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x8]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4B1C @ =gUnknown_8413318
b _080F4B8A
.align 2, 0
@@ -2122,7 +2122,7 @@ _080F4B20:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x8]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4B4C @ =gUnknown_8413318
movs r1, 0xF0
lsls r1, 1
@@ -2144,7 +2144,7 @@ _080F4B54:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x8]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4B70 @ =gUnknown_8413854
b _080F4B8A
.align 2, 0
@@ -2159,7 +2159,7 @@ _080F4B74:
strh r1, [r0, 0x4]
ldrh r1, [r6, 0x8]
strh r1, [r0, 0x6]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F4BF0 @ =gUnknown_8413D98
_080F4B8A:
movs r1, 0xF0
diff --git a/asm/decompress.s b/asm/decompress.s
deleted file mode 100644
index cc38e0df5..000000000
--- a/asm/decompress.s
+++ /dev/null
@@ -1,887 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start LZDecompressWram
-LZDecompressWram: @ 800EBB4
- push {lr}
- bl LZ77UnCompWram
- pop {r0}
- bx r0
- thumb_func_end LZDecompressWram
-
- thumb_func_start LZDecompressVram
-LZDecompressVram: @ 800EBC0
- push {lr}
- bl LZ77UnCompVram
- pop {r0}
- bx r0
- thumb_func_end LZDecompressVram
-
- thumb_func_start LoadCompressedObjectPic
-LoadCompressedObjectPic: @ 800EBCC
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, [r4]
- ldr r5, _0800EBFC @ =gDecompressionBuffer
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- ldrh r0, [r4, 0x4]
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0800EBFC: .4byte gDecompressionBuffer
- thumb_func_end LoadCompressedObjectPic
-
- thumb_func_start LoadCompressedObjectPicOverrideBuffer
-LoadCompressedObjectPicOverrideBuffer: @ 800EC00
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, [r4]
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- ldrh r0, [r4, 0x4]
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end LoadCompressedObjectPicOverrideBuffer
-
- thumb_func_start LoadCompressedObjectPalette
-LoadCompressedObjectPalette: @ 800EC28
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r0, [r5]
- ldr r4, _0800EC54 @ =gDecompressionBuffer
- adds r1, r4, 0
- bl LZ77UnCompWram
- str r4, [sp]
- ldrh r2, [r5, 0x4]
- ldr r1, _0800EC58 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800EC54: .4byte gDecompressionBuffer
-_0800EC58: .4byte 0xffff0000
- thumb_func_end LoadCompressedObjectPalette
-
- thumb_func_start LoadCompressedObjectPaletteOverrideBuffer
-LoadCompressedObjectPaletteOverrideBuffer: @ 800EC5C
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r0, [r5]
- bl LZ77UnCompWram
- str r4, [sp]
- ldrh r2, [r5, 0x4]
- ldr r1, _0800EC88 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800EC88: .4byte 0xffff0000
- thumb_func_end LoadCompressedObjectPaletteOverrideBuffer
-
- thumb_func_start DecompressPicFromTable
-DecompressPicFromTable: @ 800EC8C
- push {r4,r5,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- ble _0800ECAC
- ldr r0, _0800ECA8 @ =gMonFrontPicTable
- ldr r0, [r0]
- bl LZ77UnCompWram
- b _0800ECB4
- .align 2, 0
-_0800ECA8: .4byte gMonFrontPicTable
-_0800ECAC:
- ldr r0, [r3]
- adds r1, r4, 0
- bl LZ77UnCompWram
-_0800ECB4:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_800EDAC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DecompressPicFromTable
-
- thumb_func_start sub_800ECC4
-sub_800ECC4: @ 800ECC4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r2, 3
- ldr r1, _0800ECEC @ =gMonFrontPicTable
- adds r0, r1
- movs r1, 0
- cmp r4, r0
- bne _0800ECDA
- movs r1, 0x1
-_0800ECDA:
- str r1, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl LoadSpecialPokePic
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800ECEC: .4byte gMonFrontPicTable
- thumb_func_end sub_800ECC4
-
- thumb_func_start LoadSpecialPokePic
-LoadSpecialPokePic: @ 800ECF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r7, r2, 0
- adds r5, r3, 0
- ldr r0, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r7, 0xC9
- bne _0800ED6C
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r5
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r5
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r5
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r5
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _0800ED3E
- movs r1, 0xC9
- b _0800ED48
-_0800ED3E:
- movs r2, 0xCE
- lsls r2, 1
- adds r0, r1, r2
- lsls r0, 16
- lsrs r1, r0, 16
-_0800ED48:
- mov r0, r8
- cmp r0, 0
- bne _0800ED5C
- ldr r0, _0800ED58 @ =gMonBackPicTable
- lsls r1, 3
- adds r1, r0
- ldr r0, [r1]
- b _0800ED78
- .align 2, 0
-_0800ED58: .4byte gMonBackPicTable
-_0800ED5C:
- ldr r0, _0800ED68 @ =gMonFrontPicTable
- lsls r1, 3
- adds r1, r0
- ldr r0, [r1]
- b _0800ED78
- .align 2, 0
-_0800ED68: .4byte gMonFrontPicTable
-_0800ED6C:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- ble _0800ED84
- ldr r0, _0800ED80 @ =gMonFrontPicTable
- ldr r0, [r0]
-_0800ED78:
- adds r1, r4, 0
- bl LZ77UnCompWram
- b _0800ED8C
- .align 2, 0
-_0800ED80: .4byte gMonFrontPicTable
-_0800ED84:
- ldr r0, [r6]
- adds r1, r4, 0
- bl LZ77UnCompWram
-_0800ED8C:
- adds r0, r4, 0
- adds r1, r7, 0
- bl sub_800EDAC
- lsls r0, r7, 16
- lsrs r0, 16
- adds r1, r5, 0
- adds r2, r4, 0
- mov r3, r8
- bl DrawSpindaSpots
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end LoadSpecialPokePic
-
- thumb_func_start sub_800EDAC
-sub_800EDAC: @ 800EDAC
- push {lr}
- adds r3, r0, 0
- movs r0, 0xCD
- lsls r0, 1
- cmp r1, r0
- bne _0800EDC6
- movs r1, 0x80
- lsls r1, 4
- adds r0, r3, r1
- ldr r2, _0800EDCC @ =0x04000200
- adds r1, r3, 0
- bl CpuSet
-_0800EDC6:
- pop {r0}
- bx r0
- .align 2, 0
-_0800EDCC: .4byte 0x04000200
- thumb_func_end sub_800EDAC
-
- thumb_func_start sub_800EDD0
-sub_800EDD0: @ 800EDD0
- push {lr}
- ldr r0, [r0]
- bl LZ77UnCompWram
- pop {r0}
- bx r0
- thumb_func_end sub_800EDD0
-
- thumb_func_start sub_800EDDC
-sub_800EDDC: @ 800EDDC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- mov r9, r0
- str r1, [sp]
- str r2, [sp, 0x4]
- adds r5, r3, 0
- movs r0, 0x1
- mov r1, r9
- ands r0, r1
- cmp r0, 0
- bne _0800EDFC
- b _0800EF94
-_0800EDFC:
- asrs r0, r1, 1
- adds r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- movs r0, 0
- ldr r2, [sp]
- cmp r0, r2
- blt _0800EE10
- b _0800F024
-_0800EE10:
- movs r4, 0x8
- subs r1, r4, r1
- str r1, [sp, 0x10]
-_0800EE16:
- movs r7, 0
- adds r0, 0x1
- str r0, [sp, 0x14]
- ldr r0, [sp, 0x10]
- cmp r7, r0
- bge _0800EE92
- ldr r1, [sp, 0x8]
- lsls r1, 8
- str r1, [sp, 0x18]
- movs r2, 0
- mov r10, r2
- mov r0, r9
- movs r4, 0x8
- subs r0, r4, r0
- str r0, [sp, 0xC]
-_0800EE34:
- movs r3, 0
- asrs r0, r7, 1
- adds r1, r7, 0
- movs r2, 0x1
- ands r1, r2
- str r1, [sp, 0x20]
- lsls r0, 8
- mov r8, r0
- mov r12, r5
-_0800EE46:
- lsls r1, r3, 5
- ldr r4, [sp, 0x18]
- adds r0, r5, r4
- adds r0, r1
- mov r1, r8
- adds r2, r0, r1
- mov r1, r12
- add r1, r8
- movs r6, 0xF
-_0800EE58:
- ldr r4, [sp, 0x20]
- cmp r4, 0
- bne _0800EE68
- strb r4, [r1]
- add r4, sp, 0x20
- ldrb r4, [r4]
- strb r4, [r2, 0x10]
- b _0800EE76
-_0800EE68:
- mov r0, r10
- strb r0, [r1, 0x10]
- movs r4, 0x80
- lsls r4, 1
- adds r4, r2, r4
- str r4, [sp, 0x1C]
- strb r0, [r4]
-_0800EE76:
- adds r2, 0x1
- adds r1, 0x1
- subs r6, 0x1
- cmp r6, 0
- bge _0800EE58
- movs r0, 0x20
- add r12, r0
- adds r3, 0x1
- cmp r3, 0x7
- ble _0800EE46
- adds r7, 0x1
- ldr r1, [sp, 0xC]
- cmp r7, r1
- blt _0800EE34
-_0800EE92:
- movs r7, 0
- movs r2, 0
-_0800EE96:
- movs r6, 0
- adds r4, r7, 0x1
- mov r8, r4
- lsls r4, r7, 5
-_0800EE9E:
- adds r0, r6, 0x1
- mov r10, r0
- lsls r1, r6, 8
- adds r0, r1, 0
- adds r0, 0xC0
- adds r0, r5, r0
- adds r0, r4
- adds r1, r5, r1
- adds r1, r4
- movs r3, 0x1F
-_0800EEB2:
- strb r2, [r1]
- strb r2, [r0]
- adds r0, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800EEB2
- mov r6, r10
- cmp r6, 0x7
- ble _0800EE9E
- mov r7, r8
- cmp r7, 0x1
- ble _0800EE96
- mov r1, r9
- cmp r1, 0x5
- bne _0800EED8
- movs r2, 0x90
- lsls r2, 1
- adds r5, r2
-_0800EED8:
- movs r7, 0
- cmp r7, r9
- bge _0800EF6E
-_0800EEDE:
- movs r3, 0
- adds r7, 0x1
- mov r8, r7
- cmp r3, r9
- bge _0800EF4E
-_0800EEE8:
- adds r3, 0x1
- mov r10, r3
- ldr r4, [sp, 0x4]
- adds r4, 0x20
- adds r7, r5, 0
- adds r7, 0x20
- movs r0, 0x12
- adds r0, r5
- mov r12, r0
- ldr r2, [sp, 0x4]
- adds r3, r5, 0
- movs r6, 0x3
-_0800EF00:
- ldrb r0, [r2]
- mov r1, r12
- strb r0, [r1]
- ldrb r0, [r2, 0x1]
- strb r0, [r1, 0x1]
- ldrb r0, [r2, 0x2]
- strb r0, [r1, 0x1E]
- ldrb r0, [r2, 0x3]
- strb r0, [r1, 0x1F]
- movs r0, 0x81
- lsls r0, 1
- adds r1, r3, r0
- ldrb r0, [r2, 0x10]
- strb r0, [r1]
- ldr r0, _0800EF58 @ =0x00000103
- adds r1, r3, r0
- ldrb r0, [r2, 0x11]
- strb r0, [r1]
- movs r0, 0x90
- lsls r0, 1
- adds r1, r3, r0
- ldrb r0, [r2, 0x12]
- strb r0, [r1]
- ldr r0, _0800EF5C @ =0x00000121
- adds r1, r3, r0
- ldrb r0, [r2, 0x13]
- strb r0, [r1]
- movs r1, 0x4
- add r12, r1
- adds r2, 0x4
- adds r3, 0x4
- subs r6, 0x1
- cmp r6, 0
- bge _0800EF00
- str r4, [sp, 0x4]
- adds r5, r7, 0
- mov r3, r10
- cmp r3, r9
- blt _0800EEE8
-_0800EF4E:
- mov r2, r9
- cmp r2, 0x7
- bne _0800EF60
- adds r5, 0x20
- b _0800EF68
- .align 2, 0
-_0800EF58: .4byte 0x00000103
-_0800EF5C: .4byte 0x00000121
-_0800EF60:
- mov r4, r9
- cmp r4, 0x5
- bne _0800EF68
- adds r5, 0x60
-_0800EF68:
- mov r7, r8
- cmp r7, r9
- blt _0800EEDE
-_0800EF6E:
- mov r0, r9
- cmp r0, 0x7
- bne _0800EF7C
- movs r1, 0x80
- lsls r1, 1
- adds r5, r1
- b _0800EF88
-_0800EF7C:
- mov r2, r9
- cmp r2, 0x5
- bne _0800EF88
- movs r4, 0xF0
- lsls r4, 1
- adds r5, r4
-_0800EF88:
- ldr r0, [sp, 0x14]
- ldr r1, [sp]
- cmp r0, r1
- bge _0800EF92
- b _0800EE16
-_0800EF92:
- b _0800F024
-_0800EF94:
- movs r6, 0
- ldr r2, [sp]
- cmp r6, r2
- bge _0800F024
-_0800EF9C:
- adds r6, 0x1
- mov r10, r6
- mov r4, r9
- cmp r4, 0x6
- bne _0800EFB4
- movs r0, 0
- movs r3, 0xFF
-_0800EFAA:
- strb r0, [r5]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800EFAA
-_0800EFB4:
- movs r7, 0
- cmp r7, r9
- bge _0800F008
-_0800EFBA:
- adds r7, 0x1
- mov r8, r7
- mov r1, r9
- lsls r0, r1, 5
- cmp r1, 0x6
- bne _0800EFD4
- movs r1, 0
- movs r3, 0x1F
-_0800EFCA:
- strb r1, [r5]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800EFCA
-_0800EFD4:
- adds r1, r0, 0
- cmp r1, 0
- ble _0800EFEE
- adds r3, r1, 0
-_0800EFDC:
- ldr r2, [sp, 0x4]
- ldrb r0, [r2]
- strb r0, [r5]
- adds r2, 0x1
- str r2, [sp, 0x4]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _0800EFDC
-_0800EFEE:
- mov r4, r9
- cmp r4, 0x6
- bne _0800F002
- movs r0, 0
- movs r3, 0x1F
-_0800EFF8:
- strb r0, [r5]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800EFF8
-_0800F002:
- mov r7, r8
- cmp r7, r9
- blt _0800EFBA
-_0800F008:
- mov r0, r9
- cmp r0, 0x6
- bne _0800F01C
- movs r0, 0
- movs r3, 0xFF
-_0800F012:
- strb r0, [r5]
- adds r5, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _0800F012
-_0800F01C:
- mov r6, r10
- ldr r1, [sp]
- cmp r6, r1
- blt _0800EF9C
-_0800F024:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_800EDDC
-
- thumb_func_start sub_800F034
-sub_800F034: @ 800F034
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, [r4]
- ldr r0, [r0]
- lsrs r0, 8
- bl AllocZeroed
- adds r5, r0, 0
- cmp r5, 0
- beq _0800F06E
- ldr r0, [r4]
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- ldrh r0, [r4, 0x4]
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- adds r0, r5, 0
- bl Free
- movs r0, 0
- b _0800F070
-_0800F06E:
- movs r0, 0x1
-_0800F070:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_800F034
-
- thumb_func_start sub_800F078
-sub_800F078: @ 800F078
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, [r4]
- ldr r0, [r0]
- lsrs r0, 8
- bl AllocZeroed
- adds r5, r0, 0
- cmp r5, 0
- beq _0800F0B8
- ldr r0, [r4]
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r2, [r4, 0x4]
- ldr r1, _0800F0B4 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpritePalette
- adds r0, r5, 0
- bl Free
- movs r0, 0
- b _0800F0BA
- .align 2, 0
-_0800F0B4: .4byte 0xffff0000
-_0800F0B8:
- movs r0, 0x1
-_0800F0BA:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_800F078
-
- thumb_func_start GetDecompressedDataSize
-GetDecompressedDataSize: @ 800F0C4
- sub sp, 0x4
- mov r3, sp
- ldrb r2, [r0, 0x1]
- mov r1, sp
- strb r2, [r1]
- ldrb r1, [r0, 0x2]
- strb r1, [r3, 0x1]
- ldrb r0, [r0, 0x3]
- strb r0, [r3, 0x2]
- movs r0, 0
- strb r0, [r3, 0x3]
- ldr r0, [sp]
- add sp, 0x4
- bx lr
- thumb_func_end GetDecompressedDataSize
-
- thumb_func_start DecompressPicFromTable_DontHandleDeoxys
-DecompressPicFromTable_DontHandleDeoxys: @ 800F0E0
- push {lr}
- adds r3, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r2, r0
- ble _0800F0FC
- ldr r0, _0800F0F8 @ =gMonFrontPicTable
- ldr r0, [r0]
- bl LZ77UnCompWram
- b _0800F102
- .align 2, 0
-_0800F0F8: .4byte gMonFrontPicTable
-_0800F0FC:
- ldr r0, [r3]
- bl LZ77UnCompWram
-_0800F102:
- pop {r0}
- bx r0
- thumb_func_end DecompressPicFromTable_DontHandleDeoxys
-
- thumb_func_start HandleLoadSpecialPokePic_DontHandleDeoxys
-HandleLoadSpecialPokePic_DontHandleDeoxys: @ 800F108
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r2, 3
- ldr r1, _0800F130 @ =gMonFrontPicTable
- adds r0, r1
- movs r1, 0
- cmp r4, r0
- bne _0800F11E
- movs r1, 0x1
-_0800F11E:
- str r1, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl LoadSpecialPokePic_DontHandleDeoxys
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800F130: .4byte gMonFrontPicTable
- thumb_func_end HandleLoadSpecialPokePic_DontHandleDeoxys
-
- thumb_func_start LoadSpecialPokePic_DontHandleDeoxys
-LoadSpecialPokePic_DontHandleDeoxys: @ 800F134
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- adds r4, r3, 0
- ldr r0, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r7, 0xC9
- bne _0800F1B0
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r4
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r4
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r4
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r4
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _0800F182
- movs r1, 0xC9
- b _0800F18C
-_0800F182:
- movs r2, 0xCE
- lsls r2, 1
- adds r0, r1, r2
- lsls r0, 16
- lsrs r1, r0, 16
-_0800F18C:
- mov r0, r8
- cmp r0, 0
- bne _0800F1A0
- ldr r0, _0800F19C @ =gMonBackPicTable
- lsls r1, 3
- adds r1, r0
- ldr r0, [r1]
- b _0800F1BC
- .align 2, 0
-_0800F19C: .4byte gMonBackPicTable
-_0800F1A0:
- ldr r0, _0800F1AC @ =gMonFrontPicTable
- lsls r1, 3
- adds r1, r0
- ldr r0, [r1]
- b _0800F1BC
- .align 2, 0
-_0800F1AC: .4byte gMonFrontPicTable
-_0800F1B0:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- ble _0800F1C8
- ldr r0, _0800F1C4 @ =gMonFrontPicTable
- ldr r0, [r0]
-_0800F1BC:
- adds r1, r5, 0
- bl LZ77UnCompWram
- b _0800F1D0
- .align 2, 0
-_0800F1C4: .4byte gMonFrontPicTable
-_0800F1C8:
- ldr r0, [r6]
- adds r1, r5, 0
- bl LZ77UnCompWram
-_0800F1D0:
- lsls r0, r7, 16
- lsrs r0, 16
- adds r1, r4, 0
- adds r2, r5, 0
- mov r3, r8
- bl DrawSpindaSpots
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end LoadSpecialPokePic_DontHandleDeoxys
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s
index 1dafc92ea..64edbdf7a 100644
--- a/asm/evolution_graphics.s
+++ b/asm/evolution_graphics.s
@@ -573,7 +573,7 @@ _080F5D80: .4byte SpriteCB_PostEvoSparkleSet2
LoadEvoSparkleSpriteAndPal: @ 80F5D84
push {lr}
ldr r0, _080F5D98 @ =gUnknown_841EEC4
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _080F5D9C @ =gUnknown_841EED4
bl LoadSpritePalettes
pop {r0}
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 4b96c7ba6..f833b963a 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -608,12 +608,12 @@ CreateTrainerSprite: @ 8083858
add r8, r4
mov r0, r8
adds r1, r7, 0
- bl LoadCompressedObjectPaletteOverrideBuffer
+ bl LoadCompressedSpritePaletteOverrideBuffer
ldr r0, _080838E4 @ =gTrainerFrontPicTable
adds r4, r0
adds r0, r4, 0
adds r1, r7, 0
- bl LoadCompressedObjectPicOverrideBuffer
+ bl LoadCompressedSpriteSheetOverrideBuffer
mov r1, sp
ldrh r0, [r4, 0x6]
movs r2, 0
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index b7caba0eb..4d861b902 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -3080,9 +3080,9 @@ sub_80F36BC: @ 80F36BC
movs r0, 0x8
strb r0, [r1]
ldr r0, _080F36F0 @ =gUnknown_840C248
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _080F36F4 @ =gUnknown_840C258
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/intro.s b/asm/intro.s
index c0ac0d4d1..4933785df 100644
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -2759,7 +2759,7 @@ sub_80EDC40: @ 80EDC40
ldr r4, _080EDCE4 @ =gUnknown_840BBC0
_080EDC46:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x4
@@ -4823,7 +4823,7 @@ sub_80EEBE4: @ 80EEBE4
ldr r4, _080EEC04 @ =gUnknown_840BEDC
_080EEBEA:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x6
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 9361136ef..001198d95 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -676,20 +676,20 @@ _0810832C: .4byte gSaveBlock2Ptr
_08108330: .4byte gUnknown_83D41E4
_08108334:
ldr r0, _0810833C @ =gUnknown_83D41EC
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
b _08108352
.align 2, 0
_0810833C: .4byte gUnknown_83D41EC
_08108340:
ldr r0, _08108348 @ =gUnknown_83D41F4
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
b _08108352
.align 2, 0
_08108348: .4byte gUnknown_83D41F4
_0810834C:
ldr r0, _08108360 @ =gBagSwapSpriteSheet
_0810834E:
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
_08108352:
ldr r0, _08108364 @ =gUnknown_203AD10
ldr r1, [r0]
@@ -702,7 +702,7 @@ _08108360: .4byte gBagSwapSpriteSheet
_08108364: .4byte gUnknown_203AD10
_08108368:
ldr r0, _08108378 @ =gBagSwapSpritePalette
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
ldr r1, [r4]
movs r0, 0
strb r0, [r1, 0x10]
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index a2b6a20fc..c6918f6ad 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -9465,7 +9465,7 @@ sub_8101A90: @ 8101A90
ldr r4, _08101AC0 @ =gUnknown_843F938
_08101AA2:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x3
diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s
index feb7c886f..2bfeaca50 100644
--- a/asm/link_rfu_2.s
+++ b/asm/link_rfu_2.s
@@ -9525,7 +9525,7 @@ sub_80FCEA8: @ 80FCEA8
cmp r0, r1
bne _080FCEC0
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
_080FCEC0:
ldr r0, _080FCEDC @ =gUnknown_843F27C
bl LoadSpritePalette
diff --git a/asm/menu_indicators.s b/asm/menu_indicators.s
index 28e783731..d7b78b1b2 100644
--- a/asm/menu_indicators.s
+++ b/asm/menu_indicators.s
@@ -180,7 +180,7 @@ AddScrollIndicatorArrowPair: @ 8133A20
orrs r0, r1
str r0, [sp, 0x8]
add r0, sp, 0x4
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldrh r2, [r6, 0xC]
cmp r2, r4
bne _08133A7C
@@ -727,7 +727,7 @@ ListMenuAddRedOutlineCursorObject: @ 8133E38
ands r1, r3
orrs r1, r2
str r1, [r0, 0x4]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldrh r2, [r6, 0x8]
ldr r7, _08133E8C @ =0x0000ffff
cmp r2, r7
@@ -1005,7 +1005,7 @@ ListMenuAddRedArrowCursorObject: @ 8134070
ands r1, r4
orrs r1, r2
str r1, [r0, 0x4]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldrh r2, [r5, 0x8]
cmp r2, r4
bne _081340C4
diff --git a/asm/party_menu.s b/asm/party_menu.s
index a9b503ff3..e56e6958e 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -8013,11 +8013,11 @@ _0812285C: .4byte 0x0000fffc
sub_8122860: @ 8122860
push {lr}
ldr r0, _08122878 @ =gUnknown_845A474
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _0812287C @ =gUnknown_845A4EC
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _08122880 @ =gUnknown_845A47C
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
pop {r0}
bx r0
.align 2, 0
@@ -8164,9 +8164,9 @@ _0812297C: .4byte gSprites
sub_8122980: @ 8122980
push {lr}
ldr r0, _08122994 @ =gUnknown_845A574
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _08122998 @ =gUnknown_845A57C
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/pokeball.s b/asm/pokeball.s
index eace88832..85bfcb620 100644
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -2029,9 +2029,9 @@ CreatePokeballSpriteToReleaseMon: @ 804B908
lsls r0, 24
lsrs r7, r0, 24
ldr r0, _0804B9D4 @ =gUnknown_826056C
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _0804B9D8 @ =gUnknown_82605CC
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
ldr r0, _0804B9DC @ =gUnknown_82606F4
mov r1, r9
mov r2, r10
@@ -2362,9 +2362,9 @@ sub_804BB98: @ 804BB98
lsrs r0, 24
mov r9, r0
ldr r0, _0804BC3C @ =gUnknown_826056C
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _0804BC40 @ =gUnknown_82605CC
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
ldr r0, _0804BC44 @ =gUnknown_82606F4
adds r1, r6, 0
mov r2, r8
@@ -2790,10 +2790,10 @@ LoadBallGfx: @ 804BEF4
cmp r0, r1
bne _0804BF1C
adds r0, r5, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _0804BF58 @ =gUnknown_82605CC
adds r0, r6, r0
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
_0804BF1C:
cmp r4, 0x6
beq _0804BF48
diff --git a/asm/pokedex_area_markers.s b/asm/pokedex_area_markers.s
index 6062b95ee..d6ea7f251 100644
--- a/asm/pokedex_area_markers.s
+++ b/asm/pokedex_area_markers.s
@@ -66,7 +66,7 @@ sub_8134230: @ 8134230
ands r2, r5
orrs r2, r1
str r2, [r0, 0x4]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _081343D0 @ =gUnknown_846341C
mov r3, r8
lsls r3, 4
diff --git a/asm/pokemon_jump.s b/asm/pokemon_jump.s
index c00c08f20..d94a5c8db 100644
--- a/asm/pokemon_jump.s
+++ b/asm/pokemon_jump.s
@@ -170,7 +170,7 @@ sub_81476E0: @ 81476E0
lsls r0, 3
ldr r1, _081477B0 @ =gUnknown_846B42C
adds r0, r1
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
movs r2, 0x8
ldrsh r0, [r4, r2]
lsls r0, 3
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index b9bb431cc..af4b28a27 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -6777,7 +6777,7 @@ sub_814AD6C: @ 814AD6C
ldr r5, _0814ADAC @ =gUnknown_846E0B0
_0814AD74:
adds r0, r5, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r5, 0x8
adds r4, 0x1
cmp r4, 0x4
@@ -6881,7 +6881,7 @@ _0814AE2A:
adds r0, r1
ldr r3, [r7, 0x8]
mov r1, r8
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
mov r3, r8
str r3, [sp, 0x18]
adds r4, r6, 0
@@ -6903,7 +6903,7 @@ _0814AE2A:
ands r1, r5
orrs r1, r4
str r1, [r0, 0x4]
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
mov r0, r8
bl Free
mov r0, r10
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s
index 6b09d701e..31e3752d3 100644
--- a/asm/pokemon_special_anim.s
+++ b/asm/pokemon_special_anim.s
@@ -2446,7 +2446,7 @@ _0811D884:
adds r1, r6, 0
adds r2, r7, 0
mov r3, r10
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
mov r0, r8
bl GetMonFrontSpritePal
adds r1, r4, 0
@@ -3699,7 +3699,7 @@ sub_811E204: @ 811E204
sub sp, 0x8
mov r10, r0
ldr r0, _0811E2E0 @ =gUnknown_84599B8
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _0811E2E4 @ =gUnknown_84599C0
bl LoadSpritePalette
movs r0, 0
@@ -4148,7 +4148,7 @@ _0811E582:
sub_811E588: @ 811E588
push {lr}
ldr r0, _0811E59C @ =gUnknown_84599C8
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
ldr r0, _0811E5A0 @ =gUnknown_84599D0
bl LoadSpritePalette
pop {r0}
@@ -4216,7 +4216,7 @@ sub_811E5B8: @ 811E5B8
str r1, [r4]
mov r1, r9
strh r1, [r4, 0x4]
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r0, r4, 0
bl LoadSpritePalette
ldr r0, _0811E674 @ =sub_811E694
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 8be5b791f..0c9536a8e 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -7233,7 +7233,7 @@ sub_808F3F8: @ 808F3F8
adds r0, r1
ldr r5, _0808F474 @ =0x000022bc
adds r1, r4, r5
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
ldr r1, [r6]
ldr r2, _0808F478 @ =0x00000cd8
adds r0, r1, r2
@@ -20609,7 +20609,7 @@ _08095B9C:
orrs r0, r1
str r0, [r2, 0x4]
mov r0, r9
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
mov r4, r9
ldrh r0, [r4, 0x6]
bl GetSpriteTileStartByTag
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index c0c8cc397..b355fed51 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -2689,7 +2689,7 @@ sub_8140C0C: @ 8140C0C
ldr r4, _08140C3C @ =gUnknown_84655B0
_08140C12:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x2
diff --git a/asm/smokescreen.s b/asm/smokescreen.s
index 1768a5ea4..2a350c911 100644
--- a/asm/smokescreen.s
+++ b/asm/smokescreen.s
@@ -26,9 +26,9 @@ sub_804A76C: @ 804A76C
cmp r0, r1
bne _0804A79E
adds r0, r5, 0
- bl sub_800F034
+ bl LoadCompressedSpriteSheetUsingHeap
ldr r0, _0804A8AC @ =gUnknown_8250994
- bl sub_800F078
+ bl LoadCompressedSpritePaletteUsingHeap
_0804A79E:
ldr r0, _0804A8B0 @ =sub_804A8C0
bl CreateInvisibleSpriteWithCallback
diff --git a/asm/title_screen.s b/asm/title_screen.s
index f7f63287c..a71921f43 100644
--- a/asm/title_screen.s
+++ b/asm/title_screen.s
@@ -1704,7 +1704,7 @@ sub_8079708: @ 8079708
ldr r4, _08079728 @ =gUnknown_83BFB9C
_0807970E:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x3
diff --git a/asm/trade.s b/asm/trade.s
index b4bfcd30f..3e8dc9fc1 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -7292,7 +7292,7 @@ _08050040:
ldr r1, [r1, 0x8]
adds r2, r5, 0
adds r3, r7, 0
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
movs r4, 0
b _0805009A
.align 2, 0
@@ -7316,7 +7316,7 @@ _0805007C:
_0805009A:
mov r0, r8
bl GetMonSpritePalStruct
- bl LoadCompressedObjectPalette
+ bl LoadCompressedSpritePalette
ldr r0, _080500C4 @ =gUnknown_2031DAC
ldr r1, [r0]
adds r0, r1, 0
@@ -10813,7 +10813,7 @@ _08052042:
ldr r1, [r1]
ldr r1, [r1, 0x10]
ldr r3, [r3, 0x6C]
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
ldr r1, [r7]
b _080522AC
.align 2, 0
@@ -13038,7 +13038,7 @@ _0805349E:
ldr r1, [r1]
ldr r1, [r1, 0x10]
ldr r3, [r3, 0x6C]
- bl sub_800ECC4
+ bl HandleLoadSpecialPokePic
ldr r1, [r7]
b _08053708
.align 2, 0
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index 758383cc7..137ee69c1 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -5510,7 +5510,7 @@ sub_812AE70: @ 812AE70
ldr r4, _0812AE9C @ =gUnknown_845AF58
_0812AE76:
adds r0, r4, 0
- bl LoadCompressedObjectPic
+ bl LoadCompressedSpriteSheet
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x4
diff --git a/include/decompress.h b/include/decompress.h
index 19b507525..03080fe48 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -10,15 +10,13 @@ extern u8 gDecompressionBuffer[0x4000];
void LZDecompressWram(const void *src, void *dest);
void LZDecompressVram(const void *src, void *dest);
-u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src);
-void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer);
-bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src);
+u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src);
+void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer);
+bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet* src);
-void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src);
-void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
-bool8 LoadCompressedObjectPaletteUsingHeap(const struct CompressedSpritePalette *src);
-
-bool8 sub_800F078(const struct CompressedSpritePalette *src);
+void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src);
+void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
+bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src);
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
@@ -27,15 +25,12 @@ void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet
void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void HandleLoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
-void sub_800ECC4(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
-u32 sub_8034974(const u8 *ptr);
-
-void sub_800F034(const struct CompressedSpriteSheet *src);
u32 GetDecompressedDataSize(const u8 *ptr);
#endif // GUARD_DECOMPRESS_H
diff --git a/ld_script.txt b/ld_script.txt
index 40fc967b3..5d1a151f6 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -64,7 +64,7 @@ SECTIONS {
src/multiboot.o(.text);
asm/main_menu.o(.text);
asm/battle_controllers.o(.text);
- asm/decompress.o(.text);
+ src/decompress.o(.text);
asm/battle_1.o(.text);
asm/battle_2.o(.text);
asm/battle_util.o(.text);
diff --git a/src/daycare.c b/src/daycare.c
index cc98da28e..35670465a 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1768,8 +1768,8 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc
{
u16 species = GetMonData(mon, MON_DATA_SPECIES);
u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
- sub_800ECC4(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid);
- LoadCompressedObjectPalette(GetMonSpritePalStruct(mon));
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[(a0 * 2) + 1], species, pid);
+ LoadCompressedSpritePalette(GetMonSpritePalStruct(mon));
*speciesLoc = species;
}
break;
diff --git a/src/decompress.c b/src/decompress.c
new file mode 100644
index 000000000..ddc86b5b7
--- /dev/null
+++ b/src/decompress.c
@@ -0,0 +1,664 @@
+#include "global.h"
+#include "malloc.h"
+#include "decompress.h"
+#include "pokemon.h"
+#include "text.h"
+#include "constants/species.h"
+
+extern const struct CompressedSpriteSheet gMonFrontPicTable[];
+extern const struct CompressedSpriteSheet gMonBackPicTable[];
+
+static void DuplicateDeoxysTiles(void *pointer, s32 species);
+
+void LZDecompressWram(const void *src, void *dest)
+{
+ LZ77UnCompWram(src, dest);
+}
+
+void LZDecompressVram(const void *src, void *dest)
+{
+ LZ77UnCompVram(src, dest);
+}
+
+u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src)
+{
+ struct SpriteSheet dest;
+
+ LZ77UnCompWram(src->data, gDecompressionBuffer);
+ dest.data = gDecompressionBuffer;
+ dest.size = src->size;
+ dest.tag = src->tag;
+ return LoadSpriteSheet(&dest);
+}
+
+void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer)
+{
+ struct SpriteSheet dest;
+
+ LZ77UnCompWram(src->data, buffer);
+ dest.data = buffer;
+ dest.size = src->size;
+ dest.tag = src->tag;
+ LoadSpriteSheet(&dest);
+}
+
+void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src)
+{
+ struct SpritePalette dest;
+
+ LZ77UnCompWram(src->data, gDecompressionBuffer);
+ dest.data = (void*) gDecompressionBuffer;
+ dest.tag = src->tag;
+ LoadSpritePalette(&dest);
+}
+
+void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer)
+{
+ struct SpritePalette dest;
+
+ LZ77UnCompWram(a->data, buffer);
+ dest.data = buffer;
+ dest.tag = a->tag;
+ LoadSpritePalette(&dest);
+}
+
+void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species)
+{
+ if (species > NUM_SPECIES)
+ LZ77UnCompWram(gMonFrontPicTable[0].data, buffer);
+ else
+ LZ77UnCompWram(src->data, buffer);
+ DuplicateDeoxysTiles(buffer, species);
+}
+
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality)
+{
+ bool8 isFrontPic;
+
+ if (src == &gMonFrontPicTable[species])
+ isFrontPic = TRUE; // frontPic
+ else
+ isFrontPic = FALSE; // backPic
+
+ LoadSpecialPokePic(src, dest, species, personality, isFrontPic);
+}
+
+void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic)
+{
+ if (species == SPECIES_UNOWN)
+ {
+ u16 i = (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 3)) % 0x1C;
+
+ // The other Unowns are separate from Unown A.
+ if (i == 0)
+ i = SPECIES_UNOWN;
+ else
+ i += SPECIES_UNOWN_B - 1;
+
+ if (!isFrontPic)
+ LZ77UnCompWram(gMonBackPicTable[i].data, dest);
+ else
+ LZ77UnCompWram(gMonFrontPicTable[i].data, dest);
+ }
+ else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
+ LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
+ else
+ LZ77UnCompWram(src->data, dest);
+
+ DuplicateDeoxysTiles(dest, species);
+ DrawSpindaSpots(species, personality, dest, isFrontPic);
+}
+
+static void DuplicateDeoxysTiles(void *pointer, s32 species)
+{
+ if (species == SPECIES_DEOXYS)
+ CpuCopy32(pointer + 0x800, pointer, 0x800);
+}
+
+static void Unused_LZDecompressWramIndirect(const void **src, void *dest)
+{
+ LZ77UnCompWram(*src, dest);
+}
+
+#ifdef NONMATCHING
+static void sub_800EDDC(s32 a0, s32 a1, const u8 *a2, u8 *a3)
+{
+ u8 *v1, *v2;
+ int i, j, k, l;
+
+ if (a0 & 1)
+ {
+ u8 v40 = ((a0 >> 1) + 4);
+ for (i = 0; i < a1; ++i)
+ {
+ // this nested loop failed to match
+ for (j = 0; j < 8 - a0; ++j)
+ {
+ for (k = 0; k < 8; ++k)
+ {
+
+ v1 = a3 + 0x100 * v40 + 0x100 * (j >> 1) + 0x20 * k;
+ v2 = a3 + 0x20 * k + 0x100 * (j >> 1);
+ for (l = 0; l < 0x10; ++l)
+ {
+ if (!(j & 1))
+ {
+ v2[0] = j & 1;
+ v1[16] = 0;
+// a3[0x100 * (j / 2) + 0x20 * k + l] = 0;
+// a3[0x100 * v40 + 0x100 * (j / 2) + 0x20 * k + l + 0x10] = 0;
+ }
+ else
+ {
+ v2[16] = 0;
+ v1[0x100] = 0;
+// a3[0x100 * (j / 2) + 0x20 * k + l + 0x10] = 0;
+// a3[0x100 * v40 + 0x100 * (j / 2) + 0x20 * k + l + 0x100] = 0;
+ }
+ ++v1;
+ ++v2; // this should be generated if you write stuff inside operator [] instead of declaring v1/v2
+ }
+ }
+ }
+ for (j = 0; j < 2; ++j)
+ {
+ for (k = 0; k < 8; ++k)
+ {
+ for (l = 0; l < 0x20; ++l)
+ {
+ a3[0x100 * k + 0x20 * j + l] = 0;
+ a3[0x100 * k + 0xC0 + 0x20 * j + l] = 0;
+ }
+ }
+ }
+ if (a0 == 5)
+ a3 += 0x120;
+ for (j = 0; j < a0; ++j)
+ {
+ for (k = 0; k < a0; ++k)
+ {
+ for (l = 0; l < 4; ++l)
+ {
+ a3[0x12 + 4 * l] = a2[0 + 4 * l];
+ a3[0x13 + 4 * l] = a2[1 + 4 * l];
+ a3[0x12 + 0x1E + 4 * l] = a2[2 + 4 * l];
+ a3[0x12 + 0x1F + 4 * l] = a2[3 + 4 * l];
+ a3[0x102 + 4 * l] = a2[0x10 + 4 * l];
+ a3[0x103 + 4 * l] = a2[0x11 + 4 * l];
+ a3[0x120 + 4 * l] = a2[0x12 + 4 * l];
+ a3[0x121 + 4 * l] = a2[0x13 + 4 * l];
+ }
+ a2 += 0x20;
+ a3 += 0x20;
+ }
+ if (a0 == 7)
+ a3 += 0x20;
+ else if (a0 == 5)
+ a3 += 0x60;
+ }
+ if (a0 == 7)
+ a3 += 0x100;
+ else if (a0 == 5)
+ a3 += 0x1E0;
+ }
+ }
+ else
+ {
+ for (i = 0; i < a1; ++i)
+ {
+ if (a0 == 6)
+ for (j = 0; j < 0x100; ++j)
+ *a3++ = 0;
+ for (j = 0; j < a0; ++j)
+ {
+ if (a0 == 6)
+ for (k = 0; k < 0x20; ++k)
+ *a3++ = 0;
+ for (k = 0; k < 0x20 * a0; ++k)
+ *a3++ = *a2++;
+ if (a0 == 6)
+ for (k = 0; k < 0x20; ++k)
+ *a3++ = 0;
+ }
+ if (a0 == 6)
+ for (j = 0; j < 0x100; ++j)
+ *a3++ = 0;
+ }
+ }
+}
+#else
+NAKED
+static void sub_800EDDC(s32 a0, s32 a1, const u8 *a2, u8 *a3)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x24\n\
+ mov r9, r0\n\
+ str r1, [sp]\n\
+ str r2, [sp, 0x4]\n\
+ adds r5, r3, 0\n\
+ movs r0, 0x1\n\
+ mov r1, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0800EDFC\n\
+ b _0800EF94\n\
+ _0800EDFC:\n\
+ asrs r0, r1, 1\n\
+ adds r0, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x8]\n\
+ movs r0, 0\n\
+ ldr r2, [sp]\n\
+ cmp r0, r2\n\
+ blt _0800EE10\n\
+ b _0800F024\n\
+ _0800EE10:\n\
+ movs r4, 0x8\n\
+ subs r1, r4, r1\n\
+ str r1, [sp, 0x10]\n\
+ _0800EE16:\n\
+ movs r7, 0\n\
+ adds r0, 0x1\n\
+ str r0, [sp, 0x14]\n\
+ ldr r0, [sp, 0x10]\n\
+ cmp r7, r0\n\
+ bge _0800EE92\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r1, 8\n\
+ str r1, [sp, 0x18]\n\
+ movs r2, 0\n\
+ mov r10, r2\n\
+ mov r0, r9\n\
+ movs r4, 0x8\n\
+ subs r0, r4, r0\n\
+ str r0, [sp, 0xC]\n\
+ _0800EE34:\n\
+ movs r3, 0\n\
+ asrs r0, r7, 1\n\
+ adds r1, r7, 0\n\
+ movs r2, 0x1\n\
+ ands r1, r2\n\
+ str r1, [sp, 0x20]\n\
+ lsls r0, 8\n\
+ mov r8, r0\n\
+ mov r12, r5\n\
+ _0800EE46:\n\
+ lsls r1, r3, 5\n\
+ ldr r4, [sp, 0x18]\n\
+ adds r0, r5, r4\n\
+ adds r0, r1\n\
+ mov r1, r8\n\
+ adds r2, r0, r1\n\
+ mov r1, r12\n\
+ add r1, r8\n\
+ movs r6, 0xF\n\
+ _0800EE58:\n\
+ ldr r4, [sp, 0x20]\n\
+ cmp r4, 0\n\
+ bne _0800EE68\n\
+ strb r4, [r1]\n\
+ add r4, sp, 0x20\n\
+ ldrb r4, [r4]\n\
+ strb r4, [r2, 0x10]\n\
+ b _0800EE76\n\
+ _0800EE68:\n\
+ mov r0, r10\n\
+ strb r0, [r1, 0x10]\n\
+ movs r4, 0x80\n\
+ lsls r4, 1\n\
+ adds r4, r2, r4\n\
+ str r4, [sp, 0x1C]\n\
+ strb r0, [r4]\n\
+ _0800EE76:\n\
+ adds r2, 0x1\n\
+ adds r1, 0x1\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _0800EE58\n\
+ movs r0, 0x20\n\
+ add r12, r0\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x7\n\
+ ble _0800EE46\n\
+ adds r7, 0x1\n\
+ ldr r1, [sp, 0xC]\n\
+ cmp r7, r1\n\
+ blt _0800EE34\n\
+ _0800EE92:\n\
+ movs r7, 0\n\
+ movs r2, 0\n\
+ _0800EE96:\n\
+ movs r6, 0\n\
+ adds r4, r7, 0x1\n\
+ mov r8, r4\n\
+ lsls r4, r7, 5\n\
+ _0800EE9E:\n\
+ adds r0, r6, 0x1\n\
+ mov r10, r0\n\
+ lsls r1, r6, 8\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xC0\n\
+ adds r0, r5, r0\n\
+ adds r0, r4\n\
+ adds r1, r5, r1\n\
+ adds r1, r4\n\
+ movs r3, 0x1F\n\
+ _0800EEB2:\n\
+ strb r2, [r1]\n\
+ strb r2, [r0]\n\
+ adds r0, 0x1\n\
+ adds r1, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800EEB2\n\
+ mov r6, r10\n\
+ cmp r6, 0x7\n\
+ ble _0800EE9E\n\
+ mov r7, r8\n\
+ cmp r7, 0x1\n\
+ ble _0800EE96\n\
+ mov r1, r9\n\
+ cmp r1, 0x5\n\
+ bne _0800EED8\n\
+ movs r2, 0x90\n\
+ lsls r2, 1\n\
+ adds r5, r2\n\
+ _0800EED8:\n\
+ movs r7, 0\n\
+ cmp r7, r9\n\
+ bge _0800EF6E\n\
+ _0800EEDE:\n\
+ movs r3, 0\n\
+ adds r7, 0x1\n\
+ mov r8, r7\n\
+ cmp r3, r9\n\
+ bge _0800EF4E\n\
+ _0800EEE8:\n\
+ adds r3, 0x1\n\
+ mov r10, r3\n\
+ ldr r4, [sp, 0x4]\n\
+ adds r4, 0x20\n\
+ adds r7, r5, 0\n\
+ adds r7, 0x20\n\
+ movs r0, 0x12\n\
+ adds r0, r5\n\
+ mov r12, r0\n\
+ ldr r2, [sp, 0x4]\n\
+ adds r3, r5, 0\n\
+ movs r6, 0x3\n\
+ _0800EF00:\n\
+ ldrb r0, [r2]\n\
+ mov r1, r12\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2, 0x1]\n\
+ strb r0, [r1, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ strb r0, [r1, 0x1E]\n\
+ ldrb r0, [r2, 0x3]\n\
+ strb r0, [r1, 0x1F]\n\
+ movs r0, 0x81\n\
+ lsls r0, 1\n\
+ adds r1, r3, r0\n\
+ ldrb r0, [r2, 0x10]\n\
+ strb r0, [r1]\n\
+ ldr r0, _0800EF58 @ =0x00000103\n\
+ adds r1, r3, r0\n\
+ ldrb r0, [r2, 0x11]\n\
+ strb r0, [r1]\n\
+ movs r0, 0x90\n\
+ lsls r0, 1\n\
+ adds r1, r3, r0\n\
+ ldrb r0, [r2, 0x12]\n\
+ strb r0, [r1]\n\
+ ldr r0, _0800EF5C @ =0x00000121\n\
+ adds r1, r3, r0\n\
+ ldrb r0, [r2, 0x13]\n\
+ strb r0, [r1]\n\
+ movs r1, 0x4\n\
+ add r12, r1\n\
+ adds r2, 0x4\n\
+ adds r3, 0x4\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _0800EF00\n\
+ str r4, [sp, 0x4]\n\
+ adds r5, r7, 0\n\
+ mov r3, r10\n\
+ cmp r3, r9\n\
+ blt _0800EEE8\n\
+ _0800EF4E:\n\
+ mov r2, r9\n\
+ cmp r2, 0x7\n\
+ bne _0800EF60\n\
+ adds r5, 0x20\n\
+ b _0800EF68\n\
+ .align 2, 0\n\
+ _0800EF58: .4byte 0x00000103\n\
+ _0800EF5C: .4byte 0x00000121\n\
+ _0800EF60:\n\
+ mov r4, r9\n\
+ cmp r4, 0x5\n\
+ bne _0800EF68\n\
+ adds r5, 0x60\n\
+ _0800EF68:\n\
+ mov r7, r8\n\
+ cmp r7, r9\n\
+ blt _0800EEDE\n\
+ _0800EF6E:\n\
+ mov r0, r9\n\
+ cmp r0, 0x7\n\
+ bne _0800EF7C\n\
+ movs r1, 0x80\n\
+ lsls r1, 1\n\
+ adds r5, r1\n\
+ b _0800EF88\n\
+ _0800EF7C:\n\
+ mov r2, r9\n\
+ cmp r2, 0x5\n\
+ bne _0800EF88\n\
+ movs r4, 0xF0\n\
+ lsls r4, 1\n\
+ adds r5, r4\n\
+ _0800EF88:\n\
+ ldr r0, [sp, 0x14]\n\
+ ldr r1, [sp]\n\
+ cmp r0, r1\n\
+ bge _0800EF92\n\
+ b _0800EE16\n\
+ _0800EF92:\n\
+ b _0800F024\n\
+ _0800EF94:\n\
+ movs r6, 0\n\
+ ldr r2, [sp]\n\
+ cmp r6, r2\n\
+ bge _0800F024\n\
+ _0800EF9C:\n\
+ adds r6, 0x1\n\
+ mov r10, r6\n\
+ mov r4, r9\n\
+ cmp r4, 0x6\n\
+ bne _0800EFB4\n\
+ movs r0, 0\n\
+ movs r3, 0xFF\n\
+ _0800EFAA:\n\
+ strb r0, [r5]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800EFAA\n\
+ _0800EFB4:\n\
+ movs r7, 0\n\
+ cmp r7, r9\n\
+ bge _0800F008\n\
+ _0800EFBA:\n\
+ adds r7, 0x1\n\
+ mov r8, r7\n\
+ mov r1, r9\n\
+ lsls r0, r1, 5\n\
+ cmp r1, 0x6\n\
+ bne _0800EFD4\n\
+ movs r1, 0\n\
+ movs r3, 0x1F\n\
+ _0800EFCA:\n\
+ strb r1, [r5]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800EFCA\n\
+ _0800EFD4:\n\
+ adds r1, r0, 0\n\
+ cmp r1, 0\n\
+ ble _0800EFEE\n\
+ adds r3, r1, 0\n\
+ _0800EFDC:\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r5]\n\
+ adds r2, 0x1\n\
+ str r2, [sp, 0x4]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bne _0800EFDC\n\
+ _0800EFEE:\n\
+ mov r4, r9\n\
+ cmp r4, 0x6\n\
+ bne _0800F002\n\
+ movs r0, 0\n\
+ movs r3, 0x1F\n\
+ _0800EFF8:\n\
+ strb r0, [r5]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800EFF8\n\
+ _0800F002:\n\
+ mov r7, r8\n\
+ cmp r7, r9\n\
+ blt _0800EFBA\n\
+ _0800F008:\n\
+ mov r0, r9\n\
+ cmp r0, 0x6\n\
+ bne _0800F01C\n\
+ movs r0, 0\n\
+ movs r3, 0xFF\n\
+ _0800F012:\n\
+ strb r0, [r5]\n\
+ adds r5, 0x1\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0800F012\n\
+ _0800F01C:\n\
+ mov r6, r10\n\
+ ldr r1, [sp]\n\
+ cmp r6, r1\n\
+ blt _0800EF9C\n\
+ _0800F024:\n\
+ add sp, 0x24\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ ");
+}
+#endif
+
+bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet* src)
+{
+ struct SpriteSheet dest;
+ void* buffer;
+
+ buffer = AllocZeroed(*((u32*)(&src->data[0])) >> 8);
+ if (!buffer)
+ return TRUE;
+ LZ77UnCompWram(src->data, buffer);
+ dest.data = buffer;
+ dest.size = src->size;
+ dest.tag = src->tag;
+ LoadSpriteSheet(&dest);
+ Free(buffer);
+ return FALSE;
+}
+
+bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src)
+{
+ struct SpritePalette dest;
+ void* buffer;
+
+ buffer = AllocZeroed(*((u32*)(&src->data[0])) >> 8);
+ if (!buffer)
+ return TRUE;
+ LZ77UnCompWram(src->data, buffer);
+ dest.data = buffer;
+ dest.tag = src->tag;
+ LoadSpritePalette(&dest);
+ Free(buffer);
+ return FALSE;
+}
+
+u32 GetDecompressedDataSize(const u8 *ptr)
+{
+ u32 ptr32[1];
+ u8 *ptr8 = (u8 *)ptr32;
+
+ ptr8[0] = ptr[1];
+ ptr8[1] = ptr[2];
+ ptr8[2] = ptr[3];
+ ptr8[3] = 0;
+ return ptr32[0];
+}
+
+void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void* buffer, s32 species)
+{
+ if (species > NUM_SPECIES)
+ LZ77UnCompWram(gMonFrontPicTable[0].data, buffer);
+ else
+ LZ77UnCompWram(src->data, buffer);
+}
+
+void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality)
+{
+ bool8 isFrontPic;
+
+ if (src == &gMonFrontPicTable[species])
+ isFrontPic = TRUE; // frontPic
+ else
+ isFrontPic = FALSE; // backPic
+ LoadSpecialPokePic_DontHandleDeoxys(src, dest, species, personality, isFrontPic);
+}
+
+void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic)
+{
+ if (species == SPECIES_UNOWN)
+ {
+ u16 i = (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 3)) % 0x1C;
+
+ // The other Unowns are separate from Unown A.
+ if (i == 0)
+ i = SPECIES_UNOWN;
+ else
+ i += SPECIES_UNOWN_B - 1;
+ if (!isFrontPic)
+ LZ77UnCompWram(gMonBackPicTable[i].data, dest);
+ else
+ LZ77UnCompWram(gMonFrontPicTable[i].data, dest);
+ }
+ else if (species > NUM_SPECIES) // is species unknown? draw the ? icon
+ {
+ LZ77UnCompWram(gMonFrontPicTable[0].data, dest);
+ }
+ else
+ {
+ LZ77UnCompWram(src->data, dest);
+ }
+ DrawSpindaSpots(species, personality, dest, isFrontPic);
+}
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index a244a1075..0c2c60437 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -683,7 +683,7 @@ u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId)
spritePalette.data = sub_8098974(itemId, 1);
spritePalette.tag = paletteTag;
- LoadCompressedObjectPalette(&spritePalette);
+ LoadCompressedSpritePalette(&spritePalette);
CpuCopy16(&gUnknown_83D427C, &template, sizeof(struct SpriteTemplate));
template.tileTag = tilesTag;
@@ -714,7 +714,7 @@ u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origT
spritePalette.data = sub_8098974(itemId, 1);
spritePalette.tag = paletteTag;
- LoadCompressedObjectPalette(&spritePalette);
+ LoadCompressedSpritePalette(&spritePalette);
CpuCopy16(origTemplate, &template, sizeof(struct SpriteTemplate));
template.tileTag = tilesTag;
diff --git a/src/item_pc.c b/src/item_pc.c
index 5e5e91355..2d30416c9 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -452,11 +452,11 @@ static bool8 ItemPc_LoadGraphics(void)
sStateDataPtr->data[0]++;
break;
case 3:
- LoadCompressedObjectPic(&gBagSwapSpriteSheet);
+ LoadCompressedSpriteSheet(&gBagSwapSpriteSheet);
sStateDataPtr->data[0]++;
break;
default:
- LoadCompressedObjectPalette(&gBagSwapSpritePalette);
+ LoadCompressedSpritePalette(&gBagSwapSpritePalette);
sStateDataPtr->data[0] = 0;
return TRUE;
}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index 49b08a99c..abd29ca11 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -402,7 +402,7 @@ void sub_8146060(void)
}
if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1)
{
- sub_800F034(&gUnknown_8467F58);
+ LoadCompressedSpriteSheetUsingHeap(&gUnknown_8467F58);
LoadSpritePalette(&gUnknown_8467F60[gUnknown_203F3C8->unk_0170->textPal4]);
for (; r7 < gUnknown_203F3C8->unk_0000.unk_09; r7++)
{
diff --git a/src/oak_speech.c b/src/oak_speech.c
index d444899f6..14e7c87d0 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -1613,7 +1613,7 @@ static void CreateNidoranFSprite(u8 taskId)
u8 spriteId;
DecompressPicFromTable(gUnknown_8235194, sub_8044E00(0), SPECIES_NIDORAN_F);
- sub_800F078(&gUnknown_82373F4);
+ LoadCompressedSpritePaletteUsingHeap(&gUnknown_82373F4);
SetMultiuseSpriteTemplateToPokemon(SPECIES_NIDORAN_F, 0);
spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x60, 0x60, 1);
gSprites[spriteId].callback = SpriteCallbackDummy;
@@ -1635,9 +1635,9 @@ static void CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(u8 taskId, u8 st
switch (state)
{
case 0:
- LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[0]);
- LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[1]);
- LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[2]);
+ LoadCompressedSpriteSheet(&sOakSpeech_PikaSpriteSheets[0]);
+ LoadCompressedSpriteSheet(&sOakSpeech_PikaSpriteSheets[1]);
+ LoadCompressedSpriteSheet(&sOakSpeech_PikaSpriteSheets[2]);
LoadSpritePalette(&sOakSpeech_PikaSpritePal);
spriteId = CreateSprite(&sOakSpeech_PikaSpriteTemplates[0], 0x10, 0x11, 2);
gSprites[spriteId].oam.priority = 0;
@@ -1654,7 +1654,7 @@ static void CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(u8 taskId, u8 st
gTasks[taskId].data[9] = spriteId;
break;
case 1:
- LoadCompressedObjectPic(&sOakSpeech_GrassPlatformSpriteSheet);
+ LoadCompressedSpriteSheet(&sOakSpeech_GrassPlatformSpriteSheet);
LoadSpritePalette(&sOakSpeech_GrassPlatformSpritePal);
for (i = 0; i < 3; i++)
{
diff --git a/src/tm_case.c b/src/tm_case.c
index 6a9e6d864..54c50cc71 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -469,7 +469,7 @@ static bool8 HandleLoadTMCaseGraphicsAndPalettes(void)
sTMCaseDynamicResources->seqId++;
break;
case 4:
- LoadCompressedObjectPic(&sTMSpriteSheet);
+ LoadCompressedSpriteSheet(&sTMSpriteSheet);
sTMCaseDynamicResources->seqId++;
break;
default:
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index ecd889d80..25a8d4515 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -109,7 +109,7 @@ void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 palett
else
{
sCreatingSpriteTemplate.paletteTag = paletteTag;
- LoadCompressedObjectPalette(GetMonSpritePalStructFromOtIdPersonality(species, otId, personality));
+ LoadCompressedSpritePalette(GetMonSpritePalStructFromOtIdPersonality(species, otId, personality));
}
}
else
@@ -122,7 +122,7 @@ void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 palett
else
{
sCreatingSpriteTemplate.paletteTag = paletteTag;
- LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[species]);
+ LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[species]);
}
}
}
diff --git a/src/unk_815C980.c b/src/unk_815C980.c
index b90d2fb03..09b92c834 100644
--- a/src/unk_815C980.c
+++ b/src/unk_815C980.c
@@ -128,7 +128,7 @@ bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2)
compObjectPic = *(struct CompressedSpriteSheet*)(arg2->spriteSheet);
compObjectPic.size = GetDecompressedDataSize(arg2->spriteSheet->data);
- gUnknown_203F454->array[id].tileStart = LoadCompressedObjectPic(&compObjectPic);
+ gUnknown_203F454->array[id].tileStart = LoadCompressedSpriteSheet(&compObjectPic);
}
if (gUnknown_203F454->array[id].tileStart == 0xFFFF)
diff --git a/src/unk_815F138.c b/src/unk_815F138.c
index 8941f1559..96005a07b 100644
--- a/src/unk_815F138.c
+++ b/src/unk_815F138.c
@@ -209,7 +209,7 @@ void sub_815F564(u16 tilesTag, u16 palTag)
struct SpritePalette spritePalette = {gUnknown_847A328};
spriteSheet.tag = tilesTag;
spritePalette.tag = palTag;
- LoadCompressedObjectPic(&spriteSheet);
+ LoadCompressedSpriteSheet(&spriteSheet);
LoadSpritePalette(&spritePalette);
}