diff --git a/asm/code_800F990.s b/asm/code_800F990.s deleted file mode 100644 index d0eed6f5f..000000000 --- a/asm/code_800F990.s +++ /dev/null @@ -1,2126 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_800F990 -sub_800F990: - push {r4-r7,lr} - sub sp, 0x8 - adds r6, r0, 0 - ldr r4, _0800FA20 - ldr r0, [r6, 0x8] - str r0, [r4] - ldr r1, _0800FA24 - ldr r2, _0800FA28 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x14 - bl sub_80095CC - movs r0, 0x2 - bl UpdateFadeInTile - ldr r1, [r4] - ldr r0, _0800FA2C - adds r2, r1, r0 - ldr r0, _0800FA30 - str r0, [r2] - ldrb r0, [r6, 0x5] - ldr r2, _0800FA34 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - bl sub_8010DA4 - ldr r0, [r4] - ldr r2, _0800FA38 - adds r1, r0, r2 - movs r2, 0x1 - negs r2, r2 - str r2, [r1] - ldr r1, _0800FA3C - adds r0, r1 - str r2, [r0] - ldrb r0, [r6, 0x4] - bl sub_800FC5C - ldr r0, [r4] - ldr r2, _0800FA40 - adds r1, r0, r2 - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - ldr r1, _0800FA44 - movs r0, 0xFF - strb r0, [r1] - ldr r0, _0800FA48 - strb r5, [r0] - bl sub_8011760 - add r7, sp, 0x4 -_0800FA00: - movs r5, 0 - str r5, [sp] - str r5, [sp, 0x4] - mov r0, sp - adds r1, r7, 0 - bl sub_800FAA8 - cmp r0, 0x1 - bne _0800FA4C - ldr r0, [sp] - ldr r1, [sp, 0x4] - movs r2, 0x32 - bl sub_80100C0 - b _0800FA00 - .align 2, 0 -_0800FA20: .4byte gUnknown_203B0E4 -_0800FA24: .4byte gUnknown_2026E4E -_0800FA28: .4byte 0x00001010 -_0800FA2C: .4byte 0x00004014 -_0800FA30: .4byte gFriendAreaLocations -_0800FA34: .4byte 0x00004a2c -_0800FA38: .4byte 0x00004a28 -_0800FA3C: .4byte 0x00004a1c -_0800FA40: .4byte 0x00004a20 -_0800FA44: .4byte gUnknown_202DE18 -_0800FA48: .4byte gUnknown_202DE19 -_0800FA4C: - cmp r0, 0x2 - bne _0800FA6C - bl sub_800FB6C - lsls r0, 24 - cmp r0, 0 - beq _0800FA00 - ldr r0, [r4] - ldr r1, _0800FA68 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6, 0xC] - b _0800FA92 - .align 2, 0 -_0800FA68: .4byte 0x00004df4 -_0800FA6C: - cmp r0, 0x3 - bne _0800FA00 - ldr r0, [r4] - ldr r2, _0800FA8C - adds r1, r0, r2 - adds r2, 0x8 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - beq _0800FA90 - movs r1, 0 - movs r2, 0xA - bl sub_80100C0 - b _0800FA00 - .align 2, 0 -_0800FA8C: .4byte 0x00004a18 -_0800FA90: - strb r5, [r6, 0xC] -_0800FA92: - bl sub_800FC28 - bl sub_8010EF0 - bl nullsub_16 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800F990 - - thumb_func_start sub_800FAA8 -sub_800FAA8: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - mov r9, r1 - movs r5, 0 - bl sub_8011300 - bl sub_8011398 -_0800FABE: - bl sub_801169C - bl sub_8010014 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - beq _0800FB1C - ldr r6, _0800FB50 - ldr r2, [r6] - ldr r1, _0800FB54 - adds r0, r2, r1 - ldr r4, [r0] - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r0, r2 - lsls r1, r3, 1 - ldr r7, _0800FB58 - adds r0, r7 - adds r1, r0, r1 - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0 - blt _0800FB1C - adds r1, r0, 0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r7, _0800FB5C - adds r0, r7 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FB1C - movs r5, 0x1 - mov r0, r8 - str r1, [r0] - mov r1, r9 - str r3, [r1] - ldr r1, [r6] - ldr r2, _0800FB60 - adds r0, r1, r2 - str r3, [r0] - ldr r7, _0800FB64 - adds r1, r7 - str r4, [r1] -_0800FB1C: - ldr r4, _0800FB68 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0800FB2E - bl PlayAcceptSoundEffect - movs r5, 0x2 -_0800FB2E: - ldrh r1, [r4, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800FB3E - bl PlayCancelSoundEffect - movs r5, 0x3 -_0800FB3E: - cmp r5, 0 - beq _0800FABE - adds r0, r5, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800FB50: .4byte gUnknown_203B0E4 -_0800FB54: .4byte 0x00004a18 -_0800FB58: .4byte 0x0000401a -_0800FB5C: .4byte 0x00004018 -_0800FB60: .4byte 0x00004a28 -_0800FB64: .4byte 0x00004a1c -_0800FB68: .4byte gRealInputs - thumb_func_end sub_800FAA8 - - thumb_func_start sub_800FB6C -sub_800FB6C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - bl sub_8011494 - ldr r7, _0800FBE8 - ldr r6, _0800FBEC -_0800FB7E: - ldr r5, [r7] - ldr r1, _0800FBF0 - adds r4, r5, r1 - adds r0, r4, 0 - bl AddMenuCursorSprite - bl sub_801169C - ldrh r1, [r6, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0800FBA2 - adds r0, r4, 0 - bl MoveMenuCursorDown - bl PlayCursorUpDownSoundEffect -_0800FBA2: - ldrh r1, [r6, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800FBB6 - adds r0, r4, 0 - bl MoveMenuCursorUp - bl PlayCursorUpDownSoundEffect -_0800FBB6: - ldrh r1, [r6, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0800FBCA - ldr r2, _0800FBF4 - adds r0, r5, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FC00 -_0800FBCA: - bl PlayAcceptSoundEffect - ldr r1, [r7] - movs r3, 0x18 - ldrsh r2, [r4, r3] - ldr r3, _0800FBF8 - adds r0, r1, r3 - adds r0, r2 - ldrb r0, [r0] - ldr r2, _0800FBFC - adds r1, r2 - strb r0, [r1] - movs r3, 0x1 - mov r8, r3 - b _0800FC16 - .align 2, 0 -_0800FBE8: .4byte gUnknown_203B0E4 -_0800FBEC: .4byte gRealInputs -_0800FBF0: .4byte 0x00004dfc -_0800FBF4: .4byte 0x00004e25 -_0800FBF8: .4byte 0x00004dec -_0800FBFC: .4byte 0x00004df4 -_0800FC00: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0800FC12 - ldr r1, _0800FC24 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FB7E -_0800FC12: - bl PlayCancelSoundEffect -_0800FC16: - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800FC24: .4byte 0x00004e26 - thumb_func_end sub_800FB6C - - thumb_func_start sub_800FC28 -sub_800FC28: - push {r4,r5,lr} - bl sub_8011168 - bl sub_80117AC - ldr r5, _0800FC54 - movs r4, 0x3B -_0800FC36: - ldr r1, [r5] - ldr r0, _0800FC58 - adds r1, r0 - ldr r0, [r1] - subs r0, 0x2 - str r0, [r1] - bl sub_801169C - subs r4, 0x1 - cmp r4, 0 - bge _0800FC36 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800FC54: .4byte gUnknown_203B0E4 -_0800FC58: .4byte 0x00004dcc - thumb_func_end sub_800FC28 - - thumb_func_start sub_800FC5C -sub_800FC5C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x40 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - movs r0, 0 - str r0, [sp, 0x18] - mov r8, r0 - ldr r1, _0800FD1C - mov r9, r1 - ldr r2, _0800FD20 - str r2, [sp, 0x38] -_0800FC7C: - movs r7, 0 - movs r3, 0 - mov r10, r3 - mov r4, r9 - ldr r0, [r4] - ldr r1, [sp, 0x38] - adds r6, r0, r1 - ldr r2, _0800FD24 - adds r0, r2 - mov r3, r8 - lsls r1, r3, 5 - ldr r0, [r0] - adds r2, r0, r1 - adds r1, r6, 0x2 - movs r5, 0x7 -_0800FC9A: - ldrh r0, [r1] - ldr r4, _0800FD28 - orrs r0, r4 - strh r0, [r1] - adds r1, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _0800FC9A - movs r5, 0 - adds r1, r2, 0 - adds r1, 0x8 -_0800FCB0: - adds r4, r1, r5 - ldrb r0, [r4] - str r1, [sp, 0x3C] - bl sub_800FFE8 - lsls r0, 24 - ldr r1, [sp, 0x3C] - cmp r0, 0 - beq _0800FCE4 - ldrb r0, [r4] - ldr r7, [sp, 0x14] - cmp r0, r7 - bne _0800FCCE - mov r2, r8 - str r2, [sp, 0x18] -_0800FCCE: - cmp r0, 0 - bne _0800FCE2 - mov r3, r9 - ldr r0, [r3] - ldr r4, _0800FD2C - adds r0, r4 - mov r7, r8 - str r7, [r0] - movs r0, 0x1 - mov r10, r0 -_0800FCE2: - movs r7, 0x1 -_0800FCE4: - adds r5, 0x1 - cmp r5, 0x7 - ble _0800FCB0 - cmp r7, 0 - beq _0800FD30 - movs r5, 0 - movs r4, 0x1 - strb r4, [r6] - adds r3, r6, 0 - adds r3, 0x14 - mov r1, r9 - ldr r0, [r1] - ldr r1, [r0, 0x8] - movs r2, 0x1 - mov r7, r10 - cmp r7, 0 - beq _0800FD08 - movs r2, 0xC -_0800FD08: - movs r0, 0x40 - str r0, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r3, 0 - movs r3, 0 - bl AxResInitFile - b _0800FD32 - .align 2, 0 -_0800FD1C: .4byte gUnknown_203B0E4 -_0800FD20: .4byte 0x00004018 -_0800FD24: .4byte 0x00004014 -_0800FD28: .4byte 0x0000ffff -_0800FD2C: .4byte 0x00004a24 -_0800FD30: - strb r7, [r6] -_0800FD32: - ldr r0, [sp, 0x38] - adds r0, 0x50 - str r0, [sp, 0x38] - movs r1, 0x1 - add r8, r1 - mov r2, r8 - cmp r2, 0x1F - ble _0800FC7C - movs r3, 0 - mov r8, r3 - ldr r4, [sp, 0x18] - lsls r4, 5 - str r4, [sp, 0x34] -_0800FD4C: - mov r7, r8 - lsls r0, r7, 2 - add r0, r8 - lsls r0, 4 - ldr r1, _0800FEDC - adds r0, r1 - ldr r2, _0800FEE0 - ldr r1, [r2] - adds r3, r1, r0 - ldr r4, _0800FEE4 - adds r1, r4 - lsls r2, r7, 5 - ldr r0, [r1] - adds r0, r2 - str r0, [sp, 0x1C] - ldrb r0, [r3] - adds r7, 0x1 - str r7, [sp, 0x28] - cmp r0, 0 - bne _0800FD76 - b _0800FF56 -_0800FD76: - movs r5, 0 - adds r3, 0x2 - mov r10, r3 - ldr r4, [sp, 0x1C] - adds r4, 0x10 - ldr r6, _0800FEE0 -_0800FD82: - lsls r0, r5, 1 - mov r1, r10 - adds r2, r1, r0 - ldr r1, _0800FEE8 - strh r1, [r2] - adds r1, r4, r0 - ldrh r3, [r1] - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0 - blt _0800FDB0 - adds r1, r0, 0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r1, _0800FEDC - adds r0, r1 - ldr r1, [r6] - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0800FDB0 - strh r3, [r2] -_0800FDB0: - adds r5, 0x1 - cmp r5, 0x7 - ble _0800FD82 - ldr r3, _0800FEE0 - ldr r2, [r3] - ldr r4, _0800FEEC - adds r0, r2, r4 - ldr r1, [r0] - ldr r7, _0800FEF0 - adds r0, r2, r7 - ldr r3, [r0] - cmp r1, 0 - blt _0800FDEC - cmp r3, 0 - blt _0800FDEC - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 4 - ldr r4, _0800FEDC - adds r0, r4 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FDEC - adds r1, 0x4 - movs r0, 0x7 - ands r1, r0 - lsls r0, r1, 1 - add r0, r10 - strh r3, [r0] -_0800FDEC: - movs r5, 0 -_0800FDEE: - movs r7, 0x1 - negs r7, r7 - str r7, [sp, 0x20] - ldr r0, _0800FEF4 - str r0, [sp, 0x24] - lsls r0, r5, 1 - mov r2, r10 - adds r1, r2, r0 - movs r3, 0 - ldrsh r1, [r1, r3] - str r0, [sp, 0x30] - adds r4, r5, 0x1 - str r4, [sp, 0x2C] - cmp r1, 0 - blt _0800FE0E - b _0800FF4E -_0800FE0E: - movs r6, 0 -_0800FE10: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 4 - ldr r7, _0800FEDC - adds r0, r7 - ldr r2, _0800FEE0 - ldr r1, [r2] - adds r3, r1, r0 - ldr r4, _0800FEE4 - adds r1, r4 - lsls r2, r6, 5 - ldr r0, [r1] - adds r2, r0, r2 - adds r7, r6, 0x1 - mov r9, r7 - cmp r6, r8 - bne _0800FE34 - b _0800FF3A -_0800FE34: - ldrb r0, [r3] - cmp r0, 0 - bne _0800FE3C - b _0800FF3A -_0800FE3C: - movs r1, 0x4 - ldrsh r0, [r2, r1] - ldr r3, [sp, 0x1C] - movs r4, 0x4 - ldrsh r1, [r3, r4] - subs r0, r1 - lsls r0, 8 - str r0, [sp, 0xC] - movs r7, 0x6 - ldrsh r0, [r2, r7] - movs r2, 0x6 - ldrsh r1, [r3, r2] - subs r0, r1 - lsls r0, 8 - str r0, [sp, 0x10] - add r0, sp, 0xC - bl Atan2_4096 - adds r2, r0, 0 - ldr r0, [sp, 0xC] - cmp r0, 0 - bge _0800FE6A - adds r0, 0x3 -_0800FE6A: - asrs r1, r0, 2 - str r1, [sp, 0xC] - ldr r0, [sp, 0x10] - cmp r0, 0 - bge _0800FE76 - adds r0, 0x3 -_0800FE76: - asrs r0, 2 - str r0, [sp, 0x10] - cmp r1, 0 - bge _0800FE80 - adds r1, 0xFF -_0800FE80: - asrs r1, 8 - str r1, [sp, 0xC] - cmp r0, 0 - bge _0800FE8A - adds r0, 0xFF -_0800FE8A: - asrs r0, 8 - str r0, [sp, 0x10] - cmp r1, 0 - bne _0800FE96 - movs r0, 0x1 - str r0, [sp, 0xC] -_0800FE96: - ldr r0, [sp, 0x10] - cmp r0, 0 - bne _0800FEA0 - movs r0, 0x1 - str r0, [sp, 0x10] -_0800FEA0: - movs r7, 0 - cmp r5, 0x2 - bne _0800FF04 - ldr r1, _0800FEF8 - ldr r4, _0800FEFC - movs r3, 0x8 - cmp r2, r1 - ble _0800FEB8 - ldr r0, _0800FF00 -_0800FEB2: - adds r2, r0 - cmp r2, r1 - bgt _0800FEB2 -_0800FEB8: - cmp r2, 0 - bge _0800FEC6 - movs r0, 0x80 - lsls r0, 5 -_0800FEC0: - adds r2, r0 - cmp r2, 0 - blt _0800FEC0 -_0800FEC6: - adds r1, r3, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, r2 - blt _0800FF20 - movs r4, 0x2 - ldrsh r0, [r1, r4] - cmp r0, r2 - ble _0800FF1C - b _0800FF20 - .align 2, 0 -_0800FEDC: .4byte 0x00004018 -_0800FEE0: .4byte gUnknown_203B0E4 -_0800FEE4: .4byte 0x00004014 -_0800FEE8: .4byte 0x0000ffff -_0800FEEC: .4byte 0x00004a28 -_0800FEF0: .4byte 0x00004a1c -_0800FEF4: .4byte 0x000f423f -_0800FEF8: .4byte 0x00000fff -_0800FEFC: .4byte gUnknown_80D3EBC -_0800FF00: .4byte 0xfffff000 -_0800FF04: - ldr r0, _0800FFC8 - lsls r1, r5, 2 - adds r1, r0 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, r2 - bgt _0800FF1C - movs r4, 0x2 - ldrsh r0, [r1, r4] - cmp r0, r2 - ble _0800FF1C - movs r7, 0x1 -_0800FF1C: - cmp r7, 0 - beq _0800FF3A -_0800FF20: - ldr r0, [sp, 0xC] - adds r1, r0, 0 - muls r1, r0 - ldr r0, [sp, 0x10] - adds r7, r0, 0 - muls r7, r0 - adds r0, r7, 0 - adds r1, r0 - ldr r0, [sp, 0x24] - cmp r0, r1 - ble _0800FF3A - str r1, [sp, 0x24] - str r6, [sp, 0x20] -_0800FF3A: - mov r6, r9 - cmp r6, 0x1F - bgt _0800FF42 - b _0800FE10 -_0800FF42: - ldr r1, [sp, 0x20] - cmp r1, 0 - blt _0800FF4E - ldr r0, [sp, 0x30] - add r0, r10 - strh r1, [r0] -_0800FF4E: - ldr r5, [sp, 0x2C] - cmp r5, 0x7 - bgt _0800FF56 - b _0800FDEE -_0800FF56: - ldr r3, [sp, 0x28] - mov r8, r3 - cmp r3, 0x1F - bgt _0800FF60 - b _0800FD4C -_0800FF60: - ldr r4, _0800FFCC - ldr r1, [r4] - ldr r7, _0800FFD0 - adds r0, r1, r7 - ldr r1, [r1, 0xC] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl AxResInitFile - ldr r2, [r4] - ldr r1, _0800FFD4 - adds r0, r2, r1 - ldr r3, [sp, 0x18] - str r3, [r0] - ldr r4, _0800FFD8 - adds r1, r2, r4 - ldr r7, _0800FFDC - adds r0, r2, r7 - ldr r0, [r0] - ldr r3, [sp, 0x34] - adds r0, r3, r0 - ldr r0, [r0, 0x4] - str r0, [r1] - ldrh r0, [r1] - subs r0, 0x78 - subs r4, 0x4 - adds r1, r2, r4 - strh r0, [r1] - ldr r7, _0800FFE0 - adds r0, r2, r7 - ldrh r0, [r0] - subs r0, 0x50 - ldr r1, _0800FFE4 - adds r2, r1 - strh r0, [r2] - bl sub_8011240 - bl sub_80110B0 - add sp, 0x40 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800FFC8: .4byte gUnknown_80D3EBC -_0800FFCC: .4byte gUnknown_203B0E4 -_0800FFD0: .4byte 0x00004c10 -_0800FFD4: .4byte 0x00004a18 -_0800FFD8: .4byte 0x00004dd8 -_0800FFDC: .4byte 0x00004014 -_0800FFE0: .4byte 0x00004dda -_0800FFE4: .4byte 0x00004dd6 - thumb_func_end sub_800FC5C - - thumb_func_start sub_800FFE8 -sub_800FFE8: - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x39 - bhi _08010004 - cmp r0, 0 - beq _0801000C - ldr r0, _08010008 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0801000C -_08010004: - movs r0, 0 - b _0801000E - .align 2, 0 -_08010008: .4byte gFriendAreas -_0801000C: - movs r0, 0x1 -_0801000E: - pop {r1} - bx r1 - thumb_func_end sub_800FFE8 - - thumb_func_start sub_8010014 -sub_8010014: - push {r4,r5,lr} - sub sp, 0x20 - ldr r1, _08010094 - mov r0, sp - movs r2, 0x10 - bl memcpy - add r4, sp, 0x10 - ldr r1, _08010098 - adds r0, r4, 0 - movs r2, 0x10 - bl memcpy - movs r2, 0 - ldr r0, _0801009C - ldrh r3, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r3 - mov r5, sp - cmp r0, 0 - beq _08010042 - adds r5, r4, 0 -_08010042: - adds r1, r3, 0 - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0801004E - movs r2, 0x1 -_0801004E: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801005A - movs r0, 0x2 - orrs r2, r0 -_0801005A: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08010066 - movs r0, 0x4 - orrs r2, r0 -_08010066: - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _08010072 - movs r0, 0x8 - orrs r2, r0 -_08010072: - ldr r3, _080100A0 - adds r2, r5, r2 - ldrb r1, [r2] - ldrb r0, [r3] - cmp r0, r1 - bne _080100A8 - ldr r1, _080100A4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bls _080100B0 - ldrb r0, [r2] - b _080100B2 - .align 2, 0 -_08010094: .4byte gUnknown_80D3EDC -_08010098: .4byte gUnknown_80D3EEC -_0801009C: .4byte gRealInputs -_080100A0: .4byte gUnknown_202DE18 -_080100A4: .4byte gUnknown_202DE19 -_080100A8: - strb r1, [r3] - ldr r1, _080100BC - movs r0, 0 - strb r0, [r1] -_080100B0: - movs r0, 0xFF -_080100B2: - add sp, 0x20 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080100BC: .4byte gUnknown_202DE19 - thumb_func_end sub_8010014 - - thumb_func_start sub_80100C0 -sub_80100C0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - str r0, [sp, 0xC] - mov r8, r2 - ldr r4, _080101E0 - ldr r2, [r4] - ldr r3, _080101E4 - adds r0, r2, r3 - ldr r2, [r2, 0xC] - movs r3, 0x7 - ands r3, r1 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r1, 0x1 - str r1, [sp, 0x8] - adds r1, r2, 0 - movs r2, 0 - bl AxResInitFile - bl sub_8011168 - ldr r0, [r4] - ldr r2, _080101E8 - adds r1, r0, r2 - ldr r1, [r1] - ldr r3, _080101EC - adds r0, r3 - ldr r2, [r0] - lsls r1, 5 - adds r1, r2 - ldr r1, [r1, 0x4] - mov r9, r1 - ldr r1, [sp, 0xC] - lsls r0, r1, 5 - adds r0, r2 - ldr r0, [r0, 0x4] - str r0, [sp, 0x10] - bl PlayCursorUpDownSoundEffect - movs r7, 0 - cmp r7, r8 - bge _0801018A - ldr r2, [sp, 0x10] - lsls r1, r2, 16 - asrs r1, 16 - mov r3, r9 - lsls r0, r3, 16 - asrs r0, 16 - subs r1, r0 - str r1, [sp, 0x14] - movs r0, 0 - mov r10, r0 -_08010132: - ldr r0, _080101E0 - ldr r6, [r0] - lsls r5, r7, 8 - mov r0, r10 - mov r1, r8 - bl __divsi3 - cmp r0, 0 - bge _08010146 - adds r0, 0xFF -_08010146: - asrs r0, 8 - add r0, r9 - ldr r2, _080101F0 - adds r1, r6, r2 - strh r0, [r1] - ldr r3, [sp, 0x10] - asrs r0, r3, 16 - mov r1, r9 - asrs r4, r1, 16 - subs r0, r4 - muls r0, r5 - mov r1, r8 - bl __divsi3 - cmp r0, 0 - bge _08010168 - adds r0, 0xFF -_08010168: - asrs r0, 8 - adds r0, r4 - ldr r2, _080101F4 - adds r1, r6, r2 - strh r0, [r1] - bl sub_8011240 - bl sub_80110B0 - bl sub_801169C - ldr r3, [sp, 0x14] - lsls r0, r3, 8 - add r10, r0 - adds r7, 0x1 - cmp r7, r8 - blt _08010132 -_0801018A: - ldr r4, _080101E0 - ldr r0, [r4] - ldr r2, _080101E8 - adds r1, r0, r2 - ldr r3, [sp, 0xC] - str r3, [r1] - ldr r1, _080101F0 - adds r2, r0, r1 - ldr r3, _080101EC - adds r0, r3 - ldr r1, [r0] - ldr r3, [sp, 0xC] - lsls r0, r3, 5 - adds r0, r1 - ldr r0, [r0, 0x4] - str r0, [r2] - bl sub_8011240 - bl sub_80110B0 - bl sub_801169C - ldr r1, [r4] - ldr r2, _080101E4 - adds r0, r1, r2 - ldr r1, [r1, 0xC] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl AxResInitFile - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080101E0: .4byte gUnknown_203B0E4 -_080101E4: .4byte 0x00004c10 -_080101E8: .4byte 0x00004a18 -_080101EC: .4byte 0x00004014 -_080101F0: .4byte 0x00004dd8 -_080101F4: .4byte 0x00004dda - thumb_func_end sub_80100C0 - - thumb_func_start sub_80101F8 -sub_80101F8: - push {lr} - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - bne _08010218 - ldr r0, _08010214 - adds r2, r3, 0 - adds r2, 0x50 - adds r1, r3, 0 - movs r3, 0 - bl FormatString - b _08010220 - .align 2, 0 -_08010214: .4byte gUnknown_80D3EFC -_08010218: - adds r0, r3, 0 - movs r2, 0 - bl WriteFriendAreaName -_08010220: - pop {r0} - bx r0 - thumb_func_end sub_80101F8 - - thumb_func_start sub_8010224 -sub_8010224: - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r0, _08010248 - adds r4, r0, 0x4 - adds r5, r0, 0 - adds r5, 0x8 -_08010234: - movs r2, 0 - adds r3, r5, 0 -_08010238: - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, r6 - bne _0801024C - ldrh r0, [r4] - strh r0, [r1] - ldrh r0, [r4, 0x2] - b _08010260 - .align 2, 0 -_08010248: .4byte gFriendAreaLocations -_0801024C: - adds r2, 0x1 - cmp r2, 0x7 - ble _08010238 - adds r4, 0x20 - adds r5, 0x20 - adds r7, 0x1 - cmp r7, 0x1F - ble _08010234 - movs r0, 0 - strh r0, [r1] -_08010260: - strh r0, [r1, 0x2] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8010224 - - thumb_func_start sub_8010268 -sub_8010268: - push {r4-r6,lr} - ldr r4, _080102D4 - add sp, r4 - adds r5, r0, 0 - ldr r1, _080102D8 - adds r0, 0xB0 - ldr r0, [r0] - str r0, [r1] - ldr r1, _080102DC - ldr r2, _080102E0 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x14 - bl sub_80095CC - movs r0, 0x2 - bl UpdateFadeInTile - bl sub_801059C - adds r0, r5, 0x4 - bl sub_8010494 - bl sub_801178C - movs r4, 0x3B -_0801029E: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _0801029E - ldrb r0, [r5, 0x4] - ldrb r1, [r5, 0x8] - bl sub_8010344 - adds r0, r5, 0 - adds r0, 0x8 - bl sub_8010B74 - adds r6, r5, 0 - adds r6, 0x70 - movs r4, 0x3B -_080102BE: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _080102BE - ldrb r0, [r5, 0x14] - cmp r0, 0 - beq _080102E4 - movs r0, 0x20 - ldrsh r1, [r5, r0] - b _080102E6 - .align 2, 0 -_080102D4: .4byte 0xfffffc14 -_080102D8: .4byte gUnknown_203B0E8 -_080102DC: .4byte gUnknown_2026E4E -_080102E0: .4byte 0x00000a06 -_080102E4: - movs r1, 0 -_080102E6: - ldrb r0, [r5, 0x8] - ldrb r3, [r6] - movs r4, 0 - str r4, [sp] - add r2, sp, 0x4 - bl sub_809034C - cmp r0, 0 - beq _0801031C - cmp r0, 0x1 - bne _0801030A - add r0, sp, 0x4 - bl sub_8010C10 - adds r0, r5, 0 - adds r0, 0xB4 - strb r4, [r0] - b _0801032C -_0801030A: - cmp r0, 0x2 - bne _0801032C - add r0, sp, 0x4 - bl sub_8010C58 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08010326 -_0801031C: - adds r1, r5, 0 - adds r1, 0xB4 - movs r0, 0x1 - strb r0, [r1] - b _0801032C -_08010326: - adds r0, r5, 0 - adds r0, 0xB4 - strb r1, [r0] -_0801032C: - bl sub_801091C - bl sub_801073C - bl nullsub_16 - movs r3, 0xFB - lsls r3, 2 - add sp, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8010268 - - thumb_func_start sub_8010344 -sub_8010344: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsls r1, 24 - ldr r2, _08010470 - lsrs r0, 22 - adds r0, r2 - lsrs r1, 22 - adds r1, r2 - ldr r2, [r1] - str r2, [sp, 0x14] - movs r3, 0 - ldrsh r5, [r1, r3] - ldr r1, [r0] - mov r9, r1 - movs r2, 0 - ldrsh r6, [r0, r2] - subs r2, r5, r6 - cmp r2, 0 - bge _08010376 - negs r2, r2 -_08010376: - ldr r3, [sp, 0x14] - asrs r0, r3, 16 - mov r3, r9 - asrs r1, r3, 16 - subs r4, r0, r1 - adds r3, r4, 0 - str r0, [sp, 0x18] - mov r8, r1 - cmp r4, 0 - bge _0801038C - negs r4, r4 -_0801038C: - cmp r4, r2 - bge _08010392 - adds r4, r2, 0 -_08010392: - lsrs r0, r4, 31 - adds r0, r4, r0 - asrs r4, r0, 1 - subs r0, r6, r5 - str r0, [sp, 0xC] - str r3, [sp, 0x10] - add r0, sp, 0xC - bl Atan2_4096 - ldr r1, _08010474 - adds r3, r0, r1 - cmp r3, 0 - bge _080103B0 - ldr r2, _08010478 - adds r3, r0, r2 -_080103B0: - asrs r3, 9 - movs r0, 0x7 - ands r3, r0 - ldr r0, _0801047C - ldr r1, [r0] - ldr r2, _08010480 - adds r0, r1, r2 - ldr r2, _08010484 - adds r1, r2 - ldr r1, [r1] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - bl AxResInitFile - movs r7, 0 - cmp r7, r4 - bge _08010448 - mov r10, r5 -_080103DC: - ldr r0, _0801047C - ldr r6, [r0] - mov r3, r9 - lsls r0, r3, 16 - asrs r0, 16 - mov r1, r10 - subs r0, r1, r0 - lsls r5, r7, 8 - muls r0, r5 - adds r1, r4, 0 - bl __divsi3 - cmp r0, 0 - bge _080103FA - adds r0, 0xFF -_080103FA: - asrs r0, 8 - add r0, r9 - ldr r2, _08010488 - adds r1, r6, r2 - strh r0, [r1] - ldr r3, [sp, 0x18] - mov r1, r8 - subs r0, r3, r1 - muls r0, r5 - adds r1, r4, 0 - bl __divsi3 - cmp r0, 0 - bge _08010418 - adds r0, 0xFF -_08010418: - asrs r0, 8 - add r0, r8 - ldr r2, _0801048C - adds r1, r6, r2 - strh r0, [r1] - bl sub_8010798 - bl sub_8010858 - bl sub_8010960 - ldr r0, _08010490 - ldrh r1, [r0, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08010448 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08010448 - adds r7, 0x1 - cmp r7, r4 - blt _080103DC -_08010448: - ldr r0, _0801047C - ldr r0, [r0] - ldr r3, _08010488 - adds r0, r3 - ldr r1, [sp, 0x14] - str r1, [r0] - bl sub_8010798 - bl sub_8010858 - bl sub_8010960 - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010470: .4byte gDungeonCoordinates -_08010474: .4byte 0xfffffc00 -_08010478: .4byte 0xfffffdff -_0801047C: .4byte gUnknown_203B0E8 -_08010480: .4byte 0x00005114 -_08010484: .4byte 0x0000110c -_08010488: .4byte 0x000052dc -_0801048C: .4byte 0x000052de -_08010490: .4byte gRealInputs - thumb_func_end sub_8010344 - - thumb_func_start sub_8010494 -sub_8010494: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r9, r0 - movs r5, 0 - ldr r0, _080104C0 - mov r10, r0 - mov r8, r5 -_080104AA: - mov r1, r10 - ldr r0, [r1] - mov r3, r8 - adds r4, r0, r3 - cmp r5, 0x3E - bgt _080104C4 - mov r0, r9 - adds r0, 0x6D - adds r0, r5 - ldrb r0, [r0] - b _080104C6 - .align 2, 0 -_080104C0: .4byte gUnknown_203B0E8 -_080104C4: - movs r0, 0x1 -_080104C6: - cmp r0, 0 - beq _0801050C - movs r7, 0 - movs r6, 0x1 - strb r6, [r4] - adds r3, r4, 0 - adds r3, 0x8 - mov r1, r10 - ldr r0, [r1] - ldr r1, _08010504 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x1 - cmp r5, 0x3F - bne _080104E6 - movs r2, 0xC -_080104E6: - movs r0, 0x40 - str r0, [sp] - str r7, [sp, 0x4] - str r6, [sp, 0x8] - adds r0, r3, 0 - movs r3, 0 - bl AxResInitFile - ldr r1, _08010508 - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4, 0x4] - b _0801050E - .align 2, 0 -_08010504: .4byte 0x00001108 -_08010508: .4byte gDungeonCoordinates -_0801050C: - strb r0, [r4] -_0801050E: - movs r3, 0x44 - add r8, r3 - adds r5, 0x1 - cmp r5, 0x3F - ble _080104AA - movs r2, 0 - ldr r4, _0801057C - ldr r1, [r4] - ldr r3, _08010580 - adds r0, r1, r3 - ldr r3, _08010584 - adds r1, r3 - ldr r1, [r1] - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl AxResInitFile - ldr r2, [r4] - ldr r4, _08010588 - adds r3, r2, r4 - ldr r1, _0801058C - mov r4, r9 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r3] - ldrh r0, [r3] - subs r0, 0x78 - ldr r3, _08010590 - adds r1, r2, r3 - strh r0, [r1] - ldr r4, _08010594 - adds r0, r2, r4 - ldrh r0, [r0] - subs r0, 0x50 - ldr r1, _08010598 - adds r2, r1 - strh r0, [r2] - bl sub_8010798 - bl sub_8010858 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801057C: .4byte gUnknown_203B0E8 -_08010580: .4byte 0x00005114 -_08010584: .4byte 0x0000110c -_08010588: .4byte 0x000052dc -_0801058C: .4byte gDungeonCoordinates -_08010590: .4byte 0x000052d8 -_08010594: .4byte 0x000052de -_08010598: .4byte 0x000052da - thumb_func_end sub_8010494 - - thumb_func_start sub_801059C -sub_801059C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - bl GetPlayerPokemonStruct - adds r7, r0, 0 - ldr r6, _080106E4 - ldr r0, [r6] - ldr r5, _080106E8 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - str r0, [sp, 0xC] - ldr r0, [r6, 0x4] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - str r0, [sp, 0x10] - ldr r1, _080106EC - movs r0, 0x8 - ldrsh r2, [r7, r0] - mov r0, sp - bl sprintf - ldr r1, _080106F0 - mov r8, r1 - mov r0, sp - bl OpenFileAndGetFileDataPtr - ldr r4, _080106F4 - ldr r1, [r4] - ldr r2, _080106F8 - adds r1, r2 - str r0, [r1] - ldr r0, _080106FC - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r3, _08010700 - mov r9, r3 - add r1, r9 - str r0, [r1] - ldr r0, [r6, 0x8] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r2, _08010704 - mov r10, r2 - add r1, r10 - str r0, [r1] - ldr r0, _08010708 - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r3, _0801070C - adds r1, r3 - str r0, [r1] - ldr r0, [r6, 0xC] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - movs r2, 0x88 - lsls r2, 5 - adds r1, r2 - str r0, [r1] - movs r3, 0x8 - ldrsh r0, [r7, r3] - movs r1, 0 - bl GetPokemonOverworldPalette - ldr r1, [r4] - ldr r3, _08010710 - adds r2, r1, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [r2] - add r1, r9 - ldr r0, [r1] - movs r1, 0x40 - movs r2, 0x1F - movs r3, 0 - bl sub_8005610 - ldr r0, _08010714 - movs r1, 0 - ldr r2, [sp, 0xC] - bl DecompressATGlobalFile - ldr r1, [r4] - ldr r2, _08010718 - adds r0, r1, r2 - add r1, r10 - ldr r1, [r1] - movs r2, 0x10 - bl sub_8004AA4 - movs r1, 0x80 - lsls r1, 7 - ldr r0, [r4] - ldr r3, _0801071C - adds r0, r3 - ldr r2, [sp, 0x10] - bl DecompressATFile - ldr r1, [r4] - ldr r2, _08010720 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - ldr r3, _08010724 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _08010728 - adds r1, r0 - strh r2, [r1] - movs r3, 0 - ldr r1, _0801072C - mov r9, r1 - mov r8, r4 - ldr r7, _08010730 - ldr r2, _08010734 - adds r4, r2, 0 - ldr r6, _08010738 - movs r5, 0 -_080106A2: - mov r0, r8 - ldr r2, [r0] - lsls r0, r3, 1 - adds r1, r2, r7 - adds r1, r0 - ldrh r0, [r1] - orrs r0, r4 - strh r0, [r1] - adds r2, r6 - adds r2, r3 - strb r5, [r2] - adds r3, 0x1 - cmp r3, r9 - ble _080106A2 - ldr r0, [sp, 0xC] - bl CloseFile - ldr r0, [sp, 0x10] - bl CloseFile - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080106E4: .4byte gUnknown_80D4014 -_080106E8: .4byte gTitleMenuFileArchive -_080106EC: .4byte gUnknown_80D405C -_080106F0: .4byte gMonsterFileArchive -_080106F4: .4byte gUnknown_203B0E8 -_080106F8: .4byte 0x0000110c -_080106FC: .4byte gUnknown_80D4064 -_08010700: .4byte 0x00001108 -_08010704: .4byte 0x00001110 -_08010708: .4byte gUnknown_80D406C -_0801070C: .4byte 0x00001104 -_08010710: .4byte 0x000052d4 -_08010714: .4byte 0x06008000 -_08010718: .4byte 0x00005150 -_0801071C: .4byte 0x00001114 -_08010720: .4byte 0x000052d0 -_08010724: .4byte 0x000052d8 -_08010728: .4byte 0x000052da -_0801072C: .4byte 0x000005db -_08010730: .4byte 0x000052e0 -_08010734: .4byte 0x0000ffff -_08010738: .4byte 0x00005e98 - thumb_func_end sub_801059C - - thumb_func_start sub_801073C -sub_801073C: - push {r4,lr} - ldr r4, _08010784 - ldr r0, [r4] - ldr r1, _08010788 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _0801078C - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _08010790 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - movs r1, 0x88 - lsls r1, 5 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _08010794 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010784: .4byte gUnknown_203B0E8 -_08010788: .4byte 0x00001110 -_0801078C: .4byte 0x0000110c -_08010790: .4byte 0x00001108 -_08010794: .4byte 0x00001104 - thumb_func_end sub_801073C - - thumb_func_start sub_8010798 -sub_8010798: - push {r4-r6,lr} - ldr r2, _080107BC - ldr r0, [r2] - ldr r1, _080107C0 - adds r3, r0, r1 - movs r4, 0 - ldrsh r1, [r3, r4] - ldr r5, _080107C4 - adds r4, r0, r5 - movs r6, 0 - ldrsh r0, [r4, r6] - subs r1, r0 - adds r5, r2, 0 - cmp r1, 0x2F - bgt _080107C8 - ldrh r0, [r3] - subs r0, 0x30 - b _080107D0 - .align 2, 0 -_080107BC: .4byte gUnknown_203B0E8 -_080107C0: .4byte 0x000052dc -_080107C4: .4byte 0x000052d8 -_080107C8: - cmp r1, 0xC0 - ble _080107D2 - ldrh r0, [r3] - subs r0, 0xC0 -_080107D0: - strh r0, [r4] -_080107D2: - ldr r0, [r5] - ldr r1, _080107F0 - adds r3, r0, r1 - movs r2, 0 - ldrsh r1, [r3, r2] - ldr r4, _080107F4 - adds r2, r0, r4 - movs r6, 0 - ldrsh r0, [r2, r6] - subs r1, r0 - cmp r1, 0x2F - bgt _080107F8 - ldrh r0, [r3] - subs r0, 0x30 - b _08010800 - .align 2, 0 -_080107F0: .4byte 0x000052de -_080107F4: .4byte 0x000052da -_080107F8: - cmp r1, 0x70 - ble _08010802 - ldrh r0, [r3] - subs r0, 0x70 -_08010800: - strh r0, [r2] -_08010802: - adds r3, r5, 0 - ldr r0, [r3] - ldr r4, _08010850 - adds r1, r0, r4 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bge _08010816 - movs r0, 0 - strh r0, [r1] -_08010816: - ldr r0, [r3] - ldr r2, _08010854 - adds r1, r0, r2 - movs r6, 0 - ldrsh r0, [r1, r6] - cmp r0, 0 - bge _08010828 - movs r0, 0 - strh r0, [r1] -_08010828: - ldr r0, [r3] - adds r1, r0, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xEF - ble _08010838 - movs r0, 0xF0 - strh r0, [r1] -_08010838: - ldr r0, [r5] - adds r2, r0, r2 - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0x9F - ble _08010848 - movs r0, 0xA0 - strh r0, [r2] -_08010848: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08010850: .4byte 0x000052d8 -_08010854: .4byte 0x000052da - thumb_func_end sub_8010798 - - thumb_func_start sub_8010858 -sub_8010858: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080108FC - ldr r1, [r0] - ldr r2, _08010900 - adds r1, r2 - ldrh r1, [r1] - lsls r1, 16 - asrs r6, r1, 19 - adds r2, r6, 0 - movs r3, 0 - mov r10, r0 - movs r0, 0x1F - mov r9, r0 -_0801087C: - mov r1, r10 - ldr r0, [r1] - ldr r1, _08010904 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r4, r0, 19 - lsls r1, r2, 7 - adds r2, 0x1 - mov r12, r2 - adds r3, 0x1 - mov r8, r3 - movs r7, 0x1E - lsls r0, r4, 1 - adds r5, r0, r1 -_0801089A: - mov r2, r9 - ands r4, r2 - ands r6, r2 - lsls r2, r4, 1 - lsls r0, r6, 6 - adds r2, r0 - ldr r3, _08010908 - adds r3, r2, r3 - str r3, [sp] - mov r0, r10 - ldr r1, [r0] - ldr r3, _0801090C - adds r0, r1, r3 - adds r0, r5 - ldrh r0, [r0] - ldr r3, [sp] - strh r0, [r3] - ldr r0, _08010910 - adds r2, r0 - ldr r3, _08010914 - adds r1, r3 - adds r1, r5 - ldrh r0, [r1] - strh r0, [r2] - adds r5, 0x2 - adds r4, 0x1 - subs r7, 0x1 - cmp r7, 0 - bge _0801089A - mov r2, r12 - adds r6, 0x1 - mov r3, r8 - cmp r3, 0x14 - ble _0801087C - movs r0, 0x2 - bl sub_80098F8 - movs r0, 0x3 - bl sub_80098F8 - 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 -_080108FC: .4byte gUnknown_203B0E8 -_08010900: .4byte 0x000052da -_08010904: .4byte 0x000052d8 -_08010908: .4byte gUnknown_202B038 + 0x1000 -_0801090C: .4byte 0x00003114 -_08010910: .4byte gUnknown_202B038 + 0x1800 -_08010914: .4byte 0x00001114 - thumb_func_end sub_8010858 - - thumb_func_start nullsub_24 -nullsub_24: - bx lr - thumb_func_end nullsub_24 - - thumb_func_start sub_801091C -sub_801091C: - push {r4,r5,lr} - bl sub_8010950 - bl sub_80117C4 - ldr r5, _08010948 - movs r4, 0x3B -_0801092A: - ldr r1, [r5] - ldr r0, _0801094C - adds r1, r0 - ldr r0, [r1] - subs r0, 0x2 - str r0, [r1] - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _0801092A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08010948: .4byte gUnknown_203B0E8 -_0801094C: .4byte 0x000052d0 - thumb_func_end sub_801091C - - thumb_func_start sub_8010950 -sub_8010950: - push {lr} - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - pop {r0} - bx r0 - thumb_func_end sub_8010950 - - thumb_func_start sub_8010960 -sub_8010960: - push {r4-r6,lr} - ldr r6, _080109EC - ldr r1, [r6] - ldr r4, _080109F0 - adds r0, r1, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - ldr r5, _080109F4 - adds r1, r5 - movs r2, 0 - ldrsh r1, [r1, r2] - bl SetBG2RegOffsets - ldr r1, [r6] - adds r4, r1, r4 - movs r2, 0 - ldrsh r0, [r4, r2] - adds r1, r5 - movs r2, 0 - ldrsh r1, [r1, r2] - bl SetBG3RegOffsets - movs r0, 0x1 - bl sub_8010A88 - bl sub_8010A00 - movs r0, 0 - movs r1, 0 - bl sub_8005838 - ldr r0, _080109F8 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - bl nullsub_8 - bl sub_8005180 - bl sub_80060EC - ldr r0, _080109FC - ldr r0, [r0] - bl IncrementPlayTime - bl sub_800CB20 - bl LoadBufferedInputs - bl CopySpritesToOam - bl sub_8005304 - bl TransferBGPaletteBuffer - bl xxx_call_update_bg_vram - bl nullsub_24 - bl sub_8009908 - bl xxx_call_update_bg_sound_input - bl sub_8011860 - movs r0, 0 - bl ResetSprites - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080109EC: .4byte gUnknown_203B0E8 -_080109F0: .4byte 0x000052d8 -_080109F4: .4byte 0x000052da -_080109F8: .4byte gGameOptionsRef -_080109FC: .4byte gPlayTimeRef - thumb_func_end sub_8010960 - - thumb_func_start sub_8010A00 -sub_8010A00: - push {r4-r6,lr} - movs r3, 0 - ldr r6, _08010A7C - ldr r0, [r6] - ldr r2, _08010A80 - adds r1, r0, r2 - ldr r2, [r1] - cmp r2, 0x1E - bgt _08010A74 - movs r3, 0x88 - lsls r3, 5 - adds r0, r3 - ldr r0, [r0] - ldr r5, [r0, 0x4] - adds r0, r2, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _08010A28 - movs r0, 0x1F - str r0, [r1] -_08010A28: - movs r4, 0 -_08010A2A: - ldr r0, [r6] - ldr r1, _08010A80 - adds r0, r1 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xDF - ble _08010A2A - ldr r0, _08010A7C - ldr r0, [r0] - ldr r2, _08010A84 - adds r0, r2 - ldr r0, [r0] - ldr r5, [r0, 0x4] - movs r4, 0 -_08010A52: - movs r3, 0x80 - lsls r3, 1 - adds r0, r4, r3 - ldr r1, _08010A7C - ldr r1, [r1] - ldr r2, _08010A80 - adds r1, r2 - ldr r2, [r1] - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xEF - ble _08010A52 - movs r3, 0x1 -_08010A74: - adds r0, r3, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08010A7C: .4byte gUnknown_203B0E8 -_08010A80: .4byte 0x000052d0 -_08010A84: .4byte 0x00001104 - thumb_func_end sub_8010A00 - - - .align 2,0 diff --git a/include/code_8004AA0.h b/include/code_8004AA0.h index edd9f9901..7195b948f 100644 --- a/include/code_8004AA0.h +++ b/include/code_8004AA0.h @@ -21,17 +21,12 @@ typedef struct unkStruct_202EE8C extern unkStruct_202EE8C gUnknown_202EE8C[32]; -struct UnkStruct_4014Ptr +struct FiendArea { - s32 unk0; + const u8 *name; DungeonPos unk4; u8 unk8[8]; - u8 fill8[0x20-0x10]; -}; - -struct UnkStruct_4014Ptr2 -{ - struct UnkStruct_4014Ptr array[0]; + s16 unk10[8]; }; struct UnkStruct_4018 @@ -47,10 +42,13 @@ struct UnkBgStruct OpenedFile *unk0[5]; u16 unk14[64][64]; u16 unk2014[64][64]; - struct UnkStruct_4014Ptr2 *unk4014; + const struct FiendArea *unk4014; struct UnkStruct_4018 unk4018[32]; s32 unk4A18; - u8 pad4A1C[0x4A2c-0x4A1C]; + s32 unk4A1C; + s32 unk4A20; + s32 unk4A24; + s32 unk4A28; u8 unk4A2C; axdata unk4A30[8]; axdata unk4C10; @@ -58,13 +56,13 @@ struct UnkBgStruct s32 unk4DCC; u32 unk4DD0; DungeonPos unk4DD4; - s16 unk4DD8; - s16 unk4DDA; + DungeonPos unk4DD8; s32 unk4DDC; s32 unk4DE0; s32 unk4DE4; s32 unk4DE8; - u8 unk4DEC[12]; + u8 unk4DEC[8]; + u8 unk4DF4; s32 unk4DF8; MenuInputStruct unk4DFC; }; diff --git a/ld_script.txt b/ld_script.txt index 6c573d9d0..9540f7c96 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -89,7 +89,6 @@ SECTIONS { asm/code_800ED38.o(.text); src/code_800F034.o(.text); src/code_800F958.o(.text); - asm/code_800F990.o(.text); src/code_8010F28.o(.text); src/code_80118A4.o(.text); src/debug.o(.text); diff --git a/src/code_8010F28.c b/src/code_8010F28.c index d7f2ed3e5..3a57ef1de 100644 --- a/src/code_8010F28.c +++ b/src/code_8010F28.c @@ -17,14 +17,19 @@ #include "pokemon.h" #include "decompress.h" +extern u32 sub_809034C(u8 dungeonIndex, s32 speciesId_, u8 *buffer, bool32 param_4_, bool32 param_5_); +extern void sub_801178C(void); +extern void sub_80117C4(void); +extern void PlayCancelSoundEffect(void); extern void PlayAcceptSoundEffect(void); extern void PlayCursorUpDownSoundEffect(void); extern s32 sprintf(char *, const char *, ...); extern void sub_800CB20(void); extern void xxx_call_update_bg_sound_input(void); -extern bool8 sub_800FFE8(u8); -extern void sub_80101F8(u8 *, u8); extern void CopyDungeonName1toBuffer(u8 *buffer, DungeonLocation *dungeonLocation); +extern s32 Atan2_4096(PixelPos *a); +extern void sub_80117AC(void); +extern void sub_8011760(void); struct UnkStruct_Sub1 { @@ -36,13 +41,17 @@ struct UnkStruct_Sub1 struct UnkStruct_203B0E8 { struct UnkStruct_Sub1 unk0[64]; - u8 pad1[0x4014]; + OpenedFile *unk1100[5]; + u16 unk1114[64][64]; + u16 unk3114[64][64]; axdata unk5114; - u8 pad2[0x184]; + unkStruct_202EE8C unk5150[16]; + s32 unk52D0; s32 unk52D4; DungeonPos unk52D8; - s16 unk52DC; - s16 unk52DE; + DungeonPos unk52DC; + u16 unk52E0[1500]; + u8 unk5E98[1500]; }; EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; @@ -63,12 +72,8 @@ EWRAM_INIT UnkTextStruct3 gUnknown_203B0EC = { .unkE = 3, .unk10 = 3, }, - [2] = { - .unk4 = 3, - }, - [3] = { - .unk4 = 3, - }, + [2] = { .unk4 = 3,}, + [3] = { .unk4 = 3,}, } }; @@ -83,24 +88,781 @@ static inline bool8 ResetFlags(axdata *ptr) } extern u8 *const gUnknown_80D408C[]; +extern u8 *const gUnknown_80D4014[]; extern const FileArchive gTitleMenuFileArchive; extern const FileArchive gMonsterFileArchive; extern const u8 gUnknown_80D40E4[]; extern const u8 gUnknown_80D40EC[]; +extern const u8 gUnknown_80D405C[]; extern const DungeonPos gUnknown_80D40C4[]; extern const u8 gUnknown_80D40FC[]; extern const u8 gUnknown_80D4104[]; extern const u8 gUnknown_80D4120[]; extern const u8 gUnknown_80D4124[]; +extern const u8 gUnknown_80D3EFC[]; extern const u8 gUnknown_80D40F4[]; +extern const u8 gUnknown_80D4064[]; +extern const u8 gUnknown_80D406C[]; extern const u8 gUnknown_80D407C[]; extern const u8 gUnknown_80D4080[]; extern const u8 gUnknown_80D4074[]; extern const DungeonPos gDungeonCoordinates[]; -void sub_8010960(void); +struct UnkStruct_sub_8010494 +{ + DungeonLocation unk0; + DungeonLocation unk4; + u8 pad1[8]; + u8 unk10; + u8 pad2[0xA]; + s16 unk1C; + u8 pad3[0x6E - 0x20]; + u8 unk6C; + u8 unk6D[63]; +}; -void sub_8010A88(bool8 a0) +struct UnkStruct_sub_8010268 +{ + u8 fill0[4]; + struct UnkStruct_sub_8010494 unk4; + struct UnkStruct_203B0E8 *unkB0; + u8 unkB4; +}; + +static void sub_8010950(void); +static void sub_8010A88(bool8 a0); +static bool8 sub_8010A00(void); +static void nullsub_24(void); +void sub_8011494(void); +void sub_8010960(void); +void sub_8010798(void); +void sub_8010858(void); +void sub_8010494(struct UnkStruct_sub_8010494 *r9); +void sub_8010344(u8 id1, u8 id2); +void sub_801059C(void); +bool8 sub_8010C58(u8 *str); +void sub_8010C10(const u8 *text); +void sub_801091C(void); +void sub_8011398(void); +void sub_801073C(void); +void sub_8010B74(DungeonLocation *dungLocation); +void sub_801169C(void); +void sub_80110B0(void); +void sub_8010EF0(void); +void sub_8011300(void); +void sub_8011240(void); +bool8 sub_800FFE8(u8 friendAreaId); +void sub_8011168(void); +void sub_80100C0(s32 a0, s32 a1, s32 count); +u8 sub_8010014(void); +s32 sub_800FAA8(s32 *a0, s32 *a1); +bool8 sub_800FB6C(void); +void sub_800FC28(void); +void sub_800FC5C(u8 a0); +void sub_8010DA4(void); + +extern u16 gUnknown_2026E4E; +extern u8 gUnknown_202DE18; +extern u8 gUnknown_202DE19; + +extern const struct FiendArea gFriendAreaLocations[]; + +extern const u8 gUnknown_80D3EDC[]; +extern const u8 gUnknown_80D3EEC[]; + +struct TestStruct +{ + s16 max; + s16 min; +}; + +extern const struct TestStruct gUnknown_80D3EBC[]; + +struct struct_unk800F990 +{ + u32 unk0; + u8 unk4; + u8 unk5; + struct UnkBgStruct *unk8; + u8 unkC; +}; + +void sub_800F990(struct struct_unk800F990 *param_1) +{ + gUnknown_203B0E4 = param_1->unk8; + gUnknown_2026E4E = 0x1010; + sub_80095CC(0,0x14); + UpdateFadeInTile(2); + gUnknown_203B0E4->unk4014 = gFriendAreaLocations; + gUnknown_203B0E4->unk4A2C = param_1->unk5; + sub_8010DA4(); + gUnknown_203B0E4->unk4A28 = -1; + gUnknown_203B0E4->unk4A1C = -1; + sub_800FC5C(param_1->unk4); + gUnknown_203B0E4->unk4A20 = gUnknown_203B0E4->unk4A24; + gUnknown_202DE18 = 0xff; + gUnknown_202DE19 = 0; + sub_8011760(); + while (1) { + s32 local_1c = 0; + s32 local_18 = 0; + s32 iVar2 = sub_800FAA8(&local_1c, &local_18); + + if (iVar2 == 1) { + sub_80100C0(local_1c, local_18, 0x32); + } + else if (iVar2 == 2) { + if (!sub_800FB6C()) + continue; + param_1->unkC = gUnknown_203B0E4->unk4DF4; + break; + } + else if (iVar2 == 3) { + if (gUnknown_203B0E4->unk4A18 == gUnknown_203B0E4->unk4A20) { + param_1->unkC = 0; + break; + } + sub_80100C0(gUnknown_203B0E4->unk4A20,0,10); + } + } + + sub_800FC28(); + sub_8010EF0(); + nullsub_16(); +} + +s32 sub_800FAA8(s32 *a0, s32 *a1) +{ + s32 ret = 0; + + sub_8011300(); + sub_8011398(); + while (ret == 0) { + s32 r3; + + sub_801169C(); + r3 = sub_8010014(); + if (r3 != 0xFF) { + s32 r4 = gUnknown_203B0E4->unk4A18; + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[r4]; + + if (ptr->unk2[r3] >= 0) { + s32 id = ptr->unk2[r3]; + struct UnkStruct_4018 *ptr2 = &gUnknown_203B0E4->unk4018[id]; + + if (ptr2->unk4018 != 0) { + ret = 1; + *a0 = id; + *a1 = r3; + gUnknown_203B0E4->unk4A28 = r3; + gUnknown_203B0E4->unk4A1C = r4; + } + } + } + + if (gRealInputs.pressed & A_BUTTON) { + PlayAcceptSoundEffect(); + ret = 2; + } + if (gRealInputs.pressed & B_BUTTON) { + PlayCancelSoundEffect(); + ret = 3; + } + } + return ret; +} + +bool8 sub_800FB6C(void) +{ + bool8 ret = FALSE; + + sub_8011494(); + while (1) { + MenuInputStruct *menuPtr = &gUnknown_203B0E4->unk4DFC; + + AddMenuCursorSprite(menuPtr); + sub_801169C(); + if (gRealInputs.repeated & DPAD_DOWN) { + MoveMenuCursorDown(menuPtr); + PlayCursorUpDownSoundEffect(); + } + if (gRealInputs.repeated & DPAD_UP) { + MoveMenuCursorUp(menuPtr); + PlayCursorUpDownSoundEffect(); + } + + if ((gRealInputs.pressed & A_BUTTON) || menuPtr->unk28.a_button) { + PlayAcceptSoundEffect(); + gUnknown_203B0E4->unk4DF4 = gUnknown_203B0E4->unk4DEC[menuPtr->menuIndex]; + ret = TRUE; + break; + } + if ((gRealInputs.pressed & B_BUTTON) || menuPtr->unk28.b_button) { + PlayCancelSoundEffect(); + break; + } + } + + return ret; +} + +void sub_800FC28(void) +{ + s32 i; + + sub_8011168(); + sub_80117AC(); + for (i = 0; i < 60; i++) { + gUnknown_203B0E4->unk4DCC -= 2; + sub_801169C(); + } +} + +void sub_800FC5C(u8 a0) +{ + s32 var_48 = 0; + s32 i, j, k; + + for (i = 0; i < 32; i++) { + bool8 r7 = FALSE; + bool8 r10 = FALSE; + struct UnkStruct_4018 *r6 = &gUnknown_203B0E4->unk4018[i]; + const struct FiendArea *r2 = &gUnknown_203B0E4->unk4014[i]; + + for (j = 0; j < 8; j++) { + r6->unk2[j] = 0xFFFF; + } + for (j = 0; j < 8; j++) { + if (sub_800FFE8(r2->unk8[j])) { + if (r2->unk8[j] == a0) { + var_48 = i; + } + if (r2->unk8[j] == 0) { + gUnknown_203B0E4->unk4A24 = i; + r10 = TRUE; + } + r7 = TRUE; + } + } + + if (r7) { + r6->unk4018 = 1; + AxResInitFile(&r6->unk14, gUnknown_203B0E4->unk0[2], (r10) ? 12 : 1, 0, 0x40, 0, 1); + } + else { + r6->unk4018 = 0; + } + } + + for (i = 0; i < 32; i++) { + s32 var1, var2; + struct UnkStruct_4018 *r3 = &gUnknown_203B0E4->unk4018[i]; + const struct FiendArea *var_44 = &gUnknown_203B0E4->unk4014[i]; + + if (!r3->unk4018) { + continue; + } + + for (j = 0; j < 8; j++) { + r3->unk2[j] = 0xFFFF; + if (var_44->unk10[j] >= 0) { + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[var_44->unk10[j]]; + if (ptr->unk4018) { + r3->unk2[j] = var_44->unk10[j]; + } + } + } + + var1 = gUnknown_203B0E4->unk4A28; + var2 = gUnknown_203B0E4->unk4A1C; + if (var1 >= 0 && var2 >= 0) { + struct UnkStruct_4018 *ptr = &gUnknown_203B0E4->unk4018[var2]; + if (ptr->unk4018) { + var1 += 4; + var1 &= 7; + r3->unk2[var1] = var2; + } + } + + for (j = 0; j < 8; j++) { + s32 var_40 = -1; + s32 var_3C = 999999; + + if (r3->unk2[j] >= 0) + continue; + + for (k = 0; k < 32; k++) { + bool8 r7; + PixelPos pixelPos; + s32 atanVal; + struct UnkStruct_4018 *ptr2_18 = &gUnknown_203B0E4->unk4018[k]; + const struct FiendArea *ptr2_14 = &gUnknown_203B0E4->unk4014[k]; + + if (k == i) + continue; + if (ptr2_18->unk4018 == 0) + continue; + + pixelPos.x = (ptr2_14->unk4.x - var_44->unk4.x) << 8; + pixelPos.y = (ptr2_14->unk4.y - var_44->unk4.y) << 8; + atanVal = Atan2_4096(&pixelPos); + pixelPos.x /= 4; + pixelPos.y /= 4; + pixelPos.x /= 256; + pixelPos.y /= 256; + if (pixelPos.x == 0) { + pixelPos.x = 1; + } + if (pixelPos.y == 0) { + pixelPos.y = 1; + } + + r7 = FALSE; + if (j == 2) { + while (atanVal >= 0x1000) { + atanVal -= 0x1000; + } + while (atanVal < 0) { + atanVal += 0x1000; + } + if (gUnknown_80D3EBC[j].max < atanVal || gUnknown_80D3EBC[j].min > atanVal) { + r7 = TRUE; + } + } + else { + if (gUnknown_80D3EBC[j].max <= atanVal && gUnknown_80D3EBC[j].min > atanVal) { + r7 = TRUE; + } + } + + if (r7) { + s32 sum = (pixelPos.x * pixelPos.x) + (pixelPos.y * pixelPos.y); + if (var_3C > sum) { + var_3C = sum; + var_40 = k; + } + } + } + + if (var_40 >= 0) { + r3->unk2[j] = var_40; + } + } + } + + AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); + gUnknown_203B0E4->unk4A18 = var_48; + gUnknown_203B0E4->unk4DD8 = gUnknown_203B0E4->unk4014[var_48].unk4; + gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 120; + gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 80; + sub_8011240(); + sub_80110B0(); +} + +bool8 sub_800FFE8(u8 friendAreaId) +{ + if (friendAreaId > 57) return FALSE; + if (friendAreaId == 0) return TRUE; + if (gFriendAreas[friendAreaId]) return TRUE; + + return FALSE; +} + +u8 sub_8010014(void) +{ + u8 sp1[16]; + u8 sp2[16]; + u8 *table; + u32 flag; + + memcpy(sp1, gUnknown_80D3EDC, 16); + memcpy(sp2, gUnknown_80D3EEC, 16); + flag = 0; + table = (gRealInputs.held & R_BUTTON) ? sp2 : sp1; + + if (gRealInputs.held & DPAD_DOWN) { + flag |= 1; + } + if (gRealInputs.held & DPAD_RIGHT) { + flag |= 2; + } + if (gRealInputs.held & DPAD_UP) { + flag |= 4; + } + if (gRealInputs.held & DPAD_LEFT) { + flag |= 8; + } + + if (gUnknown_202DE18 == table[flag]) { + if (++gUnknown_202DE19 >= 3) { + return table[flag]; + } + } + else { + gUnknown_202DE18 = table[flag]; + gUnknown_202DE19 = 0; + } + return 0xFF; +} + +void sub_80100C0(s32 a0, s32 a1, s32 count) +{ + s32 i, arrayId; + DungeonPos pos1, pos2; + + AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, a1 & 7, 0, 0, TRUE); + sub_8011168(); + + arrayId = gUnknown_203B0E4->unk4A18; + pos1 = gUnknown_203B0E4->unk4014[arrayId].unk4; + pos2 = gUnknown_203B0E4->unk4014[a0].unk4; + + PlayCursorUpDownSoundEffect(); + for (i = 0; i < count; i++) { + gUnknown_203B0E4->unk4DD8.x = ((((pos2.x - pos1.x) * (i << 8)) / count) / 256) + pos1.x; + gUnknown_203B0E4->unk4DD8.y = ((((pos2.y - pos1.y) * (i << 8)) / count) / 256) + pos1.y; + + sub_8011240(); + sub_80110B0(); + sub_801169C(); + } + + gUnknown_203B0E4->unk4A18 = a0; + gUnknown_203B0E4->unk4DD8 = gUnknown_203B0E4->unk4014[a0].unk4; + sub_8011240(); + sub_80110B0(); + sub_801169C(); + AxResInitFile(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk0[3], 0, 0, 0, 0, TRUE); +} + +void sub_80101F8(u8 *strBuffer, u8 index) +{ + if (index == 0) { + FormatString(gUnknown_80D3EFC, strBuffer, strBuffer + 0x50, 0); + } + else { + WriteFriendAreaName(strBuffer, index, FALSE); + } +} + +void sub_8010224(u8 unk8, DungeonPos *dst) +{ + s32 i, j; + + for (i = 0; i < 32; i++) { + const struct FiendArea *friendArea = &gFriendAreaLocations[i]; + for (j = 0; j < 8; j++) { + if (friendArea->unk8[j] == unk8) { + dst->x = friendArea->unk4.x; + dst->y = friendArea->unk4.y; + return; + } + } + } + dst->x = 0; + dst->y = 0; +} + +void sub_8010268(struct UnkStruct_sub_8010268 *r5) +{ + s32 i, speciesId, var; + u8 text[1000]; + + gUnknown_203B0E8 = r5->unkB0; + gUnknown_2026E4E = 2566; + sub_80095CC(0, 0x14); + UpdateFadeInTile(2); + sub_801059C(); + sub_8010494(&r5->unk4); + sub_801178C(); + for (i = 0; i < 60; i++) { + sub_8010960(); + } + sub_8010344(r5->unk4.unk0.id, r5->unk4.unk4.id); + sub_8010B74(&r5->unk4.unk4); + for (i = 0; i < 60; i++) { + sub_8010960(); + } + + if (r5->unk4.unk10) { + speciesId = r5->unk4.unk1C; + ASM_MATCH_TRICK(speciesId); + } + else { + speciesId = 0; + } + + var = sub_809034C(r5->unk4.unk4.id, speciesId, text, r5->unk4.unk6C, FALSE); + if (var == 0) { + r5->unkB4 = 1; + } + else if (var == 1) { + sub_8010C10(text); + r5->unkB4 = 0; + } + else if (var == 2) { + if (sub_8010C58(text)) { + r5->unkB4 = 1; + } + else { + r5->unkB4 = 0; + } + } + + sub_801091C(); + sub_801073C(); + nullsub_16(); +} + +// Heavy math function. +void sub_8010344(u8 id1, u8 id2) +{ + s32 i, valMax, r3; + PixelPos pixelPos; + DungeonPos pos1 = gDungeonCoordinates[id1]; + DungeonPos pos2 = gDungeonCoordinates[id2]; + + valMax = max(abs(pos2.x - pos1.x), abs(pos2.y - pos1.y)); + valMax /= 2; + + pixelPos.x = pos1.x - pos2.x; + pixelPos.y = pos2.y - pos1.y; + r3 = Atan2_4096(&pixelPos) - 1024; + if (r3 < 0) { + r3 += 511; + } + r3 >>= 9; + r3 &= 7; + AxResInitFile(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk1100[3], 0, r3, 0, 0, TRUE); + + for (i = 0; i < valMax; i++) { + gUnknown_203B0E8->unk52DC.x = ((((pos2.x - pos1.x) * (i << 8)) / valMax) / 256) + pos1.x; + gUnknown_203B0E8->unk52DC.y = ((((pos2.y - pos1.y) * (i << 8)) / valMax) / 256) + pos1.y; + sub_8010798(); + sub_8010858(); + sub_8010960(); + if (gRealInputs.pressed & A_BUTTON) + break; + if (gRealInputs.pressed & B_BUTTON) + break; + } + + gUnknown_203B0E8->unk52DC = pos2; + sub_8010798(); + sub_8010858(); + sub_8010960(); +} + +void sub_8010494(struct UnkStruct_sub_8010494 *r9) +{ + s32 i; + for (i = 0; i < 64; i++) { + struct UnkStruct_Sub1 *structPtr = &gUnknown_203B0E8->unk0[i]; + u8 r0; + + if (i < 63) { + r0 = r9->unk6D[i]; + } + else { + r0 = 1; + } + + if (r0) { + structPtr->unk0 = 1; + AxResInitFile(&structPtr->unk8, gUnknown_203B0E8->unk1100[2], (i == 63) ? 12 : 1, 0, 0x40, 0, 1); + structPtr->unk4 = gDungeonCoordinates[i]; + } + else { + structPtr->unk0 = 0; + } + } + + AxResInitFile(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk1100[3], 0, 0, 0, 0, TRUE); + gUnknown_203B0E8->unk52DC = gDungeonCoordinates[r9->unk0.id]; + gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 120; + gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 80; + sub_8010798(); + sub_8010858(); +} + +void sub_801059C(void) +{ + u8 filename[0xC]; + s32 i, size; + + PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); + OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D4014[0], &gTitleMenuFileArchive); + OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D4014[1], &gTitleMenuFileArchive); + + sprintf(filename, gUnknown_80D405C, pokeStruct->speciesNum); + gUnknown_203B0E8->unk1100[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + gUnknown_203B0E8->unk1100[2] = OpenFileAndGetFileDataPtr(gUnknown_80D4064, &gTitleMenuFileArchive); + gUnknown_203B0E8->unk1100[4] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[2], &gTitleMenuFileArchive); + gUnknown_203B0E8->unk1100[1] = OpenFileAndGetFileDataPtr(gUnknown_80D406C, &gMonsterFileArchive); + gUnknown_203B0E8->unk1100[0] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[3], &gTitleMenuFileArchive); + gUnknown_203B0E8->unk52D4 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + + sub_8005610(gUnknown_203B0E8->unk1100[2], 0x40, 0x1F, 0); + + DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); + sub_8004AA4(gUnknown_203B0E8->unk5150, gUnknown_203B0E8->unk1100[4], 0x10); + size = 0x4000; + DecompressATFile((u8 *) &gUnknown_203B0E8->unk1114, size, file2); + + gUnknown_203B0E8->unk52D0 = 0; + gUnknown_203B0E8->unk52D8.x = 0; + gUnknown_203B0E8->unk52D8.y = 0; + + for (i = 0; i < 1500; i++) { + gUnknown_203B0E8->unk52E0[i] |= 0xFFFF; + gUnknown_203B0E8->unk5E98[i] = 0; + } + + CloseFile(file); + CloseFile(file2); + xxx_call_save_unk_text_struct_800641C(NULL, 1, 1); +} + +void sub_801073C(void) +{ + CloseFile(gUnknown_203B0E8->unk1100[4]); + CloseFile(gUnknown_203B0E8->unk1100[3]); + CloseFile(gUnknown_203B0E8->unk1100[2]); + CloseFile(gUnknown_203B0E8->unk1100[0]); + CloseFile(gUnknown_203B0E8->unk1100[1]); +} + +void sub_8010798(void) +{ + if (gUnknown_203B0E8->unk52DC.x - gUnknown_203B0E8->unk52D8.x < 48) { + gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 48; + } + else if (gUnknown_203B0E8->unk52DC.x - gUnknown_203B0E8->unk52D8.x > 192) { + gUnknown_203B0E8->unk52D8.x = gUnknown_203B0E8->unk52DC.x - 192; + } + + if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y < 48) { + gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 48; + } + else if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y > 112) { + gUnknown_203B0E8->unk52D8.y = gUnknown_203B0E8->unk52DC.y - 112; + } + + if (gUnknown_203B0E8->unk52D8.x < 0) { + gUnknown_203B0E8->unk52D8.x = 0; + } + if (gUnknown_203B0E8->unk52D8.y < 0) { + gUnknown_203B0E8->unk52D8.y = 0; + } + if (gUnknown_203B0E8->unk52D8.x >= 240) { + gUnknown_203B0E8->unk52D8.x = 240; + } + if (gUnknown_203B0E8->unk52D8.y >= 160) { + gUnknown_203B0E8->unk52D8.y = 160; + } +} + +void sub_8010858(void) +{ + s32 i, j; + s32 y1 = gUnknown_203B0E8->unk52D8.y >> 3; + s32 y2 = y1; + + for (i = 0; i < 21; i++) { + s32 x1 = gUnknown_203B0E8->unk52D8.x >> 3; + s32 x2 = x1; + + for (j = 0; j < 31; j++) { + x1 &= 0x1F; + y1 &= 0x1F; + + gUnknown_202B038[2][y1][x1] = gUnknown_203B0E8->unk3114[y2][x2]; + gUnknown_202B038[3][y1][x1] = gUnknown_203B0E8->unk1114[y2][x2]; + x2++; + x1++; + } + y2++; + y1++; + } + + sub_80098F8(2); + sub_80098F8(3); +} + +static void nullsub_24(void) +{ + +} + +void sub_801091C(void) +{ + s32 i; + + sub_8010950(); + sub_80117C4(); + for (i = 0; i < 60; i++) { + gUnknown_203B0E8->unk52D0 -= 2; + sub_8010960(); + } +} + +static void sub_8010950(void) +{ + xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); +} + +void sub_8010960(void) +{ + SetBG2RegOffsets(gUnknown_203B0E8->unk52D8.x, gUnknown_203B0E8->unk52D8.y); + SetBG3RegOffsets(gUnknown_203B0E8->unk52D8.x, gUnknown_203B0E8->unk52D8.y); + sub_8010A88(TRUE); + sub_8010A00(); + sub_8005838(NULL, 0); + nullsub_8(gGameOptionsRef->unkA); + sub_8005180(); + sub_80060EC(); + IncrementPlayTime(gPlayTimeRef); + sub_800CB20(); + LoadBufferedInputs(); + CopySpritesToOam(); + sub_8005304(); + TransferBGPaletteBuffer(); + xxx_call_update_bg_vram(); + nullsub_24(); + sub_8009908(); + xxx_call_update_bg_sound_input(); + sub_8011860(); + ResetSprites(FALSE); +} + +static bool8 sub_8010A00(void) +{ + bool8 ret = FALSE; + + if (gUnknown_203B0E8->unk52D0 < 31) { + s32 i; + RGB *color = (void *) gUnknown_203B0E8->unk1100[0]->data; + + if (++gUnknown_203B0E8->unk52D0 >= 31) { + gUnknown_203B0E8->unk52D0 = 31; + } + + for (i = 0; i < 224; color++, i++) { + SetBGPaletteBufferColorRGB(i, color, gUnknown_203B0E8->unk52D0, NULL); + } + + color = (void *) gUnknown_203B0E8->unk1100[1]->data; + for (i = 0; i < 240; color++, i++) { + SetBGPaletteBufferColorRGB(i + 256, color, gUnknown_203B0E8->unk52D0, NULL); + } + + ret = TRUE; + } + + return ret; +} + +static void sub_8010A88(bool8 a0) { s32 i; unkStruct_2039DB0 var_2C; @@ -112,7 +874,7 @@ void sub_8010A88(bool8 a0) pos = gUnknown_203B0E8->unk52D8; RunAxAnimationFrame(&gUnknown_203B0E8->unk5114); if (a0) { - DoAxFrame_800558C(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk52DC - pos.x, gUnknown_203B0E8->unk52DE - pos.y, 3, gUnknown_203B0E8->unk52D4, &var_2C); + DoAxFrame_800558C(&gUnknown_203B0E8->unk5114, gUnknown_203B0E8->unk52DC.x - pos.x, gUnknown_203B0E8->unk52DC.y - pos.y, 3, gUnknown_203B0E8->unk52D4, &var_2C); } for (i = 0; i < 64; i++) { @@ -146,7 +908,7 @@ void sub_8010B74(DungeonLocation *dungLocation) } }; - if (gUnknown_203B0E8->unk52DE - gUnknown_203B0E8->unk52D8.y <= 80) { + if (gUnknown_203B0E8->unk52DC.y - gUnknown_203B0E8->unk52D8.y <= 80) { spTxtStruct.a0[0].pos.y = 17; } else { @@ -305,11 +1067,11 @@ void sub_8010F28(void) var_30.unkA = 0x800; pos = gUnknown_203B0E4->unk4DD4; RunAxAnimationFrame(&gUnknown_203B0E4->unk4C10); - DoAxFrame_800558C(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk4DD8 - pos.x, gUnknown_203B0E4->unk4DDA - pos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); + DoAxFrame_800558C(&gUnknown_203B0E4->unk4C10, gUnknown_203B0E4->unk4DD8.x - pos.x, gUnknown_203B0E4->unk4DD8.y - pos.y, 3, gUnknown_203B0E4->unk4DD0, &var_30); for (i = 0; i < 32; i++) { struct UnkStruct_4018 *r0 = &gUnknown_203B0E4->unk4018[i]; - struct UnkStruct_4014Ptr *r5 = &gUnknown_203B0E4->unk4014->array[i]; + const struct FiendArea *r5 = &gUnknown_203B0E4->unk4014[i]; if (r0->unk4018 != 0) { RunAxAnimationFrame(&r0->unk14); DoAxFrame_800558C(&r0->unk14, r5->unk4.x - pos.x, r5->unk4.y- pos.y, 1, 0, &var_30); @@ -323,8 +1085,8 @@ void sub_8010F28(void) RunAxAnimationFrame(&gUnknown_203B0E4->unk4A30[i]); if (!(gRealInputs.held & R_BUTTON) || (i % 2) != 0) { DoAxFrame_800558C(&gUnknown_203B0E4->unk4A30[i], - (gUnknown_80D40C4[i].x + gUnknown_203B0E4->unk4DD8) - pos.x, - (gUnknown_80D40C4[i].y + gUnknown_203B0E4->unk4DDA) - pos.y, + (gUnknown_80D40C4[i].x + gUnknown_203B0E4->unk4DD8.x) - pos.x, + (gUnknown_80D40C4[i].y + gUnknown_203B0E4->unk4DD8.y) - pos.y, 2, 0, &var_30); } } @@ -402,18 +1164,18 @@ bool8 sub_80111C4(void) void sub_8011240(void) { - if (gUnknown_203B0E4->unk4DD8 - gUnknown_203B0E4->unk4DD4.x < 48) { - gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8 - 48; + if (gUnknown_203B0E4->unk4DD8.x - gUnknown_203B0E4->unk4DD4.x < 48) { + gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 48; } - else if (gUnknown_203B0E4->unk4DD8 - gUnknown_203B0E4->unk4DD4.x > 192) { - gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8 - 192; + else if (gUnknown_203B0E4->unk4DD8.x - gUnknown_203B0E4->unk4DD4.x > 192) { + gUnknown_203B0E4->unk4DD4.x = gUnknown_203B0E4->unk4DD8.x - 192; } - if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y < 48) { - gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DDA - 48; + if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y < 48) { + gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 48; } - else if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y > 112) { - gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DDA - 112; + else if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y > 112) { + gUnknown_203B0E4->unk4DD4.y = gUnknown_203B0E4->unk4DD8.y - 112; } if (gUnknown_203B0E4->unk4DD4.x < 0) { @@ -450,7 +1212,7 @@ void sub_8011398(void) { u8 txt[200]; s32 id = gUnknown_203B0E4->unk4A18; - struct UnkStruct_4014Ptr *r6 = &gUnknown_203B0E4->unk4014->array[id]; + const struct FiendArea *r6 = &gUnknown_203B0E4->unk4014[id]; UnkTextStruct3 spTxtStruct = {0}; spTxtStruct.a0[0].unk4 = 3; @@ -463,7 +1225,7 @@ void sub_8011398(void) spTxtStruct.a0[2].unk4 = 3; spTxtStruct.a0[3].unk4 = 3; - if (gUnknown_203B0E4->unk4DDA - gUnknown_203B0E4->unk4DD4.y <= 80) { + if (gUnknown_203B0E4->unk4DD8.y - gUnknown_203B0E4->unk4DD4.y <= 80) { spTxtStruct.a0[0].pos.y = 17; } else { @@ -472,7 +1234,7 @@ void sub_8011398(void) xxx_call_save_unk_text_struct_800641C(&spTxtStruct, TRUE, TRUE); sub_80073B8(0); - sprintfStatic(txt, gUnknown_80D40FC, r6->unk0); + sprintfStatic(txt, gUnknown_80D40FC, r6->name); PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); sub_80073E0(0); gUnknown_203B0E4->unk4DDC = (spTxtStruct.a0[0].pos.x * 8) - 5; @@ -485,7 +1247,7 @@ void sub_8011494(void) { s32 i, count, var; s32 id = gUnknown_203B0E4->unk4A18; - struct UnkStruct_4014Ptr *r8 = &gUnknown_203B0E4->unk4014->array[id]; + const struct FiendArea *r8 = &gUnknown_203B0E4->unk4014[id]; MenuInputStruct *menuInput = &gUnknown_203B0E4->unk4DFC; UnkTextStruct2_sub2 subTxt; UnkTextStruct3 spTxtStruct = { @@ -561,7 +1323,7 @@ void sub_8011494(void) PrintFormattedStringOnWindow(12, r4, gUnknown_80D4120, 0, '\0'); } else { - sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); // TODO FIX R8 + sub_80926F8(r5, &unkFriendAreaStruct, gUnknown_203B0E4->unk4A2C); gFormatArgs[0] = unkFriendAreaStruct.unk2; gFormatArgs[1] = unkFriendAreaStruct.numPokemon; PrintFormattedStringOnWindow(12, r4, gUnknown_80D4124, 0, '\0');