diff options
45 files changed, 9604 insertions, 24045 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s deleted file mode 100644 index 3227d5dcd..000000000 --- a/asm/pokemon_storage_system.s +++ /dev/null @@ -1,23034 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_808B9C0 -sub_808B9C0: @ 808B9C0 - push {lr} - ldr r1, _0808B9D0 @ =gPokemonStoragePtr - ldr r1, [r1] - ldr r2, _0808B9D4 @ =0x000083d0 - bl memcpy - pop {r0} - bx r0 - .align 2, 0 -_0808B9D0: .4byte gPokemonStoragePtr -_0808B9D4: .4byte 0x000083d0 - thumb_func_end sub_808B9C0 - - thumb_func_start sub_808B9D8 -sub_808B9D8: @ 808B9D8 - push {lr} - adds r1, r0, 0 - ldr r0, _0808B9EC @ =gPokemonStoragePtr - ldr r0, [r0] - ldr r2, _0808B9F0 @ =0x000083d0 - bl memcpy - pop {r0} - bx r0 - .align 2, 0 -_0808B9EC: .4byte gPokemonStoragePtr -_0808B9F0: .4byte 0x000083d0 - thumb_func_end sub_808B9D8 - - thumb_func_start StorageGetCurrentBox -StorageGetCurrentBox: @ 808B9F4 - ldr r0, _0808B9FC @ =gPokemonStoragePtr - ldr r0, [r0] - ldrb r0, [r0] - bx lr - .align 2, 0 -_0808B9FC: .4byte gPokemonStoragePtr - thumb_func_end StorageGetCurrentBox - - thumb_func_start sub_808BA00 -sub_808BA00: @ 808BA00 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xD - bhi _0808BA10 - ldr r0, _0808BA14 @ =gPokemonStoragePtr - ldr r0, [r0] - strb r1, [r0] -_0808BA10: - pop {r0} - bx r0 - .align 2, 0 -_0808BA14: .4byte gPokemonStoragePtr - thumb_func_end sub_808BA00 - - thumb_func_start GetBoxMonDataFromAnyBox -GetBoxMonDataFromAnyBox: @ 808BA18 - push {r4,r5,lr} - adds r5, r2, 0 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r3, 0xD - bhi _0808BA54 - cmp r4, 0x1D - bhi _0808BA54 - ldr r2, _0808BA50 @ =gPokemonStoragePtr - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - adds r0, r1 - adds r1, r5, 0 - bl GetBoxMonData - b _0808BA56 - .align 2, 0 -_0808BA50: .4byte gPokemonStoragePtr -_0808BA54: - movs r0, 0 -_0808BA56: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetBoxMonDataFromAnyBox - - thumb_func_start SetBoxMonDataFromAnyBox -SetBoxMonDataFromAnyBox: @ 808BA5C - push {r4-r6,lr} - adds r5, r2, 0 - adds r6, r3, 0 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r3, 0xD - bhi _0808BA94 - cmp r4, 0x1D - bhi _0808BA94 - ldr r2, _0808BA9C @ =gPokemonStoragePtr - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - adds r0, r1 - adds r1, r5, 0 - adds r2, r6, 0 - bl SetBoxMonData -_0808BA94: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808BA9C: .4byte gPokemonStoragePtr - thumb_func_end SetBoxMonDataFromAnyBox - - thumb_func_start GetBoxMonDataFromSelectedBox -GetBoxMonDataFromSelectedBox: @ 808BAA0 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _0808BABC @ =gPokemonStoragePtr - ldr r0, [r0] - ldrb r0, [r0] - adds r1, r3, 0 - bl GetBoxMonDataFromAnyBox - pop {r1} - bx r1 - .align 2, 0 -_0808BABC: .4byte gPokemonStoragePtr - thumb_func_end GetBoxMonDataFromSelectedBox - - thumb_func_start SetBoxMonDataFromSelectedBox -SetBoxMonDataFromSelectedBox: @ 808BAC0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0808BAE0 @ =gPokemonStoragePtr - ldr r0, [r0] - ldrb r0, [r0] - adds r1, r4, 0 - adds r2, r5, 0 - bl SetBoxMonDataFromAnyBox - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808BAE0: .4byte gPokemonStoragePtr - thumb_func_end SetBoxMonDataFromSelectedBox - - thumb_func_start GetBoxMonNickFromAnyBox -GetBoxMonNickFromAnyBox: @ 808BAE4 - push {r4,r5,lr} - adds r5, r2, 0 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r3, 0xD - bhi _0808BB20 - cmp r4, 0x1D - bhi _0808BB20 - ldr r2, _0808BB1C @ =gPokemonStoragePtr - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - adds r0, r1 - movs r1, 0x2 - adds r2, r5, 0 - bl GetBoxMonData - b _0808BB24 - .align 2, 0 -_0808BB1C: .4byte gPokemonStoragePtr -_0808BB20: - movs r0, 0xFF - strb r0, [r5] -_0808BB24: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetBoxMonNickFromAnyBox - - thumb_func_start SetBoxMonNickFromAnyBox -SetBoxMonNickFromAnyBox: @ 808BB2C - push {r4,r5,lr} - adds r5, r2, 0 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r3, 0xD - bhi _0808BB62 - cmp r4, 0x1D - bhi _0808BB62 - ldr r2, _0808BB68 @ =gPokemonStoragePtr - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - adds r0, r1 - movs r1, 0x2 - adds r2, r5, 0 - bl SetBoxMonData -_0808BB62: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808BB68: .4byte gPokemonStoragePtr - thumb_func_end SetBoxMonNickFromAnyBox - - thumb_func_start GetAndCopyBoxMonDataFromAnyBox -GetAndCopyBoxMonDataFromAnyBox: @ 808BB6C - push {r4-r6,lr} - adds r5, r2, 0 - adds r6, r3, 0 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r3, 0xD - bhi _0808BBAC - cmp r4, 0x1D - bhi _0808BBAC - ldr r2, _0808BBA8 @ =gPokemonStoragePtr - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - adds r0, r1 - adds r1, r5, 0 - adds r2, r6, 0 - bl GetBoxMonData - b _0808BBAE - .align 2, 0 -_0808BBA8: .4byte gPokemonStoragePtr -_0808BBAC: - movs r0, 0 -_0808BBAE: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetAndCopyBoxMonDataFromAnyBox - - thumb_func_start CopyBoxMonFromAnyBox -CopyBoxMonFromAnyBox: @ 808BBB4 - push {r4,r5,lr} - adds r5, r2, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r4, 0xD - bhi _0808BBEA - cmp r1, 0x1D - bhi _0808BBEA - ldr r0, _0808BBF0 @ =gPokemonStoragePtr - ldr r0, [r0] - lsls r3, r1, 2 - adds r3, r1 - lsls r3, 4 - lsls r2, r4, 2 - adds r2, r4 - lsls r1, r2, 4 - subs r1, r2 - lsls r1, 5 - adds r3, r1 - adds r0, r3 - adds r0, 0x4 - adds r1, r5, 0 - movs r2, 0x50 - bl memcpy -_0808BBEA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808BBF0: .4byte gPokemonStoragePtr - thumb_func_end CopyBoxMonFromAnyBox - - thumb_func_start sub_808BBF4 -sub_808BBF4: @ 808BBF4 - push {r4,r5,lr} - adds r5, r2, 0 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r2, r1, 24 - cmp r4, 0xD - bhi _0808BC2A - cmp r2, 0x1D - bhi _0808BC2A - ldr r0, _0808BC30 @ =gPokemonStoragePtr - ldr r1, [r0] - lsls r3, r2, 2 - adds r3, r2 - lsls r3, 4 - lsls r2, r4, 2 - adds r2, r4 - lsls r0, r2, 4 - subs r0, r2 - lsls r0, 5 - adds r3, r0 - adds r1, r3 - adds r1, 0x4 - adds r0, r5, 0 - movs r2, 0x50 - bl memcpy -_0808BC2A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808BC30: .4byte gPokemonStoragePtr - thumb_func_end sub_808BBF4 - - thumb_func_start sub_808BC34 -sub_808BC34: @ 808BC34 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - ldr r4, [sp, 0x30] - ldr r5, [sp, 0x34] - ldr r6, [sp, 0x3C] - mov r12, r6 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 16 - lsrs r2, 16 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r0, r12 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r7, 0xD - bhi _0808BCA0 - cmp r6, 0x1D - bhi _0808BCA0 - ldr r2, _0808BCB0 @ =gPokemonStoragePtr - lsls r0, r7, 2 - adds r0, r7 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 4 - adds r0, r1 - str r5, [sp] - ldr r1, [sp, 0x38] - str r1, [sp, 0x4] - str r3, [sp, 0x8] - ldr r1, [sp, 0x40] - str r1, [sp, 0xC] - mov r1, r9 - mov r2, r8 - adds r3, r4, 0 - bl CreateBoxMon -_0808BCA0: - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808BCB0: .4byte gPokemonStoragePtr - thumb_func_end sub_808BC34 - - thumb_func_start sub_808BCB4 -sub_808BCB4: @ 808BCB4 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r3, 0xD - bhi _0808BCE4 - cmp r4, 0x1D - bhi _0808BCE4 - ldr r2, _0808BCEC @ =gPokemonStoragePtr - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - adds r0, r1 - bl ZeroBoxMonData -_0808BCE4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808BCEC: .4byte gPokemonStoragePtr - thumb_func_end sub_808BCB4 - - thumb_func_start sub_808BCF0 -sub_808BCF0: @ 808BCF0 - push {r4,r5,lr} - adds r5, r2, 0 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r3, 0xD - bhi _0808BD24 - cmp r4, 0x1D - bhi _0808BD24 - ldr r2, _0808BD2C @ =gPokemonStoragePtr - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - adds r0, r1 - adds r1, r5, 0 - bl BoxMonToMon -_0808BD24: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808BD2C: .4byte gPokemonStoragePtr - thumb_func_end sub_808BCF0 - - thumb_func_start GetBoxedMonPtr -GetBoxedMonPtr: @ 808BD30 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r3, 0xD - bhi _0808BD64 - cmp r4, 0x1D - bhi _0808BD64 - ldr r2, _0808BD60 @ =gPokemonStoragePtr - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 5 - adds r1, 0x4 - ldr r0, [r2] - adds r0, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - adds r0, r1 - b _0808BD66 - .align 2, 0 -_0808BD60: .4byte gPokemonStoragePtr -_0808BD64: - movs r0, 0 -_0808BD66: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetBoxedMonPtr - - thumb_func_start GetBoxNamePtr -GetBoxNamePtr: @ 808BD6C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xD - bls _0808BD7A - movs r0, 0 - b _0808BD88 -_0808BD7A: - ldr r0, _0808BD8C @ =gPokemonStoragePtr - lsls r1, r2, 3 - adds r1, r2 - ldr r2, _0808BD90 @ =0x00008344 - adds r1, r2 - ldr r0, [r0] - adds r0, r1 -_0808BD88: - pop {r1} - bx r1 - .align 2, 0 -_0808BD8C: .4byte gPokemonStoragePtr -_0808BD90: .4byte 0x00008344 - thumb_func_end GetBoxNamePtr - - thumb_func_start sub_808BD94 -sub_808BD94: @ 808BD94 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xD - bls _0808BDA2 - movs r0, 0 - b _0808BDAE -_0808BDA2: - ldr r0, _0808BDB4 @ =gPokemonStoragePtr - ldr r0, [r0] - ldr r2, _0808BDB8 @ =0x000083c2 - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] -_0808BDAE: - pop {r1} - bx r1 - .align 2, 0 -_0808BDB4: .4byte gPokemonStoragePtr -_0808BDB8: .4byte 0x000083c2 - thumb_func_end sub_808BD94 - - thumb_func_start sub_808BDBC -sub_808BDBC: @ 808BDBC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r2, 0xD - bhi _0808BDDA - cmp r1, 0xF - bhi _0808BDDA - ldr r0, _0808BDE0 @ =gPokemonStoragePtr - ldr r0, [r0] - ldr r3, _0808BDE4 @ =0x000083c2 - adds r0, r3 - adds r0, r2 - strb r1, [r0] -_0808BDDA: - pop {r0} - bx r0 - .align 2, 0 -_0808BDE0: .4byte gPokemonStoragePtr -_0808BDE4: .4byte 0x000083c2 - thumb_func_end sub_808BDBC - - thumb_func_start sub_808BDE8 -sub_808BDE8: @ 808BDE8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - lsls r1, 24 - lsrs r0, r1, 24 - lsls r2, 24 - lsrs r7, r2, 24 - lsls r3, 24 - lsrs r3, 24 - adds r4, r3, 0 - ldr r2, _0808BE4C @ =0x0000ffff - cmp r3, 0x1 - bhi _0808BE0A - movs r2, 0x1 - cmp r3, 0x1 - beq _0808BE0E -_0808BE0A: - cmp r4, 0x3 - bne _0808BE58 -_0808BE0E: - lsls r0, 24 - asrs r0, 24 - lsls r2, 16 - asrs r1, r2, 16 - adds r1, r0 - lsls r0, r1, 16 - asrs r1, r0, 16 - adds r6, r2, 0 - cmp r1, 0 - blt _0808BEA4 - cmp r1, r7 - bgt _0808BEA4 -_0808BE26: - asrs r4, r0, 16 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - add r0, r8 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - bne _0808BE50 - asrs r0, r6, 16 - adds r0, r4, r0 - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - blt _0808BEA4 - cmp r2, r7 - ble _0808BE26 - b _0808BEA4 - .align 2, 0 -_0808BE4C: .4byte 0x0000ffff -_0808BE50: - adds r0, r4, 0 - b _0808BEA8 -_0808BE54: - adds r0, r5, 0 - b _0808BEA8 -_0808BE58: - lsls r0, 24 - asrs r0, 24 - lsls r2, 16 - asrs r1, r2, 16 - adds r1, r0 - lsls r0, r1, 16 - asrs r1, r0, 16 - adds r6, r2, 0 - cmp r1, 0 - blt _0808BEA4 - cmp r1, r7 - bgt _0808BEA4 -_0808BE70: - asrs r5, r0, 16 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 4 - mov r1, r8 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _0808BE94 - adds r0, r4, 0 - movs r1, 0x2D - bl GetBoxMonData - cmp r0, 0 - beq _0808BE54 -_0808BE94: - asrs r0, r6, 16 - adds r0, r5, r0 - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - blt _0808BEA4 - cmp r2, r7 - ble _0808BE70 -_0808BEA4: - movs r0, 0x1 - negs r0, r0 -_0808BEA8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_808BDE8 - - thumb_func_start PSS_RenderTextToVramViaBuffer -PSS_RenderTextToVramViaBuffer: @ 808BEB4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - str r0, [sp, 0x24] - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x28] - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - movs r0, 0 - movs r1, 0 - str r0, [sp, 0x1C] - str r1, [sp, 0x20] - ldr r1, _0808BF30 @ =0x00ffffff - ldr r0, [sp, 0x1C] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 21 - orrs r0, r1 - str r0, [sp, 0x1C] - ldr r1, _0808BF34 @ =0xffffff00 - add r5, sp, 0x1C - ldr r0, [r5, 0x4] - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - str r0, [r5, 0x4] - adds r0, r5, 0 - bl AddWindow - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r4, r0, 24 - lsrs r4, 24 - mov r0, r9 - lsls r1, r0, 4 - orrs r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - movs r1, 0x7 - bl GetWindowAttribute - adds r6, r0, 0 - ldrb r0, [r5, 0x3] - lsls r0, 5 - adds r0, r6 - mov r8, r0 - ldr r1, [sp, 0x28] - cmp r1, 0 - bne _0808BF38 - add r0, sp, 0x14 - b _0808BF3C - .align 2, 0 -_0808BF30: .4byte 0x00ffffff -_0808BF34: .4byte 0xffffff00 -_0808BF38: - add r0, sp, 0x14 - mov r1, r9 -_0808BF3C: - strb r1, [r0] - add r1, sp, 0x14 - movs r2, 0 - movs r0, 0xF - strb r0, [r1, 0x1] - movs r0, 0xE - strb r0, [r1, 0x2] - mov r0, r10 - lsls r4, r0, 24 - lsrs r0, r4, 24 - str r2, [sp] - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0xC] - ldr r1, [sp, 0x24] - str r1, [sp, 0x10] - movs r1, 0x1 - movs r3, 0x2 - bl AddTextPrinterParameterized4 - ldr r0, [sp, 0x50] - mov r10, r4 - cmp r0, 0x6 - ble _0808BF72 - movs r0, 0x6 -_0808BF72: - ldr r4, [sp, 0x50] - subs r4, 0x6 - cmp r0, 0 - ble _0808BFA4 - adds r5, r0, 0 -_0808BF7C: - adds r0, r6, 0 - adds r1, r7, 0 - movs r2, 0x40 - bl CpuSet - adds r1, r7, 0 - adds r1, 0x80 - mov r0, r8 - movs r2, 0x40 - bl CpuSet - adds r6, 0x80 - movs r2, 0x80 - add r8, r2 - movs r0, 0x80 - lsls r0, 1 - adds r7, r0 - subs r5, 0x1 - cmp r5, 0 - bne _0808BF7C -_0808BFA4: - cmp r4, 0 - ble _0808BFC4 - add r0, sp, 0x18 - mov r2, r9 - lsls r1, r2, 4 - orrs r1, r2 - strh r1, [r0] - lsls r2, r4, 7 - ldr r1, _0808BFDC @ =0x001fffff - ands r2, r1 - movs r1, 0x80 - lsls r1, 17 - orrs r2, r1 - adds r1, r7, 0 - bl CpuSet -_0808BFC4: - mov r1, r10 - lsrs r0, r1, 24 - bl RemoveWindow - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808BFDC: .4byte 0x001fffff - thumb_func_end PSS_RenderTextToVramViaBuffer - - thumb_func_start sub_808BFE0 -sub_808BFE0: @ 808BFE0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - str r0, [sp, 0x20] - str r1, [sp, 0x24] - adds r6, r3, 0 - ldr r0, [sp, 0x4C] - mov r9, r0 - ldr r1, [sp, 0x50] - mov r10, r1 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0x28] - lsls r6, 24 - lsrs r6, 24 - mov r2, r9 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - movs r0, 0 - movs r1, 0 - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - ldr r0, [sp, 0x20] - bl StringLength_Multibyte - lsls r0, 24 - ldr r2, _0808C0CC @ =0x00ffffff - ldr r1, [sp, 0x18] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x18] - ldr r1, _0808C0D0 @ =0xffffff00 - add r2, sp, 0x18 - mov r8, r2 - ldr r0, [r2, 0x4] - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - str r0, [r2, 0x4] - ldr r5, [sp, 0x18] - lsrs r5, 24 - lsls r5, 5 - mov r0, r8 - bl AddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, r6, 4 - orrs r1, r6 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - movs r1, 0x7 - bl GetWindowAttribute - adds r7, r0, 0 - mov r0, r8 - ldrb r0, [r0, 0x3] - lsls r0, 5 - mov r8, r0 - add r8, r7 - add r0, sp, 0x14 - movs r1, 0 - strb r6, [r0] - mov r2, r9 - strb r2, [r0, 0x1] - mov r2, r10 - strb r2, [r0, 0x2] - str r1, [sp] - str r1, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0xC] - ldr r0, [sp, 0x20] - str r0, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - movs r3, 0x2 - bl AddTextPrinterParameterized4 - lsrs r5, 1 - adds r0, r7, 0 - ldr r1, [sp, 0x24] - adds r2, r5, 0 - bl CpuSet - ldr r2, [sp, 0x24] - ldr r0, [sp, 0x28] - adds r1, r2, r0 - mov r0, r8 - adds r2, r5, 0 - bl CpuSet - adds r0, r4, 0 - bl RemoveWindow - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808C0CC: .4byte 0x00ffffff -_0808C0D0: .4byte 0xffffff00 - thumb_func_end sub_808BFE0 - - thumb_func_start CountMonsInBox -CountMonsInBox: @ 808C0D4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - movs r5, 0 -_0808C0DE: - lsls r1, r4, 24 - lsrs r1, 24 - adds r0, r6, 0 - movs r2, 0xB - bl GetBoxMonDataFromAnyBox - cmp r0, 0 - beq _0808C0F4 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_0808C0F4: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1D - bls _0808C0DE - lsls r0, r5, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end CountMonsInBox - - thumb_func_start GetFirstFreeBoxSpot -GetFirstFreeBoxSpot: @ 808C108 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 -_0808C110: - lsls r1, r4, 24 - lsrs r1, 24 - adds r0, r5, 0 - movs r2, 0xB - bl GetBoxMonDataFromAnyBox - cmp r0, 0 - bne _0808C126 - lsls r0, r4, 16 - asrs r0, 16 - b _0808C134 -_0808C126: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1D - bls _0808C110 - movs r0, 0x1 - negs r0, r0 -_0808C134: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetFirstFreeBoxSpot - - thumb_func_start CountPartyNonEggMons -CountPartyNonEggMons: @ 808C13C - push {r4-r6,lr} - movs r5, 0 - movs r6, 0 -_0808C142: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0808C180 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0808C16A - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0808C16A - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_0808C16A: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _0808C142 - lsls r0, r6, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0808C180: .4byte gPlayerParty - thumb_func_end CountPartyNonEggMons - - thumb_func_start CountPartyAliveNonEggMonsExcept -CountPartyAliveNonEggMonsExcept: @ 808C184 - push {r4-r7,lr} - lsls r0, 24 - movs r5, 0 - movs r6, 0 - lsrs r7, r0, 24 -_0808C18E: - cmp r5, r7 - beq _0808C1C6 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0808C1DC @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0808C1C6 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0808C1C6 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0808C1C6 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_0808C1C6: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _0808C18E - lsls r0, r6, 24 - lsrs r0, 24 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0808C1DC: .4byte gPlayerParty - thumb_func_end CountPartyAliveNonEggMonsExcept - - thumb_func_start CountPartyAliveNonEggMons_IgnoreVar0x8004Slot -CountPartyAliveNonEggMons_IgnoreVar0x8004Slot: @ 808C1E0 - push {lr} - ldr r0, _0808C1F4 @ =gSpecialVar_0x8004 - ldrb r0, [r0] - bl CountPartyAliveNonEggMonsExcept - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0808C1F4: .4byte gSpecialVar_0x8004 - thumb_func_end CountPartyAliveNonEggMons_IgnoreVar0x8004Slot - - thumb_func_start CountPartyMons -CountPartyMons: @ 808C1F8 - push {r4,r5,lr} - movs r4, 0 - movs r5, 0 -_0808C1FE: - movs r0, 0x64 - muls r0, r4 - ldr r1, _0808C22C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0808C216 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_0808C216: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x5 - bls _0808C1FE - lsls r0, r5, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0808C22C: .4byte gPlayerParty - thumb_func_end CountPartyMons - - thumb_func_start StringCopyAndFillWithSpaces -StringCopyAndFillWithSpaces: @ 808C230 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r2, 16 - lsrs r4, 16 - bl StringCopy - adds r1, r0, 0 - adds r5, r4 - cmp r1, r5 - bcs _0808C24E - movs r0, 0 -_0808C246: - strb r0, [r1] - adds r1, 0x1 - cmp r1, r5 - bcc _0808C246 -_0808C24E: - movs r0, 0xFF - strb r0, [r1] - adds r0, r1, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end StringCopyAndFillWithSpaces - - thumb_func_start sub_808C25C -sub_808C25C: @ 808C25C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r6, r0, 0 - adds r7, r3, 0 - ldr r5, [sp, 0x1C] - ldr r4, [sp, 0x20] - ldr r0, [sp, 0x24] - mov r9, r0 - ldr r0, [sp, 0x28] - ldr r3, [sp, 0x2C] - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r3, 16 - lsrs r3, 16 - mov r0, r9 - lsls r0, 17 - mov r9, r0 - lsrs r2, 11 - adds r2, r1 - lsls r2, 1 - adds r6, r2 - adds r0, r4, 0 - muls r0, r3 - adds r0, r5 - lsls r0, 1 - adds r7, r0 - movs r4, 0 - cmp r4, r8 - bcs _0808C2CC - mov r0, r9 - lsrs r0, 1 - mov r9, r0 - lsls r5, r3, 1 -_0808C2B2: - adds r0, r7, 0 - adds r1, r6, 0 - mov r3, r9 - lsrs r2, r3, 16 - bl CpuSet - adds r6, 0x40 - adds r7, r5 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r8 - bcc _0808C2B2 -_0808C2CC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808C25C - - thumb_func_start sub_808C2D8 -sub_808C2D8: @ 808C2D8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r4, r0, 0 - ldr r0, [sp, 0x28] - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsrs r2, 11 - adds r2, r1 - lsls r2, 1 - adds r4, r2 - lsls r3, 17 - lsrs r0, r3, 16 - str r0, [sp, 0x4] - movs r0, 0 - cmp r0, r10 - bcs _0808C382 - movs r6, 0x80 - lsls r6, 5 - mov r5, sp - ldr r7, _0808C344 @ =0x040000d4 - lsrs r3, 17 - mov r9, r3 - mov r1, r9 - movs r2, 0x81 - lsls r2, 24 - orrs r1, r2 - mov r9, r1 -_0808C31E: - adds r3, r4, 0 - ldr r2, [sp, 0x4] - movs r1, 0x40 - adds r1, r4 - mov r8, r1 - adds r0, 0x1 - mov r12, r0 - cmp r2, r6 - bhi _0808C348 - movs r0, 0 - strh r0, [r5] - mov r2, sp - str r2, [r7] - str r4, [r7, 0x4] - mov r0, r9 - str r0, [r7, 0x8] - ldr r0, [r7, 0x8] - b _0808C376 - .align 2, 0 -_0808C344: .4byte 0x040000d4 -_0808C348: - movs r4, 0 - strh r4, [r5] - ldr r1, _0808C394 @ =0x040000d4 - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - ldr r0, _0808C398 @ =0x81000800 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r6 - subs r2, r6 - cmp r2, r6 - bhi _0808C348 - strh r4, [r5] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - lsrs r0, r2, 1 - movs r2, 0x81 - lsls r2, 24 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_0808C376: - mov r4, r8 - mov r1, r12 - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, r10 - bcc _0808C31E -_0808C382: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808C394: .4byte 0x040000d4 -_0808C398: .4byte 0x81000800 - thumb_func_end sub_808C2D8 - - thumb_func_start c3_0808C39C -c3_0808C39C: @ 808C39C - push {r4-r7,lr} - sub sp, 0x10 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0808C3C4 @ =gTasks - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bls _0808C3B8 - b _0808C69C -_0808C3B8: - lsls r0, 2 - ldr r1, _0808C3C8 @ =_0808C3CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808C3C4: .4byte gTasks -_0808C3C8: .4byte _0808C3CC - .align 2, 0 -_0808C3CC: - .4byte _0808C3E0 - .4byte _0808C448 - .4byte _0808C45C - .4byte _0808C5A6 - .4byte _0808C680 -_0808C3E0: - movs r0, 0x1C @ HELPCONTEXT_BILLS_PC - bl SetHelpContext - ldrb r0, [r5, 0xA] - adds r1, r5, 0 - adds r1, 0x26 - bl sub_808C72C - bl LoadStdWindowFrameGfx - movs r0, 0 - movs r1, 0 - bl DrawDialogueFrame - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r1, _0808C444 @ =gUnknown_83CDA20 - movs r2, 0xA - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r2, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x2 - movs r3, 0xFF - bl AddTextPrinterParameterized2 - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldrh r0, [r5, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl CopyWindowToVram - b _0808C454 - .align 2, 0 -_0808C444: .4byte gUnknown_83CDA20 -_0808C448: - bl IsWeatherNotFadingIn - lsls r0, 24 - cmp r0, 0 - bne _0808C454 - b _0808C69C -_0808C454: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _0808C69C -_0808C45C: - bl Menu_ProcessInput - lsls r0, 24 - asrs r0, 24 - strh r0, [r5, 0xC] - movs r3, 0xC - ldrsh r1, [r5, r3] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0808C50C - cmp r1, r0 - bgt _0808C47E - subs r0, 0x1 - cmp r1, r0 - beq _0808C484 - b _0808C530 -_0808C47E: - cmp r1, 0x4 - beq _0808C50C - b _0808C530 -_0808C484: - ldrh r3, [r5, 0xA] - strh r3, [r5, 0xE] - ldr r2, _0808C504 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0808C4A2 - subs r0, r3, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - cmp r0, 0 - bge _0808C4A2 - movs r0, 0x4 - strh r0, [r5, 0xE] -_0808C4A2: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0808C4BE - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _0808C4BE - movs r0, 0 - strh r0, [r5, 0xE] -_0808C4BE: - lsls r0, r3, 16 - asrs r0, 16 - ldrh r2, [r5, 0xE] - movs r3, 0xE - ldrsh r1, [r5, r3] - cmp r0, r1 - bne _0808C4CE - b _0808C69C -_0808C4CE: - movs r4, 0 - strh r2, [r5, 0xA] - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r1, _0808C508 @ =gUnknown_83CDA20 - movs r2, 0xA - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r2, [r0] - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0 - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized2 - b _0808C69C - .align 2, 0 -_0808C504: .4byte gMain -_0808C508: .4byte gUnknown_83CDA20 -_0808C50C: - movs r0, 0 - movs r1, 0x1 - bl ClearStdWindowAndFrame - ldrh r0, [r5, 0x26] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl ClearStdWindowAndFrame - bl ScriptContext2_Disable - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask - b _0808C69C -_0808C530: - movs r3, 0xC - ldrsh r4, [r5, r3] - cmp r4, 0 - bne _0808C564 - bl CountPartyMons - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _0808C564 - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, _0808C560 @ =gUnknown_84186B0 - str r4, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r4, 0x3 - str r4, [sp, 0xC] - b _0808C66E - .align 2, 0 -_0808C560: .4byte gUnknown_84186B0 -_0808C564: - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0x1 - bne _0808C598 - bl CountPartyMons - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _0808C598 - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, _0808C594 @ =gUnknown_8418690 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r4, 0x3 - str r4, [sp, 0xC] - b _0808C66E - .align 2, 0 -_0808C594: .4byte gUnknown_8418690 -_0808C598: - movs r0, 0x1 - movs r1, 0 - bl FadeScreen - movs r0, 0x4 - strh r0, [r5, 0x8] - b _0808C69C -_0808C5A6: - ldr r0, _0808C5D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r7, 0x3 - adds r4, r7, 0 - ands r4, r1 - cmp r4, 0 - beq _0808C5D8 - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r1, _0808C5D4 @ =gUnknown_83CDA20 - movs r2, 0xA - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r2, [r0] - movs r0, 0 - str r0, [sp] - b _0808C664 - .align 2, 0 -_0808C5D0: .4byte gMain -_0808C5D4: .4byte gUnknown_83CDA20 -_0808C5D8: - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0 - beq _0808C624 - ldrh r0, [r5, 0xA] - subs r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - cmp r0, 0 - bge _0808C5F4 - movs r0, 0x4 - strh r0, [r5, 0xA] -_0808C5F4: - movs r0, 0x1 - negs r0, r0 - bl Menu_MoveCursor - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xA] - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r1, _0808C620 @ =gUnknown_83CDA20 - movs r3, 0xA - ldrsh r0, [r5, r3] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r2, [r0] - str r4, [sp] - b _0808C664 - .align 2, 0 -_0808C620: .4byte gUnknown_83CDA20 -_0808C624: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0808C69C - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0808C63C - strh r6, [r5, 0xA] -_0808C63C: - movs r0, 0x1 - bl Menu_MoveCursor - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0xA] - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r1, _0808C67C @ =gUnknown_83CDA20 - movs r2, 0xA - ldrsh r0, [r5, r2] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r2, [r0] - str r6, [sp] -_0808C664: - movs r4, 0x2 - str r4, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - str r7, [sp, 0xC] -_0808C66E: - movs r0, 0 - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized2 - strh r4, [r5, 0x8] - b _0808C69C - .align 2, 0 -_0808C67C: .4byte gUnknown_83CDA20 -_0808C680: - ldr r0, _0808C6A4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0808C69C - bl CleanupOverworldWindowsAndTilemaps - ldrb r0, [r5, 0xC] - bl sub_808CDE4 - adds r0, r4, 0 - bl DestroyTask -_0808C69C: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808C6A4: .4byte gPaletteFade - thumb_func_end c3_0808C39C - - thumb_func_start ShowPokemonStorageSystem -ShowPokemonStorageSystem: @ 808C6A8 - push {lr} - ldr r0, _0808C6D0 @ =c3_0808C39C - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0808C6D4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - strh r0, [r1, 0xA] - bl ScriptContext2_Enable - pop {r0} - bx r0 - .align 2, 0 -_0808C6D0: .4byte c3_0808C39C -_0808C6D4: .4byte gTasks - thumb_func_end ShowPokemonStorageSystem - - thumb_func_start mapldr_0808C6D8 -mapldr_0808C6D8: @ 808C6D8 - push {r4,r5,lr} - ldr r0, _0808C71C @ =gMain - ldr r5, [r0, 0xC] - movs r0, 0 - bl SetVBlankCallback - ldr r4, _0808C720 @ =c3_0808C39C - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0808C724 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - strh r2, [r1, 0x8] - ldr r2, _0808C728 @ =sPreviousBoxOption - ldrb r2, [r2] - strh r2, [r1, 0xA] - bl _call_via_r4 - adds r0, r5, 0 - bl SetVBlankCallback - bl FadeInFromBlack - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808C71C: .4byte gMain -_0808C720: .4byte c3_0808C39C -_0808C724: .4byte gTasks -_0808C728: .4byte sPreviousBoxOption - thumb_func_end mapldr_0808C6D8 - - thumb_func_start sub_808C72C -sub_808C72C: @ 808C72C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0xC - adds r6, r0, 0 - mov r10, r1 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _0808C7AC @ =gUnknown_83CDA48 - bl AddWindow - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r4, r5, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl DrawStdWindowFrame - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x10 - mov r9, r0 - str r0, [sp] - movs r0, 0x5 - mov r8, r0 - str r0, [sp, 0x4] - ldr r0, _0808C7B0 @ =gUnknown_83CDA20 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0x2 - movs r3, 0x2 - bl PrintTextArray - mov r0, r9 - str r0, [sp] - mov r0, r8 - str r0, [sp, 0x4] - str r6, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - mov r0, r10 - strh r5, [r0] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808C7AC: .4byte gUnknown_83CDA48 -_0808C7B0: .4byte gUnknown_83CDA20 - thumb_func_end sub_808C72C - - thumb_func_start sub_808C7B4 -sub_808C7B4: @ 808C7B4 - push {lr} - bl sub_808FDF0 - ldr r1, _0808C7D0 @ =sPreviousBoxOption - strb r0, [r1] - ldr r1, _0808C7D4 @ =gFieldCallback - ldr r0, _0808C7D8 @ =mapldr_0808C6D8 - str r0, [r1] - ldr r0, _0808C7DC @ =CB2_ReturnToField - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0808C7D0: .4byte sPreviousBoxOption -_0808C7D4: .4byte gFieldCallback -_0808C7D8: .4byte mapldr_0808C6D8 -_0808C7DC: .4byte CB2_ReturnToField - thumb_func_end sub_808C7B4 - - thumb_func_start ResetPokemonStorageSystem -ResetPokemonStorageSystem: @ 808C7E0 - push {r4-r6,lr} - movs r0, 0 - bl sub_808BA00 - movs r5, 0 -_0808C7EA: - movs r4, 0 - lsls r6, r5, 24 -_0808C7EE: - lsls r1, r4, 24 - lsrs r1, 24 - lsrs r0, r6, 24 - bl sub_808BCB4 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1D - bls _0808C7EE - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xD - bls _0808C7EA - movs r5, 0 -_0808C80E: - lsls r0, r5, 24 - lsrs r0, 24 - bl GetBoxNamePtr - ldr r1, _0808C850 @ =gUnknown_84186CD - bl StringCopy - adds r4, r5, 0x1 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - lsls r4, 16 - lsrs r5, r4, 16 - cmp r5, 0xD - bls _0808C80E - movs r5, 0 -_0808C832: - lsls r0, r5, 24 - lsrs r0, 24 - movs r1, 0x3 - ands r1, r5 - bl sub_808BDBC - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0xD - bls _0808C832 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808C850: .4byte gUnknown_84186CD - thumb_func_end ResetPokemonStorageSystem - - thumb_func_start sub_808C854 -sub_808C854: @ 808C854 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - adds r5, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r6, r1, 0 - lsls r2, 16 - lsrs r2, 16 - adds r7, r2, 0 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - ldr r0, _0808C8E8 @ =gUnknown_83CDA98 - str r0, [sp, 0x18] - ldr r1, _0808C8EC @ =0xffff0000 - add r4, sp, 0x18 - ldr r0, [r4, 0x4] - ands r0, r1 - orrs r0, r7 - str r0, [r4, 0x4] - mov r1, sp - ldr r0, _0808C8F0 @ =gUnknown_83CDAB8 - str r0, [sp] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r1, 0x4] - strh r6, [r1, 0x6] - ldr r0, _0808C8F4 @ =gUnknown_83CE2B8 - str r0, [sp, 0x8] - movs r0, 0xC0 - lsls r0, 1 - strh r0, [r1, 0xC] - adds r0, r6, 0x1 - strh r0, [r1, 0xE] - add r0, sp, 0x10 - movs r1, 0 - movs r2, 0x8 - bl memset - ldr r0, [sp, 0x38] - cmp r0, 0 - beq _0808C8B2 - adds r0, r4, 0 - bl LoadSpritePalette -_0808C8B2: - mov r0, sp - bl LoadSpriteSheets - ldr r0, _0808C8F8 @ =gUnknown_20397AC - str r5, [r0] - movs r1, 0x90 - lsls r1, 2 - adds r0, r5, r1 - strh r6, [r0] - adds r1, 0x2 - adds r0, r5, r1 - strh r7, [r0] - adds r1, 0x4 - adds r0, r5, r1 - mov r1, r8 - strb r1, [r0] - movs r1, 0x8F - lsls r1, 2 - adds r0, r5, r1 - ldr r1, [sp, 0x38] - str r1, [r0] - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808C8E8: .4byte gUnknown_83CDA98 -_0808C8EC: .4byte 0xffff0000 -_0808C8F0: .4byte gUnknown_83CDAB8 -_0808C8F4: .4byte gUnknown_83CE2B8 -_0808C8F8: .4byte gUnknown_20397AC - thumb_func_end sub_808C854 - - thumb_func_start sub_808C8FC -sub_808C8FC: @ 808C8FC - push {r4,r5,lr} - ldr r5, _0808C93C @ =gUnknown_20397AC - ldr r1, [r5] - movs r2, 0x8F - lsls r2, 2 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - beq _0808C918 - adds r2, 0x6 - adds r0, r1, r2 - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_0808C918: - ldr r0, [r5] - movs r4, 0x90 - lsls r4, 2 - adds r0, r4 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r5] - adds r0, r4 - ldrh r0, [r0] - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - bl FreeSpriteTilesByTag - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808C93C: .4byte gUnknown_20397AC - thumb_func_end sub_808C8FC - - thumb_func_start sub_808C940 -sub_808C940: @ 808C940 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_808C9C4 - pop {r0} - bx r0 - thumb_func_end sub_808C940 - - thumb_func_start sub_808C950 -sub_808C950: @ 808C950 - push {lr} - bl sub_808CBA4 - pop {r0} - bx r0 - thumb_func_end sub_808C950 - - thumb_func_start sub_808C95C -sub_808C95C: @ 808C95C - push {lr} - ldr r0, _0808C974 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0808C978 - movs r0, 0x5 - bl PlaySE - movs r0, 0xC9 - b _0808C9C0 - .align 2, 0 -_0808C974: .4byte gMain -_0808C978: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808C998 - movs r0, 0x5 - bl PlaySE - ldr r0, _0808C994 @ =gUnknown_20397AC - ldr r0, [r0] - movs r1, 0x91 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - b _0808C9C0 - .align 2, 0 -_0808C994: .4byte gUnknown_20397AC -_0808C998: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0808C9AC - movs r0, 0x5 - bl PlaySE - bl sub_808CC44 - b _0808C9BE -_0808C9AC: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0808C9BE - movs r0, 0x5 - bl PlaySE - bl sub_808CC10 -_0808C9BE: - movs r0, 0xC8 -_0808C9C0: - pop {r1} - bx r1 - thumb_func_end sub_808C95C - - thumb_func_start sub_808C9C4 -sub_808C9C4: @ 808C9C4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x3C - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0 - movs r1, 0 - str r0, [sp, 0x34] - str r1, [sp, 0x38] - movs r1, 0xC0 - lsls r1, 24 - ldr r0, [sp, 0x34] - orrs r0, r1 - str r0, [sp, 0x34] - ldr r1, _0808CB78 @ =0xffff0fff - add r4, sp, 0x34 - ldr r0, [r4, 0x4] - ands r0, r1 - movs r1, 0x80 - lsls r1, 5 - orrs r0, r1 - str r0, [r4, 0x4] - add r0, sp, 0x1C - mov r8, r0 - movs r1, 0 - strh r1, [r0] - mov r0, sp - adds r0, 0x1E - strh r1, [r0] - str r4, [sp, 0x20] - ldr r0, _0808CB7C @ =gDummySpriteAnimTable - str r0, [sp, 0x24] - str r1, [sp, 0x28] - ldr r0, _0808CB80 @ =gDummySpriteAffineAnimTable - str r0, [sp, 0x2C] - ldr r0, _0808CB84 @ =SpriteCallbackDummy - str r0, [sp, 0x30] - add r0, sp, 0x4 - mov r1, r8 - movs r2, 0x18 - bl memcpy - ldr r1, _0808CB88 @ =gUnknown_83CDA94 - mov r0, r8 - movs r2, 0x4 - bl memcpy - ldr r6, _0808CB8C @ =gUnknown_20397AC - ldr r0, [r6] - movs r1, 0x91 - lsls r1, 2 - adds r0, r1 - strb r5, [r0] - add r2, sp, 0x4 - ldr r1, [r6] - movs r5, 0x90 - lsls r5, 2 - adds r0, r1, r5 - ldrh r0, [r0] - strh r0, [r2] - ldr r3, _0808CB90 @ =0x00000242 - adds r1, r3 - ldrh r0, [r1] - strh r0, [r2, 0x2] - adds r0, r2, 0 - movs r1, 0xA0 - movs r2, 0x60 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0808CB94 @ =gSprites - adds r0, r1 - str r0, [r3] - ldrb r2, [r4, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - movs r2, 0x80 - orrs r0, r2 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - ands r1, r0 - movs r0, 0x40 - orrs r1, r0 - strb r1, [r4, 0x3] - add r1, sp, 0x4 - adds r3, r5 - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r1] - ldr r0, _0808CB98 @ =gUnknown_83CDA70 - str r0, [sp, 0xC] - movs r4, 0 - mov r7, r8 -_0808CA90: - ldr r0, [r6] - ldr r1, _0808CB9C @ =0x00000246 - adds r0, r1 - ldrb r3, [r0] - add r0, sp, 0x4 - movs r1, 0x7C - movs r2, 0x50 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - ldr r2, [r6] - lsls r3, r4, 2 - adds r2, 0x4 - adds r2, r3 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0808CB94 @ =gSprites - adds r1, r0, r1 - str r1, [r2] - movs r5, 0 - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _0808CACA - movs r0, 0xC4 - strh r0, [r1, 0x20] - movs r5, 0x2 -_0808CACA: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0808CAEE - ldr r1, [r6] - adds r1, 0x4 - adds r1, r3 - ldr r2, [r1] - movs r0, 0x70 - strh r0, [r2, 0x22] - ldr r2, [r1] - ldrb r1, [r2, 0x3] - movs r0, 0x3F - ands r0, r1 - strb r0, [r2, 0x3] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_0808CAEE: - ldr r0, [r6] - adds r0, 0x4 - adds r0, r3 - ldr r0, [r0] - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _0808CA90 - movs r4, 0 - ldr r5, _0808CB8C @ =gUnknown_20397AC -_0808CB0C: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 19 - movs r3, 0xF8 - lsls r3, 15 - adds r0, r3 - lsrs r0, 16 - lsls r2, r4, 24 - lsrs r2, 24 - ldr r1, [r5] - ldr r3, _0808CB9C @ =0x00000246 - adds r1, r3 - ldrb r1, [r1] - str r1, [sp] - movs r1, 0x58 - movs r3, 0 - bl sub_809223C - adds r2, r0, 0 - ldr r0, [r5] - lsls r1, r4, 2 - adds r0, 0x20 - adds r0, r1 - str r2, [r0] - cmp r2, 0 - beq _0808CB54 - movs r1, 0x1 - cmp r4, 0 - bne _0808CB4C - movs r3, 0x1 - negs r3, r3 - adds r1, r3, 0 -_0808CB4C: - strh r1, [r2, 0x2E] - ldr r1, [r0] - ldr r0, _0808CBA0 @ =sub_808CD64 - str r0, [r1, 0x1C] -_0808CB54: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _0808CB0C - bl sub_808CC74 - adds r0, r7, 0 - movs r1, 0x5 - movs r2, 0x3 - bl sub_808CCFC - add sp, 0x3C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808CB78: .4byte 0xffff0fff -_0808CB7C: .4byte gDummySpriteAnimTable -_0808CB80: .4byte gDummySpriteAffineAnimTable -_0808CB84: .4byte SpriteCallbackDummy -_0808CB88: .4byte gUnknown_83CDA94 -_0808CB8C: .4byte gUnknown_20397AC -_0808CB90: .4byte 0x00000242 -_0808CB94: .4byte gSprites -_0808CB98: .4byte gUnknown_83CDA70 -_0808CB9C: .4byte 0x00000246 -_0808CBA0: .4byte sub_808CD64 - thumb_func_end sub_808C9C4 - - thumb_func_start sub_808CBA4 -sub_808CBA4: @ 808CBA4 - push {r4-r6,lr} - ldr r4, _0808CC0C @ =gUnknown_20397AC - ldr r0, [r4] - ldr r0, [r0] - cmp r0, 0 - beq _0808CBBA - bl DestroySprite - ldr r1, [r4] - movs r0, 0 - str r0, [r1] -_0808CBBA: - movs r5, 0 - adds r6, r4, 0 -_0808CBBE: - ldr r0, [r6] - lsls r4, r5, 2 - adds r0, 0x4 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _0808CBDA - bl DestroySprite - ldr r0, [r6] - adds r0, 0x4 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_0808CBDA: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _0808CBBE - movs r5, 0 -_0808CBE6: - ldr r0, _0808CC0C @ =gUnknown_20397AC - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, 0x20 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _0808CBFA - bl DestroySprite -_0808CBFA: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1 - bls _0808CBE6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808CC0C: .4byte gUnknown_20397AC - thumb_func_end sub_808CBA4 - - thumb_func_start sub_808CC10 -sub_808CC10: @ 808CC10 - push {lr} - ldr r2, _0808CC40 @ =gUnknown_20397AC - ldr r1, [r2] - movs r0, 0x91 - lsls r0, 2 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bls _0808CC36 - ldr r0, [r2] - movs r1, 0x91 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_0808CC36: - bl sub_808CC74 - pop {r0} - bx r0 - .align 2, 0 -_0808CC40: .4byte gUnknown_20397AC - thumb_func_end sub_808CC10 - - thumb_func_start sub_808CC44 -sub_808CC44: @ 808CC44 - push {lr} - ldr r0, _0808CC5C @ =gUnknown_20397AC - ldr r2, [r0] - movs r1, 0x91 - lsls r1, 2 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0808CC60 - subs r1, r0, 0x1 - b _0808CC62 - .align 2, 0 -_0808CC5C: .4byte gUnknown_20397AC -_0808CC60: - movs r1, 0xD -_0808CC62: - movs r3, 0x91 - lsls r3, 2 - adds r0, r2, r3 - strb r1, [r0] - bl sub_808CC74 - pop {r0} - bx r0 - thumb_func_end sub_808CC44 - - thumb_func_start sub_808CC74 -sub_808CC74: @ 808CC74 - push {r4-r7,lr} - ldr r6, _0808CCF8 @ =gUnknown_20397AC - ldr r0, [r6] - movs r5, 0x91 - lsls r5, 2 - adds r0, r5 - ldrb r0, [r0] - bl CountMonsInBox - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r6] - movs r1, 0x8A - lsls r1, 2 - adds r4, r0, r1 - adds r0, r5 - ldrb r0, [r0] - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - adds r1, r0, 0 - ldr r0, [r6] - movs r2, 0x8C - lsls r2, 2 - adds r0, r2 - cmp r1, r0 - bcs _0808CCC0 - movs r4, 0 - adds r3, r6, 0 -_0808CCB4: - strb r4, [r1] - adds r1, 0x1 - ldr r0, [r3] - adds r0, r2 - cmp r1, r0 - bcc _0808CCB4 -_0808CCC0: - movs r0, 0xFF - strb r0, [r1] - ldr r5, _0808CCF8 @ =gUnknown_20397AC - ldr r0, [r5] - movs r4, 0x8A - lsls r4, 2 - adds r0, r4 - movs r1, 0 - movs r2, 0x1 - bl sub_808CCFC - ldr r0, [r5] - adds r0, r4 - adds r1, r7, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r5] - adds r0, r4 - movs r1, 0x3 - movs r2, 0x3 - bl sub_808CCFC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808CCF8: .4byte gUnknown_20397AC - thumb_func_end sub_808CC74 - - thumb_func_start sub_808CCFC -sub_808CCFC: @ 808CCFC - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - mov r8, r0 - adds r5, r1, 0 - adds r4, r2, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - ldr r6, _0808CD5C @ =gUnknown_20397AC - ldr r0, [r6] - movs r1, 0x90 - lsls r1, 2 - adds r0, r1 - ldrh r0, [r0] - bl GetSpriteTileStartByTag - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 11 - lsls r4, 8 - ldr r0, _0808CD60 @ =0x06010000 - adds r4, r0 - adds r1, r4 - lsls r5, 5 - adds r1, r5 - movs r2, 0x80 - lsls r2, 1 - movs r0, 0xF - str r0, [sp] - movs r0, 0xE - str r0, [sp, 0x4] - ldr r0, [r6] - adds r0, 0x28 - str r0, [sp, 0x8] - mov r0, r8 - movs r3, 0x4 - bl sub_808BFE0 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808CD5C: .4byte gUnknown_20397AC -_0808CD60: .4byte 0x06010000 - thumb_func_end sub_808CCFC - - thumb_func_start sub_808CD64 -sub_808CD64: @ 808CD64 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - movs r2, 0 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _0808CD94 - strh r2, [r1, 0x30] - ldrh r0, [r1, 0x2E] - ldrh r3, [r1, 0x24] - adds r0, r3 - strh r0, [r1, 0x24] - ldrh r0, [r1, 0x32] - adds r0, 0x1 - strh r0, [r1, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _0808CD94 - strh r2, [r1, 0x32] - strh r2, [r1, 0x24] -_0808CD94: - pop {r0} - bx r0 - thumb_func_end sub_808CD64 - - thumb_func_start sub_808CD98 -sub_808CD98: @ 808CD98 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl sub_8096BF8 - bl TransferPlttBuffer - ldr r0, _0808CDC0 @ =sPSSData - ldr r0, [r0] - movs r1, 0xB3 - lsls r1, 2 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x18 - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_0808CDC0: .4byte sPSSData - thumb_func_end sub_808CD98 - - thumb_func_start c2_Box -c2_Box: @ 808CDC4 - push {lr} - bl RunTasks - bl DoScheduledBgTilemapCopiesToVram - bl sub_808EFC8 - bl sub_808F99C - bl AnimateSprites - bl BuildOamBuffer - pop {r0} - bx r0 - thumb_func_end c2_Box - - thumb_func_start sub_808CDE4 -sub_808CDE4: @ 808CDE4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl ResetTasks - ldr r0, _0808CE08 @ =sCurrentBoxOption - strb r5, [r0] - ldr r4, _0808CE0C @ =sPSSData - ldr r0, _0808CE10 @ =0x000062bc - bl Alloc - str r0, [r4] - cmp r0, 0 - bne _0808CE18 - ldr r0, _0808CE14 @ =sub_808C7B4 - bl SetMainCallback2 - b _0808CE4A - .align 2, 0 -_0808CE08: .4byte sCurrentBoxOption -_0808CE0C: .4byte sPSSData -_0808CE10: .4byte 0x000062bc -_0808CE14: .4byte sub_808C7B4 -_0808CE18: - movs r2, 0 - strb r5, [r0, 0x1] - ldr r0, [r4] - strb r2, [r0, 0x3] - ldr r0, _0808CE50 @ =gUnknown_20397BA - movs r1, 0 - strh r2, [r0] - ldr r0, [r4] - strb r1, [r0] - ldr r0, _0808CE54 @ =task_box_related_3 - movs r1, 0x3 - bl CreateTask - ldr r1, [r4] - strb r0, [r1, 0x4] - movs r0, 0x1C @ HELPCONTEXT_BILLS_PC - bl SetHelpContext - bl StorageGetCurrentBox - ldr r1, _0808CE58 @ =sLastUsedBox - strb r0, [r1] - ldr r0, _0808CE5C @ =c2_Box - bl SetMainCallback2 -_0808CE4A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808CE50: .4byte gUnknown_20397BA -_0808CE54: .4byte task_box_related_3 -_0808CE58: .4byte sLastUsedBox -_0808CE5C: .4byte c2_Box - thumb_func_end sub_808CDE4 - - thumb_func_start sub_808CE60 -sub_808CE60: @ 808CE60 - push {r4,lr} - bl ResetTasks - ldr r4, _0808CE80 @ =sPSSData - ldr r0, _0808CE84 @ =0x000062bc - bl Alloc - adds r1, r0, 0 - str r1, [r4] - cmp r1, 0 - bne _0808CE8C - ldr r0, _0808CE88 @ =sub_808C7B4 - bl SetMainCallback2 - b _0808CEB6 - .align 2, 0 -_0808CE80: .4byte sPSSData -_0808CE84: .4byte 0x000062bc -_0808CE88: .4byte sub_808C7B4 -_0808CE8C: - ldr r0, _0808CEBC @ =sCurrentBoxOption - ldrb r0, [r0] - movs r2, 0 - strb r0, [r1, 0x1] - ldr r1, [r4] - movs r0, 0x1 - strb r0, [r1, 0x3] - ldr r0, [r4] - strb r2, [r0] - ldr r0, _0808CEC0 @ =task_box_related_3 - movs r1, 0x3 - bl CreateTask - ldr r1, [r4] - strb r0, [r1, 0x4] - movs r0, 0x1C @ HELPCONTEXT_BILLS_PC - bl SetHelpContext - ldr r0, _0808CEC4 @ =c2_Box - bl SetMainCallback2 -_0808CEB6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808CEBC: .4byte sCurrentBoxOption -_0808CEC0: .4byte task_box_related_3 -_0808CEC4: .4byte c2_Box - thumb_func_end sub_808CE60 - - thumb_func_start sub_808CEC8 -sub_808CEC8: @ 808CEC8 - push {lr} - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_808CEC8 - - thumb_func_start sub_808CF10 -sub_808CF10: @ 808CF10 - push {r4,lr} - sub sp, 0x4 - bl ResetPaletteFade - bl ResetSpriteData - bl FreeSpriteTileRanges - bl FreeAllSpritePalettes - bl ClearDma3Requests - ldr r1, _0808CF80 @ =gReservedSpriteTileCount - movs r2, 0xA0 - lsls r2, 2 - adds r0, r2, 0 - strh r0, [r1] - ldr r4, _0808CF84 @ =sPSSData - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x8 - adds r1, 0x10 - movs r2, 0x8 - bl sub_8096BE4 - ldr r1, _0808CF88 @ =gKeyRepeatStartDelay - movs r0, 0x14 - strh r0, [r1] - bl ClearScheduledBgCopiesToVram - movs r0, 0x3 - bl sub_80F7AD8 - ldr r2, _0808CF8C @ =gUnknown_83CE6F8 - movs r0, 0x4 - str r0, [sp] - movs r0, 0 - movs r1, 0x1 - movs r3, 0x8 - bl sub_80F7B80 - movs r0, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_80F7CAC - ldr r0, [r4] - ldr r1, _0808CF90 @ =0x000002c7 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808CF80: .4byte gReservedSpriteTileCount -_0808CF84: .4byte sPSSData -_0808CF88: .4byte gKeyRepeatStartDelay -_0808CF8C: .4byte gUnknown_83CE6F8 -_0808CF90: .4byte 0x000002c7 - thumb_func_end sub_808CF10 - - thumb_func_start sub_808CF94 -sub_808CF94: @ 808CF94 - push {lr} - bl sub_8092B50 - ldr r2, _0808CFB8 @ =sInPartyMenu - movs r1, 0 - ldr r0, _0808CFBC @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - bne _0808CFAA - movs r1, 0x1 -_0808CFAA: - strb r1, [r2] - ldr r1, _0808CFC0 @ =gUnknown_20397B6 - movs r0, 0 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0808CFB8: .4byte sInPartyMenu -_0808CFBC: .4byte sPSSData -_0808CFC0: .4byte gUnknown_20397B6 - thumb_func_end sub_808CF94 - - thumb_func_start sub_808CFC4 -sub_808CFC4: @ 808CFC4 - push {lr} - ldr r0, _0808CFF0 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _0808CFE2 - movs r1, 0xFC - lsls r1, 6 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _0808CFF4 @ =0x00000b07 - movs r0, 0x52 - bl SetGpuReg -_0808CFE2: - movs r1, 0xFA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - pop {r0} - bx r0 - .align 2, 0 -_0808CFF0: .4byte sPSSData -_0808CFF4: .4byte 0x00000b07 - thumb_func_end sub_808CFC4 - - thumb_func_start add_to_c3_somehow -add_to_c3_somehow: @ 808CFF8 - push {r4,lr} - ldr r4, _0808D018 @ =gTasks - ldr r1, _0808D01C @ =sPSSData - ldr r3, [r1] - ldrb r2, [r3, 0x4] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r4 - str r0, [r1] - movs r0, 0 - strb r0, [r3] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808D018: .4byte gTasks -_0808D01C: .4byte sPSSData - thumb_func_end add_to_c3_somehow - - thumb_func_start task_box_related_3 -task_box_related_3: @ 808D020 - push {lr} - sub sp, 0x4 - ldr r0, _0808D03C @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xA - bls _0808D030 - b _0808D216 -_0808D030: - lsls r0, 2 - ldr r1, _0808D040 @ =_0808D044 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808D03C: .4byte sPSSData -_0808D040: .4byte _0808D044 - .align 2, 0 -_0808D044: - .4byte _0808D070 - .4byte _0808D0C8 - .4byte _0808D0D6 - .4byte _0808D104 - .4byte _0808D120 - .4byte _0808D13E - .4byte _0808D15E - .4byte _0808D164 - .4byte _0808D16A - .4byte _0808D178 - .4byte _0808D1BE -_0808D070: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - movs r1, 0 - bl SetGpuReg - bl sub_808CF10 - ldr r0, _0808D0A0 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x3] - cmp r0, 0 - beq _0808D0BE - ldr r0, _0808D0A4 @ =sWhichToReshow - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808D0AE - cmp r0, 0x1 - bgt _0808D0A8 - cmp r0, 0 - beq _0808D0B4 - b _0808D0BE - .align 2, 0 -_0808D0A0: .4byte sPSSData -_0808D0A4: .4byte sWhichToReshow -_0808D0A8: - cmp r0, 0x2 - beq _0808D0BA - b _0808D0BE -_0808D0AE: - bl sub_8093660 - b _0808D0BE -_0808D0B4: - bl sub_80937B4 - b _0808D0BE -_0808D0BA: - bl sub_808EF0C -_0808D0BE: - bl sub_808EFE4 - bl sub_808F068 - b _0808D20C -_0808D0C8: - bl sub_808F044 - lsls r0, 24 - cmp r0, 0 - beq _0808D0D4 - b _0808D20C -_0808D0D4: - b _0808D148 -_0808D0D6: - movs r0, 0 - bl PutWindowTilemap - movs r0, 0x1 - bl ClearWindowTilemap - movs r0, 0 - str r0, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _0808D100 @ =0x05000080 - mov r0, sp - bl CpuSet - movs r0, 0x1 - movs r1, 0xB - movs r2, 0xE0 - bl TextWindow_SetUserSelectedFrame - b _0808D20C - .align 2, 0 -_0808D100: .4byte 0x05000080 -_0808D104: - bl sub_808CEC8 - ldr r0, _0808D11C @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x3] - cmp r0, 0 - beq _0808D114 - b _0808D20C -_0808D114: - bl sub_808CF94 - b _0808D20C - .align 2, 0 -_0808D11C: .4byte sPSSData -_0808D120: - bl sub_808FFAC - ldr r0, _0808D134 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x3] - cmp r0, 0 - bne _0808D138 - bl sub_80922C0 - b _0808D20C - .align 2, 0 -_0808D134: .4byte sPSSData -_0808D138: - bl sub_8092340 - b _0808D20C -_0808D13E: - bl sub_8095050 - lsls r0, 24 - cmp r0, 0 - bne _0808D154 -_0808D148: - ldr r0, _0808D150 @ =sub_808EE18 - bl add_to_c3_somehow - b _0808D216 - .align 2, 0 -_0808D150: .4byte sub_808EE18 -_0808D154: - bl sub_808EF8C - bl sub_808FB68 - b _0808D20C -_0808D15E: - bl sub_808F078 - b _0808D20C -_0808D164: - bl sub_808F68C - b _0808D20C -_0808D16A: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - bl sub_80913DC - b _0808D20C -_0808D178: - bl sub_809140C - lsls r0, 24 - cmp r0, 0 - bne _0808D216 - ldr r0, _0808D1A8 @ =sPSSData - ldr r2, [r0] - ldrb r0, [r2, 0x1] - cmp r0, 0x3 - beq _0808D1B4 - movs r1, 0xDA - lsls r1, 4 - adds r0, r2, r1 - movs r1, 0xD - strh r1, [r0] - ldr r1, _0808D1AC @ =0x00000da2 - adds r2, r1 - ldr r1, _0808D1B0 @ =0x0000dace - strh r1, [r2] - bl SetMonMarkingsMenuPointer - bl LoadMonMarkingsFrameGfx - b _0808D20C - .align 2, 0 -_0808D1A8: .4byte sPSSData -_0808D1AC: .4byte 0x00000da2 -_0808D1B0: .4byte 0x0000dace -_0808D1B4: - bl sub_8095B5C - bl sub_808FDFC - b _0808D20C -_0808D1BE: - bl sub_808CFC4 - ldr r0, _0808D1E0 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x3] - cmp r0, 0 - bne _0808D1E8 - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r0, _0808D1E4 @ =sub_808D220 - bl add_to_c3_somehow - b _0808D1FA - .align 2, 0 -_0808D1E0: .4byte sPSSData -_0808D1E4: .4byte sub_808D220 -_0808D1E8: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r0, _0808D204 @ =sub_808D26C - bl add_to_c3_somehow -_0808D1FA: - ldr r0, _0808D208 @ =sub_808CD98 - bl SetVBlankCallback - b _0808D216 - .align 2, 0 -_0808D204: .4byte sub_808D26C -_0808D208: .4byte sub_808CD98 -_0808D20C: - ldr r0, _0808D21C @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0808D216: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0808D21C: .4byte sPSSData - thumb_func_end task_box_related_3 - - thumb_func_start sub_808D220 -sub_808D220: @ 808D220 - push {r4,lr} - ldr r4, _0808D234 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808D238 - cmp r0, 0x1 - beq _0808D252 - b _0808D262 - .align 2, 0 -_0808D234: .4byte sPSSData -_0808D238: - movs r0, 0x2 - bl PlaySE - movs r0, 0x14 - movs r1, 0 - movs r2, 0x1 - bl sub_80A0A48 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808D262 -_0808D252: - bl sub_80A0A98 - lsls r0, 24 - cmp r0, 0 - bne _0808D262 - ldr r0, _0808D268 @ =sub_808D2BC - bl add_to_c3_somehow -_0808D262: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808D268: .4byte sub_808D2BC - thumb_func_end sub_808D220 - - thumb_func_start sub_808D26C -sub_808D26C: @ 808D26C - push {r4,lr} - sub sp, 0x4 - ldr r4, _0808D280 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808D284 - cmp r0, 0x1 - beq _0808D29E - b _0808D2AE - .align 2, 0 -_0808D280: .4byte sPSSData -_0808D284: - movs r1, 0x1 - negs r1, r1 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808D2AE -_0808D29E: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _0808D2AE - ldr r0, _0808D2B8 @ =sub_808D2BC - bl add_to_c3_somehow -_0808D2AE: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808D2B8: .4byte sub_808D2BC - thumb_func_end sub_808D26C - - thumb_func_start sub_808D2BC -sub_808D2BC: @ 808D2BC - push {r4,r5,lr} - ldr r0, _0808D2D4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xB - bls _0808D2CA - b _0808D7B2 -_0808D2CA: - lsls r0, 2 - ldr r1, _0808D2D8 @ =_0808D2DC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808D2D4: .4byte sPSSData -_0808D2D8: .4byte _0808D2DC - .align 2, 0 -_0808D2DC: - .4byte _0808D30C - .4byte _0808D630 - .4byte _0808D670 - .4byte _0808D6C8 - .4byte _0808D6EC - .4byte _0808D6F6 - .4byte _0808D710 - .4byte _0808D730 - .4byte _0808D736 - .4byte _0808D74C - .4byte _0808D778 - .4byte _0808D7A0 -_0808D30C: - bl sub_80948B4 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x19 - bls _0808D31C - b _0808D7B2 -_0808D31C: - lsls r0, 2 - ldr r1, _0808D328 @ =_0808D32C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808D328: .4byte _0808D32C - .align 2, 0 -_0808D32C: - .4byte _0808D394 - .4byte _0808D7B2 - .4byte _0808D7B2 - .4byte _0808D424 - .4byte _0808D3A8 - .4byte _0808D3DC - .4byte _0808D43C - .4byte _0808D450 - .4byte _0808D45C - .4byte _0808D494 - .4byte _0808D4D8 - .4byte _0808D55C - .4byte _0808D51C - .4byte _0808D52E - .4byte _0808D570 - .4byte _0808D584 - .4byte _0808D598 - .4byte _0808D5AC - .4byte _0808D430 - .4byte _0808D5C0 - .4byte _0808D5E0 - .4byte _0808D5CA - .4byte _0808D5EA - .4byte _0808D628 - .4byte _0808D5EE - .4byte _0808D608 -_0808D394: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D3A4 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D3A4: .4byte sPSSData -_0808D3A8: - ldr r4, _0808D3C8 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0, 0x1] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0808D3CC - movs r0, 0x10 - bl sub_808FBA4 - ldr r1, [r4] - movs r0, 0x3 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D3C8: .4byte sPSSData -_0808D3CC: - bl sub_8092B50 - ldr r0, _0808D3D8 @ =sub_808D7BC - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D3D8: .4byte sub_808D7BC -_0808D3DC: - ldr r4, _0808D408 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x2 - bne _0808D410 - bl sub_80939A0 - lsls r0, 24 - cmp r0, 0 - beq _0808D416 - ldr r0, [r4] - ldr r1, _0808D40C @ =0x00000ce2 - adds r0, r1 - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0808D404 - b _0808D4F6 -_0808D404: - b _0808D416 - .align 2, 0 -_0808D408: .4byte sPSSData -_0808D40C: .4byte 0x00000ce2 -_0808D410: - cmp r0, 0x3 - beq _0808D416 - b _0808D7B2 -_0808D416: - ldr r0, _0808D420 @ =sub_808D7FC - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D420: .4byte sub_808D7FC -_0808D424: - ldr r0, _0808D42C @ =sub_808EBB0 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D42C: .4byte sub_808EBB0 -_0808D430: - ldr r0, _0808D438 @ =sub_808ECE4 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D438: .4byte sub_808ECE4 -_0808D43C: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D44C @ =box_related - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D44C: .4byte box_related -_0808D450: - ldr r0, _0808D458 @ =sub_808D878 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D458: .4byte sub_808D878 -_0808D45C: - movs r0, 0x5 - bl PlaySE - bl StorageGetCurrentBox - ldr r4, _0808D48C @ =sPSSData - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x1 - ldr r2, _0808D490 @ =0x000002ca - adds r1, r2 - strh r0, [r1] - cmp r0, 0xD - ble _0808D47E - movs r0, 0 - strh r0, [r1] -_0808D47E: - ldr r1, [r4] - ldrb r0, [r1, 0x1] - cmp r0, 0x3 - beq _0808D4CC - adds r0, r1, r2 - b _0808D78A - .align 2, 0 -_0808D48C: .4byte sPSSData -_0808D490: .4byte 0x000002ca -_0808D494: - movs r0, 0x5 - bl PlaySE - bl StorageGetCurrentBox - ldr r4, _0808D4C4 @ =sPSSData - ldr r1, [r4] - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - ldr r2, _0808D4C8 @ =0x000002ca - adds r1, r2 - strh r0, [r1] - cmp r0, 0 - bge _0808D4B6 - movs r0, 0xD - strh r0, [r1] -_0808D4B6: - ldr r1, [r4] - ldrb r0, [r1, 0x1] - cmp r0, 0x3 - beq _0808D4CC - adds r0, r1, r2 - b _0808D78A - .align 2, 0 -_0808D4C4: .4byte sPSSData -_0808D4C8: .4byte 0x000002ca -_0808D4CC: - bl sub_8094D60 - ldr r1, [r4] - movs r0, 0xA - strb r0, [r1] - b _0808D7B2 -_0808D4D8: - bl sub_8093900 - lsls r0, 24 - cmp r0, 0 - bne _0808D538 - ldr r4, _0808D500 @ =sPSSData - ldr r0, [r4] - ldr r1, _0808D504 @ =0x00000ce2 - adds r0, r1 - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0808D508 -_0808D4F6: - ldr r1, [r4] - movs r0, 0x5 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D500: .4byte sPSSData -_0808D504: .4byte 0x00000ce2 -_0808D508: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D518 @ =sub_808DD88 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D518: .4byte sub_808DD88 -_0808D51C: - bl sub_8093900 - lsls r0, 24 - cmp r0, 0 - bne _0808D538 - movs r0, 0x5 - bl PlaySE - b _0808D740 -_0808D52E: - bl sub_809393C - lsls r0, 24 - cmp r0, 0 - bne _0808D548 -_0808D538: - ldr r0, _0808D544 @ =sPSSData - ldr r1, [r0] - movs r0, 0x4 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D544: .4byte sPSSData -_0808D548: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D558 @ =sub_808DC50 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D558: .4byte sub_808DC50 -_0808D55C: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D56C @ =sub_808DC9C - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D56C: .4byte sub_808DC9C -_0808D570: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D580 @ =sub_808DBF0 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D580: .4byte sub_808DBF0 -_0808D584: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D594 @ =sub_808E140 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D594: .4byte sub_808E140 -_0808D598: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D5A8 @ =sub_808E1F4 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D5A8: .4byte sub_808E1F4 -_0808D5AC: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808D5BC @ =sub_808E3C8 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D5BC: .4byte sub_808E3C8 -_0808D5C0: - movs r0, 0x5 - bl PlaySE - movs r0, 0 - b _0808D616 -_0808D5CA: - movs r0, 0x1 - bl sub_80950BC - ldr r0, _0808D5DC @ =sPSSData - ldr r1, [r0] - movs r0, 0x8 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D5DC: .4byte sPSSData -_0808D5E0: - movs r0, 0x5 - bl PlaySE - movs r0, 0x2 - b _0808D5F6 -_0808D5EA: - movs r0, 0x3 - b _0808D616 -_0808D5EE: - movs r0, 0x5 - bl PlaySE - movs r0, 0x4 -_0808D5F6: - bl sub_80950BC - ldr r0, _0808D604 @ =sPSSData - ldr r1, [r0] - movs r0, 0x9 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D604: .4byte sPSSData -_0808D608: - movs r0, 0x5 - bl PlaySE - movs r0, 0x3 - bl sub_808FE54 - movs r0, 0x5 -_0808D616: - bl sub_80950BC - ldr r0, _0808D624 @ =sPSSData - ldr r1, [r0] - movs r0, 0x7 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D624: .4byte sPSSData -_0808D628: - movs r0, 0x1A - bl PlaySE - b _0808D7B2 -_0808D630: - bl sub_80924A8 - lsls r0, 24 - cmp r0, 0 - beq _0808D63C - b _0808D7B2 -_0808D63C: - bl sub_80939C8 - lsls r0, 24 - cmp r0, 0 - beq _0808D64C - bl sub_808F948 - b _0808D650 -_0808D64C: - bl sub_808F974 -_0808D650: - ldr r4, _0808D668 @ =sPSSData - ldr r0, [r4] - ldr r1, _0808D66C @ =0x00000ce6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0808D662 - bl BoxSetMosaic -_0808D662: - ldr r1, [r4] - b _0808D6DC - .align 2, 0 -_0808D668: .4byte sPSSData -_0808D66C: .4byte 0x00000ce6 -_0808D670: - bl sub_80915FC - lsls r0, 24 - cmp r0, 0 - beq _0808D67C - b _0808D7B2 -_0808D67C: - ldr r0, _0808D6BC @ =sPSSData - ldr r0, [r0] - ldr r1, _0808D6C0 @ =0x000002ca - adds r0, r1 - ldrb r0, [r0] - bl sub_808BA00 - ldr r0, _0808D6C4 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - bne _0808D6A4 - bl sub_80939A0 - lsls r0, 24 - cmp r0, 0 - bne _0808D6A4 - bl sub_8092F54 - bl BoxSetMosaic -_0808D6A4: - ldr r4, _0808D6BC @ =sPSSData - ldr r1, [r4] - ldrb r0, [r1, 0x1] - cmp r0, 0x3 - bne _0808D6DC - bl sub_8094D84 - ldr r1, [r4] - movs r0, 0xB - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D6BC: .4byte sPSSData -_0808D6C0: .4byte 0x000002ca -_0808D6C4: .4byte sInPartyMenu -_0808D6C8: - ldr r0, _0808D6E4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808D7B2 - bl sub_808FD20 - ldr r0, _0808D6E8 @ =sPSSData - ldr r1, [r0] -_0808D6DC: - movs r0, 0 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D6E4: .4byte gMain -_0808D6E8: .4byte sPSSData -_0808D6EC: - movs r0, 0x1A - bl PlaySE - movs r0, 0xD - b _0808D6FE -_0808D6F6: - movs r0, 0x1A - bl PlaySE - movs r0, 0x16 -_0808D6FE: - bl sub_808FBA4 - ldr r0, _0808D70C @ =sPSSData - ldr r1, [r0] - movs r0, 0x6 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D70C: .4byte sPSSData -_0808D710: - ldr r0, _0808D728 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808D7B2 - bl sub_808FD20 - ldr r0, _0808D72C @ =sub_808D2BC - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D728: .4byte gMain -_0808D72C: .4byte sub_808D2BC -_0808D730: - bl sub_80950D0 - b _0808D7A4 -_0808D736: - bl sub_80950D0 - lsls r0, 24 - cmp r0, 0 - bne _0808D7B2 -_0808D740: - ldr r0, _0808D748 @ =sub_808DB94 - bl add_to_c3_somehow - b _0808D7B2 - .align 2, 0 -_0808D748: .4byte sub_808DB94 -_0808D74C: - bl sub_80950D0 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0808D7B2 - ldr r5, _0808D770 @ =sPSSData - ldr r0, [r5] - ldr r1, _0808D774 @ =0x00000ce6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0808D76A - bl BoxSetMosaic -_0808D76A: - ldr r0, [r5] - strb r4, [r0] - b _0808D7B2 - .align 2, 0 -_0808D770: .4byte sPSSData -_0808D774: .4byte 0x00000ce6 -_0808D778: - bl sub_809610C - lsls r0, 24 - cmp r0, 0 - bne _0808D7B2 - ldr r4, _0808D798 @ =sPSSData - ldr r0, [r4] - ldr r1, _0808D79C @ =0x000002ca - adds r0, r1 -_0808D78A: - ldrb r0, [r0] - bl sub_8091514 - ldr r1, [r4] - movs r0, 0x2 - strb r0, [r1] - b _0808D7B2 - .align 2, 0 -_0808D798: .4byte sPSSData -_0808D79C: .4byte 0x000002ca -_0808D7A0: - bl sub_809610C -_0808D7A4: - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0808D7B2 - ldr r0, _0808D7B8 @ =sPSSData - ldr r0, [r0] - strb r1, [r0] -_0808D7B2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808D7B8: .4byte sPSSData - thumb_func_end sub_808D2BC - - thumb_func_start sub_808D7BC -sub_808D7BC: @ 808D7BC - push {r4,lr} - ldr r4, _0808D7D0 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808D7D4 - cmp r0, 0x1 - beq _0808D7E2 - b _0808D7F2 - .align 2, 0 -_0808D7D0: .4byte sPSSData -_0808D7D4: - bl sub_808FAD4 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808D7F2 -_0808D7E2: - bl sub_808FAF8 - lsls r0, 24 - cmp r0, 0 - bne _0808D7F2 - ldr r0, _0808D7F8 @ =sub_808D2BC - bl add_to_c3_somehow -_0808D7F2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808D7F8: .4byte sub_808D2BC - thumb_func_end sub_808D7BC - - thumb_func_start sub_808D7FC -sub_808D7FC: @ 808D7FC - push {r4,lr} - ldr r4, _0808D814 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808D82A - cmp r0, 0x1 - bgt _0808D818 - cmp r0, 0 - beq _0808D81E - b _0808D86A - .align 2, 0 -_0808D814: .4byte sPSSData -_0808D818: - cmp r0, 0x2 - beq _0808D84A - b _0808D86A -_0808D81E: - movs r0, 0x5 - bl PlaySE - bl sub_808F810 - b _0808D840 -_0808D82A: - bl sub_808F850 - lsls r0, 24 - cmp r0, 0 - bne _0808D86A - bl sub_8092B70 - lsls r0, 24 - lsrs r0, 24 - bl sub_8092B3C -_0808D840: - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808D86A -_0808D84A: - bl sub_80924A8 - lsls r0, 24 - cmp r0, 0 - bne _0808D86A - ldr r0, [r4] - ldr r1, _0808D870 @ =0x00000ce6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0808D864 - bl BoxSetMosaic -_0808D864: - ldr r0, _0808D874 @ =sub_808D2BC - bl add_to_c3_somehow -_0808D86A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808D870: .4byte 0x00000ce6 -_0808D874: .4byte sub_808D2BC - thumb_func_end sub_808D7FC - - thumb_func_start sub_808D878 -sub_808D878: @ 808D878 - push {r4,lr} - ldr r0, _0808D890 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bls _0808D886 - b _0808DB86 -_0808D886: - lsls r0, 2 - ldr r1, _0808D894 @ =_0808D898 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808D890: .4byte sPSSData -_0808D894: .4byte _0808D898 - .align 2, 0 -_0808D898: - .4byte _0808D8B4 - .4byte _0808D918 - .4byte _0808D934 - .4byte _0808DB40 - .4byte _0808DB54 - .4byte _0808DB4A - .4byte _0808DB70 -_0808D8B4: - bl sub_808F258 - lsls r0, 24 - cmp r0, 0 - beq _0808D8C0 - b _0808DB86 -_0808D8C0: - movs r0, 0x5 - bl PlaySE - ldr r4, _0808D8D8 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - beq _0808D8DC - movs r0, 0x4 - bl sub_808FBA4 - b _0808D906 - .align 2, 0 -_0808D8D8: .4byte sPSSData -_0808D8DC: - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - bne _0808D8F2 - ldr r0, [r4] - ldr r1, _0808D8FC @ =0x00000ce2 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _0808D900 -_0808D8F2: - movs r0, 0x17 - bl sub_808FBA4 - b _0808D906 - .align 2, 0 -_0808D8FC: .4byte 0x00000ce2 -_0808D900: - movs r0, 0x18 - bl sub_808FBA4 -_0808D906: - bl sub_8094E88 - ldr r0, _0808D914 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808D914: .4byte sPSSData -_0808D918: - bl sub_8094F90 - lsls r0, 24 - cmp r0, 0 - beq _0808D924 - b _0808DB86 -_0808D924: - ldr r0, _0808D930 @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808D930: .4byte sPSSData -_0808D934: - bl sub_8094F94 - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x12 - bls _0808D944 - b _0808DB86 -_0808D944: - lsls r0, 2 - ldr r1, _0808D950 @ =_0808D954 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808D950: .4byte _0808D954 - .align 2, 0 -_0808D954: - .4byte _0808D9A0 - .4byte _0808D9A0 - .4byte _0808DA20 - .4byte _0808DA08 - .4byte _0808D9B0 - .4byte _0808D9E8 - .4byte _0808D9D0 - .4byte _0808DAC0 - .4byte _0808DA5C - .4byte _0808DAD4 - .4byte _0808DB86 - .4byte _0808DB86 - .4byte _0808DB86 - .4byte _0808DAE8 - .4byte _0808DAFC - .4byte _0808DB28 - .4byte _0808DB1C - .4byte _0808DB10 - .4byte _0808DB34 -_0808D9A0: - bl sub_808FD20 - ldr r0, _0808D9AC @ =sub_808D2BC - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808D9AC: .4byte sub_808D2BC -_0808D9B0: - bl sub_8093900 - lsls r0, 24 - cmp r0, 0 - bne _0808DA66 - movs r0, 0x5 - bl PlaySE - bl sub_808FD20 - ldr r0, _0808D9CC @ =sub_808DB94 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808D9CC: .4byte sub_808DB94 -_0808D9D0: - movs r0, 0x5 - bl PlaySE - bl sub_808FD20 - ldr r0, _0808D9E4 @ =sub_808DBF0 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808D9E4: .4byte sub_808DBF0 -_0808D9E8: - bl sub_809393C - lsls r0, 24 - cmp r0, 0 - beq _0808DA66 - movs r0, 0x5 - bl PlaySE - bl sub_808FD20 - ldr r0, _0808DA04 @ =sub_808DC50 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DA04: .4byte sub_808DC50 -_0808DA08: - movs r0, 0x5 - bl PlaySE - bl sub_808FD20 - ldr r0, _0808DA1C @ =sub_808DC9C - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DA1C: .4byte sub_808DC9C -_0808DA20: - bl sub_8093900 - lsls r0, 24 - cmp r0, 0 - bne _0808DA66 - ldr r4, _0808DA50 @ =sPSSData - ldr r0, [r4] - ldr r2, _0808DA54 @ =0x00000ce2 - adds r0, r2 - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - bne _0808DAA0 - movs r0, 0x5 - bl PlaySE - bl sub_808FD20 - ldr r0, _0808DA58 @ =sub_808DD88 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DA50: .4byte sPSSData -_0808DA54: .4byte 0x00000ce2 -_0808DA58: .4byte sub_808DD88 -_0808DA5C: - bl sub_8093900 - lsls r0, 24 - cmp r0, 0 - beq _0808DA74 -_0808DA66: - ldr r0, _0808DA70 @ =sPSSData - ldr r1, [r0] - movs r0, 0x3 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808DA70: .4byte sPSSData -_0808DA74: - ldr r4, _0808DA88 @ =sPSSData - ldr r1, [r4] - ldr r2, _0808DA8C @ =0x00000ce9 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0808DA90 - movs r0, 0x5 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808DA88: .4byte sPSSData -_0808DA8C: .4byte 0x00000ce9 -_0808DA90: - ldr r2, _0808DAA8 @ =0x00000ce2 - adds r0, r1, r2 - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0808DAAC -_0808DAA0: - ldr r1, [r4] - movs r0, 0x4 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808DAA8: .4byte 0x00000ce2 -_0808DAAC: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DABC @ =sub_808DECC - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DABC: .4byte sub_808DECC -_0808DAC0: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DAD0 @ =sub_808EAF0 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DAD0: .4byte sub_808EAF0 -_0808DAD4: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DAE4 @ =sub_808E0BC - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DAE4: .4byte sub_808E0BC -_0808DAE8: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DAF8 @ =sub_808E140 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DAF8: .4byte sub_808E140 -_0808DAFC: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808DB0C @ =sub_808E1F4 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DB0C: .4byte sub_808E1F4 -_0808DB10: - ldr r0, _0808DB18 @ =sub_808E2B0 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DB18: .4byte sub_808E2B0 -_0808DB1C: - ldr r0, _0808DB24 @ =sub_808E3C8 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DB24: .4byte sub_808E3C8 -_0808DB28: - ldr r0, _0808DB30 @ =sub_808EB50 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DB30: .4byte sub_808EB50 -_0808DB34: - ldr r0, _0808DB3C @ =sub_808E4B0 - bl add_to_c3_somehow - b _0808DB86 - .align 2, 0 -_0808DB3C: .4byte sub_808E4B0 -_0808DB40: - movs r0, 0x1A - bl PlaySE - movs r0, 0xD - b _0808DB5C -_0808DB4A: - movs r0, 0x1A - bl PlaySE - movs r0, 0x11 - b _0808DB5C -_0808DB54: - movs r0, 0x1A - bl PlaySE - movs r0, 0x16 -_0808DB5C: - bl sub_808FBA4 - ldr r0, _0808DB6C @ =sPSSData - ldr r1, [r0] - movs r0, 0x6 - strb r0, [r1] - b _0808DB86 - .align 2, 0 -_0808DB6C: .4byte sPSSData -_0808DB70: - ldr r0, _0808DB8C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808DB86 - bl sub_808FD20 - ldr r0, _0808DB90 @ =sub_808D2BC - bl add_to_c3_somehow -_0808DB86: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DB8C: .4byte gMain -_0808DB90: .4byte sub_808D2BC - thumb_func_end sub_808D878 - - thumb_func_start sub_808DB94 -sub_808DB94: @ 808DB94 - push {r4,lr} - ldr r4, _0808DBA8 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808DBAC - cmp r0, 0x1 - beq _0808DBBC - b _0808DBE6 - .align 2, 0 -_0808DBA8: .4byte sPSSData -_0808DBAC: - movs r0, 0 - bl sub_8092B7C - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808DBE6 -_0808DBBC: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DBE6 - ldr r0, _0808DBD8 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808DBE0 - ldr r0, _0808DBDC @ =sub_808E688 - bl add_to_c3_somehow - b _0808DBE6 - .align 2, 0 -_0808DBD8: .4byte sInPartyMenu -_0808DBDC: .4byte sub_808E688 -_0808DBE0: - ldr r0, _0808DBEC @ =sub_808D2BC - bl add_to_c3_somehow -_0808DBE6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DBEC: .4byte sub_808D2BC - thumb_func_end sub_808DB94 - - thumb_func_start sub_808DBF0 -sub_808DBF0: @ 808DBF0 - push {r4,lr} - ldr r4, _0808DC04 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808DC08 - cmp r0, 0x1 - beq _0808DC1E - b _0808DC46 - .align 2, 0 -_0808DC04: .4byte sPSSData -_0808DC08: - movs r0, 0x1 - bl sub_808FE54 - movs r0, 0x1 - bl sub_8092B7C - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808DC46 -_0808DC1E: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DC46 - ldr r0, _0808DC38 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808DC40 - ldr r0, _0808DC3C @ =sub_808E688 - bl add_to_c3_somehow - b _0808DC46 - .align 2, 0 -_0808DC38: .4byte sInPartyMenu -_0808DC3C: .4byte sub_808E688 -_0808DC40: - ldr r0, _0808DC4C @ =sub_808D2BC - bl add_to_c3_somehow -_0808DC46: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DC4C: .4byte sub_808D2BC - thumb_func_end sub_808DBF0 - - thumb_func_start sub_808DC50 -sub_808DC50: @ 808DC50 - push {r4,lr} - ldr r4, _0808DC64 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808DC68 - cmp r0, 0x1 - beq _0808DC7E - b _0808DC92 - .align 2, 0 -_0808DC64: .4byte sPSSData -_0808DC68: - movs r0, 0 - bl sub_808FE54 - movs r0, 0x2 - bl sub_8092B7C - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808DC92 -_0808DC7E: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DC92 - bl BoxSetMosaic - ldr r0, _0808DC98 @ =sub_808D2BC - bl add_to_c3_somehow -_0808DC92: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DC98: .4byte sub_808D2BC - thumb_func_end sub_808DC50 - - thumb_func_start sub_808DC9C -sub_808DC9C: @ 808DC9C - push {lr} - ldr r0, _0808DCB4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0808DD7E - lsls r0, 2 - ldr r1, _0808DCB8 @ =_0808DCBC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808DCB4: .4byte sPSSData -_0808DCB8: .4byte _0808DCBC - .align 2, 0 -_0808DCBC: - .4byte _0808DCD4 - .4byte _0808DD0C - .4byte _0808DD2C - .4byte _0808DD42 - .4byte _0808DD5A - .4byte _0808DD78 -_0808DCD4: - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _0808DCF4 - movs r0, 0xE - bl sub_808FBA4 - ldr r0, _0808DCF0 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1] - b _0808DD7E - .align 2, 0 -_0808DCF0: .4byte sPSSData -_0808DCF4: - bl sub_8092B5C - movs r0, 0 - bl sub_8092B7C - ldr r0, _0808DD08 @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1] - b _0808DD7E - .align 2, 0 -_0808DD08: .4byte sPSSData -_0808DD0C: - ldr r0, _0808DD24 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808DD7E - bl sub_808FD20 - ldr r0, _0808DD28 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808DD7E - .align 2, 0 -_0808DD24: .4byte gMain -_0808DD28: .4byte sub_808D2BC -_0808DD2C: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DD7E - movs r0, 0x1 - bl sub_8091184 - bl sub_808FAD4 - b _0808DD68 -_0808DD42: - bl sub_808FAF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DD7E - movs r0, 0x1 - bl sub_808FE54 - movs r0, 0x1 - bl sub_8092B7C - b _0808DD68 -_0808DD5A: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0808DD7E - bl sub_808FAA8 -_0808DD68: - ldr r0, _0808DD74 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808DD7E - .align 2, 0 -_0808DD74: .4byte sPSSData -_0808DD78: - ldr r0, _0808DD84 @ =sub_808D7FC - bl add_to_c3_somehow -_0808DD7E: - pop {r0} - bx r0 - .align 2, 0 -_0808DD84: .4byte sub_808D7FC - thumb_func_end sub_808DC9C - - thumb_func_start sub_808DD88 -sub_808DD88: @ 808DD88 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0808DDA4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x4 - bls _0808DD98 - b _0808DEBA -_0808DD98: - lsls r0, 2 - ldr r1, _0808DDA8 @ =_0808DDAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808DDA4: .4byte sPSSData -_0808DDA8: .4byte _0808DDAC - .align 2, 0 -_0808DDAC: - .4byte _0808DDC0 - .4byte _0808DDFC - .4byte _0808DE64 - .4byte _0808DE7C - .4byte _0808DEA0 -_0808DDC0: - movs r0, 0x6 - bl sub_808FBA4 - ldr r4, _0808DDEC @ =sPSSData - ldr r0, [r4] - ldr r1, _0808DDF0 @ =0x00001e58 - adds r0, r1 - ldr r2, _0808DDF4 @ =0x0000dac7 - movs r1, 0 - str r1, [sp] - movs r1, 0xA - movs r3, 0x3 - bl sub_808C854 - ldr r0, _0808DDF8 @ =gUnknown_20397B6 - ldrb r0, [r0] - bl sub_808C940 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - b _0808DEB8 - .align 2, 0 -_0808DDEC: .4byte sPSSData -_0808DDF0: .4byte 0x00001e58 -_0808DDF4: .4byte 0x0000dac7 -_0808DDF8: .4byte gUnknown_20397B6 -_0808DDFC: - bl sub_808C95C - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - cmp r0, 0xC8 - beq _0808DEBA - cmp r0, 0xC9 - bne _0808DE1C - bl sub_808FD20 - bl sub_808C950 - bl sub_808C8FC - b _0808DE92 -_0808DE1C: - adds r0, r4, 0 - bl sub_80930E4 - lsls r0, 24 - cmp r0, 0 - beq _0808DE50 - ldr r0, _0808DE48 @ =gUnknown_20397B6 - strb r4, [r0] - movs r0, 0x2 - bl sub_808FE54 - bl sub_808FD20 - bl sub_808C950 - bl sub_808C8FC - ldr r0, _0808DE4C @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - b _0808DEB8 - .align 2, 0 -_0808DE48: .4byte gUnknown_20397B6 -_0808DE4C: .4byte sPSSData -_0808DE50: - movs r0, 0x8 - bl sub_808FBA4 - ldr r0, _0808DE60 @ =sPSSData - ldr r1, [r0] - movs r0, 0x4 - b _0808DEB8 - .align 2, 0 -_0808DE60: .4byte sPSSData -_0808DE64: - bl CompactPartySlots - bl sub_80909F4 - ldr r0, _0808DE78 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - b _0808DEB8 - .align 2, 0 -_0808DE78: .4byte sPSSData -_0808DE7C: - bl sub_8090A60 - lsls r0, 24 - cmp r0, 0 - bne _0808DEBA - bl sub_8093174 - bl BoxSetMosaic - bl sub_808FAA8 -_0808DE92: - ldr r0, _0808DE9C @ =sub_808D2BC - bl add_to_c3_somehow - b _0808DEBA - .align 2, 0 -_0808DE9C: .4byte sub_808D2BC -_0808DEA0: - ldr r0, _0808DEC4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808DEBA - movs r0, 0x6 - bl sub_808FBA4 - ldr r0, _0808DEC8 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 -_0808DEB8: - strb r0, [r1] -_0808DEBA: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808DEC4: .4byte gMain -_0808DEC8: .4byte sPSSData - thumb_func_end sub_808DD88 - - thumb_func_start sub_808DECC -sub_808DECC: @ 808DECC - push {lr} - ldr r0, _0808DEE4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xD - bls _0808DEDA - b _0808E0AE -_0808DEDA: - lsls r0, 2 - ldr r1, _0808DEE8 @ =_0808DEEC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808DEE4: .4byte sPSSData -_0808DEE8: .4byte _0808DEEC - .align 2, 0 -_0808DEEC: - .4byte _0808DF24 - .4byte _0808DF3A - .4byte _0808DF72 - .4byte _0808DF98 - .4byte _0808DFA4 - .4byte _0808DFBC - .4byte _0808DFF8 - .4byte _0808E010 - .4byte _0808E01C - .4byte _0808E020 - .4byte _0808E034 - .4byte _0808E050 - .4byte _0808E062 - .4byte _0808E098 -_0808DF24: - movs r0, 0x9 - bl sub_808FBA4 - movs r0, 0x1 - bl sub_808FCE8 - ldr r0, _0808DF54 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0808DF3A: - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0808DF64 - cmp r1, 0 - bgt _0808DF58 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0808DF5E - b _0808E0AE - .align 2, 0 -_0808DF54: .4byte sPSSData -_0808DF58: - cmp r1, 0x1 - beq _0808DF5E - b _0808E0AE -_0808DF5E: - bl sub_808FD20 - b _0808E010 -_0808DF64: - bl sub_808FD20 - bl sub_809328C - bl sub_8093194 - b _0808E074 -_0808DF72: - bl sub_8093420 - bl sub_80931EC - lsls r0, 24 - cmp r0, 0 - beq _0808DF82 - b _0808E0AE -_0808DF82: - b _0808DF8A -_0808DF84: - cmp r0, 0 - bne _0808DF8A - b _0808E088 -_0808DF8A: - bl sub_8093420 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _0808DF84 - b _0808E074 -_0808DF98: - bl sub_8093218 - bl sub_808F1D0 - movs r0, 0xA - b _0808E070 -_0808DFA4: - ldr r0, _0808DFB8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - bne _0808DFB2 - b _0808E0AE -_0808DFB2: - movs r0, 0xB - b _0808E070 - .align 2, 0 -_0808DFB8: .4byte gMain -_0808DFBC: - ldr r0, _0808DFE0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - bl sub_808FD20 - ldr r0, _0808DFE4 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808DFE8 - bl CompactPartySlots - bl sub_80909F4 - b _0808E074 - .align 2, 0 -_0808DFE0: .4byte gMain -_0808DFE4: .4byte sInPartyMenu -_0808DFE8: - ldr r0, _0808DFF4 @ =sPSSData - ldr r1, [r0] - movs r0, 0x7 - strb r0, [r1] - b _0808E0AE - .align 2, 0 -_0808DFF4: .4byte sPSSData -_0808DFF8: - bl sub_8090A60 - lsls r0, 24 - cmp r0, 0 - bne _0808E0AE - bl sub_8092F54 - bl BoxSetMosaic - bl sub_808FAA8 - b _0808E074 -_0808E010: - ldr r0, _0808E018 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808E0AE - .align 2, 0 -_0808E018: .4byte sub_808D2BC -_0808E01C: - movs r0, 0xA - b _0808E070 -_0808E020: - ldr r0, _0808E030 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - movs r0, 0x15 - b _0808E070 - .align 2, 0 -_0808E030: .4byte gMain -_0808E034: - ldr r0, _0808E04C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - bl sub_808FD20 - bl sub_8091114 - b _0808E074 - .align 2, 0 -_0808E04C: .4byte gMain -_0808E050: - bl sub_8091150 - lsls r0, 24 - cmp r0, 0 - bne _0808E0AE - bl sub_8093264 - movs r0, 0x13 - b _0808E070 -_0808E062: - ldr r0, _0808E080 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - movs r0, 0x14 -_0808E070: - bl sub_808FBA4 -_0808E074: - ldr r0, _0808E084 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E0AE - .align 2, 0 -_0808E080: .4byte gMain -_0808E084: .4byte sPSSData -_0808E088: - ldr r0, _0808E094 @ =sPSSData - ldr r1, [r0] - movs r0, 0x8 - strb r0, [r1] - b _0808E0AE - .align 2, 0 -_0808E094: .4byte sPSSData -_0808E098: - ldr r0, _0808E0B4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E0AE - bl sub_808FD20 - ldr r0, _0808E0B8 @ =sub_808D2BC - bl add_to_c3_somehow -_0808E0AE: - pop {r0} - bx r0 - .align 2, 0 -_0808E0B4: .4byte gMain -_0808E0B8: .4byte sub_808D2BC - thumb_func_end sub_808DECC - - thumb_func_start sub_808E0BC -sub_808E0BC: @ 808E0BC - push {r4,lr} - ldr r4, _0808E0D0 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808E0D4 - cmp r0, 0x1 - beq _0808E108 - b _0808E130 - .align 2, 0 -_0808E0D0: .4byte sPSSData -_0808E0D4: - movs r0, 0xC - bl sub_808FBA4 - ldr r0, [r4] - ldr r2, _0808E100 @ =0x00000ce7 - adds r1, r0, r2 - ldrb r1, [r1] - ldr r3, _0808E104 @ =0x00000da4 - adds r0, r3 - strb r1, [r0] - ldr r0, [r4] - adds r0, r2 - ldrb r0, [r0] - movs r1, 0xB0 - movs r2, 0x10 - bl DrawMonMarkingsMenu - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E130 - .align 2, 0 -_0808E100: .4byte 0x00000ce7 -_0808E104: .4byte 0x00000da4 -_0808E108: - bl MonMarkingsHandleInput - lsls r0, 24 - cmp r0, 0 - bne _0808E130 - bl TeardownMonMarkingsMenu - bl sub_808FD20 - ldr r0, [r4] - ldr r1, _0808E138 @ =0x00000da4 - adds r0, r1 - ldrb r0, [r0] - bl sub_8093878 - bl sub_808F1D0 - ldr r0, _0808E13C @ =sub_808D2BC - bl add_to_c3_somehow -_0808E130: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808E138: .4byte 0x00000da4 -_0808E13C: .4byte sub_808D2BC - thumb_func_end sub_808E0BC - - thumb_func_start sub_808E140 -sub_808E140: @ 808E140 - push {r4,r5,lr} - ldr r5, _0808E158 @ =sPSSData - ldr r0, [r5] - ldrb r1, [r0] - cmp r1, 0x1 - beq _0808E18C - cmp r1, 0x1 - bgt _0808E15C - cmp r1, 0 - beq _0808E166 - b _0808E1EA - .align 2, 0 -_0808E158: .4byte sPSSData -_0808E15C: - cmp r1, 0x2 - beq _0808E1B4 - cmp r1, 0x3 - beq _0808E1DA - b _0808E1EA -_0808E166: - ldr r1, _0808E17C @ =0x00000ce2 - adds r0, r1 - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - bne _0808E180 - bl sub_808FD20 - b _0808E1D0 - .align 2, 0 -_0808E17C: .4byte 0x00000ce2 -_0808E180: - ldr r0, _0808E188 @ =sub_808E6D0 - bl add_to_c3_somehow - b _0808E1EA - .align 2, 0 -_0808E188: .4byte sub_808E6D0 -_0808E18C: - movs r0, 0x2 - bl sub_8094D14 - ldr r0, _0808E1B0 @ =sInPartyMenu - ldrb r0, [r0] - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_8094CC8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8095D84 - b _0808E1D0 - .align 2, 0 -_0808E1B0: .4byte sInPartyMenu -_0808E1B4: - bl sub_809610C - lsls r0, 24 - cmp r0, 0 - bne _0808E1EA - movs r0, 0x3 - bl sub_8094D14 - bl sub_808FD20 - bl sub_8092F54 - bl sub_808F49C -_0808E1D0: - ldr r1, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E1EA -_0808E1DA: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E1EA - ldr r0, _0808E1F0 @ =sub_808D2BC - bl add_to_c3_somehow -_0808E1EA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808E1F0: .4byte sub_808D2BC - thumb_func_end sub_808E140 - - thumb_func_start sub_808E1F4 -sub_808E1F4: @ 808E1F4 - push {r4,lr} - ldr r0, _0808E20C @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0808E2A4 - lsls r0, 2 - ldr r1, _0808E210 @ =_0808E214 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808E20C: .4byte sPSSData -_0808E210: .4byte _0808E214 - .align 2, 0 -_0808E214: - .4byte _0808E27C - .4byte _0808E228 - .4byte _0808E250 - .4byte _0808E270 - .4byte _0808E294 -_0808E228: - movs r0, 0x2 - bl sub_8094D14 - ldr r0, _0808E24C @ =sInPartyMenu - ldrb r0, [r0] - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_8094CC8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8095F74 - b _0808E280 - .align 2, 0 -_0808E24C: .4byte sInPartyMenu -_0808E250: - bl sub_809610C - lsls r0, 24 - cmp r0, 0 - bne _0808E2A4 - movs r0, 0 - bl sub_8094D14 - bl sub_8092F54 - bl sub_808F49C - movs r0, 0x1C - bl sub_808FBA4 - b _0808E280 -_0808E270: - ldr r0, _0808E28C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E2A4 -_0808E27C: - bl sub_808FD20 -_0808E280: - ldr r0, _0808E290 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E2A4 - .align 2, 0 -_0808E28C: .4byte gMain -_0808E290: .4byte sPSSData -_0808E294: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E2A4 - ldr r0, _0808E2AC @ =sub_808D2BC - bl add_to_c3_somehow -_0808E2A4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808E2AC: .4byte sub_808D2BC - thumb_func_end sub_808E1F4 - - thumb_func_start sub_808E2B0 -sub_808E2B0: @ 808E2B0 - push {r4,r5,lr} - ldr r1, _0808E2CC @ =sPSSData - ldr r0, [r1] - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x4 - bls _0808E2C0 - b _0808E3BA -_0808E2C0: - lsls r0, 2 - ldr r1, _0808E2D0 @ =_0808E2D4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808E2CC: .4byte sPSSData -_0808E2D0: .4byte _0808E2D4 - .align 2, 0 -_0808E2D4: - .4byte _0808E2E8 - .4byte _0808E340 - .4byte _0808E360 - .4byte _0808E3A4 - .4byte _0808E38C -_0808E2E8: - ldr r0, [r5] - ldr r1, _0808E310 @ =0x00000ce2 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - bne _0808E314 - movs r0, 0x1A - bl PlaySE - movs r0, 0x1A - bl sub_808FBA4 - ldr r1, [r5] - movs r0, 0x3 - strb r0, [r1] - b _0808E3BA - .align 2, 0 -_0808E310: .4byte 0x00000ce2 -_0808E314: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808E33C @ =sInPartyMenu - ldrb r0, [r0] - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_8094CC8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8096008 - ldr r1, [r5] - movs r0, 0x1 - strb r0, [r1] - b _0808E3BA - .align 2, 0 -_0808E33C: .4byte sInPartyMenu -_0808E340: - bl sub_809610C - lsls r0, 24 - cmp r0, 0 - bne _0808E3BA - movs r0, 0x19 - bl sub_808FBA4 - ldr r0, _0808E35C @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1] - b _0808E3BA - .align 2, 0 -_0808E35C: .4byte sPSSData -_0808E360: - ldr r0, _0808E384 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E3BA - bl sub_808FD20 - bl sub_8092F54 - bl sub_808F49C - ldr r0, _0808E388 @ =sPSSData - ldr r1, [r0] - movs r0, 0x4 - strb r0, [r1] - b _0808E3BA - .align 2, 0 -_0808E384: .4byte gMain -_0808E388: .4byte sPSSData -_0808E38C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E3BA - ldr r0, _0808E3A0 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808E3BA - .align 2, 0 -_0808E3A0: .4byte sub_808D2BC -_0808E3A4: - ldr r0, _0808E3C0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E3BA - bl sub_808FD20 - ldr r0, _0808E3C4 @ =sub_808D2BC - bl add_to_c3_somehow -_0808E3BA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808E3C0: .4byte gMain -_0808E3C4: .4byte sub_808D2BC - thumb_func_end sub_808E2B0 - - thumb_func_start sub_808E3C8 -sub_808E3C8: @ 808E3C8 - push {r4,lr} - ldr r1, _0808E3E0 @ =sPSSData - ldr r0, [r1] - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x4 - bhi _0808E4A4 - lsls r0, 2 - ldr r1, _0808E3E4 @ =_0808E3E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808E3E0: .4byte sPSSData -_0808E3E4: .4byte _0808E3E8 - .align 2, 0 -_0808E3E8: - .4byte _0808E3FC - .4byte _0808E428 - .4byte _0808E450 - .4byte _0808E470 - .4byte _0808E494 -_0808E3FC: - ldr r0, [r4] - ldr r1, _0808E418 @ =0x00000ce2 - adds r0, r1 - ldrh r0, [r0] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - bne _0808E41C - bl sub_808FD20 - ldr r1, [r4] - b _0808E484 - .align 2, 0 -_0808E418: .4byte 0x00000ce2 -_0808E41C: - ldr r0, _0808E424 @ =sub_808E6D0 - bl add_to_c3_somehow - b _0808E4A4 - .align 2, 0 -_0808E424: .4byte sub_808E6D0 -_0808E428: - movs r0, 0x2 - bl sub_8094D14 - ldr r0, _0808E44C @ =sInPartyMenu - ldrb r0, [r0] - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_8094CC8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8095EA0 - b _0808E480 - .align 2, 0 -_0808E44C: .4byte sInPartyMenu -_0808E450: - bl sub_809610C - lsls r0, 24 - cmp r0, 0 - bne _0808E4A4 - movs r0, 0x3 - bl sub_8094D14 - bl sub_8092F54 - bl sub_808F49C - movs r0, 0x1D - bl sub_808FBA4 - b _0808E480 -_0808E470: - ldr r0, _0808E48C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E4A4 - bl sub_808FD20 -_0808E480: - ldr r0, _0808E490 @ =sPSSData - ldr r1, [r0] -_0808E484: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E4A4 - .align 2, 0 -_0808E48C: .4byte gMain -_0808E490: .4byte sPSSData -_0808E494: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E4A4 - ldr r0, _0808E4AC @ =sub_808D2BC - bl add_to_c3_somehow -_0808E4A4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808E4AC: .4byte sub_808D2BC - thumb_func_end sub_808E3C8 - - thumb_func_start sub_808E4B0 -sub_808E4B0: @ 808E4B0 - push {lr} - ldr r0, _0808E4C8 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x6 - bhi _0808E55C - lsls r0, 2 - ldr r1, _0808E4CC @ =_0808E4D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808E4C8: .4byte sPSSData -_0808E4CC: .4byte _0808E4D0 - .align 2, 0 -_0808E4D0: - .4byte _0808E4EC - .4byte _0808E4F2 - .4byte _0808E50C - .4byte _0808E512 - .4byte _0808E518 - .4byte _0808E530 - .4byte _0808E54C -_0808E4EC: - bl sub_808FD20 - b _0808E53A -_0808E4F2: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E55C - movs r0, 0x6 - bl PlaySE - bl sub_8096694 - bl sub_80966F4 - b _0808E53A -_0808E50C: - bl sub_8096728 - b _0808E534 -_0808E512: - bl IsDma3ManagerBusyWithBgCopy - b _0808E534 -_0808E518: - ldr r0, _0808E52C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E55C - movs r0, 0x6 - bl PlaySE - b _0808E53A - .align 2, 0 -_0808E52C: .4byte gMain -_0808E530: - bl sub_80967C0 -_0808E534: - lsls r0, 24 - cmp r0, 0 - bne _0808E55C -_0808E53A: - ldr r0, _0808E548 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E55C - .align 2, 0 -_0808E548: .4byte sPSSData -_0808E54C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E55C - ldr r0, _0808E560 @ =sub_808D2BC - bl add_to_c3_somehow -_0808E55C: - pop {r0} - bx r0 - .align 2, 0 -_0808E560: .4byte sub_808D2BC - thumb_func_end sub_808E4B0 - - thumb_func_start sub_808E564 -sub_808E564: @ 808E564 - push {r4,lr} - ldr r0, _0808E57C @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x5 - bls _0808E572 - b _0808E67C -_0808E572: - lsls r0, 2 - ldr r1, _0808E580 @ =_0808E584 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808E57C: .4byte sPSSData -_0808E580: .4byte _0808E584 - .align 2, 0 -_0808E584: - .4byte _0808E59C - .4byte _0808E5BC - .4byte _0808E61A - .4byte _0808E63C - .4byte _0808E650 - .4byte _0808E66C -_0808E59C: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1B - bl sub_808FBA4 - movs r0, 0 - bl sub_808FCE8 - ldr r0, _0808E5B8 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1] - b _0808E67C - .align 2, 0 -_0808E5B8: .4byte sPSSData -_0808E5BC: - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0808E5E0 - cmp r1, 0 - bgt _0808E5D6 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0808E5DA - b _0808E67C -_0808E5D6: - cmp r1, 0x1 - bne _0808E67C -_0808E5DA: - bl sub_808FD20 - b _0808E660 -_0808E5E0: - ldr r4, _0808E604 @ =sPSSData - ldr r0, [r4] - ldr r1, _0808E608 @ =0x00002224 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808E60C - bl sub_808FD20 - ldr r1, [r4] - movs r0, 0x3 - strb r0, [r1] - b _0808E67C - .align 2, 0 -_0808E604: .4byte sPSSData -_0808E608: .4byte 0x00002224 -_0808E60C: - movs r0, 0x1A - bl sub_808FBA4 - ldr r1, [r4] - movs r0, 0x2 - strb r0, [r1] - b _0808E67C -_0808E61A: - ldr r0, _0808E634 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E67C - bl sub_808FD20 - ldr r0, _0808E638 @ =sPSSData - ldr r1, [r0] - movs r0, 0x5 - strb r0, [r1] - b _0808E67C - .align 2, 0 -_0808E634: .4byte gMain -_0808E638: .4byte sPSSData -_0808E63C: - bl sub_8096088 - ldr r0, _0808E64C @ =sPSSData - ldr r1, [r0] - movs r0, 0x4 - strb r0, [r1] - b _0808E67C - .align 2, 0 -_0808E64C: .4byte sPSSData -_0808E650: - bl sub_809610C - lsls r0, 24 - cmp r0, 0 - bne _0808E67C - movs r0, 0 - bl sub_8094D14 -_0808E660: - ldr r0, _0808E668 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808E67C - .align 2, 0 -_0808E668: .4byte sub_808D2BC -_0808E66C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E67C - ldr r0, _0808E684 @ =sub_808D2BC - bl add_to_c3_somehow -_0808E67C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808E684: .4byte sub_808D2BC - thumb_func_end sub_808E564 - - thumb_func_start sub_808E688 -sub_808E688: @ 808E688 - push {r4,lr} - ldr r4, _0808E69C @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - beq _0808E6A0 - cmp r0, 0x1 - beq _0808E6B2 - b _0808E6C6 - .align 2, 0 -_0808E69C: .4byte sPSSData -_0808E6A0: - bl CompactPartySlots - bl sub_80909F4 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E6C6 -_0808E6B2: - bl sub_8090A60 - lsls r0, 24 - cmp r0, 0 - bne _0808E6C6 - bl sub_808FAA8 - ldr r0, _0808E6CC @ =sub_808D2BC - bl add_to_c3_somehow -_0808E6C6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808E6CC: .4byte sub_808D2BC - thumb_func_end sub_808E688 - - thumb_func_start sub_808E6D0 -sub_808E6D0: @ 808E6D0 - push {r4,lr} - ldr r4, _0808E6E8 @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808E6FE - cmp r0, 0x1 - bgt _0808E6EC - cmp r0, 0 - beq _0808E6F6 - b _0808E738 - .align 2, 0 -_0808E6E8: .4byte sPSSData -_0808E6EC: - cmp r0, 0x2 - beq _0808E70A - cmp r0, 0x3 - beq _0808E728 - b _0808E738 -_0808E6F6: - movs r0, 0x1E - bl sub_808FBA4 - b _0808E71A -_0808E6FE: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E738 - b _0808E71A -_0808E70A: - ldr r0, _0808E724 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808E738 - bl sub_808FD20 -_0808E71A: - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E738 - .align 2, 0 -_0808E724: .4byte gMain -_0808E728: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E738 - ldr r0, _0808E740 @ =sub_808D2BC - bl add_to_c3_somehow -_0808E738: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808E740: .4byte sub_808D2BC - thumb_func_end sub_808E6D0 - - thumb_func_start box_related -box_related: @ 808E744 - push {r4,lr} - ldr r4, _0808E75C @ =sPSSData - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808E77A - cmp r0, 0x1 - bgt _0808E760 - cmp r0, 0 - beq _0808E766 - b _0808E830 - .align 2, 0 -_0808E75C: .4byte sPSSData -_0808E760: - cmp r0, 0x2 - beq _0808E78C - b _0808E830 -_0808E766: - movs r0, 0x1 - bl sub_808FBA4 - bl sub_8094E88 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E830 -_0808E77A: - bl sub_8094F90 - lsls r0, 24 - cmp r0, 0 - bne _0808E830 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0808E78C: - bl sub_8094F94 - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bhi _0808E830 - lsls r0, 2 - ldr r1, _0808E7A4 @ =_0808E7A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808E7A4: .4byte _0808E7A8 - .align 2, 0 -_0808E7A8: - .4byte _0808E7DC - .4byte _0808E7DC - .4byte _0808E830 - .4byte _0808E830 - .4byte _0808E830 - .4byte _0808E830 - .4byte _0808E830 - .4byte _0808E830 - .4byte _0808E830 - .4byte _0808E830 - .4byte _0808E820 - .4byte _0808E808 - .4byte _0808E7F4 -_0808E7DC: - movs r0, 0x1 - bl sub_80920FC - bl sub_808FD20 - ldr r0, _0808E7F0 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808E830 - .align 2, 0 -_0808E7F0: .4byte sub_808D2BC -_0808E7F4: - movs r0, 0x5 - bl PlaySE - ldr r0, _0808E804 @ =sub_808EA90 - bl add_to_c3_somehow - b _0808E830 - .align 2, 0 -_0808E804: .4byte sub_808EA90 -_0808E808: - movs r0, 0x5 - bl PlaySE - bl sub_808FD20 - ldr r0, _0808E81C @ =sub_808E83C - bl add_to_c3_somehow - b _0808E830 - .align 2, 0 -_0808E81C: .4byte sub_808E83C -_0808E820: - movs r0, 0x5 - bl PlaySE - bl sub_808FD20 - ldr r0, _0808E838 @ =sub_808E9A0 - bl add_to_c3_somehow -_0808E830: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808E838: .4byte sub_808E9A0 - thumb_func_end box_related - - thumb_func_start sub_808E83C -sub_808E83C: @ 808E83C - push {r4,r5,lr} - ldr r0, _0808E854 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x5 - bls _0808E84A - b _0808E994 -_0808E84A: - lsls r0, 2 - ldr r1, _0808E858 @ =_0808E85C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808E854: .4byte sPSSData -_0808E858: .4byte _0808E85C - .align 2, 0 -_0808E85C: - .4byte _0808E874 - .4byte _0808E888 - .4byte _0808E8A0 - .4byte _0808E8FA - .4byte _0808E924 - .4byte _0808E97E -_0808E874: - bl sub_808FD34 - movs r0, 0x2 - bl sub_808FBA4 - ldr r0, _0808E884 @ =sPSSData - ldr r1, [r0] - b _0808E976 - .align 2, 0 -_0808E884: .4byte sPSSData -_0808E888: - bl sub_8094F90 - lsls r0, 24 - cmp r0, 0 - beq _0808E894 - b _0808E994 -_0808E894: - ldr r0, _0808E89C @ =sPSSData - ldr r1, [r0] - b _0808E976 - .align 2, 0 -_0808E89C: .4byte sPSSData -_0808E8A0: - bl sub_8094F94 - ldr r5, _0808E8CC @ =sPSSData - ldr r1, [r5] - ldr r4, _0808E8D0 @ =0x0000078e - adds r1, r4 - strh r0, [r1] - movs r2, 0 - ldrsh r0, [r1, r2] - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0808E8D8 - movs r0, 0x1 - bl sub_80920FC - bl sub_808FD20 - ldr r0, _0808E8D4 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808E994 - .align 2, 0 -_0808E8CC: .4byte sPSSData -_0808E8D0: .4byte 0x0000078e -_0808E8D4: .4byte sub_808D2BC -_0808E8D8: - cmp r0, r1 - blt _0808E994 - cmp r0, 0x15 - bgt _0808E994 - cmp r0, 0x12 - blt _0808E994 - movs r0, 0x5 - bl PlaySE - bl sub_8095024 - ldr r1, [r5] - adds r2, r1, r4 - ldrh r0, [r2] - subs r0, 0x12 - strh r0, [r2] - b _0808E976 -_0808E8FA: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0808E994 - ldr r4, _0808E91C @ =sPSSData - ldr r0, [r4] - ldr r1, _0808E920 @ =0x0000078e - adds r0, r1 - ldrb r0, [r0] - bl sub_808FD5C - movs r0, 0x3 - bl sub_808FBA4 - b _0808E974 - .align 2, 0 -_0808E91C: .4byte sPSSData -_0808E920: .4byte 0x0000078e -_0808E924: - bl sub_8094F94 - ldr r4, _0808E954 @ =sPSSData - ldr r1, [r4] - movs r5, 0xF2 - lsls r5, 3 - adds r1, r5 - strh r0, [r1] - movs r2, 0 - ldrsh r1, [r1, r2] - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _0808E994 - adds r0, 0x1 - cmp r1, r0 - bne _0808E958 - bl sub_808FD20 - ldr r1, [r4] - movs r0, 0 - strb r0, [r1] - b _0808E994 - .align 2, 0 -_0808E954: .4byte sPSSData -_0808E958: - movs r0, 0x5 - bl PlaySE - bl sub_808FD20 - ldr r1, [r4] - adds r1, r5 - ldrh r0, [r1] - subs r0, 0x16 - strh r0, [r1] - lsls r0, 24 - lsrs r0, 24 - bl sub_8091730 -_0808E974: - ldr r1, [r4] -_0808E976: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808E994 -_0808E97E: - bl sub_8091760 - lsls r0, 24 - cmp r0, 0 - bne _0808E994 - movs r0, 0x1 - bl sub_80920FC - ldr r0, _0808E99C @ =sub_808D2BC - bl add_to_c3_somehow -_0808E994: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808E99C: .4byte sub_808D2BC - thumb_func_end sub_808E83C - - thumb_func_start sub_808E9A0 -sub_808E9A0: @ 808E9A0 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _0808E9B8 @ =sPSSData - ldr r0, [r5] - ldrb r4, [r0] - cmp r4, 0x1 - beq _0808E9F4 - cmp r4, 0x1 - bgt _0808E9BC - cmp r4, 0 - beq _0808E9C6 - b _0808EA80 - .align 2, 0 -_0808E9B8: .4byte sPSSData -_0808E9BC: - cmp r4, 0x2 - beq _0808EA4C - cmp r4, 0x3 - beq _0808EA64 - b _0808EA80 -_0808E9C6: - movs r0, 0x5 - bl sub_808FBA4 - ldr r0, [r5] - ldr r1, _0808E9EC @ =0x00001e58 - adds r0, r1 - ldr r2, _0808E9F0 @ =0x0000dac7 - str r4, [sp] - movs r1, 0xA - movs r3, 0x3 - bl sub_808C854 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - bl sub_808C940 - b _0808EA56 - .align 2, 0 -_0808E9EC: .4byte 0x00001e58 -_0808E9F0: .4byte 0x0000dac7 -_0808E9F4: - bl sub_808C95C - ldr r1, [r5] - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0808EA44 @ =0x000002ca - adds r1, r2 - strh r0, [r1] - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0xC8 - beq _0808EA80 - bl sub_808FD20 - bl sub_808C950 - bl sub_808C8FC - ldr r0, [r5] - ldr r2, _0808EA44 @ =0x000002ca - adds r1, r0, r2 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0xC9 - beq _0808EA34 - adds r4, r0, 0 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _0808EA56 -_0808EA34: - movs r0, 0x1 - bl sub_80920FC - ldr r0, _0808EA48 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808EA80 - .align 2, 0 -_0808EA44: .4byte 0x000002ca -_0808EA48: .4byte sub_808D2BC -_0808EA4C: - ldr r1, _0808EA60 @ =0x000002ca - adds r0, r1 - ldrb r0, [r0] - bl sub_8091514 -_0808EA56: - ldr r1, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808EA80 - .align 2, 0 -_0808EA60: .4byte 0x000002ca -_0808EA64: - bl sub_80915FC - lsls r0, 24 - cmp r0, 0 - bne _0808EA80 - ldr r0, [r5] - ldr r2, _0808EA88 @ =0x000002ca - adds r0, r2 - ldrb r0, [r0] - bl sub_808BA00 - ldr r0, _0808EA8C @ =sub_808D2BC - bl add_to_c3_somehow -_0808EA80: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808EA88: .4byte 0x000002ca -_0808EA8C: .4byte sub_808D2BC - thumb_func_end sub_808E9A0 - - thumb_func_start sub_808EA90 -sub_808EA90: @ 808EA90 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _0808EAA4 @ =sPSSData - ldr r0, [r5] - ldrb r4, [r0] - cmp r4, 0 - beq _0808EAA8 - cmp r4, 0x1 - beq _0808EAC6 - b _0808EAE0 - .align 2, 0 -_0808EAA4: .4byte sPSSData -_0808EAA8: - bl sub_8093630 - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808EAE0 -_0808EAC6: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _0808EAE0 - ldr r0, _0808EAE8 @ =sWhichToReshow - strb r4, [r0] - ldr r1, [r5] - movs r0, 0x2 - strb r0, [r1, 0x2] - ldr r0, _0808EAEC @ =sub_808EE18 - bl add_to_c3_somehow -_0808EAE0: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808EAE8: .4byte sWhichToReshow -_0808EAEC: .4byte sub_808EE18 - thumb_func_end sub_808EA90 - - thumb_func_start sub_808EAF0 -sub_808EAF0: @ 808EAF0 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _0808EB04 @ =sPSSData - ldr r0, [r5] - ldrb r4, [r0] - cmp r4, 0 - beq _0808EB08 - cmp r4, 0x1 - beq _0808EB26 - b _0808EB40 - .align 2, 0 -_0808EB04: .4byte sPSSData -_0808EB08: - bl sub_80936B8 - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r5] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808EB40 -_0808EB26: - bl UpdatePaletteFade - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0808EB40 - ldr r0, _0808EB48 @ =sWhichToReshow - strb r1, [r0] - ldr r0, [r5] - strb r4, [r0, 0x2] - ldr r0, _0808EB4C @ =sub_808EE18 - bl add_to_c3_somehow -_0808EB40: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808EB48: .4byte sWhichToReshow -_0808EB4C: .4byte sub_808EE18 - thumb_func_end sub_808EAF0 - - thumb_func_start sub_808EB50 -sub_808EB50: @ 808EB50 - push {r4,lr} - sub sp, 0x4 - ldr r4, _0808EB64 @ =sPSSData - ldr r0, [r4] - ldrb r1, [r0] - cmp r1, 0 - beq _0808EB68 - cmp r1, 0x1 - beq _0808EB82 - b _0808EB9E - .align 2, 0 -_0808EB64: .4byte sPSSData -_0808EB68: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r4] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808EB9E -_0808EB82: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _0808EB9E - ldr r1, _0808EBA8 @ =sWhichToReshow - movs r0, 0x2 - strb r0, [r1] - ldr r1, [r4] - movs r0, 0x3 - strb r0, [r1, 0x2] - ldr r0, _0808EBAC @ =sub_808EE18 - bl add_to_c3_somehow -_0808EB9E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808EBA8: .4byte sWhichToReshow -_0808EBAC: .4byte sub_808EE18 - thumb_func_end sub_808EB50 - - thumb_func_start sub_808EBB0 -sub_808EBB0: @ 808EBB0 - push {r4,lr} - ldr r0, _0808EBC8 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x4 - bls _0808EBBE - b _0808ECD0 -_0808EBBE: - lsls r0, 2 - ldr r1, _0808EBCC @ =_0808EBD0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808EBC8: .4byte sPSSData -_0808EBCC: .4byte _0808EBD0 - .align 2, 0 -_0808EBD0: - .4byte _0808EBE4 - .4byte _0808EC40 - .4byte _0808EC54 - .4byte _0808EC90 - .4byte _0808ECAC -_0808EBE4: - bl sub_80939A0 - lsls r0, 24 - cmp r0, 0 - beq _0808EC08 - movs r0, 0x1A - bl PlaySE - movs r0, 0xF - bl sub_808FBA4 - ldr r0, _0808EC04 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1] - b _0808ECD0 - .align 2, 0 -_0808EC04: .4byte sPSSData -_0808EC08: - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - beq _0808EC20 - ldr r0, _0808EC1C @ =sub_808E564 - bl add_to_c3_somehow - b _0808ECD0 - .align 2, 0 -_0808EC1C: .4byte sub_808E564 -_0808EC20: - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl sub_808FBA4 - movs r0, 0 - bl sub_808FCE8 - ldr r0, _0808EC3C @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1] - b _0808ECD0 - .align 2, 0 -_0808EC3C: .4byte sPSSData -_0808EC40: - ldr r0, _0808EC50 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808ECD0 - b _0808EC72 - .align 2, 0 -_0808EC50: .4byte gMain -_0808EC54: - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0808EC84 - cmp r1, 0 - bgt _0808EC6E - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0808EC72 - b _0808ECD0 -_0808EC6E: - cmp r1, 0x1 - bne _0808ECD0 -_0808EC72: - bl sub_808FD20 - ldr r0, _0808EC80 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808ECD0 - .align 2, 0 -_0808EC80: .4byte sub_808D2BC -_0808EC84: - movs r0, 0x3 - bl PlaySE - bl sub_808FD20 - b _0808EC9A -_0808EC90: - movs r0, 0x14 - movs r1, 0 - movs r2, 0x1 - bl sub_80A0A70 -_0808EC9A: - ldr r0, _0808ECA8 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808ECD0 - .align 2, 0 -_0808ECA8: .4byte sPSSData -_0808ECAC: - bl sub_80A0AAC - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0808ECD0 - bl sub_808FF70 - bl CalculatePlayerPartyCount - ldr r1, _0808ECD8 @ =gPlayerPartyCount - strb r0, [r1] - ldr r0, _0808ECDC @ =sPSSData - ldr r0, [r0] - strb r4, [r0, 0x2] - ldr r0, _0808ECE0 @ =sub_808EE18 - bl add_to_c3_somehow -_0808ECD0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808ECD8: .4byte gPlayerPartyCount -_0808ECDC: .4byte sPSSData -_0808ECE0: .4byte sub_808EE18 - thumb_func_end sub_808EBB0 - - thumb_func_start sub_808ECE4 -sub_808ECE4: @ 808ECE4 - push {r4,lr} - ldr r0, _0808ECFC @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x4 - bls _0808ECF2 - b _0808EE04 -_0808ECF2: - lsls r0, 2 - ldr r1, _0808ED00 @ =_0808ED04 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808ECFC: .4byte sPSSData -_0808ED00: .4byte _0808ED04 - .align 2, 0 -_0808ED04: - .4byte _0808ED18 - .4byte _0808ED74 - .4byte _0808ED88 - .4byte _0808EDC4 - .4byte _0808EDE0 -_0808ED18: - bl sub_80939A0 - lsls r0, 24 - cmp r0, 0 - beq _0808ED3C - movs r0, 0x1A - bl PlaySE - movs r0, 0xF - bl sub_808FBA4 - ldr r0, _0808ED38 @ =sPSSData - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1] - b _0808EE04 - .align 2, 0 -_0808ED38: .4byte sPSSData -_0808ED3C: - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - beq _0808ED54 - ldr r0, _0808ED50 @ =sub_808E564 - bl add_to_c3_somehow - b _0808EE04 - .align 2, 0 -_0808ED50: .4byte sub_808E564 -_0808ED54: - movs r0, 0x5 - bl PlaySE - movs r0, 0x12 - bl sub_808FBA4 - movs r0, 0 - bl sub_808FCE8 - ldr r0, _0808ED70 @ =sPSSData - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1] - b _0808EE04 - .align 2, 0 -_0808ED70: .4byte sPSSData -_0808ED74: - ldr r0, _0808ED84 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xF3 - ands r0, r1 - cmp r0, 0 - beq _0808EE04 - b _0808EDA8 - .align 2, 0 -_0808ED84: .4byte gMain -_0808ED88: - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0808EDA8 - cmp r1, 0 - bgt _0808EDA2 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0808EDB8 - b _0808EE04 -_0808EDA2: - cmp r1, 0x1 - beq _0808EDB8 - b _0808EE04 -_0808EDA8: - bl sub_808FD20 - ldr r0, _0808EDB4 @ =sub_808D2BC - bl add_to_c3_somehow - b _0808EE04 - .align 2, 0 -_0808EDB4: .4byte sub_808D2BC -_0808EDB8: - movs r0, 0x3 - bl PlaySE - bl sub_808FD20 - b _0808EDCE -_0808EDC4: - movs r0, 0x14 - movs r1, 0 - movs r2, 0 - bl sub_80A0A70 -_0808EDCE: - ldr r0, _0808EDDC @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808EE04 - .align 2, 0 -_0808EDDC: .4byte sPSSData -_0808EDE0: - bl sub_80A0AAC - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0808EE04 - bl sub_808FF70 - bl CalculatePlayerPartyCount - ldr r1, _0808EE0C @ =gPlayerPartyCount - strb r0, [r1] - ldr r0, _0808EE10 @ =sPSSData - ldr r0, [r0] - strb r4, [r0, 0x2] - ldr r0, _0808EE14 @ =sub_808EE18 - bl add_to_c3_somehow -_0808EE04: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808EE0C: .4byte gPlayerPartyCount -_0808EE10: .4byte sPSSData -_0808EE14: .4byte sub_808EE18 - thumb_func_end sub_808ECE4 - - thumb_func_start sub_808EE18 -sub_808EE18: @ 808EE18 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808EE44 @ =sPSSData - ldr r0, [r0] - ldrb r4, [r0, 0x2] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _0808EE4C - bl sub_809616C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808EE4C - bl sub_80961C4 - ldr r1, _0808EE48 @ =gUnknown_20397BA - b _0808EE50 - .align 2, 0 -_0808EE44: .4byte sPSSData -_0808EE48: .4byte gUnknown_20397BA -_0808EE4C: - ldr r1, _0808EE70 @ =gUnknown_20397BA - movs r0, 0 -_0808EE50: - strh r0, [r1] - cmp r4, 0x1 - beq _0808EE78 - cmp r4, 0x1 - ble _0808EE62 - cmp r4, 0x2 - beq _0808EEBC - cmp r4, 0x3 - beq _0808EEE8 -_0808EE62: - bl sub_808EF68 - ldr r0, _0808EE74 @ =sub_808C7B4 - bl SetMainCallback2 - b _0808EEF6 - .align 2, 0 -_0808EE70: .4byte gUnknown_20397BA -_0808EE74: .4byte sub_808C7B4 -_0808EE78: - ldr r0, _0808EEAC @ =sPSSData - ldr r1, [r0] - ldr r2, _0808EEB0 @ =0x0000217c - adds r0, r1, r2 - ldr r0, [r0] - mov r8, r0 - subs r2, 0x3 - adds r0, r1, r2 - ldrb r6, [r0] - subs r2, 0x1 - adds r0, r1, r2 - ldrb r5, [r0] - ldr r0, _0808EEB4 @ =0x0000217a - adds r1, r0 - ldrb r4, [r1] - bl sub_808EF68 - ldr r3, _0808EEB8 @ =sub_808CE60 - str r4, [sp] - mov r0, r8 - adds r1, r6, 0 - adds r2, r5, 0 - bl ShowPokemonSummaryScreen - b _0808EEF6 - .align 2, 0 -_0808EEAC: .4byte sPSSData -_0808EEB0: .4byte 0x0000217c -_0808EEB4: .4byte 0x0000217a -_0808EEB8: .4byte sub_808CE60 -_0808EEBC: - bl sub_808EF68 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - movs r0, 0 - str r0, [sp] - ldr r0, _0808EEE4 @ =sub_808CE60 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DoNamingScreen - b _0808EEF6 - .align 2, 0 -_0808EEE4: .4byte sub_808CE60 -_0808EEE8: - bl sub_808EF68 - ldr r2, _0808EF08 @ =sub_808CE60 - movs r0, 0x4 - movs r1, 0 - bl GoToBagMenu -_0808EEF6: - adds r0, r7, 0 - bl DestroyTask - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808EF08: .4byte sub_808CE60 - thumb_func_end sub_808EE18 - - thumb_func_start sub_808EF0C -sub_808EF0C: @ 808EF0C - push {lr} - sub sp, 0x4 - ldr r0, _0808EF40 @ =gSpecialVar_ItemId - ldrh r1, [r0] - mov r0, sp - strh r1, [r0] - cmp r1, 0 - beq _0808EF60 - bl sub_8094CC8 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0808EF44 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808EF4C - movs r0, 0x64 - muls r0, r1 - ldr r1, _0808EF48 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - mov r2, sp - bl SetMonData - b _0808EF56 - .align 2, 0 -_0808EF40: .4byte gSpecialVar_ItemId -_0808EF44: .4byte sInPartyMenu -_0808EF48: .4byte gPlayerParty -_0808EF4C: - adds r0, r1, 0 - movs r1, 0xC - mov r2, sp - bl SetBoxMonDataFromSelectedBox -_0808EF56: - mov r0, sp - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem -_0808EF60: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_808EF0C - - thumb_func_start sub_808EF68 -sub_808EF68: @ 808EF68 - push {r4,lr} - bl sub_80F7B2C - bl sub_80950A4 - ldr r4, _0808EF88 @ =sPSSData - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] - bl FreeAllWindowBuffers - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808EF88: .4byte sPSSData - thumb_func_end sub_808EF68 - - thumb_func_start sub_808EF8C -sub_808EF8C: @ 808EF8C - push {lr} - sub sp, 0x4 - ldr r1, _0808EFB8 @ =0x00001f0f - movs r0, 0xE - bl SetGpuReg - ldr r1, _0808EFBC @ =gUnknown_83CE438 - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r0, _0808EFC0 @ =gUnknown_83CE4D0 - ldr r1, _0808EFC4 @ =0x0600f800 - bl LZ77UnCompVram - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0808EFB8: .4byte 0x00001f0f -_0808EFBC: .4byte gUnknown_83CE438 -_0808EFC0: .4byte gUnknown_83CE4D0 -_0808EFC4: .4byte 0x0600f800 - thumb_func_end sub_808EF8C - - thumb_func_start sub_808EFC8 -sub_808EFC8: @ 808EFC8 - push {lr} - movs r0, 0x3 - movs r1, 0x80 - movs r2, 0x1 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0x80 - movs r2, 0x2 - bl ChangeBgY - pop {r0} - bx r0 - thumb_func_end sub_808EFC8 - - thumb_func_start sub_808EFE4 -sub_808EFE4: @ 808EFE4 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _0808F030 @ =gUnknown_83CEA50 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r1, _0808F034 @ =gUnknown_8E9C438 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r0, _0808F038 @ =gUnknown_83CE5FC - ldr r5, _0808F03C @ =sPSSData - ldr r1, [r5] - ldr r4, _0808F040 @ =0x00005abc - adds r1, r4 - bl LZ77UnCompWram - ldr r1, [r5] - adds r1, r4 - movs r0, 0x1 - bl SetBgTilemapBuffer - movs r0, 0x1 - bl ShowBg - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808F030: .4byte gUnknown_83CEA50 -_0808F034: .4byte gUnknown_8E9C438 -_0808F038: .4byte gUnknown_83CE5FC -_0808F03C: .4byte sPSSData -_0808F040: .4byte 0x00005abc - thumb_func_end sub_808EFE4 - - thumb_func_start sub_808F044 -sub_808F044: @ 808F044 - push {lr} - ldr r0, _0808F05C @ =gUnknown_83CEA30 - bl InitWindows - lsls r0, 16 - cmp r0, 0 - beq _0808F060 - bl DeactivateAllTextPrinters - movs r0, 0x1 - b _0808F062 - .align 2, 0 -_0808F05C: .4byte gUnknown_83CEA30 -_0808F060: - movs r0, 0 -_0808F062: - pop {r1} - bx r1 - thumb_func_end sub_808F044 - - thumb_func_start sub_808F068 -sub_808F068: @ 808F068 - push {lr} - ldr r0, _0808F074 @ =gUnknown_83CEA60 - bl LoadSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_0808F074: .4byte gUnknown_83CEA60 - thumb_func_end sub_808F068 - - thumb_func_start sub_808F078 -sub_808F078: @ 808F078 - push {lr} - ldr r0, _0808F0B0 @ =gUnknown_8E9C3F8 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0808F0B4 @ =gUnknown_8E9C418 - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0808F0B8 @ =gUnknown_83CEA10 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0808F0BC @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - beq _0808F0C4 - ldr r0, _0808F0C0 @ =gUnknown_83CE738 - movs r1, 0x30 - movs r2, 0x20 - bl LoadPalette - b _0808F0CE - .align 2, 0 -_0808F0B0: .4byte gUnknown_8E9C3F8 -_0808F0B4: .4byte gUnknown_8E9C418 -_0808F0B8: .4byte gUnknown_83CEA10 -_0808F0BC: .4byte sPSSData -_0808F0C0: .4byte gUnknown_83CE738 -_0808F0C4: - ldr r0, _0808F0EC @ =gUnknown_83CE758 - movs r1, 0x30 - movs r2, 0x20 - bl LoadPalette -_0808F0CE: - ldr r1, _0808F0F0 @ =0x00001e05 - movs r0, 0xA - bl SetGpuReg - bl sub_808F2BC - bl sub_808F0F4 - bl sub_808F164 - bl sub_808F1D0 - pop {r0} - bx r0 - .align 2, 0 -_0808F0EC: .4byte gUnknown_83CE758 -_0808F0F0: .4byte 0x00001e05 - thumb_func_end sub_808F078 - - thumb_func_start sub_808F0F4 -sub_808F0F4: @ 808F0F4 - push {r4,lr} - ldr r1, _0808F154 @ =0x0000dac8 - movs r0, 0x10 - movs r2, 0 - bl CreateMonMarkingSprite_AllOff - ldr r4, _0808F158 @ =sPSSData - ldr r1, [r4] - movs r3, 0xD9 - lsls r3, 4 - adds r1, r3 - str r0, [r1] - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r0, [r4] - adds r0, r3 - ldr r0, [r0] - adds r0, 0x43 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r4] - adds r0, r3 - ldr r2, [r0] - movs r1, 0x28 - strh r1, [r2, 0x20] - ldr r1, [r0] - movs r0, 0x96 - strh r0, [r1, 0x22] - movs r0, 0x10 - bl GetSpriteTileStartByTag - ldr r1, [r4] - ldr r2, _0808F15C @ =0x00000d9c - adds r1, r2 - lsls r0, 16 - lsrs r0, 11 - ldr r2, _0808F160 @ =0x06010000 - adds r0, r2 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808F154: .4byte 0x0000dac8 -_0808F158: .4byte sPSSData -_0808F15C: .4byte 0x00000d9c -_0808F160: .4byte 0x06010000 - thumb_func_end sub_808F0F4 - - thumb_func_start sub_808F164 -sub_808F164: @ 808F164 - push {r4,lr} - sub sp, 0x8 - ldr r0, _0808F1BC @ =gUnknown_83CEA68 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - movs r4, 0 -_0808F17A: - lsls r1, r4, 6 - subs r1, r4 - adds r1, 0x8 - lsls r1, 16 - asrs r1, 16 - ldr r0, _0808F1C0 @ =gUnknown_83CEBD8 - movs r2, 0x9 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0808F1C4 @ =sPSSData - ldr r2, [r1] - lsls r1, r4, 2 - ldr r3, _0808F1C8 @ =0x00000d94 - adds r2, r3 - adds r2, r1 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _0808F1CC @ =gSprites - adds r1, r0 - str r1, [r2] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _0808F17A - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808F1BC: .4byte gUnknown_83CEA68 -_0808F1C0: .4byte gUnknown_83CEBD8 -_0808F1C4: .4byte sPSSData -_0808F1C8: .4byte 0x00000d94 -_0808F1CC: .4byte gSprites - thumb_func_end sub_808F164 - - thumb_func_start sub_808F1D0 -sub_808F1D0: @ 808F1D0 - push {lr} - ldr r0, _0808F1FC @ =sPSSData - ldr r1, [r0] - movs r2, 0xCE - lsls r2, 4 - adds r0, r1, r2 - ldrh r0, [r0] - subs r2, 0x4 - adds r1, r2 - ldr r1, [r1] - bl sub_808F3F8 - bl sub_808F49C - bl sub_808F5E8 - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - pop {r0} - bx r0 - .align 2, 0 -_0808F1FC: .4byte sPSSData - thumb_func_end sub_808F1D0 - - thumb_func_start BoxSetMosaic -BoxSetMosaic: @ 808F200 - push {lr} - bl sub_808F1D0 - ldr r3, _0808F24C @ =sPSSData - ldr r0, [r3] - ldr r1, _0808F250 @ =0x00002238 - adds r0, r1 - ldr r2, [r0] - cmp r2, 0 - beq _0808F248 - ldrb r0, [r2, 0x1] - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x1] - ldr r1, [r3] - ldr r0, _0808F250 @ =0x00002238 - adds r1, r0 - ldr r2, [r1] - movs r0, 0xA - strh r0, [r2, 0x2E] - ldr r2, [r1] - movs r0, 0x1 - strh r0, [r2, 0x30] - ldr r2, [r1] - ldr r0, _0808F254 @ =BoxSetMosaic2 - str r0, [r2, 0x1C] - ldr r0, [r1] - ldrh r0, [r0, 0x2E] - lsls r1, r0, 12 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4C - bl SetGpuReg -_0808F248: - pop {r0} - bx r0 - .align 2, 0 -_0808F24C: .4byte sPSSData -_0808F250: .4byte 0x00002238 -_0808F254: .4byte BoxSetMosaic2 - thumb_func_end BoxSetMosaic - - thumb_func_start sub_808F258 -sub_808F258: @ 808F258 - ldr r0, _0808F26C @ =sPSSData - ldr r0, [r0] - ldr r1, _0808F270 @ =0x00002238 - adds r0, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - lsls r0, 27 - lsrs r0, 31 - bx lr - .align 2, 0 -_0808F26C: .4byte sPSSData -_0808F270: .4byte 0x00002238 - thumb_func_end sub_808F258 - - thumb_func_start BoxSetMosaic2 -BoxSetMosaic2: @ 808F274 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - ldrh r1, [r4, 0x30] - subs r0, r1 - strh r0, [r4, 0x2E] - lsls r0, 16 - cmp r0, 0 - bge _0808F28A - movs r0, 0 - strh r0, [r4, 0x2E] -_0808F28A: - ldrh r0, [r4, 0x2E] - lsls r1, r0, 12 - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x4C - bl SetGpuReg - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0808F2B2 - ldrb r0, [r4, 0x1] - movs r1, 0x11 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x1] - ldr r0, _0808F2B8 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_0808F2B2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808F2B8: .4byte SpriteCallbackDummy - thumb_func_end BoxSetMosaic2 - - thumb_func_start sub_808F2BC -sub_808F2BC: @ 808F2BC - push {r4-r7,lr} - sub sp, 0x28 - ldr r0, _0808F350 @ =sPSSData - mov r12, r0 - ldr r1, [r0] - ldr r4, _0808F354 @ =0x000022bc - adds r0, r1, r4 - str r0, [sp, 0x18] - add r3, sp, 0x18 - movs r0, 0x82 - lsls r0, 10 - str r0, [r3, 0x4] - ldr r5, _0808F358 @ =0x0000223c - adds r1, r5 - str r1, [sp, 0x20] - ldr r0, _0808F35C @ =0x0000dac6 - add r2, sp, 0x20 - str r0, [r2, 0x4] - mov r1, sp - ldr r0, _0808F360 @ =gUnknown_83CEA70 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - movs r6, 0 - adds r7, r2, 0 - mov r5, r12 - movs r2, 0 - ldr r1, _0808F364 @ =0x000007ff -_0808F2F6: - ldr r0, [r5] - adds r0, r4 - adds r0, r6 - strb r2, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, r1 - bls _0808F2F6 - movs r6, 0 - ldr r5, _0808F350 @ =sPSSData - ldr r4, _0808F358 @ =0x0000223c - movs r2, 0 -_0808F310: - ldr r0, [r5] - lsls r1, r6, 1 - adds r0, r4 - adds r0, r1 - strh r2, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0xF - bls _0808F310 - ldr r0, _0808F350 @ =sPSSData - ldr r0, [r0] - ldr r6, _0808F368 @ =0x00002238 - adds r0, r6 - movs r1, 0 - str r1, [r0] - adds r0, r3, 0 - bl LoadSpriteSheet - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _0808F3C8 - adds r0, r7, 0 - bl LoadSpritePalette - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFF - beq _0808F3C8 - b _0808F3B4 - .align 2, 0 -_0808F350: .4byte sPSSData -_0808F354: .4byte 0x000022bc -_0808F358: .4byte 0x0000223c -_0808F35C: .4byte 0x0000dac6 -_0808F360: .4byte gUnknown_83CEA70 -_0808F364: .4byte 0x000007ff -_0808F368: .4byte 0x00002238 -_0808F36C: - ldr r0, _0808F39C @ =sPSSData - ldr r2, [r0] - ldr r7, _0808F3A0 @ =0x00002238 - adds r3, r2, r7 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0808F3A4 @ =gSprites - adds r0, r1 - str r0, [r3] - lsls r0, r4, 4 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - ldr r3, _0808F3A8 @ =0x00002232 - adds r1, r2, r3 - strh r0, [r1] - ldr r6, _0808F3AC @ =0x00002234 - adds r2, r6 - lsls r0, r5, 5 - ldr r7, _0808F3B0 @ =0x06010000 - adds r0, r7 - str r0, [r2] - b _0808F3C8 - .align 2, 0 -_0808F39C: .4byte sPSSData -_0808F3A0: .4byte 0x00002238 -_0808F3A4: .4byte gSprites -_0808F3A8: .4byte 0x00002232 -_0808F3AC: .4byte 0x00002234 -_0808F3B0: .4byte 0x06010000 -_0808F3B4: - mov r0, sp - movs r1, 0x28 - movs r2, 0x30 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _0808F36C -_0808F3C8: - ldr r0, _0808F3EC @ =sPSSData - ldr r0, [r0] - ldr r1, _0808F3F0 @ =0x00002238 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _0808F3E2 - movs r0, 0x2 - bl FreeSpriteTilesByTag - ldr r0, _0808F3F4 @ =0x0000dac6 - bl FreeSpritePaletteByTag -_0808F3E2: - add sp, 0x28 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808F3EC: .4byte sPSSData -_0808F3F0: .4byte 0x00002238 -_0808F3F4: .4byte 0x0000dac6 - thumb_func_end sub_808F2BC - - thumb_func_start sub_808F3F8 -sub_808F3F8: @ 808F3F8 - push {r4-r7,lr} - adds r3, r1, 0 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r6, _0808F468 @ =sPSSData - ldr r4, [r6] - ldr r7, _0808F46C @ =0x00002238 - adds r0, r4, r7 - ldr r0, [r0] - cmp r0, 0 - beq _0808F496 - cmp r2, 0 - beq _0808F48C - lsls r0, r2, 3 - ldr r1, _0808F470 @ =gMonFrontPicTable - adds r0, r1 - ldr r5, _0808F474 @ =0x000022bc - adds r1, r4, r5 - bl HandleLoadSpecialPokePic - ldr r1, [r6] - ldr r2, _0808F478 @ =0x00000cd8 - adds r0, r1, r2 - ldr r0, [r0] - ldr r4, _0808F47C @ =0x0000223c - adds r1, r4 - bl LZ77UnCompWram - ldr r0, [r6] - adds r5, r0, r5 - ldr r1, _0808F480 @ =0x00002234 - adds r0, r1 - ldr r1, [r0] - ldr r2, _0808F484 @ =0x04000200 - adds r0, r5, 0 - bl CpuSet - ldr r0, [r6] - adds r4, r0, r4 - ldr r2, _0808F488 @ =0x00002232 - adds r0, r2 - ldrh r1, [r0] - adds r0, r4, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, [r6] - adds r0, r7 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _0808F496 - .align 2, 0 -_0808F468: .4byte sPSSData -_0808F46C: .4byte 0x00002238 -_0808F470: .4byte gMonFrontPicTable -_0808F474: .4byte 0x000022bc -_0808F478: .4byte 0x00000cd8 -_0808F47C: .4byte 0x0000223c -_0808F480: .4byte 0x00002234 -_0808F484: .4byte 0x04000200 -_0808F488: .4byte 0x00002232 -_0808F48C: - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0808F496: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808F3F8 - - thumb_func_start sub_808F49C -sub_808F49C: @ 808F49C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r6, _0808F51C @ =sPSSData - ldr r2, [r6] - ldrb r0, [r2, 0x1] - cmp r0, 0x3 - beq _0808F528 - movs r4, 0 - movs r5, 0 - mov r8, r6 -_0808F4BC: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r1, _0808F520 @ =0x00000cf5 - adds r0, r1 - mov r2, r8 - ldr r1, [r2] - adds r2, r1, r0 - movs r3, 0x6 - cmp r4, 0x2 - bne _0808F4D4 - movs r3, 0xA -_0808F4D4: - lsls r0, r5, 24 - lsrs r0, 24 - str r0, [sp] - movs r7, 0xFF - str r7, [sp, 0x4] - movs r6, 0 - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0x2 - bl AddTextPrinterParameterized - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r5, 0 - adds r0, 0xE - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0x2 - bls _0808F4BC - ldr r0, _0808F51C @ =sPSSData - ldr r2, [r0] - ldr r0, _0808F524 @ =0x00000d61 - adds r2, r0 - adds r0, r5, 0x2 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - str r7, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r3, 0x6 - bl AddTextPrinterParameterized - b _0808F57E - .align 2, 0 -_0808F51C: .4byte sPSSData -_0808F520: .4byte 0x00000cf5 -_0808F524: .4byte 0x00000d61 -_0808F528: - ldr r1, _0808F5BC @ =0x00000d61 - adds r2, r1 - movs r1, 0 - str r1, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - str r1, [sp, 0x8] - movs r0, 0 - movs r3, 0x6 - bl AddTextPrinterParameterized - movs r4, 0 - movs r5, 0xF -_0808F542: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r2, _0808F5C0 @ =0x00000cf5 - adds r0, r2 - ldr r1, [r6] - adds r2, r1, r0 - movs r3, 0x6 - cmp r4, 0x2 - bne _0808F558 - movs r3, 0xA -_0808F558: - lsls r0, r5, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0x2 - bl AddTextPrinterParameterized - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r5, 0 - adds r0, 0xE - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0x2 - bls _0808F542 -_0808F57E: - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - ldr r4, _0808F5C4 @ =sPSSData - ldr r1, [r4] - movs r2, 0xCE - lsls r2, 4 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - beq _0808F5C8 - adds r2, 0x7 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, 0xB5 - adds r1, r2 - ldr r1, [r1] - bl sub_80BEBD0 - ldr r0, [r4] - movs r1, 0xD9 - lsls r1, 4 - adds r0, r1 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - b _0808F5D8 - .align 2, 0 -_0808F5BC: .4byte 0x00000d61 -_0808F5C0: .4byte 0x00000cf5 -_0808F5C4: .4byte sPSSData -_0808F5C8: - movs r2, 0xD9 - lsls r2, 4 - adds r0, r1, r2 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 -_0808F5D8: - strb r0, [r1] - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808F49C - - thumb_func_start sub_808F5E8 -sub_808F5E8: @ 808F5E8 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0808F634 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCE - lsls r1, 4 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - beq _0808F63C - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x8 - bl sub_80F7CE8 - movs r4, 0 -_0808F60E: - ldr r0, _0808F634 @ =sPSSData - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _0808F638 @ =0x00000d94 - adds r0, r2 - adds r0, r1 - ldr r0, [r0] - lsls r1, r4, 1 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnimIfDifferent - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _0808F60E - b _0808F66E - .align 2, 0 -_0808F634: .4byte sPSSData -_0808F638: .4byte 0x00000d94 -_0808F63C: - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x8 - bl sub_80F7CE8 - movs r4, 0 -_0808F64E: - ldr r0, _0808F684 @ =sPSSData - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _0808F688 @ =0x00000d94 - adds r0, r2 - adds r0, r1 - ldr r0, [r0] - lsls r1, r4, 25 - lsrs r1, 24 - bl StartSpriteAnim - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _0808F64E -_0808F66E: - movs r0, 0 - bl sub_80F7E54 - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808F684: .4byte sPSSData -_0808F688: .4byte 0x00000d94 - thumb_func_end sub_808F5E8 - - thumb_func_start sub_808F68C -sub_808F68C: @ 808F68C - push {r4,lr} - sub sp, 0x4 - ldr r0, _0808F704 @ =gUnknown_8E9CAEC - ldr r4, _0808F708 @ =sPSSData - ldr r1, [r4] - adds r1, 0xB0 - bl LZ77UnCompWram - ldr r0, _0808F70C @ =gUnknown_8E9C3D8 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - ldr r2, [r4] - adds r2, 0xB0 - movs r0, 0x16 - str r0, [sp] - movs r0, 0x1 - movs r1, 0x1 - movs r3, 0xC - bl sub_80F7B80 - ldr r2, _0808F710 @ =gUnknown_83CE778 - movs r0, 0x4 - str r0, [sp] - movs r0, 0x2 - movs r1, 0x1 - movs r3, 0x9 - bl sub_80F7B80 - movs r0, 0x1 - movs r1, 0xA - movs r2, 0 - bl sub_80F7CAC - movs r0, 0x2 - movs r1, 0x15 - movs r2, 0 - bl sub_80F7CAC - bl sub_808F9FC - ldr r0, _0808F714 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808F718 - movs r0, 0x1 - bl sub_808F90C - movs r0, 0x1 - bl sub_809088C - movs r0, 0x2 - bl sub_80F7E54 - movs r0, 0x1 - bl sub_80F7E54 - b _0808F73A - .align 2, 0 -_0808F704: .4byte gUnknown_8E9CAEC -_0808F708: .4byte sPSSData -_0808F70C: .4byte gUnknown_8E9C3D8 -_0808F710: .4byte gUnknown_83CE778 -_0808F714: .4byte sInPartyMenu -_0808F718: - movs r0, 0x2 - str r0, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x14 - movs r3, 0xC - bl sub_80F7CE8 - movs r0, 0x1 - bl sub_808F90C - movs r0, 0x1 - bl sub_80F7E54 - movs r0, 0x2 - bl sub_80F7E54 -_0808F73A: - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - ldr r0, _0808F754 @ =sPSSData - ldr r0, [r0] - ldr r1, _0808F758 @ =0x000002c7 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808F754: .4byte sPSSData -_0808F758: .4byte 0x000002c7 - thumb_func_end sub_808F68C - - thumb_func_start sub_808F75C -sub_808F75C: @ 808F75C - push {lr} - ldr r0, _0808F788 @ =sPSSData - ldr r1, [r0] - movs r0, 0xB0 - lsls r0, 2 - adds r2, r1, r0 - movs r3, 0 - movs r0, 0x14 - strh r0, [r2] - ldr r0, _0808F78C @ =0x000002c2 - adds r2, r1, r0 - movs r0, 0x2 - strh r0, [r2] - ldr r0, _0808F790 @ =0x000002c5 - adds r1, r0 - strb r3, [r1] - movs r0, 0 - bl sub_809088C - pop {r0} - bx r0 - .align 2, 0 -_0808F788: .4byte sPSSData -_0808F78C: .4byte 0x000002c2 -_0808F790: .4byte 0x000002c5 - thumb_func_end sub_808F75C - - thumb_func_start sub_808F794 -sub_808F794: @ 808F794 - push {r4,lr} - ldr r4, _0808F7F0 @ =sPSSData - ldr r2, [r4] - ldr r1, _0808F7F4 @ =0x000002c5 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x14 - beq _0808F802 - movs r0, 0xB0 - lsls r0, 2 - adds r1, r2, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldr r0, _0808F7F8 @ =0x000002c2 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x1 - bl sub_80F7D30 - movs r0, 0x1 - bl sub_80F7E54 - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x8 - bl sub_8090B98 - ldr r1, [r4] - ldr r0, _0808F7F4 @ =0x000002c5 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x14 - beq _0808F7FC - movs r0, 0x1 - b _0808F804 - .align 2, 0 -_0808F7F0: .4byte sPSSData -_0808F7F4: .4byte 0x000002c5 -_0808F7F8: .4byte 0x000002c2 -_0808F7FC: - ldr r1, _0808F80C @ =sInPartyMenu - movs r0, 0x1 - strb r0, [r1] -_0808F802: - movs r0, 0 -_0808F804: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0808F80C: .4byte sInPartyMenu - thumb_func_end sub_808F794 - - thumb_func_start sub_808F810 -sub_808F810: @ 808F810 - push {r4,lr} - ldr r4, _0808F844 @ =sPSSData - ldr r1, [r4] - movs r0, 0xB0 - lsls r0, 2 - adds r2, r1, r0 - movs r3, 0 - movs r0, 0 - strh r0, [r2] - ldr r0, _0808F848 @ =0x000002c2 - adds r2, r1, r0 - movs r0, 0x16 - strh r0, [r2] - ldr r0, _0808F84C @ =0x000002c5 - adds r1, r0 - strb r3, [r1] - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _0808F83C - bl sub_80960C0 -_0808F83C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808F844: .4byte sPSSData -_0808F848: .4byte 0x000002c2 -_0808F84C: .4byte 0x000002c5 - thumb_func_end sub_808F810 - - thumb_func_start sub_808F850 -sub_808F850: @ 808F850 - push {r4,r5,lr} - sub sp, 0x8 - ldr r5, _0808F8C8 @ =sPSSData - ldr r2, [r5] - ldr r1, _0808F8CC @ =0x000002c5 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x14 - beq _0808F8FC - movs r0, 0xB0 - lsls r0, 2 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r4, _0808F8D0 @ =0x000002c2 - adds r1, r2, r4 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - movs r2, 0x1 - negs r2, r2 - movs r0, 0x1 - movs r1, 0x3 - bl sub_80F7D30 - movs r0, 0x1 - bl sub_80F7E54 - movs r1, 0x80 - lsls r1, 1 - ldr r0, [r5] - adds r0, r4 - ldrb r3, [r0] - movs r0, 0xC - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r2, 0xA - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x8 - negs r0, r0 - bl sub_8090B98 - ldr r1, [r5] - ldr r0, _0808F8CC @ =0x000002c5 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x14 - beq _0808F8D4 - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x1 - b _0808F8FE - .align 2, 0 -_0808F8C8: .4byte sPSSData -_0808F8CC: .4byte 0x000002c5 -_0808F8D0: .4byte 0x000002c2 -_0808F8D4: - ldr r0, _0808F908 @ =sInPartyMenu - movs r1, 0 - strb r1, [r0] - bl sub_8090C44 - bl CompactPartySlots - movs r0, 0x2 - str r0, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x9 - bl sub_80F7CE8 - movs r0, 0x2 - bl sub_80F7E54 - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram -_0808F8FC: - movs r0, 0 -_0808F8FE: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0808F908: .4byte sInPartyMenu - thumb_func_end sub_808F850 - - thumb_func_start sub_808F90C -sub_808F90C: @ 808F90C - push {lr} - sub sp, 0x4 - lsls r0, 24 - cmp r0, 0 - beq _0808F926 - movs r0, 0x2 - str r0, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x9 - bl sub_80F7CE8 - b _0808F934 -_0808F926: - movs r0, 0x2 - str r0, [sp] - movs r1, 0 - movs r2, 0x2 - movs r3, 0x9 - bl sub_80F7CE8 -_0808F934: - movs r0, 0x2 - bl sub_80F7E54 - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_808F90C - - thumb_func_start sub_808F948 -sub_808F948: @ 808F948 - ldr r2, _0808F968 @ =sPSSData - ldr r0, [r2] - ldr r1, _0808F96C @ =0x000002c7 - adds r0, r1 - movs r3, 0x1 - strb r3, [r0] - ldr r0, [r2] - adds r1, 0x1 - adds r0, r1 - movs r1, 0x1E - strb r1, [r0] - ldr r0, [r2] - ldr r1, _0808F970 @ =0x000002c9 - adds r0, r1 - strb r3, [r0] - bx lr - .align 2, 0 -_0808F968: .4byte sPSSData -_0808F96C: .4byte 0x000002c7 -_0808F970: .4byte 0x000002c9 - thumb_func_end sub_808F948 - - thumb_func_start sub_808F974 -sub_808F974: @ 808F974 - push {lr} - ldr r0, _0808F994 @ =sPSSData - ldr r0, [r0] - ldr r2, _0808F998 @ =0x000002c7 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _0808F98E - movs r0, 0 - strb r0, [r1] - movs r0, 0x1 - bl sub_808F90C -_0808F98E: - pop {r0} - bx r0 - .align 2, 0 -_0808F994: .4byte sPSSData -_0808F998: .4byte 0x000002c7 - thumb_func_end sub_808F974 - - thumb_func_start sub_808F99C -sub_808F99C: @ 808F99C - push {r4,lr} - ldr r3, _0808F9F0 @ =sPSSData - ldr r1, [r3] - ldr r2, _0808F9F4 @ =0x000002c7 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0808F9E8 - movs r0, 0xB2 - lsls r0, 2 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bls _0808F9E8 - ldr r0, [r3] - movs r1, 0xB2 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r3] - movs r2, 0 - ldr r4, _0808F9F8 @ =0x000002c9 - adds r1, r0, r4 - ldrb r0, [r1] - cmp r0, 0 - bne _0808F9DC - movs r2, 0x1 -_0808F9DC: - strb r2, [r1] - ldr r0, [r3] - adds r0, r4 - ldrb r0, [r0] - bl sub_808F90C -_0808F9E8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808F9F0: .4byte sPSSData -_0808F9F4: .4byte 0x000002c7 -_0808F9F8: .4byte 0x000002c9 - thumb_func_end sub_808F99C - - thumb_func_start sub_808F9FC -sub_808F9FC: @ 808F9FC - push {r4,lr} - movs r4, 0x1 -_0808FA00: - movs r0, 0x64 - muls r0, r4 - ldr r1, _0808FA2C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - adds r0, r4, 0 - bl sub_808FA30 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0808FA00 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808FA2C: .4byte gPlayerParty - thumb_func_end sub_808F9FC - - thumb_func_start sub_808FA30 -sub_808FA30: @ 808FA30 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - ldr r7, _0808FA9C @ =gUnknown_83CE7D8 - cmp r1, 0 - beq _0808FA40 - ldr r7, _0808FAA0 @ =gUnknown_83CE7C0 -_0808FA40: - subs r0, 0x1 - lsls r1, r0, 1 - adds r1, r0 - adds r1, 0x1 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 18 - movs r1, 0xE0 - lsls r1, 11 - adds r0, r1 - lsrs r3, r0, 16 - movs r0, 0 - ldr r1, _0808FAA4 @ =sPSSData - mov r12, r1 -_0808FA5C: - movs r2, 0 - adds r4, r7, 0 - adds r4, 0x8 - adds r5, r3, 0 - adds r5, 0xC - adds r6, r0, 0x1 -_0808FA68: - mov r0, r12 - ldr r1, [r0] - adds r0, r3, r2 - lsls r0, 1 - adds r1, 0xB0 - adds r1, r0 - lsls r0, r2, 1 - adds r0, r7 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x3 - bls _0808FA68 - adds r7, r4, 0 - lsls r0, r5, 16 - lsrs r3, r0, 16 - lsls r0, r6, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _0808FA5C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808FA9C: .4byte gUnknown_83CE7D8 -_0808FAA0: .4byte gUnknown_83CE7C0 -_0808FAA4: .4byte sPSSData - thumb_func_end sub_808FA30 - - thumb_func_start sub_808FAA8 -sub_808FAA8: @ 808FAA8 - push {lr} - sub sp, 0x4 - bl sub_808F9FC - movs r0, 0x16 - str r0, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0xC - bl sub_80F7CE8 - movs r0, 0x1 - bl sub_80F7E54 - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_808FAA8 - - thumb_func_start sub_808FAD4 -sub_808FAD4: @ 808FAD4 - push {lr} - ldr r0, _0808FAF0 @ =sPSSData - ldr r0, [r0] - ldr r1, _0808FAF4 @ =0x000002c6 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - movs r0, 0x6 - bl PlaySE - bl sub_808F75C - pop {r0} - bx r0 - .align 2, 0 -_0808FAF0: .4byte sPSSData -_0808FAF4: .4byte 0x000002c6 - thumb_func_end sub_808FAD4 - - thumb_func_start sub_808FAF8 -sub_808FAF8: @ 808FAF8 - push {r4,r5,lr} - ldr r4, _0808FB14 @ =sPSSData - ldr r0, [r4] - ldr r5, _0808FB18 @ =0x000002c6 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808FB32 - cmp r0, 0x1 - bgt _0808FB1C - cmp r0, 0 - beq _0808FB22 - b _0808FB60 - .align 2, 0 -_0808FB14: .4byte sPSSData -_0808FB18: .4byte 0x000002c6 -_0808FB1C: - cmp r0, 0x2 - beq _0808FB5C - b _0808FB60 -_0808FB22: - bl sub_808F794 - lsls r0, 24 - cmp r0, 0 - bne _0808FB60 - bl sub_8092AE4 - b _0808FB4C -_0808FB32: - bl sub_80924A8 - lsls r0, 24 - cmp r0, 0 - bne _0808FB60 - ldr r0, [r4] - ldr r1, _0808FB58 @ =0x00000ce6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0808FB4C - bl BoxSetMosaic -_0808FB4C: - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808FB60 - .align 2, 0 -_0808FB58: .4byte 0x00000ce6 -_0808FB5C: - movs r0, 0 - b _0808FB62 -_0808FB60: - movs r0, 0x1 -_0808FB62: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_808FAF8 - - thumb_func_start sub_808FB68 -sub_808FB68: @ 808FB68 - push {lr} - sub sp, 0xC - movs r1, 0xE8 - lsls r1, 5 - movs r0, 0x8 - bl SetGpuReg - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0xD0 - bl TextWindow_SetStdFrame0_WithPal - movs r0, 0x20 - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r0} - bx r0 - thumb_func_end sub_808FB68 - - thumb_func_start sub_808FBA4 -sub_808FBA4: @ 808FBA4 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - bl DynamicPlaceholderTextUtil_Reset - ldr r1, _0808FBC8 @ =gUnknown_83CEA88 - lsls r0, r6, 3 - adds r0, r1 - ldrb r0, [r0, 0x4] - cmp r0, 0x7 - bhi _0808FC7C - lsls r0, 2 - ldr r1, _0808FBCC @ =_0808FBD0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808FBC8: .4byte gUnknown_83CEA88 -_0808FBCC: .4byte _0808FBD0 - .align 2, 0 -_0808FBD0: - .4byte _0808FC7C - .4byte _0808FBF0 - .4byte _0808FBF0 - .4byte _0808FBF0 - .4byte _0808FC04 - .4byte _0808FC04 - .4byte _0808FC04 - .4byte _0808FC1C -_0808FBF0: - ldr r0, _0808FBFC @ =sPSSData - ldr r1, [r0] - ldr r0, _0808FC00 @ =0x00000cea - adds r1, r0 - b _0808FC0C - .align 2, 0 -_0808FBFC: .4byte sPSSData -_0808FC00: .4byte 0x00000cea -_0808FC04: - ldr r0, _0808FC14 @ =sPSSData - ldr r1, [r0] - ldr r2, _0808FC18 @ =0x000021d0 - adds r1, r2 -_0808FC0C: - movs r0, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - b _0808FC7C - .align 2, 0 -_0808FC14: .4byte sPSSData -_0808FC18: .4byte 0x000021d0 -_0808FC1C: - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - beq _0808FC40 - ldr r0, _0808FC38 @ =sPSSData - ldr r4, [r0] - ldr r0, _0808FC3C @ =0x000021db - adds r4, r0 - bl sub_80961A8 - adds r1, r0, 0 - adds r0, r4, 0 - b _0808FC4C - .align 2, 0 -_0808FC38: .4byte sPSSData -_0808FC3C: .4byte 0x000021db -_0808FC40: - ldr r0, _0808FC54 @ =sPSSData - ldr r1, [r0] - ldr r2, _0808FC58 @ =0x000021db - adds r0, r1, r2 - ldr r2, _0808FC5C @ =0x00000d61 - adds r1, r2 -_0808FC4C: - bl StringCopy - adds r2, r0, 0 - b _0808FC62 - .align 2, 0 -_0808FC54: .4byte sPSSData -_0808FC58: .4byte 0x000021db -_0808FC5C: .4byte 0x00000d61 -_0808FC60: - adds r2, r1, 0 -_0808FC62: - subs r1, r2, 0x1 - ldrb r0, [r1] - cmp r0, 0 - beq _0808FC60 - movs r0, 0xFF - strb r0, [r2] - ldr r0, _0808FCDC @ =sPSSData - ldr r1, [r0] - ldr r0, _0808FCE0 @ =0x000021db - adds r1, r0 - movs r0, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr -_0808FC7C: - ldr r5, _0808FCDC @ =sPSSData - ldr r0, [r5] - movs r4, 0x86 - lsls r4, 6 - adds r0, r4 - ldr r2, _0808FCE4 @ =gUnknown_83CEA88 - lsls r1, r6, 3 - adds r1, r2 - ldr r1, [r1] - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - movs r0, 0x1 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, [r5] - adds r2, r4 - movs r0, 0x2 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x1 - movs r3, 0 - bl AddTextPrinterParameterized - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0xD - bl DrawTextBorderOuter - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808FCDC: .4byte sPSSData -_0808FCE0: .4byte 0x000021db -_0808FCE4: .4byte gUnknown_83CEA88 - thumb_func_end sub_808FBA4 - - thumb_func_start sub_808FCE8 -sub_808FCE8: @ 808FCE8 - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0808FD1C @ =gUnknown_83CEB80 - movs r1, 0xB - str r1, [sp] - movs r1, 0xE - str r1, [sp, 0x4] - movs r1, 0x1 - str r1, [sp, 0x8] - movs r2, 0 - movs r3, 0x2 - bl CreateYesNoMenu - lsls r4, 24 - asrs r4, 24 - adds r0, r4, 0 - bl Menu_MoveCursorNoWrapAround - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808FD1C: .4byte gUnknown_83CEB80 - thumb_func_end sub_808FCE8 - - thumb_func_start sub_808FD20 -sub_808FD20: @ 808FD20 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - pop {r0} - bx r0 - thumb_func_end sub_808FD20 - - thumb_func_start sub_808FD34 -sub_808FD34: @ 808FD34 - push {lr} - bl sub_8094DA8 - movs r0, 0x12 - bl sub_8094DEC - movs r0, 0x13 - bl sub_8094DEC - movs r0, 0x14 - bl sub_8094DEC - movs r0, 0x15 - bl sub_8094DEC - bl sub_8094E88 - pop {r0} - bx r0 - thumb_func_end sub_808FD34 - - thumb_func_start sub_808FD5C -sub_808FD5C: @ 808FD5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl sub_8094DA8 - cmp r4, 0x1 - beq _0808FD9A - cmp r4, 0x1 - bgt _0808FD76 - cmp r4, 0 - beq _0808FD80 - b _0808FDE6 -_0808FD76: - cmp r5, 0x2 - beq _0808FDB4 - cmp r5, 0x3 - beq _0808FDCE - b _0808FDE6 -_0808FD80: - movs r0, 0x16 - bl sub_8094DEC - movs r0, 0x17 - bl sub_8094DEC - movs r0, 0x18 - bl sub_8094DEC - movs r0, 0x19 - bl sub_8094DEC - b _0808FDE6 -_0808FD9A: - movs r0, 0x1A - bl sub_8094DEC - movs r0, 0x1B - bl sub_8094DEC - movs r0, 0x1C - bl sub_8094DEC - movs r0, 0x1D - bl sub_8094DEC - b _0808FDE6 -_0808FDB4: - movs r0, 0x1E - bl sub_8094DEC - movs r0, 0x1F - bl sub_8094DEC - movs r0, 0x20 - bl sub_8094DEC - movs r0, 0x21 - bl sub_8094DEC - b _0808FDE6 -_0808FDCE: - movs r0, 0x22 - bl sub_8094DEC - movs r0, 0x23 - bl sub_8094DEC - movs r0, 0x24 - bl sub_8094DEC - movs r0, 0x25 - bl sub_8094DEC -_0808FDE6: - bl sub_8094E88 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808FD5C - - thumb_func_start sub_808FDF0 -sub_808FDF0: @ 808FDF0 - ldr r0, _0808FDF8 @ =sCurrentBoxOption - ldrb r0, [r0] - bx lr - .align 2, 0 -_0808FDF8: .4byte sCurrentBoxOption - thumb_func_end sub_808FDF0 - - thumb_func_start sub_808FDFC -sub_808FDFC: @ 808FDFC - push {lr} - bl sub_80939AC - lsls r0, 24 - cmp r0, 0 - bne _0808FE38 - ldr r0, _0808FE24 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808FE28 - bl sub_8094CC8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl sub_8095C84 - b _0808FE38 - .align 2, 0 -_0808FE24: .4byte sInPartyMenu -_0808FE28: - bl sub_8094CC8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl sub_8095C84 -_0808FE38: - ldr r1, _0808FE50 @ =gUnknown_20397BA - ldrh r0, [r1] - cmp r0, 0 - beq _0808FE4A - bl sub_8095E2C - movs r0, 0x3 - bl sub_8094D14 -_0808FE4A: - pop {r0} - bx r0 - .align 2, 0 -_0808FE50: .4byte gUnknown_20397BA - thumb_func_end sub_808FDFC - - thumb_func_start sub_808FE54 -sub_808FE54: @ 808FE54 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_8094D34 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808FE90 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCE - lsls r1, 4 - adds r0, r1 - ldrh r7, [r0] - ldr r0, _0808FE94 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808FE9C - movs r6, 0xE - bl sub_8094CC8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0808FE98 @ =gPlayerParty - adds r0, r1 - movs r1, 0x41 - bl GetMonData - b _0808FEB2 - .align 2, 0 -_0808FE90: .4byte sPSSData -_0808FE94: .4byte sInPartyMenu -_0808FE98: .4byte gPlayerParty -_0808FE9C: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r6, r0, 24 - bl sub_8094CC8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x41 - bl GetBoxMonDataFromSelectedBox -_0808FEB2: - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _0808FECC @ =sPSSData - ldr r0, [r0] - ldr r2, _0808FED0 @ =0x00002228 - adds r1, r0, r2 - cmp r5, 0x1 - beq _0808FF08 - cmp r5, 0x1 - bgt _0808FED4 - cmp r5, 0 - beq _0808FEDE - b _0808FF6A - .align 2, 0 -_0808FECC: .4byte sPSSData -_0808FED0: .4byte 0x00002228 -_0808FED4: - cmp r5, 0x2 - beq _0808FF3E - cmp r5, 0x3 - beq _0808FF58 - b _0808FF6A -_0808FEDE: - ldr r0, _0808FEF0 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808FEF4 - cmp r4, 0xE - beq _0808FF6A -_0808FEEA: - movs r2, 0x16 - b _0808FF02 - .align 2, 0 -_0808FEF0: .4byte sInPartyMenu -_0808FEF4: - cmp r4, 0xE - beq _0808FEEA - movs r0, 0x15 - cmp r4, r6 - beq _0808FF00 - movs r0, 0x14 -_0808FF00: - adds r2, r0, 0 -_0808FF02: - strh r7, [r1] - strh r3, [r1, 0x2] - b _0808FF60 -_0808FF08: - movs r0, 0 - strh r7, [r1] - strh r0, [r1, 0x2] - strb r4, [r1, 0x4] - movs r0, 0xFF - strb r0, [r1, 0x5] - ldr r0, _0808FF24 @ =sInPartyMenu - ldrb r0, [r0] - cmp r0, 0 - beq _0808FF28 - cmp r4, 0xE - beq _0808FF6A - movs r2, 0x19 - b _0808FF64 - .align 2, 0 -_0808FF24: .4byte sInPartyMenu -_0808FF28: - cmp r4, 0xE - bne _0808FF32 - movs r2, 0x1A - strb r6, [r1, 0x4] - b _0808FF64 -_0808FF32: - cmp r4, r6 - beq _0808FF3A - movs r2, 0x17 - b _0808FF62 -_0808FF3A: - movs r2, 0x18 - b _0808FF64 -_0808FF3E: - movs r2, 0x1A - movs r0, 0 - strh r7, [r1] - strh r0, [r1, 0x2] - ldr r0, _0808FF54 @ =gUnknown_20397B6 - ldrb r0, [r0] - strb r0, [r1, 0x4] - movs r0, 0xFF - strb r0, [r1, 0x5] - b _0808FF64 - .align 2, 0 -_0808FF54: .4byte gUnknown_20397B6 -_0808FF58: - movs r2, 0x1B - movs r0, 0 - strh r0, [r1] - strh r0, [r1, 0x2] -_0808FF60: - strb r4, [r1, 0x4] -_0808FF62: - strb r6, [r1, 0x5] -_0808FF64: - adds r0, r2, 0 - bl SetQuestLogEvent -_0808FF6A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808FE54 - - thumb_func_start sub_808FF70 -sub_808FF70: @ 808FF70 - push {r4,lr} - ldr r4, _0808FFA0 @ =sLastUsedBox - bl StorageGetCurrentBox - ldrb r1, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r1, r0 - beq _0808FF9A - ldr r0, _0808FFA4 @ =0x00000843 - bl FlagClear - ldr r4, _0808FFA8 @ =0x00004037 - bl StorageGetCurrentBox - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl VarSet -_0808FF9A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808FFA0: .4byte sLastUsedBox -_0808FFA4: .4byte 0x00000843 -_0808FFA8: .4byte 0x00004037 - thumb_func_end sub_808FF70 - - thumb_func_start sub_808FFAC -sub_808FFAC: @ 808FFAC - push {r4-r6,lr} - bl LoadMonIconPalettes - movs r2, 0 - ldr r3, _0809003C @ =sPSSData - ldr r5, _08090040 @ =0x00000b04 - movs r4, 0 - adds r6, r3, 0 -_0808FFBC: - ldr r0, [r3] - lsls r1, r2, 1 - adds r0, r5 - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x27 - bls _0808FFBC - movs r2, 0 - ldr r5, _0809003C @ =sPSSData - ldr r4, _08090044 @ =0x00000b54 - movs r3, 0 -_0808FFD8: - ldr r0, [r5] - lsls r1, r2, 1 - adds r0, r4 - adds r0, r1 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x27 - bls _0808FFD8 - movs r2, 0 - ldr r5, _0809003C @ =sPSSData - ldr r4, _08090048 @ =0x00000a6c - movs r3, 0 -_0808FFF4: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r4 - adds r0, r1 - str r3, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _0808FFF4 - movs r2, 0 - ldr r5, _0809003C @ =sPSSData - ldr r4, _0809004C @ =0x00000a84 - movs r3, 0 -_08090010: - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r4 - adds r0, r1 - str r3, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x1D - bls _08090010 - ldr r0, [r6] - ldr r2, _08090050 @ =0x00000a68 - adds r1, r0, r2 - movs r2, 0 - str r2, [r1] - ldr r1, _08090054 @ =0x0000078c - adds r0, r1 - strh r2, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809003C: .4byte sPSSData -_08090040: .4byte 0x00000b04 -_08090044: .4byte 0x00000b54 -_08090048: .4byte 0x00000a6c -_0809004C: .4byte 0x00000a84 -_08090050: .4byte 0x00000a68 -_08090054: .4byte 0x0000078c - thumb_func_end sub_808FFAC - - thumb_func_start sub_8090058 -sub_8090058: @ 8090058 - push {lr} - bl sub_80939F4 - lsls r0, 24 - movs r1, 0x1 - cmp r0, 0 - beq _08090068 - movs r1, 0x2 -_08090068: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_8090058 - - thumb_func_start sub_8090070 -sub_8090070: @ 8090070 - push {r4-r6,lr} - sub sp, 0x8 - ldr r5, _080900C4 @ =sPSSData - ldr r0, [r5] - ldr r4, _080900C8 @ =0x000020a0 - adds r0, r4 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - ldr r0, [r5] - adds r0, r4 - movs r1, 0x41 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl sub_8090058 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0x7 - str r0, [sp, 0x4] - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0 - bl sub_80912E0 - ldr r1, [r5] - ldr r2, _080900CC @ =0x00000a68 - adds r1, r2 - str r0, [r1] - ldr r1, _080900D0 @ =sub_80911B0 - str r1, [r0, 0x1C] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080900C4: .4byte sPSSData -_080900C8: .4byte 0x000020a0 -_080900CC: .4byte 0x00000a68 -_080900D0: .4byte sub_80911B0 - thumb_func_end sub_8090070 - - thumb_func_start sub_80900D4 -sub_80900D4: @ 80900D4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r0, 0 - mov r8, r0 - movs r6, 0 - movs r7, 0 -_080900EE: - movs r5, 0 - adds r1, r7, 0x1 - mov r10, r1 -_080900F4: - mov r0, r9 - adds r1, r6, 0 - movs r2, 0x41 - bl GetBoxMonDataFromAnyBox - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0809015C - mov r0, r9 - adds r1, r6, 0 - movs r2, 0 - bl GetBoxMonDataFromAnyBox - adds r1, r0, 0 - lsls r2, r5, 1 - adds r2, r5 - lsls r2, 19 - movs r3, 0xC8 - lsls r3, 15 - adds r2, r3 - asrs r2, 16 - lsls r3, r7, 1 - adds r3, r7 - lsls r3, 19 - movs r0, 0xB0 - lsls r0, 14 - adds r3, r0 - movs r0, 0x2 - str r0, [sp] - movs r0, 0x13 - subs r0, r5 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - adds r0, r4, 0 - asrs r3, 16 - bl sub_80912E0 - ldr r1, _08090154 @ =sPSSData - ldr r1, [r1] - mov r3, r8 - lsls r2, r3, 2 - ldr r3, _08090158 @ =0x00000a84 - adds r1, r3 - adds r1, r2 - str r0, [r1] - b _0809016C - .align 2, 0 -_08090154: .4byte sPSSData -_08090158: .4byte 0x00000a84 -_0809015C: - ldr r0, _080901E4 @ =sPSSData - ldr r0, [r0] - mov r2, r8 - lsls r1, r2, 2 - ldr r3, _080901E8 @ =0x00000a84 - adds r0, r3 - adds r0, r1 - str r4, [r0] -_0809016C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - mov r0, r8 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _080900F4 - mov r1, r10 - lsls r0, r1, 16 - lsrs r7, r0, 16 - cmp r7, 0x4 - bls _080900EE - ldr r0, _080901E4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _080901D2 - movs r6, 0 - movs r2, 0xD - negs r2, r2 - adds r4, r2, 0 -_080901A2: - mov r0, r9 - adds r1, r6, 0 - movs r2, 0xC - bl GetBoxMonDataFromAnyBox - cmp r0, 0 - bne _080901C8 - ldr r0, _080901E4 @ =sPSSData - ldr r0, [r0] - lsls r1, r6, 2 - ldr r3, _080901E8 @ =0x00000a84 - adds r0, r3 - adds r0, r1 - ldr r2, [r0] - ldrb r0, [r2, 0x1] - ands r0, r4 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x1] -_080901C8: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1D - bls _080901A2 -_080901D2: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080901E4: .4byte sPSSData -_080901E8: .4byte 0x00000a84 - thumb_func_end sub_80900D4 - - thumb_func_start sub_80901EC -sub_80901EC: @ 80901EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r7, 0 - movs r1, 0x41 - bl GetBoxMonDataFromSelectedBox - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r0, 0 - beq _08090286 - adds r0, r7, 0 - movs r1, 0x6 - bl __umodsi3 - adds r6, r0, 0 - lsls r0, r6, 24 - lsrs r0, 24 - lsls r5, r0, 1 - adds r5, r0 - lsls r5, 19 - movs r0, 0xC8 - lsls r0, 15 - adds r5, r0 - lsrs r5, 16 - adds r0, r7, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 1 - adds r4, r0 - lsls r4, 19 - movs r0, 0xB0 - lsls r0, 14 - adds r4, r0 - lsrs r4, 16 - adds r0, r7, 0 - movs r1, 0 - bl GetBoxMonDataFromSelectedBox - adds r1, r0, 0 - movs r0, 0x2 - str r0, [sp] - movs r0, 0x13 - subs r0, r6 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - mov r0, r8 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_80912E0 - adds r3, r0, 0 - ldr r0, _08090294 @ =sPSSData - ldr r2, [r0] - lsls r1, r7, 2 - ldr r4, _08090298 @ =0x00000a84 - adds r0, r2, r4 - adds r0, r1 - str r3, [r0] - ldrb r0, [r2, 0x1] - cmp r0, 0x3 - bne _08090286 - ldrb r0, [r3, 0x1] - movs r1, 0xD - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r3, 0x1] -_08090286: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08090294: .4byte sPSSData -_08090298: .4byte 0x00000a84 - thumb_func_end sub_80901EC - - thumb_func_start sub_809029C -sub_809029C: @ 809029C - push {r4-r7,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r7, _080902D4 @ =sPSSData - ldr r6, _080902D8 @ =0x00000a84 - movs r5, 0x1 - ldr r4, _080902DC @ =sub_8090324 -_080902AC: - ldr r0, [r7] - lsls r1, r2, 2 - adds r0, r6 - adds r1, r0, r1 - ldr r0, [r1] - cmp r0, 0 - beq _080902C4 - strh r3, [r0, 0x32] - ldr r0, [r1] - strh r5, [r0, 0x36] - ldr r0, [r1] - str r4, [r0, 0x1C] -_080902C4: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x1D - bls _080902AC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080902D4: .4byte sPSSData -_080902D8: .4byte 0x00000a84 -_080902DC: .4byte sub_8090324 - thumb_func_end sub_809029C - - thumb_func_start sub_80902E0 -sub_80902E0: @ 80902E0 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x30] - movs r3, 0x30 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _080902FC - subs r0, r1, 0x1 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] - b _08090312 -_080902FC: - ldr r0, _08090318 @ =sPSSData - ldr r1, [r0] - ldr r3, _0809031C @ =0x00000c62 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldrh r0, [r2, 0x34] - strh r0, [r2, 0x20] - ldr r0, _08090320 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_08090312: - pop {r0} - bx r0 - .align 2, 0 -_08090318: .4byte sPSSData -_0809031C: .4byte 0x00000c62 -_08090320: .4byte SpriteCallbackDummy - thumb_func_end sub_80902E0 - - thumb_func_start sub_8090324 -sub_8090324: @ 8090324 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x36] - movs r3, 0x36 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _08090338 - subs r0, r1, 0x1 - strh r0, [r2, 0x36] - b _08090354 -_08090338: - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r2, 0x20] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x38] - subs r0, 0x45 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB6 - bls _08090354 - ldr r0, _08090358 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_08090354: - pop {r0} - bx r0 - .align 2, 0 -_08090358: .4byte SpriteCallbackDummy - thumb_func_end sub_8090324 - - thumb_func_start sub_809035C -sub_809035C: @ 809035C - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r7, _0809039C @ =sPSSData -_08090366: - ldr r0, [r7] - lsls r4, r5, 2 - ldr r1, _080903A0 @ =0x00000a84 - adds r0, r1 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _08090386 - bl sub_80913C4 - ldr r0, [r7] - ldr r1, _080903A0 @ =0x00000a84 - adds r0, r1 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_08090386: - adds r0, r5, 0x6 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x4 - bls _08090366 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809039C: .4byte sPSSData -_080903A0: .4byte 0x00000a84 - thumb_func_end sub_809035C - - thumb_func_start sub_80903A4 -sub_80903A4: @ 80903A4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x8] - lsls r2, 16 - movs r1, 0x2C - mov r8, r1 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 19 - movs r3, 0xC8 - lsls r3, 15 - adds r1, r3 - lsrs r1, 16 - str r1, [sp, 0x10] - ldr r1, [sp, 0x8] - adds r1, 0x1 - lsrs r6, r2, 16 - str r6, [sp, 0xC] - asrs r2, 16 - muls r1, r2 - ldr r2, [sp, 0x10] - subs r1, r2, r1 - lsls r1, 16 - lsrs r2, r1, 16 - movs r1, 0x13 - subs r1, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x14] - movs r3, 0 - mov r9, r3 - adds r5, r0, 0 - ldr r1, _08090488 @ =sPSSData - ldr r0, [r1] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - beq _08090498 - movs r7, 0x4 - lsls r2, 16 - mov r10, r2 -_08090404: - ldr r6, _08090488 @ =sPSSData - ldr r2, [r6] - lsls r0, r5, 1 - ldr r3, _0809048C @ =0x00000ba4 - adds r1, r2, r3 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _08090470 - lsls r4, r5, 2 - movs r6, 0xBE - lsls r6, 4 - adds r1, r2, r6 - adds r1, r4 - ldr r1, [r1] - mov r2, r8 - lsls r3, r2, 16 - asrs r3, 16 - movs r2, 0x2 - str r2, [sp] - ldr r6, [sp, 0x14] - str r6, [sp, 0x4] - mov r6, r10 - asrs r2, r6, 16 - bl sub_80912E0 - adds r2, r0, 0 - ldr r1, _08090488 @ =sPSSData - ldr r0, [r1] - ldr r3, _08090490 @ =0x00000a84 - adds r0, r3 - adds r1, r0, r4 - str r2, [r1] - cmp r2, 0 - beq _08090470 - mov r6, sp - ldrh r6, [r6, 0x8] - strh r6, [r2, 0x30] - ldr r0, [r1] - mov r2, sp - ldrh r2, [r2, 0xC] - strh r2, [r0, 0x32] - ldr r0, [r1] - mov r3, sp - ldrh r3, [r3, 0x10] - strh r3, [r0, 0x34] - ldr r1, [r1] - ldr r0, _08090494 @ =sub_80902E0 - str r0, [r1, 0x1C] - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08090470: - adds r0, r5, 0x6 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - adds r0, 0x18 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - subs r7, 0x1 - cmp r7, 0 - bge _08090404 - b _08090550 - .align 2, 0 -_08090488: .4byte sPSSData -_0809048C: .4byte 0x00000ba4 -_08090490: .4byte 0x00000a84 -_08090494: .4byte sub_80902E0 -_08090498: - mov r10, r1 - movs r7, 0x4 - lsls r2, 16 - str r2, [sp, 0x18] -_080904A0: - mov r6, r10 - ldr r2, [r6] - lsls r0, r5, 1 - ldr r3, _08090564 @ =0x00000ba4 - adds r1, r2, r3 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _0809053A - lsls r4, r5, 2 - movs r6, 0xBE - lsls r6, 4 - adds r1, r2, r6 - adds r1, r4 - ldr r1, [r1] - mov r2, r8 - lsls r3, r2, 16 - asrs r3, 16 - movs r2, 0x2 - str r2, [sp] - ldr r6, [sp, 0x14] - str r6, [sp, 0x4] - ldr r6, [sp, 0x18] - asrs r2, r6, 16 - bl sub_80912E0 - adds r2, r0, 0 - mov r0, r10 - ldr r3, [r0] - ldr r1, _08090568 @ =0x00000a84 - adds r0, r3, r1 - adds r1, r0, r4 - str r2, [r1] - cmp r2, 0 - beq _0809053A - mov r6, sp - ldrh r6, [r6, 0x8] - strh r6, [r2, 0x30] - ldr r0, [r1] - mov r2, sp - ldrh r2, [r2, 0xC] - strh r2, [r0, 0x32] - ldr r0, [r1] - mov r6, sp - ldrh r6, [r6, 0x10] - strh r6, [r0, 0x34] - ldr r1, [r1] - ldr r0, _0809056C @ =sub_80902E0 - str r0, [r1, 0x1C] - ldr r1, _08090570 @ =0x00000c58 - adds r0, r3, r1 - ldrb r0, [r0] - adds r1, r5, 0 - movs r2, 0xC - bl GetBoxMonDataFromAnyBox - cmp r0, 0 - bne _08090530 - mov r2, r10 - ldr r0, [r2] - ldr r3, _08090568 @ =0x00000a84 - adds r0, r3 - adds r0, r4 - ldr r2, [r0] - ldrb r1, [r2, 0x1] - movs r6, 0xD - negs r6, r6 - adds r0, r6, 0 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r2, 0x1] -_08090530: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0809053A: - adds r0, r5, 0x6 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - adds r0, 0x18 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - subs r7, 0x1 - cmp r7, 0 - bge _080904A0 -_08090550: - mov r0, r9 - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08090564: .4byte 0x00000ba4 -_08090568: .4byte 0x00000a84 -_0809056C: .4byte sub_80902E0 -_08090570: .4byte 0x00000c58 - thumb_func_end sub_80903A4 - - thumb_func_start sub_8090574 -sub_8090574: @ 8090574 - push {r4-r7,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r6, _080905D0 @ =sPSSData - ldr r1, [r6] - ldr r2, _080905D4 @ =0x00000c66 - adds r1, r2 - movs r5, 0 - strb r5, [r1] - ldr r1, [r6] - ldr r3, _080905D8 @ =0x00000c67 - adds r1, r3 - strb r0, [r1] - ldr r1, [r6] - ldr r7, _080905DC @ =0x00000c65 - adds r1, r7 - strb r4, [r1] - ldr r3, [r6] - ldr r1, _080905E0 @ =0x00000c5c - adds r2, r3, r1 - movs r1, 0x20 - strh r1, [r2] - lsls r4, 24 - asrs r4, 24 - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 1 - negs r1, r1 - subs r7, 0x5 - adds r2, r3, r7 - strh r1, [r2] - ldr r1, _080905E4 @ =0x00000c62 - adds r3, r1 - strh r5, [r3] - bl sub_8090794 - cmp r4, 0 - ble _080905EC - ldr r0, [r6] - ldr r2, _080905E8 @ =0x00000c64 - adds r0, r2 - movs r1, 0 - b _080905F4 - .align 2, 0 -_080905D0: .4byte sPSSData -_080905D4: .4byte 0x00000c66 -_080905D8: .4byte 0x00000c67 -_080905DC: .4byte 0x00000c65 -_080905E0: .4byte 0x00000c5c -_080905E4: .4byte 0x00000c62 -_080905E8: .4byte 0x00000c64 -_080905EC: - ldr r0, [r6] - ldr r3, _08090620 @ =0x00000c64 - adds r0, r3 - movs r1, 0x5 -_080905F4: - strb r1, [r0] - ldr r0, _08090624 @ =sPSSData - ldr r2, [r0] - ldr r7, _08090620 @ =0x00000c64 - adds r0, r2, r7 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, 0x64 - ldr r3, _08090628 @ =0x00000c5e - adds r1, r2, r3 - strh r0, [r1] - subs r7, 0x4 - adds r2, r7 - movs r1, 0 - ldrsh r0, [r2, r1] - bl sub_809029C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08090620: .4byte 0x00000c64 -_08090624: .4byte sPSSData -_08090628: .4byte 0x00000c5e - thumb_func_end sub_8090574 - - thumb_func_start sub_809062C -sub_809062C: @ 809062C - push {r4-r6,lr} - ldr r5, _08090658 @ =sPSSData - ldr r0, [r5] - ldr r4, _0809065C @ =0x00000c5c - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, 0 - beq _08090640 - subs r0, 0x1 - strh r0, [r1] -_08090640: - ldr r3, [r5] - ldr r6, _08090660 @ =0x00000c66 - adds r0, r3, r6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080906C4 - cmp r0, 0x1 - bgt _08090664 - cmp r0, 0 - beq _0809066C - b _08090782 - .align 2, 0 -_08090658: .4byte sPSSData -_0809065C: .4byte 0x00000c5c -_08090660: .4byte 0x00000c66 -_08090664: - cmp r0, 0x2 - bne _0809066A - b _08090770 -_0809066A: - b _08090782 -_0809066C: - ldr r0, _080906B8 @ =0x00000c5e - adds r1, r3, r0 - movs r2, 0xC6 - lsls r2, 4 - adds r0, r3, r2 - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - subs r0, 0x41 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xBA - bhi _0809068A - b _0809078C -_0809068A: - ldr r1, _080906BC @ =0x00000c64 - adds r0, r3, r1 - ldrb r0, [r0] - bl sub_809035C - ldr r2, [r5] - ldr r0, _080906B8 @ =0x00000c5e - adds r3, r2, r0 - ldr r1, _080906C0 @ =0x00000c65 - adds r0, r2, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - ldrh r1, [r3] - adds r0, r1 - strh r0, [r3] - adds r2, r6 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - b _0809078C - .align 2, 0 -_080906B8: .4byte 0x00000c5e -_080906BC: .4byte 0x00000c64 -_080906C0: .4byte 0x00000c65 -_080906C4: - ldr r2, _08090728 @ =0x00000c5e - adds r1, r3, r2 - movs r6, 0xC6 - lsls r6, 4 - adds r2, r3, r6 - ldrh r0, [r2] - ldrh r6, [r1] - adds r0, r6 - strh r0, [r1] - ldr r6, _0809072C @ =0x00000c64 - adds r0, r3, r6 - ldrb r0, [r0] - adds r1, r3, r4 - ldrh r1, [r1] - movs r3, 0 - ldrsh r2, [r2, r3] - bl sub_80903A4 - ldr r2, [r5] - ldr r3, _08090730 @ =0x00000c62 - adds r1, r2, r3 - lsls r0, 24 - lsrs r0, 24 - ldrh r3, [r1] - adds r0, r3 - strh r0, [r1] - ldr r1, _08090734 @ =0x00000c65 - adds r0, r2, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - cmp r1, 0 - ble _0809070C - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, 0x5 - beq _08090718 -_0809070C: - cmp r1, 0 - bge _08090740 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, 0 - bne _08090740 -_08090718: - ldr r0, _08090738 @ =sPSSData - ldr r1, [r0] - ldr r2, _0809073C @ =0x00000c66 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0809078C - .align 2, 0 -_08090728: .4byte 0x00000c5e -_0809072C: .4byte 0x00000c64 -_08090730: .4byte 0x00000c62 -_08090734: .4byte 0x00000c65 -_08090738: .4byte sPSSData -_0809073C: .4byte 0x00000c66 -_08090740: - ldr r3, _08090760 @ =sPSSData - ldr r0, [r3] - ldr r6, _08090764 @ =0x00000c64 - adds r1, r0, r6 - ldr r2, _08090768 @ =0x00000c65 - adds r0, r2 - ldrb r0, [r0] - ldrb r6, [r1] - adds r0, r6 - movs r2, 0 - strb r0, [r1] - ldr r0, [r3] - ldr r1, _0809076C @ =0x00000c66 - adds r0, r1 - strb r2, [r0] - b _0809078C - .align 2, 0 -_08090760: .4byte sPSSData -_08090764: .4byte 0x00000c64 -_08090768: .4byte 0x00000c65 -_0809076C: .4byte 0x00000c66 -_08090770: - ldr r2, _08090788 @ =0x00000c62 - adds r0, r3, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _0809078C - adds r1, r3, r4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_08090782: - movs r0, 0 - b _0809078E - .align 2, 0 -_08090788: .4byte 0x00000c62 -_0809078C: - movs r0, 0x1 -_0809078E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809062C - - thumb_func_start sub_8090794 -sub_8090794: @ 8090794 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - movs r0, 0 - ldr r1, _08090810 @ =sPSSData - mov r9, r1 -_080907A8: - adds r0, 0x1 - mov r8, r0 - movs r7, 0x5 -_080907AE: - lsls r0, r5, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x41 - bl GetBoxMonDataFromAnyBox - mov r2, r9 - ldr r1, [r2] - lsls r2, r5, 1 - ldr r3, _08090814 @ =0x00000ba4 - adds r1, r3 - adds r1, r2 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _080907EA - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetBoxMonDataFromAnyBox - mov r2, r9 - ldr r1, [r2] - lsls r2, r5, 2 - movs r3, 0xBE - lsls r3, 4 - adds r1, r3 - adds r1, r2 - str r0, [r1] -_080907EA: - adds r5, 0x1 - subs r7, 0x1 - cmp r7, 0 - bge _080907AE - mov r0, r8 - cmp r0, 0x4 - ble _080907A8 - ldr r0, _08090810 @ =sPSSData - ldr r0, [r0] - ldr r1, _08090818 @ =0x00000c58 - adds r0, r1 - strb r6, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08090810: .4byte sPSSData -_08090814: .4byte 0x00000ba4 -_08090818: .4byte 0x00000c58 - thumb_func_end sub_8090794 - - thumb_func_start sub_809081C -sub_809081C: @ 809081C - push {r4,r5,lr} - lsls r0, 24 - ldr r5, _08090848 @ =sPSSData - ldr r1, [r5] - lsrs r4, r0, 22 - ldr r0, _0809084C @ =0x00000a84 - adds r1, r0 - adds r1, r4 - ldr r0, [r1] - cmp r0, 0 - beq _08090842 - bl sub_80913C4 - ldr r0, [r5] - ldr r1, _0809084C @ =0x00000a84 - adds r0, r1 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_08090842: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08090848: .4byte sPSSData -_0809084C: .4byte 0x00000a84 - thumb_func_end sub_809081C - - thumb_func_start sub_8090850 -sub_8090850: @ 8090850 - push {lr} - lsls r0, 24 - lsls r1, 24 - lsrs r2, r1, 24 - ldr r1, _08090884 @ =sPSSData - ldr r1, [r1] - lsrs r0, 22 - ldr r3, _08090888 @ =0x00000a84 - adds r1, r3 - adds r1, r0 - ldr r3, [r1] - cmp r3, 0 - beq _0809087E - movs r0, 0x3 - adds r1, r2, 0 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] -_0809087E: - pop {r0} - bx r0 - .align 2, 0 -_08090884: .4byte sPSSData -_08090888: .4byte 0x00000a84 - thumb_func_end sub_8090850 - - thumb_func_start sub_809088C -sub_809088C: @ 809088C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r4, _0809092C @ =gPlayerParty - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r1, r0, 0 - movs r0, 0x1 - str r0, [sp] - movs r0, 0xC - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r2, 0x68 - movs r3, 0x40 - bl sub_80912E0 - ldr r1, _08090930 @ =sPSSData - ldr r1, [r1] - ldr r2, _08090934 @ =0x00000a6c - adds r1, r2 - str r0, [r1] - movs r7, 0x1 - movs r6, 0x1 -_080908D2: - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, _0809092C @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _08090938 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r1, r0, 0 - subs r0, r6, 0x1 - lsls r3, r0, 1 - adds r3, r0 - lsls r3, 19 - movs r0, 0x80 - lsls r0, 13 - adds r3, r0 - asrs r3, 16 - movs r0, 0x1 - str r0, [sp] - movs r0, 0xC - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r2, 0x98 - bl sub_80912E0 - ldr r1, _08090930 @ =sPSSData - ldr r1, [r1] - lsls r2, r6, 2 - ldr r3, _08090934 @ =0x00000a6c - adds r1, r3 - adds r1, r2 - str r0, [r1] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - b _08090946 - .align 2, 0 -_0809092C: .4byte gPlayerParty -_08090930: .4byte sPSSData -_08090934: .4byte 0x00000a6c -_08090938: - ldr r0, _080909E8 @ =sPSSData - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _080909EC @ =0x00000a6c - adds r0, r2 - adds r0, r1 - str r5, [r0] -_08090946: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080908D2 - ldr r3, _080909E8 @ =sPSSData - mov r0, r8 - cmp r0, 0 - bne _0809098A - movs r6, 0 - cmp r6, r7 - bcs _0809098A - mov r12, r3 - ldr r5, _080909EC @ =0x00000a6c - movs r4, 0x4 -_08090964: - mov r2, r12 - ldr r1, [r2] - lsls r0, r6, 2 - adds r1, r5 - adds r1, r0 - ldr r2, [r1] - ldrh r0, [r2, 0x22] - subs r0, 0xA0 - strh r0, [r2, 0x22] - ldr r1, [r1] - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, r7 - bcc _08090964 -_0809098A: - ldr r0, [r3] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _080909DA - movs r6, 0 - adds r7, r3, 0 - ldr r5, _080909EC @ =0x00000a6c -_08090998: - ldr r0, [r7] - lsls r4, r6, 2 - adds r0, r5 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _080909D0 - movs r0, 0x64 - muls r0, r6 - ldr r1, _080909F0 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - cmp r0, 0 - bne _080909D0 - ldr r0, [r7] - adds r0, r5 - adds r0, r4 - ldr r2, [r0] - ldrb r1, [r2, 0x1] - movs r3, 0xD - negs r3, r3 - adds r0, r3, 0 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r2, 0x1] -_080909D0: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _08090998 -_080909DA: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080909E8: .4byte sPSSData -_080909EC: .4byte 0x00000a6c -_080909F0: .4byte gPlayerParty - thumb_func_end sub_809088C - - thumb_func_start sub_80909F4 -sub_80909F4: @ 80909F4 - push {r4-r7,lr} - sub sp, 0x4 - ldr r0, _08090A54 @ =sPSSData - ldr r1, [r0] - ldr r2, _08090A58 @ =0x00000c5a - adds r1, r2 - movs r2, 0 - strb r2, [r1] - movs r5, 0 - movs r6, 0 - adds r3, r0, 0 - ldr r7, _08090A5C @ =0x00000a6c -_08090A0C: - ldr r0, [r3] - lsls r4, r5, 2 - adds r0, r7 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _08090A42 - cmp r5, r6 - beq _08090A3C - adds r1, r6, 0 - str r3, [sp] - bl sub_8090A74 - ldr r3, [sp] - ldr r2, [r3] - adds r0, r2, r7 - adds r0, r4 - movs r1, 0 - str r1, [r0] - ldr r0, _08090A58 @ =0x00000c5a - adds r2, r0 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] -_08090A3C: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_08090A42: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _08090A0C - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08090A54: .4byte sPSSData -_08090A58: .4byte 0x00000c5a -_08090A5C: .4byte 0x00000a6c - thumb_func_end sub_80909F4 - - thumb_func_start sub_8090A60 -sub_8090A60: @ 8090A60 - ldr r0, _08090A6C @ =sPSSData - ldr r0, [r0] - ldr r1, _08090A70 @ =0x00000c5a - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08090A6C: .4byte sPSSData -_08090A70: .4byte 0x00000c5a - thumb_func_end sub_8090A60 - - thumb_func_start sub_8090A74 -sub_8090A74: @ 8090A74 - push {r4,lr} - adds r2, r0, 0 - lsls r1, 16 - lsrs r1, 16 - strh r1, [r2, 0x30] - cmp r1, 0 - bne _08090A88 - movs r3, 0x68 - movs r4, 0x40 - b _08090A9A -_08090A88: - movs r3, 0x98 - subs r1, 0x1 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 19 - movs r1, 0x80 - lsls r1, 13 - adds r0, r1 - lsrs r4, r0, 16 -_08090A9A: - ldrh r0, [r2, 0x20] - lsls r0, 3 - strh r0, [r2, 0x32] - ldrh r0, [r2, 0x22] - lsls r0, 3 - strh r0, [r2, 0x34] - lsls r1, r3, 3 - movs r3, 0x32 - ldrsh r0, [r2, r3] - subs r0, r1, r0 - cmp r0, 0 - bge _08090AB4 - adds r0, 0x7 -_08090AB4: - asrs r0, 3 - strh r0, [r2, 0x36] - lsls r0, r4, 16 - asrs r0, 13 - movs r3, 0x34 - ldrsh r1, [r2, r3] - subs r0, r1 - cmp r0, 0 - bge _08090AC8 - adds r0, 0x7 -_08090AC8: - asrs r0, 3 - strh r0, [r2, 0x38] - movs r0, 0x8 - strh r0, [r2, 0x3A] - ldr r0, _08090ADC @ =sub_8090AE0 - str r0, [r2, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08090ADC: .4byte sub_8090AE0 - thumb_func_end sub_8090A74 - - thumb_func_start sub_8090AE0 -sub_8090AE0: @ 8090AE0 - push {r4,lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x3A] - movs r1, 0x3A - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _08090B10 - ldrh r0, [r3, 0x36] - ldrh r4, [r3, 0x32] - adds r0, r4 - strh r0, [r3, 0x32] - ldrh r1, [r3, 0x38] - ldrh r4, [r3, 0x34] - adds r1, r4 - strh r1, [r3, 0x34] - lsls r0, 16 - asrs r0, 19 - strh r0, [r3, 0x20] - lsls r1, 16 - asrs r1, 19 - strh r1, [r3, 0x22] - subs r0, r2, 0x1 - strh r0, [r3, 0x3A] - b _08090B54 -_08090B10: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _08090B20 - movs r0, 0x68 - strh r0, [r3, 0x20] - movs r0, 0x40 - b _08090B32 -_08090B20: - movs r0, 0x98 - strh r0, [r3, 0x20] - movs r4, 0x30 - ldrsh r1, [r3, r4] - subs r1, 0x1 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, 0x10 -_08090B32: - strh r0, [r3, 0x22] - ldr r0, _08090B5C @ =SpriteCallbackDummy - str r0, [r3, 0x1C] - ldr r0, _08090B60 @ =sPSSData - ldr r2, [r0] - movs r0, 0x30 - ldrsh r1, [r3, r0] - lsls r1, 2 - ldr r4, _08090B64 @ =0x00000a6c - adds r0, r2, r4 - adds r0, r1 - str r3, [r0] - ldr r0, _08090B68 @ =0x00000c5a - adds r2, r0 - ldrb r0, [r2] - subs r0, 0x1 - strb r0, [r2] -_08090B54: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08090B5C: .4byte SpriteCallbackDummy -_08090B60: .4byte sPSSData -_08090B64: .4byte 0x00000a6c -_08090B68: .4byte 0x00000c5a - thumb_func_end sub_8090AE0 - - thumb_func_start sub_8090B6C -sub_8090B6C: @ 8090B6C - push {r4,lr} - ldr r4, _08090B90 @ =sPSSData - ldr r0, [r4] - ldr r1, _08090B94 @ =0x00000a68 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _08090B8A - bl sub_80913C4 - ldr r0, [r4] - ldr r1, _08090B94 @ =0x00000a68 - adds r0, r1 - movs r1, 0 - str r1, [r0] -_08090B8A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08090B90: .4byte sPSSData -_08090B94: .4byte 0x00000a68 - thumb_func_end sub_8090B6C - - thumb_func_start sub_8090B98 -sub_8090B98: @ 8090B98 - push {r4-r6,lr} - movs r3, 0 - ldr r6, _08090BEC @ =sPSSData - lsls r0, 16 - asrs r4, r0, 16 - movs r5, 0x5 - negs r5, r5 -_08090BA6: - ldr r0, [r6] - lsls r1, r3, 2 - ldr r2, _08090BF0 @ =0x00000a6c - adds r0, r2 - adds r2, r0, r1 - ldr r1, [r2] - cmp r1, 0 - beq _08090BFE - ldrh r0, [r1, 0x22] - adds r0, r4, r0 - strh r0, [r1, 0x22] - ldr r2, [r2] - ldrh r1, [r2, 0x26] - ldrh r0, [r2, 0x22] - adds r1, r0 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 13 - adds r0, r1 - lsrs r0, 16 - cmp r0, 0xC0 - bls _08090BF4 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _08090BFE - .align 2, 0 -_08090BEC: .4byte sPSSData -_08090BF0: .4byte 0x00000a6c -_08090BF4: - adds r2, 0x3E - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2] -_08090BFE: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x5 - bls _08090BA6 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8090B98 - - thumb_func_start sub_8090C10 -sub_8090C10: @ 8090C10 - push {r4,r5,lr} - lsls r0, 24 - ldr r5, _08090C3C @ =sPSSData - ldr r1, [r5] - lsrs r4, r0, 22 - ldr r0, _08090C40 @ =0x00000a6c - adds r1, r0 - adds r1, r4 - ldr r0, [r1] - cmp r0, 0 - beq _08090C36 - bl sub_80913C4 - ldr r0, [r5] - ldr r1, _08090C40 @ =0x00000a6c - adds r0, r1 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_08090C36: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08090C3C: .4byte sPSSData -_08090C40: .4byte 0x00000a6c - thumb_func_end sub_8090C10 - - thumb_func_start sub_8090C44 -sub_8090C44: @ 8090C44 - push {r4-r6,lr} - movs r5, 0 - ldr r6, _08090C7C @ =sPSSData -_08090C4A: - ldr r0, [r6] - lsls r4, r5, 2 - ldr r1, _08090C80 @ =0x00000a6c - adds r0, r1 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _08090C6A - bl sub_80913C4 - ldr r0, [r6] - ldr r1, _08090C80 @ =0x00000a6c - adds r0, r1 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_08090C6A: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _08090C4A - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08090C7C: .4byte sPSSData -_08090C80: .4byte 0x00000a6c - thumb_func_end sub_8090C44 - - thumb_func_start sub_8090C84 -sub_8090C84: @ 8090C84 - push {lr} - lsls r0, 24 - lsls r1, 24 - lsrs r2, r1, 24 - ldr r1, _08090CB8 @ =sPSSData - ldr r1, [r1] - lsrs r0, 22 - ldr r3, _08090CBC @ =0x00000a6c - adds r1, r3 - adds r1, r0 - ldr r3, [r1] - cmp r3, 0 - beq _08090CB2 - movs r0, 0x3 - adds r1, r2, 0 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x1] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] -_08090CB2: - pop {r0} - bx r0 - .align 2, 0 -_08090CB8: .4byte sPSSData -_08090CBC: .4byte 0x00000a6c - thumb_func_end sub_8090C84 - - thumb_func_start sub_8090CC0 -sub_8090CC0: @ 8090CC0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - adds r5, r1, 0 - cmp r4, 0 - bne _08090CF0 - ldr r3, _08090CE8 @ =sPSSData - ldr r0, [r3] - ldr r5, _08090CEC @ =0x00000a68 - adds r2, r0, r5 - lsls r1, 2 - adds r5, 0x4 - adds r0, r5 - adds r0, r1 - ldr r1, [r0] - str r1, [r2] - str r4, [r0] - b _08090D0C - .align 2, 0 -_08090CE8: .4byte sPSSData -_08090CEC: .4byte 0x00000a68 -_08090CF0: - cmp r4, 0x1 - bne _08090D42 - ldr r3, _08090D48 @ =sPSSData - ldr r0, [r3] - ldr r1, _08090D4C @ =0x00000a68 - adds r2, r0, r1 - lsls r1, r5, 2 - ldr r4, _08090D50 @ =0x00000a84 - adds r0, r4 - adds r0, r1 - ldr r1, [r0] - str r1, [r2] - movs r1, 0 - str r1, [r0] -_08090D0C: - adds r5, r3, 0 - ldr r0, [r5] - ldr r4, _08090D4C @ =0x00000a68 - adds r0, r4 - ldr r1, [r0] - ldr r0, _08090D54 @ =sub_80911B0 - str r0, [r1, 0x1C] - bl sub_8090058 - ldr r1, [r5] - adds r1, r4 - ldr r3, [r1] - movs r1, 0x3 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r0, [r5] - adds r0, r4 - ldr r0, [r0] - adds r0, 0x43 - movs r1, 0x7 - strb r1, [r0] -_08090D42: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08090D48: .4byte sPSSData -_08090D4C: .4byte 0x00000a68 -_08090D50: .4byte 0x00000a84 -_08090D54: .4byte sub_80911B0 - thumb_func_end sub_8090CC0 - - thumb_func_start sub_8090D58 -sub_8090D58: @ 8090D58 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - cmp r0, 0xE - bne _08090DA4 - ldr r3, _08090D98 @ =sPSSData - ldr r1, [r3] - lsls r5, r6, 2 - ldr r4, _08090D9C @ =0x00000a6c - adds r0, r1, r4 - adds r0, r5 - ldr r2, _08090DA0 @ =0x00000a68 - adds r1, r2 - ldr r2, [r1] - str r2, [r0] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r3] - adds r0, r4 - adds r0, r5 - ldr r0, [r0] - adds r0, 0x43 - movs r1, 0xC - strb r1, [r0] - b _08090DE0 - .align 2, 0 -_08090D98: .4byte sPSSData -_08090D9C: .4byte 0x00000a6c -_08090DA0: .4byte 0x00000a68 -_08090DA4: - ldr r5, _08090DF8 @ =sPSSData - ldr r1, [r5] - lsls r4, r6, 2 - ldr r3, _08090DFC @ =0x00000a84 - adds r0, r1, r3 - adds r0, r4 - ldr r2, _08090E00 @ =0x00000a68 - adds r1, r2 - ldr r2, [r1] - str r2, [r0] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r5] - adds r0, r3 - adds r0, r4 - ldr r4, [r0] - adds r0, r6, 0 - movs r1, 0x6 - bl __umodsi3 - movs r1, 0x13 - subs r1, r0 - adds r4, 0x43 - strb r1, [r4] - adds r3, r5, 0 -_08090DE0: - ldr r1, [r3] - ldr r0, _08090E00 @ =0x00000a68 - adds r1, r0 - ldr r2, [r1] - ldr r0, _08090E04 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] - movs r0, 0 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08090DF8: .4byte sPSSData -_08090DFC: .4byte 0x00000a84 -_08090E00: .4byte 0x00000a68 -_08090E04: .4byte SpriteCallbackDummy - thumb_func_end sub_8090D58 - - thumb_func_start sub_8090E08 -sub_8090E08: @ 8090E08 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r0, 0xE - bne _08090E30 - ldr r3, _08090E24 @ =sPSSData - ldr r1, [r3] - ldr r0, _08090E28 @ =0x00000afc - adds r2, r1, r0 - lsls r0, r4, 2 - ldr r4, _08090E2C @ =0x00000a6c - b _08090E3C - .align 2, 0 -_08090E24: .4byte sPSSData -_08090E28: .4byte 0x00000afc -_08090E2C: .4byte 0x00000a6c -_08090E30: - ldr r3, _08090E5C @ =sPSSData - ldr r1, [r3] - ldr r0, _08090E60 @ =0x00000afc - adds r2, r1, r0 - lsls r0, r4, 2 - ldr r4, _08090E64 @ =0x00000a84 -_08090E3C: - adds r0, r4 - adds r1, r0 - str r1, [r2] - ldr r1, [r3] - ldr r2, _08090E68 @ =0x00000a68 - adds r0, r1, r2 - ldr r2, [r0] - ldr r0, _08090E6C @ =SpriteCallbackDummy - str r0, [r2, 0x1C] - ldr r4, _08090E70 @ =0x00000c59 - adds r1, r4 - movs r0, 0 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08090E5C: .4byte sPSSData -_08090E60: .4byte 0x00000afc -_08090E64: .4byte 0x00000a84 -_08090E68: .4byte 0x00000a68 -_08090E6C: .4byte SpriteCallbackDummy -_08090E70: .4byte 0x00000c59 - thumb_func_end sub_8090E08 - - thumb_func_start sub_8090E74 -sub_8090E74: @ 8090E74 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r6, _08090E90 @ =sPSSData - ldr r0, [r6] - ldr r1, _08090E94 @ =0x00000c59 - mov r9, r1 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x10 - bne _08090E98 - movs r0, 0 - b _08090FA0 - .align 2, 0 -_08090E90: .4byte sPSSData -_08090E94: .4byte 0x00000c59 -_08090E98: - adds r0, 0x1 - strb r0, [r1] - ldr r2, [r6] - ldr r5, _08090FAC @ =0x00000c59 - adds r0, r2, r5 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08090EC6 - ldr r1, _08090FB0 @ =0x00000afc - adds r0, r2, r1 - ldr r0, [r0] - ldr r1, [r0] - ldrh r0, [r1, 0x22] - subs r0, 0x1 - strh r0, [r1, 0x22] - ldr r5, _08090FB4 @ =0x00000a68 - adds r0, r2, r5 - ldr r1, [r0] - ldrh r0, [r1, 0x22] - adds r0, 0x1 - strh r0, [r1, 0x22] -_08090EC6: - ldr r3, [r6] - ldr r7, _08090FB0 @ =0x00000afc - adds r4, r3, r7 - ldr r0, [r4] - ldr r0, [r0] - mov r8, r0 - ldr r5, _08090FB8 @ =gSineTable - mov r0, r9 - adds r1, r3, r0 - ldrb r0, [r1] - lsls r0, 4 - adds r0, r5 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _08090EE8 - adds r0, 0xF -_08090EE8: - asrs r0, 4 - mov r2, r8 - strh r0, [r2, 0x24] - ldr r0, _08090FB4 @ =0x00000a68 - mov r8, r0 - add r3, r8 - ldr r2, [r3] - ldrb r0, [r1] - lsls r0, 4 - adds r0, r5 - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r0, 0 - bge _08090F06 - adds r0, 0xF -_08090F06: - asrs r0, 4 - negs r0, r0 - strh r0, [r2, 0x24] - ldrb r0, [r1] - cmp r0, 0x8 - bne _08090F6A - ldr r3, [r3] - ldr r0, [r4] - ldr r0, [r0] - ldrb r0, [r0, 0x5] - movs r5, 0x3 - movs r1, 0xC - ands r1, r0 - ldrb r2, [r3, 0x5] - movs r4, 0xD - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r0, [r6] - mov r2, r8 - adds r1, r0, r2 - ldr r1, [r1] - adds r0, r7 - ldr r0, [r0] - ldr r0, [r0] - adds r0, 0x43 - ldrb r0, [r0] - adds r1, 0x43 - strb r0, [r1] - bl sub_8090058 - ldr r1, [r6] - adds r1, r7 - ldr r1, [r1] - ldr r1, [r1] - ands r5, r0 - lsls r5, 2 - ldrb r0, [r1, 0x5] - ands r4, r0 - orrs r4, r5 - strb r4, [r1, 0x5] - ldr r0, [r6] - adds r0, r7 - ldr r0, [r0] - ldr r0, [r0] - adds r0, 0x43 - movs r1, 0x7 - strb r1, [r0] -_08090F6A: - ldr r1, [r6] - mov r5, r9 - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x10 - bne _08090F9E - mov r0, r8 - adds r2, r1, r0 - ldr r3, [r2] - adds r1, r7 - ldr r0, [r1] - ldr r0, [r0] - str r0, [r2] - ldr r0, [r1] - str r3, [r0] - ldr r1, [r6] - mov r2, r8 - adds r0, r1, r2 - ldr r2, [r0] - ldr r0, _08090FBC @ =sub_80911B0 - str r0, [r2, 0x1C] - adds r1, r7 - ldr r0, [r1] - ldr r1, [r0] - ldr r0, _08090FC0 @ =SpriteCallbackDummy - str r0, [r1, 0x1C] -_08090F9E: - movs r0, 0x1 -_08090FA0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08090FAC: .4byte 0x00000c59 -_08090FB0: .4byte 0x00000afc -_08090FB4: .4byte 0x00000a68 -_08090FB8: .4byte gSineTable -_08090FBC: .4byte sub_80911B0 -_08090FC0: .4byte SpriteCallbackDummy - thumb_func_end sub_8090E74 - - thumb_func_start sub_8090FC4 -sub_8090FC4: @ 8090FC4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r0, 0x1 - beq _08090FFC - cmp r0, 0x1 - bgt _08090FDE - cmp r0, 0 - beq _08090FE4 - b _08091072 -_08090FDE: - cmp r2, 0x2 - beq _0809101C - b _08091072 -_08090FE4: - ldr r3, _08090FF4 @ =sPSSData - ldr r1, [r3] - movs r0, 0xB0 - lsls r0, 4 - adds r2, r1, r0 - lsls r0, r4, 2 - ldr r4, _08090FF8 @ =0x00000a6c - b _0809100A - .align 2, 0 -_08090FF4: .4byte sPSSData -_08090FF8: .4byte 0x00000a6c -_08090FFC: - ldr r3, _08091014 @ =sPSSData - ldr r1, [r3] - movs r0, 0xB0 - lsls r0, 4 - adds r2, r1, r0 - lsls r0, r4, 2 - ldr r4, _08091018 @ =0x00000a84 -_0809100A: - adds r0, r4 - adds r1, r0 - str r1, [r2] - adds r4, r3, 0 - b _0809102E - .align 2, 0 -_08091014: .4byte sPSSData -_08091018: .4byte 0x00000a84 -_0809101C: - ldr r0, _08091078 @ =sPSSData - ldr r1, [r0] - movs r3, 0xB0 - lsls r3, 4 - adds r2, r1, r3 - ldr r4, _0809107C @ =0x00000a68 - adds r1, r4 - str r1, [r2] - adds r4, r0, 0 -_0809102E: - ldr r0, [r4] - movs r1, 0xB0 - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _08091072 - bl InitSpriteAffineAnim - ldr r0, [r4] - movs r3, 0xB0 - lsls r3, 4 - adds r0, r3 - ldr r0, [r0] - ldr r2, [r0] - ldrb r1, [r2, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1] - ldr r1, [r4] - adds r1, r3 - ldr r0, [r1] - ldr r2, [r0] - ldr r0, _08091080 @ =gUnknown_83CEC38 - str r0, [r2, 0x10] - ldr r0, [r1] - ldr r0, [r0] - movs r1, 0 - bl StartSpriteAffineAnim -_08091072: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08091078: .4byte sPSSData -_0809107C: .4byte 0x00000a68 -_08091080: .4byte gUnknown_83CEC38 - thumb_func_end sub_8090FC4 - - 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 sub_80913C4 - 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 sub_8091184 -sub_8091184: @ 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 sub_8091184 - - 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 sub_80912E0 -sub_80912E0: @ 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 sub_80912E0 - - thumb_func_start sub_80913C4 -sub_80913C4: @ 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 sub_80913C4 - - 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 sub_8091514 -sub_8091514: @ 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 sub_8091514 - - thumb_func_start sub_80915FC -sub_80915FC: @ 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 sub_80915FC - - 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 sub_8091730 -sub_8091730: @ 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 sub_808BDBC - 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 sub_8091730 - - thumb_func_start sub_8091760 -sub_8091760: @ 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 sub_8091760 - - 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 sub_808BD94 - 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 sub_808BD94 - 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 PSS_RenderTextToVramViaBuffer - 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 PSS_RenderTextToVramViaBuffer - adds r0, r6, 0 - bl LoadSpriteSheet - ldr r0, [sp, 0x2C] - bl sub_808BD94 - 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 sub_808BD94 - 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 sub_80939AC - 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 - - thumb_func_start sub_80922C0 -sub_80922C0: @ 80922C0 - push {lr} - ldr r0, _080922D4 @ =sPSSData - ldr r0, [r0] - ldrb r1, [r0, 0x1] - cmp r1, 0x1 - beq _080922DC - ldr r1, _080922D8 @ =sBoxCursorArea - movs r0, 0 - strb r0, [r1] - b _080922E0 - .align 2, 0 -_080922D4: .4byte sPSSData -_080922D8: .4byte sBoxCursorArea -_080922DC: - ldr r0, _0809231C @ =sBoxCursorArea - strb r1, [r0] -_080922E0: - ldr r0, _08092320 @ =sBoxCursorPosition - movs r1, 0 - strb r1, [r0] - ldr r0, _08092324 @ =sIsMonBeingMoved - strb r1, [r0] - ldr r0, _08092328 @ =sMovingMonOrigBoxId - strb r1, [r0] - ldr r0, _0809232C @ =sMovingMonOrigBoxPos - strb r1, [r0] - ldr r0, _08092330 @ =sCanOnlyMove - strb r1, [r0] - bl sub_8092B50 - bl sub_8094AD8 - ldr r2, _08092334 @ =sPSSData - ldr r0, [r2] - ldr r1, _08092338 @ =0x00000cd2 - adds r0, r1 - movs r3, 0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r2] - ldr r1, _0809233C @ =0x000021ef - adds r0, r1 - strb r3, [r0] - bl sub_8093A10 - pop {r0} - bx r0 - .align 2, 0 -_0809231C: .4byte sBoxCursorArea -_08092320: .4byte sBoxCursorPosition -_08092324: .4byte sIsMonBeingMoved -_08092328: .4byte sMovingMonOrigBoxId -_0809232C: .4byte sMovingMonOrigBoxPos -_08092330: .4byte sCanOnlyMove -_08092334: .4byte sPSSData -_08092338: .4byte 0x00000cd2 -_0809233C: .4byte 0x000021ef - thumb_func_end sub_80922C0 - - thumb_func_start sub_8092340 -sub_8092340: @ 8092340 - push {lr} - bl sub_8094AD8 - bl sub_8093AAC - ldr r3, _08092380 @ =sPSSData - ldr r0, [r3] - ldr r1, _08092384 @ =0x00000cd2 - adds r0, r1 - movs r2, 0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r3] - ldr r1, _08092388 @ =0x000021ef - adds r0, r1 - strb r2, [r0] - ldr r0, _0809238C @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _0809237A - ldr r0, [r3] - ldr r1, _08092390 @ =0x000020a0 - adds r0, r1 - ldr r1, _08092394 @ =gUnknown_20397BC - movs r2, 0x64 - bl memcpy - bl sub_8090070 -_0809237A: - pop {r0} - bx r0 - .align 2, 0 -_08092380: .4byte sPSSData -_08092384: .4byte 0x00000cd2 -_08092388: .4byte 0x000021ef -_0809238C: .4byte sIsMonBeingMoved -_08092390: .4byte 0x000020a0 -_08092394: .4byte gUnknown_20397BC - thumb_func_end sub_8092340 - - thumb_func_start sub_8092398 -sub_8092398: @ 8092398 - push {r4-r6,lr} - adds r4, r2, 0 - adds r6, r3, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r0, 0x4 - bhi _08092450 - lsls r0, 2 - ldr r1, _080923B4 @ =_080923B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080923B4: .4byte _080923B8 - .align 2, 0 -_080923B8: - .4byte _080923CC - .4byte _080923FA - .4byte _08092422 - .4byte _0809242A - .4byte _08092448 -_080923CC: - adds r0, r5, 0 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, 0x64 - strh r1, [r4] - adds r0, r5, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, 0x20 - strh r1, [r6] - b _08092450 -_080923FA: - cmp r5, 0 - bne _08092406 - movs r0, 0x68 - strh r0, [r4] - movs r0, 0x34 - b _0809244E -_08092406: - cmp r5, 0x6 - bne _08092412 - movs r0, 0x98 - strh r0, [r4] - movs r0, 0x84 - b _0809244E -_08092412: - movs r0, 0x98 - strh r0, [r4] - subs r1, r5, 0x1 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, 0x4 - b _0809244E -_08092422: - movs r0, 0xA2 - strh r0, [r4] - movs r0, 0xC - b _0809244E -_0809242A: - ldr r0, _08092444 @ =sIsMonBeingMoved - ldrb r0, [r0] - movs r1, 0xE - cmp r0, 0 - beq _08092436 - movs r1, 0x8 -_08092436: - strh r1, [r6] - movs r0, 0x58 - muls r0, r5 - adds r0, 0x78 - strh r0, [r4] - b _08092450 - .align 2, 0 -_08092444: .4byte sIsMonBeingMoved -_08092448: - movs r0, 0xA0 - strh r0, [r4] - movs r0, 0x60 -_0809244E: - strh r0, [r6] -_08092450: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8092398 - - thumb_func_start sub_8092458 -sub_8092458: @ 8092458 - push {lr} - ldr r0, _08092480 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _0809248C - cmp r0, 0x1 - bne _080924A0 - ldr r0, _08092484 @ =sBoxCursorPosition - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08092488 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - b _08092496 - .align 2, 0 -_08092480: .4byte sBoxCursorArea -_08092484: .4byte sBoxCursorPosition -_08092488: .4byte gPlayerParty -_0809248C: - ldr r0, _0809249C @ =sBoxCursorPosition - ldrb r0, [r0] - movs r1, 0xB - bl GetBoxMonDataFromSelectedBox -_08092496: - lsls r0, 16 - lsrs r0, 16 - b _080924A2 - .align 2, 0 -_0809249C: .4byte sBoxCursorPosition -_080924A0: - movs r0, 0 -_080924A2: - pop {r1} - bx r1 - thumb_func_end sub_8092458 - - thumb_func_start sub_80924A8 -sub_80924A8: @ 80924A8 - push {r4-r7,lr} - ldr r7, _080924C4 @ =sPSSData - ldr r5, [r7] - ldr r0, _080924C8 @ =0x00000ccc - adds r1, r5, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080924D6 - ldrb r0, [r5, 0x1] - cmp r0, 0x3 - beq _080924CC - movs r0, 0 - b _080925F4 - .align 2, 0 -_080924C4: .4byte sPSSData -_080924C8: .4byte 0x00000ccc -_080924CC: - bl sub_809610C - lsls r0, 24 - lsrs r0, 24 - b _080925F4 -_080924D6: - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _080925D4 - ldr r1, _080925C4 @ =0x00000cb8 - adds r4, r5, r1 - movs r2, 0xCC - lsls r2, 4 - adds r1, r5, r2 - ldr r0, [r4] - ldr r1, [r1] - adds r0, r1 - str r0, [r4] - ldr r0, _080925C8 @ =0x00000cbc - adds r3, r5, r0 - adds r2, 0x4 - adds r1, r5, r2 - ldr r0, [r3] - ldr r1, [r1] - adds r0, r1 - str r0, [r3] - movs r6, 0xCB - lsls r6, 4 - adds r1, r5, r6 - ldr r2, [r1] - ldr r0, [r4] - asrs r0, 8 - strh r0, [r2, 0x20] - ldr r2, [r1] - ldr r0, [r3] - asrs r0, 8 - strh r0, [r2, 0x22] - ldr r1, [r1] - ldrh r2, [r1, 0x20] - movs r3, 0x20 - ldrsh r0, [r1, r3] - movs r3, 0x80 - lsls r3, 1 - cmp r0, r3 - ble _08092534 - ldr r4, _080925CC @ =0xffffff00 - adds r0, r2, r4 - lsls r0, 16 - asrs r0, 16 - adds r0, 0x40 - strh r0, [r1, 0x20] -_08092534: - ldr r0, [r7] - adds r0, r6 - ldr r1, [r0] - ldrh r2, [r1, 0x20] - movs r4, 0x20 - ldrsh r0, [r1, r4] - cmp r0, 0x3F - bgt _08092550 - movs r0, 0x40 - subs r0, r2 - lsls r0, 16 - asrs r0, 16 - subs r0, r3, r0 - strh r0, [r1, 0x20] -_08092550: - ldr r0, [r7] - adds r0, r6 - ldr r1, [r0] - ldrh r2, [r1, 0x22] - movs r3, 0x22 - ldrsh r0, [r1, r3] - cmp r0, 0xB0 - ble _0809256C - adds r0, r2, 0 - subs r0, 0xB0 - lsls r0, 16 - asrs r0, 16 - subs r0, 0x10 - strh r0, [r1, 0x22] -_0809256C: - ldr r0, [r7] - adds r0, r6 - ldr r2, [r0] - ldrh r3, [r2, 0x22] - movs r4, 0x22 - ldrsh r0, [r2, r4] - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bge _0809258C - subs r0, r1, r3 - movs r1, 0xB0 - lsls r0, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r2, 0x22] -_0809258C: - ldr r0, [r7] - ldr r2, _080925D0 @ =0x00000cd3 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _080925F2 - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080925F2 - ldr r0, [r7] - adds r0, r6 - ldr r2, [r0] - adds r2, 0x3F - ldrb r3, [r2] - lsrs r1, r3, 1 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 1 - movs r0, 0x3 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - b _080925F2 - .align 2, 0 -_080925C4: .4byte 0x00000cb8 -_080925C8: .4byte 0x00000cbc -_080925CC: .4byte 0xffffff00 -_080925D0: .4byte 0x00000cd3 -_080925D4: - movs r3, 0xCB - lsls r3, 4 - adds r2, r5, r3 - ldr r1, [r2] - ldr r4, _080925FC @ =0x00000cc8 - adds r0, r5, r4 - ldrh r0, [r0] - strh r0, [r1, 0x20] - ldr r1, [r2] - ldr r2, _08092600 @ =0x00000cca - adds r0, r5, r2 - ldrh r0, [r0] - strh r0, [r1, 0x22] - bl sub_80929B0 -_080925F2: - movs r0, 0x1 -_080925F4: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080925FC: .4byte 0x00000cc8 -_08092600: .4byte 0x00000cca - thumb_func_end sub_80924A8 - - thumb_func_start sub_8092604 -sub_8092604: @ 8092604 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r6, sp - adds r6, 0x2 - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - adds r3, r6, 0 - bl sub_8092398 - ldr r1, _08092654 @ =sPSSData - ldr r0, [r1] - movs r2, 0xCD - lsls r2, 4 - adds r0, r2 - strb r4, [r0] - ldr r0, [r1] - ldr r3, _08092658 @ =0x00000cd1 - adds r0, r3 - strb r5, [r0] - ldr r1, [r1] - mov r0, sp - ldrh r2, [r0] - subs r3, 0x9 - adds r0, r1, r3 - strh r2, [r0] - ldrh r0, [r6] - ldr r2, _0809265C @ =0x00000cca - adds r1, r2 - strh r0, [r1] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08092654: .4byte sPSSData -_08092658: .4byte 0x00000cd1 -_0809265C: .4byte 0x00000cca - thumb_func_end sub_8092604 - - thumb_func_start sub_8092660 -sub_8092660: @ 8092660 - push {r4-r7,lr} - ldr r0, _0809267C @ =sPSSData - ldr r2, [r0] - ldr r3, _08092680 @ =0x00000cce - adds r1, r2, r3 - ldrh r1, [r1] - adds r4, r0, 0 - cmp r1, 0 - beq _08092688 - ldr r0, _08092684 @ =0x00000ccc - adds r1, r2, r0 - movs r0, 0xC - b _0809268E - .align 2, 0 -_0809267C: .4byte sPSSData -_08092680: .4byte 0x00000cce -_08092684: .4byte 0x00000ccc -_08092688: - ldr r3, _080926D4 @ =0x00000ccc - adds r1, r2, r3 - movs r0, 0x6 -_0809268E: - strh r0, [r1] - ldr r1, [r4] - ldr r0, _080926D8 @ =0x00000cd3 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0 - beq _080926A6 - ldr r3, _080926D4 @ =0x00000ccc - adds r0, r1, r3 - ldrh r0, [r0] - lsrs r0, 1 - strb r0, [r2] -_080926A6: - ldr r2, [r4] - ldr r1, _080926DC @ =0x00000cce - adds r0, r2, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080926E4 - cmp r1, 0x1 - beq _08092700 - ldr r3, _080926E0 @ =0x00000cca - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x22 - ldrsh r0, [r0, r2] - b _08092716 - .align 2, 0 -_080926D4: .4byte 0x00000ccc -_080926D8: .4byte 0x00000cd3 -_080926DC: .4byte 0x00000cce -_080926E0: .4byte 0x00000cca -_080926E4: - ldr r3, _080926FC @ =0x00000cca - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x22 - ldrsh r0, [r0, r2] - adds r0, 0xC0 - b _08092716 - .align 2, 0 -_080926FC: .4byte 0x00000cca -_08092700: - ldr r3, _08092744 @ =0x00000cca - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x22 - ldrsh r0, [r0, r2] - subs r0, 0xC0 -_08092716: - subs r7, r1, r0 - ldr r2, [r4] - ldr r3, _08092748 @ =0x00000ccf - adds r0, r2, r3 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08092750 - cmp r1, 0x1 - beq _0809276C - ldr r1, _0809274C @ =0x00000cc8 - adds r0, r2, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x20 - ldrsh r0, [r0, r2] - b _08092782 - .align 2, 0 -_08092744: .4byte 0x00000cca -_08092748: .4byte 0x00000ccf -_0809274C: .4byte 0x00000cc8 -_08092750: - ldr r3, _08092768 @ =0x00000cc8 - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x20 - ldrsh r0, [r0, r2] - adds r0, 0xC0 - b _08092782 - .align 2, 0 -_08092768: .4byte 0x00000cc8 -_0809276C: - ldr r3, _080927D4 @ =0x00000cc8 - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0xCB - lsls r3, 4 - adds r0, r2, r3 - ldr r0, [r0] - movs r2, 0x20 - ldrsh r0, [r0, r2] - subs r0, 0xC0 -_08092782: - subs r0, r1, r0 - lsls r7, 8 - lsls r0, 8 - ldr r4, [r4] - movs r3, 0xCC - lsls r3, 4 - adds r6, r4, r3 - ldr r1, _080927D8 @ =0x00000ccc - adds r5, r4, r1 - ldrh r1, [r5] - bl __divsi3 - str r0, [r6] - ldr r2, _080927DC @ =0x00000cc4 - adds r6, r4, r2 - ldrh r1, [r5] - adds r0, r7, 0 - bl __divsi3 - str r0, [r6] - ldr r3, _080927E0 @ =0x00000cb8 - adds r2, r4, r3 - movs r0, 0xCB - lsls r0, 4 - adds r1, r4, r0 - ldr r0, [r1] - movs r3, 0x20 - ldrsh r0, [r0, r3] - lsls r0, 8 - str r0, [r2] - ldr r0, _080927E4 @ =0x00000cbc - adds r4, r0 - ldr r0, [r1] - movs r1, 0x22 - ldrsh r0, [r0, r1] - lsls r0, 8 - str r0, [r4] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080927D4: .4byte 0x00000cc8 -_080927D8: .4byte 0x00000ccc -_080927DC: .4byte 0x00000cc4 -_080927E0: .4byte 0x00000cb8 -_080927E4: .4byte 0x00000cbc - thumb_func_end sub_8092660 - - thumb_func_start sub_80927E8 -sub_80927E8: @ 80927E8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8092604 - bl sub_8092660 - ldr r5, _0809282C @ =sPSSData - ldr r1, [r5] - ldrb r0, [r1, 0x1] - cmp r0, 0x3 - beq _08092838 - ldr r2, _08092830 @ =0x000021ef - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08092852 - ldr r0, _08092834 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - bne _08092852 - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim - b _08092852 - .align 2, 0 -_0809282C: .4byte sPSSData -_08092830: .4byte 0x000021ef -_08092834: .4byte sIsMonBeingMoved -_08092838: - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - bne _08092852 - ldr r0, [r5] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim -_08092852: - ldr r0, _08092874 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _080928AC - ldr r0, _08092878 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _08092880 - ldr r0, _0809287C @ =sBoxCursorPosition - ldrb r1, [r0] - movs r0, 0 - bl sub_8095D44 - b _0809288E - .align 2, 0 -_08092874: .4byte sPSSData -_08092878: .4byte sBoxCursorArea -_0809287C: .4byte sBoxCursorPosition -_08092880: - cmp r0, 0x1 - bne _0809288E - ldr r0, _0809289C @ =sBoxCursorPosition - ldrb r1, [r0] - movs r0, 0x1 - bl sub_8095D44 -_0809288E: - cmp r4, 0 - bne _080928A0 - movs r0, 0 - adds r1, r6, 0 - bl sub_8095C84 - b _080928AC - .align 2, 0 -_0809289C: .4byte sBoxCursorPosition -_080928A0: - cmp r4, 0x1 - bne _080928D8 - movs r0, 0x1 - adds r1, r6, 0 - bl sub_8095C84 -_080928AC: - cmp r4, 0x1 - bne _080928D8 - ldr r0, _08092920 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - beq _080928D8 - ldr r1, _08092924 @ =sPSSData - ldr r0, [r1] - ldr r2, _08092928 @ =0x00000cd2 - adds r0, r2 - strb r4, [r0] - ldr r0, [r1] - ldr r1, _0809292C @ =0x00000cb4 - adds r0, r1 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] -_080928D8: - cmp r4, 0 - beq _08092930 - cmp r4, 0 - blt _080929A0 - cmp r4, 0x3 - bgt _080929A0 - ldr r5, _08092924 @ =sPSSData - ldr r0, [r5] - movs r2, 0xCB - lsls r2, 4 - adds r0, r2 - ldr r4, [r0] - ldrb r1, [r4, 0x5] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r4, 0x5] - ldr r0, [r5] - ldr r4, _0809292C @ =0x00000cb4 - adds r0, r4 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r3 - strb r0, [r1] - ldr r0, [r5] - adds r0, r4 - ldr r1, [r0] - ldrb r0, [r1, 0x5] - ands r2, r0 - orrs r2, r3 - strb r2, [r1, 0x5] - b _080929A0 - .align 2, 0 -_08092920: .4byte sBoxCursorArea -_08092924: .4byte sPSSData -_08092928: .4byte 0x00000cd2 -_0809292C: .4byte 0x00000cb4 -_08092930: - ldr r3, _08092964 @ =sPSSData - ldr r1, [r3] - ldr r2, _08092968 @ =0x000021ef - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08092970 - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r2, [r0] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x5] - ldr r0, [r3] - ldr r1, _0809296C @ =0x00000cb4 - adds r0, r1 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - b _080929A0 - .align 2, 0 -_08092964: .4byte sPSSData -_08092968: .4byte 0x000021ef -_0809296C: .4byte 0x00000cb4 -_08092970: - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r2, [r0] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, _080929A8 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080929A0 - ldr r0, _080929AC @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080929A0 - movs r0, 0x2 - bl sub_8091184 -_080929A0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080929A8: .4byte sBoxCursorArea -_080929AC: .4byte sIsMonBeingMoved - thumb_func_end sub_80927E8 - - thumb_func_start sub_80929B0 -sub_80929B0: @ 80929B0 - push {r4,lr} - ldr r1, _080929F4 @ =sBoxCursorArea - ldr r4, _080929F8 @ =sPSSData - ldr r2, [r4] - movs r3, 0xCD - lsls r3, 4 - adds r0, r2, r3 - ldrb r0, [r0] - strb r0, [r1] - ldr r1, _080929FC @ =sBoxCursorPosition - adds r3, 0x1 - adds r0, r2, r3 - ldrb r0, [r0] - strb r0, [r1] - ldrb r0, [r2, 0x1] - cmp r0, 0x3 - beq _08092A08 - ldr r1, _08092A00 @ =0x000021ef - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08092A22 - ldr r0, _08092A04 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - bne _08092A22 - subs r3, 0x21 - adds r0, r2, r3 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim - b _08092A22 - .align 2, 0 -_080929F4: .4byte sBoxCursorArea -_080929F8: .4byte sPSSData -_080929FC: .4byte sBoxCursorPosition -_08092A00: .4byte 0x000021ef -_08092A04: .4byte sIsMonBeingMoved -_08092A08: - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - bne _08092A22 - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim -_08092A22: - bl sub_8093A10 - ldr r0, _08092A3C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - beq _08092A52 - cmp r0, 0x1 - bgt _08092A40 - cmp r0, 0 - beq _08092A74 - b _08092AD0 - .align 2, 0 -_08092A3C: .4byte sBoxCursorArea -_08092A40: - cmp r0, 0x2 - beq _08092A4A - cmp r0, 0x3 - bne _08092AD0 - b _08092A62 -_08092A4A: - movs r0, 0x1 - bl sub_80920FC - b _08092AD0 -_08092A52: - ldr r0, _08092A6C @ =sPSSData - ldr r0, [r0] - ldr r2, _08092A70 @ =0x00000cb4 - adds r0, r2 - ldr r0, [r0] - adds r0, 0x43 - movs r1, 0xD - strb r1, [r0] -_08092A62: - movs r0, 0x1 - bl sub_8091184 - b _08092AD0 - .align 2, 0 -_08092A6C: .4byte sPSSData -_08092A70: .4byte 0x00000cb4 -_08092A74: - ldr r4, _08092AD8 @ =sPSSData - ldr r1, [r4] - ldr r3, _08092ADC @ =0x000021ef - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _08092AD0 - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r3, [r0] - ldrb r1, [r3, 0x5] - movs r2, 0xD - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r0, [r4] - ldr r3, _08092AE0 @ =0x00000cb4 - adds r0, r3 - ldr r1, [r0] - ldrb r0, [r1, 0x5] - ands r2, r0 - movs r0, 0x8 - orrs r2, r0 - strb r2, [r1, 0x5] - ldr r0, [r4] - adds r0, r3 - ldr r0, [r0] - adds r0, 0x43 - movs r1, 0x15 - strb r1, [r0] - ldr r0, [r4] - adds r0, r3 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0x2 - bl sub_8091184 -_08092AD0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08092AD8: .4byte sPSSData -_08092ADC: .4byte 0x000021ef -_08092AE0: .4byte 0x00000cb4 - thumb_func_end sub_80929B0 - - thumb_func_start sub_8092AE4 -sub_8092AE4: @ 8092AE4 - push {lr} - ldr r0, _08092AF4 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - bne _08092AF8 - movs r3, 0 - b _08092B06 - .align 2, 0 -_08092AF4: .4byte sIsMonBeingMoved -_08092AF8: - bl CalculatePlayerPartyCount - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _08092B06 - movs r3, 0x5 -_08092B06: - ldr r0, _08092B34 @ =sPSSData - ldr r2, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r2, r1 - ldr r0, [r0] - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08092B26 - ldr r0, _08092B38 @ =0x00000cd3 - adds r1, r2, r0 - movs r0, 0x1 - strb r0, [r1] -_08092B26: - movs r0, 0x1 - adds r1, r3, 0 - bl sub_80927E8 - pop {r0} - bx r0 - .align 2, 0 -_08092B34: .4byte sPSSData -_08092B38: .4byte 0x00000cd3 - thumb_func_end sub_8092AE4 - - thumb_func_start sub_8092B3C -sub_8092B3C: @ 8092B3C - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl sub_80927E8 - pop {r0} - bx r0 - thumb_func_end sub_8092B3C - - thumb_func_start sub_8092B50 -sub_8092B50: @ 8092B50 - ldr r1, _08092B58 @ =gUnknown_2039826 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08092B58: .4byte gUnknown_2039826 - thumb_func_end sub_8092B50 - - thumb_func_start sub_8092B5C -sub_8092B5C: @ 8092B5C - ldr r0, _08092B68 @ =gUnknown_2039826 - ldr r1, _08092B6C @ =sBoxCursorPosition - ldrb r1, [r1] - strb r1, [r0] - bx lr - .align 2, 0 -_08092B68: .4byte gUnknown_2039826 -_08092B6C: .4byte sBoxCursorPosition - thumb_func_end sub_8092B5C - - thumb_func_start sub_8092B70 -sub_8092B70: @ 8092B70 - ldr r0, _08092B78 @ =gUnknown_2039826 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08092B78: .4byte gUnknown_2039826 - thumb_func_end sub_8092B70 - - thumb_func_start sub_8092B7C -sub_8092B7C: @ 8092B7C - lsls r0, 24 - ldr r1, _08092B9C @ =sPSSData - ldr r1, [r1] - ldr r2, _08092BA0 @ =0x00000d88 - adds r3, r1, r2 - ldr r2, _08092BA4 @ =gUnknown_83D346C - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - str r0, [r3] - ldr r0, _08092BA8 @ =0x00000d8c - adds r1, r0 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08092B9C: .4byte sPSSData -_08092BA0: .4byte 0x00000d88 -_08092BA4: .4byte gUnknown_83D346C -_08092BA8: .4byte 0x00000d8c - thumb_func_end sub_8092B7C - - thumb_func_start sub_8092BAC -sub_8092BAC: @ 8092BAC - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _08092BCC - ldr r0, _08092BC0 @ =sPSSData - ldr r1, [r0] - ldr r2, _08092BC4 @ =0x00000d88 - adds r1, r2 - ldr r2, _08092BC8 @ =sub_8092E00 - b _08092BD6 - .align 2, 0 -_08092BC0: .4byte sPSSData -_08092BC4: .4byte 0x00000d88 -_08092BC8: .4byte sub_8092E00 -_08092BCC: - ldr r0, _08092BE8 @ =sPSSData - ldr r1, [r0] - ldr r2, _08092BEC @ =0x00000d88 - adds r1, r2 - ldr r2, _08092BF0 @ =sub_8092E10 -_08092BD6: - str r2, [r1] - ldr r0, [r0] - ldr r1, _08092BF4 @ =0x00000d8c - adds r0, r1 - movs r1, 0 - strb r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08092BE8: .4byte sPSSData -_08092BEC: .4byte 0x00000d88 -_08092BF0: .4byte sub_8092E10 -_08092BF4: .4byte 0x00000d8c - thumb_func_end sub_8092BAC - - thumb_func_start sub_8092BF8 -sub_8092BF8: @ 8092BF8 - push {lr} - ldr r0, _08092C10 @ =sPSSData - ldr r0, [r0] - ldr r1, _08092C14 @ =0x00000d88 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08092C10: .4byte sPSSData -_08092C14: .4byte 0x00000d88 - thumb_func_end sub_8092BF8 - - thumb_func_start sub_8092C18 -sub_8092C18: @ 8092C18 - push {r4,r5,lr} - ldr r4, _08092C34 @ =sPSSData - ldr r1, [r4] - ldr r5, _08092C38 @ =0x00000d8c - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08092C68 - cmp r0, 0x1 - bgt _08092C3C - cmp r0, 0 - beq _08092C46 - b _08092C9C - .align 2, 0 -_08092C34: .4byte sPSSData -_08092C38: .4byte 0x00000d8c -_08092C3C: - cmp r0, 0x2 - beq _08092C88 - cmp r0, 0x3 - beq _08092C4E - b _08092C9C -_08092C46: - ldr r0, _08092C54 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08092C58 -_08092C4E: - movs r0, 0 - b _08092C9E - .align 2, 0 -_08092C54: .4byte sIsMonBeingMoved -_08092C58: - movs r2, 0xCB - lsls r2, 4 - adds r0, r1, r2 - ldr r0, [r0] - movs r1, 0x2 - bl StartSpriteAnim - b _08092C92 -_08092C68: - bl sub_8092E20 - lsls r0, 24 - cmp r0, 0 - bne _08092C9C - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x3 - bl StartSpriteAnim - bl sub_8092E80 - b _08092C92 -_08092C88: - bl sub_8092E54 - lsls r0, 24 - cmp r0, 0 - bne _08092C9C -_08092C92: - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08092C9C: - movs r0, 0x1 -_08092C9E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8092C18 - - thumb_func_start sub_8092CA4 -sub_8092CA4: @ 8092CA4 - push {r4,r5,lr} - ldr r4, _08092CC0 @ =sPSSData - ldr r0, [r4] - ldr r5, _08092CC4 @ =0x00000d8c - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08092CEE - cmp r0, 0x1 - bgt _08092CC8 - cmp r0, 0 - beq _08092CCE - b _08092D18 - .align 2, 0 -_08092CC0: .4byte sPSSData -_08092CC4: .4byte 0x00000d8c -_08092CC8: - cmp r0, 0x2 - beq _08092D14 - b _08092D18 -_08092CCE: - bl sub_8092E20 - lsls r0, 24 - cmp r0, 0 - bne _08092D18 - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x2 - bl StartSpriteAnim - bl sub_8092EF4 - b _08092D08 -_08092CEE: - bl sub_8092E54 - lsls r0, 24 - cmp r0, 0 - bne _08092D18 - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl StartSpriteAnim -_08092D08: - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08092D18 -_08092D14: - movs r0, 0 - b _08092D1A -_08092D18: - movs r0, 0x1 -_08092D1A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8092CA4 - - thumb_func_start sub_8092D20 -sub_8092D20: @ 8092D20 - push {r4,r5,lr} - ldr r4, _08092D3C @ =sPSSData - ldr r1, [r4] - ldr r5, _08092D40 @ =0x00000d8c - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08092DB4 - cmp r0, 0x1 - bgt _08092D44 - cmp r0, 0 - beq _08092D4A - b _08092DF8 - .align 2, 0 -_08092D3C: .4byte sPSSData -_08092D40: .4byte 0x00000d8c -_08092D44: - cmp r0, 0x2 - beq _08092DF4 - b _08092DF8 -_08092D4A: - ldr r0, _08092D64 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08092D6C - cmp r0, 0x1 - bne _08092DF4 - ldr r0, _08092D68 @ =0x00000d8d - adds r1, r0 - movs r0, 0xE - b _08092D76 - .align 2, 0 -_08092D64: .4byte sBoxCursorArea -_08092D68: .4byte 0x00000d8d -_08092D6C: - bl StorageGetCurrentBox - ldr r1, [r4] - ldr r2, _08092DA4 @ =0x00000d8d - adds r1, r2 -_08092D76: - strb r0, [r1] - ldr r4, _08092DA8 @ =sPSSData - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x2 - bl StartSpriteAnim - ldr r0, [r4] - ldr r2, _08092DA4 @ =0x00000d8d - adds r0, r2 - ldrb r0, [r0] - ldr r1, _08092DAC @ =sBoxCursorPosition - ldrb r1, [r1] - bl sub_8090E08 - ldr r1, [r4] - ldr r0, _08092DB0 @ =0x00000d8c - adds r1, r0 - b _08092DE2 - .align 2, 0 -_08092DA4: .4byte 0x00000d8d -_08092DA8: .4byte sPSSData -_08092DAC: .4byte sBoxCursorPosition -_08092DB0: .4byte 0x00000d8c -_08092DB4: - bl sub_8090E74 - lsls r0, 24 - cmp r0, 0 - bne _08092DF8 - ldr r0, [r4] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x3 - bl StartSpriteAnim - ldr r0, [r4] - ldr r2, _08092DEC @ =0x00000d8d - adds r0, r2 - ldrb r0, [r0] - ldr r1, _08092DF0 @ =sBoxCursorPosition - ldrb r1, [r1] - bl diegohint1 - ldr r1, [r4] - adds r1, r5 -_08092DE2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08092DF8 - .align 2, 0 -_08092DEC: .4byte 0x00000d8d -_08092DF0: .4byte sBoxCursorPosition -_08092DF4: - movs r0, 0 - b _08092DFA -_08092DF8: - movs r0, 0x1 -_08092DFA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8092D20 - - thumb_func_start sub_8092E00 -sub_8092E00: @ 8092E00 - push {lr} - bl sub_8092E20 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8092E00 - - thumb_func_start sub_8092E10 -sub_8092E10: @ 8092E10 - push {lr} - bl sub_8092E54 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8092E10 - - thumb_func_start sub_8092E20 -sub_8092E20: @ 8092E20 - push {lr} - ldr r0, _08092E44 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _08092E3A - cmp r0, 0x8 - beq _08092E48 -_08092E3A: - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _08092E4C - .align 2, 0 -_08092E44: .4byte sPSSData -_08092E48: - movs r0, 0 - b _08092E4E -_08092E4C: - movs r0, 0x1 -_08092E4E: - pop {r1} - bx r1 - thumb_func_end sub_8092E20 - - thumb_func_start sub_8092E54 -sub_8092E54: @ 8092E54 - push {lr} - ldr r0, _08092E74 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _08092E78 - ldrh r0, [r1, 0x26] - subs r0, 0x1 - strh r0, [r1, 0x26] - movs r0, 0x1 - b _08092E7A - .align 2, 0 -_08092E74: .4byte sPSSData -_08092E78: - movs r0, 0 -_08092E7A: - pop {r1} - bx r1 - thumb_func_end sub_8092E54 - - thumb_func_start sub_8092E80 -sub_8092E80: @ 8092E80 - push {r4,lr} - ldr r0, _08092EA8 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08092EB0 - cmp r0, 0x1 - bne _08092EDC - ldr r4, _08092EAC @ =sBoxCursorPosition - ldrb r1, [r4] - movs r0, 0xE - bl sub_8092F60 - ldrb r1, [r4] - movs r0, 0 - bl sub_8090CC0 - b _08092ED6 - .align 2, 0 -_08092EA8: .4byte sBoxCursorArea -_08092EAC: .4byte sBoxCursorPosition -_08092EB0: - ldr r0, _08092EE4 @ =sPSSData - ldr r0, [r0] - ldr r1, _08092EE8 @ =0x000021ef - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08092ED6 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08092EEC @ =sBoxCursorPosition - ldrb r1, [r4] - bl sub_8092F60 - ldrb r1, [r4] - movs r0, 0x1 - bl sub_8090CC0 -_08092ED6: - ldr r1, _08092EF0 @ =sIsMonBeingMoved - movs r0, 0x1 - strb r0, [r1] -_08092EDC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08092EE4: .4byte sPSSData -_08092EE8: .4byte 0x000021ef -_08092EEC: .4byte sBoxCursorPosition -_08092EF0: .4byte sIsMonBeingMoved - thumb_func_end sub_8092E80 - - thumb_func_start sub_8092EF4 -sub_8092EF4: @ 8092EF4 - push {r4,r5,lr} - ldr r0, _08092F1C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08092F24 - cmp r0, 0x1 - bne _08092F46 - ldr r4, _08092F20 @ =sBoxCursorPosition - ldrb r1, [r4] - movs r0, 0xE - bl diegohint2 - ldrb r1, [r4] - movs r0, 0xE - bl sub_8090D58 - b _08092F40 - .align 2, 0 -_08092F1C: .4byte sBoxCursorArea -_08092F20: .4byte sBoxCursorPosition -_08092F24: - bl StorageGetCurrentBox - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _08092F4C @ =sBoxCursorPosition - ldrb r1, [r5] - adds r0, r4, 0 - bl diegohint2 - ldrb r1, [r5] - adds r0, r4, 0 - bl sub_8090D58 -_08092F40: - ldr r1, _08092F50 @ =sIsMonBeingMoved - movs r0, 0 - strb r0, [r1] -_08092F46: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08092F4C: .4byte sBoxCursorPosition -_08092F50: .4byte sIsMonBeingMoved - thumb_func_end sub_8092EF4 - - thumb_func_start sub_8092F54 -sub_8092F54: @ 8092F54 - push {lr} - bl sub_8093A10 - pop {r0} - bx r0 - thumb_func_end sub_8092F54 - - thumb_func_start sub_8092F60 -sub_8092F60: @ 8092F60 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r4, 0xE - bne _08092F9C - ldr r0, _08092F8C @ =sPSSData - ldr r0, [r0] - ldr r1, _08092F90 @ =0x000020a0 - adds r0, r1 - ldr r3, _08092F94 @ =gPlayerParty - ldr r1, _08092F98 @ =sBoxCursorPosition - movs r2, 0 - ldrsb r2, [r1, r2] - movs r1, 0x64 - muls r1, r2 - adds r1, r3 - movs r2, 0x64 - bl memcpy - b _08092FAC - .align 2, 0 -_08092F8C: .4byte sPSSData -_08092F90: .4byte 0x000020a0 -_08092F94: .4byte gPlayerParty -_08092F98: .4byte sBoxCursorPosition -_08092F9C: - ldr r0, _08092FC4 @ =sPSSData - ldr r2, [r0] - ldr r0, _08092FC8 @ =0x000020a0 - adds r2, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_808BCF0 -_08092FAC: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8093030 - ldr r0, _08092FCC @ =sMovingMonOrigBoxId - strb r4, [r0] - ldr r0, _08092FD0 @ =sMovingMonOrigBoxPos - strb r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08092FC4: .4byte sPSSData -_08092FC8: .4byte 0x000020a0 -_08092FCC: .4byte sMovingMonOrigBoxId -_08092FD0: .4byte sMovingMonOrigBoxPos - thumb_func_end sub_8092F60 - - thumb_func_start diegohint2 -diegohint2: @ 8092FD4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - cmp r6, 0xE - bne _08093008 - ldr r1, _08092FFC @ =gPlayerParty - movs r0, 0x64 - muls r0, r7 - adds r0, r1 - ldr r1, _08093000 @ =sPSSData - ldr r1, [r1] - ldr r2, _08093004 @ =0x000020a0 - adds r1, r2 - movs r2, 0x64 - bl memcpy - b _08093020 - .align 2, 0 -_08092FFC: .4byte gPlayerParty -_08093000: .4byte sPSSData -_08093004: .4byte 0x000020a0 -_08093008: - ldr r5, _08093028 @ =sPSSData - ldr r0, [r5] - ldr r4, _0809302C @ =0x000020a0 - adds r0, r4 - bl BoxMonRestorePP - ldr r2, [r5] - adds r2, r4 - adds r0, r6, 0 - adds r1, r7, 0 - bl CopyBoxMonFromAnyBox -_08093020: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08093028: .4byte sPSSData -_0809302C: .4byte 0x000020a0 - thumb_func_end diegohint2 - - thumb_func_start sub_8093030 -sub_8093030: @ 8093030 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r0, 0xE - bne _08093050 - movs r0, 0x64 - muls r0, r1 - ldr r1, _0809304C @ =gPlayerParty - adds r0, r1 - bl ZeroMonData - b _08093054 - .align 2, 0 -_0809304C: .4byte gPlayerParty -_08093050: - bl sub_808BCB4 -_08093054: - pop {r0} - bx r0 - thumb_func_end sub_8093030 - - thumb_func_start diegohint1 -diegohint1: @ 8093058 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - cmp r6, 0xE - bne _0809308C - ldr r0, _08093080 @ =sPSSData - ldr r0, [r0] - ldr r1, _08093084 @ =0x00002104 - adds r0, r1 - ldr r2, _08093088 @ =gPlayerParty - movs r1, 0x64 - muls r1, r7 - adds r1, r2 - movs r2, 0x64 - bl memcpy - b _0809309C - .align 2, 0 -_08093080: .4byte sPSSData -_08093084: .4byte 0x00002104 -_08093088: .4byte gPlayerParty -_0809308C: - ldr r0, _080930D0 @ =sPSSData - ldr r2, [r0] - ldr r0, _080930D4 @ =0x00002104 - adds r2, r0 - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_808BCF0 -_0809309C: - adds r0, r6, 0 - adds r1, r7, 0 - bl diegohint2 - ldr r5, _080930D0 @ =sPSSData - ldr r1, [r5] - ldr r4, _080930D8 @ =0x000020a0 - adds r0, r1, r4 - ldr r2, _080930D4 @ =0x00002104 - adds r1, r2 - movs r2, 0x64 - bl memcpy - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - bl sub_8093AD0 - ldr r0, _080930DC @ =sMovingMonOrigBoxId - strb r6, [r0] - ldr r0, _080930E0 @ =sMovingMonOrigBoxPos - strb r7, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080930D0: .4byte sPSSData -_080930D4: .4byte 0x00002104 -_080930D8: .4byte 0x000020a0 -_080930DC: .4byte sMovingMonOrigBoxId -_080930E0: .4byte sMovingMonOrigBoxPos - thumb_func_end diegohint1 - - thumb_func_start sub_80930E4 -sub_80930E4: @ 80930E4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r6, 0 - bl GetFirstFreeBoxSpot - lsls r0, 16 - lsrs r4, r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08093102 - movs r0, 0 - b _08093164 -_08093102: - ldr r5, _08093120 @ =sIsMonBeingMoved - ldrb r0, [r5] - cmp r0, 0 - beq _08093124 - lsls r4, 24 - lsrs r1, r4, 24 - adds r0, r6, 0 - bl diegohint2 - bl sub_8090B6C - movs r0, 0 - strb r0, [r5] - b _0809313E - .align 2, 0 -_08093120: .4byte sIsMonBeingMoved -_08093124: - ldr r5, _0809316C @ =sBoxCursorPosition - ldrb r1, [r5] - movs r0, 0xE - bl sub_8092F60 - lsls r4, 24 - lsrs r1, r4, 24 - adds r0, r6, 0 - bl diegohint2 - ldrb r0, [r5] - bl sub_8090C10 -_0809313E: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bne _08093150 - lsrs r0, r4, 24 - bl sub_80901EC -_08093150: - ldr r0, _08093170 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0x1 -_08093164: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809316C: .4byte sBoxCursorPosition -_08093170: .4byte sPSSData - thumb_func_end sub_80930E4 - - thumb_func_start sub_8093174 -sub_8093174: @ 8093174 - push {lr} - ldr r0, _08093190 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl StartSpriteAnim - bl sub_8093A10 - pop {r0} - bx r0 - .align 2, 0 -_08093190: .4byte sPSSData - thumb_func_end sub_8093174 - - thumb_func_start sub_8093194 -sub_8093194: @ 8093194 - push {lr} - ldr r0, _080931A4 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080931A8 - movs r2, 0x2 - b _080931B8 - .align 2, 0 -_080931A4: .4byte sIsMonBeingMoved -_080931A8: - ldr r0, _080931D8 @ =sBoxCursorArea - movs r1, 0 - ldrsb r1, [r0, r1] - movs r2, 0x1 - eors r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r2, r0, 31 -_080931B8: - ldr r0, _080931DC @ =sBoxCursorPosition - ldrb r1, [r0] - adds r0, r2, 0 - bl sub_8090FC4 - ldr r0, _080931E0 @ =sPSSData - ldr r1, [r0] - ldr r2, _080931E4 @ =0x000021d0 - adds r0, r1, r2 - ldr r2, _080931E8 @ =0x00000cea - adds r1, r2 - bl StringCopy - pop {r0} - bx r0 - .align 2, 0 -_080931D8: .4byte sBoxCursorArea -_080931DC: .4byte sBoxCursorPosition -_080931E0: .4byte sPSSData -_080931E4: .4byte 0x000021d0 -_080931E8: .4byte 0x00000cea - thumb_func_end sub_8093194 - - thumb_func_start sub_80931EC -sub_80931EC: @ 80931EC - push {lr} - bl sub_8091084 - lsls r0, 24 - cmp r0, 0 - beq _080931FC - movs r0, 0x1 - b _08093210 -_080931FC: - ldr r0, _08093214 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl StartSpriteAnim - movs r0, 0 -_08093210: - pop {r1} - bx r1 - .align 2, 0 -_08093214: .4byte sPSSData - thumb_func_end sub_80931EC - - thumb_func_start sub_8093218 -sub_8093218: @ 8093218 - push {lr} - bl sub_80910CC - ldr r1, _0809322C @ =sIsMonBeingMoved - ldrb r0, [r1] - cmp r0, 0 - beq _08093230 - movs r0, 0 - strb r0, [r1] - b _08093256 - .align 2, 0 -_0809322C: .4byte sIsMonBeingMoved -_08093230: - ldr r0, _08093240 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08093244 - movs r2, 0xE - b _0809324C - .align 2, 0 -_08093240: .4byte sBoxCursorArea -_08093244: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r2, r0, 24 -_0809324C: - ldr r0, _08093260 @ =sBoxCursorPosition - ldrb r1, [r0] - adds r0, r2, 0 - bl sub_8093030 -_08093256: - bl sub_8093A10 - pop {r0} - bx r0 - .align 2, 0 -_08093260: .4byte sBoxCursorPosition - thumb_func_end sub_8093218 - - thumb_func_start sub_8093264 -sub_8093264: @ 8093264 - push {lr} - ldr r0, _08093284 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08093280 - ldr r0, _08093288 @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x3 - bl StartSpriteAnim -_08093280: - pop {r0} - bx r0 - .align 2, 0 -_08093284: .4byte sIsMonBeingMoved -_08093288: .4byte sPSSData - thumb_func_end sub_8093264 - - thumb_func_start sub_809328C -sub_809328C: @ 809328C - push {r4-r6,lr} - ldr r0, _080932C0 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080932D8 - ldr r4, _080932C4 @ =sPSSData - ldr r1, [r4] - ldr r2, _080932C8 @ =0x00002104 - adds r0, r1, r2 - ldr r3, _080932CC @ =0x000020a0 - adds r1, r3 - movs r2, 0x64 - bl memcpy - ldr r0, [r4] - ldr r1, _080932D0 @ =0x0000216e - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldr r0, [r4] - ldr r2, _080932D4 @ =0x0000216f - adds r0, r2 - movs r1, 0x1 - negs r1, r1 - b _08093354 - .align 2, 0 -_080932C0: .4byte sIsMonBeingMoved -_080932C4: .4byte sPSSData -_080932C8: .4byte 0x00002104 -_080932CC: .4byte 0x000020a0 -_080932D0: .4byte 0x0000216e -_080932D4: .4byte 0x0000216f -_080932D8: - ldr r0, _0809330C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08093324 - ldr r4, _08093310 @ =sPSSData - ldr r0, [r4] - ldr r3, _08093314 @ =0x00002104 - adds r0, r3 - ldr r3, _08093318 @ =gPlayerParty - ldr r1, _0809331C @ =sBoxCursorPosition - movs r2, 0 - ldrsb r2, [r1, r2] - movs r1, 0x64 - muls r1, r2 - adds r1, r3 - movs r2, 0x64 - bl memcpy - ldr r0, [r4] - ldr r1, _08093320 @ =0x0000216e - adds r0, r1 - movs r1, 0xE - strb r1, [r0] - b _08093348 - .align 2, 0 -_0809330C: .4byte sBoxCursorArea -_08093310: .4byte sPSSData -_08093314: .4byte 0x00002104 -_08093318: .4byte gPlayerParty -_0809331C: .4byte sBoxCursorPosition -_08093320: .4byte 0x0000216e -_08093324: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080933BC @ =sBoxCursorPosition - ldrb r1, [r1] - ldr r4, _080933C0 @ =sPSSData - ldr r2, [r4] - ldr r3, _080933C4 @ =0x00002104 - adds r2, r3 - bl sub_808BCF0 - bl StorageGetCurrentBox - ldr r1, [r4] - ldr r2, _080933C8 @ =0x0000216e - adds r1, r2 - strb r0, [r1] -_08093348: - ldr r0, _080933C0 @ =sPSSData - ldr r0, [r0] - ldr r1, _080933BC @ =sBoxCursorPosition - ldrb r1, [r1] - ldr r3, _080933CC @ =0x0000216f - adds r0, r3 -_08093354: - strb r1, [r0] - ldr r6, _080933C0 @ =sPSSData - ldr r0, [r6] - ldr r4, _080933D0 @ =0x0000216a - adds r0, r4 - movs r1, 0 - strb r1, [r0] - ldr r0, [r6] - ldr r5, _080933D4 @ =0x0000216b - adds r0, r5 - strb r1, [r0] - ldr r0, [r6] - ldr r1, _080933D8 @ =0x00002172 - adds r2, r0, r1 - movs r1, 0x39 - strh r1, [r2] - ldr r1, _080933DC @ =0x00002174 - adds r3, r0, r1 - ldr r1, _080933E0 @ =0x00000123 - strh r1, [r3] - ldr r1, _080933E4 @ =0x00002176 - adds r3, r0, r1 - ldr r1, _080933E8 @ =0x00000163 - strh r1, [r3] - ldr r3, _080933C4 @ =0x00002104 - adds r0, r3 - movs r1, 0x51 - bl GetMonData - lsls r0, 16 - lsrs r3, r0, 16 - ldr r1, [r6] - movs r2, 0x1 - ands r3, r2 - adds r1, r4 - strb r3, [r1] - ldr r1, [r6] - lsrs r0, 17 - movs r2, 0x1 - ands r0, r2 - adds r1, r5 - strb r0, [r1] - ldr r1, [r6] - adds r4, r1, r4 - ldrh r0, [r4] - cmp r0, 0 - beq _080933F0 - ldr r0, _080933EC @ =0x00002169 - adds r1, r0 - movs r0, 0 - strb r0, [r1] - b _080933FE - .align 2, 0 -_080933BC: .4byte sBoxCursorPosition -_080933C0: .4byte sPSSData -_080933C4: .4byte 0x00002104 -_080933C8: .4byte 0x0000216e -_080933CC: .4byte 0x0000216f -_080933D0: .4byte 0x0000216a -_080933D4: .4byte 0x0000216b -_080933D8: .4byte 0x00002172 -_080933DC: .4byte 0x00002174 -_080933E0: .4byte 0x00000123 -_080933E4: .4byte 0x00002176 -_080933E8: .4byte 0x00000163 -_080933EC: .4byte 0x00002169 -_080933F0: - ldr r3, _08093410 @ =0x00002169 - adds r0, r1, r3 - strb r2, [r0] - ldr r0, [r6] - ldr r1, _08093414 @ =0x00002168 - adds r0, r1 - strb r2, [r0] -_080933FE: - ldr r0, _08093418 @ =sPSSData - ldr r0, [r0] - ldr r2, _0809341C @ =0x00002170 - adds r0, r2 - movs r1, 0 - strh r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08093410: .4byte 0x00002169 -_08093414: .4byte 0x00002168 -_08093418: .4byte sPSSData -_0809341C: .4byte 0x00002170 - thumb_func_end sub_809328C - - thumb_func_start sub_8093420 -sub_8093420: @ 8093420 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08093444 @ =sPSSData - ldr r3, [r0] - ldr r2, _08093448 @ =0x00002169 - adds r1, r3, r2 - ldrb r1, [r1] - mov r12, r0 - cmp r1, 0 - beq _08093450 - ldr r1, _0809344C @ =0x00002168 - adds r0, r3, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - b _08093604 - .align 2, 0 -_08093444: .4byte sPSSData -_08093448: .4byte 0x00002169 -_0809344C: .4byte 0x00002168 -_08093450: - ldr r2, _08093460 @ =0x00002170 - adds r0, r3, r2 - ldrh r0, [r0] - cmp r0, 0 - beq _08093464 - cmp r0, 0x1 - beq _0809353C - b _08093600 - .align 2, 0 -_08093460: .4byte 0x00002170 -_08093464: - movs r6, 0 - mov r5, r12 - movs r7, 0 -_0809346A: - ldr r2, [r5] - ldr r1, _08093500 @ =0x0000216e - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xE - bne _08093488 - adds r1, 0x1 - adds r0, r2, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, r6 - beq _080934C2 -_08093488: - movs r0, 0x64 - muls r0, r6 - ldr r1, _08093504 @ =gPlayerParty - adds r0, r1 - ldr r1, _08093508 @ =0x00002172 - adds r2, r1 - movs r1, 0x51 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080934AE - ldr r0, [r5] - ldr r2, _0809350C @ =0x0000216a - adds r0, r2 - strb r7, [r0] -_080934AE: - movs r0, 0x2 - ands r4, r0 - ldr r0, _08093510 @ =sPSSData - mov r12, r0 - cmp r4, 0 - beq _080934C2 - ldr r0, [r5] - ldr r1, _08093514 @ =0x0000216b - adds r0, r1 - strb r7, [r0] -_080934C2: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _0809346A - mov r2, r12 - ldr r1, [r2] - ldr r2, _0809350C @ =0x0000216a - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _080934DC - b _080935EE -_080934DC: - ldr r2, _08093518 @ =0x0000216c - adds r0, r1, r2 - movs r1, 0 - strb r1, [r0] - mov r2, r12 - ldr r0, [r2] - ldr r2, _0809351C @ =0x0000216d - adds r0, r2 - strb r1, [r0] - mov r0, r12 - ldr r1, [r0] - adds r2, 0x3 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _08093600 - .align 2, 0 -_08093500: .4byte 0x0000216e -_08093504: .4byte gPlayerParty -_08093508: .4byte 0x00002172 -_0809350C: .4byte 0x0000216a -_08093510: .4byte sPSSData -_08093514: .4byte 0x0000216b -_08093518: .4byte 0x0000216c -_0809351C: .4byte 0x0000216d -_08093520: - mov r1, r12 - ldr r0, [r1] - ldr r2, _08093538 @ =0x00002169 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - mov r1, r12 - ldr r0, [r1] - subs r2, 0x1 - adds r0, r2 - strb r3, [r0] - b _080935E0 - .align 2, 0 -_08093538: .4byte 0x00002169 -_0809353C: - movs r6, 0 - mov r7, r12 - ldr r0, _08093610 @ =0x0000ffff - mov r8, r0 -_08093544: - ldr r3, [r7] - ldr r1, _08093614 @ =0x0000216c - adds r0, r3, r1 - ldrb r0, [r0] - ldr r2, _08093618 @ =0x0000216d - adds r1, r3, r2 - ldrb r1, [r1] - adds r2, 0x5 - adds r3, r2 - movs r2, 0x51 - bl GetAndCopyBoxMonDataFromAnyBox - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _080935A0 - ldr r5, [r7] - ldr r1, _0809361C @ =0x0000216e - adds r0, r5, r1 - ldrh r2, [r0] - subs r1, 0x2 - adds r0, r5, r1 - ldrh r3, [r0] - mov r1, r8 - ands r1, r2 - mov r0, r8 - ands r0, r3 - cmp r1, r0 - beq _080935A0 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0809358E - ldr r2, _08093620 @ =0x0000216a - adds r1, r5, r2 - movs r0, 0 - strb r0, [r1] -_0809358E: - movs r0, 0x2 - ands r4, r0 - cmp r4, 0 - beq _080935A0 - ldr r0, [r7] - ldr r1, _08093624 @ =0x0000216b - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_080935A0: - ldr r2, _08093628 @ =sPSSData - ldr r1, [r2] - ldr r0, _08093618 @ =0x0000216d - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - movs r3, 0 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - mov r12, r2 - cmp r0, 0x1D - ble _080935D6 - ldr r0, [r2] - ldr r1, _08093618 @ =0x0000216d - adds r0, r1 - strb r3, [r0] - ldr r1, [r2] - ldr r2, _08093614 @ =0x0000216c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xD - bgt _08093520 -_080935D6: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x4 - bls _08093544 -_080935E0: - mov r0, r12 - ldr r1, [r0] - ldr r2, _08093620 @ =0x0000216a - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _08093600 -_080935EE: - subs r2, 0x1 - adds r0, r1, r2 - movs r1, 0x1 - strb r1, [r0] - mov r2, r12 - ldr r0, [r2] - ldr r2, _0809362C @ =0x00002168 - adds r0, r2 - strb r1, [r0] -_08093600: - movs r0, 0x1 - negs r0, r0 -_08093604: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08093610: .4byte 0x0000ffff -_08093614: .4byte 0x0000216c -_08093618: .4byte 0x0000216d -_0809361C: .4byte 0x0000216e -_08093620: .4byte 0x0000216a -_08093624: .4byte 0x0000216b -_08093628: .4byte sPSSData -_0809362C: .4byte 0x00002168 - thumb_func_end sub_8093420 - - thumb_func_start sub_8093630 -sub_8093630: @ 8093630 - push {lr} - ldr r0, _08093650 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _0809364A - ldr r0, _08093654 @ =gUnknown_20397BC - ldr r1, _08093658 @ =sPSSData - ldr r1, [r1] - ldr r2, _0809365C @ =0x000020a0 - adds r1, r2 - movs r2, 0x64 - bl memcpy -_0809364A: - pop {r0} - bx r0 - .align 2, 0 -_08093650: .4byte sIsMonBeingMoved -_08093654: .4byte gUnknown_20397BC -_08093658: .4byte sPSSData -_0809365C: .4byte 0x000020a0 - thumb_func_end sub_8093630 - - thumb_func_start sub_8093660 -sub_8093660: @ 8093660 - push {lr} - ldr r0, _08093684 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080936A8 - ldr r0, _08093688 @ =sMovingMonOrigBoxId - ldrb r0, [r0] - cmp r0, 0xE - bne _08093698 - ldr r0, _0809368C @ =sPSSData - ldr r0, [r0] - ldr r1, _08093690 @ =0x000020a0 - adds r0, r1 - ldr r1, _08093694 @ =gUnknown_20397BC - movs r2, 0x64 - bl memcpy - b _080936A8 - .align 2, 0 -_08093684: .4byte sIsMonBeingMoved -_08093688: .4byte sMovingMonOrigBoxId -_0809368C: .4byte sPSSData -_08093690: .4byte 0x000020a0 -_08093694: .4byte gUnknown_20397BC -_08093698: - ldr r0, _080936AC @ =sPSSData - ldr r0, [r0] - ldr r1, _080936B0 @ =0x000020a0 - adds r0, r1 - ldr r1, _080936B4 @ =gUnknown_20397BC - movs r2, 0x50 - bl memcpy -_080936A8: - pop {r0} - bx r0 - .align 2, 0 -_080936AC: .4byte sPSSData -_080936B0: .4byte 0x000020a0 -_080936B4: .4byte gUnknown_20397BC - thumb_func_end sub_8093660 - - thumb_func_start sub_80936B8 -sub_80936B8: @ 80936B8 - push {r4,r5,lr} - ldr r0, _080936EC @ =sIsMonBeingMoved - ldrb r5, [r0] - cmp r5, 0 - beq _08093708 - bl sub_8093630 - ldr r3, _080936F0 @ =sPSSData - ldr r1, [r3] - ldr r0, _080936F4 @ =0x0000217c - adds r2, r1, r0 - ldr r0, _080936F8 @ =gUnknown_20397BC - str r0, [r2] - ldr r2, _080936FC @ =0x00002179 - adds r1, r2 - movs r2, 0 - strb r2, [r1] - ldr r0, [r3] - ldr r4, _08093700 @ =0x00002178 - adds r0, r4 - strb r2, [r0] - ldr r0, [r3] - ldr r1, _08093704 @ =0x0000217a - adds r0, r1 - strb r2, [r0] - b _0809379A - .align 2, 0 -_080936EC: .4byte sIsMonBeingMoved -_080936F0: .4byte sPSSData -_080936F4: .4byte 0x0000217c -_080936F8: .4byte gUnknown_20397BC -_080936FC: .4byte 0x00002179 -_08093700: .4byte 0x00002178 -_08093704: .4byte 0x0000217a -_08093708: - ldr r0, _08093744 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08093764 - ldr r4, _08093748 @ =sPSSData - ldr r1, [r4] - ldr r0, _0809374C @ =0x0000217c - adds r2, r1, r0 - ldr r0, _08093750 @ =gPlayerParty - str r0, [r2] - ldr r0, _08093754 @ =sBoxCursorPosition - ldrb r0, [r0] - ldr r2, _08093758 @ =0x00002179 - adds r1, r2 - strb r0, [r1] - bl CountPartyMons - ldr r1, [r4] - subs r0, 0x1 - ldr r2, _0809375C @ =0x00002178 - adds r1, r2 - strb r0, [r1] - ldr r0, [r4] - ldr r4, _08093760 @ =0x0000217a - adds r0, r4 - strb r5, [r0] - b _0809379A - .align 2, 0 -_08093744: .4byte sBoxCursorArea -_08093748: .4byte sPSSData -_0809374C: .4byte 0x0000217c -_08093750: .4byte gPlayerParty -_08093754: .4byte sBoxCursorPosition -_08093758: .4byte 0x00002179 -_0809375C: .4byte 0x00002178 -_08093760: .4byte 0x0000217a -_08093764: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl GetBoxedMonPtr - ldr r3, _080937A0 @ =sPSSData - ldr r2, [r3] - ldr r4, _080937A4 @ =0x0000217c - adds r1, r2, r4 - str r0, [r1] - ldr r0, _080937A8 @ =sBoxCursorPosition - ldrb r0, [r0] - ldr r1, _080937AC @ =0x00002179 - adds r2, r1 - strb r0, [r2] - ldr r0, [r3] - ldr r2, _080937B0 @ =0x00002178 - adds r0, r2 - movs r1, 0x1D - strb r1, [r0] - ldr r0, [r3] - subs r4, 0x2 - adds r0, r4 - movs r1, 0x5 - strb r1, [r0] -_0809379A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080937A0: .4byte sPSSData -_080937A4: .4byte 0x0000217c -_080937A8: .4byte sBoxCursorPosition -_080937AC: .4byte 0x00002179 -_080937B0: .4byte 0x00002178 - thumb_func_end sub_80936B8 - - thumb_func_start sub_80937B4 -sub_80937B4: @ 80937B4 - push {r4,lr} - ldr r0, _080937C4 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080937C8 - bl sub_8093660 - b _080937D0 - .align 2, 0 -_080937C4: .4byte sIsMonBeingMoved -_080937C8: - ldr r4, _080937D8 @ =sBoxCursorPosition - bl GetLastViewedMonIndex - strb r0, [r4] -_080937D0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080937D8: .4byte sBoxCursorPosition - thumb_func_end sub_80937B4 - - thumb_func_start CompactPartySlots -CompactPartySlots: @ 80937DC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r7, _08093828 @ =0x0000ffff - movs r6, 0 - movs r5, 0 - movs r0, 0x64 - mov r9, r0 - ldr r1, _0809382C @ =gPlayerParty - mov r8, r1 - subs r0, 0x65 - mov r10, r0 -_080937F8: - mov r0, r9 - muls r0, r6 - mov r1, r8 - adds r4, r0, r1 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - cmp r0, 0 - beq _08093830 - cmp r6, r5 - beq _08093820 - mov r0, r9 - muls r0, r5 - add r0, r8 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy -_08093820: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - b _0809383A - .align 2, 0 -_08093828: .4byte 0x0000ffff -_0809382C: .4byte gPlayerParty -_08093830: - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, r10 - bne _0809383A - adds r7, r6, 0 -_0809383A: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080937F8 - lsls r7, 16 - cmp r5, 0x5 - bhi _08093862 - movs r6, 0x64 - ldr r4, _08093874 @ =gPlayerParty -_0809384E: - adds r0, r5, 0 - muls r0, r6 - adds r0, r4 - bl ZeroMonData - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x5 - bls _0809384E -_08093862: - asrs r0, r7, 16 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08093874: .4byte gPlayerParty - thumb_func_end CompactPartySlots - - thumb_func_start sub_8093878 -sub_8093878: @ 8093878 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - strb r0, [r1] - ldr r2, _080938A8 @ =sPSSData - ldr r1, [r2] - ldr r3, _080938AC @ =0x00000ce7 - adds r1, r3 - strb r0, [r1] - ldr r0, _080938B0 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080938B8 - ldr r0, [r2] - ldr r1, _080938B4 @ =0x000020a0 - adds r0, r1 - movs r1, 0x8 - mov r2, sp - bl SetMonData - b _080938EC - .align 2, 0 -_080938A8: .4byte sPSSData -_080938AC: .4byte 0x00000ce7 -_080938B0: .4byte sIsMonBeingMoved -_080938B4: .4byte 0x000020a0 -_080938B8: - ldr r4, _080938F4 @ =sBoxCursorArea - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x1 - bne _080938D8 - ldr r0, _080938F8 @ =sBoxCursorPosition - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080938FC @ =gPlayerParty - adds r0, r1 - movs r1, 0x8 - mov r2, sp - bl SetMonData -_080938D8: - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0 - bne _080938EC - ldr r0, _080938F8 @ =sBoxCursorPosition - ldrb r0, [r0] - movs r1, 0x8 - mov r2, sp - bl SetBoxMonDataFromSelectedBox -_080938EC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080938F4: .4byte sBoxCursorArea -_080938F8: .4byte sBoxCursorPosition -_080938FC: .4byte gPlayerParty - thumb_func_end sub_8093878 - - thumb_func_start sub_8093900 -sub_8093900: @ 8093900 - push {lr} - ldr r0, _08093928 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08093934 - ldr r0, _0809392C @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - bne _08093934 - ldr r0, _08093930 @ =sBoxCursorPosition - ldrb r0, [r0] - bl CountPartyAliveNonEggMonsExcept - lsls r0, 24 - cmp r0, 0 - bne _08093934 - movs r0, 0x1 - b _08093936 - .align 2, 0 -_08093928: .4byte sBoxCursorArea -_0809392C: .4byte sIsMonBeingMoved -_08093930: .4byte sBoxCursorPosition -_08093934: - movs r0, 0 -_08093936: - pop {r1} - bx r1 - thumb_func_end sub_8093900 - - thumb_func_start sub_809393C -sub_809393C: @ 809393C - push {lr} - ldr r0, _08093980 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08093998 - ldr r0, _08093984 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _0809397C - ldr r0, _08093988 @ =sBoxCursorPosition - ldrb r0, [r0] - bl CountPartyAliveNonEggMonsExcept - lsls r0, 24 - cmp r0, 0 - bne _0809397C - ldr r0, _0809398C @ =sPSSData - ldr r1, [r0] - ldr r2, _08093990 @ =0x00000ce9 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08093998 - ldr r2, _08093994 @ =0x000020a0 - adds r0, r1, r2 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _08093998 -_0809397C: - movs r0, 0x1 - b _0809399A - .align 2, 0 -_08093980: .4byte sIsMonBeingMoved -_08093984: .4byte sBoxCursorArea -_08093988: .4byte sBoxCursorPosition -_0809398C: .4byte sPSSData -_08093990: .4byte 0x00000ce9 -_08093994: .4byte 0x000020a0 -_08093998: - movs r0, 0 -_0809399A: - pop {r1} - bx r1 - thumb_func_end sub_809393C - - thumb_func_start sub_80939A0 -sub_80939A0: @ 80939A0 - ldr r0, _080939A8 @ =sIsMonBeingMoved - ldrb r0, [r0] - bx lr - .align 2, 0 -_080939A8: .4byte sIsMonBeingMoved - thumb_func_end sub_80939A0 - - thumb_func_start sub_80939AC -sub_80939AC: @ 80939AC - push {lr} - movs r1, 0 - ldr r0, _080939C4 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x2 - bne _080939BE - movs r1, 0x1 -_080939BE: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080939C4: .4byte sBoxCursorArea - thumb_func_end sub_80939AC - - thumb_func_start sub_80939C8 -sub_80939C8: @ 80939C8 - push {lr} - movs r1, 0 - ldr r0, _080939EC @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x3 - bne _080939E6 - ldr r0, _080939F0 @ =sBoxCursorPosition - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _080939E6 - movs r1, 0x1 -_080939E6: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080939EC: .4byte sBoxCursorArea -_080939F0: .4byte sBoxCursorPosition - thumb_func_end sub_80939C8 - - thumb_func_start sub_80939F4 -sub_80939F4: @ 80939F4 - push {lr} - movs r1, 0 - ldr r0, _08093A0C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _08093A06 - movs r1, 0x1 -_08093A06: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_08093A0C: .4byte sBoxCursorArea - thumb_func_end sub_80939F4 - - thumb_func_start sub_8093A10 -sub_8093A10: @ 8093A10 - push {r4,lr} - ldr r0, _08093A44 @ =sPSSData - ldr r1, [r0] - movs r2, 0 - ldr r3, _08093A48 @ =sIsMonBeingMoved - ldrb r0, [r3] - cmp r0, 0 - bne _08093A22 - movs r2, 0x1 -_08093A22: - ldr r4, _08093A4C @ =0x00000ce6 - adds r0, r1, r4 - strb r2, [r0] - ldrb r0, [r3] - cmp r0, 0 - bne _08093AA0 - ldr r0, _08093A50 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - beq _08093A5A - cmp r0, 0x1 - bgt _08093A54 - cmp r0, 0 - beq _08093A8A - b _08093AA0 - .align 2, 0 -_08093A44: .4byte sPSSData -_08093A48: .4byte sIsMonBeingMoved -_08093A4C: .4byte 0x00000ce6 -_08093A50: .4byte sBoxCursorArea -_08093A54: - cmp r0, 0x3 - bgt _08093AA0 - b _08093A80 -_08093A5A: - ldr r1, _08093A78 @ =sBoxCursorPosition - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r0, 0x5 - bgt _08093A80 - adds r1, r0, 0 - movs r0, 0x64 - muls r0, r1 - ldr r1, _08093A7C @ =gPlayerParty - adds r0, r1 - movs r1, 0 - bl sub_8093AD0 - b _08093AA0 - .align 2, 0 -_08093A78: .4byte sBoxCursorPosition -_08093A7C: .4byte gPlayerParty -_08093A80: - movs r0, 0 - movs r1, 0x2 - bl sub_8093AD0 - b _08093AA0 -_08093A8A: - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08093AA8 @ =sBoxCursorPosition - ldrb r1, [r1] - bl GetBoxedMonPtr - movs r1, 0x1 - bl sub_8093AD0 -_08093AA0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08093AA8: .4byte sBoxCursorPosition - thumb_func_end sub_8093A10 - - thumb_func_start sub_8093AAC -sub_8093AAC: @ 8093AAC - push {lr} - ldr r0, _08093AC0 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08093AC8 - ldr r0, _08093AC4 @ =gUnknown_20397BC - movs r1, 0 - bl sub_8093AD0 - b _08093ACC - .align 2, 0 -_08093AC0: .4byte sIsMonBeingMoved -_08093AC4: .4byte gUnknown_20397BC -_08093AC8: - bl sub_8093A10 -_08093ACC: - pop {r0} - bx r0 - thumb_func_end sub_8093AAC - - thumb_func_start sub_8093AD0 -sub_8093AD0: @ 8093AD0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r5, r1, 0 - ldr r0, _08093B38 @ =sPSSData - mov r8, r0 - ldr r1, [r0] - ldr r3, _08093B3C @ =0x00000ce2 - adds r2, r1, r3 - movs r0, 0 - strh r0, [r2] - mov r9, r0 - mov r10, r0 - cmp r5, 0 - bne _08093BEC - adds r6, r4, 0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - mov r2, r8 - ldr r1, [r2] - movs r3, 0xCE - lsls r3, 4 - adds r1, r3 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _08093B16 - b _08093D0C -_08093B16: - adds r0, r4, 0 - movs r1, 0x4 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0 - beq _08093B44 - mov r1, r8 - ldr r0, [r1] - ldr r2, _08093B40 @ =0x00000ce9 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0] - b _08093B56 - .align 2, 0 -_08093B38: .4byte sPSSData -_08093B3C: .4byte 0x00000ce2 -_08093B40: .4byte 0x00000ce9 -_08093B44: - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, r8 - ldr r1, [r3] - ldr r2, _08093BCC @ =0x00000ce9 - adds r1, r2 - strb r0, [r1] -_08093B56: - ldr r4, _08093BD0 @ =sPSSData - ldr r2, [r4] - ldr r5, _08093BD4 @ =0x00000cea - adds r2, r5 - adds r0, r6, 0 - movs r1, 0x2 - bl GetMonData - ldr r0, [r4] - adds r0, r5 - bl StringGetEnd10 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [r4] - ldr r3, _08093BD8 @ =0x00000ce8 - adds r1, r3 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x8 - bl GetMonData - ldr r1, [r4] - ldr r2, _08093BDC @ =0x00000ce7 - adds r1, r2 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0 - bl GetMonData - ldr r1, [r4] - ldr r3, _08093BE0 @ =0x00000cdc - adds r1, r3 - str r0, [r1] - adds r0, r6, 0 - bl GetMonFrontSpritePal - ldr r1, [r4] - ldr r2, _08093BE4 @ =0x00000cd8 - adds r1, r2 - str r0, [r1] - adds r0, r6, 0 - bl GetMonGender - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - adds r0, r6, 0 - movs r1, 0xC - bl GetMonData - ldr r1, [r4] - ldr r3, _08093BE8 @ =0x00000ce2 - adds r1, r3 - strh r0, [r1] - b _08093CFC - .align 2, 0 -_08093BCC: .4byte 0x00000ce9 -_08093BD0: .4byte sPSSData -_08093BD4: .4byte 0x00000cea -_08093BD8: .4byte 0x00000ce8 -_08093BDC: .4byte 0x00000ce7 -_08093BE0: .4byte 0x00000cdc -_08093BE4: .4byte 0x00000cd8 -_08093BE8: .4byte 0x00000ce2 -_08093BEC: - cmp r5, 0x1 - beq _08093BF2 - b _08093CF0 -_08093BF2: - adds r7, r4, 0 - adds r0, r7, 0 - movs r1, 0x41 - bl GetBoxMonData - mov r2, r8 - ldr r1, [r2] - movs r3, 0xCE - lsls r3, 4 - adds r1, r3 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _08093C10 - b _08093D0C -_08093C10: - adds r0, r7, 0 - movs r1, 0x1 - bl GetBoxMonData - mov r9, r0 - adds r0, r7, 0 - movs r1, 0x4 - bl GetBoxMonData - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0 - beq _08093C3C - mov r1, r8 - ldr r0, [r1] - ldr r2, _08093C38 @ =0x00000ce9 - adds r0, r2 - strb r5, [r0] - b _08093C4E - .align 2, 0 -_08093C38: .4byte 0x00000ce9 -_08093C3C: - adds r0, r7, 0 - movs r1, 0x2D - bl GetBoxMonData - mov r3, r8 - ldr r1, [r3] - ldr r2, _08093CD0 @ =0x00000ce9 - adds r1, r2 - strb r0, [r1] -_08093C4E: - ldr r5, _08093CD4 @ =sPSSData - ldr r2, [r5] - ldr r4, _08093CD8 @ =0x00000cea - adds r2, r4 - adds r0, r7, 0 - movs r1, 0x2 - bl GetBoxMonData - ldr r0, [r5] - adds r0, r4 - bl StringGetEnd10 - adds r0, r7, 0 - bl GetLevelFromBoxMonExp - ldr r1, [r5] - ldr r3, _08093CDC @ =0x00000ce8 - adds r1, r3 - strb r0, [r1] - adds r0, r7, 0 - movs r1, 0x8 - bl GetBoxMonData - ldr r1, [r5] - ldr r2, _08093CE0 @ =0x00000ce7 - adds r1, r2 - strb r0, [r1] - adds r0, r7, 0 - movs r1, 0 - bl GetBoxMonData - adds r2, r0, 0 - ldr r1, [r5] - ldr r6, _08093CE4 @ =0x00000cdc - adds r0, r1, r6 - str r2, [r0] - subs r4, 0xA - adds r1, r4 - ldrh r0, [r1] - mov r1, r9 - bl GetMonSpritePalFromSpeciesAndPersonality - ldr r1, [r5] - ldr r3, _08093CE8 @ =0x00000cd8 - adds r2, r1, r3 - str r0, [r2] - adds r4, r1, r4 - ldrh r0, [r4] - adds r1, r6 - ldr r1, [r1] - bl GetGenderFromSpeciesAndPersonality - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - adds r0, r7, 0 - movs r1, 0xC - bl GetBoxMonData - ldr r1, [r5] - ldr r2, _08093CEC @ =0x00000ce2 - adds r1, r2 - strh r0, [r1] - b _08093CFC - .align 2, 0 -_08093CD0: .4byte 0x00000ce9 -_08093CD4: .4byte sPSSData -_08093CD8: .4byte 0x00000cea -_08093CDC: .4byte 0x00000ce8 -_08093CE0: .4byte 0x00000ce7 -_08093CE4: .4byte 0x00000cdc -_08093CE8: .4byte 0x00000cd8 -_08093CEC: .4byte 0x00000ce2 -_08093CF0: - movs r3, 0xCE - lsls r3, 4 - adds r0, r1, r3 - mov r1, r9 - strh r1, [r0] - strh r1, [r2] -_08093CFC: - ldr r0, _08093D50 @ =sPSSData - ldr r1, [r0] - movs r2, 0xCE - lsls r2, 4 - adds r0, r1, r2 - ldrh r2, [r0] - cmp r2, 0 - bne _08093D68 -_08093D0C: - ldr r4, _08093D50 @ =sPSSData - ldr r0, [r4] - ldr r3, _08093D54 @ =0x00000cea - adds r0, r3 - movs r1, 0 - movs r2, 0x5 - bl StringFill - ldr r0, [r4] - ldr r1, _08093D58 @ =0x00000cf5 - adds r0, r1 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r2, _08093D5C @ =0x00000d19 - adds r0, r2 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r3, _08093D60 @ =0x00000d3d - adds r0, r3 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r1, _08093D64 @ =0x00000d61 - adds r0, r1 - b _08093DC6 - .align 2, 0 -_08093D50: .4byte sPSSData -_08093D54: .4byte 0x00000cea -_08093D58: .4byte 0x00000cf5 -_08093D5C: .4byte 0x00000d19 -_08093D60: .4byte 0x00000d3d -_08093D64: .4byte 0x00000d61 -_08093D68: - ldr r3, _08093D8C @ =0x00000ce9 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _08093DE8 - mov r0, r10 - cmp r0, 0 - beq _08093D94 - ldr r2, _08093D90 @ =0x00000cf5 - adds r0, r1, r2 - adds r3, 0x1 - adds r1, r3 - movs r2, 0 - movs r3, 0x5 - bl StringCopyPadded - b _08093DA2 - .align 2, 0 -_08093D8C: .4byte 0x00000ce9 -_08093D90: .4byte 0x00000cf5 -_08093D94: - ldr r2, _08093DD0 @ =0x00000cf5 - adds r0, r1, r2 - ldr r1, _08093DD4 @ =gText_EggNickname - movs r2, 0 - movs r3, 0x8 - bl StringCopyPadded -_08093DA2: - ldr r4, _08093DD8 @ =sPSSData - ldr r0, [r4] - ldr r3, _08093DDC @ =0x00000d19 - adds r0, r3 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r1, _08093DE0 @ =0x00000d3d - adds r0, r1 - movs r1, 0 - movs r2, 0x8 - bl StringFill - ldr r0, [r4] - ldr r2, _08093DE4 @ =0x00000d61 - adds r0, r2 -_08093DC6: - movs r1, 0 - movs r2, 0x8 - bl StringFill - b _08093F84 - .align 2, 0 -_08093DD0: .4byte 0x00000cf5 -_08093DD4: .4byte gText_EggNickname -_08093DD8: .4byte sPSSData -_08093DDC: .4byte 0x00000d19 -_08093DE0: .4byte 0x00000d3d -_08093DE4: .4byte 0x00000d61 -_08093DE8: - cmp r2, 0x1D - beq _08093DF0 - cmp r2, 0x20 - bne _08093DF4 -_08093DF0: - movs r3, 0xFF - mov r9, r3 -_08093DF4: - ldr r4, _08093E78 @ =sPSSData - ldr r1, [r4] - ldr r2, _08093E7C @ =0x00000cf5 - adds r0, r1, r2 - ldr r3, _08093E80 @ =0x00000cea - adds r1, r3 - movs r2, 0 - movs r3, 0x5 - bl StringCopyPadded - ldr r1, [r4] - ldr r0, _08093E84 @ =0x00000d19 - adds r2, r1, r0 - movs r0, 0xBA - strb r0, [r2] - ldr r3, _08093E88 @ =0x00000d1a - adds r2, r1, r3 - ldr r0, [r4] - movs r1, 0xCE - lsls r1, 4 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0xB - muls r1, r0 - ldr r0, _08093E8C @ =gSpeciesNames - adds r1, r0 - adds r0, r2, 0 - movs r2, 0 - movs r3, 0x5 - bl StringCopyPadded - ldr r4, [r4] - ldr r3, _08093E90 @ =0x00000d3d - adds r2, r4, r3 - movs r0, 0xFC - strb r0, [r2] - ldr r0, _08093E94 @ =0x00000d3e - adds r2, r4, r0 - movs r0, 0x4 - strb r0, [r2] - ldr r1, _08093E98 @ =0x00000d3f - adds r2, r4, r1 - mov r3, r9 - cmp r3, 0 - beq _08093EA4 - cmp r3, 0xFE - beq _08093ED0 - movs r0, 0x2 - strb r0, [r2] - movs r0, 0xD4 - lsls r0, 4 - adds r2, r4, r0 - movs r0, 0x1 - strb r0, [r2] - adds r1, 0x2 - adds r2, r4, r1 - movs r0, 0x3 - strb r0, [r2] - ldr r3, _08093E9C @ =0x00000d42 - adds r2, r4, r3 - movs r0, 0 - strb r0, [r2] - ldr r0, _08093EA0 @ =0x00000d43 - adds r2, r4, r0 - b _08093EF2 - .align 2, 0 -_08093E78: .4byte sPSSData -_08093E7C: .4byte 0x00000cf5 -_08093E80: .4byte 0x00000cea -_08093E84: .4byte 0x00000d19 -_08093E88: .4byte 0x00000d1a -_08093E8C: .4byte gSpeciesNames -_08093E90: .4byte 0x00000d3d -_08093E94: .4byte 0x00000d3e -_08093E98: .4byte 0x00000d3f -_08093E9C: .4byte 0x00000d42 -_08093EA0: .4byte 0x00000d43 -_08093EA4: - strb r0, [r2] - movs r1, 0xD4 - lsls r1, 4 - adds r2, r4, r1 - movs r0, 0x1 - strb r0, [r2] - ldr r3, _08093EC8 @ =0x00000d41 - adds r2, r4, r3 - movs r0, 0x5 - strb r0, [r2] - ldr r0, _08093ECC @ =0x00000d42 - adds r2, r4, r0 - movs r0, 0xB5 - strb r0, [r2] - adds r1, 0x3 - adds r2, r4, r1 - b _08093EF2 - .align 2, 0 -_08093EC8: .4byte 0x00000d41 -_08093ECC: .4byte 0x00000d42 -_08093ED0: - movs r0, 0x6 - strb r0, [r2] - movs r3, 0xD4 - lsls r3, 4 - adds r2, r4, r3 - movs r0, 0x1 - strb r0, [r2] - ldr r0, _08093F60 @ =0x00000d41 - adds r2, r4, r0 - movs r0, 0x7 - strb r0, [r2] - ldr r1, _08093F64 @ =0x00000d42 - adds r2, r4, r1 - movs r0, 0xB6 - strb r0, [r2] - adds r3, 0x3 - adds r2, r4, r3 -_08093EF2: - movs r0, 0xFC - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x4 - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x2 - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x1 - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x3 - strb r0, [r2] - adds r2, 0x1 - movs r5, 0 - strb r5, [r2] - adds r2, 0x1 - movs r0, 0xF9 - strb r0, [r2] - adds r2, 0x1 - movs r0, 0x5 - strb r0, [r2] - adds r2, 0x1 - ldr r4, _08093F68 @ =sPSSData - ldr r0, [r4] - ldr r1, _08093F6C @ =0x00000ce8 - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r2, r0, 0 - strb r5, [r2] - movs r0, 0xFF - strb r0, [r2, 0x1] - ldr r4, [r4] - ldr r2, _08093F70 @ =0x00000ce2 - adds r1, r4, r2 - ldrh r0, [r1] - cmp r0, 0 - beq _08093F78 - ldr r3, _08093F74 @ =0x00000d61 - adds r4, r3 - bl ItemId_GetName - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x8 - bl StringCopyPadded - b _08093F84 - .align 2, 0 -_08093F60: .4byte 0x00000d41 -_08093F64: .4byte 0x00000d42 -_08093F68: .4byte sPSSData -_08093F6C: .4byte 0x00000ce8 -_08093F70: .4byte 0x00000ce2 -_08093F74: .4byte 0x00000d61 -_08093F78: - ldr r1, _08093F94 @ =0x00000d61 - adds r0, r4, r1 - movs r1, 0 - movs r2, 0x8 - bl StringFill -_08093F84: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08093F94: .4byte 0x00000d61 - thumb_func_end sub_8093AD0 - - thumb_func_start sub_8093F98 -sub_8093F98: @ 8093F98 - push {lr} - ldr r0, _08093FB8 @ =sPSSData - ldr r0, [r0] - ldr r1, _08093FBC @ =0x000021ef - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08093FC0 - cmp r0, 0x1 - ble _08093FB0 - cmp r0, 0x2 - beq _08093FC6 -_08093FB0: - bl sub_8093FD4 - b _08093FCA - .align 2, 0 -_08093FB8: .4byte sPSSData -_08093FBC: .4byte 0x000021ef -_08093FC0: - bl sub_8094240 - b _08093FCA -_08093FC6: - bl sub_8094378 -_08093FCA: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8093F98 - - thumb_func_start sub_8093FD4 -sub_8093FD4: @ 8093FD4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _08094058 @ =sBoxCursorArea - ldrb r0, [r0] - mov r8, r0 - ldr r2, _0809405C @ =sBoxCursorPosition - ldrb r4, [r2] - ldr r5, _08094060 @ =sPSSData - ldr r0, [r5] - ldr r1, _08094064 @ =0x00000cce - mov r10, r1 - add r0, r10 - movs r1, 0 - strb r1, [r0] - ldr r0, [r5] - ldr r7, _08094068 @ =0x00000ccf - adds r0, r7 - strb r1, [r0] - ldr r0, [r5] - ldr r3, _0809406C @ =0x00000cd3 - mov r9, r3 - add r0, r9 - strb r1, [r0] - ldr r6, _08094070 @ =gMain - ldrh r1, [r6, 0x30] - movs r0, 0x40 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0 - beq _08094018 - b _08094208 -_08094018: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08094074 - movs r6, 0x1 - lsls r0, r4, 24 - movs r1, 0xC0 - lsls r1, 19 - adds r0, r1 - lsrs r4, r0, 24 - asrs r0, 24 - cmp r0, 0x1D - bgt _08094034 - b _08094224 -_08094034: - movs r2, 0x3 - mov r8, r2 - subs r0, 0x1E - lsls r0, 24 - asrs r0, 24 - movs r1, 0x3 - bl __divsi3 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, [r5] - add r0, r10 - strb r6, [r0] - ldr r0, [r5] - add r0, r9 - strb r6, [r0] - b _08094224 - .align 2, 0 -_08094058: .4byte sBoxCursorArea -_0809405C: .4byte sBoxCursorPosition -_08094060: .4byte sPSSData -_08094064: .4byte 0x00000cce -_08094068: .4byte 0x00000ccf -_0809406C: .4byte 0x00000cd3 -_08094070: .4byte gMain -_08094074: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080940AA - movs r6, 0x1 - movs r0, 0 - ldrsb r0, [r3, r0] - movs r1, 0x6 - bl __modsi3 - lsls r0, 24 - cmp r0, 0 - beq _08094096 - lsls r0, r4, 24 - movs r3, 0xFF - lsls r3, 24 - b _08094218 -_08094096: - ldr r0, [r5] - adds r0, r7 - movs r1, 0xFF - strb r1, [r0] - lsls r0, r4, 24 - movs r1, 0xA0 - lsls r1, 19 - adds r0, r1 - lsrs r4, r0, 24 - b _08094224 -_080940AA: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080940DE - movs r6, 0x1 - movs r0, 0 - ldrsb r0, [r3, r0] - adds r0, 0x1 - movs r1, 0x6 - bl __modsi3 - cmp r0, 0 - beq _080940D0 - lsls r0, r4, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r4, r0, 24 - b _08094224 -_080940D0: - ldr r0, [r5] - adds r0, r7 - strb r6, [r0] - lsls r0, r4, 24 - movs r3, 0xFB - lsls r3, 24 - b _08094218 -_080940DE: - ldrh r1, [r6, 0x2E] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080940EC - movs r6, 0x1 - b _0809421E -_080940EC: - movs r4, 0x1 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080941B0 - bl sub_8094924 - lsls r0, 24 - cmp r0, 0 - beq _080941B0 - ldr r0, _0809410C @ =sCanOnlyMove - ldrb r0, [r0] - cmp r0, 0 - bne _08094110 - movs r0, 0x8 - b _08094232 - .align 2, 0 -_0809410C: .4byte sCanOnlyMove -_08094110: - ldr r1, [r5] - ldrb r0, [r1, 0x1] - cmp r0, 0x2 - bne _08094120 - ldr r0, _0809413C @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0x1 - bne _080941A0 -_08094120: - movs r0, 0 - bl sub_8094E50 - subs r0, 0x1 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xE - bhi _080941B0 - lsls r0, 2 - ldr r1, _08094140 @ =_08094144 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809413C: .4byte sIsMonBeingMoved -_08094140: .4byte _08094144 - .align 2, 0 -_08094144: - .4byte _08094180 - .4byte _08094184 - .4byte _08094188 - .4byte _0809418C - .4byte _08094190 - .4byte _080941B0 - .4byte _080941B0 - .4byte _080941B0 - .4byte _080941B0 - .4byte _080941B0 - .4byte _080941B0 - .4byte _08094194 - .4byte _08094198 - .4byte _080941B0 - .4byte _0809419C -_08094180: - movs r0, 0xB - b _08094232 -_08094184: - movs r0, 0xC - b _08094232 -_08094188: - movs r0, 0xD - b _08094232 -_0809418C: - movs r0, 0xE - b _08094232 -_08094190: - movs r0, 0xF - b _08094232 -_08094194: - movs r0, 0x10 - b _08094232 -_08094198: - movs r0, 0x11 - b _08094232 -_0809419C: - movs r0, 0x12 - b _08094232 -_080941A0: - ldr r2, _080941AC @ =0x000021ef - adds r0, r1, r2 - strb r4, [r0] - movs r0, 0x14 - b _08094232 - .align 2, 0 -_080941AC: .4byte 0x000021ef -_080941B0: - ldr r2, _080941C0 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080941C4 - movs r0, 0x13 - b _08094232 - .align 2, 0 -_080941C0: .4byte gMain -_080941C4: - ldr r0, _080941E0 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _080941F2 - ldrh r1, [r2, 0x2C] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080941E4 - movs r0, 0xA - b _08094232 - .align 2, 0 -_080941E0: .4byte gSaveBlock2Ptr -_080941E4: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080941F2 - movs r0, 0x9 - b _08094232 -_080941F2: - ldrh r1, [r2, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08094204 - bl sub_8094C84 - movs r0, 0 - b _08094232 -_08094204: - movs r6, 0 - b _08094230 -_08094208: - movs r6, 0x1 - movs r0, 0 - ldrsb r0, [r2, r0] - cmp r0, 0x5 - ble _0809421E - lsls r0, r4, 24 - movs r3, 0xFA - lsls r3, 24 -_08094218: - adds r0, r3 - lsrs r4, r0, 24 - b _08094224 -_0809421E: - movs r0, 0x2 - mov r8, r0 - movs r4, 0 -_08094224: - cmp r6, 0 - beq _08094230 - mov r0, r8 - adds r1, r4, 0 - bl sub_80927E8 -_08094230: - adds r0, r6, 0 -_08094232: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8093FD4 - - thumb_func_start sub_8094240 -sub_8094240: @ 8094240 - push {r4,lr} - ldr r1, _08094270 @ =gMain - ldrh r0, [r1, 0x2C] - movs r4, 0x1 - ands r4, r0 - cmp r4, 0 - beq _080942F4 - ldrh r1, [r1, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08094278 - ldr r4, _08094274 @ =sBoxCursorPosition - movs r0, 0 - ldrsb r0, [r4, r0] - movs r1, 0x6 - bl __divsi3 - lsls r0, 24 - cmp r0, 0 - beq _080942EC - ldrb r1, [r4] - subs r1, 0x6 - b _080942DA - .align 2, 0 -_08094270: .4byte gMain -_08094274: .4byte sBoxCursorPosition -_08094278: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08094298 - ldr r1, _08094294 @ =sBoxCursorPosition - movs r0, 0 - ldrsb r0, [r1, r0] - adds r0, 0x6 - cmp r0, 0x1D - bgt _080942EC - ldrb r1, [r1] - adds r1, 0x6 - b _080942DA - .align 2, 0 -_08094294: .4byte sBoxCursorPosition -_08094298: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080942BC - ldr r4, _080942B8 @ =sBoxCursorPosition - movs r0, 0 - ldrsb r0, [r4, r0] - movs r1, 0x6 - bl __modsi3 - lsls r0, 24 - cmp r0, 0 - beq _080942EC - ldrb r1, [r4] - subs r1, 0x1 - b _080942DA - .align 2, 0 -_080942B8: .4byte sBoxCursorPosition -_080942BC: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080942F0 - ldr r4, _080942E8 @ =sBoxCursorPosition - movs r0, 0 - ldrsb r0, [r4, r0] - adds r0, 0x1 - movs r1, 0x6 - bl __modsi3 - cmp r0, 0 - beq _080942EC - ldrb r1, [r4] - adds r1, 0x1 -_080942DA: - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl sub_80927E8 - movs r0, 0x15 - b _08094364 - .align 2, 0 -_080942E8: .4byte sBoxCursorPosition -_080942EC: - movs r0, 0x18 - b _08094364 -_080942F0: - movs r0, 0 - b _08094364 -_080942F4: - bl sub_8095AA0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08094330 @ =sBoxCursorPosition - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - cmp r0, r1 - beq _08094344 - ldr r2, _08094334 @ =sIsMonBeingMoved - ldr r0, _08094338 @ =sPSSData - ldr r1, [r0] - movs r3, 0xCE - lsls r3, 4 - adds r0, r1, r3 - ldrh r0, [r0] - negs r0, r0 - lsrs r0, 31 - strb r0, [r2] - ldr r0, _0809433C @ =0x000021ef - adds r1, r0 - movs r0, 0x2 - strb r0, [r1] - bl StorageGetCurrentBox - ldr r1, _08094340 @ =sMovingMonOrigBoxId - strb r0, [r1] - movs r0, 0x17 - b _08094364 - .align 2, 0 -_08094330: .4byte sBoxCursorPosition -_08094334: .4byte sIsMonBeingMoved -_08094338: .4byte sPSSData -_0809433C: .4byte 0x000021ef -_08094340: .4byte sMovingMonOrigBoxId -_08094344: - ldr r1, _0809436C @ =sPSSData - ldr r0, [r1] - ldr r2, _08094370 @ =0x000021ef - adds r0, r2 - strb r4, [r0] - ldr r0, [r1] - ldr r3, _08094374 @ =0x00000cb4 - adds r0, r3 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - movs r0, 0x16 -_08094364: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0809436C: .4byte sPSSData -_08094370: .4byte 0x000021ef -_08094374: .4byte 0x00000cb4 - thumb_func_end sub_8094240 - - thumb_func_start sub_8094378 -sub_8094378: @ 8094378 - push {r4,lr} - ldr r2, _0809439C @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080943A4 - movs r0, 0 - bl sub_8095474 - lsls r0, 24 - cmp r0, 0 - beq _08094450 - ldr r0, _080943A0 @ =sBoxCursorPosition - ldrb r1, [r0] - subs r1, 0x6 - b _08094402 - .align 2, 0 -_0809439C: .4byte gMain -_080943A0: .4byte sBoxCursorPosition -_080943A4: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080943C4 - movs r0, 0x1 - bl sub_8095474 - lsls r0, 24 - cmp r0, 0 - beq _08094450 - ldr r0, _080943C0 @ =sBoxCursorPosition - ldrb r1, [r0] - adds r1, 0x6 - b _08094402 - .align 2, 0 -_080943C0: .4byte sBoxCursorPosition -_080943C4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080943E4 - movs r0, 0x2 - bl sub_8095474 - lsls r0, 24 - cmp r0, 0 - beq _0809446A - ldr r0, _080943E0 @ =sBoxCursorPosition - ldrb r1, [r0] - subs r1, 0x1 - b _08094402 - .align 2, 0 -_080943E0: .4byte sBoxCursorPosition -_080943E4: - movs r0, 0x10 - ands r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08094414 - movs r0, 0x3 - bl sub_8095474 - lsls r0, 24 - cmp r0, 0 - beq _0809447E - ldr r0, _08094410 @ =sBoxCursorPosition - ldrb r1, [r0] - adds r1, 0x1 -_08094402: - lsls r1, 24 - lsrs r1, 24 - movs r0, 0 - bl sub_80927E8 - movs r0, 0x19 - b _08094484 - .align 2, 0 -_08094410: .4byte sBoxCursorPosition -_08094414: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08094448 - bl sub_8095ABC - lsls r0, 24 - cmp r0, 0 - beq _08094450 - ldr r0, _0809443C @ =sIsMonBeingMoved - strb r4, [r0] - ldr r0, _08094440 @ =sPSSData - ldr r0, [r0] - ldr r1, _08094444 @ =0x000021ef - adds r0, r1 - strb r4, [r0] - movs r0, 0x1A - b _08094484 - .align 2, 0 -_0809443C: .4byte sIsMonBeingMoved -_08094440: .4byte sPSSData -_08094444: .4byte 0x000021ef -_08094448: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08094454 -_08094450: - movs r0, 0x18 - b _08094484 -_08094454: - ldr r0, _08094470 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _08094482 - ldrh r1, [r2, 0x2C] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08094474 -_0809446A: - movs r0, 0xA - b _08094484 - .align 2, 0 -_08094470: .4byte gSaveBlock2Ptr -_08094474: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _08094482 -_0809447E: - movs r0, 0x9 - b _08094484 -_08094482: - movs r0, 0 -_08094484: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8094378 - - thumb_func_start sub_809448C -sub_809448C: @ 809448C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _080944FC @ =sBoxCursorArea - ldrb r0, [r0] - mov r9, r0 - ldr r6, _08094500 @ =sBoxCursorPosition - ldrb r4, [r6] - ldr r2, _08094504 @ =sPSSData - ldr r0, [r2] - ldr r1, _08094508 @ =0x00000ccf - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldr r3, _0809450C @ =0x00000cce - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x5 - adds r0, r3 - strb r1, [r0] - mov r8, r1 - movs r7, 0 - ldr r1, _08094510 @ =gMain - ldrh r3, [r1, 0x30] - movs r0, 0x40 - ands r0, r3 - adds r5, r6, 0 - mov r12, r1 - cmp r0, 0 - beq _080944D0 - b _08094670 -_080944D0: - movs r0, 0x80 - ands r0, r3 - cmp r0, 0 - beq _08094514 - lsls r0, r4, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r4, r0, 24 - asrs r0, 24 - cmp r0, 0x6 - ble _080944EA - movs r4, 0 -_080944EA: - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0 - ldrsb r1, [r5, r1] - cmp r0, r1 - bne _080944F8 - b _0809468E -_080944F8: - movs r7, 0x1 - b _08094692 - .align 2, 0 -_080944FC: .4byte sBoxCursorArea -_08094500: .4byte sBoxCursorPosition -_08094504: .4byte sPSSData -_08094508: .4byte 0x00000ccf -_0809450C: .4byte 0x00000cce -_08094510: .4byte gMain -_08094514: - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _08094538 - ldrb r1, [r5] - movs r0, 0 - ldrsb r0, [r5, r0] - cmp r0, 0 - beq _08094538 - movs r7, 0x1 - ldr r0, [r2] - ldr r2, _08094534 @ =0x00000cd2 - adds r0, r2 - strb r1, [r0] - movs r4, 0 - b _0809468E - .align 2, 0 -_08094534: .4byte 0x00000cd2 -_08094538: - mov r3, r12 - ldrh r1, [r3, 0x30] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08094566 - movs r0, 0 - ldrsb r0, [r5, r0] - cmp r0, 0 - bne _0809455C - movs r7, 0x1 - ldr r0, [r2] - ldr r1, _08094558 @ =0x00000cd2 - adds r0, r1 - ldrb r4, [r0] - b _0809468E - .align 2, 0 -_08094558: .4byte 0x00000cd2 -_0809455C: - movs r7, 0x6 - movs r2, 0 - mov r9, r2 - movs r4, 0 - b _0809468E -_08094566: - mov r3, r12 - ldrh r1, [r3, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08094624 - movs r0, 0 - ldrsb r0, [r5, r0] - cmp r0, 0x6 - bne _0809458C - ldr r0, [r2] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - bne _08094586 - movs r0, 0x4 - b _080946A0 -_08094586: - movs r0, 0x1 - mov r8, r0 - b _08094624 -_0809458C: - bl sub_8094924 - lsls r0, 24 - cmp r0, 0 - beq _08094624 - ldr r0, _080945A4 @ =sCanOnlyMove - ldrb r0, [r0] - cmp r0, 0 - bne _080945A8 - movs r0, 0x8 - b _080946A0 - .align 2, 0 -_080945A4: .4byte sCanOnlyMove -_080945A8: - movs r0, 0 - bl sub_8094E50 - subs r0, 0x1 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0xE - bhi _08094624 - lsls r0, 2 - ldr r1, _080945C4 @ =_080945C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080945C4: .4byte _080945C8 - .align 2, 0 -_080945C8: - .4byte _08094604 - .4byte _08094608 - .4byte _0809460C - .4byte _08094610 - .4byte _08094614 - .4byte _08094624 - .4byte _08094624 - .4byte _08094624 - .4byte _08094624 - .4byte _08094624 - .4byte _08094624 - .4byte _08094618 - .4byte _0809461C - .4byte _08094624 - .4byte _08094620 -_08094604: - movs r0, 0xB - b _080946A0 -_08094608: - movs r0, 0xC - b _080946A0 -_0809460C: - movs r0, 0xD - b _080946A0 -_08094610: - movs r0, 0xE - b _080946A0 -_08094614: - movs r0, 0xF - b _080946A0 -_08094618: - movs r0, 0x10 - b _080946A0 -_0809461C: - movs r0, 0x11 - b _080946A0 -_08094620: - movs r0, 0x12 - b _080946A0 -_08094624: - ldr r2, _08094640 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x2 - ands r0, r1 - mov r12, r2 - cmp r0, 0 - beq _0809464C - ldr r0, _08094644 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - bne _08094648 - movs r0, 0x13 - b _080946A0 - .align 2, 0 -_08094640: .4byte gMain -_08094644: .4byte sPSSData -_08094648: - movs r1, 0x1 - mov r8, r1 -_0809464C: - mov r2, r8 - cmp r2, 0 - beq _0809465C - movs r7, 0x6 - movs r3, 0 - mov r9, r3 - movs r4, 0 - b _0809468E -_0809465C: - mov r0, r12 - ldrh r1, [r0, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0809468E - bl sub_8094C84 - movs r0, 0 - b _080946A0 -_08094670: - lsls r0, r4, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r4, r0, 24 - cmp r0, 0 - bge _08094680 - movs r4, 0x6 -_08094680: - lsls r0, r4, 24 - asrs r0, 24 - movs r1, 0 - ldrsb r1, [r6, r1] - cmp r0, r1 - beq _0809468E - movs r7, 0x1 -_0809468E: - cmp r7, 0 - beq _0809469E -_08094692: - cmp r7, 0x6 - beq _0809469E - mov r0, r9 - adds r1, r4, 0 - bl sub_80927E8 -_0809469E: - adds r0, r7, 0 -_080946A0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809448C - - thumb_func_start sub_80946AC -sub_80946AC: @ 80946AC - push {r4-r6,lr} - ldr r3, _080946E8 @ =sPSSData - ldr r0, [r3] - ldr r1, _080946EC @ =0x00000ccf - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r3] - ldr r2, _080946F0 @ =0x00000cce - adds r0, r2 - strb r1, [r0] - ldr r0, [r3] - ldr r5, _080946F4 @ =0x00000cd3 - adds r0, r5 - strb r1, [r0] - ldr r1, _080946F8 @ =gMain - ldrh r2, [r1, 0x30] - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - bne _08094772 - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _080946FC - movs r4, 0x1 - movs r1, 0 - movs r6, 0x2 - b _0809477E - .align 2, 0 -_080946E8: .4byte sPSSData -_080946EC: .4byte 0x00000ccf -_080946F0: .4byte 0x00000cce -_080946F4: .4byte 0x00000cd3 -_080946F8: .4byte gMain -_080946FC: - ldrh r2, [r1, 0x2C] - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _08094722 - movs r0, 0x10 - ands r0, r2 - cmp r0, 0 - bne _08094736 - ldr r0, _08094728 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - bne _0809473A - movs r0, 0x80 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0809472C -_08094722: - movs r0, 0xA - b _0809479A - .align 2, 0 -_08094728: .4byte gSaveBlock2Ptr -_0809472C: - movs r0, 0x80 - lsls r0, 1 - ands r0, r2 - cmp r0, 0 - beq _0809473A -_08094736: - movs r0, 0x9 - b _0809479A -_0809473A: - ldrh r1, [r1, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08094752 - movs r0, 0 - bl sub_80920FC - bl sub_8094900 - movs r0, 0x7 - b _0809479A -_08094752: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809475E - movs r0, 0x13 - b _0809479A -_0809475E: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0809476E - bl sub_8094C84 - movs r0, 0 - b _0809479A -_0809476E: - movs r4, 0 - b _08094798 -_08094772: - movs r4, 0x1 - movs r1, 0x3 - movs r6, 0 - ldr r0, [r3] - adds r0, r5 - strb r4, [r0] -_0809477E: - cmp r4, 0 - beq _08094798 - lsls r5, r1, 24 - cmp r1, 0x2 - beq _0809478E - movs r0, 0 - bl sub_80920FC -_0809478E: - lsrs r0, r5, 24 - lsls r1, r6, 24 - lsrs r1, 24 - bl sub_80927E8 -_08094798: - adds r0, r4, 0 -_0809479A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80946AC - - thumb_func_start sub_80947A0 -sub_80947A0: @ 80947A0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080947F0 @ =sBoxCursorArea - ldrb r0, [r0] - mov r8, r0 - ldr r0, _080947F4 @ =sBoxCursorPosition - mov r12, r0 - ldrb r2, [r0] - ldr r3, _080947F8 @ =sPSSData - ldr r0, [r3] - ldr r1, _080947FC @ =0x00000ccf - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r3] - ldr r6, _08094800 @ =0x00000cce - adds r0, r6 - strb r1, [r0] - ldr r0, [r3] - ldr r5, _08094804 @ =0x00000cd3 - adds r0, r5 - strb r1, [r0] - ldr r7, _08094808 @ =gMain - ldrh r1, [r7, 0x30] - movs r0, 0x40 - ands r0, r1 - adds r4, r3, 0 - cmp r0, 0 - bne _0809487A - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - beq _0809480C - movs r7, 0x1 - movs r0, 0x2 - mov r8, r0 - movs r2, 0 - ldr r0, [r4] - b _08094898 - .align 2, 0 -_080947F0: .4byte sBoxCursorArea -_080947F4: .4byte sBoxCursorPosition -_080947F8: .4byte sPSSData -_080947FC: .4byte 0x00000ccf -_08094800: .4byte 0x00000cce -_08094804: .4byte 0x00000cd3 -_08094808: .4byte gMain -_0809480C: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08094828 - movs r7, 0x1 - lsls r0, r2, 24 - movs r1, 0xFF - lsls r1, 24 - adds r0, r1 - lsrs r2, r0, 24 - cmp r0, 0 - bge _0809489C - movs r2, 0x1 - b _0809489C -_08094828: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08094846 - movs r7, 0x1 - lsls r0, r2, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x1 - ble _0809489C - movs r2, 0 - b _0809489C -_08094846: - ldrh r1, [r7, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809485A - movs r0, 0x4 - cmp r2, 0 - bne _080948AA - movs r0, 0x5 - b _080948AA -_0809485A: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08094866 - movs r0, 0x13 - b _080948AA -_08094866: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08094876 - bl sub_8094C84 - movs r0, 0 - b _080948AA -_08094876: - movs r7, 0 - b _080948A8 -_0809487A: - movs r7, 0x1 - movs r0, 0 - mov r8, r0 - ldr r0, [r3] - adds r0, r6 - movs r1, 0xFF - strb r1, [r0] - mov r1, r12 - movs r0, 0 - ldrsb r0, [r1, r0] - movs r2, 0x1D - cmp r0, 0 - bne _08094896 - movs r2, 0x18 -_08094896: - ldr r0, [r3] -_08094898: - adds r0, r5 - strb r7, [r0] -_0809489C: - cmp r7, 0 - beq _080948A8 - mov r0, r8 - adds r1, r2, 0 - bl sub_80927E8 -_080948A8: - adds r0, r7, 0 -_080948AA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80947A0 - - thumb_func_start sub_80948B4 -sub_80948B4: @ 80948B4 - push {r4,r5,lr} - movs r3, 0 - ldr r0, _080948E0 @ =gUnknown_83D3478 - ldr r1, [r0] - adds r4, r0, 0 - cmp r1, 0 - beq _080948F8 - ldr r5, _080948E4 @ =sBoxCursorArea -_080948C4: - lsls r0, r3, 3 - adds r2, r0, r4 - movs r1, 0x4 - ldrsb r1, [r2, r1] - movs r0, 0 - ldrsb r0, [r5, r0] - cmp r1, r0 - bne _080948E8 - ldr r0, [r2] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - b _080948FA - .align 2, 0 -_080948E0: .4byte gUnknown_83D3478 -_080948E4: .4byte sBoxCursorArea -_080948E8: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r0, r3, 3 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - bne _080948C4 -_080948F8: - movs r0, 0 -_080948FA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80948B4 - - thumb_func_start sub_8094900 -sub_8094900: @ 8094900 - push {lr} - bl sub_8094DA8 - movs r0, 0x9 - bl sub_8094DEC - movs r0, 0xA - bl sub_8094DEC - movs r0, 0xB - bl sub_8094DEC - movs r0, 0 - bl sub_8094DEC - pop {r0} - bx r0 - thumb_func_end sub_8094900 - - thumb_func_start sub_8094924 -sub_8094924: @ 8094924 - push {lr} - bl sub_8094DA8 - ldr r0, _0809493C @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _08094940 - bl sub_8094A0C - b _08094944 - .align 2, 0 -_0809493C: .4byte sPSSData -_08094940: - bl sub_809494C -_08094944: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8094924 - - thumb_func_start sub_809494C -sub_809494C: @ 809494C - push {lr} - bl sub_8092458 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _0809496C @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - beq _08094976 - cmp r0, 0x1 - bgt _08094970 - cmp r0, 0 - beq _08094982 - b _080949BC - .align 2, 0 -_0809496C: .4byte sPSSData -_08094970: - cmp r0, 0x2 - beq _0809498E - b _080949BC -_08094976: - cmp r1, 0 - beq _080949BC - movs r0, 0x1 - bl sub_8094DEC - b _080949C0 -_08094982: - cmp r1, 0 - beq _080949BC - movs r0, 0x2 - bl sub_8094DEC - b _080949C0 -_0809498E: - ldr r0, _080949A4 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _080949B0 - cmp r1, 0 - beq _080949A8 - movs r0, 0x4 - bl sub_8094DEC - b _080949C0 - .align 2, 0 -_080949A4: .4byte sIsMonBeingMoved -_080949A8: - movs r0, 0x5 - bl sub_8094DEC - b _080949C0 -_080949B0: - cmp r1, 0 - beq _080949BC - movs r0, 0x3 - bl sub_8094DEC - b _080949C0 -_080949BC: - movs r0, 0 - b _08094A06 -_080949C0: - movs r0, 0x6 - bl sub_8094DEC - ldr r0, _080949E4 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x2 - bne _080949F2 - ldr r0, _080949E8 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _080949EC - movs r0, 0x2 - bl sub_8094DEC - b _080949F2 - .align 2, 0 -_080949E4: .4byte sPSSData -_080949E8: .4byte sBoxCursorArea -_080949EC: - movs r0, 0x1 - bl sub_8094DEC -_080949F2: - movs r0, 0x8 - bl sub_8094DEC - movs r0, 0x7 - bl sub_8094DEC - movs r0, 0 - bl sub_8094DEC - movs r0, 0x1 -_08094A06: - pop {r1} - bx r1 - thumb_func_end sub_809494C - - thumb_func_start sub_8094A0C -sub_8094A0C: @ 8094A0C - push {r4,r5,lr} - ldr r4, _08094A48 @ =sPSSData - ldr r0, [r4] - movs r5, 0xCE - lsls r5, 4 - adds r0, r5 - ldrh r1, [r0] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _08094A9E - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - bne _08094A70 - ldr r2, [r4] - ldr r0, _08094A4C @ =0x00000ce2 - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08094A50 - adds r0, r2, r5 - ldrh r0, [r0] - cmp r0, 0 - beq _08094A9E - movs r0, 0xE - bl sub_8094DEC - b _08094AA8 - .align 2, 0 -_08094A48: .4byte sPSSData -_08094A4C: .4byte 0x00000ce2 -_08094A50: - ldrh r0, [r1] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - bne _08094A68 - movs r0, 0xC - bl sub_8094DEC - movs r0, 0x10 - bl sub_8094DEC -_08094A68: - movs r0, 0x11 - bl sub_8094DEC - b _08094AA8 -_08094A70: - ldr r2, [r4] - ldr r0, _08094A8C @ =0x00000ce2 - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08094A90 - adds r0, r2, r5 - ldrh r0, [r0] - cmp r0, 0 - beq _08094A9E - movs r0, 0xD - bl sub_8094DEC - b _08094AA8 - .align 2, 0 -_08094A8C: .4byte 0x00000ce2 -_08094A90: - ldrh r0, [r1] - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08094AA2 -_08094A9E: - movs r0, 0 - b _08094AB0 -_08094AA2: - movs r0, 0xF - bl sub_8094DEC -_08094AA8: - movs r0, 0 - bl sub_8094DEC - movs r0, 0x1 -_08094AB0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8094A0C - - thumb_func_start sub_8094AB8 -sub_8094AB8: @ 8094AB8 - ldr r1, _08094AD4 @ =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 r1, [r1] - ldrh r1, [r1, 0x22] - adds r1, 0x14 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_08094AD4: .4byte sPSSData - thumb_func_end sub_8094AB8 - - thumb_func_start sub_8094AD8 -sub_8094AD8: @ 8094AD8 - push {r4-r6,lr} - sub sp, 0x2C - mov r1, sp - ldr r0, _08094BA4 @ =gUnknown_83D34A0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - add r4, sp, 0x18 - adds r1, r4, 0 - ldr r0, _08094BA8 @ =gUnknown_83D34B8 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldr r0, [r0] - str r0, [r1] - mov r0, sp - bl LoadSpriteSheets - adds r0, r4, 0 - bl LoadSpritePalettes - ldr r0, _08094BAC @ =0x0000daca - bl IndexOfSpritePaletteTag - ldr r6, _08094BB0 @ =sPSSData - ldr r1, [r6] - ldr r4, _08094BB4 @ =0x00000cd4 - adds r1, r4 - strb r0, [r1] - ldr r0, _08094BB8 @ =0x0000dac7 - bl IndexOfSpritePaletteTag - ldr r1, [r6] - ldr r5, _08094BBC @ =0x00000cd5 - adds r1, r5 - strb r0, [r1] - ldr r0, _08094BC0 @ =sBoxCursorArea - ldrb r0, [r0] - ldr r1, _08094BC4 @ =sBoxCursorPosition - ldrb r1, [r1] - add r4, sp, 0x28 - mov r5, sp - adds r5, 0x2A - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_8092398 - ldr r0, _08094BC8 @ =gUnknown_83D350C - movs r2, 0 - ldrsh r1, [r4, r2] - movs r3, 0 - ldrsh r2, [r5, r3] - movs r3, 0x6 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08094BD8 - ldr r2, [r6] - movs r4, 0xCB - lsls r4, 4 - adds r3, r2, r4 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08094BCC @ =gSprites - adds r1, r0 - str r1, [r3] - ldr r0, _08094BD0 @ =sCanOnlyMove - ldr r5, _08094BB4 @ =0x00000cd4 - adds r2, r5 - ldrb r0, [r0] - adds r2, r0 - ldrb r2, [r2] - lsls r2, 4 - ldrb r3, [r1, 0x5] - movs r0, 0xF - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] - ldr r0, [r6] - adds r0, r4 - ldr r2, [r0] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x5] - ldr r0, _08094BD4 @ =sIsMonBeingMoved - ldrb r0, [r0] - cmp r0, 0 - beq _08094BE4 - ldr r0, [r6] - adds r0, r4 - ldr r0, [r0] - movs r1, 0x3 - bl StartSpriteAnim - b _08094BE4 - .align 2, 0 -_08094BA4: .4byte gUnknown_83D34A0 -_08094BA8: .4byte gUnknown_83D34B8 -_08094BAC: .4byte 0x0000daca -_08094BB0: .4byte sPSSData -_08094BB4: .4byte 0x00000cd4 -_08094BB8: .4byte 0x0000dac7 -_08094BBC: .4byte 0x00000cd5 -_08094BC0: .4byte sBoxCursorArea -_08094BC4: .4byte sBoxCursorPosition -_08094BC8: .4byte gUnknown_83D350C -_08094BCC: .4byte gSprites -_08094BD0: .4byte sCanOnlyMove -_08094BD4: .4byte sIsMonBeingMoved -_08094BD8: - ldr r0, [r6] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - movs r1, 0 - str r1, [r0] -_08094BE4: - ldr r0, _08094BF8 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _08094BFC - movs r3, 0xD - movs r4, 0x1 - b _08094C00 - .align 2, 0 -_08094BF8: .4byte sBoxCursorArea -_08094BFC: - movs r3, 0x15 - movs r4, 0x2 -_08094C00: - ldr r0, _08094C54 @ =gUnknown_83D3524 - movs r1, 0 - movs r2, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _08094C68 - ldr r5, _08094C58 @ =sPSSData - ldr r2, [r5] - ldr r3, _08094C5C @ =0x00000cb4 - adds r2, r3 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08094C60 @ =gSprites - adds r1, r0 - str r1, [r2] - lsls r3, r4, 2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldr r0, _08094C64 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _08094C74 - ldr r0, [r5] - ldr r4, _08094C5C @ =0x00000cb4 - adds r0, r4 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - b _08094C74 - .align 2, 0 -_08094C54: .4byte gUnknown_83D3524 -_08094C58: .4byte sPSSData -_08094C5C: .4byte 0x00000cb4 -_08094C60: .4byte gSprites -_08094C64: .4byte sBoxCursorArea -_08094C68: - ldr r0, _08094C7C @ =sPSSData - ldr r0, [r0] - ldr r5, _08094C80 @ =0x00000cb4 - adds r0, r5 - movs r1, 0 - str r1, [r0] -_08094C74: - add sp, 0x2C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08094C7C: .4byte sPSSData -_08094C80: .4byte 0x00000cb4 - thumb_func_end sub_8094AD8 - - thumb_func_start sub_8094C84 -sub_8094C84: @ 8094C84 - push {lr} - ldr r2, _08094CBC @ =sCanOnlyMove - movs r1, 0 - ldrb r0, [r2] - cmp r0, 0 - bne _08094C92 - movs r1, 0x1 -_08094C92: - strb r1, [r2] - ldr r0, _08094CC0 @ =sPSSData - ldr r0, [r0] - movs r3, 0xCB - lsls r3, 4 - adds r1, r0, r3 - ldr r3, [r1] - ldr r1, _08094CC4 @ =0x00000cd4 - adds r0, r1 - ldrb r2, [r2] - adds r0, r2 - ldrb r1, [r0] - lsls r1, 4 - ldrb r2, [r3, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - pop {r0} - bx r0 - .align 2, 0 -_08094CBC: .4byte sCanOnlyMove -_08094CC0: .4byte sPSSData -_08094CC4: .4byte 0x00000cd4 - thumb_func_end sub_8094C84 - - thumb_func_start sub_8094CC8 -sub_8094CC8: @ 8094CC8 - ldr r0, _08094CD0 @ =sBoxCursorPosition - ldrb r0, [r0] - bx lr - .align 2, 0 -_08094CD0: .4byte sBoxCursorPosition - thumb_func_end sub_8094CC8 - - thumb_func_start sub_8094CD4 -sub_8094CD4: @ 8094CD4 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r0, _08094D00 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _08094D08 - ldr r4, _08094D04 @ =sBoxCursorPosition - movs r0, 0 - ldrsb r0, [r4, r0] - movs r1, 0x6 - bl __modsi3 - strb r0, [r5] - movs r0, 0 - ldrsb r0, [r4, r0] - movs r1, 0x6 - bl __divsi3 - b _08094D0C - .align 2, 0 -_08094D00: .4byte sBoxCursorArea -_08094D04: .4byte sBoxCursorPosition -_08094D08: - movs r0, 0 - strb r0, [r5] -_08094D0C: - strb r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8094CD4 - - thumb_func_start sub_8094D14 -sub_8094D14: @ 8094D14 - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08094D30 @ =sPSSData - ldr r0, [r0] - movs r2, 0xCB - lsls r2, 4 - adds r0, r2 - ldr r0, [r0] - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_08094D30: .4byte sPSSData - thumb_func_end sub_8094D14 - - thumb_func_start sub_8094D34 -sub_8094D34: @ 8094D34 - ldr r0, _08094D3C @ =sMovingMonOrigBoxId - ldrb r0, [r0] - bx lr - .align 2, 0 -_08094D3C: .4byte sMovingMonOrigBoxId - thumb_func_end sub_8094D34 - - thumb_func_start sub_8094D40 -sub_8094D40: @ 8094D40 - ldr r0, _08094D5C @ =sPSSData - ldr r0, [r0] - movs r1, 0xCB - lsls r1, 4 - adds r0, r1 - ldr r2, [r0] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x5] - bx lr - .align 2, 0 -_08094D5C: .4byte sPSSData - thumb_func_end sub_8094D40 - - thumb_func_start sub_8094D60 -sub_8094D60: @ 8094D60 - push {lr} - ldr r0, _08094D7C @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _08094D78 - ldr r0, _08094D80 @ =sBoxCursorPosition - ldrb r1, [r0] - movs r0, 0 - bl sub_8095D44 -_08094D78: - pop {r0} - bx r0 - .align 2, 0 -_08094D7C: .4byte sBoxCursorArea -_08094D80: .4byte sBoxCursorPosition - thumb_func_end sub_8094D60 - - thumb_func_start sub_8094D84 -sub_8094D84: @ 8094D84 - push {lr} - ldr r0, _08094DA0 @ =sBoxCursorArea - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bne _08094D9C - ldr r0, _08094DA4 @ =sBoxCursorPosition - ldrb r1, [r0] - movs r0, 0 - bl sub_8095C84 -_08094D9C: - pop {r0} - bx r0 - .align 2, 0 -_08094DA0: .4byte sBoxCursorArea -_08094DA4: .4byte sBoxCursorPosition - thumb_func_end sub_8094D84 - - thumb_func_start sub_8094DA8 -sub_8094DA8: @ 8094DA8 - ldr r2, _08094DDC @ =sPSSData - ldr r0, [r2] - ldr r1, _08094DE0 @ =0x00000ca8 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldr r3, _08094DE4 @ =0x00000ca9 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - subs r3, 0x41 - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - ldr r1, _08094DE8 @ =0x00000c6d - adds r0, r1 - movs r1, 0xF - strb r1, [r0] - ldr r0, [r2] - adds r3, 0x6 - adds r0, r3 - movs r1, 0x5C - strh r1, [r0] - bx lr - .align 2, 0 -_08094DDC: .4byte sPSSData -_08094DE0: .4byte 0x00000ca8 -_08094DE4: .4byte 0x00000ca9 -_08094DE8: .4byte 0x00000c6d - thumb_func_end sub_8094DA8 - - thumb_func_start sub_8094DEC -sub_8094DEC: @ 8094DEC - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r4, _08094E40 @ =sPSSData - ldr r2, [r4] - ldr r5, _08094E44 @ =0x00000ca8 - adds r1, r2, r5 - ldrb r0, [r1] - cmp r0, 0x6 - bhi _08094E38 - adds r1, r0, 0 - lsls r1, 3 - movs r0, 0xC7 - lsls r0, 4 - adds r1, r0 - adds r1, r2, r1 - ldr r2, _08094E48 @ =gUnknown_83D353C - lsls r0, r3, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - str r3, [r1, 0x4] - bl StringLength - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, [r4] - ldr r2, _08094E4C @ =0x00000ca9 - adds r0, r2 - ldrb r2, [r0] - cmp r1, r2 - bls _08094E2E - strb r1, [r0] -_08094E2E: - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08094E38: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08094E40: .4byte sPSSData -_08094E44: .4byte 0x00000ca8 -_08094E48: .4byte gUnknown_83D353C -_08094E4C: .4byte 0x00000ca9 - thumb_func_end sub_8094DEC - - thumb_func_start sub_8094E50 -sub_8094E50: @ 8094E50 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08094E74 @ =sPSSData - ldr r1, [r0] - ldr r3, _08094E78 @ =0x00000ca8 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r2, r0 - bcs _08094E80 - lsls r0, r2, 3 - ldr r2, _08094E7C @ =0x00000c74 - adds r1, r2 - adds r1, r0 - movs r0, 0 - ldrsb r0, [r1, r0] - b _08094E84 - .align 2, 0 -_08094E74: .4byte sPSSData -_08094E78: .4byte 0x00000ca8 -_08094E7C: .4byte 0x00000c74 -_08094E80: - movs r0, 0x1 - negs r0, r0 -_08094E84: - pop {r1} - bx r1 - thumb_func_end sub_8094E50 - - thumb_func_start sub_8094E88 -sub_8094E88: @ 8094E88 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0xC - ldr r5, _08094F6C @ =sPSSData - ldr r1, [r5] - ldr r2, _08094F70 @ =0x00000ca9 - adds r0, r1, r2 - ldrb r0, [r0] - adds r0, 0x2 - subs r2, 0x3E - adds r1, r2 - movs r3, 0 - mov r10, r3 - strb r0, [r1] - ldr r1, [r5] - ldr r0, _08094F74 @ =0x00000ca8 - mov r8, r0 - adds r0, r1, r0 - ldrb r0, [r0] - lsls r0, 1 - ldr r3, _08094F78 @ =0x00000c6c - adds r1, r3 - strb r0, [r1] - ldr r1, [r5] - adds r2, r1, r2 - ldrb r2, [r2] - movs r0, 0x1D - subs r0, r2 - ldr r2, _08094F7C @ =0x00000c69 - adds r1, r2 - strb r0, [r1] - ldr r1, [r5] - adds r3, r1, r3 - ldrb r2, [r3] - movs r0, 0xF - subs r0, r2 - ldr r3, _08094F80 @ =0x00000c6a - adds r1, r3 - strb r0, [r1] - ldr r0, [r5] - ldr r1, _08094F84 @ =0x00000c68 - adds r0, r1 - bl AddWindow - ldr r1, [r5] - ldr r4, _08094F88 @ =0x00000cac - adds r1, r4 - movs r2, 0 - mov r9, r2 - strh r0, [r1] - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0xB - movs r3, 0xE - bl DrawStdFrameWithCustomTileAndPalette - ldr r2, [r5] - adds r0, r2, r4 - ldrb r0, [r0] - movs r6, 0x10 - str r6, [sp] - mov r3, r8 - adds r1, r2, r3 - ldrb r1, [r1] - str r1, [sp, 0x4] - movs r1, 0xC7 - lsls r1, 4 - adds r2, r1 - str r2, [sp, 0x8] - movs r1, 0x1 - movs r2, 0x8 - movs r3, 0x2 - bl PrintTextArray - ldr r1, [r5] - adds r4, r1, r4 - ldrb r0, [r4] - str r6, [sp] - add r1, r8 - ldrb r1, [r1] - str r1, [sp, 0x4] - mov r2, r10 - str r2, [sp, 0x8] - movs r1, 0x1 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r0, [r5] - ldr r3, _08094F8C @ =0x00000caa - adds r0, r3 - mov r1, r9 - strb r1, [r0] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08094F6C: .4byte sPSSData -_08094F70: .4byte 0x00000ca9 -_08094F74: .4byte 0x00000ca8 -_08094F78: .4byte 0x00000c6c -_08094F7C: .4byte 0x00000c69 -_08094F80: .4byte 0x00000c6a -_08094F84: .4byte 0x00000c68 -_08094F88: .4byte 0x00000cac -_08094F8C: .4byte 0x00000caa - thumb_func_end sub_8094E88 - - thumb_func_start sub_8094F90 -sub_8094F90: @ 8094F90 - movs r0, 0 - bx lr - thumb_func_end sub_8094F90 - - thumb_func_start sub_8094F94 -sub_8094F94: @ 8094F94 - push {r4,r5,lr} - movs r5, 0x2 - negs r5, r5 - ldr r4, _08094FD0 @ =gMain - ldrh r1, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08094FEA - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08094FB6 - movs r0, 0x5 - bl PlaySE - adds r5, 0x1 -_08094FB6: - ldrh r1, [r4, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08094FD4 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl Menu_MoveCursor - b _08094FF2 - .align 2, 0 -_08094FD0: .4byte gMain -_08094FD4: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08094FF2 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl Menu_MoveCursor - b _08094FF2 -_08094FEA: - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r5, r0, 24 -_08094FF2: - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _08094FFE - bl sub_8095024 -_08094FFE: - cmp r5, 0 - blt _08095010 - ldr r0, _0809501C @ =sPSSData - ldr r0, [r0] - lsls r1, r5, 3 - ldr r2, _08095020 @ =0x00000c74 - adds r0, r2 - adds r0, r1 - ldr r5, [r0] -_08095010: - lsls r0, r5, 16 - asrs r0, 16 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0809501C: .4byte sPSSData -_08095020: .4byte 0x00000c74 - thumb_func_end sub_8094F94 - - thumb_func_start sub_8095024 -sub_8095024: @ 8095024 - push {r4,r5,lr} - ldr r5, _08095048 @ =sPSSData - ldr r0, [r5] - ldr r4, _0809504C @ =0x00000cac - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x1 - bl ClearStdWindowAndFrameToTransparent - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl RemoveWindow - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08095048: .4byte sPSSData -_0809504C: .4byte 0x00000cac - thumb_func_end sub_8095024 - - thumb_func_start sub_8095050 -sub_8095050: @ 8095050 - push {r4,lr} - ldr r4, _08095088 @ =gUnknown_2039828 - ldr r0, _0809508C @ =0x00000974 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0809509C - ldr r0, _08095090 @ =gUnknown_83D35D4 - bl AddWindow8Bit - adds r1, r0, 0 - ldr r0, _08095094 @ =sPSSData - ldr r0, [r0] - ldr r2, _08095098 @ =0x000021f0 - adds r0, r2 - strh r1, [r0] - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, 0xFF - beq _0809509C - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x1 - b _0809509E - .align 2, 0 -_08095088: .4byte gUnknown_2039828 -_0809508C: .4byte 0x00000974 -_08095090: .4byte gUnknown_83D35D4 -_08095094: .4byte sPSSData -_08095098: .4byte 0x000021f0 -_0809509C: - movs r0, 0 -_0809509E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095050 - - thumb_func_start sub_80950A4 -sub_80950A4: @ 80950A4 - push {lr} - ldr r0, _080950B8 @ =gUnknown_2039828 - ldr r0, [r0] - cmp r0, 0 - beq _080950B2 - bl Free -_080950B2: - pop {r0} - bx r0 - .align 2, 0 -_080950B8: .4byte gUnknown_2039828 - thumb_func_end sub_80950A4 - - thumb_func_start sub_80950BC -sub_80950BC: @ 80950BC - ldr r2, _080950CC @ =gUnknown_2039828 - ldr r1, [r2] - movs r3, 0 - strb r0, [r1] - ldr r0, [r2] - strb r3, [r0, 0x1] - bx lr - .align 2, 0 -_080950CC: .4byte gUnknown_2039828 - thumb_func_end sub_80950BC - - thumb_func_start sub_80950D0 -sub_80950D0: @ 80950D0 - push {lr} - ldr r0, _080950E8 @ =gUnknown_2039828 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x5 - bhi _08095130 - lsls r0, 2 - ldr r1, _080950EC @ =_080950F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080950E8: .4byte gUnknown_2039828 -_080950EC: .4byte _080950F0 - .align 2, 0 -_080950F0: - .4byte _08095108 - .4byte _0809510E - .4byte _08095114 - .4byte _0809511A - .4byte _08095120 - .4byte _08095126 -_08095108: - bl sub_8095138 - b _0809512A -_0809510E: - bl sub_8095234 - b _0809512A -_08095114: - bl sub_80952A0 - b _0809512A -_0809511A: - bl sub_8095314 - b _0809512A -_08095120: - bl sub_8095394 - b _0809512A -_08095126: - bl sub_80953BC -_0809512A: - lsls r0, 24 - lsrs r0, 24 - b _08095132 -_08095130: - movs r0, 0 -_08095132: - pop {r1} - bx r1 - thumb_func_end sub_80950D0 - - thumb_func_start sub_8095138 -sub_8095138: @ 8095138 - push {r4-r6,lr} - sub sp, 0x8 - ldr r6, _08095150 @ =gUnknown_2039828 - ldr r1, [r6] - ldrb r0, [r1, 0x1] - cmp r0, 0x1 - beq _08095168 - cmp r0, 0x1 - bgt _08095154 - cmp r0, 0 - beq _0809515A - b _08095228 - .align 2, 0 -_08095150: .4byte gUnknown_2039828 -_08095154: - cmp r0, 0x2 - beq _08095214 - b _08095228 -_0809515A: - movs r0, 0 - bl HideBg - movs r0, 0x80 - bl LoadMonIconPalettesAt - b _080951F8 -_08095168: - adds r0, r1, 0x2 - adds r1, 0x3 - bl sub_8094CD4 - ldr r1, [r6] - ldrb r0, [r1, 0x2] - strb r0, [r1, 0x4] - ldr r1, [r6] - ldrb r0, [r1, 0x3] - strb r0, [r1, 0x5] - ldr r4, _08095204 @ =0xfffffc00 - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r5, _08095208 @ =sPSSData - ldr r0, [r5] - ldr r4, _0809520C @ =0x000021f0 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer8Bit - ldr r1, [r6] - ldrb r0, [r1, 0x2] - ldrb r1, [r1, 0x3] - bl sub_80956A4 - movs r0, 0 - movs r1, 0x4 - movs r2, 0x1 - bl SetBgAttribute - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl PutWindowTilemap - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x3 - bl CopyWindowToVram8Bit - movs r0, 0xFC - lsls r0, 6 - ldr r2, _08095210 @ =0x00007fff - movs r1, 0x8 - bl BlendPalettes - movs r0, 0x2 - bl sub_8094D14 - movs r0, 0x8 - movs r1, 0x80 - bl SetGpuRegBits -_080951F8: - ldr r1, [r6] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _08095228 - .align 2, 0 -_08095204: .4byte 0xfffffc00 -_08095208: .4byte sPSSData -_0809520C: .4byte 0x000021f0 -_08095210: .4byte 0x00007fff -_08095214: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08095228 - movs r0, 0 - bl ShowBg - movs r0, 0 - b _0809522A -_08095228: - movs r0, 0x1 -_0809522A: - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8095138 - - thumb_func_start sub_8095234 -sub_8095234: @ 8095234 - push {r4,lr} - ldr r4, _0809524C @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - beq _0809525E - cmp r0, 0x1 - bgt _08095250 - cmp r0, 0 - beq _08095256 - b _08095298 - .align 2, 0 -_0809524C: .4byte gUnknown_2039828 -_08095250: - cmp r0, 0x2 - beq _08095272 - b _08095298 -_08095256: - movs r0, 0 - bl HideBg - b _08095268 -_0809525E: - bl sub_8095A58 - movs r0, 0 - bl sub_8094D14 -_08095268: - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _08095298 -_08095272: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _08095298 - bl sub_8094D40 - movs r0, 0x3 - bl stdpal_get - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - bl ShowBg - movs r0, 0 - b _0809529A -_08095298: - movs r0, 0x1 -_0809529A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095234 - - thumb_func_start sub_80952A0 -sub_80952A0: @ 80952A0 - push {r4,lr} - ldr r4, _080952B4 @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _080952B8 - cmp r0, 0x1 - beq _08095300 - b _0809530A - .align 2, 0 -_080952B4: .4byte gUnknown_2039828 -_080952B8: - bl sub_80924A8 - lsls r0, 24 - cmp r0, 0 - bne _0809530A - ldr r1, [r4] - adds r0, r1, 0x6 - adds r1, 0x7 - bl sub_8094CD4 - bl sub_8095520 - ldr r1, [r4] - ldrb r0, [r1, 0x6] - strb r0, [r1, 0x4] - ldr r1, [r4] - ldrb r0, [r1, 0x7] - strb r0, [r1, 0x5] - ldr r0, _080952F8 @ =sPSSData - ldr r0, [r0] - ldr r1, _080952FC @ =0x000021f0 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram8Bit - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0809530A - .align 2, 0 -_080952F8: .4byte sPSSData -_080952FC: .4byte 0x000021f0 -_08095300: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - b _0809530C -_0809530A: - movs r0, 0x1 -_0809530C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80952A0 - - thumb_func_start sub_8095314 -sub_8095314: @ 8095314 - push {r4,lr} - ldr r4, _0809532C @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - beq _08095342 - cmp r0, 0x1 - bgt _08095330 - cmp r0, 0 - beq _08095336 - b _0809538C - .align 2, 0 -_0809532C: .4byte gUnknown_2039828 -_08095330: - cmp r0, 0x2 - beq _0809536E - b _0809538C -_08095336: - bl sub_80957C8 - bl sub_80958A0 - movs r0, 0 - b _08095360 -_08095342: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0809538C - movs r0, 0x3 - bl sub_8094D14 - movs r1, 0x80 - lsls r1, 1 - movs r0, 0 - movs r2, 0x8 - bl sub_8095780 - movs r0, 0x1 -_08095360: - bl sub_8092BAC - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0809538C -_0809536E: - bl sub_8095790 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8092BF8 - lsls r0, 24 - lsrs r0, 24 - cmp r4, 0 - bne _0809538C - cmp r0, 0 - bne _0809538C - movs r0, 0 - b _0809538E -_0809538C: - movs r0, 0x1 -_0809538E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095314 - - thumb_func_start sub_8095394 -sub_8095394: @ 8095394 - push {r4,lr} - bl sub_80924A8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8095790 - lsls r0, 24 - lsrs r0, 24 - cmp r4, 0 - bne _080953B4 - cmp r0, 0 - bne _080953B4 - movs r0, 0 - b _080953B6 -_080953B4: - movs r0, 0x1 -_080953B6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095394 - - thumb_func_start sub_80953BC -sub_80953BC: @ 80953BC - push {r4,lr} - ldr r4, _080953D4 @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r0, [r0, 0x1] - cmp r0, 0x1 - beq _080953FA - cmp r0, 0x1 - bgt _080953D8 - cmp r0, 0 - beq _080953E2 - b _0809546A - .align 2, 0 -_080953D4: .4byte gUnknown_2039828 -_080953D8: - cmp r0, 0x2 - beq _08095426 - cmp r0, 0x3 - beq _08095444 - b _0809546A -_080953E2: - bl sub_80959A8 - movs r1, 0xFF - lsls r1, 8 - movs r0, 0 - movs r2, 0x8 - bl sub_8095780 - movs r0, 0 - bl sub_8092BAC - b _0809543A -_080953FA: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0809546A - bl sub_8095790 - lsls r0, 24 - cmp r0, 0 - bne _0809546A - bl sub_8095918 - movs r0, 0x2 - bl sub_8094D14 - movs r0, 0x1 - bl sub_8092BAC - movs r0, 0 - bl HideBg - b _0809543A -_08095426: - bl sub_8092BF8 - lsls r0, 24 - cmp r0, 0 - bne _0809546A - movs r0, 0 - bl sub_8094D14 - bl sub_8095A58 -_0809543A: - ldr r1, [r4] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - b _0809546A -_08095444: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _0809546A - movs r0, 0x3 - bl stdpal_get - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - bl sub_8094D40 - movs r0, 0 - bl ShowBg - movs r0, 0 - b _0809546C -_0809546A: - movs r0, 0x1 -_0809546C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80953BC - - thumb_func_start sub_8095474 -sub_8095474: @ 8095474 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _080954B0 - cmp r0, 0x1 - bgt _0809548A - cmp r0, 0 - beq _08095494 - b _08095518 -_0809548A: - cmp r1, 0x2 - beq _080954D0 - cmp r1, 0x3 - beq _080954F0 - b _08095518 -_08095494: - ldr r0, _080954AC @ =gUnknown_2039828 - ldr r1, [r0] - ldrb r0, [r1, 0x9] - cmp r0, 0 - beq _080954FE - subs r0, 0x1 - strb r0, [r1, 0x9] - movs r1, 0x80 - lsls r1, 3 - movs r0, 0 - b _080954E4 - .align 2, 0 -_080954AC: .4byte gUnknown_2039828 -_080954B0: - ldr r0, _080954CC @ =gUnknown_2039828 - ldr r1, [r0] - ldrb r2, [r1, 0x9] - ldrb r0, [r1, 0xB] - adds r0, r2, r0 - cmp r0, 0x4 - bgt _080954FE - adds r0, r2, 0x1 - strb r0, [r1, 0x9] - movs r1, 0xFC - lsls r1, 8 - movs r0, 0 - b _080954E4 - .align 2, 0 -_080954CC: .4byte gUnknown_2039828 -_080954D0: - ldr r0, _080954EC @ =gUnknown_2039828 - ldr r1, [r0] - ldrb r0, [r1, 0x8] - cmp r0, 0 - beq _080954FE - subs r0, 0x1 - strb r0, [r1, 0x8] - movs r0, 0x80 - lsls r0, 3 - movs r1, 0 -_080954E4: - movs r2, 0x6 - bl sub_8095780 - b _08095518 - .align 2, 0 -_080954EC: .4byte gUnknown_2039828 -_080954F0: - ldr r0, _08095504 @ =gUnknown_2039828 - ldr r1, [r0] - ldrb r2, [r1, 0x8] - ldrb r0, [r1, 0xA] - adds r0, r2, r0 - cmp r0, 0x5 - ble _08095508 -_080954FE: - movs r0, 0 - b _0809551A - .align 2, 0 -_08095504: .4byte gUnknown_2039828 -_08095508: - adds r0, r2, 0x1 - strb r0, [r1, 0x8] - movs r0, 0xFC - lsls r0, 8 - movs r1, 0 - movs r2, 0x6 - bl sub_8095780 -_08095518: - movs r0, 0x1 -_0809551A: - pop {r1} - bx r1 - thumb_func_end sub_8095474 - - thumb_func_start sub_8095520 -sub_8095520: @ 8095520 - push {r4-r7,lr} - ldr r6, _080955C0 @ =gUnknown_2039828 - ldr r2, [r6] - ldrb r3, [r2, 0x2] - ldrb r5, [r2, 0x6] - subs r1, r3, r5 - cmp r1, 0 - bge _08095532 - negs r1, r1 -_08095532: - ldrb r0, [r2, 0x4] - subs r0, r3, r0 - cmp r0, 0 - bge _0809553C - negs r0, r0 -_0809553C: - subs r0, r1, r0 - lsls r0, 16 - lsrs r4, r0, 16 - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x7] - subs r3, r1, r0 - cmp r3, 0 - bge _0809554E - negs r3, r3 -_0809554E: - ldrb r2, [r2, 0x5] - subs r0, r1, r2 - cmp r0, 0 - bge _08095558 - negs r0, r0 -_08095558: - subs r0, r3, r0 - lsls r0, 16 - lsrs r7, r0, 16 - lsls r0, r4, 16 - asrs r4, r0, 16 - cmp r4, 0 - ble _0809556C - adds r0, r5, 0 - bl sub_80955C4 -_0809556C: - cmp r4, 0 - bge _08095588 - ldr r2, [r6] - ldrb r0, [r2, 0x4] - ldrb r1, [r2, 0x3] - ldrb r2, [r2, 0x5] - bl sub_8095634 - ldr r2, [r6] - ldrb r0, [r2, 0x6] - ldrb r1, [r2, 0x3] - ldrb r2, [r2, 0x5] - bl sub_80955C4 -_08095588: - lsls r0, r7, 16 - asrs r4, r0, 16 - cmp r4, 0 - ble _0809559C - ldr r2, [r6] - ldrb r0, [r2, 0x7] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x4] - bl sub_80955FC -_0809559C: - cmp r4, 0 - bge _080955B8 - ldr r2, [r6] - ldrb r0, [r2, 0x5] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x4] - bl sub_809566C - ldr r2, [r6] - ldrb r0, [r2, 0x7] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x4] - bl sub_80955FC -_080955B8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080955C0: .4byte gUnknown_2039828 - thumb_func_end sub_8095520 - - thumb_func_start sub_80955C4 -sub_80955C4: @ 80955C4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r4, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r5, 0 - cmp r4, r5 - bls _080955E2 - adds r4, r5, 0 - adds r5, r1, 0 - cmp r0, r5 - bhi _080955F4 -_080955E2: - adds r1, r4, 0 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - bl sub_80956A4 - cmp r4, r5 - bls _080955E2 -_080955F4: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80955C4 - - thumb_func_start sub_80955FC -sub_80955FC: @ 80955FC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r4, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r5, 0 - cmp r4, r5 - bls _0809561A - adds r4, r5, 0 - adds r5, r1, 0 - cmp r0, r5 - bhi _0809562C -_0809561A: - adds r0, r4, 0 - adds r1, r0, 0x1 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r6, 0 - bl sub_80956A4 - cmp r4, r5 - bls _0809561A -_0809562C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80955FC - - thumb_func_start sub_8095634 -sub_8095634: @ 8095634 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r4, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r5, 0 - cmp r4, r5 - bls _08095652 - adds r4, r5, 0 - adds r5, r1, 0 - cmp r0, r5 - bhi _08095664 -_08095652: - adds r1, r4, 0 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - bl sub_809572C - cmp r4, r5 - bls _08095652 -_08095664: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8095634 - - thumb_func_start sub_809566C -sub_809566C: @ 809566C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r4, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r5, 0 - cmp r4, r5 - bls _0809568A - adds r4, r5, 0 - adds r5, r1, 0 - cmp r0, r5 - bhi _0809569C -_0809568A: - adds r0, r4, 0 - adds r1, r0, 0x1 - lsls r1, 24 - lsrs r4, r1, 24 - adds r1, r6, 0 - bl sub_809572C - cmp r4, r5 - bls _0809568A -_0809569C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_809566C - - thumb_func_start sub_80956A4 -sub_80956A4: @ 80956A4 - push {r4-r7,lr} - sub sp, 0x1C - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r7, r0, r1 - lsls r4, r7, 1 - adds r4, r6, r4 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x41 - bl GetBoxMonDataFromSelectedBox - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetBoxMonDataFromSelectedBox - adds r1, r0, 0 - cmp r5, 0 - beq _0809571A - adds r0, r5, 0 - movs r2, 0x1 - bl GetMonIconPtr - adds r4, r0, 0 - adds r0, r5, 0 - bl GetValidMonIconPalIndex - adds r0, 0x8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08095724 @ =sPSSData - ldr r1, [r1] - ldr r2, _08095728 @ =0x000021f0 - adds r1, r2 - ldrb r3, [r1] - movs r2, 0x20 - str r2, [sp] - str r2, [sp, 0x4] - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 3 - str r1, [sp, 0x8] - lsls r1, r7, 3 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - str r2, [sp, 0x14] - str r0, [sp, 0x18] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl BlitBitmapRectToWindow4BitTo8Bit -_0809571A: - add sp, 0x1C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095724: .4byte sPSSData -_08095728: .4byte 0x000021f0 - thumb_func_end sub_80956A4 - - thumb_func_start sub_809572C -sub_809572C: @ 809572C - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r5, r0, r1 - lsls r0, r5, 1 - adds r0, r4, r0 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x41 - bl GetBoxMonDataFromSelectedBox - lsls r0, 16 - cmp r0, 0 - beq _0809576E - ldr r0, _08095778 @ =sPSSData - ldr r0, [r0] - ldr r1, _0809577C @ =0x000021f0 - adds r0, r1 - ldrb r0, [r0] - lsls r2, r4, 1 - adds r2, r4 - lsls r2, 3 - lsls r3, r5, 3 - movs r1, 0x20 - str r1, [sp] - str r1, [sp, 0x4] - movs r1, 0 - bl FillWindowPixelRect8Bit -_0809576E: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08095778: .4byte sPSSData -_0809577C: .4byte 0x000021f0 - thumb_func_end sub_809572C - - thumb_func_start sub_8095780 -sub_8095780: @ 8095780 - ldr r3, _0809578C @ =gUnknown_2039828 - ldr r3, [r3] - strh r0, [r3, 0xC] - strh r1, [r3, 0xE] - strh r2, [r3, 0x10] - bx lr - .align 2, 0 -_0809578C: .4byte gUnknown_2039828 - thumb_func_end sub_8095780 - - thumb_func_start sub_8095790 -sub_8095790: @ 8095790 - push {r4,lr} - ldr r4, _080957C4 @ =gUnknown_2039828 - ldr r1, [r4] - ldrh r0, [r1, 0x10] - cmp r0, 0 - beq _080957BA - ldrh r1, [r1, 0xC] - movs r0, 0 - movs r2, 0x1 - bl ChangeBgX - ldr r0, [r4] - ldrh r1, [r0, 0xE] - movs r0, 0 - movs r2, 0x1 - bl ChangeBgY - ldr r1, [r4] - ldrh r0, [r1, 0x10] - subs r0, 0x1 - strh r0, [r1, 0x10] -_080957BA: - ldr r0, [r4] - ldrb r0, [r0, 0x10] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080957C4: .4byte gUnknown_2039828 - thumb_func_end sub_8095790 - - thumb_func_start sub_80957C8 -sub_80957C8: @ 80957C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _0809589C @ =gUnknown_2039828 - ldr r1, [r4] - ldrb r0, [r1, 0x4] - ldrb r2, [r1, 0x2] - cmp r0, r2 - bls _080957E0 - adds r0, r2, 0 -_080957E0: - strb r0, [r1, 0x8] - ldr r1, [r4] - ldrb r0, [r1, 0x5] - ldrb r2, [r1, 0x3] - cmp r0, r2 - bls _080957EE - adds r0, r2, 0 -_080957EE: - strb r0, [r1, 0x9] - ldr r2, [r4] - ldrb r1, [r2, 0x2] - ldrb r0, [r2, 0x4] - subs r0, r1, r0 - cmp r0, 0 - bge _080957FE - negs r0, r0 -_080957FE: - adds r0, 0x1 - strb r0, [r2, 0xA] - ldr r2, [r4] - ldrb r1, [r2, 0x3] - ldrb r0, [r2, 0x5] - subs r0, r1, r0 - cmp r0, 0 - bge _08095810 - negs r0, r0 -_08095810: - adds r0, 0x1 - strb r0, [r2, 0xB] - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - movs r6, 0 - ldr r0, [r4] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r2, r1 - mov r8, r2 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r0, r1 - mov r9, r0 - adds r2, r1, 0 - cmp r2, r9 - bge _0809588C -_08095838: - lsls r0, r2, 1 - adds r0, r2 - ldr r3, _0809589C @ =gUnknown_2039828 - ldr r1, [r3] - lsls r0, 1 - ldrb r3, [r1, 0x8] - adds r0, r3 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r4, [r1, 0x8] - adds r7, r2, 0x1 - cmp r4, r8 - bge _08095886 - mov r0, r8 - subs r4, r0, r4 -_08095856: - mov r0, r10 - adds r1, r5, 0 - bl GetBoxedMonPtr - adds r1, r0, 0 - ldr r2, _0809589C @ =gUnknown_2039828 - ldr r0, [r2] - lsls r2, r6, 2 - adds r2, r6 - lsls r2, 4 - adds r0, r2 - adds r0, 0x14 - movs r2, 0x50 - bl memcpy - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - subs r4, 0x1 - cmp r4, 0 - bne _08095856 -_08095886: - adds r2, r7, 0 - cmp r2, r9 - blt _08095838 -_0809588C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809589C: .4byte gUnknown_2039828 - thumb_func_end sub_80957C8 - - thumb_func_start sub_80958A0 -sub_80958A0: @ 80958A0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, _08095914 @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r7, r2, r1 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r1, r0 - mov r9, r1 - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, [r4] - ldrb r2, [r0, 0x9] - cmp r2, r9 - bge _08095908 -_080958CC: - lsls r0, r2, 1 - adds r0, r2 - ldr r1, _08095914 @ =gUnknown_2039828 - ldr r1, [r1] - lsls r0, 1 - ldrb r3, [r1, 0x8] - adds r0, r3 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r4, [r1, 0x8] - adds r6, r2, 0x1 - cmp r4, r7 - bge _08095902 - subs r4, r7, r4 -_080958E8: - adds r0, r5, 0 - bl sub_809081C - mov r0, r8 - adds r1, r5, 0 - bl sub_808BCB4 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - subs r4, 0x1 - cmp r4, 0 - bne _080958E8 -_08095902: - adds r2, r6, 0 - cmp r2, r9 - blt _080958CC -_08095908: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095914: .4byte gUnknown_2039828 - thumb_func_end sub_80958A0 - - thumb_func_start sub_8095918 -sub_8095918: @ 8095918 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _080959A4 @ =gUnknown_2039828 - ldr r0, [r0] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r2, r1 - mov r8, r2 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r0, r1 - mov r10, r0 - movs r6, 0 - adds r2, r1, 0 - cmp r2, r10 - bge _08095994 -_0809593E: - lsls r0, r2, 1 - adds r0, r2 - ldr r3, _080959A4 @ =gUnknown_2039828 - ldr r1, [r3] - lsls r0, 1 - ldrb r4, [r1, 0x8] - adds r0, r4 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r4, [r1, 0x8] - adds r7, r2, 0x1 - cmp r4, r8 - bge _0809598E - mov r9, r3 - mov r0, r8 - subs r4, r0, r4 -_0809595E: - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 4 - adds r1, 0x14 - mov r2, r9 - ldr r0, [r2] - adds r0, r1 - movs r1, 0x5 - bl GetBoxMonData - cmp r0, 0 - beq _0809597C - adds r0, r5, 0 - bl sub_80901EC -_0809597C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - subs r4, 0x1 - cmp r4, 0 - bne _0809595E -_0809598E: - adds r2, r7, 0 - cmp r2, r10 - blt _0809593E -_08095994: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080959A4: .4byte gUnknown_2039828 - thumb_func_end sub_8095918 - - thumb_func_start sub_80959A8 -sub_80959A8: @ 80959A8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r4, _08095A54 @ =gUnknown_2039828 - ldr r0, [r4] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r2, r1 - mov r10, r2 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r1, r0 - str r1, [sp] - bl StorageGetCurrentBox - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r7, 0 - ldr r0, [r4] - ldrb r3, [r0, 0x9] - ldr r0, [sp] - cmp r3, r0 - bge _08095A42 -_080959DE: - lsls r0, r3, 1 - adds r0, r3 - ldr r2, _08095A54 @ =gUnknown_2039828 - ldr r1, [r2] - lsls r0, 1 - ldrb r4, [r1, 0x8] - adds r0, r4 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r5, [r1, 0x8] - adds r3, 0x1 - mov r9, r3 - cmp r5, r10 - bge _08095A3A - mov r8, r2 - mov r0, r10 - subs r5, r0, r5 -_08095A00: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 4 - adds r4, r0, 0 - adds r4, 0x14 - mov r1, r8 - ldr r0, [r1] - adds r0, r4 - movs r1, 0x5 - bl GetBoxMonData - cmp r0, 0 - beq _08095A28 - mov r0, r8 - ldr r2, [r0] - adds r2, r4 - ldr r0, [sp, 0x4] - adds r1, r6, 0 - bl CopyBoxMonFromAnyBox -_08095A28: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - subs r5, 0x1 - cmp r5, 0 - bne _08095A00 -_08095A3A: - mov r3, r9 - ldr r1, [sp] - cmp r3, r1 - blt _080959DE -_08095A42: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095A54: .4byte gUnknown_2039828 - thumb_func_end sub_80959A8 - - thumb_func_start sub_8095A58 -sub_8095A58: @ 8095A58 - push {lr} - sub sp, 0x8 - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0 - movs r1, 0x4 - movs r2, 0 - bl SetBgAttribute - movs r0, 0x8 - movs r1, 0x80 - bl ClearGpuRegBits - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_8095A58 - - thumb_func_start sub_8095AA0 -sub_8095AA0: @ 8095AA0 - ldr r0, _08095AB8 @ =gUnknown_2039828 - ldr r2, [r0] - ldrb r1, [r2, 0x3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - ldrb r2, [r2, 0x2] - adds r0, r2 - lsls r0, 24 - lsrs r0, 24 - bx lr - .align 2, 0 -_08095AB8: .4byte gUnknown_2039828 - thumb_func_end sub_8095AA0 - - thumb_func_start sub_8095ABC -sub_8095ABC: @ 8095ABC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _08095B28 @ =gUnknown_2039828 - ldr r0, [r0] - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0xA] - adds r2, r1 - mov r9, r2 - ldrb r1, [r0, 0x9] - ldrb r0, [r0, 0xB] - adds r0, r1, r0 - str r0, [sp] - movs r7, 0 - adds r6, r1, 0 - cmp r6, r0 - bge _08095B4A - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 1 - mov r8, r0 -_08095AEC: - ldr r2, _08095B28 @ =gUnknown_2039828 - ldr r1, [r2] - ldrb r0, [r1, 0x8] - add r0, r8 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r4, [r1, 0x8] - cmp r4, r9 - bge _08095B3E - mov r10, r2 -_08095B00: - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 4 - adds r1, 0x14 - mov r2, r10 - ldr r0, [r2] - adds r0, r1 - movs r1, 0x5 - bl GetBoxMonData - cmp r0, 0 - beq _08095B2C - adds r0, r5, 0 - movs r1, 0x5 - bl GetBoxMonDataFromSelectedBox - cmp r0, 0 - beq _08095B2C - movs r0, 0 - b _08095B4C - .align 2, 0 -_08095B28: .4byte gUnknown_2039828 -_08095B2C: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, 0x1 - cmp r4, r9 - blt _08095B00 -_08095B3E: - movs r0, 0x6 - add r8, r0 - adds r6, 0x1 - ldr r2, [sp] - cmp r6, r2 - blt _08095AEC -_08095B4A: - movs r0, 0x1 -_08095B4C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8095ABC - - thumb_func_start sub_8095B5C -sub_8095B5C: @ 8095B5C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r3, _08095C58 @ =sPSSData - ldr r0, [r3] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _08095C3C - ldr r0, _08095C5C @ =gUnknown_3000FE8 - str r0, [sp, 0x18] - ldr r1, _08095C60 @ =0xffff0000 - add r2, sp, 0x18 - ldr r0, [r2, 0x4] - ands r0, r1 - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - str r0, [r2, 0x4] - mov r1, sp - ldr r0, _08095C64 @ =gUnknown_83D3728 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - movs r7, 0 - mov r9, r2 - mov r8, r3 - movs r0, 0 - mov r10, r0 -_08095B9C: - adds r6, r7, 0x7 - lsls r1, r6, 16 - mov r2, r9 - ldrh r0, [r2, 0x4] - orrs r0, r1 - str r0, [r2, 0x4] - mov r0, r9 - bl LoadCompressedSpriteSheet - mov r4, r9 - ldrh r0, [r4, 0x6] - bl GetSpriteTileStartByTag - mov r5, r8 - ldr r1, [r5] - lsls r5, r7, 4 - ldr r2, _08095C68 @ =0x000021f8 - adds r1, r2 - adds r1, r5 - lsls r0, 16 - lsrs r0, 11 - ldr r4, _08095C6C @ =0x06010000 - adds r0, r4 - str r0, [r1] - ldr r0, _08095C70 @ =0xffffdacb - adds r4, r7, r0 - lsls r0, r4, 16 - lsrs r0, 16 - bl AllocSpritePalette - mov r2, r8 - ldr r1, [r2] - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08095C74 @ =0x000021fc - adds r1, r2 - strh r0, [r1] - ldrh r0, [r1] - lsls r0, 4 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2 - strh r0, [r1] - mov r0, sp - strh r6, [r0] - strh r4, [r0, 0x2] - movs r1, 0 - movs r2, 0 - movs r3, 0xB - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - mov r4, r8 - ldr r2, [r4] - ldr r6, _08095C78 @ =0x000021f4 - adds r2, r6 - adds r2, r5 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _08095C7C @ =gSprites - adds r1, r0 - str r1, [r2] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - ldr r0, [r4] - adds r0, r5 - movs r1, 0x88 - lsls r1, 6 - adds r0, r1 - mov r2, r10 - strb r2, [r0] - adds r7, 0x1 - cmp r7, 0x2 - ble _08095B9C -_08095C3C: - ldr r0, _08095C58 @ =sPSSData - ldr r0, [r0] - ldr r4, _08095C80 @ =0x00002224 - adds r0, r4 - movs r1, 0 - strh r1, [r0] - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095C58: .4byte sPSSData -_08095C5C: .4byte gUnknown_3000FE8 -_08095C60: .4byte 0xffff0000 -_08095C64: .4byte gUnknown_83D3728 -_08095C68: .4byte 0x000021f8 -_08095C6C: .4byte 0x06010000 -_08095C70: .4byte 0xffffdacb -_08095C74: .4byte 0x000021fc -_08095C78: .4byte 0x000021f4 -_08095C7C: .4byte gSprites -_08095C80: .4byte 0x00002224 - thumb_func_end sub_8095B5C - - thumb_func_start sub_8095C84 -sub_8095C84: @ 8095C84 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, _08095CB8 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _08095D36 - mov r0, r8 - adds r1, r7, 0 - bl sub_8096210 - cmp r0, 0 - bne _08095D36 - mov r0, r8 - cmp r0, 0 - beq _08095CBC - cmp r0, 0x1 - beq _08095CD2 - b _08095D36 - .align 2, 0 -_08095CB8: .4byte sPSSData -_08095CBC: - adds r0, r7, 0 - movs r1, 0x5 - bl GetBoxMonDataFromSelectedBox - cmp r0, 0 - beq _08095D36 - adds r0, r7, 0 - movs r1, 0xC - bl GetBoxMonDataFromSelectedBox - b _08095CF0 -_08095CD2: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08095D40 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x5 - bl GetMonData - cmp r0, 0 - beq _08095D36 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData -_08095CF0: - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08095D36 - adds r0, r4, 0 - bl GetItemIconPic - adds r6, r0, 0 - adds r0, r4, 0 - bl GetItemIconPalette - adds r5, r0, 0 - bl sub_80961D8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - mov r1, r8 - adds r2, r7, 0 - bl sub_80962F0 - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_8096408 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8096624 -_08095D36: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095D40: .4byte gPlayerParty - thumb_func_end sub_8095C84 - - thumb_func_start sub_8095D44 -sub_8095D44: @ 8095D44 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _08095D80 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _08095D7A - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_8096258 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0 - adds r2, r6, 0 - adds r3, r5, 0 - bl sub_80964E8 -_08095D7A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08095D80: .4byte sPSSData - thumb_func_end sub_8095D44 - - thumb_func_start sub_8095D84 -sub_8095D84: @ 8095D84 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - adds r7, r5, 0 - ldr r0, _08095DE8 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _08095E14 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_8096258 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - mov r0, sp - strh r1, [r0] - adds r0, r4, 0 - movs r1, 0x3 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0x1 - adds r2, r6, 0 - adds r3, r5, 0 - bl sub_80964E8 - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0 - bl sub_80962F0 - cmp r6, 0 - bne _08095DEC - adds r0, r5, 0 - movs r1, 0xC - mov r2, sp - bl SetBoxMonDataFromSelectedBox - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8090850 - b _08095E04 - .align 2, 0 -_08095DE8: .4byte sPSSData -_08095DEC: - movs r0, 0x64 - muls r0, r7 - ldr r1, _08095E1C @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - mov r2, sp - bl SetMonData - adds r0, r7, 0 - movs r1, 0x1 - bl sub_8090C84 -_08095E04: - ldr r0, _08095E20 @ =sPSSData - ldr r0, [r0] - ldr r2, _08095E24 @ =0x00000ce2 - adds r1, r0, r2 - ldrh r1, [r1] - ldr r2, _08095E28 @ =0x00002224 - adds r0, r2 - strh r1, [r0] -_08095E14: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095E1C: .4byte gPlayerParty -_08095E20: .4byte sPSSData -_08095E24: .4byte 0x00000ce2 -_08095E28: .4byte 0x00002224 - thumb_func_end sub_8095D84 - - thumb_func_start sub_8095E2C -sub_8095E2C: @ 8095E2C - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r5, 0 - bl GetItemIconPic - mov r8, r0 - adds r0, r5, 0 - bl GetItemIconPalette - adds r6, r0, 0 - bl sub_80961D8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - mov r1, r8 - adds r2, r6, 0 - bl sub_8096408 - adds r0, r4, 0 - movs r1, 0x6 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - movs r3, 0 - bl sub_80964E8 - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0 - bl sub_80962F0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8096624 - ldr r0, _08095E98 @ =sPSSData - ldr r0, [r0] - ldr r1, _08095E9C @ =0x00002224 - adds r0, r1 - strh r5, [r0] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08095E98: .4byte sPSSData -_08095E9C: .4byte 0x00002224 - thumb_func_end sub_8095E2C - - thumb_func_start sub_8095EA0 -sub_8095EA0: @ 8095EA0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, _08095F08 @ =sPSSData - mov r8, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _08095F5E - mov r0, r9 - adds r1, r7, 0 - bl sub_8096258 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0x3 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0x3 - movs r2, 0x2 - movs r3, 0 - bl sub_80964E8 - mov r1, r9 - cmp r1, 0 - bne _08095F10 - adds r0, r7, 0 - movs r1, 0xC - bl GetBoxMonDataFromSelectedBox - lsls r0, 16 - lsrs r6, r0, 16 - mov r0, r8 - ldr r2, [r0] - ldr r4, _08095F0C @ =0x00002224 - adds r2, r4 - adds r0, r7, 0 - movs r1, 0xC - bl SetBoxMonDataFromSelectedBox - mov r1, r8 - ldr r0, [r1] - adds r0, r4 - b _08095F3C - .align 2, 0 -_08095F08: .4byte sPSSData -_08095F0C: .4byte 0x00002224 -_08095F10: - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _08095F6C @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - mov r0, r8 - ldr r2, [r0] - ldr r5, _08095F70 @ =0x00002224 - adds r2, r5 - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - mov r1, r8 - ldr r0, [r1] - adds r0, r5 -_08095F3C: - strh r6, [r0] - movs r0, 0x2 - movs r1, 0 - bl sub_8096258 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0x4 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0x4 - mov r2, r9 - adds r3, r7, 0 - bl sub_80964E8 -_08095F5E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08095F6C: .4byte gPlayerParty -_08095F70: .4byte 0x00002224 - thumb_func_end sub_8095EA0 - - thumb_func_start sub_8095F74 -sub_8095F74: @ 8095F74 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - mov r8, r5 - ldr r6, _08095FCC @ =sPSSData - ldr r0, [r6] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _08095FF4 - movs r0, 0x2 - movs r1, 0 - bl sub_8096258 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x4 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0x2 - adds r2, r7, 0 - adds r3, r5, 0 - bl sub_80964E8 - cmp r7, 0 - bne _08095FD4 - ldr r2, [r6] - ldr r0, _08095FD0 @ =0x00002224 - adds r2, r0 - adds r0, r5, 0 - movs r1, 0xC - bl SetBoxMonDataFromSelectedBox - adds r0, r5, 0 - movs r1, 0 - bl sub_8090850 - b _08095FF4 - .align 2, 0 -_08095FCC: .4byte sPSSData -_08095FD0: .4byte 0x00002224 -_08095FD4: - movs r0, 0x64 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r1, _08096000 @ =gPlayerParty - adds r0, r1 - ldr r2, [r6] - ldr r1, _08096004 @ =0x00002224 - adds r2, r1 - movs r1, 0xC - bl SetMonData - mov r0, r8 - movs r1, 0 - bl sub_8090C84 -_08095FF4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096000: .4byte gPlayerParty -_08096004: .4byte 0x00002224 - thumb_func_end sub_8095F74 - - thumb_func_start sub_8096008 -sub_8096008: @ 8096008 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - adds r7, r5, 0 - ldr r0, _08096060 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _0809607C - movs r1, 0 - mov r0, sp - strh r1, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_8096258 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0 - adds r2, r6, 0 - adds r3, r5, 0 - bl sub_80964E8 - cmp r6, 0 - bne _08096064 - adds r0, r5, 0 - movs r1, 0xC - mov r2, sp - bl SetBoxMonDataFromSelectedBox - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8090850 - b _0809607C - .align 2, 0 -_08096060: .4byte sPSSData -_08096064: - movs r0, 0x64 - muls r0, r7 - ldr r1, _08096084 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - mov r2, sp - bl SetMonData - adds r0, r7, 0 - movs r1, 0x1 - bl sub_8090C84 -_0809607C: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096084: .4byte gPlayerParty - thumb_func_end sub_8096008 - - thumb_func_start sub_8096088 -sub_8096088: @ 8096088 - push {r4,lr} - ldr r0, _080960BC @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _080960B6 - movs r0, 0x2 - movs r1, 0 - bl sub_8096258 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x5 - bl sub_80964B8 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0 - bl sub_80964E8 -_080960B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080960BC: .4byte sPSSData - thumb_func_end sub_8096088 - - thumb_func_start sub_80960C0 -sub_80960C0: @ 80960C0 - push {r4,lr} - ldr r0, _08096108 @ =sPSSData - ldr r0, [r0] - ldrb r0, [r0, 0x1] - cmp r0, 0x3 - bne _08096100 - movs r4, 0 -_080960CE: - ldr r0, _08096108 @ =sPSSData - ldr r1, [r0] - lsls r0, r4, 4 - adds r1, r0 - movs r2, 0x88 - lsls r2, 6 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080960FA - subs r2, 0x2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080960FA - lsls r0, r4, 24 - lsrs r0, 24 - movs r1, 0x7 - movs r2, 0x2 - movs r3, 0 - bl sub_80964E8 -_080960FA: - adds r4, 0x1 - cmp r4, 0x2 - ble _080960CE -_08096100: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08096108: .4byte sPSSData - thumb_func_end sub_80960C0 - - thumb_func_start sub_809610C -sub_809610C: @ 809610C - push {r4,r5,lr} - movs r5, 0 - ldr r0, _08096148 @ =sPSSData - ldr r0, [r0] - ldr r1, _0809614C @ =0x000021f4 - adds r4, r0, r1 - adds r3, r0, 0 -_0809611A: - movs r1, 0x88 - lsls r1, 6 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08096158 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x28 - ands r0, r1 - cmp r0, 0x8 - beq _08096144 - ldr r1, [r2, 0x1C] - ldr r0, _08096150 @ =SpriteCallbackDummy - cmp r1, r0 - beq _08096158 - ldr r0, _08096154 @ =sub_80969BC - cmp r1, r0 - beq _08096158 -_08096144: - movs r0, 0x1 - b _08096164 - .align 2, 0 -_08096148: .4byte sPSSData -_0809614C: .4byte 0x000021f4 -_08096150: .4byte SpriteCallbackDummy -_08096154: .4byte sub_80969BC -_08096158: - adds r4, 0x10 - adds r3, 0x10 - adds r5, 0x1 - cmp r5, 0x2 - ble _0809611A - movs r0, 0 -_08096164: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809610C - - thumb_func_start sub_809616C -sub_809616C: @ 809616C - push {lr} - ldr r0, _08096190 @ =sPSSData - ldr r1, [r0] - ldrb r0, [r1, 0x1] - cmp r0, 0x3 - bne _080961A0 - movs r2, 0 - ldr r0, _08096194 @ =0x000021fe - adds r1, r0 -_0809617E: - ldrb r0, [r1, 0x2] - cmp r0, 0 - beq _08096198 - ldrb r0, [r1] - cmp r0, 0x2 - bne _08096198 - movs r0, 0x1 - b _080961A2 - .align 2, 0 -_08096190: .4byte sPSSData -_08096194: .4byte 0x000021fe -_08096198: - adds r1, 0x10 - adds r2, 0x1 - cmp r2, 0x2 - ble _0809617E -_080961A0: - movs r0, 0 -_080961A2: - pop {r1} - bx r1 - thumb_func_end sub_809616C - - thumb_func_start sub_80961A8 -sub_80961A8: @ 80961A8 - push {lr} - ldr r0, _080961BC @ =sPSSData - ldr r0, [r0] - ldr r1, _080961C0 @ =0x00002224 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetName - pop {r1} - bx r1 - .align 2, 0 -_080961BC: .4byte sPSSData -_080961C0: .4byte 0x00002224 - thumb_func_end sub_80961A8 - - thumb_func_start sub_80961C4 -sub_80961C4: @ 80961C4 - ldr r0, _080961D0 @ =sPSSData - ldr r0, [r0] - ldr r1, _080961D4 @ =0x00002224 - adds r0, r1 - ldrh r0, [r0] - bx lr - .align 2, 0 -_080961D0: .4byte sPSSData -_080961D4: .4byte 0x00002224 - thumb_func_end sub_80961C4 - - thumb_func_start sub_80961D8 -sub_80961D8: @ 80961D8 - push {r4,r5,lr} - movs r2, 0 - ldr r5, _080961F8 @ =sPSSData - movs r3, 0x88 - lsls r3, 6 - movs r4, 0x1 -_080961E4: - ldr r0, [r5] - lsls r1, r2, 4 - adds r0, r1 - adds r1, r0, r3 - ldrb r0, [r1] - cmp r0, 0 - bne _080961FC - strb r4, [r1] - adds r0, r2, 0 - b _08096208 - .align 2, 0 -_080961F8: .4byte sPSSData -_080961FC: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _080961E4 - movs r0, 0x3 -_08096208: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80961D8 - - thumb_func_start sub_8096210 -sub_8096210: @ 8096210 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r3, 0 - ldr r0, _08096244 @ =sPSSData - ldr r2, [r0] -_08096220: - movs r5, 0x88 - lsls r5, 6 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0 - beq _08096248 - subs r5, 0x2 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, r4 - bne _08096248 - adds r5, 0x1 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, r1 - bne _08096248 - movs r0, 0x1 - b _08096252 - .align 2, 0 -_08096244: .4byte sPSSData -_08096248: - adds r2, 0x10 - adds r3, 0x1 - cmp r3, 0x2 - ble _08096220 - movs r0, 0 -_08096252: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8096210 - - thumb_func_start sub_8096258 -sub_8096258: @ 8096258 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - movs r3, 0 - ldr r0, _08096290 @ =sPSSData - ldr r1, [r0] -_08096268: - lsls r0, r3, 4 - adds r2, r1, r0 - movs r6, 0x88 - lsls r6, 6 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _08096294 - subs r6, 0x2 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, r5 - bne _08096294 - adds r6, 0x1 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, r4 - bne _08096294 - adds r0, r3, 0 - b _080962A0 - .align 2, 0 -_08096290: .4byte sPSSData -_08096294: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x2 - bls _08096268 - movs r0, 0x3 -_080962A0: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8096258 - - thumb_func_start sub_80962A8 -sub_80962A8: @ 80962A8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r2, 0 - ldr r0, _080962D4 @ =sPSSData - ldr r3, [r0] - ldr r0, _080962D8 @ =0x000021f4 - adds r4, r3, r0 - movs r6, 0x88 - lsls r6, 6 -_080962BA: - lsls r1, r2, 4 - adds r0, r3, r1 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _080962DC - adds r0, r4, r1 - ldr r0, [r0] - cmp r0, r5 - bne _080962DC - adds r0, r2, 0 - b _080962E8 - .align 2, 0 -_080962D4: .4byte sPSSData -_080962D8: .4byte 0x000021f4 -_080962DC: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _080962BA - movs r0, 0x3 -_080962E8: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80962A8 - - thumb_func_start sub_80962F0 -sub_80962F0: @ 80962F0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r7, r2, 24 - cmp r5, 0x2 - bhi _080963EE - cmp r1, 0 - beq _0809631C - cmp r1, 0x1 - beq _08096378 - ldr r4, _08096318 @ =sPSSData - lsls r3, r5, 4 - b _080963D8 - .align 2, 0 -_08096318: .4byte sPSSData -_0809631C: - adds r0, r7, 0 - movs r1, 0x6 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - ldr r6, _08096370 @ =sPSSData - ldr r2, [r6] - lsls r5, 4 - ldr r1, _08096374 @ =0x000021f4 - adds r2, r1 - adds r2, r5 - ldr r3, [r2] - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 3 - adds r1, 0x70 - strh r1, [r3, 0x20] - ldr r3, [r2] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, 0x38 - strh r1, [r3, 0x22] - ldr r2, [r2] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2, 0x5] - adds r4, r6, 0 - adds r3, r5, 0 - b _080963D8 - .align 2, 0 -_08096370: .4byte sPSSData -_08096374: .4byte 0x000021f4 -_08096378: - cmp r7, 0 - bne _080963A0 - ldr r4, _08096398 @ =sPSSData - ldr r0, [r4] - lsls r3, r5, 4 - ldr r1, _0809639C @ =0x000021f4 - adds r0, r1 - adds r0, r3 - ldr r2, [r0] - movs r1, 0x74 - strh r1, [r2, 0x20] - ldr r1, [r0] - movs r0, 0x4C - strh r0, [r1, 0x22] - b _080963C0 - .align 2, 0 -_08096398: .4byte sPSSData -_0809639C: .4byte 0x000021f4 -_080963A0: - ldr r4, _080963F8 @ =sPSSData - ldr r0, [r4] - lsls r3, r5, 4 - ldr r1, _080963FC @ =0x000021f4 - adds r0, r1 - adds r0, r3 - ldr r2, [r0] - movs r1, 0xA4 - strh r1, [r2, 0x20] - ldr r2, [r0] - subs r1, r7, 0x1 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, 0x1C - strh r0, [r2, 0x22] -_080963C0: - ldr r0, [r4] - ldr r1, _080963FC @ =0x000021f4 - adds r0, r1 - adds r0, r3 - ldr r2, [r0] - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2, 0x5] -_080963D8: - ldr r0, [r4] - adds r0, r3 - ldr r1, _08096400 @ =0x000021fe - adds r0, r1 - mov r1, r8 - strb r1, [r0] - ldr r0, [r4] - adds r0, r3 - ldr r1, _08096404 @ =0x000021ff - adds r0, r1 - strb r7, [r0] -_080963EE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080963F8: .4byte sPSSData -_080963FC: .4byte 0x000021f4 -_08096400: .4byte 0x000021fe -_08096404: .4byte 0x000021ff - thumb_func_end sub_80962F0 - - thumb_func_start sub_8096408 -sub_8096408: @ 8096408 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - mov r8, r1 - mov r9, r2 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x2 - bhi _08096490 - movs r0, 0 - str r0, [sp] - ldr r4, _080964A0 @ =sPSSData - ldr r1, [r4] - ldr r6, _080964A4 @ =0x000042bc - adds r1, r6 - ldr r2, _080964A8 @ =0x01000080 - mov r0, sp - bl CpuFastSet - ldr r1, [r4] - ldr r5, _080964AC @ =0x000022bc - adds r1, r5 - mov r0, r8 - bl LZ77UnCompWram - lsls r7, 4 - mov r8, r7 - adds r7, r4, 0 - movs r4, 0x2 -_08096446: - ldr r1, [r7] - adds r0, r1, r5 - adds r1, r6 - movs r2, 0x18 - bl CpuFastSet - adds r6, 0x80 - adds r5, 0x60 - subs r4, 0x1 - cmp r4, 0 - bge _08096446 - ldr r5, _080964A0 @ =sPSSData - ldr r1, [r5] - ldr r4, _080964A4 @ =0x000042bc - adds r0, r1, r4 - ldr r2, _080964B0 @ =0x000021f8 - adds r1, r2 - add r1, r8 - ldr r1, [r1] - movs r2, 0x80 - bl CpuFastSet - ldr r1, [r5] - adds r1, r4 - mov r0, r9 - bl LZ77UnCompWram - ldr r0, [r5] - adds r4, r0, r4 - add r0, r8 - ldr r1, _080964B4 @ =0x000021fc - adds r0, r1 - ldrh r1, [r0] - adds r0, r4, 0 - movs r2, 0x20 - bl LoadPalette -_08096490: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080964A0: .4byte sPSSData -_080964A4: .4byte 0x000042bc -_080964A8: .4byte 0x01000080 -_080964AC: .4byte 0x000022bc -_080964B0: .4byte 0x000021f8 -_080964B4: .4byte 0x000021fc - thumb_func_end sub_8096408 - - thumb_func_start sub_80964B8 -sub_80964B8: @ 80964B8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - cmp r2, 0x2 - bhi _080964DA - ldr r0, _080964E0 @ =sPSSData - ldr r0, [r0] - lsls r1, r2, 4 - ldr r2, _080964E4 @ =0x000021f4 - adds r0, r2 - adds r0, r1 - ldr r0, [r0] - adds r1, r3, 0 - bl StartSpriteAffineAnim -_080964DA: - pop {r0} - bx r0 - .align 2, 0 -_080964E0: .4byte sPSSData -_080964E4: .4byte 0x000021f4 - thumb_func_end sub_80964B8 - - thumb_func_start sub_80964E8 -sub_80964E8: @ 80964E8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r0, r1, 24 - lsls r2, 24 - lsrs r5, r2, 24 - lsls r3, 24 - lsrs r3, 24 - cmp r4, 0x2 - bls _08096500 - b _08096612 -_08096500: - cmp r0, 0x7 - bls _08096506 - b _08096612 -_08096506: - lsls r0, 2 - ldr r1, _08096510 @ =_08096514 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08096510: .4byte _08096514 - .align 2, 0 -_08096514: - .4byte _08096534 - .4byte _08096558 - .4byte _0809657C - .4byte _080965A8 - .4byte _080965D4 - .4byte _08096612 - .4byte _08096612 - .4byte _08096600 -_08096534: - ldr r0, _0809654C @ =sPSSData - ldr r0, [r0] - lsls r1, r4, 4 - ldr r2, _08096550 @ =0x000021f4 - adds r0, r2 - adds r0, r1 - ldr r1, [r0] - strh r4, [r1, 0x2E] - ldr r1, [r0] - ldr r0, _08096554 @ =sub_809692C - b _08096610 - .align 2, 0 -_0809654C: .4byte sPSSData -_08096550: .4byte 0x000021f4 -_08096554: .4byte sub_809692C -_08096558: - ldr r0, _08096570 @ =sPSSData - ldr r0, [r0] - lsls r1, r4, 4 - ldr r2, _08096574 @ =0x000021f4 - adds r0, r2 - adds r0, r1 - ldr r2, [r0] - movs r1, 0 - strh r1, [r2, 0x2E] - ldr r1, [r0] - ldr r0, _08096578 @ =sub_8096958 - b _08096610 - .align 2, 0 -_08096570: .4byte sPSSData -_08096574: .4byte 0x000021f4 -_08096578: .4byte sub_8096958 -_0809657C: - ldr r0, _0809659C @ =sPSSData - ldr r0, [r0] - lsls r1, r4, 4 - ldr r2, _080965A0 @ =0x000021f4 - adds r0, r2 - adds r0, r1 - ldr r2, [r0] - movs r1, 0 - strh r1, [r2, 0x2E] - ldr r1, [r0] - strh r5, [r1, 0x3A] - ldr r1, [r0] - strh r3, [r1, 0x3C] - ldr r1, [r0] - ldr r0, _080965A4 @ =sub_80969F4 - b _08096610 - .align 2, 0 -_0809659C: .4byte sPSSData -_080965A0: .4byte 0x000021f4 -_080965A4: .4byte sub_80969F4 -_080965A8: - ldr r0, _080965C8 @ =sPSSData - ldr r0, [r0] - lsls r1, r4, 4 - ldr r2, _080965CC @ =0x000021f4 - adds r0, r2 - adds r0, r1 - ldr r2, [r0] - movs r1, 0 - strh r1, [r2, 0x2E] - ldr r2, [r0] - ldr r1, _080965D0 @ =sub_8096A74 - str r1, [r2, 0x1C] - strh r5, [r2, 0x3A] - ldr r0, [r0] - strh r3, [r0, 0x3C] - b _08096612 - .align 2, 0 -_080965C8: .4byte sPSSData -_080965CC: .4byte 0x000021f4 -_080965D0: .4byte sub_8096A74 -_080965D4: - ldr r0, _080965F4 @ =sPSSData - ldr r0, [r0] - lsls r1, r4, 4 - ldr r2, _080965F8 @ =0x000021f4 - adds r0, r2 - adds r0, r1 - ldr r2, [r0] - movs r1, 0 - strh r1, [r2, 0x2E] - ldr r1, [r0] - strh r5, [r1, 0x3A] - ldr r1, [r0] - strh r3, [r1, 0x3C] - ldr r1, [r0] - ldr r0, _080965FC @ =sub_8096B10 - b _08096610 - .align 2, 0 -_080965F4: .4byte sPSSData -_080965F8: .4byte 0x000021f4 -_080965FC: .4byte sub_8096B10 -_08096600: - ldr r0, _08096618 @ =sPSSData - ldr r0, [r0] - lsls r1, r4, 4 - ldr r2, _0809661C @ =0x000021f4 - adds r0, r2 - adds r0, r1 - ldr r1, [r0] - ldr r0, _08096620 @ =sub_8096BAC -_08096610: - str r0, [r1, 0x1C] -_08096612: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08096618: .4byte sPSSData -_0809661C: .4byte 0x000021f4 -_08096620: .4byte sub_8096BAC - thumb_func_end sub_80964E8 - - thumb_func_start sub_8096624 -sub_8096624: @ 8096624 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - cmp r2, 0x2 - bhi _08096666 - ldr r1, _0809666C @ =sPSSData - ldr r0, [r1] - lsls r2, 4 - adds r0, r2 - movs r3, 0x88 - lsls r3, 6 - adds r0, r3 - strb r4, [r0] - ldr r0, [r1] - ldr r1, _08096670 @ =0x000021f4 - adds r0, r1 - adds r0, r2 - ldr r0, [r0] - movs r3, 0 - cmp r4, 0 - bne _08096654 - movs r3, 0x1 -_08096654: - adds r2, r0, 0 - adds r2, 0x3E - lsls r3, 2 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] -_08096666: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809666C: .4byte sPSSData -_08096670: .4byte 0x000021f4 - thumb_func_end sub_8096624 - - thumb_func_start GetItemIconPic -GetItemIconPic: @ 8096674 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - bl GetItemIconGfxPtr - pop {r1} - bx r1 - thumb_func_end GetItemIconPic - - thumb_func_start GetItemIconPalette -GetItemIconPalette: @ 8096684 - push {lr} - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetItemIconGfxPtr - pop {r1} - bx r1 - thumb_func_end GetItemIconPalette - - thumb_func_start sub_8096694 -sub_8096694: @ 8096694 - push {r4,lr} - sub sp, 0x14 - bl sub_809616C - lsls r0, 24 - cmp r0, 0 - beq _080966B4 - ldr r0, _080966AC @ =sPSSData - ldr r0, [r0] - ldr r1, _080966B0 @ =0x00002224 - b _080966BA - .align 2, 0 -_080966AC: .4byte sPSSData -_080966B0: .4byte 0x00002224 -_080966B4: - ldr r0, _080966EC @ =sPSSData - ldr r0, [r0] - ldr r1, _080966F0 @ =0x00000ce2 -_080966BA: - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetDescription - adds r4, r0, 0 - movs r0, 0x2 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x2 - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0x2 - bl AddTextPrinterParameterized5 - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080966EC: .4byte sPSSData -_080966F0: .4byte 0x00000ce2 - thumb_func_end sub_8096694 - - thumb_func_start sub_80966F4 -sub_80966F4: @ 80966F4 - push {lr} - ldr r0, _0809671C @ =sPSSData - ldr r0, [r0] - ldr r1, _08096720 @ =0x00002226 - adds r0, r1 - movs r1, 0x19 - strh r1, [r0] - ldr r1, _08096724 @ =gUnknown_83D35DC - movs r3, 0xD2 - lsls r3, 1 - movs r0, 0 - movs r2, 0x80 - bl LoadBgTiles - movs r0, 0 - bl sub_8096898 - pop {r0} - bx r0 - .align 2, 0 -_0809671C: .4byte sPSSData -_08096720: .4byte 0x00002226 -_08096724: .4byte gUnknown_83D35DC - thumb_func_end sub_80966F4 - - thumb_func_start sub_8096728 -sub_8096728: @ 8096728 - push {r4,r5,lr} - sub sp, 0x10 - ldr r0, _08096740 @ =sPSSData - ldr r0, [r0] - ldr r2, _08096744 @ =0x00002226 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0 - bne _08096748 - movs r0, 0 - b _080967AE - .align 2, 0 -_08096740: .4byte sPSSData -_08096744: .4byte 0x00002226 -_08096748: - subs r0, 0x1 - strh r0, [r1] - ldrh r1, [r1] - movs r0, 0x19 - subs r5, r0, r1 - movs r4, 0 - cmp r4, r5 - bge _08096798 -_08096758: - movs r0, 0 - movs r1, 0xA - bl GetBgAttribute - adds r1, r0, 0 - ldr r0, _080967B8 @ =sPSSData - ldr r0, [r0] - ldr r2, _080967BC @ =0x00002226 - adds r0, r2 - adds r1, 0x14 - ldrh r0, [r0] - adds r1, r0 - adds r1, r4 - lsls r1, 16 - lsrs r1, 16 - lsls r2, r4, 24 - lsrs r2, 24 - movs r0, 0x1 - str r0, [sp] - movs r0, 0x8 - str r0, [sp, 0x4] - movs r0, 0xF - str r0, [sp, 0x8] - movs r0, 0x19 - str r0, [sp, 0xC] - movs r0, 0 - movs r3, 0xC - bl WriteSequenceToBgTilemapBuffer - adds r4, 0x1 - cmp r4, r5 - blt _08096758 -_08096798: - adds r0, r5, 0 - bl sub_8096898 - ldr r0, _080967B8 @ =sPSSData - ldr r0, [r0] - ldr r1, _080967BC @ =0x00002226 - adds r0, r1 - ldrh r1, [r0] - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_080967AE: - add sp, 0x10 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080967B8: .4byte sPSSData -_080967BC: .4byte 0x00002226 - thumb_func_end sub_8096728 - - thumb_func_start sub_80967C0 -sub_80967C0: @ 80967C0 - push {r4,r5,lr} - sub sp, 0x10 - ldr r5, _080967D8 @ =sPSSData - ldr r0, [r5] - ldr r4, _080967DC @ =0x00002226 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0x19 - bne _080967E0 - movs r0, 0 - b _08096886 - .align 2, 0 -_080967D8: .4byte sPSSData -_080967DC: .4byte 0x00002226 -_080967E0: - cmp r0, 0 - bne _080967FC - movs r0, 0x1 - str r0, [sp] - movs r0, 0xA - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0x19 - movs r3, 0xB - bl FillBgTilemapBufferRect -_080967FC: - ldr r1, [r5] - adds r1, r4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldrh r1, [r1] - movs r0, 0x19 - subs r5, r0, r1 - movs r4, 0 - cmp r4, r5 - bge _08096852 -_08096812: - movs r0, 0 - movs r1, 0xA - bl GetBgAttribute - adds r1, r0, 0 - ldr r0, _08096890 @ =sPSSData - ldr r0, [r0] - ldr r2, _08096894 @ =0x00002226 - adds r0, r2 - adds r1, 0x14 - ldrh r0, [r0] - adds r1, r0 - adds r1, r4 - lsls r1, 16 - lsrs r1, 16 - lsls r2, r4, 24 - lsrs r2, 24 - movs r0, 0x1 - str r0, [sp] - movs r0, 0x8 - str r0, [sp, 0x4] - movs r0, 0xF - str r0, [sp, 0x8] - movs r0, 0x19 - str r0, [sp, 0xC] - movs r0, 0 - movs r3, 0xC - bl WriteSequenceToBgTilemapBuffer - adds r4, 0x1 - cmp r4, r5 - blt _08096812 -_08096852: - adds r0, r5, 0 - bl sub_8096898 - lsls r2, r5, 24 - lsrs r2, 24 - movs r0, 0x1 - str r0, [sp] - movs r0, 0xA - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r3, 0xB - bl FillBgTilemapBufferRect - ldr r0, _08096890 @ =sPSSData - ldr r0, [r0] - ldr r1, _08096894 @ =0x00002226 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x19 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_08096886: - add sp, 0x10 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08096890: .4byte sPSSData -_08096894: .4byte 0x00002226 - thumb_func_end sub_80967C0 - - thumb_func_start sub_8096898 -sub_8096898: @ 8096898 - push {r4-r7,lr} - sub sp, 0xC - adds r7, r0, 0 - cmp r7, 0 - beq _080968D0 - movs r1, 0xD2 - lsls r1, 1 - lsls r4, r7, 24 - lsrs r4, 24 - str r4, [sp] - movs r6, 0x1 - str r6, [sp, 0x4] - movs r5, 0xF - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0 - movs r3, 0xB - bl FillBgTilemapBufferRect - ldr r1, _08096920 @ =0x000009a4 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0 - movs r3, 0x14 - bl FillBgTilemapBufferRect -_080968D0: - ldr r1, _08096924 @ =0x000001a5 - lsls r5, r7, 24 - lsrs r5, 24 - movs r4, 0x1 - str r4, [sp] - movs r0, 0x8 - str r0, [sp, 0x4] - movs r6, 0xF - str r6, [sp, 0x8] - movs r0, 0 - adds r2, r5, 0 - movs r3, 0xC - bl FillBgTilemapBufferRect - movs r1, 0xD3 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - adds r2, r5, 0 - movs r3, 0xB - bl FillBgTilemapBufferRect - ldr r1, _08096928 @ =0x000001a7 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0 - adds r2, r5, 0 - movs r3, 0x14 - bl FillBgTilemapBufferRect - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096920: .4byte 0x000009a4 -_08096924: .4byte 0x000001a5 -_08096928: .4byte 0x000001a7 - thumb_func_end sub_8096898 - - thumb_func_start sub_809692C -sub_809692C: @ 809692C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0809694C - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8096624 - ldr r0, _08096954 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_0809694C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08096954: .4byte SpriteCallbackDummy - thumb_func_end sub_809692C - - thumb_func_start sub_8096958 -sub_8096958: @ 8096958 - push {lr} - adds r3, r0, 0 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0 - beq _0809696A - cmp r1, 0x1 - beq _08096986 - b _080969B4 -_0809696A: - ldrh r0, [r3, 0x20] - lsls r0, 4 - strh r0, [r3, 0x30] - ldrh r0, [r3, 0x22] - lsls r0, 4 - strh r0, [r3, 0x32] - movs r0, 0xA - strh r0, [r3, 0x34] - movs r0, 0x15 - strh r0, [r3, 0x36] - strh r1, [r3, 0x38] - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] -_08096986: - ldrh r1, [r3, 0x30] - ldrh r0, [r3, 0x34] - subs r1, r0 - strh r1, [r3, 0x30] - ldrh r0, [r3, 0x32] - ldrh r2, [r3, 0x36] - subs r0, r2 - strh r0, [r3, 0x32] - lsls r1, 16 - asrs r1, 20 - strh r1, [r3, 0x20] - lsls r0, 16 - asrs r0, 20 - strh r0, [r3, 0x22] - ldrh r0, [r3, 0x38] - adds r0, 0x1 - strh r0, [r3, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - ble _080969B4 - ldr r0, _080969B8 @ =sub_80969BC - str r0, [r3, 0x1C] -_080969B4: - pop {r0} - bx r0 - .align 2, 0 -_080969B8: .4byte sub_80969BC - thumb_func_end sub_8096958 - - thumb_func_start sub_80969BC -sub_80969BC: @ 80969BC - ldr r1, _080969F0 @ =sPSSData - ldr r3, [r1] - movs r1, 0xCB - lsls r1, 4 - adds r3, r1 - ldr r1, [r3] - ldrh r1, [r1, 0x20] - adds r1, 0x4 - strh r1, [r0, 0x20] - ldr r2, [r3] - ldrh r1, [r2, 0x26] - ldrh r2, [r2, 0x22] - adds r1, r2 - adds r1, 0x8 - strh r1, [r0, 0x22] - ldr r1, [r3] - ldrb r1, [r1, 0x5] - movs r2, 0xC - ands r2, r1 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - bx lr - .align 2, 0 -_080969F0: .4byte sPSSData - thumb_func_end sub_80969BC - - thumb_func_start sub_80969F4 -sub_80969F4: @ 80969F4 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _08096A06 - cmp r1, 0x1 - beq _08096A22 - b _08096A6A -_08096A06: - ldrh r0, [r4, 0x20] - lsls r0, 4 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - lsls r0, 4 - strh r0, [r4, 0x32] - movs r0, 0xA - strh r0, [r4, 0x34] - movs r0, 0x15 - strh r0, [r4, 0x36] - strh r1, [r4, 0x38] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_08096A22: - ldrh r0, [r4, 0x34] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x36] - ldrh r2, [r4, 0x32] - adds r1, r2 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x22] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - ble _08096A6A - adds r0, r4, 0 - bl sub_80962A8 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x3C] - lsls r2, 24 - lsrs r2, 24 - bl sub_80962F0 - ldr r0, _08096A70 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_08096A6A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08096A70: .4byte SpriteCallbackDummy - thumb_func_end sub_80969F4 - - thumb_func_start sub_8096A74 -sub_8096A74: @ 8096A74 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _08096A86 - cmp r1, 0x1 - beq _08096AA2 - b _08096B00 -_08096A86: - ldrh r0, [r4, 0x20] - lsls r0, 4 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - lsls r0, 4 - strh r0, [r4, 0x32] - movs r0, 0xA - strh r0, [r4, 0x34] - movs r0, 0x15 - strh r0, [r4, 0x36] - strh r1, [r4, 0x38] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_08096AA2: - ldrh r1, [r4, 0x30] - ldrh r0, [r4, 0x34] - subs r1, r0 - strh r1, [r4, 0x30] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x36] - subs r0, r2 - strh r0, [r4, 0x32] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x20] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x22] - ldr r1, _08096B08 @ =gSineTable - movs r2, 0x38 - ldrsh r0, [r4, r2] - lsls r0, 4 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - ble _08096B00 - adds r0, r4, 0 - bl sub_80962A8 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x3C] - lsls r2, 24 - lsrs r2, 24 - bl sub_80962F0 - movs r0, 0 - strh r0, [r4, 0x24] - ldr r0, _08096B0C @ =sub_80969BC - str r0, [r4, 0x1C] -_08096B00: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08096B08: .4byte gSineTable -_08096B0C: .4byte sub_80969BC - thumb_func_end sub_8096A74 - - thumb_func_start sub_8096B10 -sub_8096B10: @ 8096B10 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - cmp r1, 0 - beq _08096B22 - cmp r1, 0x1 - beq _08096B3E - b _08096B9E -_08096B22: - ldrh r0, [r4, 0x20] - lsls r0, 4 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x22] - lsls r0, 4 - strh r0, [r4, 0x32] - movs r0, 0xA - strh r0, [r4, 0x34] - movs r0, 0x15 - strh r0, [r4, 0x36] - strh r1, [r4, 0x38] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] -_08096B3E: - ldrh r0, [r4, 0x34] - ldrh r1, [r4, 0x30] - adds r0, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x36] - ldrh r2, [r4, 0x32] - adds r1, r2 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x22] - ldr r1, _08096BA4 @ =gSineTable - movs r2, 0x38 - ldrsh r0, [r4, r2] - lsls r0, 4 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - ble _08096B9E - adds r0, r4, 0 - bl sub_80962A8 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x3A] - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r4, 0x3C] - lsls r2, 24 - lsrs r2, 24 - bl sub_80962F0 - ldr r0, _08096BA8 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r4, 0x24] -_08096B9E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08096BA4: .4byte gSineTable -_08096BA8: .4byte SpriteCallbackDummy - thumb_func_end sub_8096B10 - - thumb_func_start sub_8096BAC -sub_8096BAC: @ 8096BAC - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x22] - subs r0, 0x8 - strh r0, [r2, 0x22] - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bge _08096BDC - ldr r0, _08096BE0 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] - adds r0, r2, 0 - bl sub_80962A8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_8096624 -_08096BDC: - pop {r0} - bx r0 - .align 2, 0 -_08096BE0: .4byte SpriteCallbackDummy - thumb_func_end sub_8096BAC - - thumb_func_start sub_8096BE4 -sub_8096BE4: @ 8096BE4 - ldr r3, _08096BF4 @ =gUnknown_203982C - str r0, [r3] - str r1, [r0] - movs r1, 0 - strb r2, [r0, 0x5] - strb r1, [r0, 0x4] - bx lr - .align 2, 0 -_08096BF4: .4byte gUnknown_203982C - thumb_func_end sub_8096BE4 - - thumb_func_start sub_8096BF8 -sub_8096BF8: @ 8096BF8 - push {r4,r5,lr} - ldr r2, _08096C3C @ =gUnknown_203982C - ldr r1, [r2] - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08096C36 - movs r4, 0 - ldrb r1, [r1, 0x4] - cmp r4, r1 - bcs _08096C2E - adds r5, r2, 0 -_08096C0E: - ldr r0, [r5] - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 2 - ldr r0, [r0] - adds r0, r1 - ldr r1, [r0, 0x10] - bl _call_via_r1 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, [r5] - ldrb r0, [r0, 0x4] - cmp r4, r0 - bcc _08096C0E -_08096C2E: - ldr r0, _08096C3C @ =gUnknown_203982C - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x4] -_08096C36: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08096C3C: .4byte gUnknown_203982C - thumb_func_end sub_8096BF8 - - thumb_func_start sub_8096C40 -sub_8096C40: @ 8096C40 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r0 - mov r10, r3 - ldr r0, [sp, 0x24] - ldr r3, [sp, 0x28] - ldr r4, [sp, 0x2C] - ldr r5, [sp, 0x30] - ldr r6, [sp, 0x34] - lsls r1, 16 - lsrs r1, 16 - mov r12, r1 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp] - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r3, 16 - lsrs r3, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 16 - lsrs r6, 16 - ldr r0, _08096CC0 @ =gUnknown_203982C - ldr r2, [r0] - ldrb r0, [r2, 0x4] - adds r1, r0, 0 - ldrb r7, [r2, 0x5] - cmp r1, r7 - bcs _08096CC8 - adds r0, 0x1 - strb r0, [r2, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r1, r0 - lsls r0, r4, 1 - strh r0, [r1, 0x8] - ldr r2, [sp] - lsls r0, r2, 5 - add r0, r12 - lsls r0, 1 - add r0, r9 - str r0, [r1, 0x4] - adds r0, r3, 0 - muls r0, r6 - add r0, r8 - lsls r0, 1 - add r0, r10 - str r0, [r1] - strh r5, [r1, 0xC] - strh r6, [r1, 0xA] - ldr r0, _08096CC4 @ =sub_8096CDC - str r0, [r1, 0x10] - movs r0, 0x1 - b _08096CCA - .align 2, 0 -_08096CC0: .4byte gUnknown_203982C -_08096CC4: .4byte sub_8096CDC -_08096CC8: - movs r0, 0 -_08096CCA: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8096C40 - - thumb_func_start sub_8096CDC -sub_8096CDC: @ 8096CDC - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0 - b _08096D06 -_08096CE4: - ldr r0, [r4] - ldr r1, [r4, 0x4] - ldrh r2, [r4, 0x8] - lsrs r2, 1 - bl CpuSet - ldr r0, [r4, 0x4] - adds r0, 0x40 - str r0, [r4, 0x4] - ldrh r1, [r4, 0xA] - lsls r1, 1 - ldr r0, [r4] - adds r0, r1 - str r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_08096D06: - ldrh r0, [r4, 0xC] - cmp r5, r0 - bcc _08096CE4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8096CDC - - thumb_func_start sub_8096D14 -sub_8096D14: @ 8096D14 - push {r4-r7,lr} - mov r12, r0 - ldr r0, [sp, 0x14] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _08096D60 @ =gUnknown_203982C - ldr r2, [r0] - ldrb r0, [r2, 0x4] - adds r1, r0, 0 - ldrb r7, [r2, 0x5] - cmp r1, r7 - bcs _08096D68 - adds r0, 0x1 - strb r0, [r2, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - ldr r1, [r2] - adds r1, r0 - lsls r0, r3, 1 - strh r0, [r1, 0x8] - lsls r0, r4, 5 - adds r0, r6 - lsls r0, 1 - add r0, r12 - str r0, [r1, 0x4] - strh r5, [r1, 0xC] - ldr r0, _08096D64 @ =sub_8096D70 - str r0, [r1, 0x10] - movs r0, 0x1 - b _08096D6A - .align 2, 0 -_08096D60: .4byte gUnknown_203982C -_08096D64: .4byte sub_8096D70 -_08096D68: - movs r0, 0 -_08096D6A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8096D14 - - thumb_func_start sub_8096D70 -sub_8096D70: @ 8096D70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r0, 0 - movs r0, 0 - ldrh r1, [r6, 0xC] - cmp r0, r1 - bcs _08096DFE - movs r7, 0x80 - lsls r7, 5 - mov r5, sp - ldr r2, _08096DBC @ =0x040000d4 - mov r8, r2 - movs r1, 0x81 - lsls r1, 24 - mov r10, r1 -_08096D96: - ldr r2, [r6, 0x4] - ldrh r3, [r6, 0x8] - mov r12, r2 - adds r0, 0x1 - mov r9, r0 - cmp r3, r7 - bhi _08096DC0 - movs r0, 0 - strh r0, [r5] - mov r2, sp - mov r0, r8 - str r2, [r0] - mov r1, r12 - str r1, [r0, 0x4] - lsrs r0, r3, 1 - mov r2, r10 - orrs r0, r2 - mov r1, r8 - b _08096DE8 - .align 2, 0 -_08096DBC: .4byte 0x040000d4 -_08096DC0: - movs r4, 0 - strh r4, [r5] - ldr r1, _08096E10 @ =0x040000d4 - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _08096E14 @ =0x81000800 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r2, r7 - subs r3, r7 - cmp r3, r7 - bhi _08096DC0 - strh r4, [r5] - mov r0, sp - str r0, [r1] - str r2, [r1, 0x4] - lsrs r0, r3, 1 - mov r2, r10 - orrs r0, r2 -_08096DE8: - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, r12 - adds r0, 0x40 - str r0, [r6, 0x4] - mov r1, r9 - lsls r0, r1, 16 - lsrs r0, 16 - ldrh r2, [r6, 0xC] - cmp r0, r2 - bcc _08096D96 -_08096DFE: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096E10: .4byte 0x040000d4 -_08096E14: .4byte 0x81000800 - thumb_func_end sub_8096D70 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index b0c2b9a87..bcb9fa04b 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -13235,7 +13235,7 @@ _0813B16C: ldrb r2, [r0] adds r3, r5, 0 adds r0, r4, 0 - bl sub_808BDE8 + bl SeekToNextMonInBox b _0813B1CC .align 2, 0 _0813B190: .4byte 0x000032f4 diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s deleted file mode 100644 index 0ac3268b6..000000000 --- a/data/pokemon_storage_system.s +++ /dev/null @@ -1,692 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83CDA20:: @ 83CDA20 - .4byte gUnknown_841856C, gUnknown_84185AD - .4byte gUnknown_841857D, gUnknown_84185E2 - .4byte gUnknown_841858D, gUnknown_8418611 - .4byte gUnknown_841859A, gUnknown_8418642 - .4byte gUnknown_84185A5, gUnknown_8418681 - -gUnknown_83CDA48:: @ 83CDA48 - .byte 0, 1, 1, 17, 10, 15 - .2byte 0x0001 - -gUnknown_83CDA50:: - obj_image_anim_frame 0x0000, 5 - obj_image_anim_end - -gUnknown_83CDA58:: - obj_image_anim_frame 0x0004, 5 - obj_image_anim_end - -gUnknown_83CDA60:: - obj_image_anim_frame 0x0006, 5 - obj_image_anim_end - -gUnknown_83CDA68:: - obj_image_anim_frame 0x000a, 5 - obj_image_anim_end - -gUnknown_83CDA70:: @ 83CDA70 - .4byte gUnknown_83CDA50 - .4byte gUnknown_83CDA58 - .4byte gUnknown_83CDA60 - .4byte gUnknown_83CDA68 - -gUnknown_83CDA80:: - obj_rot_scal_anim_frame 224, 224, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83CDA90:: - .4byte gUnknown_83CDA80 - -gUnknown_83CDA94:: @ 83CDA94 - .string "/30$" - -gUnknown_83CDA98:: @ 83CDA98 gbapal - .incbin "graphics/interface/pss_unk_83CDA98.gbapal" - -gUnknown_83CDAB8:: @ 83CDAB8 4bpp - .incbin "graphics/interface/pss_unk_83CDAB8.4bpp" - -gUnknown_83CE2B8:: @ 83CE2B8 4bpp - .incbin "graphics/interface/pss_unk_83CE2B8.4bpp" - -gUnknown_83CE438:: @ 83CE438 4bpp.lz - .incbin "graphics/interface/pss_unk_83CE438.4bpp.lz" - -gUnknown_83CE4D0:: @ 83CE4D0 bin.lz - .incbin "graphics/interface/pss_unk_83CE4D0.bin.lz" - .incbin "graphics/interface/pss_unk_83CE5DC.gbapal" - -gUnknown_83CE5FC:: @ 83CE5FC bin.lz - .incbin "graphics/interface/pss_unk_83CE5FC.bin.lz" - -gUnknown_83CE6F8:: @ 83CE6F8 @ raw8 - .byte 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x07, 0x01, 0x08, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01, 0x17, 0x01, 0x18, 0x01 - .byte 0x01, 0x21, 0x02, 0x21, 0x03, 0x21, 0x04, 0x21, 0x05, 0x21, 0x06, 0x21, 0x07, 0x21, 0x08, 0x21, 0x11, 0x21, 0x12, 0x21, 0x13, 0x21, 0x14, 0x21, 0x15, 0x21, 0x16, 0x21, 0x17, 0x21, 0x18, 0x21 - -gUnknown_83CE738:: @ 83CE738 gbapal - .incbin "graphics/interface/pss_unk_83CE738.gbapal" - -gUnknown_83CE758:: @ 83CE758 gbapal - .incbin "graphics/interface/pss_unk_83CE758.gbapal" - -gUnknown_83CE778:: @ 83CE778 @ raw16 - .2byte 0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182 - .2byte 0x0183, 0x0184, 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189 - .2byte 0x018a, 0x018b, 0x018c, 0x018d - -gUnknown_83CE7C0:: @ 83CE7C0 @ raw8 - .byte 0x40, 0x11, 0x41, 0x11, 0x41, 0x11, 0x42, 0x11, 0x50, 0x11, 0x51, 0x11, 0x51, 0x11, 0x52, 0x11, 0x60, 0x11, 0x61, 0x11, 0x61, 0x11, 0x62, 0x11 - -gUnknown_83CE7D8:: @ 83CE7D8 @ raw8 - .byte 0x43, 0x11, 0x44, 0x11, 0x44, 0x11, 0x45, 0x11, 0x53, 0x11, 0x54, 0x11, 0x54, 0x11, 0x55, 0x11, 0x63, 0x11, 0x64, 0x11, 0x64, 0x11, 0x65, 0x11 - -gUnknown_83CE7F0:: @ 83CE7F0 gbapal - .incbin "graphics/interface/pss_unk_83CE810.gbapal" - -gUnknown_83CE810:: @ 83CE810 4bpp - .incbin "graphics/interface/pss_unk_83CE810.4bpp" - .incbin "graphics/interface/pss_unk_83CE9D0.gbapal" - -gUnknown_83CEA10:: @ 83CEA10 gbapal - .incbin "graphics/interface/pss_unk_83CEA10.gbapal" - -gUnknown_83CEA30:: @ 83CEA30 gbapal - .incbin "graphics/interface/pss_unk_83CEA30.gbapal" - -gUnknown_83CEA50:: @ 83CEA50 bg_template - .4byte 0x000001d0 - @ { - @ .bg = 0, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 29, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 0, - @ .baseTile = 0x0000 - @ } - .4byte 0x004011e5 - @ { - @ .bg = 1, - @ .charBaseIndex = 1, - @ .mapBaseIndex = 30, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 1, - @ .baseTile = 0x0100 - @ } - .4byte 0x000023ba - @ { - @ .bg = 2, - @ .charBaseIndex = 2, - @ .mapBaseIndex = 27, - @ .screenSize = 1, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x000031ff - @ { - @ .bg = 3, - @ .charBaseIndex = 3, - @ .mapBaseIndex = 31, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 3, - @ .baseTile = 0x0000 - @ } - -gUnknown_83CEA60:: @ 83CEA60 sprite_palette - obj_pal gUnknown_83CE7F0, 56010 - -gUnknown_83CEA68:: @ 83CEA68 sprite_sheet - obj_tiles gUnknown_83CE810, 0x01c0, 5 - -gUnknown_83CEA70:: @ 83CEA70 spr_template - spr_template 2, 56006, gUnknown_83CEB88, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83CEA88:: @ 83CEA88 struct {const u8 *; u8;} - .4byte gUnknown_8418208 - .byte 0 - .align 2 - .4byte gUnknown_841821B - .byte 0 - .align 2 - .4byte gUnknown_8418233 - .byte 0 - .align 2 - .4byte gUnknown_8418248 - .byte 0 - .align 2 - .4byte gUnknown_841825C - .byte 1 - .align 2 - .4byte gUnknown_841826C - .byte 0 - .align 2 - .4byte gUnknown_841827F - .byte 0 - .align 2 - .4byte gUnknown_8418295 - .byte 1 - .align 2 - .4byte gUnknown_84182A7 - .byte 0 - .align 2 - .4byte gUnknown_84182B8 - .byte 0 - .align 2 - .4byte gUnknown_84182CE - .byte 4 - .align 2 - .4byte gUnknown_84182DF - .byte 6 - .align 2 - .4byte gUnknown_84182EC - .byte 0 - .align 2 - .4byte gUnknown_84182FF - .byte 0 - .align 2 - .4byte gUnknown_8418319 - .byte 0 - .align 2 - .4byte gUnknown_841832C - .byte 0 - .align 2 - .4byte gUnknown_8418346 - .byte 0 - .align 2 - .4byte gUnknown_841835F - .byte 0 - .align 2 - .4byte gUnknown_8418379 - .byte 0 - .align 2 - .4byte gUnknown_8418392 - .byte 1 - .align 2 - .4byte gUnknown_84183A0 - .byte 0 - .align 2 - .4byte gUnknown_84183BA - .byte 0 - .align 2 - .4byte gUnknown_84183C5 - .byte 0 - .align 2 - .4byte gUnknown_841825C - .byte 7 - .align 2 - .4byte gUnknown_84183DD - .byte 0 - .align 2 - .4byte gUnknown_84183F0 - .byte 7 - .align 2 - .4byte gUnknown_8418408 - .byte 0 - .align 2 - .4byte gUnknown_8418419 - .byte 0 - .align 2 - .4byte gUnknown_8418433 - .byte 7 - .align 2 - .4byte gUnknown_8418443 - .byte 7 - .align 2 - .4byte gUnknown_8418452 - .byte 0 - .align 2 - -gUnknown_83CEB80:: @ 83CEB80 window_template - .byte 0, 24, 11, 5, 4, 15 - .2byte 0x005c - -gUnknown_83CEB88:: - .4byte 0xc0000000, 0x00000000 - -gUnknown_83CEB90:: - .4byte 0x00004000, 0x00000000 - -gUnknown_83CEB98:: - obj_image_anim_frame 0x0000, 5 - obj_image_anim_end - -gUnknown_83CEBA0:: - obj_image_anim_frame 0x0002, 8 - obj_image_anim_frame 0x0004, 8 - obj_image_anim_frame 0x0006, 8 - obj_image_anim_jump 0 - -gUnknown_83CEBB0:: - obj_image_anim_frame 0x0008, 5 - obj_image_anim_end - -gUnknown_83CEBB8:: - obj_image_anim_frame 0x000a, 8 - obj_image_anim_frame 0x0004, 8 - obj_image_anim_frame 0x000c, 8 - obj_image_anim_jump 0 - -gUnknown_83CEBC8:: - .4byte gUnknown_83CEB98 - .4byte gUnknown_83CEBA0 - .4byte gUnknown_83CEBB0 - .4byte gUnknown_83CEBB8 - -gUnknown_83CEBD8:: @ 83CEBD8 spr_template - spr_template 5, 56010, gUnknown_83CEB90, gUnknown_83CEBC8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83CEBF0:: @ 83CEBF0 spr_template - spr_template 18, 56000, gUnknown_83CEC08, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83CEC08:: - .4byte 0x80000000, 0x00000000 - -gUnknown_83CEC10:: - obj_rot_scal_anim_frame -2, -2, 0, 120 - obj_rot_scal_anim_end - -gUnknown_83CEC20:: - obj_rot_scal_anim_frame 16, 16, 0, 0 - obj_rot_scal_anim_frame 16, 16, 0, 15 - obj_rot_scal_anim_end - -gUnknown_83CEC38:: @ 83CEC38 dataptr - .4byte gUnknown_83CEC10 - .4byte gUnknown_83CEC20 - -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" - -gUnknown_83D2BEC:: - .incbin "graphics/interface/pss_unk_83D2BEC.4bpp" - -gUnknown_83D33EC:: - .incbin "graphics/interface/pss_unk_83D33EC.4bpp" - -gUnknown_83D346C:: @ 83D346C - .4byte sub_8092C18 - .4byte sub_8092CA4 - .4byte sub_8092D20 - -gUnknown_83D3478:: @ 83D3478 - .4byte sub_8093F98 - .byte 0 - .align 2 - .4byte sub_809448C - .byte 1 - .align 2 - .4byte sub_80946AC - .byte 2 - .align 2 - .4byte sub_80947A0 - .byte 3 - .align 2 - .4byte NULL - .byte 0 - .align 2 - -gUnknown_83D34A0:: @ 83D34A0 - obj_tiles gUnknown_83D2BEC, 0x0800, 0 - obj_tiles gUnknown_83D33EC, 0x0080, 1 - null_obj_tiles - -gUnknown_83D34B8:: @ 83D34B8 - obj_pal gUnknown_83D2BCC, 56007 - null_obj_pal - -gUnknown_83D34C8:: - .4byte 0x80000000, 0x00000400 - -gUnknown_83D34D0:: - .4byte 0x40000000, 0x00000400 - -gUnknown_83D34D8:: - obj_image_anim_frame 0x0000, 30 - obj_image_anim_frame 0x0010, 30 - obj_image_anim_jump 0 - -gUnknown_83D34E4:: - obj_image_anim_frame 0x0000, 5 - obj_image_anim_end - -gUnknown_83D34EC:: - obj_image_anim_frame 0x0020, 5 - obj_image_anim_end - -gUnknown_83D34F4:: - obj_image_anim_frame 0x0030, 5 - obj_image_anim_end - -gUnknown_83D34FC:: - .4byte gUnknown_83D34D8 - .4byte gUnknown_83D34E4 - .4byte gUnknown_83D34EC - .4byte gUnknown_83D34F4 - -gUnknown_83D350C:: @ 83D350C - spr_template 0, 56010, gUnknown_83D34C8, gUnknown_83D34FC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_83D3524:: @ 83D3524 - spr_template 1, 56010, gUnknown_83D34D0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8094AB8 - -gUnknown_83D353C:: @ 83D353C - .4byte gUnknown_8418468 - .4byte gUnknown_841846F - .4byte gUnknown_8418475 - .4byte gUnknown_8418484 - .4byte gUnknown_841847E - .4byte gUnknown_8418489 - .4byte gUnknown_841848F - .4byte gUnknown_8418497 - .4byte gUnknown_841849F - .4byte gUnknown_84184A9 - .4byte gUnknown_84184AE - .4byte gUnknown_84184A4 - .4byte gUnknown_84184B8 - .4byte gUnknown_84184BD - .4byte gUnknown_84184BD - .4byte gUnknown_84184C2 - .4byte gUnknown_84184C9 - .4byte gUnknown_84184CD - .4byte gUnknown_84184D2 - .4byte gUnknown_84184DC - .4byte gUnknown_84184E6 - .4byte gUnknown_84184F0 - .4byte gUnknown_84184F9 - .4byte gUnknown_8418500 - .4byte gUnknown_8418505 - .4byte gUnknown_841850C - .4byte gUnknown_8418514 - .4byte gUnknown_8418519 - .4byte gUnknown_8418521 - .4byte gUnknown_8418526 - .4byte gUnknown_841852B - .4byte gUnknown_8418531 - .4byte gUnknown_841853A - .4byte gUnknown_8418540 - .4byte gUnknown_8418544 - .4byte gUnknown_841854A - .4byte gUnknown_8418555 - .4byte gUnknown_841855B - -gUnknown_83D35D4:: @ 83D35D4 - .byte 0, 10, 3, 20, 18, 9 - .2byte 0x000a - -gUnknown_83D35DC:: @ 83D35DC - .incbin "graphics/interface/pss_unk_83D35DC.4bpp" - -gUnknown_83D365C:: - .4byte 0x80000100, 0x00000400 - -gUnknown_83D3664:: - obj_rot_scal_anim_frame 128, 128, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83D3674:: - obj_rot_scal_anim_frame 88, 88, 0, 0 - obj_rot_scal_anim_frame 5, 5, 0, 8 - obj_rot_scal_anim_end - -gUnknown_83D368C:: - obj_rot_scal_anim_frame 128, 128, 0, 0 - obj_rot_scal_anim_frame -5, -5, 0, 8 - obj_rot_scal_anim_end - -gUnknown_83D36A4:: - obj_rot_scal_anim_frame 128, 128, 0, 0 - obj_rot_scal_anim_frame 10, 10, 0, 12 - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83D36C4:: - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_frame -10, -10, 0, 12 - obj_rot_scal_anim_frame 128, 128, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83D36E4:: - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_frame -5, -5, 0, 16 - obj_rot_scal_anim_end - -gUnknown_83D36FC:: - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_end - -gUnknown_83D370C:: - .4byte gUnknown_83D3664 - .4byte gUnknown_83D3674 - .4byte gUnknown_83D368C - .4byte gUnknown_83D36A4 - .4byte gUnknown_83D36C4 - .4byte gUnknown_83D36E4 - .4byte gUnknown_83D36FC - -gUnknown_83D3728:: @ 83D3728 - spr_template 7, 56011, gUnknown_83D365C, gDummySpriteAnimTable, NULL, gUnknown_83D370C, SpriteCallbackDummy diff --git a/data/scripts/pc.inc b/data/scripts/pc.inc index 0c71b9c76..a3190ea26 100644 --- a/data/scripts/pc.inc +++ b/data/scripts/pc.inc @@ -48,7 +48,7 @@ EventScript_AccessPokemonStorage:: @ 81A6A05 call_if_unset FLAG_SYS_NOT_SOMEONES_PC, EventScript_AccessSomeonesPC call_if_set FLAG_SYS_NOT_SOMEONES_PC, EventScript_AccessBillsPC msgbox Text_OpenedPkmnStorage - special ShowPokemonStorageSystem + special ShowPokemonStorageSystemPC waitstate setvar VAR_0x8004, HELPCONTEXT_PC special Script_SetHelpContext diff --git a/data/specials.inc b/data/specials.inc index 0d7670f63..dbe9deebc 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -68,7 +68,7 @@ gSpecials:: @ 815FD60 def_special ShouldTryRematchBattle def_special IsTrainerReadyForRematch def_special StartRematchBattle - def_special ShowPokemonStorageSystem + def_special ShowPokemonStorageSystemPC def_special HasEnoughMonsForDoubleBattle def_special NullFieldSpecial @ Hoenn TV specials def_special NullFieldSpecial diff --git a/graphics/interface/pss_unk_83CEA30.pal b/graphics/interface/pss_unk_83CEA30.pal deleted file mode 100644 index dcc6395db..000000000 --- a/graphics/interface/pss_unk_83CEA30.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -8 0 0 -90 65 16 -57 197 0 -0 49 0 -0 197 16 -139 131 32 -16 65 24 -164 0 0 -0 0 0 -98 65 49 -65 197 24 -164 0 0 -255 57 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/include/box_party_pokemon_dropdown.h b/include/box_party_pokemon_dropdown.h index e1ca7256f..52e620956 100644 --- a/include/box_party_pokemon_dropdown.h +++ b/include/box_party_pokemon_dropdown.h @@ -1,14 +1,24 @@ #ifndef GUARD_BOX_PARTY_POKEMON_DROPDOWN_H #define GUARD_BOX_PARTY_POKEMON_DROPDOWN_H -void sub_80F7AD8(u8 num); -void sub_80F7B2C(void); -void sub_80F7B40(void); -void sub_80F7B80(u8 a0, u8 a1, const void * a2, u16 a3, u16 a4); -void sub_80F7C7C(u8 a0, const void * a1); -void sub_80F7CAC(u8 a0, u16 a1, u16 a2); -void sub_80F7CE8(u8 a0, u16 a1, u16 a2, u16 a3, u16 a4); -void sub_80F7D30(u8 a0, u8 a1, s8 a2); -void sub_80F7E54(u8 a0); +enum +{ + BPPD_MOVE_INNER_LEFT = 0, + BPPD_MOVE_OUTER_LEFT, + BPPD_MOVE_INNER_TOP, + BPPD_MOVE_OUTER_TOP, + BPPD_MOVE_INNER_X, + BPPD_MOVE_INNER_Y +}; + +void AllocBoxPartyPokemonDropdowns(u8 num); +void FreeBoxPartyPokemonDropdowns(void); +void CopyAllBoxPartyPokemonDropdownsToVram(void); +void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void * src, u16 width, u16 height); +void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void * src); +void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y); +void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height); +void AdjustBoxPartyPokemonDropdownPos(u8 a0, u8 a1, s8 a2); +void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx); #endif //GUARD_BOX_PARTY_POKEMON_DROPDOWN_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 85d704680..0bc96eb35 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1365,7 +1365,7 @@ #define FLAG_SYS_NATIONAL_DEX (SYS_FLAGS + 0x40) #define FLAG_SYS_PC_STORAGE_DISABLED (SYS_FLAGS + 0x41) #define FLAG_SYS_INFORMED_OF_LOCAL_WIRELESS_PLAYER (SYS_FLAGS + 0x42) -#define FLAG_SYS_CHANGED_BOX_TO_STORE_MON (SYS_FLAGS + 0x43) +#define FLAG_SHOWN_BOX_WAS_FULL_MESSAGE (SYS_FLAGS + 0x43) #define FLAG_SYS_CAN_LINK_WITH_RS (SYS_FLAGS + 0x44) #define FLAG_SYS_SEVII_MAP_123 (SYS_FLAGS + 0x45) #define FLAG_SYS_SEVII_MAP_4567 (SYS_FLAGS + 0x46) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index a8009f1ff..bc02bffdd 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -212,5 +212,6 @@ #define MAX_TOTAL_EVS 510 #define UNOWN_FORM_COUNT 28 #define MAX_MON_LEVEL 100 +#define BOX_NAME_LENGTH 8 #endif // GUARD_CONSTANTS_POKEMON_H diff --git a/include/graphics.h b/include/graphics.h index d84371e3a..3930861f8 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4917,4 +4917,11 @@ extern const u16 gUnknown_8E98F38[]; extern const u16 gUnknown_8E990D8[]; extern const u16 gUnknown_8E990F8[]; +// pokemon_storage_system +extern const u32 gPSSMenu_Gfx[]; +extern const u32 gUnknown_8E9CAEC[]; +extern const u16 gPSSMenu_Pal[]; +extern const u16 gUnknown_8E9C3F8[]; +extern const u16 gUnknown_8E9C418[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/pokemon.h b/include/pokemon.h index be0a35877..3cefcfcf2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -126,7 +126,7 @@ struct PokemonStorage { /*0x0000*/ u8 currentBox; /*0x0001*/ struct BoxPokemon boxes[14][30]; - /*0x8344*/ u8 boxNames[14][9]; + /*0x8344*/ u8 boxNames[14][BOX_NAME_LENGTH + 1]; /*0x83C2*/ u8 boxWallpapers[14]; }; diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 5b9876677..e2eebc62b 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,8 @@ 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); +void LoadMonIconPalettesAt(u16 offset); +u8 GetValidMonIconPalIndex(u16 species); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index c636651f3..7422b4522 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -6,15 +6,36 @@ #define TOTAL_BOXES_COUNT 14 #define IN_BOX_COUNT 30 +enum +{ + WALLPAPER_FOREST, + WALLPAPER_CITY, + WALLPAPER_DESERT, + WALLPAPER_SAVANNA, + WALLPAPER_CRAG, + WALLPAPER_VOLCANO, + WALLPAPER_SNOW, + WALLPAPER_CAVE, + WALLPAPER_BEACH, + WALLPAPER_SEAFLOOR, + WALLPAPER_RIVER, + WALLPAPER_SKY, + WALLPAPER_POLKADOT, + WALLPAPER_POKECENTER, + WALLPAPER_MACHINE, + WALLPAPER_PLAIN, + WALLPAPER_COUNT +}; + u8 *GetBoxNamePtr(u8 boxNumber); struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition); -void SetBoxMonNickFromAnyBox(u8 boxId, u8 monPosition, u8 * newNick); -void CompactPartySlots(void); -u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); -void sub_808BCB4(u8 boxId, u8 monPosition); -void sub_808CE60(void); +void SetBoxMonNickAt(u8 boxId, u8 monPosition, const u8 *newNick); +s16 CompactPartySlots(void); +u32 GetBoxMonDataAt(u8 boxId, u8 monPosition, s32 request); +void ZeroBoxMonAt(u8 boxId, u8 monPosition); +void Cb2_ReturnToPSS(void); void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); -void PSS_RenderTextToVramViaBuffer(const u8 *name, u8 *a1, u8 a2, u8 a3, u8 *buffer, u8 a5); +void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h new file mode 100644 index 000000000..ea76354c6 --- /dev/null +++ b/include/pokemon_storage_system_internal.h @@ -0,0 +1,516 @@ +#ifndef GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H +#define GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H + +#include "pokemon_storage_system.h" +#include "mon_markings.h" + +#define IN_BOX_COLUMNS 5 +#define IN_BOX_ROWS 6 + +#define MAX_MON_ICONS 40 +#define MAX_ITEM_ICONS 3 +#define MAX_MENU_ITEMS 7 + +enum +{ + MODE_PARTY, + MODE_BOX, + MODE_2, +}; + +enum +{ + BOX_OPTION_WITHDRAW, + BOX_OPTION_DEPOSIT, + BOX_OPTION_MOVE_MONS, + BOX_OPTION_MOVE_ITEMS, + BOX_OPTION_EXIT, +}; + +enum +{ + PC_TEXT_EXIT_BOX, + PC_TEXT_WHAT_YOU_DO, + PC_TEXT_PICK_A_THEME, + PC_TEXT_PICK_A_WALLPAPER, + PC_TEXT_IS_SELECTED, + PC_TEXT_JUMP_TO_WHICH_BOX, + PC_TEXT_DEPOSIT_IN_WHICH_BOX, + PC_TEXT_WAS_DEPOSITED, + PC_TEXT_BOX_IS_FULL, + PC_TEXT_RELEASE_POKE, + PC_TEXT_WAS_RELEASED, + PC_TEXT_BYE_BYE, + PC_TEXT_MARK_POKE, + PC_TEXT_LAST_POKE, + PC_TEXT_PARTY_FULL, + PC_TEXT_HOLDING_POKE, + PC_TEXT_WHICH_ONE_WILL_TAKE, + PC_TEXT_CANT_RELEASE_EGG, + PC_TEXT_CONTINUE_BOX, + PC_TEXT_CAME_BACK, + PC_TEXT_WORRIED, + PC_TEXT_SURPRISE, + PC_TEXT_PLEASE_REMOVE_MAIL, + PC_TEXT_IS_SELECTED2, + PC_TEXT_GIVE_TO_MON, + PC_TEXT_PLACED_IN_BAG, + PC_TEXT_BAG_FULL, + PC_TEXT_PUT_IN_BAG, + PC_TEXT_ITEM_IS_HELD, + PC_TEXT_CHANGED_TO_ITEM, + PC_TEXT_CANT_STORE_MAIL, +}; + +enum +{ + PC_TEXT_FMT_NORMAL, + PC_TEXT_FMT_MON_NAME_1, + PC_TEXT_FMT_MON_NAME_2, + PC_TEXT_FMT_MON_NAME_3, + PC_TEXT_FMT_MON_NAME_4, + PC_TEXT_FMT_MON_NAME_5, + PC_TEXT_FMT_MON_NAME_6, + PC_TEXT_FMT_ITEM_NAME, +}; + +enum +{ + PC_TEXT_CANCEL, + PC_TEXT_STORE, + PC_TEXT_WITHDRAW, + PC_TEXT_MOVE, + PC_TEXT_SHIFT, + PC_TEXT_PLACE, + PC_TEXT_SUMMARY, + PC_TEXT_RELEASE, + PC_TEXT_MARK, + PC_TEXT_JUMP, + PC_TEXT_WALLPAPER, + PC_TEXT_NAME, + PC_TEXT_TAKE, + PC_TEXT_GIVE, + PC_TEXT_GIVE2, + PC_TEXT_SWITCH, + PC_TEXT_BAG, + PC_TEXT_INFO, + PC_TEXT_SCENERY1, + PC_TEXT_SCENERY2, + PC_TEXT_SCENERY3, + PC_TEXT_ETCETERA, + PC_TEXT_FOREST, + PC_TEXT_CITY, + PC_TEXT_DESERT, + PC_TEXT_SAVANNA, + PC_TEXT_CRAG, + PC_TEXT_VOLCANO, + PC_TEXT_SNOW, + PC_TEXT_CAVE, + PC_TEXT_BEACH, + PC_TEXT_SEAFLOOR, + PC_TEXT_RIVER, + PC_TEXT_SKY, + PC_TEXT_POLKADOT, + PC_TEXT_POKECENTER, + PC_TEXT_MACHINE, + PC_TEXT_SIMPLE, +}; + +enum +{ + CURSOR_AREA_IN_BOX, + CURSOR_AREA_IN_PARTY, + CURSOR_AREA_BOX, + CURSOR_AREA_BUTTONS, // Party Pokemon and Close Box +}; + +enum +{ + SCREEN_CHANGE_EXIT_BOX, + SCREEN_CHANGE_SUMMARY_SCREEN, + SCREEN_CHANGE_NAME_BOX, + SCREEN_CHANGE_ITEM_FROM_BAG, +}; + +#define TAG_PAL_WAVEFORM 0xDACA +#define TAG_PAL_DAC8 0xDAC8 +#define TAG_PAL_DAC6 0xDAC6 +#define TAG_PAL_DACE 0xDACE +#define TAG_PAL_DAC7 0xDAC7 +#define TAG_PAL_DAC9 0xDAC9 +#define TAG_PAL_DAC0 0xDAC0 +#define TAG_PAL_DACB 0xDACB + +#define TAG_TILE_WAVEFORM 0x5 +#define TAG_TILE_10 0x10 +#define TAG_TILE_2 0x2 +#define TAG_TILE_D 0xD +#define TAG_TILE_A 0xA +#define TAG_TILE_3 0x3 +#define TAG_TILE_4 0x4 +#define TAG_TILE_12 0x12 +#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 +{ + const u8 *text; + u8 format; +}; + +struct UnkPSSStruct_2002370 +{ + struct Sprite *unk_0000; + struct Sprite *unk_0004[4]; + u32 unk_0014[3]; // unused + struct Sprite *unk_0020[2]; + u8 buffer[0x200]; // passed but not used + u8 strbuf[20]; + bool32 loadPal; + u16 tilesTag; + u16 paletteTag; + u8 curBox; + u8 unk_0245; // unused + u8 subpriority; +}; + +struct StorageMenu +{ + const u8 *text; + int textId; +}; + +struct UnkStruct_2000028 +{ + const u8 *unk_00; + u8 *unk_04; + u16 unk_08; + u16 unk_0a; + u16 newField; + void (*unk_0c)(struct UnkStruct_2000028 *data); +}; + +struct UnkStruct_2000020 +{ + struct UnkStruct_2000028 *unk_00; + u8 unk_04; + u8 unk_05; +}; + +struct PSS_ItemIconSprite +{ + struct Sprite *sprite; + u8 *tiles; + u16 palIndex; + u8 cursorArea; + u8 cursorPos; + u8 active; +}; + +struct PssQuestLogBuffer +{ + u16 species; + u16 species2; + u8 fromBox; + u8 toBox; +}; + +struct PokemonStorageSystemData +{ + u8 state; + u8 boxOption; + u8 screenChangeType; + bool8 isReshowingPSS; + u8 taskId; + struct UnkStruct_2000020 unk_0020; + struct UnkStruct_2000028 unk_0028[8]; + u16 field_B0[528 / 2]; + u16 field_2C0; + u16 field_2C2; + u8 field_2C4; + u8 field_2C5; + u8 showPartyMenuState; + bool8 unk_02C7; + u8 unk_02C8; + bool8 unk_02C9; + s16 newCurrBoxId; + u16 bg2_X; + s16 field_2CE; + u16 field_2D0; + u8 field_2D2; + u8 field_2D3; + u8 field_2D4; + u16 field_2D6; + s16 field_2D8; + u16 field_2DA; + u16 field_2DC; + u16 field_2DE; + u16 field_2E0; + u8 filler[22]; + u8 field_2F8[512]; + u8 field_4F8[512]; + u8 field_6F8; + u8 field_6F9; + u8 field_6FA; + s8 field_6FB; + u16 field_6FC[16]; + u16 field_71C; + u16 field_71E; + struct Sprite *field_720[2]; + struct Sprite *field_728[2]; + struct Sprite *field_730[2]; + u32 field_738; + u8 field_73C[80]; + u16 field_78C; + s16 wallpaperSetId; + s16 wallpaperId; + u16 field_792[360]; + u8 wallpaperChangeState; + u8 field_A63; + u8 field_A64; + s8 field_A65; + // u8 *wallpaperTiles; // used only in Emerald for Walda + /* 0a68 */ struct Sprite *movingMonSprite; + /* 0a6c */ struct Sprite *partySprites[PARTY_SIZE]; + /* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT]; + /* 0afc */ struct Sprite **field_B00; + /* 0b00 */ struct Sprite **field_B04; + /* 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; + /* 0c59 */ u8 field_C5D; + /* 0c5a */ u8 field_C5E; + /* 0c5c */ u16 field_C60; + /* 0c5e */ s16 field_C62; + /* 0c60 */ s16 field_C64; + /* 0c62 */ u16 field_C66; + /* 0c64 */ u8 field_C68; + /* 0c65 */ s8 field_C69; + /* 0c66 */ u8 field_C6A; + /* 0c67 */ u8 field_C6B; + /* 0c68 */ struct WindowTemplate menuWindow; + /* 0c70 */ struct StorageMenu menuItems[MAX_MENU_ITEMS]; + /* 0ca8 */ u8 menuItemsCount; + /* 0ca9 */ u8 menuWidth; + /* 0caa */ u8 field_CAE; + /* 0cac */ u16 field_CB0; + /* 0cb0 */ struct Sprite *field_CB4; + /* 0cb4 */ struct Sprite *field_CB8; + /* 0cb8 */ s32 field_CBC; + /* 0cbc */ s32 field_CC0; + /* 0cc0 */ u32 field_CC4; + /* 0cc4 */ u32 field_CC8; + /* 0cc8 */ s16 field_CCC; + /* 0cca */ s16 field_CCE; + /* 0ccc */ u16 field_CD0; + /* 0cce */ s8 field_CD2; + /* 0ccf */ s8 field_CD3; + /* 0cd0 */ u8 field_CD4; + /* 0cd1 */ u8 field_CD5; + /* 0cd2 */ u8 field_CD6; + /* 0cd3 */ u8 field_CD7; + /* 0cd4 */ u8 field_CD8[2]; + /* 0cd8 */ const u32 *cursorMonPalette; + /* 0cdc */ u32 cursorMonPersonality; + /* 0ce0 */ u16 cursorMonSpecies; + /* 0ce2 */ u16 cursorMonItem; + /* 0ce4 */ u16 field_CE8; + /* 0ce6 */ bool8 setMosaic; + /* 0ce7 */ u8 cursorMonMarkings; + /* 0ce8 */ u8 cursorMonLevel; + /* 0ce9 */ bool8 cursorMonIsEgg; + /* 0cea */ u8 cursorMonNick[POKEMON_NAME_LENGTH + 1]; + /* 0cf5 */ u8 cursorMonTexts[4][36]; + /* 0d88 */ bool8 (*monPlaceChangeFunc)(void); + /* 0d8c */ u8 monPlaceChangeState; + /* 0d8d */ u8 field_D91; + /* 0d90 */ struct Sprite *field_D94; + /* 0d94 */ struct Sprite *field_D98[2]; + /* 0d9c */ u16 *field_DA0; + /* 0da0 */ struct PokemonMarkMenu field_DA4; + /* 1e58 */ struct UnkPSSStruct_2002370 field_1E5C; + /* 20a0 */ struct Pokemon movingMon; + /* 2104 */ struct Pokemon field_2108; + /* 2168 */ u8 field_216C; + /* 2169 */ u8 field_216D; + /* 216c */ bool8 isSurfMon; + /* 216d */ bool8 isDiveMon; + /* 216a */ s8 field_216E; + /* 216b */ s8 field_216F; + /* 216e */ s8 field_2170; + /* 216f */ s8 field_2171; + /* 2170 */ u16 field_2172; + /* 2172 */ u16 field_2176[3]; + /* 2178 */ u8 field_2186; + /* 2179 */ u8 field_2187; + /* 217a */ u8 field_2188; + /* 217c */ union + { + struct Pokemon *mon; + struct BoxPokemon *box; + } field_218C; + /* 2180 */ u8 field_2190[40]; + /* 21a8 */ u8 field_21B8[40]; + /* 21d0 */ u8 field_21E0[POKEMON_NAME_LENGTH + 1]; + /* 21db */ u8 itemName[20]; + /* 21ef */ u8 inBoxMovingMode; + /* 21f0 */ u16 field_2200; + /* 21f4 */ struct PSS_ItemIconSprite itemIconSprites[MAX_ITEM_ICONS]; + /* 2224 */ u16 movingItem; + /* 2226 */ u16 field_2236; + /* 2228 */ struct PssQuestLogBuffer qlogBuffer; + /* 2230 */ u16 field_2238; + /* 2232 */ u16 field_223A; + /* 2234 */ u16 *field_223C; + /* 2238 */ struct Sprite *cursorMonSprite; + /* 223c */ u16 field_2244[0x40]; + /* 22bc */ u8 field_22C4[0x800]; + /* 2abc */ u8 field_2AC4[0x1800]; + /* 42bc */ u8 field_42C4[0x800]; + /* 4abc */ u8 field_4AC4[0x1000]; + /* 5abc */ u8 field_5AC4[0x800]; +}; // size=62bc + +extern struct PokemonStorageSystemData *sPSSData; + +void Cb2_EnterPSS(u8 a0); +u8 GetCurrentBoxOption(void); +struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); +void SetBoxWallpaper(u8 boxId, u8 wallpaperId); +void SetCurrentBox(u8 boxId); +void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon * dst); +void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * src); + +void Cb2_ExitPSS(void); +void FreeBoxSelectionPopupSpriteGfx(void); +void sub_808C940(u8 curBox); +void sub_808C950(void); +u8 HandleBoxChooseSelectionInput(void); +void LoadBoxSelectionPopupSpriteGfx(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal); +void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value); +u32 GetCurrentBoxMonData(u8 boxPosition, s32 request); +u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst); + +void sub_80922C0(void); +void sub_8092340(void); +bool8 sub_80924A8(void); +void sub_8092AE4(void); +void sub_8092B3C(u8 a0); +void sub_8092B50(void); +void sub_8092B5C(void); +u8 sub_8092B70(void); +void sub_8092F54(void); +void sub_8093174(void); +void sub_8093194(void); +bool8 sub_80931EC(void); +void sub_8093264(void); +void sub_8093630(void); +void sub_8093660(void); +void sub_80936B8(void); +void sub_80937B4(void); +void sub_8094D14(u8 a0); +u8 sub_8094D34(void); +void sub_8094D60(void); +void sub_8094D84(void); +bool8 sub_8094F90(void); +s16 sub_8094F94(void); +void sub_8095024(void); +bool8 sub_8095050(void); +void sub_80950A4(void); +void sub_80950BC(u8 a0); +bool8 sub_80950D0(void); +void sub_8095B5C(void); +void sub_8096088(void); +void sub_80960C0(void); +bool8 sub_809610C(void); +const u8 *GetMovingItemName(void); +void sub_80966F4(void); +bool8 sub_8096728(void); +bool8 sub_80967C0(void); +void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2); +void sub_8096BF8(void); +void AddMenu(void); +bool8 CanMovePartyMon(void); +bool8 CanShiftMon(void); +bool8 DoMonPlaceChange(void); +bool8 DoWallpaperGfxChange(void); +u8 GetBoxCursorPosition(void); +u16 GetMovingItem(void); +u8 HandleInput(void); +void InitCanReleaseMonVars(void); +void InitMonPlaceChange(u8 a0); +bool8 IsActiveItemMoving(void); +bool8 IsCursorOnCloseBox(void); +bool8 IsMonBeingMoved(void); +void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos); +void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos); +void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos); +void Item_TakeMons(u8 cursorArea, u8 cursorPos); +void PrintItemDescription(void); +void ReleaseMon(void); +s8 RunCanReleaseMon(void); +bool8 ScrollToBox(void); +void SetMonMarkings(u8 markings); +void SetMovingMonPriority(u8 priority); +void SetUpScrollToBox(u8 targetBox); +void SetWallpaperForCurrentBox(u8 wallpaper); +bool8 TryStorePartyMonInBox(u8 boxId); +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); + +void sub_808FFAC(void); +struct Sprite * CreateMonIconSprite(u16 species, u32 pid, s16 x, s16 y, u8 priority, u8 subpriority); +void CreatePartyMonsSprites(bool8 species); +void sub_80909F4(void); +bool8 sub_8090A60(void); +void sub_8090B98(s16 yDelta); +void DestroyAllPartyMonIcons(void); +void sub_8091114(void); +bool8 sub_8091150(void); +void sub_80913DC(u8 box); +bool8 sub_809140C(void); +void sub_80920FC(bool8 species); +void CreateMovingMonIcon(void); +void sub_8090E08(u8 boxId, u8 cursorPos); +bool8 sub_8090E74(void); +void sub_8090CC0(u8 cursorArea, u8 cursorPos); +void sub_8090D58(u8 cursorArea, u8 cursorPos); +void DestroyPartyMonIcon(u8 partyId); +void DestroyMovingMonIcon(void); +s16 GetFirstFreeBoxSpot(u8 boxId); +void sub_80901EC(u8 boxPosition); +void sub_8090FC4(u8 mode, u8 position); +bool8 sub_8091084(void); +void sub_80910CC(void); +u8 CountPartyMons(void); +u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore); + +s8 sub_8094E50(u8 a0); +bool8 sub_8095474(u8 action); +u8 sub_8095AA0(void); +bool8 sub_8095ABC(void); +void sub_8095D44(u8 cursorArea, u8 cursorPos); +void sub_8094CD4(u8 *arg0, u8 *arg1); +void sub_8094D40(void); +void sub_8092BAC(bool8 arg0); +void DestroyBoxMonIconAtPosition(u8 boxPosition); +void SetBoxMonIconObjMode(u8 cursorPos, u8 objMode); +void SetPartyMonIconObjMode(u8 cursorPos, u8 objMode); + +#endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H diff --git a/include/sprite.h b/include/sprite.h index c53919159..8f95eb788 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -254,6 +254,7 @@ extern const struct SpriteTemplate gDummySpriteTemplate; extern struct Sprite gSprites[]; extern struct OamMatrix gOamMatrices[]; extern bool8 gAffineAnimsDisabled; +extern u16 gReservedSpriteTileCount; void ResetSpriteData(void); void AnimateSprites(void); diff --git a/include/string_util.h b/include/string_util.h index 32e74e031..45adac78d 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -30,8 +30,8 @@ u8 *GetExpandedPlaceholder(u32 id); u8 *StringFill(u8 *dest, u8 c, u16 n); u8 *StringCopyPadded(u8 *dest, const u8 *src, u8 c, u16 n); u8 *StringFillWithTerminator(u8 *dest, u16 n); -u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n); -u32 StringLength_Multibyte(u8 *str); +u8 *StringCopyN_Multibyte(u8 *dest, const u8 *src, u32 n); +u32 StringLength_Multibyte(const u8 *str); u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color); bool32 IsStringJapanese(u8 *str); bool32 sub_800924C(u8 *str, s32 n); diff --git a/include/strings.h b/include/strings.h index be3555780..6016dc3e3 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1358,4 +1358,87 @@ extern const u8 gText_BoxName[]; extern const u8 gText_PkmnsNickname[]; extern const u8 gText_RivalsName[]; +// pokemon_storage_system +extern const u8 gText_WithdrawPokemon[]; +extern const u8 gText_WithdrawMonDescription[]; +extern const u8 gText_DepositPokemon[]; +extern const u8 gText_DepositMonDescription[]; +extern const u8 gText_MovePokemon[]; +extern const u8 gText_MoveMonDescription[]; +extern const u8 gText_MoveItems[]; +extern const u8 gText_MoveItemsDescription[]; +extern const u8 gText_SeeYa[]; +extern const u8 gText_SeeYaDescription[]; +extern const u8 gText_PartyFull[]; +extern const u8 gText_JustOnePkmn[]; +extern const u8 gText_Box[]; +extern const u8 gText_ExitFromBox[]; +extern const u8 gText_WhatDoYouWantToDo[]; +extern const u8 gText_PleasePickATheme[]; +extern const u8 gText_PickTheWallpaper[]; +extern const u8 gText_PkmnIsSelected[]; +extern const u8 gText_JumpToWhichBox[]; +extern const u8 gText_DepositInWhichBox[]; +extern const u8 gText_PkmnWasDeposited[]; +extern const u8 gText_BoxIsFull2[]; +extern const u8 gText_ReleaseThisPokemon[]; +extern const u8 gText_PkmnWasReleased[]; +extern const u8 gText_ByeByePkmn[]; +extern const u8 gText_MarkYourPkmn[]; +extern const u8 gText_ThatsYourLastPkmn[]; +extern const u8 gText_YourPartysFull[]; +extern const u8 gText_YoureHoldingAPkmn[]; +extern const u8 gText_WhichOneWillYouTake[]; +extern const u8 gText_YouCantReleaseAnEgg[]; +extern const u8 gText_ContinueBoxOperations[]; +extern const u8 gText_PkmnCameBack[]; +extern const u8 gText_WasItWorriedAboutYou[]; +extern const u8 gText_FourEllipsesExclamation[]; +extern const u8 gText_PleaseRemoveTheMail[]; +extern const u8 gText_PkmnIsSelected[]; +extern const u8 gText_GiveToAPkmn[]; +extern const u8 gText_PlacedItemInBag[]; +extern const u8 gText_BagIsFull2[]; +extern const u8 gText_PutItemInBag[]; +extern const u8 gText_ItemIsNowHeld[]; +extern const u8 gText_ChangedToNewItem[]; +extern const u8 gText_MailCantBeStored[]; +extern const u8 gPCText_Cancel[]; +extern const u8 gPCText_Store[]; +extern const u8 gPCText_Withdraw[]; +extern const u8 gPCText_Move[]; +extern const u8 gPCText_Shift[]; +extern const u8 gPCText_Place[]; +extern const u8 gPCText_Summary[]; +extern const u8 gPCText_Release[]; +extern const u8 gPCText_Mark[]; +extern const u8 gPCText_Jump[]; +extern const u8 gPCText_Wallpaper[]; +extern const u8 gPCText_Name[]; +extern const u8 gPCText_Take[]; +extern const u8 gPCText_Give[]; +extern const u8 gPCText_Switch[]; +extern const u8 gPCText_Bag[]; +extern const u8 gPCText_Info[]; +extern const u8 gPCText_Scenery1[]; +extern const u8 gPCText_Scenery2[]; +extern const u8 gPCText_Scenery3[]; +extern const u8 gPCText_Etcetera[]; +extern const u8 gPCText_Forest[]; +extern const u8 gPCText_City[]; +extern const u8 gPCText_Desert[]; +extern const u8 gPCText_Savanna[]; +extern const u8 gPCText_Crag[]; +extern const u8 gPCText_Volcano[]; +extern const u8 gPCText_Snow[]; +extern const u8 gPCText_Cave[]; +extern const u8 gPCText_Beach[]; +extern const u8 gPCText_Seafloor[]; +extern const u8 gPCText_River[]; +extern const u8 gPCText_Sky[]; +extern const u8 gPCText_PolkaDot[]; +extern const u8 gPCText_Pokecenter[]; +extern const u8 gPCText_Machine[]; +extern const u8 gPCText_Simple[]; + #endif //GUARD_STRINGS_H diff --git a/include/text.h b/include/text.h index ff8b033e9..f1bf8b942 100644 --- a/include/text.h +++ b/include/text.h @@ -128,6 +128,7 @@ #define EXT_CTRL_CODE_COLOR 0x1 #define EXT_CTRL_CODE_HIGHLIGHT 0x2 #define EXT_CTRL_CODE_SHADOW 0x3 +#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x4 // #define EXT_CTRL_CODE_UNKNOWN_7 0x7 // diff --git a/include/window.h b/include/window.h index 5f3630afb..c8b83af7a 100644 --- a/include/window.h +++ b/include/window.h @@ -69,10 +69,10 @@ void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); void CallWindowFunction(u8 windowId, WindowFunc func); bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value); u32 GetWindowAttribute(u8 windowId, u8 attributeId); -u16 AddWindow8Bit(struct WindowTemplate *template); -u16 AddWindow8Bit(struct WindowTemplate *template); +u16 AddWindow8Bit(const struct WindowTemplate *template); +void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue); void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); +void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); void CopyWindowToVram8Bit(u8 windowId, u8 mode); extern void *gWindowBgTilemapBuffers[]; diff --git a/ld_script.txt b/ld_script.txt index 0e0409a33..4538c714e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -127,7 +127,15 @@ SECTIONS { src/option_menu.o(.text); src/pokedex.o(.text); src/trainer_card.o(.text); - asm/pokemon_storage_system.o(.text); + src/pokemon_storage_system.o(.text); + src/pokemon_storage_system_2.o(.text); + src/pokemon_storage_system_3.o(.text); + src/pokemon_storage_system_4.o(.text); + src/pokemon_storage_system_5.o(.text); + src/pokemon_storage_system_6.o(.text); + src/pokemon_storage_system_7.o(.text); + src/pokemon_storage_system_8.o(.text); + src/pokemon_storage_system_9.o(.text); src/pokemon_icon.o(.text); src/script_movement.o(.text); src/fldeff_cut.o(.text); @@ -447,7 +455,13 @@ SECTIONS { src/field_effect.o(.rodata); src/option_menu.o(.rodata); src/trainer_card.o(.rodata); - data/pokemon_storage_system.o(.rodata); + src/pokemon_storage_system_2.o(.rodata); + src/pokemon_storage_system_3.o(.rodata); + src/pokemon_storage_system_4.o(.rodata); + src/pokemon_storage_system_5.o(.rodata); + src/pokemon_storage_system_6.o(.rodata); + src/pokemon_storage_system_7.o(.rodata); + src/pokemon_storage_system_8.o(.rodata); src/pokemon_icon.o(.rodata); src/fldeff_cut.o(.rodata); src/map_name_popup.o(.rodata); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index a0b2c03a3..01a94c075 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -1258,7 +1258,7 @@ static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId) static void Task_ContextMenu_FromPokemonPC(u8 taskId) { - sResources->exitCallback = sub_808CE60; + sResources->exitCallback = Cb2_ReturnToPSS; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } @@ -553,21 +553,21 @@ u16 GetBgAttribute(u8 bg, u8 attributeId) { switch (attributeId) { - case 1: + case BG_ATTR_CHARBASEINDEX: return GetBgControlAttribute(bg, BG_CTRL_ATTR_CHARBASEINDEX); - case 2: + case BG_ATTR_MAPBASEINDEX: return GetBgControlAttribute(bg, BG_CTRL_ATTR_MAPBASEINDEX); - case 3: + case BG_ATTR_SCREENSIZE: return GetBgControlAttribute(bg, BG_CTRL_ATTR_SCREENSIZE); - case 4: + case BG_ATTR_PALETTEMODE: return GetBgControlAttribute(bg, BG_CTRL_ATTR_PALETTEMODE); - case 7: + case BG_ATTR_PRIORITY: return GetBgControlAttribute(bg, BG_CTRL_ATTR_PRIORITY); - case 5: + case BG_ATTR_MOSAIC: return GetBgControlAttribute(bg, BG_CTRL_ATTR_MOSAIC); - case 6: + case BG_ATTR_WRAPAROUND: return GetBgControlAttribute(bg, BG_CTRL_ATTR_WRAPAROUND); - case 8: + case BG_ATTR_TEXTORAFFINEMODE: switch (GetBgType(bg)) { case 0: @@ -577,9 +577,9 @@ u16 GetBgAttribute(u8 bg, u8 attributeId) default: return 0; } - case 9: + case BG_ATTR_BGTYPE: return GetBgType(bg); - case 10: + case BG_ATTR_BASETILE: return sGpuBgConfigs2[bg].baseTile; default: return -1; diff --git a/src/box_party_pokemon_dropdown.c b/src/box_party_pokemon_dropdown.c index a74f1611c..b194777f3 100644 --- a/src/box_party_pokemon_dropdown.c +++ b/src/box_party_pokemon_dropdown.c @@ -3,7 +3,7 @@ #include "box_party_pokemon_dropdown.h" #include "malloc.h" -struct UnkStruct_203ABE4_Sub +struct BPPD_MapRect { s16 destX; s16 destY; @@ -13,27 +13,27 @@ struct UnkStruct_203ABE4_Sub s16 destY2; }; -struct UnkStruct_203ABE4 +struct BPPD_Struct { - struct UnkStruct_203ABE4_Sub map1Rect; - struct UnkStruct_203ABE4_Sub map2Rect; + struct BPPD_MapRect map1Rect; + struct BPPD_MapRect map2Rect; const void * src1; const void * src2; u16 src1Height; u16 src1Width; + u16 src2Width; u16 src2Height; - u16 unk_26; - u16 unk_28; + u16 bytesPerRow; u8 mapSize; u8 bgId; bool8 bgUpdateScheduled; }; -static EWRAM_DATA struct UnkStruct_203ABE4 * sBoxPartyPokemonDropdownPtr = NULL; +static EWRAM_DATA struct BPPD_Struct * sBoxPartyPokemonDropdownPtr = NULL; static EWRAM_DATA u16 sBoxPartyPokemonDropdownCount = 0; -static void PushMap1(u8 a0); -static void PushMap2(u8 a0); +static void PushMap1(u8 idx); +static void PushMap2(u8 idx); static const struct { u16 height; @@ -52,10 +52,10 @@ static const struct { } }; -void sub_80F7AD8(u8 num) +void AllocBoxPartyPokemonDropdowns(u8 num) { u16 i; - sBoxPartyPokemonDropdownPtr = Alloc(num * sizeof(struct UnkStruct_203ABE4)); + sBoxPartyPokemonDropdownPtr = Alloc(num * sizeof(struct BPPD_Struct)); sBoxPartyPokemonDropdownCount = sBoxPartyPokemonDropdownPtr == NULL ? 0 : num; for (i = 0; i < sBoxPartyPokemonDropdownCount; i++) { @@ -64,149 +64,149 @@ void sub_80F7AD8(u8 num) } } -void sub_80F7B2C(void) +void FreeBoxPartyPokemonDropdowns(void) { Free(sBoxPartyPokemonDropdownPtr); } -void sub_80F7B40(void) +void CopyAllBoxPartyPokemonDropdownsToVram(void) { int i; for (i = 0; i < sBoxPartyPokemonDropdownCount; i++) { if (sBoxPartyPokemonDropdownPtr[i].bgUpdateScheduled == TRUE) - sub_80F7E54(i); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(i); } } -void sub_80F7B80(u8 a0, u8 a1, const void * a2, u16 a3, u16 a4) +void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void * src, u16 width, u16 height) { u16 screenSize; u16 bgType; - if (a0 < sBoxPartyPokemonDropdownCount) + if (idx < sBoxPartyPokemonDropdownCount) { - sBoxPartyPokemonDropdownPtr[a0].src1 = NULL; - sBoxPartyPokemonDropdownPtr[a0].src2 = a2; - sBoxPartyPokemonDropdownPtr[a0].bgId = a1; - sBoxPartyPokemonDropdownPtr[a0].src2Height = a3; - sBoxPartyPokemonDropdownPtr[a0].unk_26 = a4; - screenSize = GetBgAttribute(a1, BG_ATTR_SCREENSIZE); - bgType = GetBgAttribute(a1, BG_ATTR_BGTYPE); - sBoxPartyPokemonDropdownPtr[a0].src1Height = sBGdims[bgType][screenSize].height; - sBoxPartyPokemonDropdownPtr[a0].src1Width = sBGdims[bgType][screenSize].width; + sBoxPartyPokemonDropdownPtr[idx].src1 = NULL; + sBoxPartyPokemonDropdownPtr[idx].src2 = src; + sBoxPartyPokemonDropdownPtr[idx].bgId = bgId; + sBoxPartyPokemonDropdownPtr[idx].src2Width = width; + sBoxPartyPokemonDropdownPtr[idx].src2Height = height; + screenSize = GetBgAttribute(bgId, BG_ATTR_SCREENSIZE); + bgType = GetBgAttribute(bgId, BG_ATTR_BGTYPE); + sBoxPartyPokemonDropdownPtr[idx].src1Height = sBGdims[bgType][screenSize].height; + sBoxPartyPokemonDropdownPtr[idx].src1Width = sBGdims[bgType][screenSize].width; if (bgType != 0) - sBoxPartyPokemonDropdownPtr[a0].mapSize = 1; + sBoxPartyPokemonDropdownPtr[idx].mapSize = 1; else - sBoxPartyPokemonDropdownPtr[a0].mapSize = 2; - sBoxPartyPokemonDropdownPtr[a0].unk_28 = a3 * sBoxPartyPokemonDropdownPtr[a0].mapSize; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.width = a3; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.height = a4; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX = 0; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY = 0; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX2 = 0; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY2 = 0; - sBoxPartyPokemonDropdownPtr[a0].map1Rect = sBoxPartyPokemonDropdownPtr[a0].map2Rect; - sBoxPartyPokemonDropdownPtr[a0].bgUpdateScheduled = TRUE; + sBoxPartyPokemonDropdownPtr[idx].mapSize = 2; + sBoxPartyPokemonDropdownPtr[idx].bytesPerRow = width * sBoxPartyPokemonDropdownPtr[idx].mapSize; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = 0; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = 0; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 = 0; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 = 0; + sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect; + sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; } } -void sub_80F7C7C(u8 a0, const void * a1) +void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void * src) { - if (a0 < sBoxPartyPokemonDropdownCount) + if (idx < sBoxPartyPokemonDropdownCount) { - sBoxPartyPokemonDropdownPtr[a0].src1 = a1; - sBoxPartyPokemonDropdownPtr[a0].bgUpdateScheduled = TRUE; + sBoxPartyPokemonDropdownPtr[idx].src1 = src; + sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; } } -void sub_80F7CAC(u8 a0, u16 a1, u16 a2) +void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y) { - if (a0 < sBoxPartyPokemonDropdownCount) + if (idx < sBoxPartyPokemonDropdownCount) { - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX2 = a1; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY2 = a2; - sBoxPartyPokemonDropdownPtr[a0].bgUpdateScheduled = TRUE; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 = x; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 = y; + sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; } } -void sub_80F7CE8(u8 a0, u16 a1, u16 a2, u16 a3, u16 a4) +void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height) { - if (a0 < sBoxPartyPokemonDropdownCount) + if (idx < sBoxPartyPokemonDropdownCount) { - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX = a1; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY = a2; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.width = a3; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.height = a4; - sBoxPartyPokemonDropdownPtr[a0].bgUpdateScheduled = TRUE; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = x; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = y; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height; + sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; } } -void sub_80F7D30(u8 a0, u8 a1, s8 a2) +void AdjustBoxPartyPokemonDropdownPos(u8 idx, u8 op, s8 param) { - if (a0 < sBoxPartyPokemonDropdownCount) + if (idx < sBoxPartyPokemonDropdownCount) { - switch (a1) + switch (op) { - case 0: - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX2 += a2; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.width -= a2; + case BPPD_MOVE_INNER_LEFT: + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.width -= param; break; - case 1: - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX += a2; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.width += a2; + case BPPD_MOVE_OUTER_LEFT: + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX += param; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.width += param; break; - case 2: - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY2 += a2; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.height -= a2; + case BPPD_MOVE_INNER_TOP: + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.height -= param; break; - case 3: - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY -= a2; - sBoxPartyPokemonDropdownPtr[a0].map2Rect.height += a2; + case BPPD_MOVE_OUTER_TOP: + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY -= param; + sBoxPartyPokemonDropdownPtr[idx].map2Rect.height += param; break; - case 4: - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX2 += a2; + case BPPD_MOVE_INNER_X: + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param; break; - case 5: - sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY2 += a2; + case BPPD_MOVE_INNER_Y: + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param; break; } - sBoxPartyPokemonDropdownPtr[a0].bgUpdateScheduled = TRUE; + sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; } } -void sub_80F7E54(u8 a0) +void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx) { - if (a0 < sBoxPartyPokemonDropdownCount) + if (idx < sBoxPartyPokemonDropdownCount) { - if (sBoxPartyPokemonDropdownPtr[a0].src1 != NULL) - PushMap1(a0); - PushMap2(a0); - sBoxPartyPokemonDropdownPtr[a0].map1Rect = sBoxPartyPokemonDropdownPtr[a0].map2Rect; + if (sBoxPartyPokemonDropdownPtr[idx].src1 != NULL) + PushMap1(idx); + PushMap2(idx); + sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect; } } -static void PushMap1(u8 a0) +static void PushMap1(u8 idx) { int i; - int r9 = sBoxPartyPokemonDropdownPtr[a0].mapSize * sBoxPartyPokemonDropdownPtr[a0].src1Height; - const void * addr = sBoxPartyPokemonDropdownPtr[a0].src1 + r9 * sBoxPartyPokemonDropdownPtr[a0].map1Rect.destY2 + sBoxPartyPokemonDropdownPtr[a0].map1Rect.destX2 * sBoxPartyPokemonDropdownPtr[a0].mapSize; - for (i = 0; i < sBoxPartyPokemonDropdownPtr[a0].map1Rect.height; i++) + int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src1Height; + const void * addr = sBoxPartyPokemonDropdownPtr[idx].src1 + run * sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2 * sBoxPartyPokemonDropdownPtr[idx].mapSize; + for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map1Rect.height; i++) { - CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[a0].bgId, addr, sBoxPartyPokemonDropdownPtr[a0].map1Rect.destX2, sBoxPartyPokemonDropdownPtr[a0].map1Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[a0].map1Rect.width, 1); - addr += r9; + CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map1Rect.width, 1); + addr += run; } } -static void PushMap2(u8 a0) +static void PushMap2(u8 idx) { int i; - int r9 = sBoxPartyPokemonDropdownPtr[a0].mapSize * sBoxPartyPokemonDropdownPtr[a0].src2Height; - const void * addr = sBoxPartyPokemonDropdownPtr[a0].src2 + r9 * sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY + sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX * sBoxPartyPokemonDropdownPtr[a0].mapSize; - for (i = 0; i < sBoxPartyPokemonDropdownPtr[a0].map2Rect.height; i++) + int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src2Width; + const void * addr = sBoxPartyPokemonDropdownPtr[idx].src2 + run * sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX * sBoxPartyPokemonDropdownPtr[idx].mapSize; + for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map2Rect.height; i++) { - CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[a0].bgId, addr, sBoxPartyPokemonDropdownPtr[a0].map2Rect.destX2, sBoxPartyPokemonDropdownPtr[a0].map2Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[a0].map2Rect.width, 1); - addr += r9; + CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map2Rect.width, 1); + addr += run; } } diff --git a/src/field_specials.c b/src/field_specials.c index 5be7a4d1c..474fcd081 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -442,7 +442,7 @@ bool8 IsThereRoomInAnyBoxForMorePokemon(void) { for (j = 0; j < IN_BOX_COUNT; j++) { - if (GetBoxMonDataFromAnyBox(i, j, MON_DATA_SPECIES) == SPECIES_NONE) + if (GetBoxMonDataAt(i, j, MON_DATA_SPECIES) == SPECIES_NONE) return TRUE; } } @@ -1642,7 +1642,7 @@ void ChangeBoxPokemonNickname(void) static void ChangeBoxPokemonNickname_CB(void) { - SetBoxMonNickFromAnyBox(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2); + SetBoxMonNickAt(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2); CB2_ReturnToFieldContinueScriptPlayMapMusic(); } @@ -1980,11 +1980,11 @@ u16 GetPCBoxToSendMon(void) bool8 ShouldShowBoxWasFullMessage(void) { - if (FlagGet(FLAG_SYS_CHANGED_BOX_TO_STORE_MON)) + if (FlagGet(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE)) return FALSE; if (StorageGetCurrentBox() == VarGet(VAR_PC_BOX_TO_SEND_MON)) return FALSE; - FlagSet(FLAG_SYS_CHANGED_BOX_TO_STORE_MON); + FlagSet(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE); return TRUE; } @@ -2001,7 +2001,7 @@ bool8 IsDestinationBoxFull(void) if (GetBoxMonData(GetBoxedMonPtr(i, j), MON_DATA_SPECIES, NULL) == SPECIES_NONE) { if (GetPCBoxToSendMon() != i) - FlagClear(FLAG_SYS_CHANGED_BOX_TO_STORE_MON); + FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE); VarSet(VAR_PC_BOX_TO_SEND_MON, i); return ShouldShowBoxWasFullMessage(); } diff --git a/src/graphics.c b/src/graphics.c index 69e804fd9..5a802cd35 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1247,10 +1247,10 @@ const u32 gUnknown_8E9BF48[] = INCBIN_U32("graphics/interface/link_rfu_status.4b const u16 gUnknown_8E9C14C[] = INCBIN_U16("graphics/interface/pokedex_abc.gbapal"); const u32 gUnknown_8E9C16C[] = INCBIN_U32("graphics/interface/pokedex_abc.4bpp.lz"); -const u16 gUnknown_8E9C3D8[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); +const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); const u16 gUnknown_8E9C3F8[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal"); const u16 gUnknown_8E9C418[] = INCBIN_U16("graphics/interface/box_tiles_pal3.gbapal"); -const u32 gUnknown_8E9C438[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz"); +const u32 gPSSMenu_Gfx[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz"); const u32 gUnknown_8E9CAEC[] = INCBIN_U32("graphics/unknown/unknown_E9CAEC.bin.lz"); diff --git a/src/item_menu.c b/src/item_menu.c index 4131e7fd5..e048b4b78 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1784,7 +1784,7 @@ static void GoToBerryPouch_PCBox(void) static void ReturnToBagMenuFromSubmenu_PCBox(void) { - GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_LAST, sub_808CE60); + GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_LAST, Cb2_ReturnToPSS); } static void Task_ItemContext_Sell(u8 taskId) diff --git a/src/naming_screen.c b/src/naming_screen.c index 364fc3fe6..b8b121535 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1986,7 +1986,7 @@ static const struct NamingScreenTemplate sPlayerNamingScreenTemplate = { static const struct NamingScreenTemplate sPcBoxNamingScreenTemplate = { .copyExistingString = FALSE, - .maxChars = 8/*BOX_NAME_LENGTH*/, + .maxChars = BOX_NAME_LENGTH, .iconFunction = 2, .addGenderIcon = 0, .initialPage = KBPAGE_LETTERS_UPPER, diff --git a/src/pokemon.c b/src/pokemon.c index f1f7834b1..b9e62502d 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3661,7 +3661,7 @@ static u8 SendMonToPC(struct Pokemon* mon) gSpecialVar_MonBoxId = boxNo; gSpecialVar_MonBoxPos = boxPos; if (GetPCBoxToSendMon() != boxNo) - FlagClear(FLAG_SYS_CHANGED_BOX_TO_STORE_MON); + FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE); VarSet(VAR_PC_BOX_TO_SEND_MON, boxNo); return MON_GIVEN_TO_PC; } @@ -3806,7 +3806,7 @@ static bool8 IsPokemonStorageFull(void) for (i = 0; i < 14; i++) for (j = 0; j < 30; j++) - if (GetBoxMonDataFromAnyBox(i, j, MON_DATA_SPECIES) == SPECIES_NONE) + if (GetBoxMonDataAt(i, j, MON_DATA_SPECIES) == SPECIES_NONE) return FALSE; return TRUE; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c new file mode 100644 index 000000000..b69fe7de4 --- /dev/null +++ b/src/pokemon_storage_system.c @@ -0,0 +1,172 @@ +#include "global.h" +#include "gflib.h" +#include "pokemon_storage_system_internal.h" +#include "constants/species.h" + +void BackupPokemonStorage(struct PokemonStorage * dest) +{ + *dest = *gPokemonStoragePtr; +} + +void RestorePokemonStorage(struct PokemonStorage * src) +{ + *gPokemonStoragePtr = *src; +} + +// Functions here are general utility functions. +u8 StorageGetCurrentBox(void) +{ + return gPokemonStoragePtr->currentBox; +} + +void SetCurrentBox(u8 boxId) +{ + if (boxId < TOTAL_BOXES_COUNT) + gPokemonStoragePtr->currentBox = boxId; +} + +u32 GetBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + return GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request); + else + return 0; +} + +void SetBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, const void *value) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + SetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request, value); +} + +u32 GetCurrentBoxMonData(u8 boxPosition, s32 request) +{ + return GetBoxMonDataAt(gPokemonStoragePtr->currentBox, boxPosition, request); +} + +void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value) +{ + SetBoxMonDataAt(gPokemonStoragePtr->currentBox, boxPosition, request, value); +} + +void GetBoxMonNickAt(u8 boxId, u8 boxPosition, u8 *dst) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_NICKNAME, dst); + else + *dst = EOS; +} + +void SetBoxMonNickAt(u8 boxId, u8 boxPosition, const u8 *nick) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + SetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_NICKNAME, nick); +} + +u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + return GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request, dst); + else + return 0; +} + +void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * src) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + gPokemonStoragePtr->boxes[boxId][boxPosition] = *src; +} + +void CopyBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * dst) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + *dst = gPokemonStoragePtr->boxes[boxId][boxPosition]; +} + +void CreateBoxMonAt(u8 boxId, u8 boxPosition, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 personality, u8 otIDType, u32 otID) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + { + CreateBoxMon(&gPokemonStoragePtr->boxes[boxId][boxPosition], + species, + level, + fixedIV, + hasFixedPersonality, personality, + otIDType, otID); + } +} + +void ZeroBoxMonAt(u8 boxId, u8 boxPosition) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + ZeroBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition]); +} + +void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon * dst) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + BoxMonToMon(&gPokemonStoragePtr->boxes[boxId][boxPosition], dst); +} + +struct BoxPokemon * GetBoxedMonPtr(u8 boxId, u8 boxPosition) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + return &gPokemonStoragePtr->boxes[boxId][boxPosition]; + else + return NULL; +} + +u8 *GetBoxNamePtr(u8 boxId) +{ + if (boxId < TOTAL_BOXES_COUNT) + return gPokemonStoragePtr->boxNames[boxId]; + else + return NULL; +} + +u8 GetBoxWallpaper(u8 boxId) +{ + if (boxId < TOTAL_BOXES_COUNT) + return gPokemonStoragePtr->boxWallpapers[boxId]; + else + return 0; +} + +void SetBoxWallpaper(u8 boxId, u8 wallpaperId) +{ + if (boxId < TOTAL_BOXES_COUNT && wallpaperId < WALLPAPER_COUNT) + gPokemonStoragePtr->boxWallpapers[boxId] = wallpaperId; +} + +s16 SeekToNextMonInBox(struct BoxPokemon * boxMons, s8 currIndex, u8 maxIndex, u8 flags) +{ + // flags: + // bit 0: Allow eggs + // bit 1: Search backwards + s16 i; + s16 adder; + if (flags == 0 || flags == 1) + adder = 1; + else + adder = -1; + + if (flags == 1 || flags == 3) + { + for (i = currIndex + adder; i >= 0 && i <= maxIndex; i += adder) + { + if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE) + return i; + } + } + else + { + for (i = currIndex + adder; i >= 0 && i <= maxIndex; i += adder) + { + if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetBoxMonData(&boxMons[i], MON_DATA_IS_EGG)) + return i; + } + } + + return -1; +} diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c new file mode 100644 index 000000000..b964d3385 --- /dev/null +++ b/src/pokemon_storage_system_2.c @@ -0,0 +1,653 @@ +#include "global.h" +#include "gflib.h" +#include "event_data.h" +#include "field_fadetransition.h" +#include "field_weather.h" +#include "help_system.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "overworld.h" +#include "pokemon_storage_system_internal.h" +#include "script.h" +#include "strings.h" +#include "task.h" +#include "constants/species.h" +#include "constants/songs.h" +#include "constants/field_weather.h" +#include "constants/help_system.h" + +struct PSS_MenuStringPtrs +{ + const u8 *text; + const u8 *desc; +}; + +static EWRAM_DATA u8 sPreviousBoxOption = 0; +static EWRAM_DATA struct UnkPSSStruct_2002370 *sBoxSelectionPopupSpriteManager = NULL; + +static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr); +static void sub_808C9C4(u8 curBox); +static void sub_808CBA4(void); +static void UpdateBoxNameAndCountSprite_WraparoundRight(void); +static void UpdateBoxNameAndCountSprite_WraparoundLeft(void); +static void PrintBoxNameAndCountToSprite(void); +static void PrintToSpriteWithTagUnk0240(const u8 *a0, u16 x, u16 y); +static void sub_808CD64(struct Sprite * sprite); + +// Forward declarations + +static const u16 gBoxSelectionPopupPalette[]; +static const u16 gBoxSelectionPopupCenterTiles[]; +static const u16 gBoxSelectionPopupSidesTiles[]; + +static const struct PSS_MenuStringPtrs gUnknown_83CDA20[] = { + {gText_WithdrawPokemon, gText_WithdrawMonDescription}, + {gText_DepositPokemon, gText_DepositMonDescription }, + {gText_MovePokemon, gText_MoveMonDescription }, + {gText_MoveItems, gText_MoveItemsDescription }, + {gText_SeeYa, gText_SeeYaDescription } +}; + +void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer) +{ + s32 i, tileBytesToBuffer, remainingBytes; + u16 windowId; + u8 txtColor[3]; + u8 *tileData1, *tileData2; + struct WindowTemplate winTemplate = {0}; + + winTemplate.width = 24; + winTemplate.height = 2; + windowId = AddWindow(&winTemplate); + FillWindowPixelBuffer(windowId, PIXEL_FILL(zero2)); + tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA); + tileData2 = (winTemplate.width * 32) + tileData1; + + if (!zero1) + txtColor[0] = TEXT_COLOR_TRANSPARENT; + else + txtColor[0] = zero2; + txtColor[1] = TEXT_DYNAMIC_COLOR_6; + txtColor[2] = TEXT_DYNAMIC_COLOR_5; + AddTextPrinterParameterized4(windowId, 1, 0, 2, 0, 0, txtColor, -1, string); + + tileBytesToBuffer = bytesToBuffer; + if (tileBytesToBuffer > 6) + tileBytesToBuffer = 6; + remainingBytes = bytesToBuffer - 6; + if (tileBytesToBuffer > 0) + { + for (i = tileBytesToBuffer; i != 0; i--) + { + CpuCopy16(tileData1, dst, 0x80); + CpuCopy16(tileData2, dst + 0x80, 0x80); + tileData1 += 0x80; + tileData2 += 0x80; + dst += 0x100; + } + } + + // Never used. bytesToBuffer is always passed <= 6, so remainingBytes is always <= 0 here + if (remainingBytes > 0) + CpuFill16((zero2 << 4) | zero2, dst, (u32)(remainingBytes) * 0x100); + + RemoveWindow(windowId); +} + +static void PrintStringToBufferCopyNow(const u8 *string, void *dst, u16 rise, u8 bgClr, u8 fgClr, u8 shClr, u8 *buffer) +{ + u32 var; + u8 windowId; + u8 txtColor[3]; + u8 *tileData1, *tileData2; + struct WindowTemplate winTemplate = {0}; + + winTemplate.width = StringLength_Multibyte(string); + winTemplate.height = 2; + var = winTemplate.width * 32; + windowId = AddWindow(&winTemplate); + FillWindowPixelBuffer(windowId, PIXEL_FILL(bgClr)); + tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA); + tileData2 = (winTemplate.width * 32) + tileData1; + txtColor[0] = bgClr; + txtColor[1] = fgClr; + txtColor[2] = shClr; + AddTextPrinterParameterized4(windowId, 1, 0, 2, 0, 0, txtColor, -1, string); + CpuCopy16(tileData1, dst, var); + CpuCopy16(tileData2, dst + rise, var); + RemoveWindow(windowId); +} + +static u8 CountMonsInBox(u8 boxId) +{ + u16 i, count; + + for (i = 0, count = 0; i < IN_BOX_COUNT; i++) + { + if (GetBoxMonDataAt(boxId, i, MON_DATA_SPECIES) != SPECIES_NONE) + count++; + } + + return count; +} + +s16 GetFirstFreeBoxSpot(u8 boxId) +{ + u16 i; + + for (i = 0; i < IN_BOX_COUNT; i++) + { + if (GetBoxMonDataAt(boxId, i, MON_DATA_SPECIES) == SPECIES_NONE) + return i; + } + + return -1; // all spots are taken +} + +u8 CountPartyNonEggMons(void) +{ + u16 i, count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + count++; + } + } + + return count; +} + +u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore) +{ + u16 i, count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (i != slotToIgnore + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) + && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) + { + count++; + } + } + + return count; +} + +u16 CountPartyAliveNonEggMons_IgnoreVar0x8004Slot(void) +{ + return CountPartyAliveNonEggMonsExcept(gSpecialVar_0x8004); +} + +u8 CountPartyMons(void) +{ + u16 i, count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE) + { + count++; + } + } + + return count; +} + +static u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n) +{ + u8 *str; + + for (str = StringCopy(dst, src); str < dst + n; str++) + *str = CHAR_SPACE; + + *str = EOS; + return str; +} + +static void sub_808C25C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) +{ + u16 i; + + dest_width *= 2; + dest += dest_top * 0x20 + dest_left; + src += src_top * src_width + src_left; + for (i = 0; i < dest_height; i++) + { + CpuCopy16(src, dest, dest_width); + dest += 0x20; + src += src_width; + } +} + +static void sub_808C2D8(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height) +{ + u16 i; + + dest += dest_top * 0x20 + dest_left; + width *= 2; + for (i = 0; i < height; dest += 0x20, i++) + Dma3FillLarge16_(0, dest, width); +} + +static void Task_PokemonStorageSystemPC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + SetHelpContext(HELPCONTEXT_BILLS_PC); + PSS_CreatePCMenu(task->data[1], &task->data[15]); + LoadStdWindowFrameGfx(); + DrawDialogueFrame(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gUnknown_83CDA20[task->data[1]].desc, TEXT_SPEED_FF, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + CopyWindowToVram(0, 3); + CopyWindowToVram(task->data[15], 3); + task->data[0]++; + break; + case 1: + if (IsWeatherNotFadingIn()) + { + task->data[0]++; + } + break; + case 2: + task->data[2] = Menu_ProcessInput(); + switch(task->data[2]) + { + case MENU_NOTHING_CHOSEN: + task->data[3] = task->data[1]; + if (gMain.newKeys & DPAD_UP && --task->data[3] < 0) + task->data[3] = 4; + + if (gMain.newKeys & DPAD_DOWN && ++task->data[3] > 4) + task->data[3] = 0; + if (task->data[1] != task->data[3]) + { + task->data[1] = task->data[3]; + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + } + break; + case MENU_B_PRESSED: + case 4: + ClearStdWindowAndFrame(0, TRUE); + ClearStdWindowAndFrame(task->data[15], TRUE); + ScriptContext2_Disable(); + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + default: + if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE) + { + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gText_PartyFull, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + task->data[0] = 3; + } + else if (task->data[2] == 1 && CountPartyMons() == 1) + { + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gText_JustOnePkmn, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + task->data[0] = 3; + } + else + { + FadeScreen(FADE_TO_BLACK, 0); + task->data[0] = 4; + } + break; + } + break; + case 3: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + task->data[0] = 2; + } + else if (gMain.newKeys & DPAD_UP) + { + if (--task->data[1] < 0) + task->data[1] = 4; + Menu_MoveCursor(-1); + task->data[1] = Menu_GetCursorPos(); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + task->data[0] = 2; + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (++task->data[1] > 3) + task->data[1] = 0; + Menu_MoveCursor(1); + task->data[1] = Menu_GetCursorPos(); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY); + task->data[0] = 2; + } + break; + case 4: + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + Cb2_EnterPSS(task->data[2]); + DestroyTask(taskId); + } + break; + } +} + +void ShowPokemonStorageSystemPC(void) +{ + u8 taskId = CreateTask(Task_PokemonStorageSystemPC, 80); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + ScriptContext2_Enable(); +} + +static void FieldCb_ReturnToPcMenu(void) +{ + u8 taskId; + MainCallback vblankCb = gMain.vblankCallback; + + SetVBlankCallback(NULL); + taskId = CreateTask(Task_PokemonStorageSystemPC, 80); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = sPreviousBoxOption; + Task_PokemonStorageSystemPC(taskId); + SetVBlankCallback(vblankCb); + FadeInFromBlack(); +} + +static const struct WindowTemplate gUnknown_83CDA48 = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 17, + .height = 10, + .paletteNum = 15, + .baseBlock = 0x001 +}; + +static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr) +{ + s16 windowId; + windowId = AddWindow(&gUnknown_83CDA48); + + DrawStdWindowFrame(windowId, FALSE); + PrintTextArray(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, NELEMS(gUnknown_83CDA20), (void *)gUnknown_83CDA20); + Menu_InitCursor(windowId, 2, 0, 2, 16, NELEMS(gUnknown_83CDA20), whichMenu); + *windowIdPtr = windowId; +} + +void Cb2_ExitPSS(void) +{ + sPreviousBoxOption = GetCurrentBoxOption(); + gFieldCallback = FieldCb_ReturnToPcMenu; + SetMainCallback2(CB2_ReturnToField); +} + +void ResetPokemonStorageSystem(void) +{ + u16 boxId, boxPosition; + + SetCurrentBox(0); + for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++) + { + for (boxPosition = 0; boxPosition < IN_BOX_COUNT; boxPosition++) + ZeroBoxMonAt(boxId, boxPosition); + } + for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++) + { + u8 *dest = StringCopy(GetBoxNamePtr(boxId), gText_Box); + ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2); + } + for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++) + { + SetBoxWallpaper(boxId, boxId % 4); + } +} + +void LoadBoxSelectionPopupSpriteGfx(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal) +{ + struct SpritePalette palette = { + gBoxSelectionPopupPalette, palTag + }; + struct SpriteSheet sheets[] = { + {gBoxSelectionPopupCenterTiles, 0x800, tileTag}, + {gBoxSelectionPopupSidesTiles, 0x180, tileTag + 1}, + {} + }; + + if (loadPal) + LoadSpritePalette(&palette); + + LoadSpriteSheets(sheets); + sBoxSelectionPopupSpriteManager = a0; + a0->tilesTag = tileTag; + a0->paletteTag = palTag; + a0->subpriority = a3; + a0->loadPal = loadPal; +} + +void FreeBoxSelectionPopupSpriteGfx(void) +{ + if (sBoxSelectionPopupSpriteManager->loadPal) + FreeSpritePaletteByTag(sBoxSelectionPopupSpriteManager->paletteTag); + FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tilesTag); + FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tilesTag + 1); +} + +void sub_808C940(u8 curBox) +{ + sub_808C9C4(curBox); +} + +void sub_808C950(void) +{ + sub_808CBA4(); +} + +u8 HandleBoxChooseSelectionInput(void) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + return 201; + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return sBoxSelectionPopupSpriteManager->curBox; + } + if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + UpdateBoxNameAndCountSprite_WraparoundLeft(); + } + else if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + UpdateBoxNameAndCountSprite_WraparoundRight(); + } + return 200; +} + +static const union AnimCmd gUnknown_83CDA50[] = { + ANIMCMD_FRAME( 0, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_83CDA58[] = { + ANIMCMD_FRAME( 4, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_83CDA60[] = { + ANIMCMD_FRAME( 6, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_83CDA68[] = { + ANIMCMD_FRAME(10, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const gUnknown_83CDA70[] = { + gUnknown_83CDA50, + gUnknown_83CDA58, + gUnknown_83CDA60, + gUnknown_83CDA68 +}; + +static const union AffineAnimCmd gUnknown_83CDA80[] = { + AFFINEANIMCMD_FRAME(224, 224, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const gUnknown_83CDA90[] = { + gUnknown_83CDA80 +}; + +static void sub_808C9C4(u8 curBox) +{ + u16 i; + u8 spriteId; + struct SpriteTemplate template; + struct OamData oamData = {}; + oamData.size = SPRITE_SIZE(64x64); + oamData.paletteNum = 1; + template = (struct SpriteTemplate){ + 0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + }; + { + const u8 gUnknown_83CDA94[] = _("/30"); + + sBoxSelectionPopupSpriteManager->curBox = curBox; + template.tileTag = sBoxSelectionPopupSpriteManager->tilesTag; + template.paletteTag = sBoxSelectionPopupSpriteManager->paletteTag; + + spriteId = CreateSprite(&template, 160, 96, 0); + sBoxSelectionPopupSpriteManager->unk_0000 = gSprites + spriteId; + + // Manual subsprites + oamData.shape = SPRITE_SHAPE(8x32); + oamData.size = SPRITE_SIZE(8x32); + template.tileTag = sBoxSelectionPopupSpriteManager->tilesTag + 1; + template.anims = gUnknown_83CDA70; + for (i = 0; i < 4; i++) + { + u16 r5; + spriteId = CreateSprite(&template, 124, 80, sBoxSelectionPopupSpriteManager->subpriority); + sBoxSelectionPopupSpriteManager->unk_0004[i] = gSprites + spriteId; + r5 = 0; + if (i & 2) + { + sBoxSelectionPopupSpriteManager->unk_0004[i]->pos1.x = 196; + r5 = 2; + } + if (i & 1) + { + sBoxSelectionPopupSpriteManager->unk_0004[i]->pos1.y = 112; + sBoxSelectionPopupSpriteManager->unk_0004[i]->oam.size = SPRITE_SIZE(8x16); + r5++; + } + StartSpriteAnim(sBoxSelectionPopupSpriteManager->unk_0004[i], r5); + } + for (i = 0; i < 2; i++) + { + sBoxSelectionPopupSpriteManager->unk_0020[i] = sub_809223C(72 * i + 0x7c, 0x58, i, 0, sBoxSelectionPopupSpriteManager->subpriority); + if (sBoxSelectionPopupSpriteManager->unk_0020[i]) + { + sBoxSelectionPopupSpriteManager->unk_0020[i]->data[0] = (i == 0 ? -1 : 1); + sBoxSelectionPopupSpriteManager->unk_0020[i]->callback = sub_808CD64; + } + } + PrintBoxNameAndCountToSprite(); + PrintToSpriteWithTagUnk0240(gUnknown_83CDA94, 5, 3); + } +} + +static void sub_808CBA4(void) +{ + u16 i; + if (sBoxSelectionPopupSpriteManager->unk_0000) + { + DestroySprite(sBoxSelectionPopupSpriteManager->unk_0000); + sBoxSelectionPopupSpriteManager->unk_0000 = NULL; + } + for (i = 0; i < 4; i++) + { + if (sBoxSelectionPopupSpriteManager->unk_0004[i]) + { + DestroySprite(sBoxSelectionPopupSpriteManager->unk_0004[i]); + sBoxSelectionPopupSpriteManager->unk_0004[i] = NULL; + } + } + for (i = 0; i < 2; i++) + { + if (sBoxSelectionPopupSpriteManager->unk_0020[i]) + DestroySprite(sBoxSelectionPopupSpriteManager->unk_0020[i]); + } +} + +static void UpdateBoxNameAndCountSprite_WraparoundRight(void) +{ + if (++sBoxSelectionPopupSpriteManager->curBox >= TOTAL_BOXES_COUNT) + sBoxSelectionPopupSpriteManager->curBox = 0; + PrintBoxNameAndCountToSprite(); +} + +static void UpdateBoxNameAndCountSprite_WraparoundLeft(void) +{ + sBoxSelectionPopupSpriteManager->curBox = (sBoxSelectionPopupSpriteManager->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : sBoxSelectionPopupSpriteManager->curBox - 1); + PrintBoxNameAndCountToSprite(); +} + +static void PrintBoxNameAndCountToSprite(void) +{ + u8 nPokemonInBox = CountMonsInBox(sBoxSelectionPopupSpriteManager->curBox); + u8 *boxName = StringCopy(sBoxSelectionPopupSpriteManager->strbuf, GetBoxNamePtr(sBoxSelectionPopupSpriteManager->curBox)); + + while (boxName < sBoxSelectionPopupSpriteManager->strbuf + BOX_NAME_LENGTH) + *boxName++ = CHAR_SPACE; + *boxName = EOS; + + PrintToSpriteWithTagUnk0240(sBoxSelectionPopupSpriteManager->strbuf, 0, 1); + + ConvertIntToDecimalStringN(sBoxSelectionPopupSpriteManager->strbuf, nPokemonInBox, STR_CONV_MODE_RIGHT_ALIGN, 2); + + PrintToSpriteWithTagUnk0240(sBoxSelectionPopupSpriteManager->strbuf, 3, 3); +} + +static void PrintToSpriteWithTagUnk0240(const u8 *str, u16 x, u16 y) +{ + u16 tileStart = GetSpriteTileStartByTag(sBoxSelectionPopupSpriteManager->tilesTag); + PrintStringToBufferCopyNow(str, (void *)(OBJ_VRAM0 + tileStart * 32 + 256 * y + 32 * x), 0x100, TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5, sBoxSelectionPopupSpriteManager->buffer); +} + +static void sub_808CD64(struct Sprite *sprite) +{ + if (++sprite->data[1] > 3) + { + sprite->data[1] = 0; + sprite->pos2.x += sprite->data[0]; + if (++sprite->data[2] > 5) + { + sprite->data[2] = 0; + sprite->pos2.x = 0; + } + } +} + +// Forward-declared rodata + +static const u16 gBoxSelectionPopupPalette[] = INCBIN_U16("graphics/interface/pss_unk_83CDA98.gbapal"); +static const u16 gBoxSelectionPopupCenterTiles[] = INCBIN_U16("graphics/interface/pss_unk_83CDAB8.4bpp"); +static const u16 gBoxSelectionPopupSidesTiles[] = INCBIN_U16("graphics/interface/pss_unk_83CE2B8.4bpp"); diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c new file mode 100644 index 000000000..48007ad0f --- /dev/null +++ b/src/pokemon_storage_system_3.c @@ -0,0 +1,2779 @@ +#include "global.h" +#include "gflib.h" +#include "box_party_pokemon_dropdown.h" +#include "data.h" +#include "decompress.h" +#include "dynamic_placeholder_text_util.h" +#include "event_data.h" +#include "graphics.h" +#include "help_system.h" +#include "item.h" +#include "item_menu.h" +#include "mail_data.h" +#include "menu.h" +#include "naming_screen.h" +#include "new_menu_helpers.h" +#include "pc_screen_effect.h" +#include "pokemon_icon.h" +#include "pokemon_storage_system_internal.h" +#include "pokemon_summary_screen.h" +#include "quest_log.h" +#include "strings.h" +#include "task.h" +#include "text_window.h" +#include "trig.h" +#include "constants/items.h" +#include "constants/help_system.h" +#include "constants/songs.h" +#include "constants/flags.h" +#include "constants/vars.h" + +EWRAM_DATA struct PokemonStorageSystemData *sPSSData = NULL; +static EWRAM_DATA bool8 sInPartyMenu = 0; +static EWRAM_DATA u8 sCurrentBoxOption = 0; +static EWRAM_DATA u8 gUnknown_20397B6 = 0; +static EWRAM_DATA u8 sWhichToReshow = 0; +static EWRAM_DATA u8 sLastUsedBox = 0; +static EWRAM_DATA u16 gUnknown_20397BA = ITEM_NONE; + +static void Cb_InitPSS(u8 taskId); +static void Cb_ShowPSS(u8 taskId); +static void Cb_ReshowPSS(u8 taskId); +static void Cb_MainPSS(u8 taskId); +static void Cb_ShowPartyPokemon(u8 taskId); +static void Cb_HidePartyPokemon(u8 taskId); +static void Cb_OnSelectedMon(u8 taskId); +static void Cb_MoveMon(u8 taskId); +static void Cb_PlaceMon(u8 taskId); +static void Cb_ShiftMon(u8 taskId); +static void Cb_WithdrawMon(u8 taskId); +static void Cb_DepositMenu(u8 taskId); +static void Cb_ReleaseMon(u8 taskId); +static void Cb_ShowMarkMenu(u8 taskId); +static void Cb_TakeItemForMoving(u8 taskId); +static void Cb_GiveMovingItemToMon(u8 taskId); +static void Cb_ItemToBag(u8 taskId); +static void Cb_SwitchSelectedItem(u8 taskId); +static void Cb_ShowItemInfo(u8 taskId); +static void Cb_HandleMovingMonFromParty(u8 taskId); +static void Cb_PrintCantStoreMail(u8 taskId); +static void Cb_HandleBoxOptions(u8 taskId); +static void Cb_HandleWallpapers(u8 taskId); +static void Cb_JumpBox(u8 taskId); +static void Cb_NameBox(u8 taskId); +static void Cb_ShowMonSummary(u8 taskId); +static void Cb_GiveItemFromBag(u8 taskId); +static void Cb_OnCloseBoxPressed(u8 taskId); +static void Cb_OnBPressed(u8 taskId); +static void Cb_ChangeScreen(u8 taskId); +static void GiveChosenBagItem(void); +static void FreePSSData(void); +static void SetScrollingBackground(void); +static void ScrollBackground(void); +static void LoadPSSMenuGfx(void); +static bool8 InitPSSWindows(void); +static void LoadWaveformSpritePalette(void); +static void sub_808F078(void); +static void sub_808F0F4(void); +static void sub_808F164(void); +static void RefreshCursorMonData(void); +static void BoxSetMosaic(void); +static void SpriteCB_CursorMon_Mosaic(struct Sprite * sprite); +static bool8 BoxGetMosaic(void); +static void LoadCursorMonSprite(void); +static void LoadCursorMonGfx(u16 species, u32 pid); +static void PrintCursorMonInfo(void); +static void sub_808F5E8(void); +static void sub_808F68C(void); +static void SetUpHidePartyMenu(void); +static bool8 HidePartyMenu(void); +static void sub_808F90C(bool8 species); +static void sub_808F948(void); +static void sub_808F974(void); +static void sub_808F99C(void); +static void sub_808F9FC(void); +static void sub_808FA30(u8 pos, bool8 isPartyMon); +static void sub_808FAA8(void); +static void SetUpDoShowPartyMenu(void); +static bool8 DoShowPartyMenu(void); +static void sub_808FB68(void); +static void PrintStorageActionText(u8 textId); +static void ShowYesNoWindow(s8 species); +static void ClearBottomWindow(void); +static void AddWallpaperSetsMenu(void); +static void AddWallpapersMenu(u8 wallpaperSet); +static void sub_808FDFC(void); +static void sub_808FE54(u8 species); +static void sub_808FF70(void); + +static const u32 gPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/interface/pss_unk_83CE438.4bpp.lz"); +static const u32 gPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE4D0.bin.lz"); +static const u16 gPokemonStorageScrollingBGPalette[] = INCBIN_U16("graphics/interface/pss_unk_83CE5DC.gbapal"); +static const u32 gUnknown_83CE5FC[] = INCBIN_U32("graphics/interface/pss_unk_83CE5FC.bin.lz"); + +static const u16 gUnknown_83CE6F8[] = { + 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, + 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, + 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108, + 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118, +}; + +static const u16 gUnknown_83CE738[] = INCBIN_U16("graphics/interface/pss_unk_83CE738.gbapal"); +static const u16 gUnknown_83CE758[] = INCBIN_U16("graphics/interface/pss_unk_83CE758.gbapal"); + +static const u16 gUnknown_83CE778[] = { + 0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, + 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182, 0x0183, 0x0184, + 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d, + 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x018d, +}; + +static const u16 gUnknown_83CE7C0[] = { + 0x1140, 0x1141, 0x1141, 0x1142, + 0x1150, 0x1151, 0x1151, 0x1152, + 0x1160, 0x1161, 0x1161, 0x1162, +}; + +static const u16 gUnknown_83CE7D8[] = { + 0x1143, 0x1144, 0x1144, 0x1145, + 0x1153, 0x1154, 0x1154, 0x1155, + 0x1163, 0x1164, 0x1164, 0x1165, +}; + +static const u16 gUnknown_83CE7F0[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.gbapal"); +static const u16 gUnknown_83CE810[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.4bpp"); +static const u16 gUnknown_83CE9D0[] = INCBIN_U16("graphics/interface/pss_unk_83CE9D0.gbapal"); +static const u16 gUnknown_83CEA10[] = INCBIN_U16("graphics/interface/pss_unk_83CEA10.gbapal"); + +static const struct WindowTemplate gUnknown_83CEA30[] = { + { + .bg = 1, + .tilemapLeft = 0, + .tilemapTop = 11, + .width = 9, + .height = 7, + .paletteNum = 3, + .baseBlock = 0x0c0 + }, { + .bg = 0, + .tilemapLeft = 11, + .tilemapTop = 17, + .width = 18, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x014 + }, { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 12, + .width = 25, + .height = 8, + .paletteNum = 15, + .baseBlock = 0x014 + }, DUMMY_WIN_TEMPLATE +}; + +static const struct BgTemplate gUnknown_83CEA50[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x100 + }, { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 27, + .screenSize = 1, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + } +}; + +static const struct SpritePalette gWaveformSpritePalette = { + gUnknown_83CE7F0, TAG_PAL_WAVEFORM +}; + +static const struct SpriteSheet gWaveformSpriteSheet = { + gUnknown_83CE810, 0x01c0, TAG_TILE_WAVEFORM +}; + +static const struct OamData gUnknown_83CEB88; + +static const struct SpriteTemplate sSpriteTemplate_CursorMon = { + .tileTag = TAG_TILE_2, + .paletteTag = TAG_PAL_DAC6, + .oam = &gUnknown_83CEB88, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct StorageAction gPCStorageActionTexts[] = { + [PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, PC_TEXT_FMT_MON_NAME_1}, + [PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, PC_TEXT_FMT_MON_NAME_1}, + [PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, PC_TEXT_FMT_MON_NAME_4}, + [PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, PC_TEXT_FMT_MON_NAME_6}, + [PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, PC_TEXT_FMT_MON_NAME_1}, + [PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, PC_TEXT_FMT_ITEM_NAME}, + [PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, PC_TEXT_FMT_ITEM_NAME}, + [PC_TEXT_BAG_FULL] = {gText_BagIsFull2, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, PC_TEXT_FMT_NORMAL}, + [PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, PC_TEXT_FMT_ITEM_NAME}, + [PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, PC_TEXT_FMT_ITEM_NAME}, + [PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, PC_TEXT_FMT_NORMAL}, +}; + +// Yes/No menu +static const struct WindowTemplate sYesNoWindowTemplate = { + .bg = 0, + .tilemapLeft = 24, + .tilemapTop = 11, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x05c +}; + +static const struct OamData gUnknown_83CEB88 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0x000, + .priority = 0, + .paletteNum = 0 +}; + +// Waveform + +static const struct OamData gUnknown_83CEB90 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0x000, + .priority = 0, + .paletteNum = 0 +}; + +static const union AnimCmd gUnknown_83CEB98[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_83CEBA0[] = { + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(6, 8), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd gUnknown_83CEBB0[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_83CEBB8[] = { + ANIMCMD_FRAME(10, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(12, 8), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const gUnknown_83CEBC8[] = { + gUnknown_83CEB98, + gUnknown_83CEBA0, + gUnknown_83CEBB0, + gUnknown_83CEBB8 +}; + +static const struct SpriteTemplate sSpriteTemplate_Waveform = { + .tileTag = TAG_TILE_WAVEFORM, + .paletteTag = TAG_PAL_WAVEFORM, + .oam = &gUnknown_83CEB90, + .anims = gUnknown_83CEBC8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static void VblankCb_PSS(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + sub_8096BF8(); + TransferPlttBuffer(); + SetGpuReg(REG_OFFSET_BG2HOFS, sPSSData->bg2_X); +} + +static void Cb2_PSS(void) +{ + RunTasks(); + DoScheduledBgTilemapCopiesToVram(); + ScrollBackground(); + sub_808F99C(); + AnimateSprites(); + BuildOamBuffer(); +} + +void Cb2_EnterPSS(u8 boxOption) +{ + ResetTasks(); + sCurrentBoxOption = boxOption; + sPSSData = Alloc(sizeof(struct PokemonStorageSystemData)); + if (sPSSData == NULL) + SetMainCallback2(Cb2_ExitPSS); + else + { + sPSSData->boxOption = boxOption; + sPSSData->isReshowingPSS = FALSE; + gUnknown_20397BA = 0; + sPSSData->state = 0; + sPSSData->taskId = CreateTask(Cb_InitPSS, 3); + SetHelpContext(HELPCONTEXT_BILLS_PC); + sLastUsedBox = StorageGetCurrentBox(); + SetMainCallback2(Cb2_PSS); + } +} + +void Cb2_ReturnToPSS(void) +{ + ResetTasks(); + sPSSData = Alloc(sizeof(struct PokemonStorageSystemData)); + if (sPSSData == NULL) + SetMainCallback2(Cb2_ExitPSS); + else + { + sPSSData->boxOption = sCurrentBoxOption; + sPSSData->isReshowingPSS = TRUE; + sPSSData->state = 0; + sPSSData->taskId = CreateTask(Cb_InitPSS, 3); + SetHelpContext(HELPCONTEXT_BILLS_PC); + SetMainCallback2(Cb2_PSS); + } +} + +static void ResetAllBgCoords(void) +{ + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); +} + +static void sub_808CF10(void) +{ + ResetPaletteFade(); + ResetSpriteData(); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + ClearDma3Requests(); + gReservedSpriteTileCount = 0x280; + sub_8096BE4(&sPSSData->unk_0020, sPSSData->unk_0028, 8); + gKeyRepeatStartDelay = 20; + ClearScheduledBgCopiesToVram(); + AllocBoxPartyPokemonDropdowns(3); + SetBoxPartyPokemonDropdownMap2(0, 1, gUnknown_83CE6F8, 8, 4); + SetBoxPartyPokemonDropdownMap2Pos(0, 1, 0); + sPSSData->unk_02C7 = FALSE; +} + +static void sub_808CF94(void) +{ + sub_8092B50(); + sInPartyMenu = sPSSData->boxOption == BOX_OPTION_DEPOSIT; + gUnknown_20397B6 = 0; +} + +static void sub_808CFC4(void) +{ + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(7, 11)); + } + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); +} + +static void SetPSSCallback(TaskFunc newFunc) +{ + gTasks[sPSSData->taskId].func = newFunc; + sPSSData->state = 0; +} + +static void Cb_InitPSS(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + sub_808CF10(); + if (sPSSData->isReshowingPSS) + { + switch (sWhichToReshow) + { + case 1: + sub_8093660(); + break; + case 0: + sub_80937B4(); + break; + case 2: + GiveChosenBagItem(); + break; + } + } + LoadPSSMenuGfx(); + LoadWaveformSpritePalette(); + break; + case 1: + if (!InitPSSWindows()) + { + SetPSSCallback(Cb_ChangeScreen); + return; + } + break; + case 2: + PutWindowTilemap(0); + ClearWindowTilemap(1); + CpuFill32(0, (void *)VRAM, 0x200); + TextWindow_SetUserSelectedFrame(1, 0xB, 0xE0); + break; + case 3: + ResetAllBgCoords(); + if (!sPSSData->isReshowingPSS) + sub_808CF94(); + break; + case 4: + sub_808FFAC(); + if (!sPSSData->isReshowingPSS) + sub_80922C0(); + else + sub_8092340(); + break; + case 5: + if (!sub_8095050()) + { + SetPSSCallback(Cb_ChangeScreen); + return; + } + else + { + SetScrollingBackground(); + sub_808FB68(); + } + break; + case 6: + sub_808F078(); + break; + case 7: + sub_808F68C(); + break; + case 8: + sub_80913DC(StorageGetCurrentBox()); + break; + case 9: + if (sub_809140C()) + return; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + sPSSData->field_DA4.baseTileTag = TAG_TILE_D; + sPSSData->field_DA4.basePaletteTag = TAG_PAL_DACE; + SetMonMarkingsMenuPointer(&sPSSData->field_DA4); + LoadMonMarkingsFrameGfx(); + } + else + { + sub_8095B5C(); + sub_808FDFC(); + } + break; + case 10: + sub_808CFC4(); + if (!sPSSData->isReshowingPSS) + { + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + SetPSSCallback(Cb_ShowPSS); + } + else + { + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + SetPSSCallback(Cb_ReshowPSS); + } + SetVBlankCallback(VblankCb_PSS); + return; + default: + return; + } + + sPSSData->state++; +} + +static void Cb_ShowPSS(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PlaySE(SE_PC_LOGIN); + sub_80A0A48(0x14, 0, 1); + sPSSData->state++; + break; + case 1: + if (!sub_80A0A98()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +static void Cb_ReshowPSS(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, RGB_BLACK); + sPSSData->state++; + break; + case 1: + if (!UpdatePaletteFade()) + { + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_MainPSS(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + switch (HandleInput()) + { + case 1: + PlaySE(SE_SELECT); + sPSSData->state = 1; + break; + case 5: + if (sPSSData->boxOption != BOX_OPTION_MOVE_MONS && sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE); + sPSSData->state = 3; + } + else + { + sub_8092B50(); + SetPSSCallback(Cb_ShowPartyPokemon); + } + break; + case 6: + if (sPSSData->boxOption == BOX_OPTION_MOVE_MONS) + { + if (IsMonBeingMoved() && ItemIsMail(sPSSData->cursorMonItem)) + sPSSData->state = 5; + else + SetPSSCallback(Cb_HidePartyPokemon); + } + else if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + SetPSSCallback(Cb_HidePartyPokemon); + } + break; + case 4: + SetPSSCallback(Cb_OnCloseBoxPressed); + break; + case 19: + SetPSSCallback(Cb_OnBPressed); + break; + case 7: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_HandleBoxOptions); + break; + case 8: + SetPSSCallback(Cb_OnSelectedMon); + break; + case 9: + PlaySE(SE_SELECT); + sPSSData->newCurrBoxId = StorageGetCurrentBox() + 1; + if (sPSSData->newCurrBoxId >= TOTAL_BOXES_COUNT) + sPSSData->newCurrBoxId = 0; + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + SetUpScrollToBox(sPSSData->newCurrBoxId); + sPSSData->state = 2; + } + else + { + sub_8094D60(); + sPSSData->state = 10; + } + break; + case 10: + PlaySE(SE_SELECT); + sPSSData->newCurrBoxId = StorageGetCurrentBox() - 1; + if (sPSSData->newCurrBoxId < 0) + sPSSData->newCurrBoxId = TOTAL_BOXES_COUNT - 1; + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + SetUpScrollToBox(sPSSData->newCurrBoxId); + sPSSData->state = 2; + } + else + { + sub_8094D60(); + sPSSData->state = 10; + } + break; + case 11: + if (!CanMovePartyMon()) + { + if (ItemIsMail(sPSSData->cursorMonItem)) + { + sPSSData->state = 5; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(Cb_DepositMenu); + } + } + else + { + sPSSData->state = 4; + } + break; + case 13: + if (CanMovePartyMon()) + { + sPSSData->state = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(Cb_MoveMon); + } + break; + case 14: + if (!CanShiftMon()) + { + sPSSData->state = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(Cb_ShiftMon); + } + break; + case 12: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_WithdrawMon); + break; + case 15: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_PlaceMon); + break; + case 16: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_TakeItemForMoving); + break; + case 17: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_GiveMovingItemToMon); + break; + case 18: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_SwitchSelectedItem); + break; + case 20: + PlaySE(SE_SELECT); + sub_80950BC(0); + sPSSData->state = 7; + break; + case 22: + sub_80950BC(1); + sPSSData->state = 8; + break; + case 21: + PlaySE(SE_SELECT); + sub_80950BC(2); + sPSSData->state = 9; + break; + case 23: + sub_80950BC(3); + sPSSData->state = 7; + break; + case 25: + PlaySE(SE_SELECT); + sub_80950BC(4); + sPSSData->state = 9; + break; + case 26: + PlaySE(SE_SELECT); + sub_808FE54(3); + sub_80950BC(5); + sPSSData->state = 7; + break; + case 24: + PlaySE(SE_HAZURE); + break; + } + break; + case 1: + if (!sub_80924A8()) + { + if (IsCursorOnCloseBox()) + sub_808F948(); + else + sub_808F974(); + + if (sPSSData->setMosaic) + BoxSetMosaic(); + sPSSData->state = 0; + } + break; + case 2: + if (!ScrollToBox()) + { + SetCurrentBox(sPSSData->newCurrBoxId); + if (!sInPartyMenu && !IsMonBeingMoved()) + { + sub_8092F54(); + BoxSetMosaic(); + } + + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + sub_8094D84(); + sPSSData->state = 11; + } + else + { + sPSSData->state = 0; + } + } + break; + case 3: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + sPSSData->state = 0; + } + break; + case 4: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_LAST_POKE); + sPSSData->state = 6; + break; + case 5: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); + sPSSData->state = 6; + break; + case 6: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + case 7: + if (!sub_80950D0()) + sPSSData->state = 0; + break; + case 8: + if (!sub_80950D0()) + SetPSSCallback(Cb_MoveMon); + break; + case 9: + if (!sub_80950D0()) + { + if (sPSSData->setMosaic) + BoxSetMosaic(); + sPSSData->state = 0; + } + break; + case 10: + if (!sub_809610C()) + { + SetUpScrollToBox(sPSSData->newCurrBoxId); + sPSSData->state = 2; + } + break; + case 11: + if (!sub_809610C()) + sPSSData->state = 0; + break; + } +} + +static void Cb_ShowPartyPokemon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + SetUpDoShowPartyMenu(); + sPSSData->state++; + break; + case 1: + if (!DoShowPartyMenu()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +static void Cb_HidePartyPokemon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PlaySE(SE_SELECT); + SetUpHidePartyMenu(); + sPSSData->state++; + break; + case 1: + if (!HidePartyMenu()) + { + sub_8092B3C(sub_8092B70()); + sPSSData->state++; + } + break; + case 2: + if (!sub_80924A8()) + { + if (sPSSData->setMosaic) + BoxSetMosaic(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_OnSelectedMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (!BoxGetMosaic()) + { + PlaySE(SE_SELECT); + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + PrintStorageActionText(PC_TEXT_IS_SELECTED); + else if (IsActiveItemMoving() || sPSSData->cursorMonItem != 0) + PrintStorageActionText(PC_TEXT_IS_SELECTED2); + else + PrintStorageActionText(PC_TEXT_GIVE_TO_MON); + + AddMenu(); + sPSSData->state = 1; + } + break; + case 1: // debug? + if (!sub_8094F90()) + sPSSData->state = 2; + break; + case 2: + switch (sub_8094F94()) + { + case -1: + case 0: + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 3: + if (CanMovePartyMon()) + { + sPSSData->state = 3; + } + else + { + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_MoveMon); + } + break; + case 5: + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_PlaceMon); + break; + case 4: + if (!CanShiftMon()) + { + sPSSData->state = 3; + } + else + { + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_ShiftMon); + } + break; + case 2: + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_WithdrawMon); + break; + case 1: + if (CanMovePartyMon()) + { + sPSSData->state = 3; + } + else if (ItemIsMail(sPSSData->cursorMonItem)) + { + sPSSData->state = 4; + } + else + { + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_DepositMenu); + } + break; + case 7: + if (CanMovePartyMon()) + { + sPSSData->state = 3; + } + else if (sPSSData->cursorMonIsEgg) + { + sPSSData->state = 5; // Cannot release an Egg. + } + else if (ItemIsMail(sPSSData->cursorMonItem)) + { + sPSSData->state = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(Cb_ReleaseMon); + } + break; + case 6: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_ShowMonSummary); + break; + case 8: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_ShowMarkMenu); + break; + case 12: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_TakeItemForMoving); + break; + case 13: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_GiveMovingItemToMon); + break; + case 16: + SetPSSCallback(Cb_ItemToBag); + break; + case 15: + SetPSSCallback(Cb_SwitchSelectedItem); + break; + case 14: + SetPSSCallback(Cb_GiveItemFromBag); + break; + case 17: + SetPSSCallback(Cb_ShowItemInfo); + break; + } + break; + case 3: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_LAST_POKE); + sPSSData->state = 6; + break; + case 5: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); + sPSSData->state = 6; + break; + case 4: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); + sPSSData->state = 6; + break; + case 6: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_MoveMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + InitMonPlaceChange(0); + sPSSData->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + if (sInPartyMenu) + SetPSSCallback(Cb_HandleMovingMonFromParty); + else + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_PlaceMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + sub_808FE54(1); + InitMonPlaceChange(1); + sPSSData->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + if (sInPartyMenu) + SetPSSCallback(Cb_HandleMovingMonFromParty); + else + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_ShiftMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + sub_808FE54(0); + InitMonPlaceChange(2); + sPSSData->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + BoxSetMosaic(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_WithdrawMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (CalculatePlayerPartyCount() == PARTY_SIZE) + { + PrintStorageActionText(PC_TEXT_PARTY_FULL); + sPSSData->state = 1; + } + else + { + sub_8092B5C(); + InitMonPlaceChange(0); + sPSSData->state = 2; + } + break; + case 1: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + case 2: + if (!DoMonPlaceChange()) + { + SetMovingMonPriority(1); + SetUpDoShowPartyMenu(); + sPSSData->state++; + } + break; + case 3: + if (!DoShowPartyMenu()) + { + sub_808FE54(1); + InitMonPlaceChange(1); + sPSSData->state++; + } + break; + case 4: + if (!DoMonPlaceChange()) + { + sub_808FAA8(); + sPSSData->state++; + } + break; + case 5: + SetPSSCallback(Cb_HidePartyPokemon); + break; + } +} + +static void Cb_DepositMenu(u8 taskId) +{ + u8 boxId; + + switch (sPSSData->state) + { + case 0: + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + LoadBoxSelectionPopupSpriteGfx(&sPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE); + sub_808C940(gUnknown_20397B6); + sPSSData->state++; + break; + case 1: + boxId = HandleBoxChooseSelectionInput(); + if (boxId == 200) + { + // no box chosen yet + } + else if (boxId == 201) + { + ClearBottomWindow(); + sub_808C950(); + FreeBoxSelectionPopupSpriteGfx(); + SetPSSCallback(Cb_MainPSS); + } + else + { + if (TryStorePartyMonInBox(boxId)) + { + gUnknown_20397B6 = boxId; + sub_808FE54(2); + ClearBottomWindow(); + sub_808C950(); + FreeBoxSelectionPopupSpriteGfx(); + sPSSData->state = 2; + } + else + { + PrintStorageActionText(PC_TEXT_BOX_IS_FULL); + sPSSData->state = 4; + } + } + break; + case 2: + CompactPartySlots(); + sub_80909F4(); + sPSSData->state++; + break; + case 3: + if (!sub_8090A60()) + { + sub_8093174(); + BoxSetMosaic(); + sub_808FAA8(); + SetPSSCallback(Cb_MainPSS); + } + break; + case 4: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + sPSSData->state = 1; + } + break; + } +} + +static void Cb_ReleaseMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PrintStorageActionText(PC_TEXT_RELEASE_POKE); + ShowYesNoWindow(1); + sPSSData->state++; + // fallthrough + case 1: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case MENU_B_PRESSED: + case 1: + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 0: + ClearBottomWindow(); + InitCanReleaseMonVars(); + sub_8093194(); + sPSSData->state++; + break; + } + break; + case 2: + RunCanReleaseMon(); + if (!sub_80931EC()) + { + while (1) + { + s8 r0 = RunCanReleaseMon(); + if (r0 == 1) + { + sPSSData->state++; + break; + } + else if (r0 == 0) + { + sPSSData->state = 8; // Can't release the mon. + break; + } + } + } + break; + case 3: + ReleaseMon(); + RefreshCursorMonData(); + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + sPSSData->state++; + break; + case 4: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PrintStorageActionText(PC_TEXT_BYE_BYE); + sPSSData->state++; + } + break; + case 5: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + if (sInPartyMenu) + { + CompactPartySlots(); + sub_80909F4(); + sPSSData->state++; + } + else + { + sPSSData->state = 7; + } + } + break; + case 6: + if (!sub_8090A60()) + { + sub_8092F54(); + BoxSetMosaic(); + sub_808FAA8(); + sPSSData->state++; + } + break; + case 7: + SetPSSCallback(Cb_MainPSS); + break; + case 8: + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + sPSSData->state++; + break; + case 9: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PrintStorageActionText(PC_TEXT_SURPRISE); + sPSSData->state++; + } + break; + case 10: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + sub_8091114(); + sPSSData->state++; + } + break; + case 11: + if (!sub_8091150()) + { + sub_8093264(); + PrintStorageActionText(PC_TEXT_CAME_BACK); + sPSSData->state++; + } + break; + case 12: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PrintStorageActionText(PC_TEXT_WORRIED); + sPSSData->state++; + } + break; + case 13: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_ShowMarkMenu(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PrintStorageActionText(PC_TEXT_MARK_POKE); + sPSSData->field_DA4.markings = sPSSData->cursorMonMarkings; + DrawMonMarkingsMenu(sPSSData->cursorMonMarkings, 0xb0, 0x10); + sPSSData->state++; + break; + case 1: + if (!MonMarkingsHandleInput()) + { + TeardownMonMarkingsMenu(); + ClearBottomWindow(); + SetMonMarkings(sPSSData->field_DA4.markings); + RefreshCursorMonData(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_TakeItemForMoving(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (!ItemIsMail(sPSSData->cursorMonItem)) + { + ClearBottomWindow(); + sPSSData->state++; + } + else + { + SetPSSCallback(Cb_PrintCantStoreMail); + } + break; + case 1: + sub_8094D14(2); + Item_FromMonToMoving((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); + sPSSData->state++; + break; + case 2: + if (!sub_809610C()) + { + sub_8094D14(3); + ClearBottomWindow(); + sub_8092F54(); + PrintCursorMonInfo(); + sPSSData->state++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +static void Cb_GiveMovingItemToMon(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + ClearBottomWindow(); + sPSSData->state++; + break; + case 1: + sub_8094D14(2); + Item_GiveMovingToMon((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); + sPSSData->state++; + break; + case 2: + if (!sub_809610C()) + { + sub_8094D14(0); + sub_8092F54(); + PrintCursorMonInfo(); + PrintStorageActionText(PC_TEXT_ITEM_IS_HELD); + sPSSData->state++; + } + break; + case 3: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + sPSSData->state++; + } + break; + case 4: + if (!IsDma3ManagerBusyWithBgCopy()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +static void Cb_ItemToBag(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (!AddBagItem(sPSSData->cursorMonItem, 1)) + { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_BAG_FULL); + sPSSData->state = 3; + } + else + { + PlaySE(SE_SELECT); + Item_TakeMons((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); + sPSSData->state = 1; + } + break; + case 1: + if (!sub_809610C()) + { + PrintStorageActionText(PC_TEXT_PLACED_IN_BAG); + sPSSData->state = 2; + } + break; + case 2: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + sub_8092F54(); + PrintCursorMonInfo(); + sPSSData->state = 4; + } + break; + case 4: + if (!IsDma3ManagerBusyWithBgCopy()) + SetPSSCallback(Cb_MainPSS); + break; + case 3: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_SwitchSelectedItem(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (!ItemIsMail(sPSSData->cursorMonItem)) + { + ClearBottomWindow(); + sPSSData->state++; + } + else + { + SetPSSCallback(Cb_PrintCantStoreMail); + } + break; + case 1: + sub_8094D14(2); + Item_SwitchMonsWithMoving((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); + sPSSData->state++; + break; + case 2: + if (!sub_809610C()) + { + sub_8094D14(3); + sub_8092F54(); + PrintCursorMonInfo(); + PrintStorageActionText(PC_TEXT_CHANGED_TO_ITEM); + sPSSData->state++; + } + break; + case 3: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + sPSSData->state++; + } + break; + case 4: + if (!IsDma3ManagerBusyWithBgCopy()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +static void Cb_ShowItemInfo(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + ClearBottomWindow(); + sPSSData->state++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + { + PlaySE(SE_WIN_OPEN); + PrintItemDescription(); + sub_80966F4(); + sPSSData->state++; + } + break; + case 2: + if (!sub_8096728()) + sPSSData->state++; + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + sPSSData->state++; + break; + case 4: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + PlaySE(SE_WIN_OPEN); + sPSSData->state++; + } + break; + case 5: + if (!sub_80967C0()) + sPSSData->state++; + break; + case 6: + if (!IsDma3ManagerBusyWithBgCopy()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +static void Cb_CloseBoxWhileHoldingItem(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_PUT_IN_BAG); + ShowYesNoWindow(0); + sPSSData->state = 1; + break; + case 1: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case MENU_B_PRESSED: + case 1: + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 0: + if (AddBagItem(sPSSData->movingItem, 1) == TRUE) + { + ClearBottomWindow(); + sPSSData->state = 3; + } + else + { + PrintStorageActionText(PC_TEXT_BAG_FULL); + sPSSData->state = 2; + } + break; + } + break; + case 2: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + sPSSData->state = 5; + } + break; + case 3: + sub_8096088(); + sPSSData->state = 4; + break; + case 4: + if (!sub_809610C()) + { + sub_8094D14(0); + SetPSSCallback(Cb_MainPSS); + } + break; + case 5: + if (!IsDma3ManagerBusyWithBgCopy()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +static void Cb_HandleMovingMonFromParty(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + CompactPartySlots(); + sub_80909F4(); + sPSSData->state++; + break; + case 1: + if (!sub_8090A60()) + { + sub_808FAA8(); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_PrintCantStoreMail(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PrintStorageActionText(PC_TEXT_CANT_STORE_MAIL); + sPSSData->state++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + sPSSData->state++; + break; + case 2: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + sPSSData->state++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + SetPSSCallback(Cb_MainPSS); + break; + } +} + +static void Cb_HandleBoxOptions(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PrintStorageActionText(PC_TEXT_WHAT_YOU_DO); + AddMenu(); + sPSSData->state++; + break; + case 1: + if (sub_8094F90()) + return; + sPSSData->state++; + case 2: + switch (sub_8094F94()) + { + case -1: + case 0: + sub_80920FC(TRUE); + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 11: + PlaySE(SE_SELECT); + SetPSSCallback(Cb_NameBox); + break; + case 10: + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_HandleWallpapers); + break; + case 9: + PlaySE(SE_SELECT); + ClearBottomWindow(); + SetPSSCallback(Cb_JumpBox); + break; + } + break; + } +} + +static void Cb_HandleWallpapers(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + AddWallpaperSetsMenu(); + PrintStorageActionText(PC_TEXT_PICK_A_THEME); + sPSSData->state++; + break; + case 1: + if (!sub_8094F90()) + sPSSData->state++; + break; + case 2: + sPSSData->wallpaperSetId = sub_8094F94(); + switch (sPSSData->wallpaperSetId) + { + case -1: + sub_80920FC(TRUE); + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 18 ... 21: + PlaySE(SE_SELECT); + sub_8095024(); + sPSSData->wallpaperSetId -= 18; + sPSSData->state++; + break; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + AddWallpapersMenu(sPSSData->wallpaperSetId); + PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER); + sPSSData->state++; + } + break; + case 4: + sPSSData->wallpaperId = sub_8094F94(); + switch (sPSSData->wallpaperId) + { + case MENU_NOTHING_CHOSEN: + break; + case MENU_B_PRESSED: + ClearBottomWindow(); + sPSSData->state = 0; + break; + default: + PlaySE(SE_SELECT); + ClearBottomWindow(); + sPSSData->wallpaperId -= 22; + SetWallpaperForCurrentBox(sPSSData->wallpaperId); + sPSSData->state++; + break; + } + break; + case 5: + if (!DoWallpaperGfxChange()) + { + sub_80920FC(TRUE); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_JumpBox(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX); + LoadBoxSelectionPopupSpriteGfx(&sPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE); + sub_808C940(StorageGetCurrentBox()); + sPSSData->state++; + break; + case 1: + sPSSData->newCurrBoxId = HandleBoxChooseSelectionInput(); + switch (sPSSData->newCurrBoxId) + { + case 200: + break; + default: + ClearBottomWindow(); + sub_808C950(); + FreeBoxSelectionPopupSpriteGfx(); + if (sPSSData->newCurrBoxId == 201 || sPSSData->newCurrBoxId == StorageGetCurrentBox()) + { + sub_80920FC(TRUE); + SetPSSCallback(Cb_MainPSS); + } + else + { + sPSSData->state++; + } + break; + } + break; + case 2: + SetUpScrollToBox(sPSSData->newCurrBoxId); + sPSSData->state++; + break; + case 3: + if (!ScrollToBox()) + { + SetCurrentBox(sPSSData->newCurrBoxId); + SetPSSCallback(Cb_MainPSS); + } + break; + } +} + +static void Cb_NameBox(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + sub_8093630(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sPSSData->state++; + break; + case 1: + if (!UpdatePaletteFade()) + { + sWhichToReshow = 1; + sPSSData->screenChangeType = SCREEN_CHANGE_NAME_BOX; + SetPSSCallback(Cb_ChangeScreen); + } + break; + } +} + +static void Cb_ShowMonSummary(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + sub_80936B8(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sPSSData->state++; + break; + case 1: + if (!UpdatePaletteFade()) + { + sWhichToReshow = 0; + sPSSData->screenChangeType = SCREEN_CHANGE_SUMMARY_SCREEN; + SetPSSCallback(Cb_ChangeScreen); + } + break; + } +} + +static void Cb_GiveItemFromBag(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sPSSData->state++; + break; + case 1: + if (!UpdatePaletteFade()) + { + sWhichToReshow = 2; + sPSSData->screenChangeType = SCREEN_CHANGE_ITEM_FROM_BAG; + SetPSSCallback(Cb_ChangeScreen); + } + break; + } +} + +static void Cb_OnCloseBoxPressed(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (IsMonBeingMoved()) + { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_HOLDING_POKE); + sPSSData->state = 1; + } + else if (IsActiveItemMoving()) + { + SetPSSCallback(Cb_CloseBoxWhileHoldingItem); + } + else + { + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_EXIT_BOX); + ShowYesNoWindow(0); + sPSSData->state = 2; + } + break; + case 1: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + case 2: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case MENU_B_PRESSED: + case 1: + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 0: + PlaySE(SE_PC_OFF); + ClearBottomWindow(); + sPSSData->state++; + break; + } + break; + case 3: + sub_80A0A70(0x14, 0, 1); + sPSSData->state++; + break; + case 4: + if (!sub_80A0AAC()) + { + sub_808FF70(); + gPlayerPartyCount = CalculatePlayerPartyCount(); + sPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX; + SetPSSCallback(Cb_ChangeScreen); + } + break; + } +} + +static void Cb_OnBPressed(u8 taskId) +{ + switch (sPSSData->state) + { + case 0: + if (IsMonBeingMoved()) + { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_HOLDING_POKE); + sPSSData->state = 1; + } + else if (IsActiveItemMoving()) + { + SetPSSCallback(Cb_CloseBoxWhileHoldingItem); + } + else + { + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_CONTINUE_BOX); + ShowYesNoWindow(0); + sPSSData->state = 2; + } + break; + case 1: + if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) + { + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + } + break; + case 2: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + ClearBottomWindow(); + SetPSSCallback(Cb_MainPSS); + break; + case 1: + case MENU_B_PRESSED: + PlaySE(SE_PC_OFF); + ClearBottomWindow(); + sPSSData->state++; + break; + } + break; + case 3: + sub_80A0A70(0x14, 0, 0); + sPSSData->state++; + break; + case 4: + if (!sub_80A0AAC()) + { + sub_808FF70(); + gPlayerPartyCount = CalculatePlayerPartyCount(); + sPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX; + SetPSSCallback(Cb_ChangeScreen); + } + break; + } +} + +static void Cb_ChangeScreen(u8 taskId) +{ + struct Pokemon * partyMon; + u8 mode, monIndex, maxMonIndex; + u8 screenChangeType = sPSSData->screenChangeType; + + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE) + gUnknown_20397BA = GetMovingItem(); + else + gUnknown_20397BA = ITEM_NONE; + + switch (screenChangeType) + { + case SCREEN_CHANGE_EXIT_BOX: + default: + FreePSSData(); + SetMainCallback2(Cb2_ExitPSS); + break; + case SCREEN_CHANGE_SUMMARY_SCREEN: + partyMon = sPSSData->field_218C.mon; + monIndex = sPSSData->field_2187; + maxMonIndex = sPSSData->field_2186; + mode = sPSSData->field_2188; + FreePSSData(); + ShowPokemonSummaryScreen(partyMon, monIndex, maxMonIndex, Cb2_ReturnToPSS, mode); + break; + case SCREEN_CHANGE_NAME_BOX: + FreePSSData(); + DoNamingScreen(NAMING_SCREEN_BOX, GetBoxNamePtr(StorageGetCurrentBox()), 0, 0, 0, Cb2_ReturnToPSS); + break; + case SCREEN_CHANGE_ITEM_FROM_BAG: + FreePSSData(); + GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_ITEMS, Cb2_ReturnToPSS); + break; + } + + DestroyTask(taskId); +} + +static void GiveChosenBagItem(void) +{ + u16 item = gSpecialVar_ItemId; + + if (item != 0) + { + u8 id = GetBoxCursorPosition(); + + if (sInPartyMenu) + SetMonData(&gPlayerParty[id], MON_DATA_HELD_ITEM, &item); + else + SetCurrentBoxMonData(id, MON_DATA_HELD_ITEM, &item); + + RemoveBagItem(item, 1); + } +} + +static void FreePSSData(void) +{ + FreeBoxPartyPokemonDropdowns(); + sub_80950A4(); + FREE_AND_SET_NULL(sPSSData); + FreeAllWindowBuffers(); +} + +// ****************************************************************** +// Graphics util +// ****************************************************************** + +static void SetScrollingBackground(void) +{ + SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31)); + DecompressAndLoadBgGfxUsingHeap(3, gPokemonStorageScrollingBGTileset, 0, 0, 0); + LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)BG_SCREEN_ADDR(31)); +} + +static void ScrollBackground(void) +{ + ChangeBgX(3, 128, 1); + ChangeBgY(3, 128, 2); +} + +static void LoadPSSMenuGfx(void) +{ + InitBgsFromTemplates(0, gUnknown_83CEA50, NELEMS(gUnknown_83CEA50)); + DecompressAndLoadBgGfxUsingHeap(1, gPSSMenu_Gfx, 0, 0, 0); + LZ77UnCompWram(gUnknown_83CE5FC, sPSSData->field_5AC4); + SetBgTilemapBuffer(1, sPSSData->field_5AC4); + ShowBg(1); + ScheduleBgCopyTilemapToVram(1); +} + +static bool8 InitPSSWindows(void) +{ + if (!InitWindows(gUnknown_83CEA30)) + { + return FALSE; + } + else + { + DeactivateAllTextPrinters(); + return TRUE; + } +} + +static void LoadWaveformSpritePalette(void) +{ + LoadSpritePalette(&gWaveformSpritePalette); +} + +static void sub_808F078(void) +{ + LoadPalette(gUnknown_8E9C3F8, 0, 0x20); + LoadPalette(gUnknown_8E9C418, 0x20, 0x20); + LoadPalette(gUnknown_83CEA10, 0xF0, 0x20); + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + LoadPalette(gUnknown_83CE738, 0x30, 0x20); + else + LoadPalette(gUnknown_83CE758, 0x30, 0x20); + + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(30)); + LoadCursorMonSprite(); + sub_808F0F4(); + sub_808F164(); + RefreshCursorMonData(); +} + +static void sub_808F0F4(void) +{ + sPSSData->field_D94 = CreateMonMarkingSprite_AllOff(TAG_TILE_10, TAG_PAL_DAC8, NULL); + sPSSData->field_D94->oam.priority = 1; + sPSSData->field_D94->subpriority = 1; + sPSSData->field_D94->pos1.x = 40; + sPSSData->field_D94->pos1.y = 150; + sPSSData->field_DA0 = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10); +} + +static void sub_808F164(void) +{ + u16 i; + struct SpriteSheet sheet = gWaveformSpriteSheet; + + LoadSpriteSheet(&sheet); + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&sSpriteTemplate_Waveform, i * 63 + 8, 9, 2); + sPSSData->field_D98[i] = &gSprites[spriteId]; + } +} + +static void RefreshCursorMonData(void) +{ + LoadCursorMonGfx(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality); + PrintCursorMonInfo(); + sub_808F5E8(); + ScheduleBgCopyTilemapToVram(0); +} + +static void BoxSetMosaic(void) +{ + RefreshCursorMonData(); + if (sPSSData->cursorMonSprite) + { + sPSSData->cursorMonSprite->oam.mosaic = TRUE; + sPSSData->cursorMonSprite->data[0] = 10; + sPSSData->cursorMonSprite->data[1] = 1; + sPSSData->cursorMonSprite->callback = SpriteCB_CursorMon_Mosaic; + SetGpuReg(REG_OFFSET_MOSAIC, (sPSSData->cursorMonSprite->data[0] << 12) | (sPSSData->cursorMonSprite->data[0] << 8)); + } +} + +static u8 BoxGetMosaic(void) +{ + return sPSSData->cursorMonSprite->oam.mosaic; +} + +static void SpriteCB_CursorMon_Mosaic(struct Sprite *sprite) +{ + sprite->data[0] -= sprite->data[1]; + if (sprite->data[0] < 0) + sprite->data[0] = 0; + SetGpuReg(REG_OFFSET_MOSAIC, (sprite->data[0] << 12) | (sprite->data[0] << 8)); + if (sprite->data[0] == 0) + { + sprite->oam.mosaic = FALSE; + sprite->callback = SpriteCallbackDummy; + } +} + +static void LoadCursorMonSprite(void) +{ + u16 i; + u16 tileStart; + u8 palSlot; + u8 spriteId; + struct SpriteSheet sheet = {sPSSData->field_22C4, 0x800, TAG_TILE_2}; + struct SpritePalette palette = {sPSSData->field_2244, TAG_PAL_DAC6}; + struct SpriteTemplate template = sSpriteTemplate_CursorMon; + + for (i = 0; i < 0x800; i++) + sPSSData->field_22C4[i] = 0; + for (i = 0; i < 0x10; i++) + sPSSData->field_2244[i] = 0; + + sPSSData->cursorMonSprite = NULL; + + do + { + tileStart = LoadSpriteSheet(&sheet); + if (tileStart == 0) + break; + + palSlot = LoadSpritePalette(&palette); + if (palSlot == 0xFF) + break; + + spriteId = CreateSprite(&template, 40, 48, 0); + if (spriteId == MAX_SPRITES) + break; + + sPSSData->cursorMonSprite = &gSprites[spriteId]; + sPSSData->field_223A = palSlot * 16 + 0x100; + sPSSData->field_223C = (void *)OBJ_VRAM0 + tileStart * 32; + } while (0); + + if (sPSSData->cursorMonSprite == NULL) + { + FreeSpriteTilesByTag(TAG_TILE_2); + FreeSpritePaletteByTag(TAG_PAL_DAC6); + } +} + +static void LoadCursorMonGfx(u16 species, u32 pid) +{ + if (sPSSData->cursorMonSprite == NULL) + return; + + if (species != SPECIES_NONE) + { + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], sPSSData->field_22C4, species, pid); + LZ77UnCompWram(sPSSData->cursorMonPalette, sPSSData->field_2244); + CpuCopy32(sPSSData->field_22C4, sPSSData->field_223C, 0x800); + LoadPalette(sPSSData->field_2244, sPSSData->field_223A, 0x20); + sPSSData->cursorMonSprite->invisible = FALSE; + } + else + { + sPSSData->cursorMonSprite->invisible = TRUE; + } +} + +static void PrintCursorMonInfo(void) +{ + u16 i; + u16 y; + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + for (i = 0, y = 0; i < 3; i++, y += 14) + { + AddTextPrinterParameterized(0, 2, sPSSData->cursorMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SPEED_FF, NULL); + } + AddTextPrinterParameterized(0, 0, sPSSData->cursorMonTexts[3], 6, y + 2, TEXT_SPEED_FF, NULL); + } + else + { + AddTextPrinterParameterized(0, 0, sPSSData->cursorMonTexts[3], 6, 0, TEXT_SPEED_FF, NULL); + for (i = 0, y = 15; i < 3; i++, y += 14) + { + AddTextPrinterParameterized(0, 2, sPSSData->cursorMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SPEED_FF, NULL); + } + } + + CopyWindowToVram(0, 2); + if (sPSSData->cursorMonSpecies != SPECIES_NONE) + { + sub_80BEBD0(sPSSData->cursorMonMarkings, sPSSData->field_DA0); + sPSSData->field_D94->invisible = FALSE; + } + else + { + sPSSData->field_D94->invisible = TRUE; + } +} + +static void sub_808F5E8(void) +{ + u16 i; + + if (sPSSData->cursorMonSpecies != SPECIES_NONE) + { + SetBoxPartyPokemonDropdownMap2Rect(0, 0, 0, 8, 2); + for (i = 0; i < 2; i++) + StartSpriteAnimIfDifferent(sPSSData->field_D98[i], i * 2 + 1); + } + else + { + SetBoxPartyPokemonDropdownMap2Rect(0, 0, 2, 8, 2); + for (i = 0; i < 2; i++) + StartSpriteAnim(sPSSData->field_D98[i], i * 2); + } + + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(0); + ScheduleBgCopyTilemapToVram(1); +} + +static void sub_808F68C(void) +{ + LZ77UnCompWram(gUnknown_8E9CAEC, sPSSData->field_B0); + LoadPalette(gPSSMenu_Pal, 0x10, 0x20); + SetBoxPartyPokemonDropdownMap2(1, 1, sPSSData->field_B0, 12, 22); + SetBoxPartyPokemonDropdownMap2(2, 1, gUnknown_83CE778, 9, 4); + SetBoxPartyPokemonDropdownMap2Pos(1, 10, 0); + SetBoxPartyPokemonDropdownMap2Pos(2, 21, 0); + sub_808F9FC(); + if (sInPartyMenu) + { + sub_808F90C(TRUE); + CreatePartyMonsSprites(TRUE); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + } + else + { + SetBoxPartyPokemonDropdownMap2Rect(1, 0, 20, 12, 2); + sub_808F90C(TRUE); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + } + + ScheduleBgCopyTilemapToVram(1); + sPSSData->unk_02C7 = FALSE; +} + +static void SetUpShowPartyMenu(void) +{ + sPSSData->field_2C0 = 20; + sPSSData->field_2C2 = 2; + sPSSData->field_2C5 = 0; + CreatePartyMonsSprites(FALSE); +} + +static bool8 ShowPartyMenu(void) +{ + if (sPSSData->field_2C5 == 20) + return FALSE; + + sPSSData->field_2C0--; + sPSSData->field_2C2++; + AdjustBoxPartyPokemonDropdownPos(1, 3, 1); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + ScheduleBgCopyTilemapToVram(1); + sub_8090B98(8); + if (++sPSSData->field_2C5 == 20) + { + sInPartyMenu = TRUE; + return FALSE; + } + else + { + return TRUE; + } +} + +static void SetUpHidePartyMenu(void) +{ + sPSSData->field_2C0 = 0; + sPSSData->field_2C2 = 22; + sPSSData->field_2C5 = 0; + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + sub_80960C0(); +} + +static bool8 HidePartyMenu(void) +{ + if (sPSSData->field_2C5 != 20) + { + sPSSData->field_2C0++; + sPSSData->field_2C2--; + AdjustBoxPartyPokemonDropdownPos(1, 3, -1); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + FillBgTilemapBufferRect_Palette0(1, 0x100, 10, sPSSData->field_2C2, 12, 1); + sub_8090B98(-8); + if (++sPSSData->field_2C5 != 20) + { + ScheduleBgCopyTilemapToVram(1); + return TRUE; + } + else + { + sInPartyMenu = FALSE; + DestroyAllPartyMonIcons(); + CompactPartySlots(); + SetBoxPartyPokemonDropdownMap2Rect(2, 0, 0, 9, 2); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + ScheduleBgCopyTilemapToVram(1); + return FALSE; + } + } + + return FALSE; +} + +static void sub_808F90C(bool8 arg0) +{ + if (arg0) + SetBoxPartyPokemonDropdownMap2Rect(2, 0, 0, 9, 2); + else + SetBoxPartyPokemonDropdownMap2Rect(2, 0, 2, 9, 2); + + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + ScheduleBgCopyTilemapToVram(1); +} + +static void sub_808F948(void) +{ + sPSSData->unk_02C7 = TRUE; + sPSSData->unk_02C8 = 30; + sPSSData->unk_02C9 = TRUE; +} + +static void sub_808F974(void) +{ + if (sPSSData->unk_02C7) + { + sPSSData->unk_02C7 = FALSE; + sub_808F90C(TRUE); + } +} + +static void sub_808F99C(void) +{ + if (sPSSData->unk_02C7 && ++sPSSData->unk_02C8 > 30) + { + sPSSData->unk_02C8 = 0; + sPSSData->unk_02C9 = (sPSSData->unk_02C9 == FALSE); + sub_808F90C(sPSSData->unk_02C9); + } +} + +static void sub_808F9FC(void) +{ + u8 i; + + for (i = 1; i < PARTY_SIZE; i++) + { + s32 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + sub_808FA30(i, (species != SPECIES_NONE)); + } +} + +static void sub_808FA30(u8 pos, bool8 isPartyMon) +{ + u16 i, j, index; + const u16 *data; + + if (isPartyMon) + data = gUnknown_83CE7C0; + else + data = gUnknown_83CE7D8; + + index = 3 * (3 * (pos - 1) + 1); + index *= 4; + index += 7; + for (i = 0; i < 3; i++) + { + for (j = 0; j < 4; j++) + { + sPSSData->field_B0[index + j] = data[j]; + } + data += 4; + index += 12; + } +} + +static void sub_808FAA8(void) +{ + sub_808F9FC(); + SetBoxPartyPokemonDropdownMap2Rect(1, 0, 0, 12, 22); + CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + ScheduleBgCopyTilemapToVram(1); +} + +static void SetUpDoShowPartyMenu(void) +{ + sPSSData->showPartyMenuState = 0; + PlaySE(SE_WIN_OPEN); + SetUpShowPartyMenu(); +} + +static bool8 DoShowPartyMenu(void) +{ + switch (sPSSData->showPartyMenuState) + { + case 0: + if (!ShowPartyMenu()) + { + sub_8092AE4(); + sPSSData->showPartyMenuState++; + } + break; + case 1: + if (!sub_80924A8()) + { + if (sPSSData->setMosaic) + BoxSetMosaic(); + sPSSData->showPartyMenuState++; + } + break; + case 2: + return FALSE; + } + return TRUE; +} + +static void sub_808FB68(void) +{ + SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(29)); + TextWindow_SetStdFrame0_WithPal(1, 2, 208); + FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17); + CopyBgTilemapBufferToVram(0); +} + +static void PrintStorageActionText(u8 id) +{ + u8 *txtPtr; + + DynamicPlaceholderTextUtil_Reset(); + switch (gPCStorageActionTexts[id].format) + { + case PC_TEXT_FMT_NORMAL: + break; + case PC_TEXT_FMT_MON_NAME_1: + case PC_TEXT_FMT_MON_NAME_2: + case PC_TEXT_FMT_MON_NAME_3: + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->cursorMonNick); + break; + case PC_TEXT_FMT_MON_NAME_4: + case PC_TEXT_FMT_MON_NAME_5: + case PC_TEXT_FMT_MON_NAME_6: + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->field_21E0); + break; + case PC_TEXT_FMT_ITEM_NAME: + if (IsActiveItemMoving()) + txtPtr = StringCopy(sPSSData->itemName, GetMovingItemName()); + else + txtPtr = StringCopy(sPSSData->itemName, sPSSData->cursorMonTexts[3]); + + while (*(txtPtr - 1) == CHAR_SPACE) + txtPtr--; + + *txtPtr = EOS; + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->itemName); + break; + } + + DynamicPlaceholderTextUtil_ExpandPlaceholders(sPSSData->field_2190, gPCStorageActionTexts[id].text); + FillWindowPixelBuffer(1, PIXEL_FILL(1)); + AddTextPrinterParameterized(1, 1, sPSSData->field_2190, 0, 2, TEXT_SPEED_FF, NULL); + DrawTextBorderOuter(1, 2, 13); + PutWindowTilemap(1); + CopyWindowToVram(1, 2); + ScheduleBgCopyTilemapToVram(0); +} + +static void ShowYesNoWindow(s8 cursorPos) +{ + CreateYesNoMenu(&sYesNoWindowTemplate, 1, 0, 2, 0x00b, 14, 1); + Menu_MoveCursorNoWrapAround(cursorPos); +} + +static void ClearBottomWindow(void) +{ + ClearStdWindowAndFrameToTransparent(1, FALSE); + ScheduleBgCopyTilemapToVram(0); +} + +static void AddWallpaperSetsMenu(void) +{ + InitMenu(); + SetMenuText(PC_TEXT_SCENERY1); + SetMenuText(PC_TEXT_SCENERY2); + SetMenuText(PC_TEXT_SCENERY3); + SetMenuText(PC_TEXT_ETCETERA); + AddMenu(); +} + +static void AddWallpapersMenu(u8 wallpaperSet) +{ + InitMenu(); + switch (wallpaperSet) + { + case 0: + SetMenuText(PC_TEXT_FOREST); + SetMenuText(PC_TEXT_CITY); + SetMenuText(PC_TEXT_DESERT); + SetMenuText(PC_TEXT_SAVANNA); + break; + case 1: + SetMenuText(PC_TEXT_CRAG); + SetMenuText(PC_TEXT_VOLCANO); + SetMenuText(PC_TEXT_SNOW); + SetMenuText(PC_TEXT_CAVE); + break; + case 2: + SetMenuText(PC_TEXT_BEACH); + SetMenuText(PC_TEXT_SEAFLOOR); + SetMenuText(PC_TEXT_RIVER); + SetMenuText(PC_TEXT_SKY); + break; + case 3: + SetMenuText(PC_TEXT_POLKADOT); + SetMenuText(PC_TEXT_POKECENTER); + SetMenuText(PC_TEXT_MACHINE); + SetMenuText(PC_TEXT_SIMPLE); + break; + } + AddMenu(); +} + +u8 GetCurrentBoxOption(void) +{ + return sCurrentBoxOption; +} + +static void sub_808FDFC(void) +{ + if (!IsCursorOnBox()) + { + if (sInPartyMenu) + sub_8095C84(CURSOR_AREA_IN_PARTY, GetBoxCursorPosition()); + else + sub_8095C84(CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); + } + + if (gUnknown_20397BA != ITEM_NONE) + { + sub_8095E2C(gUnknown_20397BA); + sub_8094D14(3); + } +} + +static void sub_808FE54(u8 action) +{ + u16 event; + u8 fromBox = sub_8094D34(); + u16 species = sPSSData->cursorMonSpecies; + u16 species2; + u8 toBox; + struct PssQuestLogBuffer * qlogBuffer; + if (sInPartyMenu) + { + toBox = TOTAL_BOXES_COUNT; + species2 = GetMonData(&gPlayerParty[GetBoxCursorPosition()], MON_DATA_SPECIES2); + } + else + { + toBox = StorageGetCurrentBox(); + species2 = GetCurrentBoxMonData(GetBoxCursorPosition(), MON_DATA_SPECIES2); + } + qlogBuffer = &sPSSData->qlogBuffer; + + switch (action) + { + default: + return; + case 0: + if (sInPartyMenu) + { + if (fromBox == TOTAL_BOXES_COUNT) + return; + else + event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON; + } + else + { + if (fromBox == TOTAL_BOXES_COUNT) + // Should upmerge but doesn't + event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON; + else + event = fromBox != toBox ? QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES : QL_EVENT_SWITCHED_MONS_WITHIN_BOX; + } + qlogBuffer->species = species; + qlogBuffer->species2 = species2; + qlogBuffer->fromBox = fromBox; + qlogBuffer->toBox = toBox; + break; + case 1: + qlogBuffer->species = species; + qlogBuffer->species2 = SPECIES_NONE; + qlogBuffer->fromBox = fromBox; + qlogBuffer->toBox = 0xFF; + if (sInPartyMenu) + { + if (fromBox == TOTAL_BOXES_COUNT) + return; + else + event = QL_EVENT_WITHDREW_MON_PC; + } + else + { + if (fromBox == TOTAL_BOXES_COUNT) + { + event = QL_EVENT_DEPOSITED_MON_PC; + qlogBuffer->fromBox = toBox; + } + else if (fromBox != toBox) + { + event = QL_EVENT_MOVED_MON_BETWEEN_BOXES; + qlogBuffer->toBox = toBox; + } + else + event = QL_EVENT_MOVED_MON_WITHIN_BOX; + } + break; + case 2: + event = QL_EVENT_DEPOSITED_MON_PC; + qlogBuffer->species = species; + qlogBuffer->species2 = SPECIES_NONE; + qlogBuffer->fromBox = gUnknown_20397B6; + qlogBuffer->toBox = 0xFF; + break; + case 3: + event = QL_EVENT_SWITCHED_MULTIPLE_MONS; + qlogBuffer->species = SPECIES_NONE; + qlogBuffer->species2 = SPECIES_NONE; + qlogBuffer->fromBox = fromBox; + qlogBuffer->toBox = toBox; + break; + } + SetQuestLogEvent(event, (const void *)qlogBuffer); +} + +static void sub_808FF70(void) +{ + if (sLastUsedBox != StorageGetCurrentBox()) + { + FlagClear(FLAG_SHOWN_BOX_WAS_FULL_MESSAGE); + VarSet(VAR_PC_BOX_TO_SEND_MON, StorageGetCurrentBox()); + } +} diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c new file mode 100644 index 000000000..05226838e --- /dev/null +++ b/src/pokemon_storage_system_4.c @@ -0,0 +1,1489 @@ +#include "global.h" +#include "gflib.h" +#include "event_data.h" +#include "graphics.h" +#include "new_menu_helpers.h" +#include "pokemon_icon.h" +#include "pokemon_storage_system_internal.h" +#include "strings.h" +#include "task.h" +#include "trig.h" +#include "constants/species.h" +#include "constants/vars.h" +#include "constants/flags.h" + +static void sub_8090324(struct Sprite * sprite); +static void SetBoxSpeciesAndPersonalities(u8 boxId); +static void sub_8090A74(struct Sprite * sprite, u16 idx); +static void sub_8090AE0(struct Sprite * sprite); +static void DestroyBoxMonIcon(struct Sprite * sprite); +static void sub_80911B0(struct Sprite * sprite); +static void sub_8091420(u8 taskId); +static s8 sub_80916F4(u8 boxId); +static void LoadWallpaperGfx(u8 wallpaperId, s8 direction); +static bool32 WaitForWallpaperGfxLoad(void); +static void sub_8091984(void *buffer, const void *buffer2, s8 direction, u8 baseBlock); +static void sub_8091A24(void *buffer); +static void sub_8091A94(u8 wallpaperId); +static void sub_8091C48(u8 wallpaperId, s8 direction); +static void sub_8091E84(struct Sprite * sprite); +static void sub_8091EB8(struct Sprite * sprite); +static s16 sub_8091F60(const u8 *boxName); +static void sub_8091E34(void); +static void sub_8091EF0(void); +static void sub_8091F80(void); +static void sub_809200C(s8 direction); +static void sub_80920AC(void); +static void sub_8092164(struct Sprite * sprite); + +static const struct OamData gUnknown_83CEC08; + +static const struct SpriteTemplate gUnknown_83CEBF0 = { + .tileTag = TAG_TILE_12, + .paletteTag = TAG_PAL_DAC0, + .oam = &gUnknown_83CEC08, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct OamData gUnknown_83CEC08 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0x000, + .priority = 0, + .paletteNum = 0 +}; + +static const union AffineAnimCmd gUnknown_83CEC10[] = { + AFFINEANIMCMD_FRAME(-2, -2, 0, 120), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gUnknown_83CEC20[] = { + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(16, 16, 0, 15), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const gUnknown_83CEC38[] = { + gUnknown_83CEC10, + gUnknown_83CEC20 +}; + +static const u16 gUnknown_83CEC40[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal"); +static const u32 gUnknown_83CEC80[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz"); +static const u32 gUnknown_83CF050[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz"); +static const u16 gUnknown_83CF12C[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal"); +static const u32 gUnknown_83CF16C[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz"); +static const u32 gUnknown_83CF374[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz"); +static const u16 gUnknown_83CF424[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal"); +static const u32 gUnknown_83CF464[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz"); +static const u32 gUnknown_83CF750[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz"); +static const u16 gUnknown_83CF834[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal"); +static const u32 gUnknown_83CF874[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz"); +static const u32 gUnknown_83CFA94[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz"); +static const u16 gUnknown_83CFB60[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal"); +static const u32 gUnknown_83CFBA0[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz"); +static const u32 gUnknown_83CFEF0[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz"); +static const u16 gUnknown_83CFFC8[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal"); +static const u32 gUnknown_83D0008[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz"); +static const u8 sSpace_83D0338[4] = {}; +static const u32 gUnknown_83D033C[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz"); +static const u16 gUnknown_83D0414[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal"); +static const u32 gUnknown_83D0454[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz"); +static const u32 gUnknown_83D070C[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz"); +static const u16 gUnknown_83D07D8[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal"); +static const u32 gUnknown_83D0818[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz"); +static const u32 gUnknown_83D0B5C[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz"); +static const u16 gUnknown_83D0C38[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal"); +static const u32 gUnknown_83D0C78[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz"); +static const u32 gUnknown_83D0FFC[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz"); +static const u16 gUnknown_83D10E4[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal"); +static const u32 gUnknown_83D1124[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz"); +static const u32 gUnknown_83D13D8[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz"); +static const u16 gUnknown_83D14B4[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal"); +static const u32 gUnknown_83D14F4[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz"); +static const u32 gUnknown_83D1788[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz"); +static const u16 gUnknown_83D1874[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal"); +static const u32 gUnknown_83D18B4[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz"); +static const u32 gUnknown_83D1B4C[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz"); +static const u16 gUnknown_83D1C2C[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal"); +static const u8 sSpace_83D1C6C[32] = {}; +static const u32 gUnknown_83D1C8C[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz"); +static const u32 gUnknown_83D1EC4[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz"); +static const u16 gUnknown_83D1F94[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal"); +static const u32 gUnknown_83D1FD4[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz"); +static const u32 gUnknown_83D22B8[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz"); +static const u16 gUnknown_83D239C[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal"); +static const u32 gUnknown_83D23DC[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz"); +static const u32 gUnknown_83D256C[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz"); +static const u16 gUnknown_83D2614[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal"); +static const u32 gUnknown_83D2654[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz"); +static const u32 gUnknown_83D277C[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz"); +static const u16 gUnknown_83D2820[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin"); + +static 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)} +}; + +static 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}, +}; + +static const u16 gUnknown_83D2AD0[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp"); +static const u8 sUnref_83D2B50[] = {0xba, 0x23}; + +static const struct SpriteSheet gUnknown_83D2B54 = { + gUnknown_83D2AD0, 0x0080, TAG_TILE_6 +}; + +static 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 +}; + +static const union AnimCmd gUnknown_83D2B64[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_83D2B6C[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const gUnknown_83D2B74[] = { + gUnknown_83D2B64, + gUnknown_83D2B6C +}; + +static 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 +}; + +static 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 +}; + +static const union AnimCmd gUnknown_83D2B9C[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +static const union AnimCmd gUnknown_83D2BA4[] = { + ANIMCMD_FRAME(2, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const gUnknown_83D2BAC[] = { + gUnknown_83D2B9C, + gUnknown_83D2BA4 +}; + +static 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_808FFAC(void) +{ + u16 i; + + LoadMonIconPalettes(); + for (i = 0; i < MAX_MON_ICONS; i++) + sPSSData->field_B08[i] = 0; + for (i = 0; i < MAX_MON_ICONS; i++) + sPSSData->field_B58[i] = 0; + for (i = 0; i < PARTY_SIZE; i++) + sPSSData->partySprites[i] = NULL; + for (i = 0; i < IN_BOX_COUNT; i++) + sPSSData->boxMonsSprites[i] = NULL; + + sPSSData->movingMonSprite = NULL; + sPSSData->field_78C = 0; +} + +static u8 sub_8090058(void) +{ + return (IsCursorInBox() ? 2 : 1); +} + +void CreateMovingMonIcon(void) +{ + u32 personality = GetMonData(&sPSSData->movingMon, MON_DATA_PERSONALITY); + u16 species = GetMonData(&sPSSData->movingMon, MON_DATA_SPECIES2); + u8 priority = sub_8090058(); + + sPSSData->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7); + sPSSData->movingMonSprite->callback = sub_80911B0; +} + +static void sub_80900D4(u8 boxId) +{ + u8 boxPosition; + u16 i, j, count; + u16 species; + u32 personality; + + count = 0; + boxPosition = 0; + for (i = 0; i < IN_BOX_COLUMNS; i++) + { + for (j = 0; j < IN_BOX_ROWS; j++) + { + species = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); + if (species != SPECIES_NONE) + { + personality = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); + sPSSData->boxMonsSprites[count] = CreateMonIconSprite(species, personality, 8 * (3 * j) + 100, 8 * (3 * i) + 44, 2, 19 - j); + } + else + { + sPSSData->boxMonsSprites[count] = NULL; + } + boxPosition++; + count++; + } + } + + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + for (boxPosition = 0; boxPosition < IN_BOX_COUNT; boxPosition++) + { + if (GetBoxMonDataAt(boxId, boxPosition, MON_DATA_HELD_ITEM) == 0) + sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + } + } +} + +void sub_80901EC(u8 boxPosition) +{ + u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES2); + + if (species != SPECIES_NONE) + { + s16 x = 8 * (3 * (boxPosition % IN_BOX_ROWS)) + 100; + s16 y = 8 * (3 * (boxPosition / IN_BOX_ROWS)) + 44; + u32 personality = GetCurrentBoxMonData(boxPosition, MON_DATA_PERSONALITY); + + sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(species, personality, x, y, 2, 19 - (boxPosition % IN_BOX_ROWS)); + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + } +} + +static void sub_809029C(s16 arg0) +{ + u16 i; + + for (i = 0; i < IN_BOX_COUNT; i++) + { + if (sPSSData->boxMonsSprites[i] != NULL) + { + sPSSData->boxMonsSprites[i]->data[2] = arg0; + sPSSData->boxMonsSprites[i]->data[4] = 1; + sPSSData->boxMonsSprites[i]->callback = sub_8090324; + } + } +} + +static void sub_80902E0(struct Sprite *sprite) +{ + if (sprite->data[1] != 0) + { + sprite->data[1]--; + sprite->pos1.x += sprite->data[2]; + } + else + { + sPSSData->field_C66--; + sprite->pos1.x = sprite->data[3]; + sprite->callback = SpriteCallbackDummy; + } +} + +static void sub_8090324(struct Sprite *sprite) +{ + if (sprite->data[4] != 0) + { + sprite->data[4]--; + } + else + { + sprite->pos1.x += sprite->data[2]; + sprite->data[5] = sprite->pos1.x + sprite->pos2.x; + if (sprite->data[5] <= 68 || sprite->data[5] >= 252) + sprite->callback = SpriteCallbackDummy; + } +} + +static void DestroyAllIconsInRow(u8 row) +{ + u16 column; + u8 boxPosition = row; + + for (column = 0; column < IN_BOX_COLUMNS; column++) + { + if (sPSSData->boxMonsSprites[boxPosition] != NULL) + { + DestroyBoxMonIcon(sPSSData->boxMonsSprites[boxPosition]); + sPSSData->boxMonsSprites[boxPosition] = NULL; + } + boxPosition += IN_BOX_ROWS; + } +} + +static u8 sub_80903A4(u8 row, u16 times, s16 xDelta) +{ + s32 i; + u16 y = 44; + s16 xDest = 8 * (3 * row) + 100; + u16 x = xDest - ((times + 1) * xDelta); + u8 subpriority = 19 - row; + u8 count = 0; + u8 boxPosition = row; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + for (i = 0; i < IN_BOX_COLUMNS; i++) + { + if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE) + { + sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(sPSSData->boxSpecies[boxPosition], + sPSSData->boxPersonalities[boxPosition], + x, y, 2, subpriority); + if (sPSSData->boxMonsSprites[boxPosition] != NULL) + { + sPSSData->boxMonsSprites[boxPosition]->data[1] = times; + sPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta; + sPSSData->boxMonsSprites[boxPosition]->data[3] = xDest; + sPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0; + count++; + } + } + boxPosition += IN_BOX_ROWS; + y += 24; + } + } + else + { + for (i = 0; i < IN_BOX_COLUMNS; i++) + { + if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE) + { + sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(sPSSData->boxSpecies[boxPosition], + sPSSData->boxPersonalities[boxPosition], + x, y, 2, subpriority); + if (sPSSData->boxMonsSprites[boxPosition] != NULL) + { + sPSSData->boxMonsSprites[boxPosition]->data[1] = times; + sPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta; + sPSSData->boxMonsSprites[boxPosition]->data[3] = xDest; + sPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0; + if (GetBoxMonDataAt(sPSSData->field_C5C, boxPosition, MON_DATA_HELD_ITEM) == 0) + sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + count++; + } + } + boxPosition += IN_BOX_ROWS; + y += 24; + } + } + + return count; +} + +static void sub_8090574(u8 boxId, s8 direction) +{ + sPSSData->field_C6A = 0; + sPSSData->field_C6B = boxId; + sPSSData->field_C69 = direction; + sPSSData->field_C60 = 32; + sPSSData->field_C64 = -(6 * direction); + sPSSData->field_C66 = 0; + SetBoxSpeciesAndPersonalities(boxId); + if (direction > 0) + sPSSData->field_C68 = 0; + else + sPSSData->field_C68 = IN_BOX_ROWS - 1; + + sPSSData->field_C62 = (24 * sPSSData->field_C68) + 100; + sub_809029C(sPSSData->field_C64); +} + +static bool8 sub_809062C(void) +{ + if (sPSSData->field_C60 != 0) + sPSSData->field_C60--; + + switch (sPSSData->field_C6A) + { + case 0: + sPSSData->field_C62 += sPSSData->field_C64; + if (sPSSData->field_C62 <= 64 || sPSSData->field_C62 >= 252) + { + DestroyAllIconsInRow(sPSSData->field_C68); + sPSSData->field_C62 += sPSSData->field_C69 * 24; + sPSSData->field_C6A++; + } + break; + case 1: + sPSSData->field_C62 += sPSSData->field_C64; + sPSSData->field_C66 += sub_80903A4(sPSSData->field_C68, sPSSData->field_C60, sPSSData->field_C64); + if ((sPSSData->field_C69 > 0 && sPSSData->field_C68 == IN_BOX_ROWS - 1) + || (sPSSData->field_C69 < 0 && sPSSData->field_C68 == 0)) + { + sPSSData->field_C6A++; + } + else + { + sPSSData->field_C68 += sPSSData->field_C69; + sPSSData->field_C6A = 0; + } + break; + case 2: + if (sPSSData->field_C66 == 0) + { + sPSSData->field_C60++; + return FALSE; + } + break; + default: + return FALSE; + } + + return TRUE; +} + +static void SetBoxSpeciesAndPersonalities(u8 boxId) +{ + s32 i, j, boxPosition; + + boxPosition = 0; + for (i = 0; i < IN_BOX_COLUMNS; i++) + { + for (j = 0; j < IN_BOX_ROWS; j++) + { + sPSSData->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); + if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE) + sPSSData->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); + boxPosition++; + } + } + + sPSSData->field_C5C = boxId; +} + +void DestroyBoxMonIconAtPosition(u8 boxPosition) +{ + if (sPSSData->boxMonsSprites[boxPosition] != NULL) + { + DestroyBoxMonIcon(sPSSData->boxMonsSprites[boxPosition]); + sPSSData->boxMonsSprites[boxPosition] = NULL; + } +} + +void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode) +{ + if (sPSSData->boxMonsSprites[boxPosition] != NULL) + { + sPSSData->boxMonsSprites[boxPosition]->oam.objMode = objMode; + } +} + +void CreatePartyMonsSprites(bool8 arg0) +{ + u16 i, count; + u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2); + u32 personality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY); + + sPSSData->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12); + count = 1; + for (i = 1; i < PARTY_SIZE; i++) + { + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + if (species != SPECIES_NONE) + { + personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + sPSSData->partySprites[i] = CreateMonIconSprite(species, personality, 152, 8 * (3 * (i - 1)) + 16, 1, 12); + count++; + } + else + { + sPSSData->partySprites[i] = NULL; + } + } + + if (!arg0) + { + for (i = 0; i < count; i++) + { + sPSSData->partySprites[i]->pos1.y -= 160; + sPSSData->partySprites[i]->invisible = TRUE; + } + } + + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + for (i = 0; i < PARTY_SIZE; i++) + { + if (sPSSData->partySprites[i] != NULL && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == 0) + sPSSData->partySprites[i]->oam.objMode = ST_OAM_OBJ_BLEND; + } + } +} + +void sub_80909F4(void) +{ + u16 i, count; + + sPSSData->field_C5E = 0; + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (sPSSData->partySprites[i] != NULL) + { + if (i != count) + { + sub_8090A74(sPSSData->partySprites[i], count); + sPSSData->partySprites[i] = NULL; + sPSSData->field_C5E++; + } + count++; + } + } +} + +u8 sub_8090A60(void) +{ + return sPSSData->field_C5E; +} + +static void sub_8090A74(struct Sprite *sprite, u16 partyId) +{ + s16 x, y; + + sprite->data[1] = partyId; + if (partyId == 0) + x = 104, y = 64; + else + x = 152, y = 8 * (3 * (partyId - 1)) + 16; + + sprite->data[2] = (u16)(sprite->pos1.x) * 8; + sprite->data[3] = (u16)(sprite->pos1.y) * 8; + sprite->data[4] = ((x * 8) - sprite->data[2]) / 8; + sprite->data[5] = ((y * 8) - sprite->data[3]) / 8; + sprite->data[6] = 8; + sprite->callback = sub_8090AE0; +} + +static void sub_8090AE0(struct Sprite *sprite) +{ + if (sprite->data[6] != 0) + { + s16 x = sprite->data[2] += sprite->data[4]; + s16 y = sprite->data[3] += sprite->data[5]; + sprite->pos1.x = x / 8u; + sprite->pos1.y = y / 8u; + sprite->data[6]--; + } + else + { + if (sprite->data[1] == 0) + { + sprite->pos1.x = 104; + sprite->pos1.y = 64; + } + else + { + sprite->pos1.x = 152; + sprite->pos1.y = 8 * (3 * (sprite->data[1] - 1)) + 16; + } + sprite->callback = SpriteCallbackDummy; + sPSSData->partySprites[sprite->data[1]] = sprite; + sPSSData->field_C5E--; + } +} + +void DestroyMovingMonIcon(void) +{ + if (sPSSData->movingMonSprite != NULL) + { + DestroyBoxMonIcon(sPSSData->movingMonSprite); + sPSSData->movingMonSprite = NULL; + } +} + +void sub_8090B98(s16 yDelta) +{ + u16 i, posY; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (sPSSData->partySprites[i] != NULL) + { + sPSSData->partySprites[i]->pos1.y += yDelta; + posY = sPSSData->partySprites[i]->pos1.y + sPSSData->partySprites[i]->pos2.y + sPSSData->partySprites[i]->centerToCornerVecY; + posY += 16; + if (posY > 192) + sPSSData->partySprites[i]->invisible = TRUE; + else + sPSSData->partySprites[i]->invisible = FALSE; + } + } +} + +void DestroyPartyMonIcon(u8 partyId) +{ + if (sPSSData->partySprites[partyId] != NULL) + { + DestroyBoxMonIcon(sPSSData->partySprites[partyId]); + sPSSData->partySprites[partyId] = NULL; + } +} + +void DestroyAllPartyMonIcons(void) +{ + u16 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (sPSSData->partySprites[i] != NULL) + { + DestroyBoxMonIcon(sPSSData->partySprites[i]); + sPSSData->partySprites[i] = NULL; + } + } +} + +void SetPartyMonIconObjMode(u8 partyId, u8 objMode) +{ + if (sPSSData->partySprites[partyId] != NULL) + { + sPSSData->partySprites[partyId]->oam.objMode = objMode; + } +} + +void sub_8090CC0(u8 mode, u8 id) +{ + if (mode == MODE_PARTY) + { + sPSSData->movingMonSprite = sPSSData->partySprites[id]; + sPSSData->partySprites[id] = NULL; + } + else if (mode == MODE_BOX) + { + sPSSData->movingMonSprite = sPSSData->boxMonsSprites[id]; + sPSSData->boxMonsSprites[id] = NULL; + } + else + { + return; + } + + sPSSData->movingMonSprite->callback = sub_80911B0; + sPSSData->movingMonSprite->oam.priority = sub_8090058(); + sPSSData->movingMonSprite->subpriority = 7; +} + +void sub_8090D58(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) // party mon + { + sPSSData->partySprites[position] = sPSSData->movingMonSprite; + sPSSData->partySprites[position]->oam.priority = 1; + sPSSData->partySprites[position]->subpriority = 12; + } + else + { + sPSSData->boxMonsSprites[position] = sPSSData->movingMonSprite; + sPSSData->boxMonsSprites[position]->oam.priority = 2; + sPSSData->boxMonsSprites[position]->subpriority = 19 - (position % IN_BOX_ROWS); + } + sPSSData->movingMonSprite->callback = SpriteCallbackDummy; + sPSSData->movingMonSprite = NULL; +} + +void sub_8090E08(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) // party mon + sPSSData->field_B00 = &sPSSData->partySprites[position]; + else + sPSSData->field_B00 = &sPSSData->boxMonsSprites[position]; + + sPSSData->movingMonSprite->callback = SpriteCallbackDummy; + sPSSData->field_C5D = 0; +} + +bool8 sub_8090E74(void) +{ + if (sPSSData->field_C5D == 16) + return FALSE; + + sPSSData->field_C5D++; + if (sPSSData->field_C5D & 1) + { + (*sPSSData->field_B00)->pos1.y--; + sPSSData->movingMonSprite->pos1.y++; + } + + (*sPSSData->field_B00)->pos2.x = gSineTable[sPSSData->field_C5D * 8] / 16; + sPSSData->movingMonSprite->pos2.x = -(gSineTable[sPSSData->field_C5D * 8] / 16); + if (sPSSData->field_C5D == 8) + { + sPSSData->movingMonSprite->oam.priority = (*sPSSData->field_B00)->oam.priority; + sPSSData->movingMonSprite->subpriority = (*sPSSData->field_B00)->subpriority; + (*sPSSData->field_B00)->oam.priority = sub_8090058(); + (*sPSSData->field_B00)->subpriority = 7; + } + + if (sPSSData->field_C5D == 16) + { + struct Sprite *sprite = sPSSData->movingMonSprite; + sPSSData->movingMonSprite = (*sPSSData->field_B00); + *sPSSData->field_B00 = sprite; + + sPSSData->movingMonSprite->callback = sub_80911B0; + (*sPSSData->field_B00)->callback = SpriteCallbackDummy; + } + + return TRUE; +} + +void sub_8090FC4(u8 mode, u8 position) +{ + switch (mode) + { + case MODE_PARTY: + sPSSData->field_B04 = &sPSSData->partySprites[position]; + break; + case MODE_BOX: + sPSSData->field_B04 = &sPSSData->boxMonsSprites[position]; + break; + case MODE_2: + sPSSData->field_B04 = &sPSSData->movingMonSprite; + break; + default: + return; + } + + if (*sPSSData->field_B04 != NULL) + { + InitSpriteAffineAnim(*sPSSData->field_B04); + (*sPSSData->field_B04)->oam.affineMode = ST_OAM_AFFINE_NORMAL; + (*sPSSData->field_B04)->affineAnims = gUnknown_83CEC38; + 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; +} + +static 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; +} + +static 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; +} + +static 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]; +} + +static void DestroyBoxMonIcon(struct Sprite *sprite) +{ + sub_8091290(sprite->data[0]); + DestroySprite(sprite); +} + +void sub_80913DC(u8 boxId) +{ + u8 taskId = CreateTask(sub_8091420, 2); + + gTasks[taskId].data[2] = boxId; +} + +bool8 sub_809140C(void) +{ + return FuncIsActiveTask(sub_8091420); +} + +static 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; +} + +static 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; +} + +static 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); +} + +static bool32 WaitForWallpaperGfxLoad(void) +{ + if (IsDma3ManagerBusyWithBgCopy() == TRUE) + return FALSE; + + return TRUE; +} + +static 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); +} + +static 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; + } +} + +static 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; +} + +static 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; + } +} + +static 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]; +} + +static 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; +} + +static 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); + } +} + +static 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); +} + +static s16 sub_8091F60(const u8 *string) +{ + return 0xB0 - GetStringWidth(1, string, 0) / 2; +} + +static 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); +} + +static 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; +} + +static 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; + } + } +} + +static 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]; +} diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c new file mode 100644 index 000000000..0b707537e --- /dev/null +++ b/src/pokemon_storage_system_5.c @@ -0,0 +1,2036 @@ +#include "global.h" +#include "gflib.h" +#include "data.h" +#include "item.h" +#include "mail_data.h" +#include "pokemon_storage_system_internal.h" +#include "pokemon_summary_screen.h" +#include "strings.h" +#include "constants/items.h" +#include "constants/moves.h" + +static EWRAM_DATA struct Pokemon gUnknown_20397BC = {}; +static EWRAM_DATA s8 sBoxCursorArea = 0; +static EWRAM_DATA s8 sBoxCursorPosition = 0; +static EWRAM_DATA bool8 sIsMonBeingMoved = FALSE; +static EWRAM_DATA u8 sMovingMonOrigBoxId = 0; +static EWRAM_DATA u8 sMovingMonOrigBoxPos = 0; +static EWRAM_DATA bool8 sCanOnlyMove = FALSE; +static EWRAM_DATA u8 gUnknown_2039826 = 0; + +static void sub_80929B0(void); +static bool8 MonPlaceChange_Move(void); +static bool8 MonPlaceChange_Place(void); +static bool8 MonPlaceChange_Shift(void); +static bool8 sub_8092E00(void); +static bool8 sub_8092E10(void); +static bool8 sub_8092E20(void); +static bool8 sub_8092E54(void); +static void MoveMon(void); +static void PlaceMon(void); +static void SetMovedMonData(u8 boxId, u8 cursorPos); +static void SetPlacedMonData(u8 boxId, u8 cursorPos); +static void PurgeMonOrBoxMon(u8 boxId, u8 cursorPos); +static void SetShiftedMonData(u8 boxId, u8 cursorPos); +static void sub_8093A10(void); +static void SetCursorMonData(void * cursorMon, u8 mode); +static void sub_8093AAC(void); +static u8 InBoxInput_Normal(void); +static u8 InBoxInput_GrabbingMultiple(void); +static u8 InBoxInput_MovingMultiple(void); +static void AddBoxMenu(void); +static bool8 sub_8094924(void); +static bool8 sub_809494C(void); +static bool8 sub_8094A0C(void); +static void sub_8094AD8(void); +static void sub_8094C84(void); + +static const u16 gHandCursorPalette[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); +static const u16 gHandCursorTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp"); +static const u16 gHandCursorShadowTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D33EC.4bpp"); + +void sub_80922C0(void) +{ + if (sPSSData->boxOption != BOX_OPTION_DEPOSIT) + sBoxCursorArea = CURSOR_AREA_IN_BOX; + else + sBoxCursorArea = CURSOR_AREA_IN_PARTY; + + sBoxCursorPosition = 0; + sIsMonBeingMoved = FALSE; + sMovingMonOrigBoxId = 0; + sMovingMonOrigBoxPos = 0; + sCanOnlyMove = FALSE; + sub_8092B50(); + sub_8094AD8(); + sPSSData->field_CD6 = 1; + sPSSData->inBoxMovingMode = 0; + sub_8093A10(); +} + +void sub_8092340(void) +{ + sub_8094AD8(); + sub_8093AAC(); + sPSSData->field_CD6 = 1; + sPSSData->inBoxMovingMode = 0; + if (sIsMonBeingMoved) + { + sPSSData->movingMon = gUnknown_20397BC; + CreateMovingMonIcon(); + } +} + +static void sub_8092398(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y) +{ + switch (cursorArea) + { + case CURSOR_AREA_IN_BOX: + *x = (cursorPosition % IN_BOX_ROWS) * 24 + 100; + *y = (cursorPosition / IN_BOX_ROWS) * 24 + 32; + break; + case CURSOR_AREA_IN_PARTY: + if (cursorPosition == 0) + { + *x = 0x68; + *y = 0x34; + } + else if (cursorPosition == PARTY_SIZE) + { + *x = 0x98; + *y = 0x84; + } + else + { + *x = 0x98; + *y = (cursorPosition - 1) * 24 + 4; + } + break; + case CURSOR_AREA_BOX: + *x = 0xa2; + *y = 0x0c; + break; + case CURSOR_AREA_BUTTONS: + *y = sIsMonBeingMoved ? 8 : 14; + *x = cursorPosition * 0x58 + 0x78; + break; + case 4: + *x = 0xa0; + *y = 0x60; + break; + } +} + +static u16 sub_8092458(void) +{ + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + return GetMonData(&gPlayerParty[sBoxCursorPosition], MON_DATA_SPECIES); + case CURSOR_AREA_IN_BOX: + return GetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_SPECIES); + default: + return SPECIES_NONE; + } +} + +bool8 sub_80924A8(void) +{ + s16 tmp; + + if (sPSSData->field_CD0 == 0) + { + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return FALSE; + else + return sub_809610C(); + } + else if (--sPSSData->field_CD0 != 0) + { + sPSSData->field_CBC += sPSSData->field_CC4; + sPSSData->field_CC0 += sPSSData->field_CC8; + sPSSData->field_CB4->pos1.x = sPSSData->field_CBC >> 8; + sPSSData->field_CB4->pos1.y = sPSSData->field_CC0 >> 8; + if (sPSSData->field_CB4->pos1.x > 0x100) + { + tmp = sPSSData->field_CB4->pos1.x - 0x100; + sPSSData->field_CB4->pos1.x = tmp + 0x40; + } + if (sPSSData->field_CB4->pos1.x < 0x40) + { + tmp = 0x40 - sPSSData->field_CB4->pos1.x; + sPSSData->field_CB4->pos1.x = 0x100 - tmp; + } + if (sPSSData->field_CB4->pos1.y > 0xb0) + { + tmp = sPSSData->field_CB4->pos1.y - 0xb0; + sPSSData->field_CB4->pos1.y = tmp - 0x10; + } + if (sPSSData->field_CB4->pos1.y < -0x10) + { + tmp = -0x10 - sPSSData->field_CB4->pos1.y; + sPSSData->field_CB4->pos1.y = 0xb0 - tmp; + } + if (sPSSData->field_CD7 && --sPSSData->field_CD7 == 0) + sPSSData->field_CB4->vFlip = (sPSSData->field_CB4->vFlip == FALSE); + } + else + { + sPSSData->field_CB4->pos1.x = sPSSData->field_CCC; + sPSSData->field_CB4->pos1.y = sPSSData->field_CCE; + sub_80929B0(); + } + + return TRUE; +} + +static void sub_8092604(u8 newCurosrArea, u8 newCursorPosition) +{ + u16 x, y; + + sub_8092398(newCurosrArea, newCursorPosition, &x, &y); + sPSSData->field_CD4 = newCurosrArea; + sPSSData->field_CD5 = newCursorPosition; + sPSSData->field_CCC = x; + sPSSData->field_CCE = y; +} + +static void sub_8092660(void) +{ + int r7, r0; + + if (sPSSData->field_CD2 != 0 || sPSSData->field_CD3 != 0) + sPSSData->field_CD0 = 12; + else + sPSSData->field_CD0 = 6; + + if (sPSSData->field_CD7) + sPSSData->field_CD7 = sPSSData->field_CD0 >> 1; + + switch (sPSSData->field_CD2) + { + default: + r7 = sPSSData->field_CCE - sPSSData->field_CB4->pos1.y; + break; + case -1: + r7 = sPSSData->field_CCE - 0xc0 - sPSSData->field_CB4->pos1.y; + break; + case 1: + r7 = sPSSData->field_CCE + 0xc0 - sPSSData->field_CB4->pos1.y; + break; + } + + switch (sPSSData->field_CD3) + { + default: + r0 = sPSSData->field_CCC - sPSSData->field_CB4->pos1.x; + break; + case -1: + r0 = sPSSData->field_CCC - 0xc0 - sPSSData->field_CB4->pos1.x; + break; + case 1: + r0 = sPSSData->field_CCC + 0xc0 - sPSSData->field_CB4->pos1.x; + break; + } + + r7 <<= 8; + r0 <<= 8; + sPSSData->field_CC4 = r0 / sPSSData->field_CD0; + sPSSData->field_CC8 = r7 / sPSSData->field_CD0; + sPSSData->field_CBC = sPSSData->field_CB4->pos1.x << 8; + sPSSData->field_CC0 = sPSSData->field_CB4->pos1.y << 8; +} + +static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition) +{ + sub_8092604(newCurosrArea, newCursorPosition); + sub_8092660(); + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + if (sPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved) + StartSpriteAnim(sPSSData->field_CB4, 1); + } + else + { + if (!IsActiveItemMoving()) + StartSpriteAnim(sPSSData->field_CB4, 1); + } + + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + sub_8095D44(CURSOR_AREA_IN_BOX, sBoxCursorPosition); + else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + sub_8095D44(CURSOR_AREA_IN_PARTY, sBoxCursorPosition); + + if (newCurosrArea == CURSOR_AREA_IN_BOX) + sub_8095C84(newCurosrArea, newCursorPosition); + else if (newCurosrArea == CURSOR_AREA_IN_PARTY) + sub_8095C84(newCurosrArea, newCursorPosition); + } + + if (newCurosrArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY) + { + sPSSData->field_CD6 = newCurosrArea; + sPSSData->field_CB8->invisible = TRUE; + } + + switch (newCurosrArea) + { + case CURSOR_AREA_IN_PARTY: + case CURSOR_AREA_BOX: + case CURSOR_AREA_BUTTONS: + sPSSData->field_CB4->oam.priority = 1; + sPSSData->field_CB8->invisible = TRUE; + sPSSData->field_CB8->oam.priority = 1; + break; + case CURSOR_AREA_IN_BOX: + if (sPSSData->inBoxMovingMode != 0) + { + sPSSData->field_CB4->oam.priority = 0; + sPSSData->field_CB8->invisible = TRUE; + } + else + { + sPSSData->field_CB4->oam.priority = 2; + if (sBoxCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved) + SetMovingMonPriority(2); + } + break; + } +} + +static void sub_80929B0(void) +{ + sBoxCursorArea = sPSSData->field_CD4; + sBoxCursorPosition = sPSSData->field_CD5; + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + { + if (sPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved) + StartSpriteAnim(sPSSData->field_CB4, 1); + } + else + { + if (!IsActiveItemMoving()) + StartSpriteAnim(sPSSData->field_CB4, 1); + } + + sub_8093A10(); + switch (sBoxCursorArea) + { + case CURSOR_AREA_BUTTONS: + SetMovingMonPriority(1); + break; + case CURSOR_AREA_BOX: + sub_80920FC(TRUE); + break; + case CURSOR_AREA_IN_PARTY: + sPSSData->field_CB8->subpriority = 13; + SetMovingMonPriority(1); + break; + case CURSOR_AREA_IN_BOX: + if (sPSSData->inBoxMovingMode == 0) + { + sPSSData->field_CB4->oam.priority = 1; + sPSSData->field_CB8->oam.priority = 2; + sPSSData->field_CB8->subpriority = 21; + sPSSData->field_CB8->invisible = FALSE; + SetMovingMonPriority(2); + } + break; + } +} + +void sub_8092AE4(void) +{ + u8 partyCount; + + if (!sIsMonBeingMoved) + { + partyCount = 0; + } + else + { + partyCount = CalculatePlayerPartyCount(); + if (partyCount >= PARTY_SIZE) + partyCount = PARTY_SIZE - 1; + } + if (sPSSData->field_CB4->vFlip) + sPSSData->field_CD7 = 1; + sub_80927E8(CURSOR_AREA_IN_PARTY, partyCount); +} + +void sub_8092B3C(u8 cursorBoxPosition) +{ + sub_80927E8(CURSOR_AREA_IN_BOX, cursorBoxPosition); +} + +void sub_8092B50(void) +{ + gUnknown_2039826 = 0; +} + +void sub_8092B5C(void) +{ + gUnknown_2039826 = sBoxCursorPosition; +} + +u8 sub_8092B70(void) +{ + return gUnknown_2039826; +} + +void InitMonPlaceChange(u8 a0) +{ + static bool8 (*const placeChangeFuncs[])(void) = { + MonPlaceChange_Move, + MonPlaceChange_Place, + MonPlaceChange_Shift, + }; + + sPSSData->monPlaceChangeFunc = placeChangeFuncs[a0]; + sPSSData->monPlaceChangeState = 0; +} + +void sub_8092BAC(bool8 arg0) +{ + if (!arg0) + sPSSData->monPlaceChangeFunc = sub_8092E00; + else + sPSSData->monPlaceChangeFunc = sub_8092E10; + + sPSSData->monPlaceChangeState = 0; +} + +bool8 DoMonPlaceChange(void) +{ + return sPSSData->monPlaceChangeFunc(); +} + +static bool8 MonPlaceChange_Move(void) +{ + switch (sPSSData->monPlaceChangeState) + { + case 0: + if (sIsMonBeingMoved) + return FALSE; + StartSpriteAnim(sPSSData->field_CB4, 2); + sPSSData->monPlaceChangeState++; + break; + case 1: + if (!sub_8092E20()) + { + StartSpriteAnim(sPSSData->field_CB4, 3); + MoveMon(); + sPSSData->monPlaceChangeState++; + } + break; + case 2: + if (!sub_8092E54()) + sPSSData->monPlaceChangeState++; + break; + case 3: + return FALSE; + } + + return TRUE; +} + +static bool8 MonPlaceChange_Place(void) +{ + switch (sPSSData->monPlaceChangeState) + { + case 0: + if (!sub_8092E20()) + { + StartSpriteAnim(sPSSData->field_CB4, 2); + PlaceMon(); + sPSSData->monPlaceChangeState++; + } + break; + case 1: + if (!sub_8092E54()) + { + StartSpriteAnim(sPSSData->field_CB4, 0); + sPSSData->monPlaceChangeState++; + } + break; + case 2: + return FALSE; + } + + return TRUE; +} + +static bool8 MonPlaceChange_Shift(void) +{ + switch (sPSSData->monPlaceChangeState) + { + case 0: + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + sPSSData->field_D91 = TOTAL_BOXES_COUNT; + break; + case CURSOR_AREA_IN_BOX: + sPSSData->field_D91 = StorageGetCurrentBox(); + break; + default: + return FALSE; + } + StartSpriteAnim(sPSSData->field_CB4, 2); + sub_8090E08(sPSSData->field_D91, sBoxCursorPosition); + sPSSData->monPlaceChangeState++; + break; + case 1: + if (!sub_8090E74()) + { + StartSpriteAnim(sPSSData->field_CB4, 3); + SetShiftedMonData(sPSSData->field_D91, sBoxCursorPosition); + sPSSData->monPlaceChangeState++; + } + break; + case 2: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_8092E00(void) +{ + return sub_8092E20(); +} + +static bool8 sub_8092E10(void) +{ + return sub_8092E54(); +} + +static bool8 sub_8092E20(void) +{ + switch (sPSSData->field_CB4->pos2.y) + { + default: + sPSSData->field_CB4->pos2.y++; + break; + case 0: + sPSSData->field_CB4->pos2.y++; + break; + case 8: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_8092E54(void) +{ + switch (sPSSData->field_CB4->pos2.y) + { + case 0: + return FALSE; + default: + sPSSData->field_CB4->pos2.y--; + break; + } + + return TRUE; +} + +static void MoveMon(void) +{ + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); + sub_8090CC0(MODE_PARTY, sBoxCursorPosition); + break; + case CURSOR_AREA_IN_BOX: + if (sPSSData->inBoxMovingMode == 0) + { + SetMovedMonData(StorageGetCurrentBox(), sBoxCursorPosition); + sub_8090CC0(MODE_BOX, sBoxCursorPosition); + } + break; + default: + return; + } + + sIsMonBeingMoved = TRUE; +} + +static void PlaceMon(void) +{ + u8 boxId; + + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + SetPlacedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); + sub_8090D58(TOTAL_BOXES_COUNT, sBoxCursorPosition); + break; + case CURSOR_AREA_IN_BOX: + boxId = StorageGetCurrentBox(); + SetPlacedMonData(boxId, sBoxCursorPosition); + sub_8090D58(boxId, sBoxCursorPosition); + break; + default: + return; + } + + sIsMonBeingMoved = FALSE; +} + +void sub_8092F54(void) +{ + sub_8093A10(); +} + +static void SetMovedMonData(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) + sPSSData->movingMon = gPlayerParty[sBoxCursorPosition]; + else + BoxMonAtToMon(boxId, position, &sPSSData->movingMon); + + PurgeMonOrBoxMon(boxId, position); + sMovingMonOrigBoxId = boxId; + sMovingMonOrigBoxPos = position; +} + +static void SetPlacedMonData(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) + { + gPlayerParty[position] = sPSSData->movingMon; + } + else + { + BoxMonRestorePP(&sPSSData->movingMon.box); + SetBoxMonAt(boxId, position, &sPSSData->movingMon.box); + } +} + +static void PurgeMonOrBoxMon(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) + ZeroMonData(&gPlayerParty[position]); + else + ZeroBoxMonAt(boxId, position); +} + +static void SetShiftedMonData(u8 boxId, u8 position) +{ + if (boxId == TOTAL_BOXES_COUNT) + sPSSData->field_2108 = gPlayerParty[position]; + else + BoxMonAtToMon(boxId, position, &sPSSData->field_2108); + + SetPlacedMonData(boxId, position); + sPSSData->movingMon = sPSSData->field_2108; + SetCursorMonData(&sPSSData->movingMon, MODE_PARTY); + sMovingMonOrigBoxId = boxId; + sMovingMonOrigBoxPos = position; +} + +bool8 TryStorePartyMonInBox(u8 boxId) +{ + s16 boxPosition = GetFirstFreeBoxSpot(boxId); + if (boxPosition == -1) + return FALSE; + + if (sIsMonBeingMoved) + { + SetPlacedMonData(boxId, boxPosition); + DestroyMovingMonIcon(); + sIsMonBeingMoved = FALSE; + } + else + { + SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); + SetPlacedMonData(boxId, boxPosition); + DestroyPartyMonIcon(sBoxCursorPosition); + } + + if (boxId == StorageGetCurrentBox()) + sub_80901EC(boxPosition); + + StartSpriteAnim(sPSSData->field_CB4, 1); + return TRUE; +} + +void sub_8093174(void) +{ + StartSpriteAnim(sPSSData->field_CB4, 0); + sub_8093A10(); +} + +void sub_8093194(void) +{ + u8 mode; + + if (sIsMonBeingMoved) + mode = MODE_2; + else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + mode = MODE_PARTY; + else + mode = MODE_BOX; + + sub_8090FC4(mode, sBoxCursorPosition); + StringCopy(sPSSData->field_21E0, sPSSData->cursorMonNick); +} + +bool8 sub_80931EC(void) +{ + if (!sub_8091084()) + { + StartSpriteAnim(sPSSData->field_CB4, 0); + return FALSE; + } + else + { + return TRUE; + } +} + +void ReleaseMon(void) +{ + u8 boxId; + + sub_80910CC(); + if (sIsMonBeingMoved) + { + sIsMonBeingMoved = FALSE; + } + else + { + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + boxId = TOTAL_BOXES_COUNT; + else + boxId = StorageGetCurrentBox(); + + PurgeMonOrBoxMon(boxId, sBoxCursorPosition); + } + sub_8093A10(); +} + +void sub_8093264(void) +{ + if (sIsMonBeingMoved) + StartSpriteAnim(sPSSData->field_CB4, 3); +} + +void InitCanReleaseMonVars(void) +{ + u16 knownIdx; + if (sIsMonBeingMoved) + { + sPSSData->field_2108 = sPSSData->movingMon; + sPSSData->field_2170 = -1; + sPSSData->field_2171 = -1; + } + else + { + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + { + sPSSData->field_2108 = gPlayerParty[sBoxCursorPosition]; + sPSSData->field_2170 = TOTAL_BOXES_COUNT; + } + else + { + BoxMonAtToMon(StorageGetCurrentBox(), sBoxCursorPosition, &sPSSData->field_2108); + sPSSData->field_2170 = StorageGetCurrentBox(); + } + sPSSData->field_2171 = sBoxCursorPosition; + } + + sPSSData->isSurfMon = FALSE; + sPSSData->isDiveMon = FALSE; + sPSSData->field_2176[0] = MOVE_SURF; + sPSSData->field_2176[1] = MOVE_DIVE; + sPSSData->field_2176[2] = MOVES_COUNT; + knownIdx = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); + sPSSData->isSurfMon = knownIdx & 1; + sPSSData->isDiveMon = (knownIdx >> 1) & 1; + if (sPSSData->isSurfMon || sPSSData->isDiveMon) + { + sPSSData->field_216D = 0; + } + else + { + sPSSData->field_216D = 1; + sPSSData->field_216C = 1; + } + + sPSSData->field_2172 = 0; +} + +s8 RunCanReleaseMon(void) +{ + u16 i; + u16 knownMoves; + + if (sPSSData->field_216D) + return sPSSData->field_216C; + + switch (sPSSData->field_2172) + { + case 0: + for (i = 0; i < PARTY_SIZE; i++) + { + if (sPSSData->field_2170 != TOTAL_BOXES_COUNT || sPSSData->field_2171 != i) + { + knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); + if (knownMoves & 1) + sPSSData->isSurfMon = FALSE; + if (knownMoves & 2) + sPSSData->isDiveMon = FALSE; + } + } + if (!(sPSSData->isSurfMon || sPSSData->isDiveMon)) + { + sPSSData->field_216D = 1; + sPSSData->field_216C = 1; + } + else + { + sPSSData->field_216E = 0; + sPSSData->field_216F = 0; + sPSSData->field_2172++; + } + break; + case 1: + for (i = 0; i < 5; i++) + { + knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); + if (knownMoves != 0 + && !(sPSSData->field_2170 == sPSSData->field_216E && sPSSData->field_2171 == sPSSData->field_216F)) + { + if (knownMoves & 1) + sPSSData->isSurfMon = FALSE; + if (knownMoves & 2) + sPSSData->isDiveMon = FALSE; + } + if (++sPSSData->field_216F >= IN_BOX_COUNT) + { + sPSSData->field_216F = 0; + if (++sPSSData->field_216E >= TOTAL_BOXES_COUNT) + { + sPSSData->field_216D = 1; + sPSSData->field_216C = 0; + break; + } + } + } + if (!(sPSSData->isSurfMon || sPSSData->isDiveMon)) + { + sPSSData->field_216D = 1; + sPSSData->field_216C = 1; + } + break; + } + + return -1; +} + +void sub_8093630(void) +{ + if (sIsMonBeingMoved) + gUnknown_20397BC = sPSSData->movingMon; +} + +void sub_8093660(void) +{ + if (sIsMonBeingMoved) + { + if (sMovingMonOrigBoxId == TOTAL_BOXES_COUNT) + sPSSData->movingMon = gUnknown_20397BC; + else + sPSSData->movingMon.box = gUnknown_20397BC.box; + } +} + +void sub_80936B8(void) +{ + if (sIsMonBeingMoved) + { + sub_8093630(); + sPSSData->field_218C.mon = &gUnknown_20397BC; + sPSSData->field_2187 = 0; + sPSSData->field_2186 = 0; + sPSSData->field_2188 = 0; + } + else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + { + sPSSData->field_218C.mon = gPlayerParty; + sPSSData->field_2187 = sBoxCursorPosition; + sPSSData->field_2186 = CountPartyMons() - 1; + sPSSData->field_2188 = 0; + } + else + { + sPSSData->field_218C.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0); + sPSSData->field_2187 = sBoxCursorPosition; + sPSSData->field_2186 = IN_BOX_COUNT - 1; + sPSSData->field_2188 = 5; + } +} + +void sub_80937B4(void) +{ + if (sIsMonBeingMoved) + sub_8093660(); + else + sBoxCursorPosition = GetLastViewedMonIndex(); +} + +// file boundary maybe? + +s16 CompactPartySlots(void) +{ + s16 retVal = -1; + u16 i, last; + + for (i = 0, last = 0; i < PARTY_SIZE; i++) + { + u16 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + if (species != SPECIES_NONE) + { + if (i != last) + gPlayerParty[last] = gPlayerParty[i]; + last++; + } + else if (retVal == -1) + { + retVal = i; + } + } + for (; last < PARTY_SIZE; last++) + ZeroMonData(gPlayerParty + last); + + return retVal; +} + +void SetMonMarkings(u8 markings) +{ + sPSSData->cursorMonMarkings = markings; + if (sIsMonBeingMoved) + { + SetMonData(&sPSSData->movingMon, MON_DATA_MARKINGS, &markings); + } + else + { + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + SetMonData(gPlayerParty + sBoxCursorPosition, MON_DATA_MARKINGS, &markings); + if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + SetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_MARKINGS, &markings); + } +} + +bool8 CanMovePartyMon(void) +{ + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && !sIsMonBeingMoved && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0) + return TRUE; + else + return FALSE; +} + +bool8 CanShiftMon(void) +{ + if (sIsMonBeingMoved) + { + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0) + { + if (sPSSData->cursorMonIsEgg || GetMonData(&sPSSData->movingMon, MON_DATA_HP) == 0) + return FALSE; + } + return TRUE; + } + return FALSE; +} + +bool8 IsMonBeingMoved(void) +{ + return sIsMonBeingMoved; +} + +bool8 IsCursorOnBox(void) +{ + return (sBoxCursorArea == CURSOR_AREA_BOX); +} + +bool8 IsCursorOnCloseBox(void) +{ + return (sBoxCursorArea == CURSOR_AREA_BUTTONS && sBoxCursorPosition == 1); +} + +bool8 IsCursorInBox(void) +{ + return (sBoxCursorArea == CURSOR_AREA_IN_BOX); +} + +static void sub_8093A10(void) +{ + sPSSData->setMosaic = (sIsMonBeingMoved == FALSE); + if (!sIsMonBeingMoved) + { + switch (sBoxCursorArea) + { + case CURSOR_AREA_IN_PARTY: + if (sBoxCursorPosition < PARTY_SIZE) + { + SetCursorMonData(&gPlayerParty[sBoxCursorPosition], MODE_PARTY); + break; + } + // fallthrough + case CURSOR_AREA_BUTTONS: + case CURSOR_AREA_BOX: + SetCursorMonData(NULL, MODE_2); + break; + case CURSOR_AREA_IN_BOX: + SetCursorMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sBoxCursorPosition), MODE_BOX); + break; + } + } +} + +static void sub_8093AAC(void) +{ + if (sIsMonBeingMoved) + SetCursorMonData(&gUnknown_20397BC, MODE_PARTY); + else + sub_8093A10(); +} + +static void SetCursorMonData(void *pokemon, u8 mode) +{ + u8 *txtPtr; + u16 gender; + bool8 sanityIsBagEgg; + + sPSSData->cursorMonItem = 0; + gender = MON_MALE; + sanityIsBagEgg = FALSE; + if (mode == MODE_PARTY) + { + struct Pokemon *mon = (struct Pokemon *)pokemon; + + sPSSData->cursorMonSpecies = GetMonData(mon, MON_DATA_SPECIES2); + if (sPSSData->cursorMonSpecies != SPECIES_NONE) + { + sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG); + if (sanityIsBagEgg) + sPSSData->cursorMonIsEgg = TRUE; + else + sPSSData->cursorMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); + + GetMonData(mon, MON_DATA_NICKNAME, sPSSData->cursorMonNick); + StringGetEnd10(sPSSData->cursorMonNick); + sPSSData->cursorMonLevel = GetMonData(mon, MON_DATA_LEVEL); + sPSSData->cursorMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); + sPSSData->cursorMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + sPSSData->cursorMonPalette = GetMonFrontSpritePal(mon); + gender = GetMonGender(mon); + sPSSData->cursorMonItem = GetMonData(mon, MON_DATA_HELD_ITEM); + } + } + else if (mode == MODE_BOX) + { + struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon; + + sPSSData->cursorMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2); + if (sPSSData->cursorMonSpecies != SPECIES_NONE) + { + u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); + sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG); + if (sanityIsBagEgg) + sPSSData->cursorMonIsEgg = TRUE; + else + sPSSData->cursorMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG); + + + GetBoxMonData(boxMon, MON_DATA_NICKNAME, sPSSData->cursorMonNick); + StringGetEnd10(sPSSData->cursorMonNick); + sPSSData->cursorMonLevel = GetLevelFromBoxMonExp(boxMon); + sPSSData->cursorMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); + sPSSData->cursorMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); + sPSSData->cursorMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, otId, sPSSData->cursorMonPersonality); + gender = GetGenderFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality); + sPSSData->cursorMonItem = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM); + } + } + else + { + sPSSData->cursorMonSpecies = SPECIES_NONE; + sPSSData->cursorMonItem = 0; + } + + if (sPSSData->cursorMonSpecies == SPECIES_NONE) + { + StringFill(sPSSData->cursorMonNick, CHAR_SPACE, 5); + StringFill(sPSSData->cursorMonTexts[0], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[1], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[2], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[3], CHAR_SPACE, 8); + } + else if (sPSSData->cursorMonIsEgg) + { + if (sanityIsBagEgg) + StringCopyPadded(sPSSData->cursorMonTexts[0], sPSSData->cursorMonNick, CHAR_SPACE, 5); + else + StringCopyPadded(sPSSData->cursorMonTexts[0], gText_EggNickname, CHAR_SPACE, 8); + + StringFill(sPSSData->cursorMonTexts[1], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[2], CHAR_SPACE, 8); + StringFill(sPSSData->cursorMonTexts[3], CHAR_SPACE, 8); + } + else + { + if (sPSSData->cursorMonSpecies == SPECIES_NIDORAN_F || sPSSData->cursorMonSpecies == SPECIES_NIDORAN_M) + gender = MON_GENDERLESS; + + StringCopyPadded(sPSSData->cursorMonTexts[0], sPSSData->cursorMonNick, CHAR_SPACE, 5); + + txtPtr = sPSSData->cursorMonTexts[1]; + *(txtPtr)++ = CHAR_SLASH; + StringCopyPadded(txtPtr, gSpeciesNames[sPSSData->cursorMonSpecies], CHAR_SPACE, 5); + + txtPtr = sPSSData->cursorMonTexts[2]; + *(txtPtr)++ = EXT_CTRL_CODE_BEGIN; + *(txtPtr)++ = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; + switch (gender) + { + case MON_MALE: + *(txtPtr)++ = TEXT_COLOR_RED; + *(txtPtr)++ = TEXT_COLOR_WHITE; + *(txtPtr)++ = TEXT_COLOR_LIGHT_RED; + *(txtPtr)++ = CHAR_MALE; + break; + case MON_FEMALE: + *(txtPtr)++ = TEXT_COLOR_GREEN; + *(txtPtr)++ = TEXT_COLOR_WHITE; + *(txtPtr)++ = TEXT_COLOR_LIGHT_GREEN; + *(txtPtr)++ = CHAR_FEMALE; + break; + default: + *(txtPtr)++ = TEXT_COLOR_DARK_GREY; + *(txtPtr)++ = TEXT_COLOR_WHITE; + *(txtPtr)++ = TEXT_COLOR_LIGHT_GREY; + *(txtPtr)++ = CHAR_SPACE; + break; + } + + *(txtPtr++) = EXT_CTRL_CODE_BEGIN; + *(txtPtr++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; + *(txtPtr++) = TEXT_COLOR_DARK_GREY; + *(txtPtr++) = TEXT_COLOR_WHITE; + *(txtPtr++) = TEXT_COLOR_LIGHT_GREY; + *(txtPtr++) = CHAR_SPACE; + *(txtPtr++) = CHAR_EXTRA_EMOJI; + *(txtPtr++) = 5; // LV_2 + + txtPtr = ConvertIntToDecimalStringN(txtPtr, sPSSData->cursorMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3); + txtPtr[0] = CHAR_SPACE; + txtPtr[1] = EOS; + + if (sPSSData->cursorMonItem != 0) + StringCopyPadded(sPSSData->cursorMonTexts[3], ItemId_GetName(sPSSData->cursorMonItem), CHAR_SPACE, 8); + else + StringFill(sPSSData->cursorMonTexts[3], CHAR_SPACE, 8); + } +} + +static u8 HandleInput_InBox(void) +{ + switch (sPSSData->inBoxMovingMode) + { + case 0: + default: + return InBoxInput_Normal(); + case 1: + return InBoxInput_GrabbingMultiple(); + case 2: + return InBoxInput_MovingMultiple(); + } +} + +static u8 InBoxInput_Normal(void) +{ + u8 retVal; + s8 cursorArea; + s8 cursorPosition; + + do + { + cursorArea = sBoxCursorArea; + cursorPosition = sBoxCursorPosition; + sPSSData->field_CD2 = 0; + sPSSData->field_CD3 = 0; + sPSSData->field_CD7 = 0; + if (JOY_REPT(DPAD_UP)) + { + retVal = TRUE; + if (sBoxCursorPosition >= IN_BOX_ROWS) + { + cursorPosition -= IN_BOX_ROWS; + } + else + { + cursorArea = CURSOR_AREA_BOX; + cursorPosition = 0; + } + break; + } + else if (JOY_REPT(DPAD_DOWN)) + { + retVal = TRUE; + cursorPosition += IN_BOX_ROWS; + if (cursorPosition >= IN_BOX_COUNT) + { + cursorArea = CURSOR_AREA_BUTTONS; + cursorPosition -= IN_BOX_COUNT; + cursorPosition /= 3; + sPSSData->field_CD2 = 1; + sPSSData->field_CD7 = 1; + } + break; + } + else if (JOY_REPT(DPAD_LEFT)) + { + retVal = TRUE; + if (sBoxCursorPosition % IN_BOX_ROWS != 0) + { + cursorPosition--; + } + else + { + sPSSData->field_CD3 = -1; + cursorPosition += (IN_BOX_ROWS - 1); + } + break; + } + else if (JOY_REPT(DPAD_RIGHT)) + { + retVal = TRUE; + if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0) + { + cursorPosition++; + } + else + { + sPSSData->field_CD3 = 1; + cursorPosition -= (IN_BOX_ROWS - 1); + } + break; + } + else if (JOY_NEW(START_BUTTON)) + { + retVal = TRUE; + cursorArea = CURSOR_AREA_BOX; + cursorPosition = 0; + break; + } + + if ((JOY_NEW(A_BUTTON)) && sub_8094924()) + { + if (!sCanOnlyMove) + return 8; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE) + { + switch (sub_8094E50(0)) + { + case PC_TEXT_STORE: + return 11; + case PC_TEXT_WITHDRAW: + return 12; + case PC_TEXT_MOVE: + return 13; + case PC_TEXT_SHIFT: + return 14; + case PC_TEXT_PLACE: + return 15; + case PC_TEXT_TAKE: + return 16; + case PC_TEXT_GIVE: + return 17; + case PC_TEXT_SWITCH: + return 18; + } + } + else + { + sPSSData->inBoxMovingMode = 1; + return 20; + } + } + + if (JOY_NEW(B_BUTTON)) + return 19; + + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + { + if (JOY_HELD(L_BUTTON)) + return 10; + if (JOY_HELD(R_BUTTON)) + return 9; + } + + if (JOY_NEW(SELECT_BUTTON)) + { + sub_8094C84(); + return 0; + } + + retVal = 0; + + } while (0); + + if (retVal) + sub_80927E8(cursorArea, cursorPosition); + + return retVal; +} + +static u8 InBoxInput_GrabbingMultiple(void) +{ + if (JOY_HELD(A_BUTTON)) + { + if (JOY_REPT(DPAD_UP)) + { + if (sBoxCursorPosition / IN_BOX_ROWS != 0) + { + sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS); + return 21; + } + else + { + return 24; + } + } + else if (JOY_REPT(DPAD_DOWN)) + { + if (sBoxCursorPosition + IN_BOX_ROWS < IN_BOX_COUNT) + { + sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS); + return 21; + } + else + { + return 24; + } + } + else if (JOY_REPT(DPAD_LEFT)) + { + if (sBoxCursorPosition % IN_BOX_ROWS != 0) + { + sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1); + return 21; + } + else + { + return 24; + } + } + else if (JOY_REPT(DPAD_RIGHT)) + { + if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0) + { + sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1); + return 21; + } + else + { + return 24; + } + } + else + { + return 0; + } + } + else + { + if (sub_8095AA0() == sBoxCursorPosition) + { + sPSSData->inBoxMovingMode = 0; + sPSSData->field_CB8->invisible = FALSE; + return 22; + } + else + { + sIsMonBeingMoved = (sPSSData->cursorMonSpecies != SPECIES_NONE); + sPSSData->inBoxMovingMode = 2; + sMovingMonOrigBoxId = StorageGetCurrentBox(); + return 23; + } + } +} + +static u8 InBoxInput_MovingMultiple(void) +{ + if (JOY_REPT(DPAD_UP)) + { + if (sub_8095474(0)) + { + sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS); + return 25; + } + else + { + return 24; + } + } + else if (JOY_REPT(DPAD_DOWN)) + { + if (sub_8095474(1)) + { + sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS); + return 25; + } + else + { + return 24; + } + } + else if (JOY_REPT(DPAD_LEFT)) + { + if (sub_8095474(2)) + { + sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1); + return 25; + } + else + { + return 10; + } + } + else if (JOY_REPT(DPAD_RIGHT)) + { + if (sub_8095474(3)) + { + sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1); + return 25; + } + else + { + return 9; + } + } + else if (JOY_NEW(A_BUTTON)) + { + if (sub_8095ABC()) + { + sIsMonBeingMoved = FALSE; + sPSSData->inBoxMovingMode = 0; + return 26; + } + else + { + return 24; + } + } + else if (JOY_NEW(B_BUTTON)) + { + return 24; + } + else + { + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + { + if (JOY_HELD(L_BUTTON)) + return 10; + if (JOY_HELD(R_BUTTON)) + return 9; + } + + return 0; + } +} + +static u8 HandleInput_InParty(void) +{ + u8 retVal; + bool8 gotoBox; + s8 cursorArea; + s8 cursorPosition; + + do + { + cursorArea = sBoxCursorArea; + cursorPosition = sBoxCursorPosition; + sPSSData->field_CD3 = 0; + sPSSData->field_CD2 = 0; + sPSSData->field_CD7 = 0; + gotoBox = FALSE; + retVal = 0; + + if (JOY_REPT(DPAD_UP)) + { + if (--cursorPosition < 0) + cursorPosition = PARTY_SIZE; + if (cursorPosition != sBoxCursorPosition) + retVal = 1; + break; + } + else if (JOY_REPT(DPAD_DOWN)) + { + if (++cursorPosition > PARTY_SIZE) + cursorPosition = 0; + if (cursorPosition != sBoxCursorPosition) + retVal = 1; + break; + } + else if (JOY_REPT(DPAD_LEFT) && sBoxCursorPosition != 0) + { + retVal = 1; + sPSSData->field_CD6 = sBoxCursorPosition; + cursorPosition = 0; + break; + } + else if (JOY_REPT(DPAD_RIGHT)) + { + if (sBoxCursorPosition == 0) + { + retVal = 1; + cursorPosition = sPSSData->field_CD6; + } + else + { + retVal = 6; + cursorArea = CURSOR_AREA_IN_BOX; + cursorPosition = 0; + } + break; + } + + if (JOY_NEW(A_BUTTON)) + { + if (sBoxCursorPosition == PARTY_SIZE) + { + if (sPSSData->boxOption == BOX_OPTION_DEPOSIT) + return 4; + + gotoBox = TRUE; + } + else if (sub_8094924()) + { + if (!sCanOnlyMove) + return 8; + + switch (sub_8094E50(0)) + { + case PC_TEXT_STORE: + return 11; + case PC_TEXT_WITHDRAW: + return 12; + case PC_TEXT_MOVE: + return 13; + case PC_TEXT_SHIFT: + return 14; + case PC_TEXT_PLACE: + return 15; + case PC_TEXT_TAKE: + return 16; + case PC_TEXT_GIVE: + return 17; + case PC_TEXT_SWITCH: + return 18; + } + } + } + + if (JOY_NEW(B_BUTTON)) + { + if (sPSSData->boxOption == BOX_OPTION_DEPOSIT) + return 19; + + gotoBox = TRUE; + } + + if (gotoBox) + { + retVal = 6; + cursorArea = CURSOR_AREA_IN_BOX; + cursorPosition = 0; + } + else if (JOY_NEW(SELECT_BUTTON)) + { + sub_8094C84(); + return 0; + } + + } while (0); + + if (retVal != 0) + { + if (retVal != 6) + sub_80927E8(cursorArea, cursorPosition); + } + + return retVal; +} + +static u8 HandleInput_OnBox(void) +{ + u8 retVal; + s8 cursorArea; + s8 cursorPosition; + + do + { + sPSSData->field_CD3 = 0; + sPSSData->field_CD2 = 0; + sPSSData->field_CD7 = 0; + + if (JOY_REPT(DPAD_UP)) + { + retVal = 1; + cursorArea = CURSOR_AREA_BUTTONS; + cursorPosition = 0; + sPSSData->field_CD7 = 1; + break; + } + else if (JOY_REPT(DPAD_DOWN)) + { + retVal = 1; + cursorArea = CURSOR_AREA_IN_BOX; + cursorPosition = 2; + break; + } + + if (JOY_HELD(DPAD_LEFT)) + return 10; + if (JOY_HELD(DPAD_RIGHT)) + return 9; + + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + { + if (JOY_HELD(L_BUTTON)) + return 10; + if (JOY_HELD(R_BUTTON)) + return 9; + } + + if (JOY_NEW(A_BUTTON)) + { + sub_80920FC(FALSE); + AddBoxMenu(); + return 7; + } + + if (JOY_NEW(B_BUTTON)) + return 19; + + if (JOY_NEW(SELECT_BUTTON)) + { + sub_8094C84(); + return 0; + } + + retVal = 0; + + } while (0); + + if (retVal) + { + if (cursorArea != CURSOR_AREA_BOX) + sub_80920FC(FALSE); + sub_80927E8(cursorArea, cursorPosition); + } + + return retVal; +} + +static u8 HandleInput_OnButtons(void) +{ + u8 retVal; + s8 cursorArea; + s8 cursorPosition; + s8 prevPos; + + do + { + cursorArea = sBoxCursorArea; + cursorPosition = sBoxCursorPosition; + sPSSData->field_CD3 = 0; + sPSSData->field_CD2 = 0; + sPSSData->field_CD7 = 0; + + if (JOY_REPT(DPAD_UP)) + { + retVal = 1; + cursorArea = CURSOR_AREA_IN_BOX; + sPSSData->field_CD2 = -1; + if (sBoxCursorPosition == 0) + cursorPosition = IN_BOX_COUNT - 1 - 5; + else + cursorPosition = IN_BOX_COUNT - 1; + sPSSData->field_CD7 = 1; + break; + } + else if (JOY_REPT(DPAD_DOWN | START_BUTTON)) + { + retVal = 1; + cursorArea = CURSOR_AREA_BOX; + cursorPosition = 0; + sPSSData->field_CD7 = 1; + break; + } + + if (JOY_REPT(DPAD_LEFT)) + { + retVal = 1; + if (--cursorPosition < 0) + cursorPosition = 1; + break; + } + else if (JOY_REPT(DPAD_RIGHT)) + { + retVal = 1; + if (++cursorPosition > 1) + cursorPosition = 0; + break; + } + + if (JOY_NEW(A_BUTTON)) + { + return cursorPosition == 0 ? 5 : 4; + } + if (JOY_NEW(B_BUTTON)) + return 19; + + if (JOY_NEW(SELECT_BUTTON)) + { + sub_8094C84(); + return 0; + } + + retVal = 0; + } while (0); + + if (retVal != 0) + sub_80927E8(cursorArea, cursorPosition); + + return retVal; +} + +u8 HandleInput(void) +{ + struct + { + u8 (*func)(void); + s8 area; + } + static const inputFuncs[] = { + {HandleInput_InBox, CURSOR_AREA_IN_BOX}, + {HandleInput_InParty, CURSOR_AREA_IN_PARTY}, + {HandleInput_OnBox, CURSOR_AREA_BOX}, + {HandleInput_OnButtons, CURSOR_AREA_BUTTONS}, + {NULL, 0}, + }; + + u16 i = 0; + while (inputFuncs[i].func != NULL) + { + if (inputFuncs[i].area == sBoxCursorArea) + return inputFuncs[i].func(); + i++; + } + + return 0; +} + +static void AddBoxMenu(void) +{ + InitMenu(); + SetMenuText(PC_TEXT_JUMP); + SetMenuText(PC_TEXT_WALLPAPER); + SetMenuText(PC_TEXT_NAME); + SetMenuText(PC_TEXT_CANCEL); +} + +static bool8 sub_8094924(void) +{ + InitMenu(); + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return sub_809494C(); + else + return sub_8094A0C(); +} + +static bool8 sub_809494C(void) +{ + u16 var0 = sub_8092458(); + + switch (sPSSData->boxOption) + { + case BOX_OPTION_DEPOSIT: + if (var0) + SetMenuText(PC_TEXT_STORE); + else + return FALSE; + break; + case BOX_OPTION_WITHDRAW: + if (var0) + SetMenuText(PC_TEXT_WITHDRAW); + else + return FALSE; + break; + case BOX_OPTION_MOVE_MONS: + if (sIsMonBeingMoved) + { + if (var0) + SetMenuText(PC_TEXT_SHIFT); + else + SetMenuText(PC_TEXT_PLACE); + } + else + { + if (var0) + SetMenuText(PC_TEXT_MOVE); + else + return FALSE; + } + break; + case BOX_OPTION_MOVE_ITEMS: + default: + return FALSE; + } + + SetMenuText(PC_TEXT_SUMMARY); + if (sPSSData->boxOption == BOX_OPTION_MOVE_MONS) + { + if (!sBoxCursorArea) + SetMenuText(PC_TEXT_WITHDRAW); + else + SetMenuText(PC_TEXT_STORE); + } + + SetMenuText(PC_TEXT_MARK); + SetMenuText(PC_TEXT_RELEASE); + SetMenuText(PC_TEXT_CANCEL); + return TRUE; +} + +static bool8 sub_8094A0C(void) +{ + if (sPSSData->cursorMonSpecies == SPECIES_EGG) + return FALSE; + + if (!IsActiveItemMoving()) + { + if (sPSSData->cursorMonItem == ITEM_NONE) + { + if (sPSSData->cursorMonSpecies == SPECIES_NONE) + return FALSE; + + SetMenuText(PC_TEXT_GIVE2); + } + else + { + if (!ItemIsMail(sPSSData->cursorMonItem)) + { + SetMenuText(PC_TEXT_TAKE); + SetMenuText(PC_TEXT_BAG); + } + SetMenuText(PC_TEXT_INFO); + } + } + else + { + if (sPSSData->cursorMonItem == ITEM_NONE) + { + if (sPSSData->cursorMonSpecies == SPECIES_NONE) + return FALSE; + + SetMenuText(PC_TEXT_GIVE); + } + else + { + if (ItemIsMail(sPSSData->cursorMonItem) == TRUE) + return FALSE; + + SetMenuText(PC_TEXT_SWITCH); + } + } + + SetMenuText(PC_TEXT_CANCEL); + return TRUE; +} + +static void sub_8094AB8(struct Sprite *sprite) +{ + sprite->pos1.x = sPSSData->field_CB4->pos1.x; + sprite->pos1.y = sPSSData->field_CB4->pos1.y + 20; +} + +static void sub_8094AD8(void) +{ + u16 x, y; + u8 spriteId; + u8 priority, subpriority; + struct SpriteSheet spriteSheets[] = { + {gHandCursorTiles, 0x800, TAG_TILE_0}, + {gHandCursorShadowTiles, 0x80, TAG_TILE_1}, + {} + }; + + struct SpritePalette spritePalettes[] = { + {gHandCursorPalette, TAG_PAL_DAC7}, + {} + }; + + static const struct OamData sOamData_857BA0C = { + .shape = SPRITE_SHAPE(32x32), + .size = SPRITE_SIZE(32x32), + .priority = 1, + }; + static const struct OamData sOamData_857BA14 = { + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 1, + }; + + static const union AnimCmd sSpriteAnim_857BA1C[] = { + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(16, 30), + ANIMCMD_JUMP(0) + }; + static const union AnimCmd sSpriteAnim_857BA28[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END + }; + static const union AnimCmd sSpriteAnim_857BA30[] = { + ANIMCMD_FRAME(32, 5), + ANIMCMD_END + }; + static const union AnimCmd sSpriteAnim_857BA38[] = { + ANIMCMD_FRAME(48, 5), + ANIMCMD_END + }; + + static const union AnimCmd *const sSpriteAnimTable_857BA40[] = { + sSpriteAnim_857BA1C, + sSpriteAnim_857BA28, + sSpriteAnim_857BA30, + sSpriteAnim_857BA38 + }; + + static const struct SpriteTemplate gSpriteTemplate_857BA50 = { + .tileTag = TAG_TILE_0, + .paletteTag = TAG_PAL_WAVEFORM, + .oam = &sOamData_857BA0C, + .anims = sSpriteAnimTable_857BA40, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }; + + static const struct SpriteTemplate gSpriteTemplate_857BA68 = { + .tileTag = TAG_TILE_1, + .paletteTag = TAG_PAL_WAVEFORM, + .oam = &sOamData_857BA14, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8094AB8, + }; + + LoadSpriteSheets(spriteSheets); + LoadSpritePalettes(spritePalettes); + sPSSData->field_CD8[0] = IndexOfSpritePaletteTag(TAG_PAL_WAVEFORM); + sPSSData->field_CD8[1] = IndexOfSpritePaletteTag(TAG_PAL_DAC7); + + sub_8092398(sBoxCursorArea, sBoxCursorPosition, &x, &y); + spriteId = CreateSprite(&gSpriteTemplate_857BA50, x, y, 6); + if (spriteId != MAX_SPRITES) + { + sPSSData->field_CB4 = &gSprites[spriteId]; + sPSSData->field_CB4->oam.paletteNum = sPSSData->field_CD8[sCanOnlyMove]; + sPSSData->field_CB4->oam.priority = 1; + if (sIsMonBeingMoved) + StartSpriteAnim(sPSSData->field_CB4, 3); + } + else + { + sPSSData->field_CB4 = NULL; + } + + if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + { + subpriority = 13; + priority = 1; + } + else + { + subpriority = 21; + priority = 2; + } + + spriteId = CreateSprite(&gSpriteTemplate_857BA68, 0, 0, subpriority); + if (spriteId != MAX_SPRITES) + { + sPSSData->field_CB8 = &gSprites[spriteId]; + sPSSData->field_CB8->oam.priority = priority; + if (sBoxCursorArea) + sPSSData->field_CB8->invisible = 1; + } + else + { + sPSSData->field_CB8 = NULL; + } +} + +static void sub_8094C84(void) +{ + sCanOnlyMove = !sCanOnlyMove; + sPSSData->field_CB4->oam.paletteNum = sPSSData->field_CD8[sCanOnlyMove]; +} + +u8 GetBoxCursorPosition(void) +{ + return sBoxCursorPosition; +} + +void sub_8094CD4(u8 *arg0, u8 *arg1) +{ + if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + { + *arg0 = sBoxCursorPosition % IN_BOX_ROWS; + *arg1 = sBoxCursorPosition / IN_BOX_ROWS; + } + else + { + *arg0 = 0; + *arg1 = 0; + } +} + +void sub_8094D14(u8 animNum) +{ + StartSpriteAnim(sPSSData->field_CB4, animNum); +} + +u8 sub_8094D34(void) +{ + return sMovingMonOrigBoxId; +} + +void sub_8094D40(void) +{ + sPSSData->field_CB4->oam.priority = 1; +} + +void sub_8094D60(void) +{ + if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + sub_8095D44(CURSOR_AREA_IN_BOX, sBoxCursorPosition); +} + +void sub_8094D84(void) +{ + if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + sub_8095C84(CURSOR_AREA_IN_BOX, sBoxCursorPosition); +} diff --git a/src/pokemon_storage_system_6.c b/src/pokemon_storage_system_6.c new file mode 100644 index 000000000..a8cca28d5 --- /dev/null +++ b/src/pokemon_storage_system_6.c @@ -0,0 +1,147 @@ +#include "global.h" +#include "gflib.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "pokemon_storage_system_internal.h" +#include "strings.h" +#include "constants/songs.h" + +void InitMenu(void) +{ + sPSSData->menuItemsCount = 0; + sPSSData->menuWidth = 0; + sPSSData->menuWindow.bg = 0; + sPSSData->menuWindow.paletteNum = 15; + sPSSData->menuWindow.baseBlock = 92; +} + +static const u8 *const sMenuTexts[] = { + [PC_TEXT_CANCEL] = gPCText_Cancel, + [PC_TEXT_STORE] = gPCText_Store, + [PC_TEXT_WITHDRAW] = gPCText_Withdraw, + [PC_TEXT_MOVE] = gPCText_Move, + [PC_TEXT_SHIFT] = gPCText_Shift, + [PC_TEXT_PLACE] = gPCText_Place, + [PC_TEXT_SUMMARY] = gPCText_Summary, + [PC_TEXT_RELEASE] = gPCText_Release, + [PC_TEXT_MARK] = gPCText_Mark, + [PC_TEXT_JUMP] = gPCText_Jump, + [PC_TEXT_WALLPAPER] = gPCText_Wallpaper, + [PC_TEXT_NAME] = gPCText_Name, + [PC_TEXT_TAKE] = gPCText_Take, + [PC_TEXT_GIVE] = gPCText_Give, + [PC_TEXT_GIVE2] = gPCText_Give, + [PC_TEXT_SWITCH] = gPCText_Switch, + [PC_TEXT_BAG] = gPCText_Bag, + [PC_TEXT_INFO] = gPCText_Info, + [PC_TEXT_SCENERY1] = gPCText_Scenery1, + [PC_TEXT_SCENERY2] = gPCText_Scenery2, + [PC_TEXT_SCENERY3] = gPCText_Scenery3, + [PC_TEXT_ETCETERA] = gPCText_Etcetera, + [PC_TEXT_FOREST] = gPCText_Forest, + [PC_TEXT_CITY] = gPCText_City, + [PC_TEXT_DESERT] = gPCText_Desert, + [PC_TEXT_SAVANNA] = gPCText_Savanna, + [PC_TEXT_CRAG] = gPCText_Crag, + [PC_TEXT_VOLCANO] = gPCText_Volcano, + [PC_TEXT_SNOW] = gPCText_Snow, + [PC_TEXT_CAVE] = gPCText_Cave, + [PC_TEXT_BEACH] = gPCText_Beach, + [PC_TEXT_SEAFLOOR] = gPCText_Seafloor, + [PC_TEXT_RIVER] = gPCText_River, + [PC_TEXT_SKY] = gPCText_Sky, + [PC_TEXT_POLKADOT] = gPCText_PolkaDot, + [PC_TEXT_POKECENTER] = gPCText_Pokecenter, + [PC_TEXT_MACHINE] = gPCText_Machine, + [PC_TEXT_SIMPLE] = gPCText_Simple, +}; + +void SetMenuText(u8 textId) +{ + if (sPSSData->menuItemsCount < MAX_MENU_ITEMS) + { + u8 len; + struct StorageMenu *menu = &sPSSData->menuItems[sPSSData->menuItemsCount]; + + menu->text = sMenuTexts[textId]; + menu->textId = textId; + len = StringLength(menu->text); + if (len > sPSSData->menuWidth) + sPSSData->menuWidth = len; + + sPSSData->menuItemsCount++; + } +} + +s8 sub_8094E50(u8 arg0) +{ + if (arg0 >= sPSSData->menuItemsCount) + return -1; + else + return sPSSData->menuItems[arg0].textId; +} + +void AddMenu(void) +{ + sPSSData->menuWindow.width = sPSSData->menuWidth + 2; + sPSSData->menuWindow.height = 2 * sPSSData->menuItemsCount; + sPSSData->menuWindow.tilemapLeft = 29 - sPSSData->menuWindow.width; + sPSSData->menuWindow.tilemapTop = 15 - sPSSData->menuWindow.height; + sPSSData->field_CB0 = AddWindow(&sPSSData->menuWindow); + ClearWindowTilemap(sPSSData->field_CB0); + DrawStdFrameWithCustomTileAndPalette(sPSSData->field_CB0, FALSE, 0x00b, 14); + PrintTextArray(sPSSData->field_CB0, 1, 8, 2, 16, sPSSData->menuItemsCount, (void*)sPSSData->menuItems); + Menu_InitCursor(sPSSData->field_CB0, 1, 0, 2, 16, sPSSData->menuItemsCount, 0); + ScheduleBgCopyTilemapToVram(0); + sPSSData->field_CAE = 0; +} + +bool8 sub_8094F90(void) +{ + // Some debug flag? + return FALSE; +} + +s16 sub_8094F94(void) +{ + s32 textId = -2; + + do + { + if (JOY_NEW(A_BUTTON)) + { + textId = Menu_GetCursorPos(); + break; + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + textId = -1; + } + + if (JOY_NEW(DPAD_UP)) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + } + else if (JOY_NEW(DPAD_DOWN)) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(1); + } + } while (0); + + if (textId != -2) + sub_8095024(); + + if (textId >= 0) + textId = sPSSData->menuItems[textId].textId; + + return textId; +} + +void sub_8095024(void) +{ + ClearStdWindowAndFrameToTransparent(sPSSData->field_CB0, TRUE); + RemoveWindow(sPSSData->field_CB0); +} diff --git a/src/pokemon_storage_system_7.c b/src/pokemon_storage_system_7.c new file mode 100644 index 000000000..1b2bc045a --- /dev/null +++ b/src/pokemon_storage_system_7.c @@ -0,0 +1,582 @@ +#include <stdlib.h> // to declare abs +#include "global.h" +#include "gflib.h" +#include "pokemon_icon.h" +#include "pokemon_storage_system_internal.h" +#include "text_window.h" +#include "constants/species.h" + +struct MoveMons +{ + u8 field_0; + u8 state; + u8 fromRow; + u8 fromColumn; + u8 toRow; + u8 toColumn; + u8 field_6; + u8 field_7; + u8 minRow; + u8 minColumn; + u8 rowsTotal; + u8 columsTotal; + u16 bgX; + u16 bgY; + u16 field_10; + struct BoxPokemon boxMons[IN_BOX_COUNT]; +}; + +static EWRAM_DATA struct MoveMons *sMoveMonsPtr = NULL; + +static bool8 sub_8095138(void); +static bool8 sub_8095234(void); +static bool8 sub_80952A0(void); +static bool8 sub_8095314(void); +static bool8 sub_8095394(void); +static bool8 sub_80953BC(void); +static void sub_8095520(void); +static void sub_80955C4(u8 arg0, u8 arg1, u8 arg2); +static void sub_80955FC(u8 arg0, u8 arg1, u8 arg2); +static void sub_8095634(u8 arg0, u8 arg1, u8 arg2); +static void sub_809566C(u8 arg0, u8 arg1, u8 arg2); +static void sub_80956A4(u8 x, u8 y); +static void sub_809572C(u8 x, u8 y); +static void sub_8095780(u16 bgX, u16 bgY, u16 duration); +static u8 sub_8095790(void); +static void sub_80957C8(void); +static void sub_80958A0(void); +static void sub_8095918(void); +static void sub_80959A8(void); +static void sub_8095A58(void); + +static const struct WindowTemplate gUnknown_83D35D4 = { + .bg = 0, + .tilemapLeft = 10, + .tilemapTop = 3, + .width = 20, + .height = 18, + .paletteNum = 9, + .baseBlock = 0x00a +}; + +bool8 sub_8095050(void) +{ + sMoveMonsPtr = Alloc(sizeof(*sMoveMonsPtr)); + if (sMoveMonsPtr != NULL) + { + sPSSData->field_2200 = AddWindow8Bit(&gUnknown_83D35D4); + if (sPSSData->field_2200 != 0xFF) + { + FillWindowPixelBuffer(sPSSData->field_2200, PIXEL_FILL(0)); + return TRUE; + } + } + + return FALSE; +} + +void sub_80950A4(void) +{ + if (sMoveMonsPtr != NULL) + Free(sMoveMonsPtr); +} + +void sub_80950BC(u8 arg0) +{ + sMoveMonsPtr->field_0 = arg0; + sMoveMonsPtr->state = 0; +} + +bool8 sub_80950D0(void) +{ + switch (sMoveMonsPtr->field_0) + { + case 0: + return sub_8095138(); + case 1: + return sub_8095234(); + case 2: + return sub_80952A0(); + case 3: + return sub_8095314(); + case 4: + return sub_8095394(); + case 5: + return sub_80953BC(); + } + + return FALSE; +} + +static bool8 sub_8095138(void) +{ + switch (sMoveMonsPtr->state) + { + case 0: + HideBg(0); + LoadMonIconPalettesAt(0x80); + sMoveMonsPtr->state++; + break; + case 1: + sub_8094CD4(&sMoveMonsPtr->fromRow, &sMoveMonsPtr->fromColumn); + sMoveMonsPtr->toRow = sMoveMonsPtr->fromRow; + sMoveMonsPtr->toColumn = sMoveMonsPtr->fromColumn; + ChangeBgX(0, -1024, 0); + ChangeBgY(0, -1024, 0); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); + FillWindowPixelBuffer8Bit(sPSSData->field_2200, PIXEL_FILL(0)); + sub_80956A4(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn); + SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); + PutWindowTilemap(sPSSData->field_2200); + CopyWindowToVram8Bit(sPSSData->field_2200, 3); + BlendPalettes(0x3F00, 8, RGB_WHITE); + sub_8094D14(2); + SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); + sMoveMonsPtr->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +static bool8 sub_8095234(void) +{ + switch (sMoveMonsPtr->state) + { + case 0: + HideBg(0); + sMoveMonsPtr->state++; + break; + case 1: + sub_8095A58(); + sub_8094D14(0); + sMoveMonsPtr->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + sub_8094D40(); + LoadPalette(stdpal_get(3), 0xD0, 0x20); + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +static bool8 sub_80952A0(void) +{ + switch (sMoveMonsPtr->state) + { + case 0: + if (!sub_80924A8()) + { + sub_8094CD4(&sMoveMonsPtr->field_6, &sMoveMonsPtr->field_7); + sub_8095520(); + sMoveMonsPtr->toRow = sMoveMonsPtr->field_6; + sMoveMonsPtr->toColumn = sMoveMonsPtr->field_7; + CopyWindowToVram8Bit(sPSSData->field_2200, 2); + sMoveMonsPtr->state++; + } + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 sub_8095314(void) +{ + u8 var1, var2; + + switch (sMoveMonsPtr->state) + { + case 0: + sub_80957C8(); + sub_80958A0(); + sub_8092BAC(FALSE); + sMoveMonsPtr->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + sub_8094D14(3); + sub_8095780(0, 256, 8); + sub_8092BAC(TRUE); + sMoveMonsPtr->state++; + } + break; + case 2: + var1 = sub_8095790(); + var2 = DoMonPlaceChange(); + if (!var1 && !var2) + return FALSE; + break; + } + + return TRUE; +} + +static bool8 sub_8095394(void) +{ + u8 var1 = sub_80924A8(); + u8 var2 = sub_8095790(); + + if (!var1 && !var2) + return FALSE; + else + return TRUE; +} + +static bool8 sub_80953BC(void) +{ + switch (sMoveMonsPtr->state) + { + case 0: + sub_80959A8(); + sub_8095780(0, -256, 8); + sub_8092BAC(FALSE); + sMoveMonsPtr->state++; + break; + case 1: + if (!DoMonPlaceChange() && !sub_8095790()) + { + sub_8095918(); + sub_8094D14(2); + sub_8092BAC(TRUE); + HideBg(0); + sMoveMonsPtr->state++; + } + break; + case 2: + if (!DoMonPlaceChange()) + { + sub_8094D14(0); + sub_8095A58(); + sMoveMonsPtr->state++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + LoadPalette(stdpal_get(3), 0xD0, 0x20); + sub_8094D40(); + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +bool8 sub_8095474(u8 arg0) +{ + switch (arg0) + { + case 0: // up + if (sMoveMonsPtr->minColumn == 0) + return FALSE; + sMoveMonsPtr->minColumn--; + sub_8095780(0, 1024, 6); + break; + case 1: // down + if (sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal >= 5) + return FALSE; + sMoveMonsPtr->minColumn++; + sub_8095780(0, -1024, 6); + break; + case 2: // left + if (sMoveMonsPtr->minRow == 0) + return FALSE; + sMoveMonsPtr->minRow--; + sub_8095780(1024, 0, 6); + break; + case 3: // right + if (sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal > 5) + return FALSE; + sMoveMonsPtr->minRow++; + sub_8095780(-1024, 0, 6); + break; + } + + return TRUE; +} + +static void sub_8095520(void) +{ + s16 var = (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->field_6)) - (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow)); + s16 var2 = (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->field_7)) - (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn)); + + if (var > 0) + sub_80955C4(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + + if (var < 0) + { + sub_8095634(sMoveMonsPtr->toRow, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + sub_80955C4(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + } + + if (var2 > 0) + sub_80955FC(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + + if (var2 < 0) + { + sub_809566C(sMoveMonsPtr->toColumn, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + sub_80955FC(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + } +} + +static void sub_80955C4(u8 arg0, u8 arg1, u8 arg2) +{ + u8 var1 = arg1; + + if (arg1 > arg2) + { + arg1 = arg2; + arg2 = var1; + } + + while (arg1 <= arg2) + sub_80956A4(arg0, arg1++); +} + +static void sub_80955FC(u8 arg0, u8 arg1, u8 arg2) +{ + u8 var1 = arg1; + + if (arg1 > arg2) + { + arg1 = arg2; + arg2 = var1; + } + + while (arg1 <= arg2) + sub_80956A4(arg1++, arg0); +} + +static void sub_8095634(u8 arg0, u8 arg1, u8 arg2) +{ + u8 var1 = arg1; + + if (arg1 > arg2) + { + arg1 = arg2; + arg2 = var1; + } + + while (arg1 <= arg2) + sub_809572C(arg0, arg1++); +} + +static void sub_809566C(u8 arg0, u8 arg1, u8 arg2) +{ + u8 var1 = arg1; + + if (arg1 > arg2) + { + arg1 = arg2; + arg2 = var1; + } + + while (arg1 <= arg2) + sub_809572C(arg1++, arg0); +} + +static void sub_80956A4(u8 x, u8 y) +{ + u8 position = x + (IN_BOX_ROWS * y); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); + + if (species != SPECIES_NONE) + { + const u8 *iconGfx = GetMonIconPtr(species, personality, 1); + u8 index = GetValidMonIconPalIndex(species) + 8; + + BlitBitmapRectToWindow4BitTo8Bit(sPSSData->field_2200, + iconGfx, + 0, + 0, + 32, + 32, + 24 * x, + 24 * y, + 32, + 32, + index); + } +} + +static void sub_809572C(u8 x, u8 y) +{ + u8 position = x + (IN_BOX_ROWS * y); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + + if (species != SPECIES_NONE) + { + FillWindowPixelRect8Bit(sPSSData->field_2200, + PIXEL_FILL(0), + 24 * x, + 24 * y, + 32, + 32); + } +} + +static void sub_8095780(u16 bgX, u16 bgY, u16 duration) +{ + sMoveMonsPtr->bgX = bgX; + sMoveMonsPtr->bgY = bgY; + sMoveMonsPtr->field_10 = duration; +} + +static u8 sub_8095790(void) +{ + if (sMoveMonsPtr->field_10 != 0) + { + ChangeBgX(0, sMoveMonsPtr->bgX, 1); + ChangeBgY(0, sMoveMonsPtr->bgY, 1); + sMoveMonsPtr->field_10--; + } + + return sMoveMonsPtr->field_10; +} + +static void sub_80957C8(void) +{ + s32 i, j; + s32 rowCount, columnCount; + u8 boxId; + u8 monArrayId; + + sMoveMonsPtr->minRow = min(sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + sMoveMonsPtr->minColumn = min(sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + sMoveMonsPtr->rowsTotal = abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow) + 1; + sMoveMonsPtr->columsTotal = abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn) + 1; + boxId = StorageGetCurrentBox(); + monArrayId = 0; + rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); + + sMoveMonsPtr->boxMons[monArrayId] = *boxMon; + monArrayId++; + boxPosition++; + } + } +} + +static void sub_80958A0(void) +{ + s32 i, j; + s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + u8 boxId = StorageGetCurrentBox(); + + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + DestroyBoxMonIconAtPosition(boxPosition); + ZeroBoxMonAt(boxId, boxPosition); + boxPosition++; + } + } +} + +static void sub_8095918(void) +{ + s32 i, j; + s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + u8 monArrayId = 0; + + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + sub_80901EC(boxPosition); + monArrayId++; + boxPosition++; + } + } +} + +static void sub_80959A8(void) +{ + s32 i, j; + s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + u8 boxId = StorageGetCurrentBox(); + u8 monArrayId = 0; + + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + SetBoxMonAt(boxId, boxPosition, &sMoveMonsPtr->boxMons[monArrayId]); + boxPosition++; + monArrayId++; + } + } +} + +static void sub_8095A58(void) +{ + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0); + ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + CopyBgTilemapBufferToVram(0); +} + +u8 sub_8095AA0(void) +{ + return (IN_BOX_ROWS * sMoveMonsPtr->fromColumn) + sMoveMonsPtr->fromRow; +} + +bool8 sub_8095ABC(void) +{ + s32 i, j; + s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; + s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + u8 monArrayId = 0; + + for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + { + u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; + for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + { + if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) + && GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES)) + return FALSE; + + monArrayId++; + boxPosition++; + } + } + + return TRUE; +} diff --git a/src/pokemon_storage_system_8.c b/src/pokemon_storage_system_8.c new file mode 100644 index 000000000..39bec436e --- /dev/null +++ b/src/pokemon_storage_system_8.c @@ -0,0 +1,755 @@ +#include "global.h" +#include "gflib.h" +#include "decompress.h" +#include "item.h" +#include "item_menu_icons.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "pokemon_storage_system_internal.h" +#include "trig.h" +#include "constants/items.h" + +static u8 sub_80961D8(void); +static bool32 sub_8096210(u8 cursorArea, u8 cursorPos); +static u8 sub_8096258(u8 cursorArea, u8 cursorPos); +static void sub_80962F0(u8 id, u8 cursorArea, u8 cursorPos); +static void sub_8096408(u8 id, const u32 * tiles, const u32 * pal); +static void sub_80964B8(u8 id, u8 affineAnimNo); +static void sub_80964E8(u8 id, u8 command, u8 cursorArea, u8 cursorPos); +static void sub_8096624(u8 id, bool8 show); +static const u32 *GetItemIconPic(u16 itemId); +static const u32 *GetItemIconPalette(u16 itemId); +static void sub_8096898(u32 x); +static void sub_809692C(struct Sprite * sprite); +static void sub_8096958(struct Sprite * sprite); +static void sub_80969BC(struct Sprite * sprite); +static void sub_80969F4(struct Sprite * sprite); +static void sub_8096A74(struct Sprite * sprite); +static void sub_8096B10(struct Sprite * sprite); +static void sub_8096BAC(struct Sprite * sprite); + +static const u32 gUnknown_83D35DC[] = INCBIN_U32("graphics/interface/pss_unk_83D35DC.4bpp"); + +static const struct OamData gUnknown_83D365C = { + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0 +}; + +static const union AffineAnimCmd gUnknown_83D3664[] = { + AFFINEANIMCMD_FRAME(128, 128, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gUnknown_83D3674[] = { + AFFINEANIMCMD_FRAME(88, 88, 0, 0), + AFFINEANIMCMD_FRAME(5, 5, 0, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gUnknown_83D368C[] = { + AFFINEANIMCMD_FRAME(128, 128, 0, 0), + AFFINEANIMCMD_FRAME(-5, -5, 0, 8), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gUnknown_83D36A4[] = { + AFFINEANIMCMD_FRAME(128, 128, 0, 0), + AFFINEANIMCMD_FRAME(10, 10, 0, 12), + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gUnknown_83D36C4[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(-10, -10, 0, 12), + AFFINEANIMCMD_FRAME(128, 128, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gUnknown_83D36E4[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(-5, -5, 0, 16), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gUnknown_83D36FC[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const gUnknown_83D370C[] = { + gUnknown_83D3664, + gUnknown_83D3674, + gUnknown_83D368C, + gUnknown_83D36A4, + gUnknown_83D36C4, + gUnknown_83D36E4, + gUnknown_83D36FC +}; + +static const struct SpriteTemplate gUnknown_83D3728 = { + .tileTag = TAG_TILE_7, + .paletteTag = TAG_PAL_DACB, + .oam = &gUnknown_83D365C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gUnknown_83D370C, + .callback = SpriteCallbackDummy, +}; + +void sub_8095B5C(void) +{ + s32 i; + u8 spriteId; + struct CompressedSpriteSheet spriteSheet; + struct SpriteTemplate spriteTemplate; + static u32 gUnknown_3000FE8[0x61]; + + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + spriteSheet.data = gUnknown_3000FE8; + spriteSheet.size = 0x200; + spriteTemplate = gUnknown_83D3728; + + for (i = 0; i < MAX_ITEM_ICONS; i++) + { + spriteSheet.tag = TAG_TILE_7 + i; + LoadCompressedSpriteSheet(&spriteSheet); + sPSSData->itemIconSprites[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * 32 + (void*)(OBJ_VRAM0); + sPSSData->itemIconSprites[i].palIndex = AllocSpritePalette(TAG_PAL_DACB + i); + sPSSData->itemIconSprites[i].palIndex *= 16; + sPSSData->itemIconSprites[i].palIndex += 0x100; + spriteTemplate.tileTag = TAG_TILE_7 + i; + spriteTemplate.paletteTag = TAG_PAL_DACB + i; + spriteId = CreateSprite(&spriteTemplate, 0, 0, 11); + sPSSData->itemIconSprites[i].sprite = &gSprites[spriteId]; + sPSSData->itemIconSprites[i].sprite->invisible = TRUE; + sPSSData->itemIconSprites[i].active = 0; + } + } + sPSSData->movingItem = ITEM_NONE; +} + +void sub_8095C84(u8 cursorArea, u8 cursorPos) +{ + u16 heldItem; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return; + if (sub_8096210(cursorArea, cursorPos)) + return; + + switch (cursorArea) + { + case CURSOR_AREA_IN_BOX: + if (!GetCurrentBoxMonData(cursorPos, MON_DATA_SANITY_HAS_SPECIES)) + return; + heldItem = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM); + break; + case CURSOR_AREA_IN_PARTY: + if (!GetMonData(&gPlayerParty[cursorPos], MON_DATA_SANITY_HAS_SPECIES)) + return; + heldItem = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM); + break; + default: + return; + } + + if (heldItem != ITEM_NONE) + { + const u32 *tiles = GetItemIconPic(heldItem); + const u32 *pal = GetItemIconPalette(heldItem); + u8 id = sub_80961D8(); + + sub_80962F0(id, cursorArea, cursorPos); + sub_8096408(id, tiles, pal); + sub_80964B8(id, 1); + sub_8096624(id, TRUE); + } +} + +void sub_8095D44(u8 cursorArea, u8 cursorPos) +{ + u8 id; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return; + + id = sub_8096258(cursorArea, cursorPos); + sub_80964B8(id, 2); + sub_80964E8(id, 0, cursorArea, cursorPos); +} + +void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos) +{ + u8 id; + u16 item; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return; + + id = sub_8096258(cursorArea, cursorPos); + item = 0; + sub_80964B8(id, 3); + sub_80964E8(id, 1, cursorArea, cursorPos); + sub_80962F0(id, 2, 0); + if (cursorArea == CURSOR_AREA_IN_BOX) + { + SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item); + SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND); + } + else + { + SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &item); + SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND); + } + + sPSSData->movingItem = sPSSData->cursorMonItem; +} + +void sub_8095E2C(u16 item) +{ + const u32 *tiles = GetItemIconPic(item); + const u32 *pal = GetItemIconPalette(item); + u8 id = sub_80961D8(); + + sub_8096408(id, tiles, pal); + sub_80964B8(id, 6); + sub_80964E8(id, 1, CURSOR_AREA_IN_BOX, 0); + sub_80962F0(id, CURSOR_AREA_BOX, 0); + sub_8096624(id, TRUE); + sPSSData->movingItem = item; +} + +void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos) +{ + u8 id; + u16 item; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return; + + id = sub_8096258(cursorArea, cursorPos); + sub_80964B8(id, 3); + sub_80964E8(id, 3, CURSOR_AREA_BOX, 0); + if (cursorArea == CURSOR_AREA_IN_BOX) + { + item = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM); + SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &sPSSData->movingItem); + sPSSData->movingItem = item; + } + else + { + item = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM); + SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &sPSSData->movingItem); + sPSSData->movingItem = item; + } + + id = sub_8096258(2, 0); + sub_80964B8(id, 4); + sub_80964E8(id, 4, cursorArea, cursorPos); +} + +void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos) +{ + u8 id; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return; + + id = sub_8096258(2, 0); + sub_80964B8(id, 4); + sub_80964E8(id, 2, cursorArea, cursorPos); + if (cursorArea == CURSOR_AREA_IN_BOX) + { + SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &sPSSData->movingItem); + SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL); + } + else + { + SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &sPSSData->movingItem); + SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL); + } +} + +void Item_TakeMons(u8 cursorArea, u8 cursorPos) +{ + u8 id; + u16 item; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return; + + item = 0; + id = sub_8096258(cursorArea, cursorPos); + sub_80964B8(id, 2); + sub_80964E8(id, 0, cursorArea, cursorPos); + if (cursorArea == CURSOR_AREA_IN_BOX) + { + SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item); + SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND); + } + else + { + SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &item); + SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND); + } +} + +void sub_8096088(void) +{ + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + u8 id = sub_8096258(2, 0); + sub_80964B8(id, 5); + sub_80964E8(id, 0, CURSOR_AREA_BOX, 0); + } +} + +void sub_80960C0(void) +{ + s32 i; + + if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) + return; + + for (i = 0; i < MAX_ITEM_ICONS; i++) + { + if (sPSSData->itemIconSprites[i].active && sPSSData->itemIconSprites[i].cursorArea == CURSOR_AREA_IN_PARTY) + sub_80964E8(i, 7, CURSOR_AREA_BOX, 0); + } +} + +bool8 sub_809610C(void) +{ + s32 i; + + for (i = 0; i < MAX_ITEM_ICONS; i++) + { + if (sPSSData->itemIconSprites[i].active) + { + if (!sPSSData->itemIconSprites[i].sprite->affineAnimEnded && sPSSData->itemIconSprites[i].sprite->affineAnimBeginning) + return TRUE; + if (sPSSData->itemIconSprites[i].sprite->callback != SpriteCallbackDummy && sPSSData->itemIconSprites[i].sprite->callback != sub_80969BC) + return TRUE; + } + } + + return FALSE; +} + +bool8 IsActiveItemMoving(void) +{ + s32 i; + + if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS) + { + for (i = 0; i < MAX_ITEM_ICONS; i++) + { + if (sPSSData->itemIconSprites[i].active && sPSSData->itemIconSprites[i].cursorArea == CURSOR_AREA_BOX) + return TRUE; + } + } + + return FALSE; +} + +const u8 *GetMovingItemName(void) +{ + return ItemId_GetName(sPSSData->movingItem); +} + +u16 GetMovingItem(void) +{ + return sPSSData->movingItem; +} + +static u8 sub_80961D8(void) +{ + u8 i; + + for (i = 0; i < MAX_ITEM_ICONS; i++) + { + if (!sPSSData->itemIconSprites[i].active) + { + sPSSData->itemIconSprites[i].active = TRUE; + return i; + } + } + + return MAX_ITEM_ICONS; +} + +static bool32 sub_8096210(u8 cursorArea, u8 cursorPos) +{ + s32 i; + + for (i = 0; i < MAX_ITEM_ICONS; i++) + { + if (sPSSData->itemIconSprites[i].active + && sPSSData->itemIconSprites[i].cursorArea == cursorArea + && sPSSData->itemIconSprites[i].cursorPos == cursorPos) + return TRUE; + } + + return FALSE; +} + +static u8 sub_8096258(u8 cursorArea, u8 cursorPos) +{ + u8 i; + + for (i = 0; i < MAX_ITEM_ICONS; i++) + { + if (sPSSData->itemIconSprites[i].active + && sPSSData->itemIconSprites[i].cursorArea == cursorArea + && sPSSData->itemIconSprites[i].cursorPos == cursorPos) + return i; + } + + return MAX_ITEM_ICONS; +} + +static u8 sub_80962A8(struct Sprite *sprite) +{ + u8 i; + + for (i = 0; i < MAX_ITEM_ICONS; i++) + { + if (sPSSData->itemIconSprites[i].active + && sPSSData->itemIconSprites[i].sprite == sprite) + return i; + } + + return MAX_ITEM_ICONS; +} + +static void sub_80962F0(u8 id, u8 cursorArea, u8 cursorPos) +{ + u8 row, column; + + if (id >= MAX_ITEM_ICONS) + return; + + switch (cursorArea) + { + case CURSOR_AREA_IN_BOX: + row = cursorPos % IN_BOX_ROWS; + column = cursorPos / IN_BOX_ROWS; + sPSSData->itemIconSprites[id].sprite->pos1.x = (24 * row) + 112; + sPSSData->itemIconSprites[id].sprite->pos1.y = (24 * column) + 56; + sPSSData->itemIconSprites[id].sprite->oam.priority = 2; + break; + case CURSOR_AREA_IN_PARTY: + if (cursorPos == 0) + { + sPSSData->itemIconSprites[id].sprite->pos1.x = 116; + sPSSData->itemIconSprites[id].sprite->pos1.y = 76; + } + else + { + sPSSData->itemIconSprites[id].sprite->pos1.x = 164; + sPSSData->itemIconSprites[id].sprite->pos1.y = 24 * (cursorPos - 1) + 28; + } + sPSSData->itemIconSprites[id].sprite->oam.priority = 1; + break; + } + + sPSSData->itemIconSprites[id].cursorArea = cursorArea; + sPSSData->itemIconSprites[id].cursorPos = cursorPos; +} + +static void sub_8096408(u8 id, const u32 *itemTiles, const u32 *itemPal) +{ + s32 i; + + if (id >= MAX_ITEM_ICONS) + return; + + CpuFastFill(0, sPSSData->field_42C4, 0x200); + LZ77UnCompWram(itemTiles, sPSSData->field_22C4); + for (i = 0; i < 3; i++) + CpuFastCopy(sPSSData->field_22C4 + (i * 0x60), sPSSData->field_42C4 + (i * 0x80), 0x60); + + CpuFastCopy(sPSSData->field_42C4, sPSSData->itemIconSprites[id].tiles, 0x200); + LZ77UnCompWram(itemPal, sPSSData->field_42C4); + LoadPalette(sPSSData->field_42C4, sPSSData->itemIconSprites[id].palIndex, 0x20); +} + +static void sub_80964B8(u8 id, u8 animNum) +{ + if (id >= MAX_ITEM_ICONS) + return; + + StartSpriteAffineAnim(sPSSData->itemIconSprites[id].sprite, animNum); +} + +static void sub_80964E8(u8 id, u8 command, u8 cursorArea, u8 cursorPos) +{ + if (id >= MAX_ITEM_ICONS) + return; + + switch (command) + { + case 0: + sPSSData->itemIconSprites[id].sprite->data[0] = id; + sPSSData->itemIconSprites[id].sprite->callback = sub_809692C; + break; + case 1: + sPSSData->itemIconSprites[id].sprite->data[0] = 0; + sPSSData->itemIconSprites[id].sprite->callback = sub_8096958; + break; + case 2: + sPSSData->itemIconSprites[id].sprite->data[0] = 0; + sPSSData->itemIconSprites[id].sprite->data[6] = cursorArea; + sPSSData->itemIconSprites[id].sprite->data[7] = cursorPos; + sPSSData->itemIconSprites[id].sprite->callback = sub_80969F4; + break; + case 3: + sPSSData->itemIconSprites[id].sprite->data[0] = 0; + sPSSData->itemIconSprites[id].sprite->callback = sub_8096A74; + sPSSData->itemIconSprites[id].sprite->data[6] = cursorArea; + sPSSData->itemIconSprites[id].sprite->data[7] = cursorPos; + break; + case 4: + sPSSData->itemIconSprites[id].sprite->data[0] = 0; + sPSSData->itemIconSprites[id].sprite->data[6] = cursorArea; + sPSSData->itemIconSprites[id].sprite->data[7] = cursorPos; + sPSSData->itemIconSprites[id].sprite->callback = sub_8096B10; + break; + case 7: + sPSSData->itemIconSprites[id].sprite->callback = sub_8096BAC; + break; + } +} + +static void sub_8096624(u8 id, bool8 show) +{ + if (id >= MAX_ITEM_ICONS) + return; + + sPSSData->itemIconSprites[id].active = show; + sPSSData->itemIconSprites[id].sprite->invisible = (show == FALSE); +} + +static const u32 *GetItemIconPic(u16 itemId) +{ + return GetItemIconGfxPtr(itemId, 0); +} + +static const u32 *GetItemIconPalette(u16 itemId) +{ + return GetItemIconGfxPtr(itemId, 1); +} + +void PrintItemDescription(void) +{ + const u8 *description; + + if (IsActiveItemMoving()) + description = ItemId_GetDescription(sPSSData->movingItem); + else + description = ItemId_GetDescription(sPSSData->cursorMonItem); + + FillWindowPixelBuffer(2, PIXEL_FILL(1)); + AddTextPrinterParameterized5(2, 2, description, 2, 0, 0, NULL, 0, 0); +} + +void sub_80966F4(void) +{ + sPSSData->field_2236 = 25; + LoadBgTiles(0, gUnknown_83D35DC, 0x80, 0x1A4); + sub_8096898(0); +} + +bool8 sub_8096728(void) +{ + s32 i, var; + + if (sPSSData->field_2236 == 0) + return FALSE; + + sPSSData->field_2236--; + var = 25 - sPSSData->field_2236; + for (i = 0; i < var; i++) + { + WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sPSSData->field_2236 + i, i, 12, 1, 8, 15, 25); + } + + sub_8096898(var); + return (sPSSData->field_2236 != 0); +} + +bool8 sub_80967C0(void) +{ + s32 i, var; + + if (sPSSData->field_2236 == 25) + return FALSE; + + if (sPSSData->field_2236 == 0) + FillBgTilemapBufferRect(0, 0, 25, 11, 1, 10, 17); + + sPSSData->field_2236++; + var = 25 - sPSSData->field_2236; + for (i = 0; i < var; i++) + { + WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sPSSData->field_2236 + i, i, 12, 1, 8, 15, 25); + } + + sub_8096898(var); + + FillBgTilemapBufferRect(0, 0, var, 11, 1, 10, 0x11); + return (sPSSData->field_2236 != 25); +} + +static void sub_8096898(u32 x) +{ + if (x != 0) + { + FillBgTilemapBufferRect(0, 0x1A4, 0, 0xB, x, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x9A4, 0, 0x14, x, 1, 0xFu); + } + FillBgTilemapBufferRect(0, 0x1A5, x, 0xC, 1, 8, 0xFu); + FillBgTilemapBufferRect(0, 0x1A6, x, 0xB, 1, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x1A7, x, 0x14, 1, 1, 0xFu); + ScheduleBgCopyTilemapToVram(0); +} + +static void sub_809692C(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + sub_8096624(sprite->data[0], FALSE); + sprite->callback = SpriteCallbackDummy; + } +} + +static void sub_8096958(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = sprite->pos1.x << 4; + sprite->data[2] = sprite->pos1.y << 4; + sprite->data[3] = 10; + sprite->data[4] = 21; + sprite->data[5] = 0; + sprite->data[0]++; + case 1: + sprite->data[1] -= sprite->data[3]; + sprite->data[2] -= sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4; + sprite->pos1.y = sprite->data[2] >> 4; + if (++sprite->data[5] > 11) + sprite->callback = sub_80969BC; + break; + } +} + +static void sub_80969BC(struct Sprite *sprite) +{ + sprite->pos1.x = sPSSData->field_CB4->pos1.x + 4; + sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 8; + sprite->oam.priority = sPSSData->field_CB4->oam.priority; +} + +static void sub_80969F4(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = sprite->pos1.x << 4; + sprite->data[2] = sprite->pos1.y << 4; + sprite->data[3] = 10; + sprite->data[4] = 21; + sprite->data[5] = 0; + sprite->data[0]++; + case 1: + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4; + sprite->pos1.y = sprite->data[2] >> 4; + if (++sprite->data[5] > 11) + { + sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]); + sprite->callback = SpriteCallbackDummy; + } + break; + } +} + +static void sub_8096A74(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = sprite->pos1.x << 4; + sprite->data[2] = sprite->pos1.y << 4; + sprite->data[3] = 10; + sprite->data[4] = 21; + sprite->data[5] = 0; + sprite->data[0]++; + case 1: + sprite->data[1] -= sprite->data[3]; + sprite->data[2] -= sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4; + sprite->pos1.y = sprite->data[2] >> 4; + sprite->pos2.x = gSineTable[sprite->data[5] * 8] >> 4; + if (++sprite->data[5] > 11) + { + sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]); + sprite->pos2.x = 0; + sprite->callback = sub_80969BC; + } + break; + } +} + +static void sub_8096B10(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = sprite->pos1.x << 4; + sprite->data[2] = sprite->pos1.y << 4; + sprite->data[3] = 10; + sprite->data[4] = 21; + sprite->data[5] = 0; + sprite->data[0]++; + case 1: + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4; + sprite->pos1.y = sprite->data[2] >> 4; + sprite->pos2.x = -(gSineTable[sprite->data[5] * 8] >> 4); + if (++sprite->data[5] > 11) + { + sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]); + sprite->callback = SpriteCallbackDummy; + sprite->pos2.x = 0; + } + break; + } +} + +static void sub_8096BAC(struct Sprite *sprite) +{ + sprite->pos1.y -= 8; + if (sprite->pos1.y + sprite->pos2.y < -16) + { + sprite->callback = SpriteCallbackDummy; + sub_8096624(sub_80962A8(sprite), FALSE); + } +} diff --git a/src/pokemon_storage_system_9.c b/src/pokemon_storage_system_9.c new file mode 100644 index 000000000..0f3078127 --- /dev/null +++ b/src/pokemon_storage_system_9.c @@ -0,0 +1,87 @@ +#include "global.h" +#include "gflib.h" +#include "pokemon_storage_system_internal.h" + +static EWRAM_DATA struct UnkStruct_2000020 *gUnknown_203982C = NULL; + +static void sub_8096CDC(struct UnkStruct_2000028 *unkStruct); +static void sub_8096D70(struct UnkStruct_2000028 *unkStruct); + +void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2) +{ + gUnknown_203982C = arg0; + arg0->unk_00 = arg1; + arg0->unk_05 = arg2; + arg0->unk_04 = 0; +} + +void sub_8096BF8(void) +{ + u16 i; + + if (gUnknown_203982C->unk_04) + { + for (i = 0; i < gUnknown_203982C->unk_04; i++) + { + struct UnkStruct_2000028 *unkStruct = &gUnknown_203982C->unk_00[i]; + unkStruct->unk_0c(unkStruct); + } + + gUnknown_203982C->unk_04 = 0; + } +} + +static bool8 sub_8096C40(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg) +{ + struct UnkStruct_2000028 *unkStruct; + + if (gUnknown_203982C->unk_04 >= gUnknown_203982C->unk_05) + return FALSE; + + unkStruct = &gUnknown_203982C->unk_00[gUnknown_203982C->unk_04++]; + unkStruct->unk_08 = width * 2; + unkStruct->unk_04 = dest + 2 * (dTop * 32 + dLeft); + unkStruct->unk_00 = src + 2 * (sTop * unkArg + sLeft); + unkStruct->newField = height; + unkStruct->unk_0a = unkArg; + unkStruct->unk_0c = sub_8096CDC; + return TRUE; +} + +static void sub_8096CDC(struct UnkStruct_2000028 *unkStruct) +{ + u16 i; + + for (i = 0; i < unkStruct->newField; i++) + { + CpuSet(unkStruct->unk_00, unkStruct->unk_04, (unkStruct->unk_08 / 2)); + unkStruct->unk_04 += 64; + unkStruct->unk_00 += (unkStruct->unk_0a * 2); + } +} + +static bool8 sub_8096D14(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height) +{ + struct UnkStruct_2000028 *unkStruct; + + if (gUnknown_203982C->unk_04 >= gUnknown_203982C->unk_05) + return FALSE; + + unkStruct = &gUnknown_203982C->unk_00[gUnknown_203982C->unk_04++]; + unkStruct->unk_08 = width * 2; + unkStruct->unk_04 = dest + ((dTop * 32) + dLeft) * 2; + unkStruct->newField = height; + unkStruct->unk_0c = sub_8096D70; + return TRUE; +} + +static void sub_8096D70(struct UnkStruct_2000028 *unkStruct) +{ + u16 i; + + for (i = 0; i < unkStruct->newField; i++) + { + Dma3FillLarge_(0, unkStruct->unk_04, unkStruct->unk_08, 16); + unkStruct->unk_04 += 64; + } +} diff --git a/src/quest_log.c b/src/quest_log.c index 91c07223e..bc8e67a6b 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -752,7 +752,7 @@ void sub_8111438(void) { for (r3 = 0; r3 < 5; r3++) { - sub_808BCB4(0, r3); + ZeroBoxMonAt(0, r3); } for (r3 = r5; r3 < r9->sanePartyCount; r3++) { @@ -767,9 +767,9 @@ void sub_8111438(void) { for (r6 = 0; r6 < 30; r6++) { - if (GetBoxMonDataFromAnyBox(r3, r6, MON_DATA_SANITY_HAS_SPECIES)) + if (GetBoxMonDataAt(r3, r6, MON_DATA_SANITY_HAS_SPECIES)) { - sub_808BCB4(r3, r6); + ZeroBoxMonAt(r3, r6); r5--; if (r5 == r9->saneBoxesCount) break; @@ -832,7 +832,7 @@ static u16 QuestLog_GetSaneBoxCount(void) { for (j = 0; j < IN_BOX_COUNT; j++) { - if (GetBoxMonDataFromAnyBox(i, j, MON_DATA_SANITY_HAS_SPECIES)) + if (GetBoxMonDataAt(i, j, MON_DATA_SANITY_HAS_SPECIES)) count++; } } diff --git a/src/string_util.c b/src/string_util.c index 4c1106df8..0a2365d25 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -532,11 +532,11 @@ u8 *StringFillWithTerminator(u8 *dest, u16 n) return StringFill(dest, EOS, n); } -u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n) +u8 *StringCopyN_Multibyte(u8 *dest, const u8 *src, u32 n) { u32 i; - for (i = n - 1; i != (u32)-1; i--) + for (i = n - 1; i != -1u; i--) { if (*src == EOS) { @@ -554,7 +554,7 @@ u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n) return dest; } -u32 StringLength_Multibyte(u8 *str) +u32 StringLength_Multibyte(const u8 *str) { u32 length = 0; diff --git a/src/strings.c b/src/strings.c index f5040838a..faf42c86a 100644 --- a/src/strings.c +++ b/src/strings.c @@ -601,87 +601,87 @@ const u8 gString_BattleRecords_4Dashes[] = _("----"); const u8 gFameCheckerText_FameCheckerWillBeClosed[] = _("The FAME CHECKER will be closed."); const u8 gFameCheckerText_ClearTextbox[] = _("\n "); const u8 gUnknown_8418204[] = _("やめる"); -const u8 gUnknown_8418208[] = _("Exit from the BOX."); -const u8 gUnknown_841821B[] = _("What do you want to do?"); -const u8 gUnknown_8418233[] = _("Please pick a theme."); -const u8 gUnknown_8418248[] = _("Pick the wallpaper."); -const u8 gUnknown_841825C[] = _("{DYNAMIC 0x00} is selected."); -const u8 gUnknown_841826C[] = _("Jump to which BOX?"); -const u8 gUnknown_841827F[] = _("Deposit in which BOX?"); -const u8 gUnknown_8418295[] = _("{DYNAMIC 0x00} was deposited."); -const u8 gUnknown_84182A7[] = _("The BOX is full."); -const u8 gUnknown_84182B8[] = _("Release this POKéMON?"); -const u8 gUnknown_84182CE[] = _("{DYNAMIC 0x00} was released."); -const u8 gUnknown_84182DF[] = _("Bye-bye, {DYNAMIC 0x00}!"); -const u8 gUnknown_84182EC[] = _("Mark your POKéMON."); -const u8 gUnknown_84182FF[] = _("That's your last POKéMON!"); -const u8 gUnknown_8418319[] = _("Your party's full!"); -const u8 gUnknown_841832C[] = _("You're holding a POKéMON!"); -const u8 gUnknown_8418346[] = _("Which one will you take?"); -const u8 gUnknown_841835F[] = _("You can't release an EGG."); -const u8 gUnknown_8418379[] = _("Continue BOX operations?"); -const u8 gUnknown_8418392[] = _("{DYNAMIC 0x00} came back!"); -const u8 gUnknown_84183A0[] = _("Was it worried about you?"); -const u8 gUnknown_84183BA[] = _("‥ ‥ ‥ ‥ ‥!"); -const u8 gUnknown_84183C5[] = _("Please remove the MAIL."); -const u8 gUnknown_84183DD[] = _("GIVE to a POKéMON?"); -const u8 gUnknown_84183F0[] = _("Placed item in the BAG."); -const u8 gUnknown_8418408[] = _("The BAG is full."); -const u8 gUnknown_8418419[] = _("Put this item in the BAG?"); -const u8 gUnknown_8418433[] = _("{DYNAMIC 0x00} is now held."); -const u8 gUnknown_8418443[] = _("Changed to {DYNAMIC 0x00}."); -const u8 gUnknown_8418452[] = _("MAIL can't be stored!"); -const u8 gUnknown_8418468[] = _("CANCEL"); -const u8 gUnknown_841846F[] = _("STORE"); -const u8 gUnknown_8418475[] = _("WITHDRAW"); -const u8 gUnknown_841847E[] = _("SHIFT"); -const u8 gUnknown_8418484[] = _("MOVE"); -const u8 gUnknown_8418489[] = _("PLACE"); -const u8 gUnknown_841848F[] = _("SUMMARY"); -const u8 gUnknown_8418497[] = _("RELEASE"); -const u8 gUnknown_841849F[] = _("MARK"); -const u8 gUnknown_84184A4[] = _("NAME"); -const u8 gUnknown_84184A9[] = _("JUMP"); -const u8 gUnknown_84184AE[] = _("WALLPAPER"); -const u8 gUnknown_84184B8[] = _("TAKE"); -const u8 gUnknown_84184BD[] = _("GIVE"); -const u8 gUnknown_84184C2[] = _("SWITCH"); -const u8 gUnknown_84184C9[] = _("BAG"); -const u8 gUnknown_84184CD[] = _("INFO"); -const u8 gUnknown_84184D2[] = _("SCENERY 1"); -const u8 gUnknown_84184DC[] = _("SCENERY 2"); -const u8 gUnknown_84184E6[] = _("SCENERY 3"); -const u8 gUnknown_84184F0[] = _("ETCETERA"); -const u8 gUnknown_84184F9[] = _("FOREST"); -const u8 gUnknown_8418500[] = _("CITY"); -const u8 gUnknown_8418505[] = _("DESERT"); -const u8 gUnknown_841850C[] = _("SAVANNA"); -const u8 gUnknown_8418514[] = _("CRAG"); -const u8 gUnknown_8418519[] = _("VOLCANO"); -const u8 gUnknown_8418521[] = _("SNOW"); -const u8 gUnknown_8418526[] = _("CAVE"); -const u8 gUnknown_841852B[] = _("BEACH"); -const u8 gUnknown_8418531[] = _("SEAFLOOR"); -const u8 gUnknown_841853A[] = _("RIVER"); -const u8 gUnknown_8418540[] = _("SKY"); -const u8 gUnknown_8418544[] = _("STARS"); -const u8 gUnknown_841854A[] = _("POKéCENTER"); -const u8 gUnknown_8418555[] = _("TILES"); -const u8 gUnknown_841855B[] = _("SIMPLE"); +const u8 gText_ExitFromBox[] = _("Exit from the BOX."); +const u8 gText_WhatDoYouWantToDo[] = _("What do you want to do?"); +const u8 gText_PleasePickATheme[] = _("Please pick a theme."); +const u8 gText_PickTheWallpaper[] = _("Pick the wallpaper."); +const u8 gText_PkmnIsSelected[] = _("{DYNAMIC 0x00} is selected."); +const u8 gText_JumpToWhichBox[] = _("Jump to which BOX?"); +const u8 gText_DepositInWhichBox[] = _("Deposit in which BOX?"); +const u8 gText_PkmnWasDeposited[] = _("{DYNAMIC 0x00} was deposited."); +const u8 gText_BoxIsFull2[] = _("The BOX is full."); +const u8 gText_ReleaseThisPokemon[] = _("Release this POKéMON?"); +const u8 gText_PkmnWasReleased[] = _("{DYNAMIC 0x00} was released."); +const u8 gText_ByeByePkmn[] = _("Bye-bye, {DYNAMIC 0x00}!"); +const u8 gText_MarkYourPkmn[] = _("Mark your POKéMON."); +const u8 gText_ThatsYourLastPkmn[] = _("That's your last POKéMON!"); +const u8 gText_YourPartysFull[] = _("Your party's full!"); +const u8 gText_YoureHoldingAPkmn[] = _("You're holding a POKéMON!"); +const u8 gText_WhichOneWillYouTake[] = _("Which one will you take?"); +const u8 gText_YouCantReleaseAnEgg[] = _("You can't release an EGG."); +const u8 gText_ContinueBoxOperations[] = _("Continue BOX operations?"); +const u8 gText_PkmnCameBack[] = _("{DYNAMIC 0x00} came back!"); +const u8 gText_WasItWorriedAboutYou[] = _("Was it worried about you?"); +const u8 gText_FourEllipsesExclamation[] = _("‥ ‥ ‥ ‥ ‥!"); +const u8 gText_PleaseRemoveTheMail[] = _("Please remove the MAIL."); +const u8 gText_GiveToAPkmn[] = _("GIVE to a POKéMON?"); +const u8 gText_PlacedItemInBag[] = _("Placed item in the BAG."); +const u8 gText_BagIsFull2[] = _("The BAG is full."); +const u8 gText_PutItemInBag[] = _("Put this item in the BAG?"); +const u8 gText_ItemIsNowHeld[] = _("{DYNAMIC 0x00} is now held."); +const u8 gText_ChangedToNewItem[] = _("Changed to {DYNAMIC 0x00}."); +const u8 gText_MailCantBeStored[] = _("MAIL can't be stored!"); +const u8 gPCText_Cancel[] = _("CANCEL"); +const u8 gPCText_Store[] = _("STORE"); +const u8 gPCText_Withdraw[] = _("WITHDRAW"); +const u8 gPCText_Shift[] = _("SHIFT"); +const u8 gPCText_Move[] = _("MOVE"); +const u8 gPCText_Place[] = _("PLACE"); +const u8 gPCText_Summary[] = _("SUMMARY"); +const u8 gPCText_Release[] = _("RELEASE"); +const u8 gPCText_Mark[] = _("MARK"); +const u8 gPCText_Name[] = _("NAME"); +const u8 gPCText_Jump[] = _("JUMP"); +const u8 gPCText_Wallpaper[] = _("WALLPAPER"); +const u8 gPCText_Take[] = _("TAKE"); +const u8 gPCText_Give[] = _("GIVE"); +const u8 gPCText_Switch[] = _("SWITCH"); +const u8 gPCText_Bag[] = _("BAG"); +const u8 gPCText_Info[] = _("INFO"); +const u8 gPCText_Scenery1[] = _("SCENERY 1"); +const u8 gPCText_Scenery2[] = _("SCENERY 2"); +const u8 gPCText_Scenery3[] = _("SCENERY 3"); +const u8 gPCText_Etcetera[] = _("ETCETERA"); +const u8 gPCText_Forest[] = _("FOREST"); +const u8 gPCText_City[] = _("CITY"); +const u8 gPCText_Desert[] = _("DESERT"); +const u8 gPCText_Savanna[] = _("SAVANNA"); +const u8 gPCText_Crag[] = _("CRAG"); +const u8 gPCText_Volcano[] = _("VOLCANO"); +const u8 gPCText_Snow[] = _("SNOW"); +const u8 gPCText_Cave[] = _("CAVE"); +const u8 gPCText_Beach[] = _("BEACH"); +const u8 gPCText_Seafloor[] = _("SEAFLOOR"); +const u8 gPCText_River[] = _("RIVER"); +const u8 gPCText_Sky[] = _("SKY"); +const u8 gPCText_PolkaDot[] = _("STARS"); +const u8 gPCText_Pokecenter[] = _("POKéCENTER"); +const u8 gPCText_Machine[] = _("TILES"); +const u8 gPCText_Simple[] = _("SIMPLE"); const u8 gUnknown_8418562[] = _("なにを しますか?"); -const u8 gUnknown_841856C[] = _("WITHDRAW POKéMON"); -const u8 gUnknown_841857D[] = _("DEPOSIT POKéMON"); -const u8 gUnknown_841858D[] = _("MOVE POKéMON"); -const u8 gUnknown_841859A[] = _("MOVE ITEMS"); -const u8 gUnknown_84185A5[] = _("SEE YA!"); -const u8 gUnknown_84185AD[] = _("You can withdraw a POKéMON if you\nhave any in a BOX."); -const u8 gUnknown_84185E2[] = _("You can deposit your party\nPOKéMON in any BOX."); -const u8 gUnknown_8418611[] = _("You can move POKéMON that are\nstored in any BOX."); -const u8 gUnknown_8418642[] = _("You can move items held by any\nPOKéMON in a BOX or your party."); -const u8 gUnknown_8418681[] = _("See you later!"); -const u8 gUnknown_8418690[] = _("Can't deposit the last POKéMON!"); -const u8 gUnknown_84186B0[] = _("Can't take any more POKéMON."); -const u8 gUnknown_84186CD[] = _("BOX"); +const u8 gText_WithdrawPokemon[] = _("WITHDRAW POKéMON"); +const u8 gText_DepositPokemon[] = _("DEPOSIT POKéMON"); +const u8 gText_MovePokemon[] = _("MOVE POKéMON"); +const u8 gText_MoveItems[] = _("MOVE ITEMS"); +const u8 gText_SeeYa[] = _("SEE YA!"); +const u8 gText_WithdrawMonDescription[] = _("You can withdraw a POKéMON if you\nhave any in a BOX."); +const u8 gText_DepositMonDescription[] = _("You can deposit your party\nPOKéMON in any BOX."); +const u8 gText_MoveMonDescription[] = _("You can move POKéMON that are\nstored in any BOX."); +const u8 gText_MoveItemsDescription[] = _("You can move items held by any\nPOKéMON in a BOX or your party."); +const u8 gText_SeeYaDescription[] = _("See you later!"); +const u8 gText_JustOnePkmn[] = _("Can't deposit the last POKéMON!"); +const u8 gText_PartyFull[] = _("Can't take any more POKéMON."); +const u8 gText_Box[] = _("BOX"); const u8 gUnknown_84186D1[] = _("Combine four words or phrases"); const u8 gUnknown_84186EF[] = _("and make your profile."); const u8 gUnknown_8418706[] = _("Make a message of six phrases."); diff --git a/src/tm_case.c b/src/tm_case.c index 2f27cc0db..7bb471719 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -959,7 +959,7 @@ static void Task_SelectTMAction_Type3(u8 taskId) if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]))) { - sTMCaseDynamicResources->savedCallback = sub_808CE60; + sTMCaseDynamicResources->savedCallback = Cb2_ReturnToPSS; Task_BeginFadeOutFromTMCase(taskId); } else diff --git a/src/trade.c b/src/trade.c index 30bfa8389..bd6860e85 100644 --- a/src/trade.c +++ b/src/trade.c @@ -882,10 +882,10 @@ static void sub_804C728(void) gMain.state++; break; case 10: - PSS_RenderTextToVramViaBuffer(gSaveBlock2Ptr->playerName, sSpriteTextTilePtrs[0], 0, 0, gDecompressionBuffer, 3); + DrawTextWindowAndBufferTiles(gSaveBlock2Ptr->playerName, sSpriteTextTilePtrs[0], 0, 0, gDecompressionBuffer, 3); id = GetMultiplayerId(); - PSS_RenderTextToVramViaBuffer(gLinkPlayers[id ^ 1].name, sSpriteTextTilePtrs[3], 0, 0, gDecompressionBuffer, 3); - PSS_RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CANCEL], sSpriteTextTilePtrs[6], 0, 0, gDecompressionBuffer, 2); + DrawTextWindowAndBufferTiles(gLinkPlayers[id ^ 1].name, sSpriteTextTilePtrs[3], 0, 0, gDecompressionBuffer, 3); + DrawTextWindowAndBufferTiles(sTradeUITextPtrs[TRADEUITEXT_CANCEL], sSpriteTextTilePtrs[6], 0, 0, gDecompressionBuffer, 2); RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], sSpriteTextTilePtrs[8], 24); gMain.state++; sTradeMenuResourcesPtr->unk_A8 = 0; @@ -1080,10 +1080,10 @@ void sub_804CF14(void) gMain.state++; break; case 10: - PSS_RenderTextToVramViaBuffer(gSaveBlock2Ptr->playerName, sSpriteTextTilePtrs[0], 0, 0, gDecompressionBuffer, 3); + DrawTextWindowAndBufferTiles(gSaveBlock2Ptr->playerName, sSpriteTextTilePtrs[0], 0, 0, gDecompressionBuffer, 3); id = GetMultiplayerId(); - PSS_RenderTextToVramViaBuffer(gLinkPlayers[id ^ 1].name, sSpriteTextTilePtrs[3], 0, 0, gDecompressionBuffer, 3); - PSS_RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CANCEL], sSpriteTextTilePtrs[6], 0, 0, gDecompressionBuffer, 2); + DrawTextWindowAndBufferTiles(gLinkPlayers[id ^ 1].name, sSpriteTextTilePtrs[3], 0, 0, gDecompressionBuffer, 3); + DrawTextWindowAndBufferTiles(sTradeUITextPtrs[TRADEUITEXT_CANCEL], sSpriteTextTilePtrs[6], 0, 0, gDecompressionBuffer, 2); RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], sSpriteTextTilePtrs[8], 24); gMain.state++; sTradeMenuResourcesPtr->unk_A8 = 0; @@ -2502,7 +2502,7 @@ static bool8 sub_804F610(void) static void RenderTextToVramViaBuffer(const u8 *name, u8 *dest, u8 unused) { - PSS_RenderTextToVramViaBuffer(name, dest, 0, 0, gDecompressionBuffer, 6); + DrawTextWindowAndBufferTiles(name, dest, 0, 0, gDecompressionBuffer, 6); } static void sub_804F748(u8 who) diff --git a/src/window_8bpp.c b/src/window_8bpp.c index c58c13802..8977d61e4 100644 --- a/src/window_8bpp.c +++ b/src/window_8bpp.c @@ -13,7 +13,7 @@ static void nullsub_9(void) { } -u16 AddWindow8Bit(struct WindowTemplate *template) +u16 AddWindow8Bit(const struct WindowTemplate *template) { u16 windowId; u8* memAddress; @@ -81,7 +81,7 @@ void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, FillBitmapRect8Bit(&pixelRect, x, y, width, height, fillValue); } -void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum) +void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum) { struct Bitmap sourceRect; struct Bitmap destRect; diff --git a/sym_bss.txt b/sym_bss.txt index 9195e3ee4..527efb982 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -47,12 +47,8 @@ gUnknown_3000E89: @ 3000E89 .include "src/sound.o" .align 2 .include "src/field_effect.o" - .align 2 - @ .include "src/pokemon_storage_system.o" -gUnknown_3000FE8: @ 3000FE8 - .space 0x184 - + .include "src/pokemon_storage_system_8.o" .align 2 .include "src/easy_chat.o" .align 2 diff --git a/sym_ewram.txt b/sym_ewram.txt index 27c580851..531ae1434 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -150,66 +150,16 @@ gUnknown_20386A8: @ 20386A8 .include "src/option_menu.o" .align 2 .include "src/trainer_card.o" - .align 2 - @ .include "src/pokemon_storage_system.o" -sPreviousBoxOption: @ 20397A8 - .space 0x4 - -gUnknown_20397AC: @ 20397AC - .space 0x4 - -sPSSData: @ 20397B0 - .space 0x4 - -sInPartyMenu: @ 20397B4 - .space 0x1 - -sCurrentBoxOption: @ 20397B5 - .space 0x1 - -gUnknown_20397B6: @ 20397B6 - .space 0x1 - -sWhichToReshow: @ 20397B7 - .space 0x1 - -sLastUsedBox: @ 20397B8 - .space 0x2 - -gUnknown_20397BA: @ 20397BA - .space 0x2 - -gUnknown_20397BC: @ 20397BC - .space 0x64 - -sBoxCursorArea: @ 2039820 - .space 0x1 - -sBoxCursorPosition: @ 2039821 - .space 0x1 - -sIsMonBeingMoved: @ 2039822 - .space 0x1 - -sMovingMonOrigBoxId: @ 2039823 - .space 0x1 - -sMovingMonOrigBoxPos: @ 2039824 - .space 0x1 - -sCanOnlyMove: @ 2039825 - .space 0x1 - -gUnknown_2039826: @ 2039826 - .space 0x2 - -gUnknown_2039828: @ 2039828 - .space 0x4 - -gUnknown_203982C: @ 203982C - .space 0x4 - + .include "src/pokemon_storage_system_2.o" + .align 2 + .include "src/pokemon_storage_system_3.o" + .align 2 + .include "src/pokemon_storage_system_5.o" + .align 2 + .include "src/pokemon_storage_system_7.o" + .align 2 + .include "src/pokemon_storage_system_9.o" .align 2 .include "src/script_movement.o" .align 2 |