diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-14 13:50:15 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-14 13:52:50 -0400 |
commit | 5f7738672ac9b3aa6a7836bc222d60acf7e32f54 (patch) | |
tree | faa17507f8953e356f8e9aa83ce78078b6a0c366 | |
parent | 6753e18db06fc6636b768bfaae41a68ec8660abf (diff) |
through sub_809223C
-rw-r--r-- | asm/pokemon_storage_system.s | 2364 | ||||
-rw-r--r-- | data/pokemon_storage_system.s | 213 | ||||
-rw-r--r-- | include/pokemon_icon.h | 2 | ||||
-rw-r--r-- | include/pokemon_storage_system.h | 2 | ||||
-rw-r--r-- | include/pokemon_storage_system_internal.h | 20 | ||||
-rw-r--r-- | src/pokemon_storage_system_3.c | 856 |
6 files changed, 868 insertions, 2589 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index b789c20a8..4985ec0b0 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -5,2370 +5,6 @@ .text - thumb_func_start sub_8091084 -sub_8091084: @ 8091084 - push {lr} - ldr r0, _080910AC @ =sPSSData - ldr r0, [r0] - movs r1, 0xB0 - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - ldr r1, [r0] - cmp r1, 0 - beq _080910A6 - adds r3, r1, 0 - adds r3, 0x3E - ldrb r2, [r3] - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - beq _080910B0 -_080910A6: - movs r0, 0 - b _080910C6 - .align 2, 0 -_080910AC: .4byte sPSSData -_080910B0: - adds r0, r1, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080910C4 - movs r0, 0x4 - orrs r0, r2 - strb r0, [r3] -_080910C4: - movs r0, 0x1 -_080910C6: - pop {r1} - bx r1 - thumb_func_end sub_8091084 - - thumb_func_start sub_80910CC -sub_80910CC: @ 80910CC - push {r4,lr} - ldr r4, _08091110 @ =sPSSData - ldr r0, [r4] - movs r1, 0xB0 - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _08091108 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r0, [r4] - movs r1, 0xB0 - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - ldr r0, [r0] - bl DestroyBoxMonIcon - ldr r0, [r4] - movs r1, 0xB0 - lsls r1, 4 - adds r0, r1 - ldr r1, [r0] - movs r0, 0 - str r0, [r1] -_08091108: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08091110: .4byte sPSSData - thumb_func_end sub_80910CC - - thumb_func_start sub_8091114 -sub_8091114: @ 8091114 - push {lr} - ldr r3, _0809114C @ =sPSSData - ldr r0, [r3] - movs r1, 0xB0 - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _08091148 - adds r2, r0, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, [r3] - movs r1, 0xB0 - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAffineAnim -_08091148: - pop {r0} - bx r0 - .align 2, 0 -_0809114C: .4byte sPSSData - thumb_func_end sub_8091114 - - thumb_func_start sub_8091150 -sub_8091150: @ 8091150 - push {lr} - ldr r0, _08091168 @ =sPSSData - ldr r0, [r0] - movs r1, 0xB0 - lsls r1, 4 - adds r2, r0, r1 - ldr r0, [r2] - cmp r0, 0 - bne _0809116C - movs r0, 0 - b _08091180 - .align 2, 0 -_08091168: .4byte sPSSData -_0809116C: - ldr r0, [r0] - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0809117E - movs r0, 0 - str r0, [r2] -_0809117E: - movs r0, 0x1 -_08091180: - pop {r1} - bx r1 - thumb_func_end sub_8091150 - - thumb_func_start SetMovingMonPriority -SetMovingMonPriority: @ 8091184 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080911A8 @ =sPSSData - ldr r1, [r1] - ldr r2, _080911AC @ =0x00000a68 - adds r1, r2 - ldr r3, [r1] - movs r1, 0x3 - ands r0, r1 - lsls r0, 2 - ldrb r2, [r3, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x5] - bx lr - .align 2, 0 -_080911A8: .4byte sPSSData -_080911AC: .4byte 0x00000a68 - thumb_func_end SetMovingMonPriority - - thumb_func_start sub_80911B0 -sub_80911B0: @ 80911B0 - ldr r1, _080911D0 @ =sPSSData - ldr r1, [r1] - movs r2, 0xCB - lsls r2, 4 - adds r1, r2 - ldr r2, [r1] - ldrh r2, [r2, 0x20] - strh r2, [r0, 0x20] - ldr r2, [r1] - ldrh r1, [r2, 0x26] - ldrh r2, [r2, 0x22] - adds r1, r2 - adds r1, 0x4 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_080911D0: .4byte sPSSData - thumb_func_end sub_80911B0 - - thumb_func_start sub_80911D4 -sub_80911D4: @ 80911D4 - push {r4-r6,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r4, 0 - ldr r1, _0809123C @ =sPSSData - ldr r0, [r1] - ldr r2, _08091240 @ =0x00000b54 - adds r0, r2 - ldrh r0, [r0] - adds r2, r1, 0 - cmp r0, r3 - beq _08091208 - adds r6, r2, 0 - ldr r5, _08091240 @ =0x00000b54 -_080911F0: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x27 - bhi _08091208 - ldr r0, [r6] - lsls r1, r4, 1 - adds r0, r5 - adds r0, r1 - ldrh r0, [r0] - cmp r0, r3 - bne _080911F0 -_08091208: - cmp r4, 0x28 - bne _08091248 - movs r4, 0 - ldr r0, [r2] - ldr r5, _08091240 @ =0x00000b54 - adds r0, r5 - ldrh r0, [r0] - cmp r0, 0 - beq _08091234 - adds r6, r2, 0 -_0809121C: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x27 - bhi _08091234 - ldr r0, [r6] - lsls r1, r4, 1 - adds r0, r5 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _0809121C -_08091234: - cmp r4, 0x28 - bne _08091248 - ldr r0, _08091244 @ =0x0000ffff - b _0809127A - .align 2, 0 -_0809123C: .4byte sPSSData -_08091240: .4byte 0x00000b54 -_08091244: .4byte 0x0000ffff -_08091248: - ldr r1, [r2] - lsls r2, r4, 1 - ldr r5, _08091280 @ =0x00000b54 - adds r0, r1, r5 - adds r0, r2 - strh r3, [r0] - ldr r0, _08091284 @ =0x00000b04 - adds r1, r0 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r4, 20 - lsrs r4, 16 - adds r0, r3, 0 - movs r1, 0x1 - bl GetMonIconTiles - lsls r1, r4, 5 - ldr r2, _08091288 @ =0x06010000 - adds r1, r2 - ldr r2, _0809128C @ =0x04000080 - bl CpuSet - adds r0, r4, 0 -_0809127A: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08091280: .4byte 0x00000b54 -_08091284: .4byte 0x00000b04 -_08091288: .4byte 0x06010000 -_0809128C: .4byte 0x04000080 - thumb_func_end sub_80911D4 - - thumb_func_start sub_8091290 -sub_8091290: @ 8091290 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - movs r3, 0 - ldr r6, _080912C4 @ =sPSSData -_0809129A: - ldr r1, [r6] - lsls r2, r3, 1 - ldr r4, _080912C8 @ =0x00000b54 - adds r0, r1, r4 - adds r4, r0, r2 - ldrh r0, [r4] - cmp r0, r5 - bne _080912D0 - ldr r0, _080912CC @ =0x00000b04 - adds r1, r0 - adds r1, r2 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080912DA - strh r0, [r4] - b _080912DA - .align 2, 0 -_080912C4: .4byte sPSSData -_080912C8: .4byte 0x00000b54 -_080912CC: .4byte 0x00000b04 -_080912D0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x27 - bls _0809129A -_080912DA: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8091290 - - thumb_func_start CreateMonIconSprite -CreateMonIconSprite: @ 80912E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r4, [sp, 0x3C] - ldr r5, [sp, 0x40] - lsls r0, 16 - lsrs r6, r0, 16 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0x18] - lsls r3, 16 - lsrs r3, 16 - mov r8, r3 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r9, r5 - mov r2, sp - ldr r0, _08091390 @ =gUnknown_83CEBF0 - ldm r0!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldm r0!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - adds r0, r6, 0 - bl GetIconSpecies - mov r10, r0 - mov r6, r10 - mov r2, sp - ldr r1, _08091394 @ =gMonIconPaletteIndices - adds r1, r6, r1 - ldr r3, _08091398 @ =0x0000dac0 - adds r0, r3, 0 - ldrb r1, [r1] - adds r0, r1 - strh r0, [r2, 0x2] - adds r0, r6, 0 - bl sub_80911D4 - lsls r0, 16 - lsrs r0, 16 - adds r5, r0, 0 - ldr r0, _0809139C @ =0x0000ffff - cmp r5, r0 - beq _080913B2 - ldr r7, [sp, 0x18] - lsls r1, r7, 16 - asrs r1, 16 - mov r0, r8 - lsls r2, r0, 16 - asrs r2, 16 - mov r0, sp - mov r3, r9 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080913AC - ldr r1, _080913A0 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldr r2, _080913A4 @ =0x000003ff - ands r2, r5 - ldrh r3, [r0, 0x4] - ldr r1, _080913A8 @ =0xfffffc00 - ands r1, r3 - orrs r1, r2 - strh r1, [r0, 0x4] - movs r1, 0x3 - ands r4, r1 - lsls r3, r4, 2 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - orrs r1, r3 - strb r1, [r0, 0x5] - mov r1, r10 - strh r1, [r0, 0x2E] - b _080913B4 - .align 2, 0 -_08091390: .4byte gUnknown_83CEBF0 -_08091394: .4byte gMonIconPaletteIndices -_08091398: .4byte 0x0000dac0 -_0809139C: .4byte 0x0000ffff -_080913A0: .4byte gSprites -_080913A4: .4byte 0x000003ff -_080913A8: .4byte 0xfffffc00 -_080913AC: - adds r0, r6, 0 - bl sub_8091290 -_080913B2: - movs r0, 0 -_080913B4: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CreateMonIconSprite - - thumb_func_start DestroyBoxMonIcon -DestroyBoxMonIcon: @ 80913C4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - bl sub_8091290 - adds r0, r4, 0 - bl DestroySprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end DestroyBoxMonIcon - - thumb_func_start sub_80913DC -sub_80913DC: @ 80913DC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08091404 @ =sub_8091420 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08091408 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xC] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08091404: .4byte sub_8091420 -_08091408: .4byte gTasks - thumb_func_end sub_80913DC - - thumb_func_start sub_809140C -sub_809140C: @ 809140C - push {lr} - ldr r0, _0809141C @ =sub_8091420 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0809141C: .4byte sub_8091420 - thumb_func_end sub_809140C - - thumb_func_start sub_8091420 -sub_8091420: @ 8091420 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _08091444 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bhi _08091504 - lsls r0, 2 - ldr r1, _08091448 @ =_0809144C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08091444: .4byte gTasks -_08091448: .4byte _0809144C - .align 2, 0 -_0809144C: - .4byte _08091460 - .4byte _08091498 - .4byte _080914CC - .4byte _080914D6 - .4byte _080914FC -_08091460: - ldr r1, _0809148C @ =sPSSData - ldr r0, [r1] - ldr r2, _08091490 @ =0x000002d2 - adds r0, r2 - movs r2, 0 - strb r2, [r0] - ldr r1, [r1] - movs r3, 0xB3 - lsls r3, 2 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _08091494 @ =0x00004abc - adds r1, r0 - movs r2, 0x80 - lsls r2, 5 - movs r0, 0 - movs r3, 0x1 - bl RequestDma3Fill - strh r0, [r4, 0xA] - b _08091508 - .align 2, 0 -_0809148C: .4byte sPSSData -_08091490: .4byte 0x000002d2 -_08091494: .4byte 0x00004abc -_08091498: - movs r1, 0xA - ldrsh r0, [r4, r1] - bl CheckForSpaceForDma3Request - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0809150E - ldr r0, _080914C4 @ =sPSSData - ldr r1, [r0] - ldr r2, _080914C8 @ =0x00004abc - adds r1, r2 - movs r0, 0x2 - bl SetBgTilemapBuffer - movs r0, 0x2 - bl ShowBg - b _08091508 - .align 2, 0 -_080914C4: .4byte sPSSData -_080914C8: .4byte 0x00004abc -_080914CC: - ldrb r0, [r4, 0xC] - movs r1, 0 - bl sub_8091850 - b _08091508 -_080914D6: - bl sub_809196C - cmp r0, 0 - beq _0809150E - ldrb r0, [r4, 0xC] - bl sub_8091A94 - bl sub_8091F80 - ldrb r0, [r4, 0xC] - bl sub_80900D4 - ldr r1, _080914F8 @ =0x00005b0a - movs r0, 0xC - bl SetGpuReg - b _08091508 - .align 2, 0 -_080914F8: .4byte 0x00005b0a -_080914FC: - adds r0, r2, 0 - bl DestroyTask - b _08091508 -_08091504: - movs r0, 0 - b _0809150C -_08091508: - ldrh r0, [r4, 0x8] - adds r0, 0x1 -_0809150C: - strh r0, [r4, 0x8] -_0809150E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8091420 - - thumb_func_start SetUpScrollToBox -SetUpScrollToBox: @ 8091514 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r4 - adds r0, r4, 0 - bl sub_80916F4 - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r5, _080915D8 @ =sPSSData - ldr r2, [r5] - lsls r0, r6, 24 - asrs r3, r0, 24 - movs r0, 0x6 - negs r0, r0 - adds r1, r0, 0 - cmp r3, 0 - ble _08091540 - movs r1, 0x6 -_08091540: - ldr r7, _080915DC @ =0x000002ce - adds r0, r2, r7 - strh r1, [r0] - movs r1, 0x2 - cmp r3, 0 - ble _0809154E - movs r1, 0x1 -_0809154E: - ldr r7, _080915E0 @ =0x000002d3 - adds r0, r2, r7 - strb r1, [r0] - ldr r2, [r5] - movs r0, 0xB4 - lsls r0, 2 - adds r1, r2, r0 - movs r0, 0x20 - strh r0, [r1] - movs r1, 0xB5 - lsls r1, 2 - adds r0, r2, r1 - strb r4, [r0] - ldr r2, [r5] - movs r1, 0 - cmp r3, 0 - bgt _08091572 - movs r1, 0x5 -_08091572: - ldr r4, _080915E4 @ =0x000002d6 - adds r0, r2, r4 - strh r1, [r0] - movs r7, 0xB6 - lsls r7, 2 - adds r0, r2, r7 - strh r3, [r0] - movs r1, 0x38 - cmp r3, 0 - ble _0809158C - movs r0, 0x84 - lsls r0, 1 - adds r1, r0, 0 -_0809158C: - ldr r4, _080915E8 @ =0x000002da - adds r0, r2, r4 - strh r1, [r0] - movs r1, 0 - cmp r3, 0 - bgt _0809159A - movs r1, 0x5 -_0809159A: - movs r7, 0xB7 - lsls r7, 2 - adds r0, r2, r7 - strh r1, [r0] - ldr r0, _080915EC @ =0x000002de - adds r1, r2, r0 - movs r0, 0 - strh r0, [r1] - movs r3, 0xB8 - lsls r3, 2 - adds r1, r2, r3 - movs r0, 0x2 - strh r0, [r1] - ldr r4, _080915F0 @ =0x00000a64 - adds r0, r2, r4 - mov r7, r8 - strb r7, [r0] - ldr r0, [r5] - ldr r1, _080915F4 @ =0x00000a65 - adds r0, r1 - strb r6, [r0] - ldr r0, [r5] - ldr r3, _080915F8 @ =0x00000a63 - adds r0, r3 - movs r1, 0 - strb r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080915D8: .4byte sPSSData -_080915DC: .4byte 0x000002ce -_080915E0: .4byte 0x000002d3 -_080915E4: .4byte 0x000002d6 -_080915E8: .4byte 0x000002da -_080915EC: .4byte 0x000002de -_080915F0: .4byte 0x00000a64 -_080915F4: .4byte 0x00000a65 -_080915F8: .4byte 0x00000a63 - thumb_func_end SetUpScrollToBox - - thumb_func_start ScrollToBox -ScrollToBox: @ 80915FC - push {r4-r6,lr} - ldr r4, _08091618 @ =sPSSData - ldr r1, [r4] - ldr r5, _0809161C @ =0x00000a63 - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08091644 - cmp r0, 0x1 - bgt _08091620 - cmp r0, 0 - beq _08091626 - b _080916D4 - .align 2, 0 -_08091618: .4byte sPSSData -_0809161C: .4byte 0x00000a63 -_08091620: - cmp r0, 0x2 - beq _08091694 - b _080916D4 -_08091626: - ldr r2, _08091688 @ =0x00000a64 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - bl sub_8091850 - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08091644: - bl sub_809196C - cmp r0, 0 - beq _080916E2 - ldr r6, _0809168C @ =sPSSData - ldr r1, [r6] - ldr r4, _08091688 @ =0x00000a64 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r5, _08091690 @ =0x00000a65 - adds r1, r5 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - bl sub_8090574 - ldr r1, [r6] - adds r4, r1, r4 - ldrb r0, [r4] - adds r1, r5 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - bl sub_8091C48 - ldr r0, [r6] - adds r0, r5 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - bl sub_809200C - b _080916D4 - .align 2, 0 -_08091688: .4byte 0x00000a64 -_0809168C: .4byte sPSSData -_08091690: .4byte 0x00000a65 -_08091694: - bl sub_809062C - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, [r4] - movs r4, 0xB4 - lsls r4, 2 - adds r3, r2, r4 - ldrh r0, [r3] - cmp r0, 0 - beq _080916D0 - movs r0, 0xB3 - lsls r0, 2 - adds r1, r2, r0 - subs r4, 0x2 - adds r0, r2, r4 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - ldrh r0, [r3] - subs r0, 0x1 - strh r0, [r3] - lsls r0, 16 - cmp r0, 0 - bne _080916E2 - bl sub_8091E34 - bl sub_80920AC -_080916D0: - adds r0, r5, 0 - b _080916E4 -_080916D4: - ldr r0, _080916EC @ =sPSSData - ldr r1, [r0] - ldr r4, _080916F0 @ =0x00000a63 - adds r1, r4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080916E2: - movs r0, 0x1 -_080916E4: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080916EC: .4byte sPSSData -_080916F0: .4byte 0x00000a63 - thumb_func_end ScrollToBox - - thumb_func_start sub_80916F4 -sub_80916F4: @ 80916F4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0 - cmp r1, r4 - beq _0809171E -_08091708: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xD - bls _08091714 - movs r1, 0 -_08091714: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r1, r4 - bne _08091708 -_0809171E: - movs r0, 0x1 - negs r0, r0 - cmp r2, 0x6 - bhi _08091728 - movs r0, 0x1 -_08091728: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80916F4 - - thumb_func_start SetWallpaperForCurrentBox -SetWallpaperForCurrentBox: @ 8091730 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl SetBoxWallpaper - ldr r0, _08091758 @ =sPSSData - ldr r0, [r0] - ldr r1, _0809175C @ =0x00000a62 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08091758: .4byte sPSSData -_0809175C: .4byte 0x00000a62 - thumb_func_end SetWallpaperForCurrentBox - - thumb_func_start DoWallpaperGfxChange -DoWallpaperGfxChange: @ 8091760 - push {r4,lr} - sub sp, 0x4 - ldr r1, _08091780 @ =sPSSData - ldr r0, [r1] - ldr r2, _08091784 @ =0x00000a62 - adds r0, r2 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x4 - bhi _08091844 - lsls r0, 2 - ldr r1, _08091788 @ =_0809178C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08091780: .4byte sPSSData -_08091784: .4byte 0x00000a62 -_08091788: .4byte _0809178C - .align 2, 0 -_0809178C: - .4byte _080917A0 - .4byte _080917C8 - .4byte _080917E2 - .4byte _0809181C - .4byte _08091840 -_080917A0: - ldr r0, [r4] - movs r1, 0xE7 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080917C0 @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r4] - ldr r2, _080917C4 @ =0x00000a62 - adds r1, r2 - b _0809182E - .align 2, 0 -_080917C0: .4byte 0x0000ffff -_080917C4: .4byte 0x00000a62 -_080917C8: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _08091844 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8091850 - b _08091826 -_080917E2: - bl sub_809196C - cmp r0, 0x1 - bne _08091844 - bl sub_8091EF0 - ldr r4, _08091810 @ =sPSSData - ldr r0, [r4] - movs r1, 0xE7 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - ldr r1, _08091814 @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r4] - ldr r2, _08091818 @ =0x00000a62 - adds r1, r2 - b _0809182E - .align 2, 0 -_08091810: .4byte sPSSData -_08091814: .4byte 0x0000ffff -_08091818: .4byte 0x00000a62 -_0809181C: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _08091844 -_08091826: - ldr r0, _08091838 @ =sPSSData - ldr r1, [r0] - ldr r0, _0809183C @ =0x00000a62 - adds r1, r0 -_0809182E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08091844 - .align 2, 0 -_08091838: .4byte sPSSData -_0809183C: .4byte 0x00000a62 -_08091840: - movs r0, 0 - b _08091846 -_08091844: - movs r0, 0x1 -_08091846: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end DoWallpaperGfxChange - - thumb_func_start sub_8091850 -sub_8091850: @ 8091850 - push {r4-r7,lr} - sub sp, 0x4 - ldr r4, _08091904 @ =sPSSData - ldr r2, [r4] - ldr r3, _08091908 @ =0x000006f9 - adds r2, r3 - movs r3, 0 - strb r3, [r2] - ldr r2, [r4] - ldr r3, _0809190C @ =0x000006fa - adds r2, r3 - strb r0, [r2] - ldr r0, [r4] - ldr r2, _08091910 @ =0x000006fb - adds r0, r2 - strb r1, [r0] - ldr r1, [r4] - adds r2, r1, r2 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0 - beq _08091896 - movs r3, 0 - ldr r0, _08091914 @ =0x000002d2 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0 - bne _0809188A - movs r3, 0x1 -_0809188A: - strb r3, [r2] - ldr r0, [r4] - ldr r1, _08091918 @ =0x00004abc - adds r0, r1 - bl sub_8091A24 -_08091896: - ldr r6, _08091904 @ =sPSSData - ldr r0, [r6] - ldr r2, _0809190C @ =0x000006fa - adds r0, r2 - ldrb r0, [r0] - bl GetBoxWallpaper - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _0809191C @ =gUnknown_83D2A10 - adds r7, r1, r0 - ldr r0, [r7, 0x4] - ldr r1, [r6] - ldr r5, _08091920 @ =0x00000792 - adds r1, r5 - bl LZ77UnCompWram - ldr r1, [r6] - ldr r3, _08091918 @ =0x00004abc - adds r0, r1, r3 - adds r5, r1, r5 - ldr r4, _08091910 @ =0x000006fb - adds r2, r1, r4 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - ldr r3, _08091914 @ =0x000002d2 - adds r1, r3 - ldrb r3, [r1] - adds r1, r5, 0 - bl sub_8091984 - ldr r1, [r6] - adds r4, r1, r4 - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0 - beq _08091924 - ldr r0, [r7, 0x8] - ldr r2, _08091914 @ =0x000002d2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 21 - movs r3, 0x80 - lsls r3, 15 - adds r1, r3 - lsrs r1, 16 - movs r2, 0x40 - bl LoadPalette - b _08091938 - .align 2, 0 -_08091904: .4byte sPSSData -_08091908: .4byte 0x000006f9 -_0809190C: .4byte 0x000006fa -_08091910: .4byte 0x000006fb -_08091914: .4byte 0x000002d2 -_08091918: .4byte 0x00004abc -_0809191C: .4byte gUnknown_83D2A10 -_08091920: .4byte 0x00000792 -_08091924: - ldr r0, [r7, 0x8] - ldr r2, _08091960 @ =0x000002d2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 6 - ldr r2, _08091964 @ =gPlttBufferUnfaded + 0x80 - adds r1, r2 - movs r2, 0x20 - bl CpuSet -_08091938: - ldr r1, [r7] - ldr r0, _08091968 @ =sPSSData - ldr r0, [r0] - ldr r3, _08091960 @ =0x000002d2 - adds r0, r3 - ldrb r3, [r0] - lsls r3, 8 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - movs r2, 0 - bl DecompressAndLoadBgGfxUsingHeap - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08091960: .4byte 0x000002d2 -_08091964: .4byte gPlttBufferUnfaded + 0x80 -_08091968: .4byte sPSSData - thumb_func_end sub_8091850 - - thumb_func_start sub_809196C -sub_809196C: @ 809196C - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0809197E - movs r0, 0x1 - b _08091980 -_0809197E: - movs r0, 0 -_08091980: - pop {r1} - bx r1 - thumb_func_end sub_809196C - - thumb_func_start sub_8091984 -sub_8091984: @ 8091984 - push {r4-r7,lr} - sub sp, 0x24 - lsls r3, 24 - lsrs r3, 24 - lsls r5, r3, 17 - ldr r0, _080919F0 @ =sPSSData - ldr r0, [r0] - movs r4, 0xB3 - lsls r4, 2 - adds r0, r4 - ldrh r4, [r0] - lsrs r4, 3 - adds r4, 0xA - lsls r2, 24 - asrs r7, r2, 24 - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 3 - adds r6, r4, r0 - movs r0, 0x3F - ands r6, r0 - movs r4, 0x14 - str r4, [sp] - movs r2, 0x12 - str r2, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x2 - str r0, [sp, 0xC] - str r4, [sp, 0x10] - str r2, [sp, 0x14] - movs r0, 0x11 - str r0, [sp, 0x18] - lsls r3, 24 - asrs r3, 16 - str r3, [sp, 0x1C] - movs r0, 0xC0 - lsls r0, 10 - adds r5, r0 - asrs r5, 16 - str r5, [sp, 0x20] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyRectToBgTilemapBufferRect - cmp r7, 0 - beq _08091A16 - cmp r7, 0 - ble _080919F4 - lsls r0, r6, 16 - movs r1, 0xA0 - lsls r1, 13 - adds r0, r1 - b _080919FA - .align 2, 0 -_080919F0: .4byte sPSSData -_080919F4: - lsls r0, r6, 16 - ldr r4, _08091A20 @ =0xfffc0000 - adds r0, r4 -_080919FA: - lsrs r6, r0, 16 - lsls r2, r6, 24 - lsrs r2, 24 - movs r0, 0x4 - str r0, [sp] - movs r0, 0x12 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect -_08091A16: - add sp, 0x24 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08091A20: .4byte 0xfffc0000 - thumb_func_end sub_8091984 - - thumb_func_start sub_8091A24 -sub_8091A24: @ 8091A24 - push {r4-r6,lr} - adds r2, r0, 0 - ldr r0, _08091A50 @ =sPSSData - ldr r0, [r0] - movs r1, 0xB3 - lsls r1, 2 - adds r0, r1 - ldrh r0, [r0] - lsrs r0, 3 - adds r3, r0, 0 - adds r3, 0x1E - movs r0, 0x3F - ands r3, r0 - adds r0, r3, 0 - cmp r0, 0x1F - bgt _08091A54 - lsls r0, 1 - movs r6, 0x98 - lsls r6, 3 - adds r0, r6 - b _08091A5C - .align 2, 0 -_08091A50: .4byte sPSSData -_08091A54: - lsls r0, 1 - movs r1, 0xC8 - lsls r1, 4 - adds r0, r1 -_08091A5C: - adds r2, r0 - movs r0, 0 - movs r5, 0 - movs r4, 0x3F -_08091A64: - strh r5, [r2] - adds r2, 0x2 - adds r3, 0x1 - ands r3, r4 - adds r1, r3, 0 - cmp r1, 0 - bne _08091A76 - ldr r6, _08091A90 @ =0xfffff7c0 - adds r2, r6 -_08091A76: - cmp r1, 0x20 - bne _08091A80 - movs r1, 0xF8 - lsls r1, 3 - adds r2, r1 -_08091A80: - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2B - bls _08091A64 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08091A90: .4byte 0xfffff7c0 - thumb_func_end sub_8091A24 - - thumb_func_start sub_8091A94 -sub_8091A94: @ 8091A94 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08091C1C @ =sPSSData - mov r10, r1 - ldr r1, [r1] - movs r2, 0xBE - lsls r2, 2 - adds r0, r1, r2 - str r0, [sp, 0x28] - mov r3, sp - adds r3, 0x28 - str r3, [sp, 0x30] - ldr r0, _08091C20 @ =0x00030200 - str r0, [r3, 0x4] - ldr r4, _08091C24 @ =0x000006fc - adds r1, r4 - str r1, [sp, 0x18] - add r0, sp, 0x1C - ldr r7, _08091C28 @ =0x0000dac9 - strh r7, [r0] - add r0, sp, 0x20 - movs r1, 0 - movs r2, 0x8 - bl memset - add r1, sp, 0x18 - add r0, sp, 0x8 - movs r2, 0x10 - bl memcpy - mov r0, r8 - bl GetBoxWallpaper - lsls r0, 24 - mov r5, r10 - ldr r4, [r5] - ldr r2, _08091C2C @ =gUnknown_83D29D0 - lsrs r0, 22 - adds r1, r0, r2 - ldrh r3, [r1] - movs r5, 0xE3 - lsls r5, 3 - adds r1, r4, r5 - strh r3, [r1] - adds r2, 0x2 - adds r0, r2 - ldrh r0, [r0] - ldr r1, _08091C30 @ =0x0000071a - adds r4, r1 - strh r0, [r4] - add r0, sp, 0x8 - bl LoadSpritePalettes - mov r2, r10 - ldr r0, [r2] - movs r6, 0xE7 - lsls r6, 3 - adds r0, r6 - movs r1, 0xFC - lsls r1, 2 - str r1, [r0] - adds r0, r7, 0 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - mov r4, r10 - ldr r3, [r4] - lsls r1, r0, 4 - movs r5, 0x87 - lsls r5, 1 - mov r9, r5 - add r1, r9 - ldr r4, _08091C34 @ =0x0000071c - adds r2, r3, r4 - strh r1, [r2] - adds r3, r6 - movs r5, 0x80 - lsls r5, 9 - adds r1, r5, 0 - lsls r1, r0 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - adds r0, r7, 0 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - mov r1, r10 - ldr r4, [r1] - lsls r1, r0, 4 - add r1, r9 - ldr r3, _08091C38 @ =0x0000071e - adds r2, r4, r3 - strh r1, [r2] - adds r6, r4, r6 - lsls r5, r0 - ldr r0, [r6] - orrs r0, r5 - str r0, [r6] - ldr r5, _08091C3C @ =0x000021a8 - adds r4, r5 - mov r0, r8 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x8 - bl StringCopyPadded - mov r4, r10 - ldr r0, [r4] - adds r5, r0, r5 - movs r2, 0xBE - lsls r2, 2 - adds r1, r0, r2 - movs r3, 0x9F - lsls r3, 3 - adds r0, r3 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r2, 0 - movs r3, 0 - bl DrawTextWindowAndBufferTiles - ldr r0, [sp, 0x30] - bl LoadSpriteSheet - mov r0, r8 - bl GetBoxNamePtr - bl sub_8091F60 - movs r4, 0 - lsls r0, 16 - asrs r6, r0, 16 -_08091BBC: - lsls r1, r4, 5 - adds r1, r6, r1 - lsls r1, 16 - asrs r1, 16 - ldr r0, _08091C40 @ =gUnknown_83D2B7C - movs r2, 0x1C - movs r3, 0x18 - bl CreateSprite - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r5, _08091C1C @ =sPSSData - ldr r2, [r5] - lsls r0, r4, 2 - movs r3, 0xE4 - lsls r3, 3 - adds r2, r3 - adds r2, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08091C44 @ =gSprites - adds r0, r1 - str r0, [r2] - lsls r1, r4, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _08091BBC - ldr r0, [r5] - movs r4, 0xDF - lsls r4, 3 - adds r0, r4 - movs r1, 0 - strb r1, [r0] - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08091C1C: .4byte sPSSData -_08091C20: .4byte 0x00030200 -_08091C24: .4byte 0x000006fc -_08091C28: .4byte 0x0000dac9 -_08091C2C: .4byte gUnknown_83D29D0 -_08091C30: .4byte 0x0000071a -_08091C34: .4byte 0x0000071c -_08091C38: .4byte 0x0000071e -_08091C3C: .4byte 0x000021a8 -_08091C40: .4byte gUnknown_83D2B7C -_08091C44: .4byte gSprites - thumb_func_end sub_8091A94 - - thumb_func_start sub_8091C48 -sub_8091C48: @ 8091C48 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x2C] - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - ldr r4, _08091CC4 @ =sPSSData - ldr r2, [r4] - movs r1, 0xBE - lsls r1, 2 - adds r0, r2, r1 - str r0, [sp, 0x20] - add r3, sp, 0x20 - ldr r5, _08091CC8 @ =0x0000ffff - mov r12, r5 - movs r6, 0xC0 - lsls r6, 10 - mov r9, r6 - ldr r0, _08091CCC @ =0x00030200 - str r0, [r3, 0x4] - add r1, sp, 0x8 - ldr r0, _08091CD0 @ =gUnknown_83D2B7C - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - movs r1, 0 - movs r5, 0xDF - lsls r5, 3 - adds r2, r5 - ldrb r0, [r2] - mov r8, r4 - adds r6, r3, 0 - cmp r0, 0 - bne _08091C9C - movs r1, 0x1 -_08091C9C: - strb r1, [r2] - mov r7, r8 - ldr r0, [r7] - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _08091CD8 - ldr r0, [r6, 0x4] - mov r1, r12 - ands r0, r1 - mov r2, r9 - orrs r0, r2 - str r0, [r6, 0x4] - ldr r0, [r7] - ldr r3, _08091CD4 @ =0x0000071c - adds r0, r3 - ldrh r0, [r0] - mov r9, r0 - b _08091CFC - .align 2, 0 -_08091CC4: .4byte sPSSData -_08091CC8: .4byte 0x0000ffff -_08091CCC: .4byte 0x00030200 -_08091CD0: .4byte gUnknown_83D2B7C -_08091CD4: .4byte 0x0000071c -_08091CD8: - ldr r0, [r6, 0x4] - mov r5, r12 - ands r0, r5 - movs r1, 0x80 - lsls r1, 11 - orrs r0, r1 - str r0, [r6, 0x4] - mov r7, r8 - ldr r0, [r7] - ldr r1, _08091E18 @ =0x0000071c - adds r0, r1 - ldrh r0, [r0] - mov r9, r0 - add r1, sp, 0x8 - movs r0, 0x4 - strh r0, [r1] - ldr r0, _08091E1C @ =0x0000dac9 - strh r0, [r1, 0x2] -_08091CFC: - mov r2, r8 - ldr r4, [r2] - ldr r5, _08091E20 @ =0x000021a8 - adds r4, r5 - ldr r0, [sp, 0x2C] - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x8 - bl StringCopyPadded - mov r3, r8 - ldr r0, [r3] - adds r5, r0, r5 - movs r7, 0xBE - lsls r7, 2 - adds r1, r0, r7 - movs r2, 0x9F - lsls r2, 3 - adds r0, r2 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r2, 0 - movs r3, 0 - bl DrawTextWindowAndBufferTiles - adds r0, r6, 0 - bl LoadSpriteSheet - ldr r0, [sp, 0x2C] - bl GetBoxWallpaper - lsls r0, 24 - lsrs r0, 22 - ldr r1, _08091E24 @ =gUnknown_83D29D0 - adds r0, r1 - mov r1, r9 - movs r2, 0x4 - bl LoadPalette - ldr r0, [sp, 0x2C] - bl GetBoxNamePtr - bl sub_8091F60 - lsls r0, 16 - mov r3, r10 - lsls r2, r3, 24 - asrs r2, 24 - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 6 - lsrs r5, r0, 16 - str r5, [sp, 0x28] - asrs r0, 16 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - movs r7, 0 - mov r9, r8 - negs r2, r2 - mov r8, r2 -_08091D82: - lsls r6, r7, 5 - mov r0, r10 - lsls r1, r0, 16 - asrs r1, 16 - adds r1, r6 - lsls r1, 16 - asrs r1, 16 - add r0, sp, 0x8 - movs r2, 0x1C - movs r3, 0x18 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r1, r9 - ldr r2, [r1] - lsls r5, r7, 2 - movs r3, 0xE5 - lsls r3, 3 - adds r2, r3 - adds r2, r5 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08091E28 @ =gSprites - adds r1, r0 - str r1, [r2] - mov r0, r8 - lsls r4, r0, 1 - add r4, r8 - lsls r4, 1 - strh r4, [r1, 0x2E] - ldr r1, [r2] - ldr r3, [sp, 0x28] - lsls r0, r3, 16 - asrs r0, 16 - adds r0, r6 - strh r0, [r1, 0x30] - ldr r0, [r2] - movs r6, 0 - strh r6, [r0, 0x32] - ldr r0, [r2] - ldr r1, _08091E2C @ =sub_8091E84 - str r1, [r0, 0x1C] - lsls r1, r7, 24 - lsrs r1, 24 - bl StartSpriteAnim - mov r1, r9 - ldr r0, [r1] - movs r2, 0xE4 - lsls r2, 3 - adds r0, r2 - adds r0, r5 - ldr r1, [r0] - strh r4, [r1, 0x2E] - ldr r2, [r0] - movs r1, 0x1 - strh r1, [r2, 0x30] - ldr r1, [r0] - ldr r0, _08091E30 @ =sub_8091EB8 - str r0, [r1, 0x1C] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0x1 - bls _08091D82 - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08091E18: .4byte 0x0000071c -_08091E1C: .4byte 0x0000dac9 -_08091E20: .4byte 0x000021a8 -_08091E24: .4byte gUnknown_83D29D0 -_08091E28: .4byte gSprites -_08091E2C: .4byte sub_8091E84 -_08091E30: .4byte sub_8091EB8 - thumb_func_end sub_8091C48 - - thumb_func_start sub_8091E34 -sub_8091E34: @ 8091E34 - push {lr} - ldr r0, _08091E50 @ =sPSSData - ldr r0, [r0] - movs r1, 0xDF - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08091E54 - movs r0, 0x4 - bl FreeSpriteTilesByTag - b _08091E5A - .align 2, 0 -_08091E50: .4byte sPSSData -_08091E54: - movs r0, 0x3 - bl FreeSpriteTilesByTag -_08091E5A: - ldr r0, _08091E7C @ =sPSSData - ldr r0, [r0] - movs r3, 0xE4 - lsls r3, 3 - adds r2, r0, r3 - adds r3, 0x8 - adds r1, r0, r3 - ldr r1, [r1] - str r1, [r2] - ldr r2, _08091E80 @ =0x00000724 - adds r1, r0, r2 - adds r3, 0x4 - adds r0, r3 - ldr r0, [r0] - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08091E7C: .4byte sPSSData -_08091E80: .4byte 0x00000724 - thumb_func_end sub_8091E34 - - thumb_func_start sub_8091E84 -sub_8091E84: @ 8091E84 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x32] - movs r3, 0x32 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _08091E98 - subs r0, r1, 0x1 - strh r0, [r2, 0x32] - b _08091EB0 -_08091E98: - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x30 - ldrsh r1, [r2, r3] - cmp r0, r1 - bne _08091EB0 - ldr r0, _08091EB4 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_08091EB0: - pop {r0} - bx r0 - .align 2, 0 -_08091EB4: .4byte SpriteCallbackDummy - thumb_func_end sub_8091E84 - - thumb_func_start sub_8091EB8 -sub_8091EB8: @ 8091EB8 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x30] - movs r3, 0x30 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _08091ECC - subs r0, r1, 0x1 - strh r0, [r2, 0x30] - b _08091EEA -_08091ECC: - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x32] - subs r0, 0x40 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xC0 - bls _08091EEA - adds r0, r2, 0 - bl DestroySprite -_08091EEA: - pop {r0} - bx r0 - thumb_func_end sub_8091EB8 - - thumb_func_start sub_8091EF0 -sub_8091EF0: @ 8091EF0 - push {lr} - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - bl GetBoxWallpaper - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _08091F2C @ =sPSSData - ldr r2, [r0] - movs r3, 0xDF - lsls r3, 3 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08091F38 - lsls r0, r1, 2 - ldr r1, _08091F30 @ =gUnknown_83D29D0 - adds r0, r1 - adds r3, 0x24 - adds r1, r2, r3 - ldrh r1, [r1] - lsls r1, 1 - ldr r2, _08091F34 @ =gPlttBufferUnfaded - adds r1, r2 - movs r2, 0x2 - bl CpuSet - b _08091F50 - .align 2, 0 -_08091F2C: .4byte sPSSData -_08091F30: .4byte gUnknown_83D29D0 -_08091F34: .4byte gPlttBufferUnfaded -_08091F38: - lsls r0, r1, 2 - ldr r1, _08091F54 @ =gUnknown_83D29D0 - adds r0, r1 - ldr r3, _08091F58 @ =0x0000071e - adds r1, r2, r3 - ldrh r1, [r1] - lsls r1, 1 - ldr r2, _08091F5C @ =gPlttBufferUnfaded - adds r1, r2 - movs r2, 0x2 - bl CpuSet -_08091F50: - pop {r0} - bx r0 - .align 2, 0 -_08091F54: .4byte gUnknown_83D29D0 -_08091F58: .4byte 0x0000071e -_08091F5C: .4byte gPlttBufferUnfaded - thumb_func_end sub_8091EF0 - - thumb_func_start sub_8091F60 -sub_8091F60: @ 8091F60 - push {lr} - adds r1, r0, 0 - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - adds r1, r0, 0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - movs r0, 0xB0 - subs r0, r1 - lsls r0, 16 - asrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_8091F60 - - thumb_func_start sub_8091F80 -sub_8091F80: @ 8091F80 - push {r4,r5,lr} - ldr r0, _08091FFC @ =gUnknown_83D2B54 - bl LoadSpriteSheet - movs r5, 0 -_08091F8A: - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 19 - movs r0, 0xB8 - lsls r0, 15 - adds r1, r0 - asrs r1, 16 - ldr r0, _08092000 @ =gUnknown_83D2BB4 - movs r2, 0x1C - movs r3, 0x16 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08091FDC - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08092004 @ =gSprites - adds r4, r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - movs r0, 0x1 - cmp r5, 0 - bne _08091FCA - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_08091FCA: - strh r0, [r4, 0x34] - ldr r0, _08092008 @ =sPSSData - ldr r0, [r0] - lsls r1, r5, 2 - movs r2, 0xE6 - lsls r2, 3 - adds r0, r2 - adds r0, r1 - str r4, [r0] -_08091FDC: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1 - bls _08091F8A - bl IsCursorOnBox - lsls r0, 24 - cmp r0, 0 - beq _08091FF6 - movs r0, 0x1 - bl sub_80920FC -_08091FF6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08091FFC: .4byte gUnknown_83D2B54 -_08092000: .4byte gUnknown_83D2BB4 -_08092004: .4byte gSprites -_08092008: .4byte sPSSData - thumb_func_end sub_8091F80 - - thumb_func_start sub_809200C -sub_809200C: @ 809200C - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r2, 0 - ldr r7, _08092060 @ =sPSSData - mov r12, r7 - movs r6, 0xE6 - lsls r6, 3 - movs r4, 0 - movs r3, 0x2 -_08092020: - mov r0, r12 - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, r6 - adds r1, r0 - ldr r0, [r1] - strh r4, [r0, 0x24] - ldr r0, [r1] - strh r3, [r0, 0x2E] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x1 - bls _08092020 - lsls r0, r5, 24 - cmp r0, 0 - bge _08092068 - ldr r1, [r7] - movs r2, 0xE6 - lsls r2, 3 - adds r3, r1, r2 - ldr r2, [r3] - movs r0, 0x1D - strh r0, [r2, 0x30] - ldr r0, _08092064 @ =0x00000734 - adds r1, r0 - ldr r2, [r1] - movs r0, 0x5 - strh r0, [r2, 0x30] - ldr r0, [r3] - movs r2, 0x48 - b _08092084 - .align 2, 0 -_08092060: .4byte sPSSData -_08092064: .4byte 0x00000734 -_08092068: - ldr r1, [r7] - movs r2, 0xE6 - lsls r2, 3 - adds r3, r1, r2 - ldr r2, [r3] - movs r0, 0x5 - strh r0, [r2, 0x30] - ldr r0, _080920A8 @ =0x00000734 - adds r1, r0 - ldr r2, [r1] - movs r0, 0x1D - strh r0, [r2, 0x30] - ldr r0, [r3] - movs r2, 0xF8 -_08092084: - strh r2, [r0, 0x32] - ldr r0, [r1] - strh r2, [r0, 0x32] - ldr r1, [r7] - movs r2, 0xE6 - lsls r2, 3 - adds r0, r1, r2 - ldr r2, [r0] - movs r0, 0 - strh r0, [r2, 0x3C] - ldr r0, _080920A8 @ =0x00000734 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x1 - strh r0, [r1, 0x3C] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080920A8: .4byte 0x00000734 - thumb_func_end sub_809200C - - thumb_func_start sub_80920AC -sub_80920AC: @ 80920AC - push {r4-r6,lr} - movs r3, 0 - movs r5, 0 - movs r6, 0x5 - negs r6, r6 - ldr r4, _080920F8 @ =sPSSData -_080920B8: - ldr r1, [r4] - lsls r0, r3, 2 - movs r2, 0xE6 - lsls r2, 3 - adds r1, r2 - adds r1, r0 - ldr r2, [r1] - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 3 - adds r0, 0x5C - strh r0, [r2, 0x20] - ldr r0, [r1] - strh r5, [r0, 0x24] - ldr r1, [r1] - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x1 - bls _080920B8 - movs r0, 0x1 - bl sub_80920FC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080920F8: .4byte sPSSData - thumb_func_end sub_80920AC - - thumb_func_start sub_80920FC -sub_80920FC: @ 80920FC - push {r4-r6,lr} - lsls r0, 24 - cmp r0, 0 - beq _08092138 - movs r2, 0 - ldr r6, _08092134 @ =sPSSData - movs r5, 0xE6 - lsls r5, 3 - movs r3, 0 - movs r4, 0x1 -_08092110: - ldr r1, [r6] - lsls r0, r2, 2 - adds r1, r5 - adds r1, r0 - ldr r0, [r1] - strh r4, [r0, 0x2E] - ldr r0, [r1] - strh r3, [r0, 0x30] - ldr r0, [r1] - strh r3, [r0, 0x32] - ldr r0, [r1] - strh r3, [r0, 0x36] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x1 - bls _08092110 - b _08092158 - .align 2, 0 -_08092134: .4byte sPSSData -_08092138: - movs r2, 0 - ldr r5, _08092160 @ =sPSSData - movs r4, 0xE6 - lsls r4, 3 - movs r3, 0 -_08092142: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r4 - adds r0, r1 - ldr r0, [r0] - strh r3, [r0, 0x2E] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x1 - bls _08092142 -_08092158: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08092160: .4byte sPSSData - thumb_func_end sub_80920FC - - thumb_func_start sub_8092164 -sub_8092164: @ 8092164 - push {lr} - adds r2, r0, 0 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x4 - bhi _08092230 - lsls r0, 2 - ldr r1, _0809217C @ =_08092180 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809217C: .4byte _08092180 - .align 2, 0 -_08092180: - .4byte _08092194 - .4byte _0809219A - .4byte _080921C8 - .4byte _080921CE - .4byte _08092220 -_08092194: - movs r0, 0 - strh r0, [r2, 0x24] - b _08092230 -_0809219A: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - movs r1, 0 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08092230 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x34] - ldrh r3, [r2, 0x24] - adds r0, r3 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - adds r0, 0x1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _08092230 - strh r1, [r2, 0x32] - strh r1, [r2, 0x24] - b _08092230 -_080921C8: - movs r0, 0x3 - strh r0, [r2, 0x2E] - b _08092230 -_080921CE: - ldr r0, _08092218 @ =sPSSData - ldr r1, [r0] - ldr r0, _0809221C @ =0x000002ce - adds r1, r0 - ldrh r0, [r2, 0x20] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2, 0x20] - subs r0, 0x49 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAE - bls _080921F4 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] -_080921F4: - ldrh r0, [r2, 0x30] - subs r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _08092230 - ldrh r0, [r2, 0x32] - strh r0, [r2, 0x20] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - movs r0, 0x4 - strh r0, [r2, 0x2E] - b _08092230 - .align 2, 0 -_08092218: .4byte sPSSData -_0809221C: .4byte 0x000002ce -_08092220: - ldr r0, _08092234 @ =sPSSData - ldr r0, [r0] - ldr r1, _08092238 @ =0x000002ce - adds r0, r1 - ldrh r1, [r2, 0x20] - ldrh r0, [r0] - subs r1, r0 - strh r1, [r2, 0x20] -_08092230: - pop {r0} - bx r0 - .align 2, 0 -_08092234: .4byte sPSSData -_08092238: .4byte 0x000002ce - thumb_func_end sub_8092164 - - thumb_func_start sub_809223C -sub_809223C: @ 809223C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r4, [sp, 0x18] - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080922A8 @ =gUnknown_83D2BB4 - lsls r5, 16 - asrs r5, 16 - lsls r6, 16 - asrs r6, 16 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r4, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080922B4 - movs r1, 0x1 - ands r1, r7 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r5, _080922AC @ =gSprites - adds r6, r4, r5 - adds r0, r6, 0 - bl StartSpriteAnim - movs r0, 0x3 - mov r1, r8 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r6, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6, 0x5] - adds r5, 0x1C - adds r4, r5 - ldr r0, _080922B0 @ =SpriteCallbackDummy - str r0, [r4] - adds r0, r6, 0 - b _080922B6 - .align 2, 0 -_080922A8: .4byte gUnknown_83D2BB4 -_080922AC: .4byte gSprites -_080922B0: .4byte SpriteCallbackDummy -_080922B4: - movs r0, 0 -_080922B6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809223C - @ file boundary? thumb_func_start sub_80922C0 diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s index 092eeed5a..7ff882ede 100644 --- a/data/pokemon_storage_system.s +++ b/data/pokemon_storage_system.s @@ -6,219 +6,6 @@ .section .rodata .align 2 -gUnknown_83CEC40:: @ 83CEC40 - .incbin "graphics/interface/pss_unk_83CEC40.gbapal" - -gUnknown_83CEC80:: @ 83CEC80 - .incbin "graphics/interface/pss_unk_83CEC80.4bpp.lz" - -gUnknown_83CF050:: @ 83CF050 - .incbin "graphics/interface/pss_unk_83CF050.bin.lz" - -gUnknown_83CF12C:: @ 83CF12C - .incbin "graphics/interface/pss_unk_83CF12C.gbapal" - -gUnknown_83CF16C:: @ 83CF16C - .incbin "graphics/interface/pss_unk_83CF16C.4bpp.lz" - -gUnknown_83CF374:: @ 83CF374 - .incbin "graphics/interface/pss_unk_83CF374.bin.lz" - -gUnknown_83CF424:: @ 83CF424 - .incbin "graphics/interface/pss_unk_83CF424.gbapal" - -gUnknown_83CF464:: @ 83CF464 - .incbin "graphics/interface/pss_unk_83CF464.4bpp.lz" - -gUnknown_83CF750:: @ 83CF750 - .incbin "graphics/interface/pss_unk_83CF750.bin.lz" - -gUnknown_83CF834:: @ 83CF834 - .incbin "graphics/interface/pss_unk_83CF834.gbapal" - -gUnknown_83CF874:: @ 83CF874 - .incbin "graphics/interface/pss_unk_83CF874.4bpp.lz" - -gUnknown_83CFA94:: @ 83CFA94 - .incbin "graphics/interface/pss_unk_83CFA94.bin.lz" - -gUnknown_83CFB60:: @ 83CFB60 - .incbin "graphics/interface/pss_unk_83CFB60.gbapal" - -gUnknown_83CFBA0:: @ 83CFBA0 - .incbin "graphics/interface/pss_unk_83CFBA0.4bpp.lz" - -gUnknown_83CFEF0:: @ 83CFEF0 - .incbin "graphics/interface/pss_unk_83CFEF0.bin.lz" - -gUnknown_83CFFC8:: @ 83CFFC8 - .incbin "graphics/interface/pss_unk_83CFFC8.gbapal" - -gUnknown_83D0008:: @ 83D0008 - .incbin "graphics/interface/pss_unk_83D0008.4bpp.lz" - .space 4 - -gUnknown_83D033C:: @ 83D033C - .incbin "graphics/interface/pss_unk_83D033C.bin.lz" - -gUnknown_83D0414:: @ 83D0414 - .incbin "graphics/interface/pss_unk_83D0414.gbapal" - -gUnknown_83D0454:: @ 83D0454 - .incbin "graphics/interface/pss_unk_83D0454.4bpp.lz" - -gUnknown_83D070C:: @ 83D070C - .incbin "graphics/interface/pss_unk_83D070C.bin.lz" - -gUnknown_83D07D8:: @ 83D07D8 - .incbin "graphics/interface/pss_unk_83D07D8.gbapal" - -gUnknown_83D0818:: @ 83D0818 - .incbin "graphics/interface/pss_unk_83D0818.4bpp.lz" - -gUnknown_83D0B5C:: @ 83D0B5C - .incbin "graphics/interface/pss_unk_83D0B5C.bin.lz" - -gUnknown_83D0C38:: @ 83D0C38 - .incbin "graphics/interface/pss_unk_83D0C38.gbapal" - -gUnknown_83D0C78:: @ 83D0C78 - .incbin "graphics/interface/pss_unk_83D0C78.4bpp.lz" - -gUnknown_83D0FFC:: @ 83D0FFC - .incbin "graphics/interface/pss_unk_83D0FFC.bin.lz" - -gUnknown_83D10E4:: @ 83D10E4 - .incbin "graphics/interface/pss_unk_83D10E4.gbapal" - -gUnknown_83D1124:: @ 83D1124 - .incbin "graphics/interface/pss_unk_83D1124.4bpp.lz" - -gUnknown_83D13D8:: @ 83D13D8 - .incbin "graphics/interface/pss_unk_83D13D8.bin.lz" - -gUnknown_83D14B4:: @ 83D14B4 - .incbin "graphics/interface/pss_unk_83D14B4.gbapal" - -gUnknown_83D14F4:: @ 83D14F4 - .incbin "graphics/interface/pss_unk_83D14F4.4bpp.lz" - -gUnknown_83D1788:: @ 83D1788 - .incbin "graphics/interface/pss_unk_83D1788.bin.lz" - -gUnknown_83D1874:: @ 83D1874 - .incbin "graphics/interface/pss_unk_83D1874.gbapal" - -gUnknown_83D18B4:: @ 83D18B4 - .incbin "graphics/interface/pss_unk_83D18B4.4bpp.lz" - -gUnknown_83D1B4C:: @ 83D1B4C - .incbin "graphics/interface/pss_unk_83D1B4C.bin.lz" - -gUnknown_83D1C2C:: @ 83D1C2C - .incbin "graphics/interface/pss_unk_83D1C2C.gbapal" - - .space 32 - -gUnknown_83D1C8C:: @ 83D1C8C - .incbin "graphics/interface/pss_unk_83D1C8C.4bpp.lz" - -gUnknown_83D1EC4:: @ 83D1EC4 - .incbin "graphics/interface/pss_unk_83D1EC4.bin.lz" - -gUnknown_83D1F94:: @ 83D1F94 - .incbin "graphics/interface/pss_unk_83D1F94.gbapal" - -gUnknown_83D1FD4:: @ 83D1FD4 - .incbin "graphics/interface/pss_unk_83D1FD4.4bpp.lz" - -gUnknown_83D22B8:: @ 83D22B8 - .incbin "graphics/interface/pss_unk_83D22B8.bin.lz" - -gUnknown_83D239C:: @ 83D239C - .incbin "graphics/interface/pss_unk_83D239C.gbapal" - -gUnknown_83D23DC:: @ 83D23DC - .incbin "graphics/interface/pss_unk_83D23DC.4bpp.lz" - -gUnknown_83D256C:: @ 83D256C - .incbin "graphics/interface/pss_unk_83D256C.bin.lz" - -gUnknown_83D2614:: @ 83D2614 - .incbin "graphics/interface/pss_unk_83D2614.gbapal" - -gUnknown_83D2654:: @ 83D2654 - .incbin "graphics/interface/pss_unk_83D2654.4bpp.lz" - -gUnknown_83D277C:: @ 83D277C - .incbin "graphics/interface/pss_unk_83D277C.bin.lz" - - .incbin "graphics/interface/pss_unk_83D2820.bin" - -gUnknown_83D29D0:: @ 83D29D0 - .incbin "graphics/interface/pss_unk_83D29D0.gbapal" - -gUnknown_83D2A10:: @ 83D2A10 - .4byte gUnknown_83CEC80, gUnknown_83CF050, gUnknown_83CEC40 - .4byte gUnknown_83CF16C, gUnknown_83CF374, gUnknown_83CF12C - .4byte gUnknown_83CF464, gUnknown_83CF750, gUnknown_83CF424 - .4byte gUnknown_83CF874, gUnknown_83CFA94, gUnknown_83CF834 - .4byte gUnknown_83CFBA0, gUnknown_83CFEF0, gUnknown_83CFB60 - .4byte gUnknown_83D0008, gUnknown_83D033C, gUnknown_83CFFC8 - .4byte gUnknown_83D0454, gUnknown_83D070C, gUnknown_83D0414 - .4byte gUnknown_83D0818, gUnknown_83D0B5C, gUnknown_83D07D8 - .4byte gUnknown_83D0C78, gUnknown_83D0FFC, gUnknown_83D0C38 - .4byte gUnknown_83D1124, gUnknown_83D13D8, gUnknown_83D10E4 - .4byte gUnknown_83D14F4, gUnknown_83D1788, gUnknown_83D14B4 - .4byte gUnknown_83D18B4, gUnknown_83D1B4C, gUnknown_83D1874 - .4byte gUnknown_83D1C8C, gUnknown_83D1EC4, gUnknown_83D1C2C - .4byte gUnknown_83D1FD4, gUnknown_83D22B8, gUnknown_83D1F94 - .4byte gUnknown_83D23DC, gUnknown_83D256C, gUnknown_83D239C - .4byte gUnknown_83D2654, gUnknown_83D277C, gUnknown_83D2614 - -gUnknown_83D2AD0:: - .incbin "graphics/interface/pss_unk_83D2AD0.4bpp" - .4byte 0x000023ba - -gUnknown_83D2B54:: @ 83D2B54 - obj_tiles gUnknown_83D2AD0, 0x0080, 6 - -gUnknown_83D2B5C:: - .4byte 0x80004000, 0x00000800 - -gUnknown_83D2B64:: - obj_image_anim_frame 0x0000, 5 - obj_image_anim_end - -gUnknown_83D2B6C:: - obj_image_anim_frame 0x0008, 5 - obj_image_anim_end - -gUnknown_83D2B74:: - .4byte gUnknown_83D2B64 - .4byte gUnknown_83D2B6C - -gUnknown_83D2B7C:: @ 83D2B7C - spr_template 3, 56009, gUnknown_83D2B5C, gUnknown_83D2B74, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83D2B94:: - .4byte 0x00008000, 0x00000800 - -gUnknown_83D2B9C:: - obj_image_anim_frame 0x0000, 5 - obj_image_anim_end - -gUnknown_83D2BA4:: - obj_image_anim_frame 0x0002, 5 - obj_image_anim_end - -gUnknown_83D2BAC:: - .4byte gUnknown_83D2B9C - .4byte gUnknown_83D2BA4 - -gUnknown_83D2BB4:: @ 83D2BB4 - spr_template 6, 56010, gUnknown_83D2B94, gUnknown_83D2BAC, NULL, gDummySpriteAffineAnimTable, sub_8092164 - gUnknown_83D2BCC:: .incbin "graphics/interface/pss_unk_83D2BCC.gbapal" diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 5b9876677..597694baf 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -4,6 +4,7 @@ #include "global.h" extern const u16 gMonIconPalettes[][16]; +extern const u8 gMonIconPaletteIndices[]; const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra); @@ -26,5 +27,6 @@ void LoadMonIconPalette(u16 iconId); void FreeMonIconPalette(u16 iconId); void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum); u8 GetMonIconPaletteIndexFromSpecies(u16 species); +u16 GetIconSpecies(u16 species, u32 personality); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 6ded8983c..7a98e1a77 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -36,7 +36,7 @@ void ZeroBoxMonAt(u8 boxId, u8 monPosition); void Cb2_ReturnToPSS(void); void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); -void DrawTextWindowAndBufferTiles(const u8 *name, void *a1, u8 a2, u8 a3, u8 *buffer, s32 a5); +void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer); void SetCurrentBox(u8 boxId); void SetBoxWallpaper(u8 boxId, u8 wallpaperId); struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h index 28b39cb7c..889651175 100644 --- a/include/pokemon_storage_system_internal.h +++ b/include/pokemon_storage_system_internal.h @@ -7,6 +7,8 @@ #define IN_BOX_COLUMNS 5 #define IN_BOX_ROWS 6 +#define MAX_MON_ICONS 40 + enum { MODE_PARTY, @@ -106,6 +108,14 @@ enum #define TAG_TILE_7 0x7 #define TAG_TILE_0 0x0 #define TAG_TILE_1 0x1 +#define TAG_TILE_6 0x6 + +struct WallpaperTable +{ + const u32 *tiles; + const u32 *tileMap; + const u16 *palettes; +}; struct StorageAction { @@ -202,7 +212,8 @@ struct PokemonStorageSystemData u16 field_2DE; u16 field_2E0; u8 filler[22]; - u8 field_2F8[1024]; + u8 field_2F8[512]; + u8 field_4F8[512]; u8 field_6F8; u8 field_6F9; u8 field_6FA; @@ -229,8 +240,8 @@ struct PokemonStorageSystemData /* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT]; /* 0afc */ struct Sprite **field_B00; /* 0b00 */ struct Sprite **field_B04; - /* 0b04 */ u16 field_B08[40]; - /* 0b54 */ u16 field_B58[40]; + /* 0b04 */ u16 field_B08[MAX_MON_ICONS]; + /* 0b54 */ u16 field_B58[MAX_MON_ICONS]; /* 0ba4 */ u16 boxSpecies[IN_BOX_COUNT]; /* 0be0 */ u32 boxPersonalities[IN_BOX_COUNT]; /* 0c58 */ u8 field_C5C; @@ -406,5 +417,8 @@ void InitMenu(void); void SetMenuText(u8 textId); void sub_8095C84(u8 cursorArea, u8 cursorPos); void sub_8095E2C(u16 itemId); +u8 GetBoxWallpaper(u8 boxId); +bool8 IsCursorOnBox(void); +bool8 IsCursorInBox(void); #endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c index da943f74b..521d7cf78 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_3.c @@ -100,6 +100,7 @@ void sub_808FB68(void); void PrintStorageActionText(u8 textId); void ShowYesNoWindow(s8 species); void ClearBottomWindow(void); + void AddWallpaperSetsMenu(void); void AddWallpapersMenu(u8 wallpaperSet); void sub_808FDFC(void); @@ -120,12 +121,28 @@ void DestroyAllPartyMonIcons(void); void sub_8091114(void); bool8 sub_8091150(void); void DestroyBoxMonIcon(struct Sprite * sprite); -bool8 IsCursorOnBox(void); -bool8 IsCursorInBox(void); void sub_80911B0(struct Sprite * sprite); void sub_80913DC(u8 box); + +void sub_8091420(u8 taskId); bool8 sub_809140C(void); +s8 sub_80916F4(u8 boxId); +void LoadWallpaperGfx(u8 wallpaperId, s8 direction); +bool32 WaitForWallpaperGfxLoad(void); +void sub_8091984(void *buffer, const void *buffer2, s8 direction, u8 baseBlock); +void sub_8091A24(void *buffer); +void sub_8091A94(u8 wallpaperId); +void sub_8091C48(u8 wallpaperId, s8 direction); +void sub_8091E84(struct Sprite * sprite); +void sub_8091EB8(struct Sprite * sprite); +s16 sub_8091F60(const u8 *boxName); +void sub_8091E34(void); +void sub_8091EF0(void); +void sub_8091F80(void); +void sub_809200C(s8 direction); +void sub_80920AC(void); void sub_80920FC(bool8 species); +void sub_8092164(struct Sprite * sprite); const u32 gPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/interface/pss_unk_83CE438.4bpp.lz"); const u32 gPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE4D0.bin.lz"); @@ -2841,14 +2858,18 @@ void sub_808FF70(void) } } +// ****************************************************************** +// Mon icons +// ****************************************************************** + void sub_808FFAC(void) { u16 i; LoadMonIconPalettes(); - for (i = 0; i < 40; i++) + for (i = 0; i < MAX_MON_ICONS; i++) sPSSData->field_B08[i] = 0; - for (i = 0; i < 40; i++) + for (i = 0; i < MAX_MON_ICONS; i++) sPSSData->field_B58[i] = 0; for (i = 0; i < PARTY_SIZE; i++) sPSSData->partySprites[i] = NULL; @@ -2859,10 +2880,6 @@ void sub_808FFAC(void) sPSSData->field_78C = 0; } -// ****************************************************************** -// Mon icons -// ****************************************************************** - u8 sub_8090058(void) { return (IsCursorInBox() ? 2 : 1); @@ -3434,3 +3451,826 @@ void sub_8090FC4(u8 mode, u8 position) StartSpriteAffineAnim(*sPSSData->field_B04, 0); } } + +bool8 sub_8091084(void) +{ + if (*sPSSData->field_B04 == NULL || (*sPSSData->field_B04)->invisible) + return FALSE; + + if ((*sPSSData->field_B04)->affineAnimEnded) + (*sPSSData->field_B04)->invisible = TRUE; + + return TRUE; +} + +void sub_80910CC(void) +{ + if (*sPSSData->field_B04 != NULL) + { + FreeOamMatrix((*sPSSData->field_B04)->oam.matrixNum); + DestroyBoxMonIcon(*sPSSData->field_B04); + *sPSSData->field_B04 = NULL; + } +} + +void sub_8091114(void) +{ + if (*sPSSData->field_B04 != NULL) + { + (*sPSSData->field_B04)->invisible = FALSE; + StartSpriteAffineAnim(*sPSSData->field_B04, 1); + } +} + +bool8 sub_8091150(void) +{ + if (sPSSData->field_B04 == NULL) + return FALSE; + + if ((*sPSSData->field_B04)->affineAnimEnded) + sPSSData->field_B04 = NULL; + + return TRUE; +} + +void SetMovingMonPriority(u8 priority) +{ + sPSSData->movingMonSprite->oam.priority = priority; +} + +void sub_80911B0(struct Sprite *sprite) +{ + sprite->pos1.x = sPSSData->field_CB4->pos1.x; + sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 4; +} + +u16 sub_80911D4(u16 species) +{ + u16 i, var; + + // Find the currently-allocated slot + for (i = 0; i < MAX_MON_ICONS; i++) + { + if (sPSSData->field_B58[i] == species) + break; + } + + if (i == MAX_MON_ICONS) + { + // Find the first empty slot + for (i = 0; i < MAX_MON_ICONS; i++) + { + if (sPSSData->field_B58[i] == SPECIES_NONE) + break; + } + if (i == MAX_MON_ICONS) + return 0xFFFF; + } + + sPSSData->field_B58[i] = species; + sPSSData->field_B08[i]++; + var = 16 * i; + CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + var * 32, 0x200); + + return var; +} + +void sub_8091290(u16 species) +{ + u16 i; + + for (i = 0; i < MAX_MON_ICONS; i++) + { + if (sPSSData->field_B58[i] == species) + { + if (--sPSSData->field_B08[i] == 0) + sPSSData->field_B58[i] = 0; + break; + } + } +} + +struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority) +{ + u16 tileNum; + u8 spriteId; + struct SpriteTemplate template = gUnknown_83CEBF0; + + species = GetIconSpecies(species, personality); + template.paletteTag = 0xDAC0 + gMonIconPaletteIndices[species]; + tileNum = sub_80911D4(species); + if (tileNum == 0xFFFF) + return NULL; + + spriteId = CreateSprite(&template, x, y, subpriority); + if (spriteId == MAX_SPRITES) + { + sub_8091290(species); + return NULL; + } + + gSprites[spriteId].oam.tileNum = tileNum; + gSprites[spriteId].oam.priority = oamPriority; + gSprites[spriteId].data[0] = species; + return &gSprites[spriteId]; +} + +void DestroyBoxMonIcon(struct Sprite *sprite) +{ + sub_8091290(sprite->data[0]); + DestroySprite(sprite); +} + +// ****************************************************************** +// Load wallpaper +// ****************************************************************** + +const u16 gUnknown_83CEC40[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal"); +const u32 gUnknown_83CEC80[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz"); +const u32 gUnknown_83CF050[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz"); +const u16 gUnknown_83CF12C[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal"); +const u32 gUnknown_83CF16C[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz"); +const u32 gUnknown_83CF374[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz"); +const u16 gUnknown_83CF424[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal"); +const u32 gUnknown_83CF464[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz"); +const u32 gUnknown_83CF750[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz"); +const u16 gUnknown_83CF834[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal"); +const u32 gUnknown_83CF874[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz"); +const u32 gUnknown_83CFA94[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz"); +const u16 gUnknown_83CFB60[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal"); +const u32 gUnknown_83CFBA0[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz"); +const u32 gUnknown_83CFEF0[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz"); +const u16 gUnknown_83CFFC8[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal"); +const u32 gUnknown_83D0008[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz"); +const u8 sSpace_83D0338[4] = {}; +const u32 gUnknown_83D033C[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz"); +const u16 gUnknown_83D0414[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal"); +const u32 gUnknown_83D0454[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz"); +const u32 gUnknown_83D070C[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz"); +const u16 gUnknown_83D07D8[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal"); +const u32 gUnknown_83D0818[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz"); +const u32 gUnknown_83D0B5C[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz"); +const u16 gUnknown_83D0C38[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal"); +const u32 gUnknown_83D0C78[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz"); +const u32 gUnknown_83D0FFC[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz"); +const u16 gUnknown_83D10E4[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal"); +const u32 gUnknown_83D1124[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz"); +const u32 gUnknown_83D13D8[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz"); +const u16 gUnknown_83D14B4[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal"); +const u32 gUnknown_83D14F4[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz"); +const u32 gUnknown_83D1788[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz"); +const u16 gUnknown_83D1874[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal"); +const u32 gUnknown_83D18B4[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz"); +const u32 gUnknown_83D1B4C[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz"); +const u16 gUnknown_83D1C2C[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal"); +const u8 sSpace_83D1C6C[32] = {}; +const u32 gUnknown_83D1C8C[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz"); +const u32 gUnknown_83D1EC4[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz"); +const u16 gUnknown_83D1F94[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal"); +const u32 gUnknown_83D1FD4[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz"); +const u32 gUnknown_83D22B8[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz"); +const u16 gUnknown_83D239C[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal"); +const u32 gUnknown_83D23DC[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz"); +const u32 gUnknown_83D256C[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz"); +const u16 gUnknown_83D2614[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal"); +const u32 gUnknown_83D2654[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz"); +const u32 gUnknown_83D277C[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz"); +const u16 gUnknown_83D2820[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin"); + +const u16 gUnknown_83D29D0[][2] = { + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)}, + {RGB( 7, 7, 7), RGB(31, 31, 31)} +}; + +const struct WallpaperTable gWallpaperTable[] = { + {gUnknown_83CEC80, gUnknown_83CF050, gUnknown_83CEC40}, + {gUnknown_83CF16C, gUnknown_83CF374, gUnknown_83CF12C}, + {gUnknown_83CF464, gUnknown_83CF750, gUnknown_83CF424}, + {gUnknown_83CF874, gUnknown_83CFA94, gUnknown_83CF834}, + {gUnknown_83CFBA0, gUnknown_83CFEF0, gUnknown_83CFB60}, + {gUnknown_83D0008, gUnknown_83D033C, gUnknown_83CFFC8}, + {gUnknown_83D0454, gUnknown_83D070C, gUnknown_83D0414}, + {gUnknown_83D0818, gUnknown_83D0B5C, gUnknown_83D07D8}, + {gUnknown_83D0C78, gUnknown_83D0FFC, gUnknown_83D0C38}, + {gUnknown_83D1124, gUnknown_83D13D8, gUnknown_83D10E4}, + {gUnknown_83D14F4, gUnknown_83D1788, gUnknown_83D14B4}, + {gUnknown_83D18B4, gUnknown_83D1B4C, gUnknown_83D1874}, + {gUnknown_83D1C8C, gUnknown_83D1EC4, gUnknown_83D1C2C}, + {gUnknown_83D1FD4, gUnknown_83D22B8, gUnknown_83D1F94}, + {gUnknown_83D23DC, gUnknown_83D256C, gUnknown_83D239C}, + {gUnknown_83D2654, gUnknown_83D277C, gUnknown_83D2614}, +}; + +const u16 gUnknown_83D2AD0[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp"); +const u8 sUnref_83D2B50[] = {0xba, 0x23}; + +const struct SpriteSheet gUnknown_83D2B54 = { + gUnknown_83D2AD0, 0x0080, TAG_TILE_6 +}; + +const struct OamData gUnknown_83D2B5C = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0 +}; + +const union AnimCmd gUnknown_83D2B64[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_83D2B6C[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83D2B74[] = { + gUnknown_83D2B64, + gUnknown_83D2B6C +}; + +const struct SpriteTemplate gUnknown_83D2B7C = { + .tileTag = TAG_TILE_3, + .paletteTag = TAG_PAL_DAC9, + .oam = &gUnknown_83D2B5C, + .anims = gUnknown_83D2B74, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +const struct OamData gUnknown_83D2B94 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0x000, + .priority = 2, + .paletteNum = 0 +}; + +const union AnimCmd gUnknown_83D2B9C[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_83D2BA4[] = { + ANIMCMD_FRAME(2, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83D2BAC[] = { + gUnknown_83D2B9C, + gUnknown_83D2BA4 +}; + +const struct SpriteTemplate gUnknown_83D2BB4 = { + .tileTag = TAG_TILE_6, + .paletteTag = TAG_PAL_WAVEFORM, + .oam = &gUnknown_83D2B94, + .anims = gUnknown_83D2BAC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8092164 +}; + +void sub_80913DC(u8 boxId) +{ + u8 taskId = CreateTask(sub_8091420, 2); + + gTasks[taskId].data[2] = boxId; +} + +bool8 sub_809140C(void) +{ + return FuncIsActiveTask(sub_8091420); +} + +void sub_8091420(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + sPSSData->field_2D2 = 0; + sPSSData->bg2_X = 0; + task->data[1] = RequestDma3Fill(0, sPSSData->field_4AC4, 0x1000, 1); + break; + case 1: + if (CheckForSpaceForDma3Request(task->data[1]) == -1) + return; + + SetBgTilemapBuffer(2, sPSSData->field_4AC4); + ShowBg(2); + break; + case 2: + LoadWallpaperGfx(task->data[2], 0); + break; + case 3: + if (!WaitForWallpaperGfxLoad()) + return; + + sub_8091A94(task->data[2]); + sub_8091F80(); + sub_80900D4(task->data[2]); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(27) | BGCNT_TXT512x256); + break; + case 4: + DestroyTask(taskId); + break; + default: + task->data[0] = 0; + return; + } + + task->data[0]++; +} + +void SetUpScrollToBox(u8 boxId) +{ + s8 direction = sub_80916F4(boxId); + + sPSSData->field_2CE = (direction > 0) ? 6 : -6; + sPSSData->field_2D3 = (direction > 0) ? 1 : 2; + sPSSData->field_2D0 = 32; + sPSSData->field_2D4 = boxId; + sPSSData->field_2D6 = (direction <= 0) ? 5 : 0; + sPSSData->field_2D8 = direction; + sPSSData->field_2DA = (direction > 0) ? 264 : 56; + sPSSData->field_2DC = (direction <= 0) ? 5 : 0; + sPSSData->field_2DE = 0; + sPSSData->field_2E0 = 2; + sPSSData->field_A64 = boxId; + sPSSData->field_A65 = direction; + sPSSData->field_A63 = 0; +} + +bool8 ScrollToBox(void) +{ + bool8 var; + + switch (sPSSData->field_A63) + { + case 0: + LoadWallpaperGfx(sPSSData->field_A64, sPSSData->field_A65); + sPSSData->field_A63++; + case 1: + if (!WaitForWallpaperGfxLoad()) + return TRUE; + + sub_8090574(sPSSData->field_A64, sPSSData->field_A65); + sub_8091C48(sPSSData->field_A64, sPSSData->field_A65); + sub_809200C(sPSSData->field_A65); + break; + case 2: + var = sub_809062C(); + if (sPSSData->field_2D0 != 0) + { + sPSSData->bg2_X += sPSSData->field_2CE; + if (--sPSSData->field_2D0 != 0) + return TRUE; + sub_8091E34(); + sub_80920AC(); + } + return var; + } + + sPSSData->field_A63++; + return TRUE; +} + +s8 sub_80916F4(u8 boxId) +{ + u8 i; + u8 currentBox = StorageGetCurrentBox(); + + for (i = 0; currentBox != boxId; i++) + { + currentBox++; + if (currentBox >= TOTAL_BOXES_COUNT) + currentBox = 0; + } + + return (i < TOTAL_BOXES_COUNT / 2) ? 1 : -1; +} + +void SetWallpaperForCurrentBox(u8 wallpaperId) +{ + u8 boxId = StorageGetCurrentBox(); + SetBoxWallpaper(boxId, wallpaperId); + sPSSData->wallpaperChangeState = 0; +} + +bool8 DoWallpaperGfxChange(void) +{ + switch (sPSSData->wallpaperChangeState) + { + case 0: + BeginNormalPaletteFade(sPSSData->field_738, 1, 0, 16, RGB_WHITEALPHA); + sPSSData->wallpaperChangeState++; + break; + case 1: + if (!UpdatePaletteFade()) + { + u8 curBox = StorageGetCurrentBox(); + LoadWallpaperGfx(curBox, 0); + sPSSData->wallpaperChangeState++; + } + break; + case 2: + if (WaitForWallpaperGfxLoad() == TRUE) + { + sub_8091EF0(); + BeginNormalPaletteFade(sPSSData->field_738, 1, 16, 0, RGB_WHITEALPHA); + sPSSData->wallpaperChangeState++; + } + break; + case 3: + if (!UpdatePaletteFade()) + sPSSData->wallpaperChangeState++; + break; + case 4: + return FALSE; + } + + return TRUE; +} + +void LoadWallpaperGfx(u8 boxId, s8 direction) +{ + u8 wallpaperId; + const struct WallpaperTable *wallpaperGfx; + void *iconGfx; + u32 size1, size2; + + sPSSData->field_6F9 = 0; + sPSSData->field_6FA = boxId; + sPSSData->field_6FB = direction; + if (sPSSData->field_6FB != 0) + { + sPSSData->field_2D2 = (sPSSData->field_2D2 == 0); + sub_8091A24(sPSSData->field_4AC4); + } + + wallpaperId = GetBoxWallpaper(sPSSData->field_6FA); + wallpaperGfx = &gWallpaperTable[wallpaperId]; + LZ77UnCompWram(wallpaperGfx->tileMap, sPSSData->field_792); + sub_8091984(sPSSData->field_4AC4, sPSSData->field_792, sPSSData->field_6FB, sPSSData->field_2D2); + + if (sPSSData->field_6FB != 0) + LoadPalette(wallpaperGfx->palettes, (sPSSData->field_2D2 * 32) + 0x40, 0x40); + else + CpuCopy16(wallpaperGfx->palettes, &gPlttBufferUnfaded[(sPSSData->field_2D2 * 32) + 0x40], 0x40); + + DecompressAndLoadBgGfxUsingHeap(2, wallpaperGfx->tiles, 0, 256 * sPSSData->field_2D2, 0); + + CopyBgTilemapBufferToVram(2); +} + +bool32 WaitForWallpaperGfxLoad(void) +{ + if (IsDma3ManagerBusyWithBgCopy() == TRUE) + return FALSE; + + return TRUE; +} + +void sub_8091984(void *buffer, const void *tilemap, s8 direction, u8 arg2) +{ + s16 var = (arg2 * 2) + 3; + s16 x = ((sPSSData->bg2_X / 8 + 10) + (direction * 24)) & 0x3F; + + CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 0x14, 0x12, x, 2, 0x14, 0x12, 0x11, arg2 << 8, var); + + if (direction == 0) + return; + else if (direction > 0) + x *= 1, x += 0x14; // x * 1 is needed to match, but can be safely removed as it makes no functional difference + else + x -= 4; + + FillBgTilemapBufferRect(2, 0, x, 2, 4, 0x12, 0x11); +} + +void sub_8091A24(void *arg0) +{ + u16 i; + u16 *dest = arg0; + s16 r3 = ((sPSSData->bg2_X / 8) + 30) & 0x3F; + + if (r3 <= 31) + dest += r3 + 0x260; + else + dest += r3 + 0x640; + + for (i = 0; i < 0x2C; i++) + { + *dest++ = 0; + r3 = (r3 + 1) & 0x3F; + if (r3 == 0) + dest -= 0x420; + if (r3 == 0x20) + dest += 0x3e0; + } +} + +void sub_8091A94(u8 boxId) +{ + u8 tagIndex; + s16 r6; + u16 i; + + struct SpriteSheet spriteSheet = {sPSSData->field_2F8, 0x200, TAG_TILE_3}; + struct SpritePalette palettes[] = { + {sPSSData->field_6FC, TAG_PAL_DAC9}, + {} + }; + + u16 wallpaperId = GetBoxWallpaper(boxId); + + sPSSData->field_6FC[14] = gUnknown_83D29D0[wallpaperId][0]; + sPSSData->field_6FC[15] = gUnknown_83D29D0[wallpaperId][1]; + LoadSpritePalettes(palettes); + sPSSData->field_738 = 0x3f0; + + tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9); + sPSSData->field_71C = 0x10e + 16 * tagIndex; + sPSSData->field_738 |= 0x10000 << tagIndex; + + tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9); + sPSSData->field_71E = 0x10e + 16 * tagIndex; + sPSSData->field_738 |= 0x10000 << tagIndex; + + StringCopyPadded(sPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8); + DrawTextWindowAndBufferTiles(sPSSData->field_21B8, sPSSData->field_2F8, 0, 0, sPSSData->field_4F8, 2); + LoadSpriteSheet(&spriteSheet); + r6 = sub_8091F60(GetBoxNamePtr(boxId)); + + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&gUnknown_83D2B7C, r6 + i * 32, 28, 24); + sPSSData->field_720[i] = &gSprites[spriteId]; + StartSpriteAnim(sPSSData->field_720[i], i); + } + sPSSData->field_6F8 = 0; +} + +void sub_8091C48(u8 boxId, s8 direction) +{ + u16 r8; + s16 x, x2; + u16 i; + struct SpriteSheet spriteSheet = {sPSSData->field_2F8, 0x200, TAG_TILE_3}; + struct SpriteTemplate template = gUnknown_83D2B7C; + + sPSSData->field_6F8 = (sPSSData->field_6F8 == 0); + if (sPSSData->field_6F8 == 0) + { + spriteSheet.tag = TAG_TILE_3; + r8 = sPSSData->field_71C; + } + else + { + spriteSheet.tag = TAG_TILE_4; + r8 = sPSSData->field_71C; + template.tileTag = TAG_TILE_4; + template.paletteTag = TAG_PAL_DAC9; + } + + StringCopyPadded(sPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8); + DrawTextWindowAndBufferTiles(sPSSData->field_21B8, sPSSData->field_2F8, 0, 0, sPSSData->field_4F8, 2); + LoadSpriteSheet(&spriteSheet); + LoadPalette(gUnknown_83D29D0[GetBoxWallpaper(boxId)], r8, 4); + x = sub_8091F60(GetBoxNamePtr(boxId)); + x2 = x; + x2 += direction * 192; + + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&template, i * 32 + x2, 28, 24); + + sPSSData->field_728[i] = &gSprites[spriteId]; + sPSSData->field_728[i]->data[0] = (-direction) * 6; + sPSSData->field_728[i]->data[1] = i * 32 + x; + sPSSData->field_728[i]->data[2] = 0; + sPSSData->field_728[i]->callback = sub_8091E84; + StartSpriteAnim(sPSSData->field_728[i], i); + + sPSSData->field_720[i]->data[0] = (-direction) * 6; + sPSSData->field_720[i]->data[1] = 1; + sPSSData->field_720[i]->callback = sub_8091EB8; + } +} + +void sub_8091E34(void) +{ + if (sPSSData->field_6F8 == 0) + FreeSpriteTilesByTag(TAG_TILE_4); + else + FreeSpriteTilesByTag(TAG_TILE_3); + + sPSSData->field_720[0] = sPSSData->field_728[0]; + sPSSData->field_720[1] = sPSSData->field_728[1]; +} + +void sub_8091E84(struct Sprite *sprite) +{ + if (sprite->data[2] != 0) + sprite->data[2]--; + else if ((sprite->pos1.x += sprite->data[0]) == sprite->data[1]) + sprite->callback = SpriteCallbackDummy; +} + +void sub_8091EB8(struct Sprite *sprite) +{ + if (sprite->data[1] != 0) + { + sprite->data[1]--; + } + else + { + sprite->pos1.x += sprite->data[0]; + sprite->data[2] = sprite->pos1.x + sprite->pos2.x; + if (sprite->data[2] < 0x40 || sprite->data[2] > 0x100) + DestroySprite(sprite); + } +} + +void sub_8091EF0(void) +{ + u8 boxId = StorageGetCurrentBox(); + u8 wallpaperId = GetBoxWallpaper(boxId); + if (sPSSData->field_6F8 == 0) + CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + sPSSData->field_71C, 4); + else + CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + sPSSData->field_71E, 4); +} + +s16 sub_8091F60(const u8 *string) +{ + return 0xB0 - GetStringWidth(1, string, 0) / 2; +} + +void sub_8091F80(void) +{ + u16 i; + + LoadSpriteSheet(&gUnknown_83D2B54); + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&gUnknown_83D2BB4, 0x5c + i * 0x88, 28, 22); + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = &gSprites[spriteId]; + StartSpriteAnim(sprite, i); + sprite->data[3] = (i == 0) ? -1 : 1; + sPSSData->field_730[i] = sprite; + } + } + if (IsCursorOnBox()) + sub_80920FC(TRUE); +} + +void sub_809200C(s8 direction) +{ + u16 i; + + for (i = 0; i < 2; i++) + { + sPSSData->field_730[i]->pos2.x = 0; + sPSSData->field_730[i]->data[0] = 2; + } + if (direction < 0) + { + sPSSData->field_730[0]->data[1] = 29; + sPSSData->field_730[1]->data[1] = 5; + sPSSData->field_730[0]->data[2] = 0x48; + sPSSData->field_730[1]->data[2] = 0x48; + } + else + { + sPSSData->field_730[0]->data[1] = 5; + sPSSData->field_730[1]->data[1] = 29; + sPSSData->field_730[0]->data[2] = 0xF8; + sPSSData->field_730[1]->data[2] = 0xF8; + } + sPSSData->field_730[0]->data[7] = 0; + sPSSData->field_730[1]->data[7] = 1; +} + +void sub_80920AC(void) +{ + u16 i; + + for (i = 0; i < 2; i++) + { + sPSSData->field_730[i]->pos1.x = 0x88 * i + 0x5c; + sPSSData->field_730[i]->pos2.x = 0; + sPSSData->field_730[i]->invisible = FALSE; + } + sub_80920FC(TRUE); +} + +void sub_80920FC(bool8 a0) +{ + u16 i; + + if (a0) + { + for (i = 0; i < 2; i++) + { + sPSSData->field_730[i]->data[0] = 1; + sPSSData->field_730[i]->data[1] = 0; + sPSSData->field_730[i]->data[2] = 0; + sPSSData->field_730[i]->data[4] = 0; + } + } + else + { + for (i = 0; i < 2; i++) + { + sPSSData->field_730[i]->data[0] = 0; + } + } +} + +void sub_8092164(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.x = 0; + break; + case 1: + if (++sprite->data[1] > 3) + { + sprite->data[1] = 0; + sprite->pos2.x += sprite->data[3]; + if (++sprite->data[2] > 5) + { + sprite->data[2] = 0; + sprite->pos2.x = 0; + } + } + break; + case 2: + sprite->data[0] = 3; + break; + case 3: + sprite->pos1.x -= sPSSData->field_2CE; + if (sprite->pos1.x < 73 || sprite->pos1.x > 247) + sprite->invisible = TRUE; + if (--sprite->data[1] == 0) + { + sprite->pos1.x = sprite->data[2]; + sprite->invisible = FALSE; + sprite->data[0] = 4; + } + break; + case 4: + sprite->pos1.x -= sPSSData->field_2CE; + break; + } +} + +struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority) +{ + u8 spriteId = CreateSprite(&gUnknown_83D2BB4, x, y, subpriority); + if (spriteId == MAX_SPRITES) + return NULL; + + animId %= 2; + StartSpriteAnim(&gSprites[spriteId], animId); + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].callback = SpriteCallbackDummy; + return &gSprites[spriteId]; +} |