diff options
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); } |