diff --git a/asm/code_2.s b/asm/code_2.s index 03f93b406..d7baabfaa 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -144,7 +144,7 @@ QuickSave: movs r0, 0 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r0, 0 movs r1, 0x14 bl sub_8009408 @@ -297,7 +297,7 @@ _08000892: movs r0, 0 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r0, 0 bl xxx_update_stuff add sp, 0xC @@ -325,7 +325,7 @@ sub_80008C0: movs r0, 0 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r0, 0 movs r1, 0x14 bl sub_8009408 @@ -425,7 +425,7 @@ _080009A2: movs r0, 0 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r0, 0 bl xxx_update_stuff add sp, 0x4 @@ -514,7 +514,7 @@ _08000A42: mov r1, sp strb r0, [r1, 0x5] mov r0, sp - bl sub_800F990 + bl ShowFriendAreasMap ldr r0, [sp, 0x8] bl MemoryFree mov r0, sp @@ -622,7 +622,7 @@ _08000B50: add r4, sp, 0x168 str r0, [r4] adds r0, r5, 0 - bl sub_8010268 + bl ShowWorldMap ldr r0, [r4] bl MemoryFree add r0, sp, 0x16C diff --git a/asm/code_800F990.s b/asm/code_800F990.s deleted file mode 100644 index 7288a737f..000000000 --- a/asm/code_800F990.s +++ /dev/null @@ -1,2653 +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 - - thumb_func_start sub_8010A88 -sub_8010A88: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - add r0, sp, 0x8 - bl sub_8004E8C - add r1, sp, 0x8 - ldr r0, _08010B58 - strh r0, [r1, 0x4] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r1, 0xA] - ldr r6, _08010B5C - ldr r0, [r6] - ldr r2, _08010B60 - adds r1, r0, r2 - ldr r5, [r1] - ldr r3, _08010B64 - adds r0, r3 - bl RunAxAnimationFrame - mov r0, r9 - cmp r0, 0 - beq _08010AF6 - ldr r4, [r6] - ldr r1, _08010B64 - adds r0, r4, r1 - ldr r2, _08010B68 - adds r1, r4, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - lsls r2, r5, 16 - asrs r2, 16 - subs r1, r2 - ldr r3, _08010B6C - adds r2, r4, r3 - movs r3, 0 - ldrsh r2, [r2, r3] - asrs r3, r5, 16 - subs r2, r3 - ldr r3, _08010B70 - adds r4, r3 - ldr r3, [r4] - str r3, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - movs r3, 0x3 - bl DoAxFrame_800558C -_08010AF6: - lsls r0, r5, 16 - asrs r0, 16 - mov r10, r0 - movs r7, 0 - asrs r5, 16 - mov r8, r5 - movs r6, 0x3F -_08010B04: - ldr r1, _08010B5C - ldr r0, [r1] - adds r4, r0, r7 - ldrb r0, [r4] - cmp r0, 0 - beq _08010B40 - adds r5, r4, 0 - adds r5, 0x8 - adds r0, r5, 0 - bl RunAxAnimationFrame - mov r2, r9 - cmp r2, 0 - beq _08010B40 - movs r3, 0x4 - ldrsh r1, [r4, r3] - mov r0, r10 - subs r1, r0 - movs r3, 0x6 - ldrsh r2, [r4, r3] - mov r0, r8 - subs r2, r0 - movs r0, 0 - str r0, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - adds r0, r5, 0 - movs r3, 0x1 - bl DoAxFrame_800558C -_08010B40: - adds r7, 0x44 - subs r6, 0x1 - cmp r6, 0 - bge _08010B04 - 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 -_08010B58: .4byte 0x0000f3ff -_08010B5C: .4byte gUnknown_203B0E8 -_08010B60: .4byte 0x000052d8 -_08010B64: .4byte 0x00005114 -_08010B68: .4byte 0x000052dc -_08010B6C: .4byte 0x000052de -_08010B70: .4byte 0x000052d4 - thumb_func_end sub_8010A88 - - thumb_func_start sub_8010B74 -sub_8010B74: - push {r4,r5,lr} - sub sp, 0x64 - adds r5, r0, 0 - add r4, sp, 0x4 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r2, 0x3 - str r2, [sp, 0x8] - movs r0, 0xC - strh r0, [r4, 0x8] - movs r1, 0x2 - strh r1, [r4, 0xA] - movs r0, 0x10 - strh r0, [r4, 0xC] - strh r1, [r4, 0xE] - strh r1, [r4, 0x10] - str r2, [sp, 0x20] - str r2, [sp, 0x38] - str r2, [sp, 0x50] - ldr r0, _08010BC0 - ldr r0, [r0] - ldr r2, _08010BC4 - adds r1, r0, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - ldr r2, _08010BC8 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r1, r0 - cmp r1, 0x50 - bgt _08010BCC - add r1, sp, 0x4 - movs r0, 0x11 - b _08010BD0 - .align 2, 0 -_08010BC0: .4byte gUnknown_203B0E8 -_08010BC4: .4byte 0x000052de -_08010BC8: .4byte 0x000052da -_08010BCC: - add r1, sp, 0x4 - movs r0, 0x1 -_08010BD0: - strh r0, [r1, 0xA] - add r0, sp, 0x4 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - movs r0, 0 - bl sub_80073B8 - ldr r0, _08010C08 - adds r1, r5, 0 - bl CopyDungeonName1toBuffer - ldr r2, _08010C0C - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0x2 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r0, 0 - bl sub_80073E0 - add sp, 0x64 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08010C08: .4byte gFormatBuffer_Monsters -_08010C0C: .4byte gUnknown_80D4074 - thumb_func_end sub_8010B74 - - thumb_func_start sub_8010C10 -sub_8010C10: - push {r4,lr} - sub sp, 0x18 - movs r2, 0 - str r2, [sp] - movs r1, 0x3 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - str r2, [sp, 0xC] - ldr r1, _08010C54 - str r1, [sp, 0x10] - movs r1, 0 - movs r3, 0 - bl CreateMenuDialogueBoxAndPortrait -_08010C2C: - bl DrawDialogueBoxString - bl sub_8010960 - add r0, sp, 0x14 - bl sub_80144A4 - cmp r0, 0 - bne _08010C2C - movs r4, 0x9 -_08010C40: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _08010C40 - add sp, 0x18 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010C54: .4byte 0x00000301 - thumb_func_end sub_8010C10 - - thumb_func_start sub_8010C58 -sub_8010C58: - push {r4-r6,lr} - sub sp, 0x38 - adds r5, r0, 0 - movs r2, 0 - ldrb r0, [r5] - ldr r3, _08010D70 - add r6, sp, 0x2C - cmp r0, 0 - beq _08010C7C - adds r1, r5, 0 -_08010C6C: - ldrb r0, [r1] - cmp r0, 0xA - bne _08010C74 - adds r2, 0xC -_08010C74: - adds r1, 0x1 - ldrb r0, [r1] - cmp r0, 0 - bne _08010C6C -_08010C7C: - adds r2, 0xB - adds r0, r2, 0 - cmp r2, 0 - bge _08010C86 - adds r0, r2, 0x7 -_08010C86: - asrs r2, r0, 3 - movs r0, 0x13 - subs r0, r2 - movs r4, 0 - strh r0, [r3, 0xA] - strh r2, [r3, 0x10] - strh r2, [r3, 0xE] - movs r0, 0xE - subs r0, r2 - strh r0, [r3, 0x22] - adds r0, r3, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - movs r0, 0 - bl sub_80073B8 - str r4, [sp] - movs r0, 0x4 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r0, 0 - bl sub_80073E0 - movs r0, 0x1 - bl sub_80073B8 - ldr r2, _08010D74 - str r4, [sp] - movs r0, 0xA - movs r1, 0 - movs r3, 0x1 - bl PrintFormattedStringOnWindow - ldr r2, _08010D78 - str r4, [sp] - movs r0, 0xA - movs r1, 0xC - movs r3, 0x1 - bl PrintFormattedStringOnWindow - movs r0, 0x1 - bl sub_80073E0 - add r0, sp, 0x4 - movs r2, 0x1 - strh r2, [r0, 0x18] - movs r1, 0x2 - strh r1, [r0, 0x1A] - strh r1, [r0, 0x1C] - strh r4, [r0, 0x1E] - strh r4, [r0, 0x20] - strh r4, [r0, 0x4] - strh r4, [r0, 0x6] - str r2, [sp, 0x4] - strh r4, [r0, 0xC] - strh r4, [r0, 0xE] - strh r4, [r0, 0x14] - strh r4, [r0, 0x16] - movs r1, 0x8 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - movs r1, 0x18 - bl sub_80137B0 - adds r0, r6, 0 - bl sub_801317C - ldr r4, _08010D7C -_08010D18: - add r0, sp, 0x4 - bl AddMenuCursorSprite - bl sub_8010960 - ldrh r1, [r4, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08010D36 - add r0, sp, 0x4 - bl MoveMenuCursorDown - bl PlayCursorUpDownSoundEffect -_08010D36: - ldrh r1, [r4, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08010D4A - add r0, sp, 0x4 - bl MoveMenuCursorUp - bl PlayCursorUpDownSoundEffect -_08010D4A: - ldrh r1, [r4, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08010D5E - mov r0, sp - adds r0, 0x2D - ldrb r0, [r0] - cmp r0, 0 - beq _08010D18 -_08010D5E: - bl PlayAcceptSoundEffect - add r0, sp, 0x4 - movs r1, 0x18 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08010D80 - movs r0, 0 - b _08010D82 - .align 2, 0 -_08010D70: .4byte gUnknown_203B0EC -_08010D74: .4byte gUnknown_80D407C -_08010D78: .4byte gUnknown_80D4080 -_08010D7C: .4byte gRealInputs -_08010D80: - movs r0, 0x1 -_08010D82: - add sp, 0x38 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8010C58 - - thumb_func_start sub_8010D8C -sub_8010D8C: - lsls r0, 24 - ldr r2, _08010DA0 - lsrs r0, 22 - adds r0, r2 - ldrh r2, [r0] - strh r2, [r1] - ldrh r0, [r0, 0x2] - strh r0, [r1, 0x2] - bx lr - .align 2, 0 -_08010DA0: .4byte gDungeonCoordinates - thumb_func_end sub_8010D8C - - thumb_func_start sub_8010DA4 -sub_8010DA4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - bl GetPlayerPokemonStruct - mov r9, r0 - ldr r6, _08010EBC - ldr r0, [r6] - ldr r5, _08010EC0 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - mov r10, r0 - ldr r0, [r6, 0x4] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - adds r7, r0, 0 - ldr r1, _08010EC4 - mov r0, r9 - movs r3, 0x8 - ldrsh r2, [r0, r3] - mov r0, sp - bl sprintf - ldr r0, _08010EC8 - mov r8, r0 - mov r0, sp - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r4, _08010ECC - ldr r1, [r4] - str r0, [r1, 0xC] - ldr r0, _08010ED0 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x8] - ldr r0, [r6, 0x8] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x10] - ldr r0, _08010ED4 - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x4] - ldr r0, [r6, 0xC] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1] - mov r1, r9 - movs r2, 0x8 - ldrsh r0, [r1, r2] - movs r1, 0 - bl GetPokemonOverworldPalette - ldr r2, [r4] - ldr r3, _08010ED8 - adds r1, r2, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - ldr r0, [r2, 0x8] - movs r1, 0x40 - movs r2, 0x1F - movs r3, 0 - bl sub_8005610 - ldr r0, _08010EDC - movs r1, 0 - mov r2, r10 - bl DecompressATGlobalFile - ldr r1, [r4] - ldr r2, _08010EE0 - adds r0, r1, r2 - ldr r1, [r1, 0x10] - movs r2, 0x10 - bl sub_8004AA4 - movs r1, 0x80 - lsls r1, 7 - ldr r0, [r4] - adds r0, 0x14 - adds r2, r7, 0 - bl DecompressATFile - ldr r1, [r4] - ldr r3, _08010EE4 - adds r0, r1, r3 - movs r2, 0 - str r2, [r0] - adds r3, 0x8 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _08010EE8 - adds r1, r0 - strh r2, [r1] - ldr r5, _08010EEC - movs r3, 0 - movs r1, 0x7 -_08010E84: - ldr r0, [r4] - adds r0, r2, r0 - adds r0, r5 - strh r3, [r0] - adds r2, 0x3C - subs r1, 0x1 - cmp r1, 0 - bge _08010E84 - mov r0, r10 - bl CloseFile - adds r0, r7, 0 - bl CloseFile - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - 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 -_08010EBC: .4byte gUnknown_80D408C -_08010EC0: .4byte gTitleMenuFileArchive -_08010EC4: .4byte gUnknown_80D40E4 -_08010EC8: .4byte gMonsterFileArchive -_08010ECC: .4byte gUnknown_203B0E4 -_08010ED0: .4byte gUnknown_80D40EC -_08010ED4: .4byte gUnknown_80D40F4 -_08010ED8: .4byte 0x00004dd0 -_08010EDC: .4byte 0x06008000 -_08010EE0: .4byte 0x00004c4c -_08010EE4: .4byte 0x00004dcc -_08010EE8: .4byte 0x00004dd6 -_08010EEC: .4byte 0x00004a30 - thumb_func_end sub_8010DA4 - - .align 2,0 diff --git a/asm/code_8010F28.s b/asm/code_8010F28.s deleted file mode 100644 index 77e7b5004..000000000 --- a/asm/code_8010F28.s +++ /dev/null @@ -1,938 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8010F28 -sub_8010F28: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - add r0, sp, 0x8 - bl sub_8004E8C - add r1, sp, 0x8 - ldr r0, _08011080 - strh r0, [r1, 0x4] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r1, 0xA] - ldr r6, _08011084 - ldr r0, [r6] - ldr r2, _08011088 - adds r1, r0, r2 - ldr r1, [r1] - mov r8, r1 - ldr r4, _0801108C - adds r0, r4 - bl RunAxAnimationFrame - ldr r3, [r6] - adds r4, r3, r4 - ldr r7, _08011090 - adds r0, r3, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - mov r7, r8 - lsls r5, r7, 16 - asrs r5, 16 - subs r1, r5 - ldr r2, _08011094 - adds r0, r3, r2 - movs r7, 0 - ldrsh r2, [r0, r7] - mov r7, r8 - asrs r0, r7, 16 - subs r2, r0 - ldr r0, _08011098 - adds r3, r0 - ldr r0, [r3] - str r0, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - adds r0, r4, 0 - movs r3, 0x3 - bl DoAxFrame_800558C - movs r7, 0 - mov r10, r6 - ldr r6, _0801109C - mov r9, r5 -_08010F98: - mov r4, r10 - ldr r0, [r4] - adds r4, r0, r6 - ldr r1, _080110A0 - adds r0, r1 - lsls r1, r7, 5 - ldr r0, [r0] - adds r5, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _08010FD8 - adds r4, 0x14 - adds r0, r4, 0 - bl RunAxAnimationFrame - movs r2, 0x4 - ldrsh r1, [r5, r2] - mov r3, r9 - subs r1, r3 - movs r0, 0x6 - ldrsh r2, [r5, r0] - mov r3, r8 - asrs r0, r3, 16 - subs r2, r0 - movs r0, 0 - str r0, [sp] - add r0, sp, 0x8 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r3, 0x1 - bl DoAxFrame_800558C -_08010FD8: - adds r6, 0x50 - adds r7, 0x1 - cmp r7, 0x1F - ble _08010F98 - movs r5, 0 - ldr r1, _08011084 - mov r9, r1 - ldr r6, _080110A4 - movs r2, 0 - str r2, [sp, 0x14] -_08010FEC: - mov r3, r9 - ldr r1, [r3] - ldr r4, [sp, 0x14] - adds r0, r4, r1 - ldr r7, _080110A4 - adds r0, r7 - ldrh r0, [r0] - lsrs r0, 15 - cmp r0, 0 - beq _08011062 - adds r0, r1, r6 - bl RunAxAnimationFrame - ldr r0, _080110A8 - ldrh r0, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0801101E - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08011062 -_0801101E: - mov r3, r9 - ldr r4, [r3] - adds r0, r4, r6 - ldr r1, _080110AC - lsls r3, r5, 2 - adds r3, r1 - movs r7, 0 - ldrsh r1, [r3, r7] - ldr r7, _08011090 - adds r2, r4, r7 - movs r7, 0 - ldrsh r2, [r2, r7] - adds r1, r2 - mov r7, r8 - lsls r2, r7, 16 - asrs r2, 16 - subs r1, r2 - movs r7, 0x2 - ldrsh r2, [r3, r7] - ldr r3, _08011094 - adds r3, r4 - movs r4, 0 - ldrsh r3, [r3, r4] - adds r2, r3 - mov r7, r8 - asrs r3, r7, 16 - subs r2, r3 - movs r3, 0 - str r3, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - movs r3, 0x2 - bl DoAxFrame_800558C -_08011062: - adds r6, 0x3C - ldr r4, [sp, 0x14] - adds r4, 0x3C - str r4, [sp, 0x14] - adds r5, 0x1 - cmp r5, 0x7 - ble _08010FEC - 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 -_08011080: .4byte 0x0000f3ff -_08011084: .4byte gUnknown_203B0E4 -_08011088: .4byte 0x00004dd4 -_0801108C: .4byte 0x00004c10 -_08011090: .4byte 0x00004dd8 -_08011094: .4byte 0x00004dda -_08011098: .4byte 0x00004dd0 -_0801109C: .4byte 0x00004018 -_080110A0: .4byte 0x00004014 -_080110A4: .4byte 0x00004a30 -_080110A8: .4byte gRealInputs -_080110AC: .4byte gUnknown_80D40C4 - thumb_func_end sub_8010F28 - - thumb_func_start sub_80110B0 -sub_80110B0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _08011150 - ldr r1, [r0] - ldr r2, _08011154 - 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 -_080110D4: - mov r1, r10 - ldr r0, [r1] - ldr r1, _08011158 - 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 -_080110F2: - mov r2, r9 - ands r4, r2 - ands r6, r2 - lsls r2, r4, 1 - lsls r0, r6, 6 - adds r2, r0 - ldr r3, _0801115C - adds r3, r2, r3 - str r3, [sp] - mov r0, r10 - ldr r1, [r0] - ldr r3, _08011160 - adds r0, r1, r3 - adds r0, r5 - ldrh r0, [r0] - ldr r3, [sp] - strh r0, [r3] - ldr r0, _08011164 - adds r2, r0 - adds r1, 0x14 - adds r1, r5 - ldrh r0, [r1] - strh r0, [r2] - adds r5, 0x2 - adds r4, 0x1 - subs r7, 0x1 - cmp r7, 0 - bge _080110F2 - mov r2, r12 - adds r6, 0x1 - mov r3, r8 - cmp r3, 0x14 - ble _080110D4 - 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 -_08011150: .4byte gUnknown_203B0E4 -_08011154: .4byte 0x00004dd6 -_08011158: .4byte 0x00004dd4 -_0801115C: .4byte gUnknown_202B038 + 0x1000 -_08011160: .4byte 0x00002014 -_08011164: .4byte gUnknown_202B038 + 0x1800 - thumb_func_end sub_80110B0 - - thumb_func_start sub_8011168 -sub_8011168: - push {r4,r5,lr} - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - ldr r3, _080111B0 - ldr r1, [r3] - ldr r2, _080111B4 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - ldr r4, _080111B8 - adds r0, r1, r4 - str r2, [r0] - adds r4, 0x4 - adds r0, r1, r4 - str r2, [r0] - ldr r0, _080111BC - adds r1, r0 - str r2, [r1] - adds r5, r3, 0 - ldr r4, _080111C0 - movs r3, 0 - movs r1, 0x7 -_0801119A: - ldr r0, [r5] - adds r0, r2, r0 - adds r0, r4 - strh r3, [r0] - adds r2, 0x3C - subs r1, 0x1 - cmp r1, 0 - bge _0801119A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080111B0: .4byte gUnknown_203B0E4 -_080111B4: .4byte 0x00004ddc -_080111B8: .4byte 0x00004de0 -_080111BC: .4byte 0x00004de8 -_080111C0: .4byte 0x00004a30 - thumb_func_end sub_8011168 - - thumb_func_start sub_80111C4 -sub_80111C4: - push {r4-r6,lr} - movs r3, 0 - ldr r6, _08011238 - ldr r0, [r6] - ldr r2, _0801123C - adds r1, r0, r2 - ldr r2, [r1] - cmp r2, 0x1E - bgt _0801122E - ldr r0, [r0] - ldr r5, [r0, 0x4] - adds r0, r2, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080111E6 - movs r0, 0x1F - str r0, [r1] -_080111E6: - movs r4, 0 -_080111E8: - ldr r0, [r6] - ldr r1, _0801123C - 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 _080111E8 - ldr r0, _08011238 - ldr r0, [r0] - ldr r0, [r0, 0x4] - ldr r5, [r0, 0x4] - movs r4, 0 -_0801120C: - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, r2 - ldr r1, _08011238 - ldr r1, [r1] - ldr r2, _0801123C - 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 _0801120C - movs r3, 0x1 -_0801122E: - adds r0, r3, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08011238: .4byte gUnknown_203B0E4 -_0801123C: .4byte 0x00004dcc - thumb_func_end sub_80111C4 - - thumb_func_start sub_8011240 -sub_8011240: - push {r4-r6,lr} - ldr r2, _08011264 - ldr r0, [r2] - ldr r1, _08011268 - adds r3, r0, r1 - movs r4, 0 - ldrsh r1, [r3, r4] - ldr r5, _0801126C - adds r4, r0, r5 - movs r6, 0 - ldrsh r0, [r4, r6] - subs r1, r0 - adds r5, r2, 0 - cmp r1, 0x2F - bgt _08011270 - ldrh r0, [r3] - subs r0, 0x30 - b _08011278 - .align 2, 0 -_08011264: .4byte gUnknown_203B0E4 -_08011268: .4byte 0x00004dd8 -_0801126C: .4byte 0x00004dd4 -_08011270: - cmp r1, 0xC0 - ble _0801127A - ldrh r0, [r3] - subs r0, 0xC0 -_08011278: - strh r0, [r4] -_0801127A: - ldr r0, [r5] - ldr r1, _08011298 - adds r3, r0, r1 - movs r2, 0 - ldrsh r1, [r3, r2] - ldr r4, _0801129C - adds r2, r0, r4 - movs r6, 0 - ldrsh r0, [r2, r6] - subs r1, r0 - cmp r1, 0x2F - bgt _080112A0 - ldrh r0, [r3] - subs r0, 0x30 - b _080112A8 - .align 2, 0 -_08011298: .4byte 0x00004dda -_0801129C: .4byte 0x00004dd6 -_080112A0: - cmp r1, 0x70 - ble _080112AA - ldrh r0, [r3] - subs r0, 0x70 -_080112A8: - strh r0, [r2] -_080112AA: - adds r3, r5, 0 - ldr r0, [r3] - ldr r4, _080112F8 - adds r1, r0, r4 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bge _080112BE - movs r0, 0 - strh r0, [r1] -_080112BE: - ldr r0, [r3] - ldr r2, _080112FC - adds r1, r0, r2 - movs r6, 0 - ldrsh r0, [r1, r6] - cmp r0, 0 - bge _080112D0 - movs r0, 0 - strh r0, [r1] -_080112D0: - ldr r0, [r3] - adds r1, r0, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xEF - ble _080112E0 - movs r0, 0xEF - strh r0, [r1] -_080112E0: - ldr r0, [r5] - adds r2, r0, r2 - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0x97 - ble _080112F0 - movs r0, 0x97 - strh r0, [r2] -_080112F0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080112F8: .4byte 0x00004dd4 -_080112FC: .4byte 0x00004dd6 - thumb_func_end sub_8011240 - - thumb_func_start sub_8011300 -sub_8011300: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - ldr r0, _08011388 - ldr r2, [r0] - ldr r1, _0801138C - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r3, _08011390 - adds r0, r3 - adds r2, r0 - mov r9, r2 - movs r4, 0 - ldr r0, _08011394 - mov r8, r0 - movs r7, 0 - mov r6, r8 - movs r5, 0 -_0801132E: - ldr r0, _08011388 - ldr r2, [r0] - adds r0, r5, r2 - add r0, r8 - strh r7, [r0] - lsls r1, r4, 1 - mov r0, r9 - adds r0, 0x2 - adds r1, r0, r1 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - blt _08011370 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08011390 - adds r1, r0 - adds r1, r2, r1 - ldrb r0, [r1] - cmp r0, 0 - beq _08011370 - adds r0, r2, r6 - ldr r1, [r2, 0x8] - adds r2, r4, 0x4 - movs r3, 0x40 - str r3, [sp] - str r7, [sp, 0x4] - movs r3, 0x1 - str r3, [sp, 0x8] - movs r3, 0 - bl AxResInitFile -_08011370: - adds r6, 0x3C - adds r5, 0x3C - adds r4, 0x1 - cmp r4, 0x7 - ble _0801132E - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011388: .4byte gUnknown_203B0E4 -_0801138C: .4byte 0x00004a18 -_08011390: .4byte 0x00004018 -_08011394: .4byte 0x00004a30 - thumb_func_end sub_8011300 - - thumb_func_start sub_8011398 -sub_8011398: - push {r4-r6,lr} - sub sp, 0x12C - ldr r5, _080113F4 - ldr r0, [r5] - ldr r2, _080113F8 - adds r1, r0, r2 - ldr r1, [r1] - ldr r3, _080113FC - adds r0, r3 - lsls r1, 5 - ldr r0, [r0] - adds r6, r0, r1 - add r4, sp, 0xCC - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r2, 0x3 - str r2, [r4, 0x4] - movs r0, 0x7 - strh r0, [r4, 0x8] - movs r1, 0x2 - strh r1, [r4, 0xA] - movs r0, 0x15 - strh r0, [r4, 0xC] - strh r1, [r4, 0xE] - strh r1, [r4, 0x10] - str r2, [r4, 0x1C] - str r2, [r4, 0x34] - str r2, [r4, 0x4C] - ldr r0, [r5] - ldr r2, _08011400 - adds r1, r0, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - subs r2, 0x4 - adds r0, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - subs r1, r0 - cmp r1, 0x50 - bgt _08011404 - movs r0, 0x11 - b _08011406 - .align 2, 0 -_080113F4: .4byte gUnknown_203B0E4 -_080113F8: .4byte 0x00004a18 -_080113FC: .4byte 0x00004014 -_08011400: .4byte 0x00004dda -_08011404: - movs r0, 0x1 -_08011406: - strh r0, [r4, 0xA] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - movs r0, 0 - bl sub_80073B8 - ldr r1, _0801147C - ldr r2, [r6] - add r0, sp, 0x4 - bl sprintfStatic - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0x2 - add r2, sp, 0x4 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r0, 0 - bl sub_80073E0 - ldr r0, _08011480 - ldr r1, [r0] - ldr r0, _08011484 - adds r2, r1, r0 - movs r3, 0x8 - ldrsh r0, [r4, r3] - lsls r0, 3 - subs r0, 0x5 - str r0, [r2] - ldr r0, _08011488 - adds r2, r1, r0 - movs r3, 0xA - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, 0x5 - str r0, [r2] - ldr r0, _0801148C - adds r2, r1, r0 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, 0xA - str r0, [r2] - ldr r0, _08011490 - adds r1, r0 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 3 - adds r0, 0xA - str r0, [r1] - add sp, 0x12C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801147C: .4byte gUnknown_80D40FC -_08011480: .4byte gUnknown_203B0E4 -_08011484: .4byte 0x00004ddc -_08011488: .4byte 0x00004de0 -_0801148C: .4byte 0x00004de4 -_08011490: .4byte 0x00004de8 - thumb_func_end sub_8011398 - - thumb_func_start sub_8011494 -sub_8011494: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC8 - ldr r0, _08011610 - ldr r2, [r0] - ldr r1, _08011614 - adds r0, r2, r1 - ldr r0, [r0] - ldr r3, _08011618 - adds r1, r2, r3 - lsls r0, 5 - ldr r1, [r1] - adds r1, r0 - mov r8, r1 - ldr r0, _0801161C - adds r7, r2, r0 - add r4, sp, 0x64 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r0, 0x6 - str r0, [sp, 0x68] - add r1, sp, 0x6C - movs r0, 0x7 - strh r0, [r1] - movs r2, 0x2 - strh r2, [r1, 0x2] - add r1, sp, 0x70 - movs r0, 0x15 - strh r0, [r1] - mov r0, sp - adds r0, 0x72 - strh r2, [r0] - add r0, sp, 0x74 - strh r2, [r0] - add r5, sp, 0xC4 - str r5, [sp, 0x78] - movs r1, 0x3 - str r1, [sp, 0x80] - add r0, sp, 0x94 - str r1, [r0, 0x4] - add r0, sp, 0xAC - str r1, [r0, 0x4] - add r0, sp, 0x4 - adds r1, r4, 0 - movs r2, 0x60 - bl memcpy - movs r1, 0 - mov r9, r1 - movs r6, 0 - mov r10, r5 -_08011506: - mov r0, r8 - adds r0, 0x8 - adds r4, r0, r6 - ldrb r0, [r4] - bl sub_800FFE8 - lsls r0, 24 - cmp r0, 0 - beq _0801152A - ldr r0, _08011610 - ldr r0, [r0] - ldr r2, _08011620 - adds r0, r2 - add r0, r9 - ldrb r1, [r4] - strb r1, [r0] - movs r3, 0x1 - add r9, r3 -_0801152A: - adds r6, 0x1 - cmp r6, 0x7 - ble _08011506 - ldr r5, _08011610 - ldr r0, [r5] - ldr r1, _08011624 - adds r0, r1 - mov r2, r9 - str r2, [r0] - movs r4, 0 - movs r0, 0x1 - mov r3, r10 - strb r0, [r3] - add r0, sp, 0xC4 - strb r4, [r0, 0x1] - movs r1, 0x12 - strb r1, [r0, 0x2] - strb r4, [r0, 0x3] - strh r4, [r7, 0x18] - strh r2, [r7, 0x1A] - mov r0, r9 - strh r0, [r7, 0x1C] - strh r4, [r7, 0x1E] - strh r4, [r7, 0x20] - strh r4, [r7, 0x4] - movs r0, 0x10 - strh r0, [r7, 0x6] - str r4, [r7] - strh r4, [r7, 0xC] - strh r4, [r7, 0xE] - strh r4, [r7, 0x14] - strh r4, [r7, 0x16] - movs r0, 0x8 - strh r0, [r7, 0x8] - strh r0, [r7, 0xA] - adds r0, r7, 0 - adds r0, 0x28 - bl sub_801317C - movs r1, 0x1C - ldrsh r0, [r7, r1] - movs r1, 0 - bl sub_80095E4 - adds r1, r0, 0 - add r3, sp, 0x4 - adds r2, r3, 0 - adds r0, r1, 0x2 - strh r0, [r2, 0xE] - strh r0, [r3, 0x10] - lsls r1, 3 - adds r0, r7, 0 - bl sub_80137B0 - add r0, sp, 0x4 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - ldr r1, [r5] - ldr r2, _08011628 - adds r0, r1, r2 - str r4, [r0] - ldr r3, _0801162C - adds r0, r1, r3 - str r4, [r0] - adds r2, 0x8 - adds r0, r1, r2 - str r4, [r0] - adds r3, 0x8 - adds r1, r3 - str r4, [r1] - movs r0, 0 - bl sub_80073B8 - ldr r2, _08011630 - str r4, [sp] - movs r0, 0x10 - movs r1, 0 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r6, 0 - cmp r6, r9 - bge _08011678 - add r0, sp, 0x64 - mov r8, r0 - ldr r1, _08011634 - mov r10, r1 -_080115DC: - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_8013800 - adds r4, r0, 0 - ldr r2, _08011610 - ldr r0, [r2] - ldr r3, _08011620 - adds r0, r3 - adds r0, r6 - ldrb r5, [r0] - ldr r0, _08011638 - adds r1, r5, 0 - bl sub_80101F8 - cmp r5, 0 - bne _08011640 - str r5, [sp] - movs r0, 0xC - adds r1, r4, 0 - ldr r2, _0801163C - movs r3, 0 - bl PrintFormattedStringOnWindow - b _08011672 - .align 2, 0 -_08011610: .4byte gUnknown_203B0E4 -_08011614: .4byte 0x00004a18 -_08011618: .4byte 0x00004014 -_0801161C: .4byte 0x00004dfc -_08011620: .4byte 0x00004dec -_08011624: .4byte 0x00004df8 -_08011628: .4byte 0x00004ddc -_0801162C: .4byte 0x00004de0 -_08011630: .4byte gUnknown_80D4104 -_08011634: .4byte gFormatArgs -_08011638: .4byte gFormatBuffer_Items -_0801163C: .4byte gUnknown_80D4120 -_08011640: - ldr r1, _08011690 - ldr r0, [r1] - ldr r2, _08011694 - adds r0, r2 - ldrb r2, [r0] - adds r0, r5, 0 - mov r1, r8 - bl sub_80926F8 - mov r3, r8 - movs r1, 0x2 - ldrsh r0, [r3, r1] - mov r2, r10 - str r0, [r2] - movs r1, 0 - ldrsh r0, [r3, r1] - str r0, [r2, 0x4] - movs r0, 0 - str r0, [sp] - movs r0, 0xC - adds r1, r4, 0 - ldr r2, _08011698 - movs r3, 0 - bl PrintFormattedStringOnWindow -_08011672: - adds r6, 0x1 - cmp r6, r9 - blt _080115DC -_08011678: - movs r0, 0 - bl sub_80073E0 - add sp, 0xC8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011690: .4byte gUnknown_203B0E4 -_08011694: .4byte 0x00004a2c -_08011698: .4byte gUnknown_80D4124 - thumb_func_end sub_8011494 - - .align 2,0 diff --git a/asm/code_8023868.s b/asm/code_8023868.s index fc7d5fcde..3f2e8d83d 100644 --- a/asm/code_8023868.s +++ b/asm/code_8023868.s @@ -219,7 +219,7 @@ _08023A04: adds r0, r6 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows ldr r4, [r5] movs r0, 0xD6 lsls r0, 2 @@ -408,7 +408,7 @@ sub_8023B7C: adds r0, r1 movs r1, 0 movs r2, 0 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows bl sub_8023BD8 adds r2, r0, 0 ldr r0, [r5] @@ -557,7 +557,7 @@ sub_8023C60: adds r0, r4 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows ldr r0, [r5] bl MemoryFree movs r0, 0 @@ -660,7 +660,7 @@ _08023D38: adds r0, r2 movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows pop {r4,r5} pop {r0} bx r0 @@ -866,7 +866,7 @@ _08023F02: lsls r2, 2 adds r0, r2 adds r1, r7, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 mov r4, r8 ldr r0, [r4] diff --git a/asm/code_803B050.s b/asm/code_803B050.s index d9c242dbd..47d122d7c 100644 --- a/asm/code_803B050.s +++ b/asm/code_803B050.s @@ -42,7 +42,7 @@ sub_803B050: adds r0, 0x3C movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows movs r2, 0 movs r3, 0 movs r7, 0xCB @@ -215,7 +215,7 @@ sub_803B1BC: adds r0, 0x3C movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows ldr r0, [r4] bl MemoryFree movs r0, 0 @@ -253,7 +253,7 @@ sub_803B204: adds r0, 0x3C movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows ldr r0, [r4] movs r1, 0x1A ldrsh r0, [r0, r1] @@ -284,7 +284,7 @@ sub_803B204: adds r0, 0x3C movs r1, 0x1 movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C + bl ShowWindows pop {r4} pop {r0} bx r0 @@ -354,7 +354,7 @@ _0803B2DC: ldr r1, _0803B340 adds r4, r1 adds r1, r5, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r2, [r4, 0x4] ldr r0, [r6] diff --git a/asm/code_803D110.s b/asm/code_803D110.s index e081c6be1..c89b8b4ae 100644 --- a/asm/code_803D110.s +++ b/asm/code_803D110.s @@ -250,5 +250,5 @@ _0803E458: .4byte gDungeon _0803E45C: .4byte 0x00018217 _0803E460: .4byte 0x00018218 _0803E464: .4byte gDungeonBrightness -_0803E468: .4byte gUnknown_202D058 +_0803E468: .4byte gFontPalette + 0x20 thumb_func_end sub_803E250 diff --git a/asm/code_8040094.s b/asm/code_8040094.s index b728bf652..48176725e 100644 --- a/asm/code_8040094.s +++ b/asm/code_8040094.s @@ -150,7 +150,7 @@ _08040256: .align 2, 0 _0804026C: .4byte gUnknown_202EE04 _08040270: .4byte gUnknown_202EE01 -_08040274: .4byte gUnknown_202D03C +_08040274: .4byte gFontPalette + 0x4 _08040278: adds r5, r6, 0 adds r5, 0xE0 diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index 551333802..89960c859 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -3496,7 +3496,7 @@ _0806361E: bl BufferMoveName ldr r0, _08063690 mov r1, r9 - bl sub_8013800 + bl GetMenuEntryYCoord adds r4, r0, 0 ldrb r1, [r7] movs r0, 0x2 @@ -7171,7 +7171,7 @@ _080652D2: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653E0 ldr r2, [r0] @@ -7181,7 +7181,7 @@ _080652D2: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0x1 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653E4 ldr r2, [r0] @@ -7191,7 +7191,7 @@ _080652D2: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0x2 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653E8 ldr r2, [r0] @@ -7202,7 +7202,7 @@ _080652D2: movs r5, 0x4 adds r0, r4, 0 movs r1, 0x3 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653EC ldr r2, [r0] @@ -7225,7 +7225,7 @@ _080652D2: movs r5, 0x5 adds r0, r4, 0 movs r1, 0x4 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _080653F0 ldr r2, [r0] @@ -7248,7 +7248,7 @@ _080653F4: movs r5, 0x5 adds r0, r4, 0 movs r1, 0x4 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _08065440 ldr r2, [r0] @@ -7259,7 +7259,7 @@ _080653F4: _0806540E: ldr r0, _08065444 adds r1, r5, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r0, _08065448 ldr r2, [r0] @@ -7381,7 +7381,7 @@ sub_806544C: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldr r6, _08065570 movs r2, 0xAC @@ -7394,7 +7394,7 @@ sub_806544C: bl PrintFormattedStringOnWindow adds r0, r4, 0 movs r1, 0x1 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 movs r2, 0xB8 lsls r2, 1 @@ -7512,15 +7512,15 @@ CreateFieldGameOptionsMenu: bl sub_80137B0 adds r0, r4, 0 movs r1, 0 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x4] adds r0, r4, 0 movs r1, 0x1 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x8] adds r0, r4, 0 movs r1, 0x2 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0xC] movs r0, 0 bl sub_80073B8 @@ -7666,23 +7666,23 @@ CreateFieldDungeonMenu: bl sub_80137B0 adds r0, r4, 0 movs r1, 0 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x4] adds r0, r4, 0 movs r1, 0x1 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x8] adds r0, r4, 0 movs r1, 0x2 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0xC] adds r0, r4, 0 movs r1, 0x3 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x10] adds r0, r4, 0 movs r1, 0x4 - bl sub_8013800 + bl GetMenuEntryYCoord str r0, [sp, 0x14] movs r0, 0 bl sub_80073B8 @@ -7961,7 +7961,7 @@ CreateFieldOthersMenu: _08065A0A: ldr r0, _08065A7C adds r1, r4, 0 - bl sub_8013800 + bl GetMenuEntryYCoord stm r5!, {r0} adds r4, 0x1 cmp r4, 0 @@ -8418,7 +8418,7 @@ sub_8065CAC: _08065D7A: ldr r0, _08065DB0 adds r1, r4, 0 - bl sub_8013800 + bl GetMenuEntryYCoord adds r1, r0, 0 ldm r5!, {r2} movs r0, 0 diff --git a/asm/code_805D8C8_1.s b/asm/code_805D8C8_1.s index b5e0739e1..1030d0ad7 100644 --- a/asm/code_805D8C8_1.s +++ b/asm/code_805D8C8_1.s @@ -526,7 +526,7 @@ _08068D1C: add r1, sp, 0x214 movs r2, 0 movs r3, 0 - bl sub_8092638 + bl GetFriendAreaCapacity2 movs r7, 0 add r1, sp, 0x1F0 ldrh r0, [r1] diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s deleted file mode 100644 index aab7b47d5..000000000 --- a/asm/code_8066D04.s +++ /dev/null @@ -1,2596 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8066E14 -sub_8066E14: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r9, r0 - ldr r0, [r0, 0x70] - mov r10, r0 - mov r0, r9 - movs r1, 0 - movs r2, 0x5 - bl sub_8044D90 - adds r6, r0, 0 - mov r0, r9 - movs r1, 0x1 - movs r2, 0x6 - bl sub_8044D90 - adds r2, r0, 0 - adds r7, r2, 0 - mov r0, r10 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x80 - beq _08066E54 - ldr r0, _08066E50 - b _08066F1E - .align 2, 0 -_08066E50: .4byte gUnknown_80F8E2C -_08066E54: - mov r0, r10 - adds r0, 0x50 - ldrb r1, [r0] - str r0, [sp, 0x8] - cmp r1, 0x14 - bhi _08066E80 - ldrb r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08066E80 - ldr r0, _08066E78 - adds r1, r2, 0 - bl sub_8045BF8 - ldr r0, _08066E7C - b _08066F1E - .align 2, 0 -_08066E78: .4byte gFormatBuffer_Items -_08066E7C: .4byte gUnknown_80F8BE0 -_08066E80: - ldr r1, [sp, 0x8] - ldrb r0, [r1] - cmp r0, 0x81 - bne _08066EA8 - adds r2, r7, 0 - ldrb r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08066EA8 - ldr r0, _08066EA0 - adds r1, r2, 0 - bl sub_8045BF8 - ldr r0, _08066EA4 - b _08066F1E - .align 2, 0 -_08066EA0: .4byte gFormatBuffer_Items + 0x50 -_08066EA4: .4byte gItemStickyCannotMove3 -_08066EA8: - mov r2, r9 - movs r3, 0x4 - ldrsh r0, [r2, r3] - movs r3, 0x6 - ldrsh r1, [r2, r3] - bl GetTile - ldr r0, [r0, 0x14] - cmp r0, 0 - beq _08066ECC - bl GetEntityType - cmp r0, 0x3 - beq _08066ECC - ldr r0, _08066EC8 - b _08066F1E - .align 2, 0 -_08066EC8: .4byte gNoExchangesHere -_08066ECC: - adds r0, r6, 0 - ldr r5, [r0] - str r5, [sp] - adds r4, r7, 0 - ldr r6, [r4] - mov r8, sp - str r6, [sp, 0x4] - movs r3, 0xEF - mov r0, sp - ldrb r2, [r0] - ands r2, r3 - ldr r1, _08066F28 - adds r0, r1, 0 - ands r0, r5 - orrs r0, r2 - str r0, [sp] - mov r2, r8 - ldrb r0, [r2, 0x4] - ands r0, r3 - ands r1, r6 - orrs r1, r0 - str r1, [sp, 0x4] - mov r5, r10 - adds r5, 0x4C - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80461C8 - movs r0, 0 - strb r0, [r4, 0x2] - strb r0, [r4, 0x1] - strb r0, [r4] - add r1, sp, 0x4 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_80460F8 - lsls r0, 24 - cmp r0, 0 - bne _08066F30 - ldr r0, _08066F2C -_08066F1E: - ldr r1, [r0] - mov r0, r9 - bl LogMessageByIdWithPopupCheckUser - b _08066F7E - .align 2, 0 -_08066F28: .4byte 0xffffff00 -_08066F2C: .4byte gNothingCanBePutDownHere -_08066F30: - ldr r3, [sp, 0x8] - ldrb r0, [r3] - cmp r0, 0x81 - bne _08066F40 - ldr r0, [sp] - mov r1, r10 - str r0, [r1, 0x60] - b _08066F46 -_08066F40: - mov r0, sp - bl AddItemToInventory -_08066F46: - bl FillInventoryGaps - ldr r4, _08066F90 - add r1, sp, 0x4 - adds r0, r4, 0 - bl sub_8045BF8 - adds r4, 0x50 - adds r0, r4, 0 - mov r1, sp - bl sub_8045BF8 - ldr r0, _08066F94 - bl PlaySoundEffect - ldr r0, _08066F98 - ldr r1, [r0] - mov r0, r9 - bl LogMessageByIdWithPopupCheckUser - ldr r0, _08066F9C - ldr r0, [r0] - ldr r2, _08066FA0 - adds r0, r2 - ldrb r1, [r0] - mov r0, r9 - bl sub_807AB38 -_08066F7E: - 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 -_08066F90: .4byte gFormatBuffer_Items -_08066F94: .4byte 0x0000014d -_08066F98: .4byte gSwappedGroundItem -_08066F9C: .4byte gDungeon -_08066FA0: .4byte 0x00003a08 - thumb_func_end sub_8066E14 - - thumb_func_start sub_8066FA4 -sub_8066FA4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r7, r0, 0 - ldr r0, [r7, 0x70] - mov r9, r0 - movs r1, 0x4 - ldrsh r0, [r7, r1] - movs r2, 0x6 - ldrsh r1, [r7, r2] - bl GetTile - mov r10, r0 - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x7 - bl sub_8044D90 - adds r4, r0, 0 - adds r5, r4, 0 - ldr r0, _08067000 - mov r8, r0 - adds r1, r4, 0 - bl sub_8045BF8 - mov r0, r9 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x14 - bhi _08067008 - ldrb r1, [r4] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0x18 - bne _08067008 - mov r0, r8 - adds r0, 0x50 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _08067004 - b _0806709E - .align 2, 0 -_08067000: .4byte gFormatBuffer_Items -_08067004: .4byte gItemStickyCannotMove3 -_08067008: - mov r0, r9 - adds r0, 0x48 - ldrb r1, [r0] - str r0, [sp, 0x8] - cmp r1, 0x81 - bne _08067028 - adds r0, r5, 0 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08067028 - ldr r0, _08067024 - b _0806709E - .align 2, 0 -_08067024: .4byte gItemStickyCannotMove2 -_08067028: - mov r1, r10 - ldr r0, [r1, 0x14] - cmp r0, 0 - beq _08067040 - bl GetEntityType - cmp r0, 0x3 - beq _08067040 - ldr r0, _0806703C - b _0806709E - .align 2, 0 -_0806703C: .4byte gNoExchangesHere -_08067040: - mov r2, r10 - ldr r0, [r2, 0x14] - bl GetItemData - adds r4, r0, 0 - ldr r0, _080670A8 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r6, [r5] - str r6, [sp] - ldr r4, [r4] - mov r8, sp - str r4, [sp, 0x4] - movs r3, 0xEF - mov r0, sp - ldrb r2, [r0] - ands r2, r3 - ldr r1, _080670AC - adds r0, r1, 0 - ands r0, r6 - orrs r0, r2 - str r0, [sp] - mov r2, r8 - ldrb r0, [r2, 0x4] - ands r0, r3 - ands r1, r4 - orrs r1, r0 - str r1, [sp, 0x4] - adds r4, r7, 0x4 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80461C8 - movs r0, 0 - strb r0, [r5, 0x2] - strb r0, [r5, 0x1] - strb r0, [r5] - adds r0, r4, 0 - mov r1, sp - movs r2, 0x1 - bl sub_80460F8 - lsls r0, 24 - cmp r0, 0 - bne _080670B4 - ldr r0, _080670B0 -_0806709E: - ldr r1, [r0] - adds r0, r7, 0 - bl LogMessageByIdWithPopupCheckUser - b _080670EE - .align 2, 0 -_080670A8: .4byte gFormatBuffer_Items + 0x50 -_080670AC: .4byte 0xffffff00 -_080670B0: .4byte gNothingCanBePutDownHere -_080670B4: - ldr r1, [sp, 0x8] - ldrb r0, [r1] - cmp r0, 0x81 - bne _080670C4 - ldr r0, [sp, 0x4] - mov r2, r9 - str r0, [r2, 0x60] - b _080670CA -_080670C4: - add r0, sp, 0x4 - bl AddItemToInventory -_080670CA: - bl FillInventoryGaps - ldr r0, _08067100 - bl PlaySoundEffect - ldr r0, _08067104 - ldr r1, [r0] - adds r0, r7, 0 - bl LogMessageByIdWithPopupCheckUser - ldr r0, _08067108 - ldr r0, [r0] - ldr r1, _0806710C - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_807AB38 -_080670EE: - 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 -_08067100: .4byte 0x0000014d -_08067104: .4byte gSwappedGroundItem -_08067108: .4byte gDungeon -_0806710C: .4byte 0x00003a08 - thumb_func_end sub_8066FA4 - - thumb_func_start sub_8067110 -sub_8067110: - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - ldr r4, [r5, 0x70] - movs r1, 0 - movs r2, 0x8 - bl sub_8044D90 - adds r6, r0, 0 - ldr r0, _08067190 - adds r1, r6, 0 - bl sub_8045BF8 - ldr r0, _08067194 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument_2 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_8048D50 - lsls r0, 24 - cmp r0, 0 - beq _08067188 - adds r0, r6, 0 - bl sub_80464AC - adds r1, r0, 0 - adds r0, r5, 0 - bl LogMessageByIdWithPopupCheckUser - ldr r0, [r6] - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x66 - bl sub_8044DF0 - movs r0, 0x1E - movs r1, 0x11 - bl sub_803E708 - str r5, [sp] - add r0, sp, 0x8 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - adds r3, r5, 0 - bl sub_80479B8 - ldr r0, _08067198 - ldr r0, [r0] - ldr r1, _0806719C - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_807AB38 -_08067188: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08067190: .4byte gFormatBuffer_Items -_08067194: .4byte gFormatBuffer_Monsters -_08067198: .4byte gDungeon -_0806719C: .4byte 0x00003a08 - thumb_func_end sub_8067110 - - thumb_func_start sub_80671A0 -sub_80671A0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r6, r0, 0 - ldr r0, [r6, 0x70] - mov r8, r0 - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x9 - bl sub_8044D90 - adds r4, r0, 0 - mov r0, r8 - adds r0, 0x48 - ldrb r0, [r0] - cmp r0, 0x81 - bne _080671E8 - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080671E8 - ldr r0, _080671E0 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _080671E4 - b _08067230 - .align 2, 0 -_080671E0: .4byte gFormatBuffer_Items -_080671E4: .4byte gUnknown_80F8BE0 -_080671E8: - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _08067202 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08067220 -_08067202: - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08067220 - ldr r0, _08067218 - adds r1, r4, 0 - bl sub_8045BF8 - ldr r0, _0806721C - b _08067230 - .align 2, 0 -_08067218: .4byte gFormatBuffer_Items -_0806721C: .4byte gUnknown_80F8BE0 -_08067220: - adds r0, r6, 0 - movs r1, 0x1 - bl ShouldMonsterRunAwayAndShowEffect - lsls r0, 24 - cmp r0, 0 - beq _08067248 - ldr r0, _08067244 -_08067230: - ldr r1, [r0] - adds r0, r6, 0 - bl LogMessageByIdWithPopupCheckUser - movs r0, 0x14 - movs r1, 0x4C - bl sub_803E708 - b _080674F8 - .align 2, 0 -_08067244: .4byte gUnknown_80FF76C -_08067248: - ldr r2, [r4] - str r2, [sp, 0x4] - movs r1, 0xEF - add r0, sp, 0x4 - ldrb r0, [r0] - ands r0, r1 - ldr r1, _080672C0 - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x4] - mov r0, r8 - adds r0, 0x48 - ldrb r1, [r0] - adds r5, r0, 0 - cmp r1, 0x80 - bne _08067272 - movs r4, 0 - adds r0, 0x4 - movs r1, 0x1 - bl sub_80461C8 -_08067272: - movs r7, 0x1 - ldr r0, [sp, 0x4] - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _0806729A - ldr r0, [sp, 0x4] - lsrs r0, 16 - lsls r0, 24 - lsrs r0, 24 - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080672A8 -_0806729A: - ldr r0, [sp, 0x4] - lsrs r0, 8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080672A8 - movs r7, 0 -_080672A8: - cmp r7, 0 - beq _080672C4 - ldrb r0, [r5] - cmp r0, 0x80 - beq _080672F6 - movs r0, 0 - strb r0, [r4, 0x2] - strb r0, [r4, 0x1] - strb r0, [r4] - bl FillInventoryGaps - b _080672F6 - .align 2, 0 -_080672C0: .4byte 0xffffff00 -_080672C4: - ldrb r0, [r5] - cmp r0, 0x80 - bne _080672F0 - ldr r2, [sp, 0x4] - lsrs r0, r2, 8 - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 16 - ldr r1, _080672EC - ands r2, r1 - orrs r2, r0 - str r2, [sp, 0x4] - mov r0, r8 - adds r0, 0x4C - add r1, sp, 0x4 - movs r2, 0x1 - bl sub_80460F8 - b _080672F6 - .align 2, 0 -_080672EC: .4byte 0xffff00ff -_080672F0: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] -_080672F6: - adds r0, r6, 0 - movs r1, 0x29 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067310 - movs r0, 0x8 - bl DungeonRandInt - mov r1, r8 - adds r1, 0x46 - strb r0, [r1] -_08067310: - adds r0, r6, 0 - bl sub_8045888 - lsls r0, 24 - movs r1, 0xE0 - add r1, r8 - mov r10, r1 - adds r1, r6, 0x4 - str r1, [sp, 0x10] - add r1, sp, 0xC - mov r9, r1 - cmp r0, 0 - beq _08067364 - mov r0, r8 - adds r0, 0x46 - ldrb r4, [r0] - movs r1, 0xB2 - lsls r1, 1 - adds r0, r6, 0 - bl sub_80421C0 - movs r7, 0x7 - movs r5, 0x7 -_0806733E: - subs r4, 0x1 - ands r4, r7 - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - bl sub_806CDD4 - movs r0, 0x2 - movs r1, 0x15 - bl sub_803E708 - subs r5, 0x1 - cmp r5, 0 - bge _0806733E - movs r1, 0xB3 - lsls r1, 1 - add r1, r8 - movs r0, 0x4 - strb r0, [r1] -_08067364: - add r4, sp, 0x4 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - beq _08067380 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08067384 -_08067380: - movs r0, 0x1 - strb r0, [r4, 0x1] -_08067384: - ldr r0, _080673B0 - add r4, sp, 0x4 - adds r1, r4, 0 - bl sub_8045C08 - ldr r0, _080673B4 - mov r1, r8 - movs r2, 0 - bl SetMessageArgument_2 - ldrb r0, [r4, 0x2] - bl GetItemCategory - lsls r0, 24 - cmp r0, 0 - bne _080673BC - ldr r0, _080673B8 - ldr r1, [r0] - adds r0, r6, 0 - bl LogMessageByIdWithPopupCheckUser - b _080673C6 - .align 2, 0 -_080673B0: .4byte gFormatBuffer_Items -_080673B4: .4byte gFormatBuffer_Monsters -_080673B8: .4byte gMonThrewItem2 -_080673BC: - ldr r0, _080673F8 - ldr r1, [r0] - adds r0, r6, 0 - bl LogMessageByIdWithPopupCheckUser -_080673C6: - add r0, sp, 0x4 - ldrb r0, [r0, 0x2] - bl GetItemCategory - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8042208 - adds r0, r6, 0 - movs r1, 0x27 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067400 - ldr r0, _080673FC - ldr r1, [sp, 0xC] - ands r1, r0 - movs r0, 0x80 - lsls r0, 1 - orrs r1, r0 - str r1, [sp, 0xC] - b _08067408 - .align 2, 0 -_080673F8: .4byte gMonThrewItem1 -_080673FC: .4byte 0xffff00ff -_08067400: - ldr r1, _0806741C - ldr r0, [sp, 0xC] - ands r0, r1 - str r0, [sp, 0xC] -_08067408: - mov r1, r10 - ldrb r0, [r1] - cmp r0, 0x1 - beq _08067440 - cmp r0, 0x1 - bgt _08067420 - cmp r0, 0 - beq _08067426 - b _08067462 - .align 2, 0 -_0806741C: .4byte 0xffff00ff -_08067420: - cmp r0, 0x2 - beq _0806744C - b _08067462 -_08067426: - ldr r1, _08067438 - ldr r0, [sp, 0xC] - ands r0, r1 - ldr r1, _0806743C - ands r0, r1 - movs r1, 0xA0 - lsls r1, 12 - b _0806745E - .align 2, 0 -_08067438: .4byte 0xffffff00 -_0806743C: .4byte 0x0000ffff -_08067440: - ldr r1, _08067448 - ldr r0, [sp, 0xC] - ands r0, r1 - b _08067456 - .align 2, 0 -_08067448: .4byte 0xffffff00 -_0806744C: - ldr r1, _080674B4 - ldr r0, [sp, 0xC] - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 -_08067456: - ldr r1, _080674B8 - ands r0, r1 - movs r1, 0xC6 - lsls r1, 15 -_0806745E: - orrs r0, r1 - str r0, [sp, 0xC] -_08067462: - adds r0, r6, 0 - movs r1, 0xF - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08067486 - ldr r1, _080674B4 - ldr r0, [sp, 0xC] - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - ldr r1, _080674B8 - ands r0, r1 - movs r1, 0xC6 - lsls r1, 15 - orrs r0, r1 - str r0, [sp, 0xC] -_08067486: - add r0, sp, 0x4 - ldrb r0, [r0, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080674BC - add r4, sp, 0x8 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8083904 - mov r0, r9 - str r0, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - ldr r2, [sp, 0x10] - adds r3, r4, 0 - bl sub_80475C4 - b _080674D0 - .align 2, 0 -_080674B4: .4byte 0xffffff00 -_080674B8: .4byte 0x0000ffff -_080674BC: - mov r0, r8 - adds r0, 0x46 - ldrb r3, [r0] - mov r1, r9 - str r1, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - ldr r2, [sp, 0x10] - bl sub_8047190 -_080674D0: - adds r0, r6, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _080674F8 - mov r0, r8 - adds r0, 0x46 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_806CE68 - ldr r0, _08067508 - ldr r0, [r0] - ldr r1, _0806750C - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_807AB38 -_080674F8: - 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 -_08067508: .4byte gDungeon -_0806750C: .4byte 0x00003a08 - thumb_func_end sub_80671A0 - - thumb_func_start HandleTalkFieldAction -HandleTalkFieldAction: - push {r4,lr} - adds r4, r0, 0 - bl sub_806773C - adds r1, r0, 0 - movs r2, 0x1 - negs r2, r2 - adds r0, r4, 0 - bl sub_8067558 - pop {r4} - pop {r0} - bx r0 - thumb_func_end HandleTalkFieldAction - - thumb_func_start sub_806752C -sub_806752C: - push {r4,lr} - ldr r1, _08067550 - ldr r1, [r1] - ldrb r0, [r0, 0x4] - lsls r0, 2 - ldr r2, _08067554 - adds r1, r2 - adds r1, r0 - ldr r4, [r1] - bl GetLeader - adds r1, r4, 0 - movs r2, 0 - bl sub_8067558 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08067550: .4byte gDungeon -_08067554: .4byte 0x0001357c - thumb_func_end sub_806752C - - thumb_func_start sub_8067558 -sub_8067558: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x12C - adds r6, r0, 0 - adds r5, r1, 0 - mov r9, r2 - ldr r0, [r6, 0x70] - mov r8, r0 - cmp r5, 0 - bne _0806757C - ldr r0, _08067578 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067578: .4byte gCannotTalk -_0806757C: - adds r0, r6, 0 - bl sub_8070BC0 - lsls r0, 24 - cmp r0, 0 - bne _08067594 - ldr r0, _08067590 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067590: .4byte gCannotTalk -_08067594: - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0 - bl GetTreatmentBetweenMonsters - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080675AA - b _0806771E -_080675AA: - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0 - bl GetTreatmentBetweenMonsters - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080675C0 - b _0806771E -_080675C0: - ldr r7, [r5, 0x70] - ldr r4, _08067608 - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0 - bl SetMessageArgument_2 - adds r4, 0x50 - adds r0, r4, 0 - mov r1, r8 - movs r2, 0x7 - bl SetMessageArgument_2 - bl sub_8084778 - adds r0, r6, 0 - adds r1, r5, 0 - bl TrySendImmobilizeSleepEndMsg - adds r0, r5, 0 - bl sub_8070BC0 - lsls r0, 24 - cmp r0, 0 - beq _08067600 - adds r0, r5, 0 - movs r1, 0x1 - bl CheckVariousStatuses2 - lsls r0, 24 - cmp r0, 0 - beq _08067610 -_08067600: - ldr r0, _0806760C - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067608: .4byte gFormatBuffer_Monsters -_0806760C: .4byte gUnknown_80FE008 -_08067610: - adds r0, r6, 0x4 - adds r1, r5, 0x4 - bl GetDirectionTowardsPosition - adds r1, r0, 0 - adds r0, r6, 0 - bl sub_806CEFC - mov r1, r9 - cmp r1, 0 - blt _0806762E - adds r0, r5, 0 - bl sub_806CEFC - b _0806763C -_0806762E: - mov r0, r8 - adds r0, 0x46 - ldrb r1, [r0] - adds r1, 0x4 - adds r0, r5, 0 - bl sub_806CEFC -_0806763C: - ldrb r0, [r7, 0x8] - cmp r0, 0x1 - bne _08067648 - bl sub_807EF84 - b _0806772A -_08067648: - adds r0, r7, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08067694 - ldr r0, _08067668 - ldr r1, [r0] - ldr r2, _0806766C - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08067674 - ldr r0, _08067670 - ldr r1, [r0] - movs r0, 0 - b _08067716 - .align 2, 0 -_08067668: .4byte gDungeon -_0806766C: .4byte 0x0000066e -_08067670: .4byte gUnknown_80FF674 -_08067674: - ldr r3, _08067688 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0806768C - adds r0, r5, 0 - bl sub_80845E0 - b _0806772A - .align 2, 0 -_08067688: .4byte 0x00000677 -_0806768C: - adds r0, r5, 0 - bl sub_8084448 - b _0806772A -_08067694: - movs r0, 0x4 - ldrsh r5, [r7, r0] - movs r6, 0 - adds r0, r7, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - bne _080676AA - movs r5, 0xD2 - lsls r5, 1 - b _080676CC -_080676AA: - cmp r0, 0x47 - bne _080676B8 - ldr r5, _080676B4 - b _080676CC - .align 2, 0 -_080676B4: .4byte 0x000001a5 -_080676B8: - cmp r0, 0x41 - bne _080676CC - ldr r0, _080676E8 - ldr r0, [r0] - ldr r1, _080676EC - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080676CC - movs r6, 0x1 -_080676CC: - movs r3, 0x10 - ldrsh r2, [r7, r3] - adds r0, r2, 0 - cmp r2, 0 - bge _080676D8 - adds r0, r2, 0x3 -_080676D8: - movs r3, 0xE - ldrsh r1, [r7, r3] - asrs r0, 2 - cmp r1, r0 - bgt _080676F0 - movs r2, 0x2 - b _08067708 - .align 2, 0 -_080676E8: .4byte gDungeon -_080676EC: .4byte 0x0000065c -_080676F0: - movs r0, 0xE - ldrsh r4, [r7, r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 1 - movs r1, 0xA - bl __divsi3 - movs r2, 0 - cmp r4, r0 - bgt _08067708 - movs r2, 0x1 -_08067708: - mov r0, sp - adds r1, r5, 0 - adds r3, r6, 0 - bl sub_806A3D4 - movs r0, 0 - mov r1, sp -_08067716: - movs r2, 0x1 - bl DisplayDungeonMessage - b _0806772A -_0806771E: - ldr r0, _08067738 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl DisplayDungeonMessage -_0806772A: - add sp, 0x12C - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067738: .4byte gCannotTalk - thumb_func_end sub_8067558 - - thumb_func_start sub_806773C -sub_806773C: - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_80696A8 - adds r4, r0, 0 - cmp r4, 0 - beq _08067760 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - bne _08067760 - ldr r0, [r5, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _08067760 - adds r0, r4, 0 - b _08067762 -_08067760: - movs r0, 0 -_08067762: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806773C - - thumb_func_start sub_8067768 -sub_8067768: - push {r4,lr} - ldr r1, _0806778C - ldr r1, [r1] - ldrb r0, [r0, 0x4] - lsls r0, 2 - ldr r2, _08067790 - adds r1, r2 - adds r1, r0 - ldr r4, [r1] - bl GetLeader - adds r1, r4, 0 - movs r2, 0 - bl sub_8067794 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806778C: .4byte gDungeon -_08067790: .4byte 0x0001357c - thumb_func_end sub_8067768 - - thumb_func_start sub_8067794 -sub_8067794: - push {r4-r7,lr} - sub sp, 0x40 - adds r7, r1, 0 - ldr r4, [r7, 0x70] - cmp r7, 0 - bne _080677B4 - ldr r0, _080677B0 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl DisplayDungeonMessage - b _0806786C - .align 2, 0 -_080677B0: .4byte gCannotFarewell -_080677B4: - ldr r0, _080677F0 - adds r1, r7, 0 - movs r2, 0 - bl SubstitutePlaceholderStringTags - ldr r0, _080677F4 - ldr r5, [r0] - ldr r0, _080677F8 - ldr r6, [r0] - ldrb r2, [r4, 0xA] - cmp r2, 0 - blt _08067834 - ldr r1, _080677FC - movs r0, 0x64 - muls r0, r2 - ldr r2, _08067800 - adds r0, r2 - ldr r1, [r1] - adds r4, r1, r0 - movs r1, 0xA - ldrsh r0, [r4, r1] - bl sub_806A564 - lsls r0, 24 - cmp r0, 0 - beq _0806780C - ldr r0, _08067804 - ldr r5, [r0] - ldr r0, _08067808 - b _08067832 - .align 2, 0 -_080677F0: .4byte gFormatBuffer_Monsters -_080677F4: .4byte gSayFarewellQ -_080677F8: .4byte gUnknown_80F913C -_080677FC: .4byte gRecruitedPokemonRef -_08067800: .4byte 0x00008df8 -_08067804: .4byte gUnknown_80F9114 -_08067808: .4byte gMonDisappointedAndLeft -_0806780C: - movs r2, 0xA - ldrsh r0, [r4, r2] - bl sub_806A58C - lsls r0, 24 - cmp r0, 0 - beq _08067834 - bl IsMakuhitaTrainingMaze - lsls r0, 24 - cmp r0, 0 - beq _0806782C - ldr r0, _08067828 - b _0806782E - .align 2, 0 -_08067828: .4byte gSendMonBackQ -_0806782C: - ldr r0, _08067874 -_0806782E: - ldr r5, [r0] - ldr r0, _08067878 -_08067832: - ldr r6, [r0] -_08067834: - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl DisplayDungeonYesNoMessage - cmp r0, 0x1 - bne _0806786C - ldr r4, _0806787C - mov r0, sp - adds r1, r4, 0 - movs r2, 0x40 - bl strncpy - ldr r1, _08067880 - adds r0, r7, 0 - movs r2, 0 - bl sub_8068FE0 - adds r0, r4, 0 - mov r1, sp - movs r2, 0x40 - bl strncpy - movs r0, 0 - adds r1, r6, 0 - movs r2, 0x1 - bl DisplayDungeonMessage -_0806786C: - add sp, 0x40 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067874: .4byte gSendMonBackWithItemQ -_08067878: .4byte gMonWentBack -_0806787C: .4byte gFormatBuffer_Monsters -_08067880: .4byte 0x0000021d - thumb_func_end sub_8067794 - - thumb_func_start HandleUseMovePlayerAction -HandleUseMovePlayerAction: - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r6, 0 - b _0806789A -_0806788E: - ldr r1, _08067900 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080678C6 - adds r6, 0x1 -_0806789A: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8070828 - cmp r6, r0 - bge _080678C6 - ldr r4, [r5, 0x70] - adds r0, r4, 0 - adds r0, 0x50 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8055A00 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - beq _0806788E -_080678C6: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8057588 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080678F6 - adds r0, r5, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _080678F0 - ldr r0, [r5, 0x70] - adds r0, 0x50 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_806A9B4 -_080678F0: - adds r0, r5, 0 - bl sub_806A1B0 -_080678F6: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08067900: .4byte 0x00000159 - thumb_func_end HandleUseMovePlayerAction - - thumb_func_start sub_8067904 -sub_8067904: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r5, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldr r6, [r5, 0x70] - ldr r1, _08067940 - movs r0, 0 - str r0, [r1] - add r0, sp, 0x8 - mov r1, r9 - bl InitPokemonMove - adds r0, r6, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x1 - bne _0806794C - ldr r0, _08067944 - adds r1, r5, 0 - movs r2, 0 - bl SubstitutePlaceholderStringTags - ldr r0, _08067948 - b _08067962 - .align 2, 0 -_08067940: .4byte gUnknown_202F208 -_08067944: .4byte gFormatBuffer_Monsters -_08067948: .4byte gMonCringing -_0806794C: - adds r0, r6, 0 - adds r0, 0xAC - ldrb r0, [r0] - cmp r0, 0x4 - bne _08067974 - ldr r0, _0806796C - adds r1, r5, 0 - movs r2, 0 - bl SubstitutePlaceholderStringTags - ldr r0, _08067970 -_08067962: - ldr r1, [r0] - adds r0, r5, 0 - bl LogMessageByIdWithPopupCheckUser - b _08067A56 - .align 2, 0 -_0806796C: .4byte gFormatBuffer_Monsters -_08067970: .4byte gMonParalyzed -_08067974: - movs r0, 0xB0 - lsls r0, 1 - movs r1, 0 - mov r10, r1 - cmp r9, r0 - bne _08067984 - movs r2, 0x1 - mov r10, r2 -_08067984: - movs r0, 0 - mov r8, r0 - movs r7, 0 - add r4, sp, 0x8 - b _080679D2 -_0806798E: - movs r1, 0xBC - lsls r1, 1 - adds r0, r6, r1 - strh r7, [r0] - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - orrs r0, r7 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - movs r0, 0xA - strb r0, [r4, 0x4] - str r7, [sp] - str r4, [sp, 0x4] - adds r0, r5, 0 - mov r1, r10 - movs r2, 0 - movs r3, 0 - bl TryUseChosenMove - adds r0, r5, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _080679DE - ldr r2, _08067A68 - adds r0, r6, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080679DE - movs r0, 0x1 - add r8, r0 -_080679D2: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8070828 - cmp r8, r0 - blt _0806798E -_080679DE: - adds r0, r5, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _08067A56 - movs r0, 0xB0 - lsls r0, 1 - cmp r9, r0 - bne _08067A04 - ldr r0, _08067A6C - ldr r0, [r0] - cmp r0, 0 - bne _08067A04 - ldr r0, _08067A70 - ldr r1, [r0] - adds r0, r5, 0 - bl LogMessageByIdWithPopupCheckUser -_08067A04: - ldrb r0, [r6, 0x7] - cmp r0, 0 - beq _08067A50 - movs r0, 0xB0 - lsls r0, 1 - cmp r9, r0 - beq _08067A50 - ldr r4, _08067A74 - adds r3, r6, 0 - adds r3, 0x46 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0] - ldrh r1, [r5, 0x4] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08067A78 - ldr r1, [sp, 0x10] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x10] - ldrb r0, [r3] - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x2] - ldrh r2, [r5, 0x6] - adds r0, r2 - lsls r0, 16 - ldr r2, _08067A7C - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x10] - add r0, sp, 0x10 - movs r1, 0x1 - bl sub_807FE44 -_08067A50: - adds r0, r5, 0 - bl sub_8071DA4 -_08067A56: - 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 -_08067A68: .4byte 0x00000159 -_08067A6C: .4byte gUnknown_202F208 -_08067A70: .4byte gUnknown_80FC690 -_08067A74: .4byte gAdjacentTileOffsets -_08067A78: .4byte 0xffff0000 -_08067A7C: .4byte 0x0000ffff - thumb_func_end sub_8067904 - - thumb_func_start sub_8067A80 -sub_8067A80: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x6C - str r1, [sp, 0x68] - mov r8, r2 - mov r9, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x64] - ldr r1, _08067AC8 - add r0, sp, 0x4 - movs r2, 0x60 - bl memcpy - ldr r1, _08067ACC - movs r0, 0 - str r0, [r1] - mov r10, r0 - cmp r10, r8 - blt _08067AB0 - b _08067ED8 -_08067AB0: - ldr r5, _08067AD0 - mov r4, r9 - mov r3, r8 -_08067AB6: - ldm r4!, {r2} - ldrh r1, [r2] - adds r0, r5, 0 - ands r0, r1 - strh r0, [r2] - subs r3, 0x1 - cmp r3, 0 - bne _08067AB6 - b _08067ED8 - .align 2, 0 -_08067AC8: .4byte gUnknown_8106DC8 -_08067ACC: .4byte gUnknown_202F30C -_08067AD0: .4byte 0x00007fff -_08067AD4: - movs r7, 0 - ldr r1, _08067B98 - movs r0, 0x1 - strb r0, [r1] - strb r7, [r1, 0x1] - movs r0, 0xE - strb r0, [r1, 0x2] - strb r7, [r1, 0x3] - add r0, sp, 0x4 - movs r1, 0x1 - bl sub_803ECB4 - ldr r5, _08067B9C - ldr r2, [r5] - ldr r0, [sp, 0x68] - str r0, [sp] - ldr r0, [sp, 0x64] - mov r1, r9 - mov r3, r8 - bl sub_8067F00 - ldr r4, _08067BA0 - mov r0, r8 - cmp r0, 0x8 - ble _08067B08 - movs r0, 0x8 -_08067B08: - strh r0, [r4, 0x1A] - mov r1, r10 - strh r1, [r4, 0x18] - movs r0, 0x8 - strh r0, [r4, 0x1C] - strh r7, [r4, 0x1E] - strh r7, [r4, 0x20] - strh r7, [r4, 0x4] - movs r0, 0x12 - strh r0, [r4, 0x6] - strh r7, [r4, 0xC] - strh r7, [r4, 0xE] - strh r7, [r4, 0x14] - str r7, [r4] - adds r0, r4, 0 - adds r0, 0x28 - bl sub_801317C - adds r0, r4, 0 - movs r1, 0 - bl sub_80137B0 - adds r6, r5, 0 -_08067B36: - ldr r0, _08067BA0 - bl AddMenuCursorSprite - movs r5, 0 - movs r7, 0 - ldr r0, [r6] - mov r2, r8 - subs r0, r2, r0 - cmp r0, 0x8 - ble _08067B50 - movs r5, 0x1 - bl sub_80684C4 -_08067B50: - ldr r0, [r6] - cmp r0, 0 - beq _08067B5C - movs r7, 0x1 - bl sub_8068344 -_08067B5C: - movs r0, 0 - ldr r1, _08067BA4 - bl sub_8014140 - adds r4, r0, 0 - movs r0, 0x37 - bl sub_803E46C - cmp r4, 0x2 - bne _08067BAC - cmp r5, 0 - beq _08067BAC - ldr r0, [r6] - mov r3, r8 - subs r0, r3, r0 - cmp r0, 0x8 - ble _08067BF0 - ldr r5, _08067BA8 - movs r4, 0x5 -_08067B82: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067B82 - b _08067BEA - .align 2, 0 -_08067B98: .4byte gUnknown_202F308 -_08067B9C: .4byte gUnknown_202F30C -_08067BA0: .4byte gUnknown_202EE10 -_08067BA4: .4byte gUnknown_8106DA4 -_08067BA8: .4byte gIwramTextFunc1 -_08067BAC: - ldr r0, _08067BF8 - ldrh r1, [r0, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08067C0C - movs r0, 0x1 - bl sub_8083CE0 - ldr r1, _08067BFC - movs r2, 0x18 - ldrsh r0, [r1, r2] - cmp r0, 0x7 - bne _08067C04 - ldr r0, [r6] - mov r3, r8 - subs r0, r3, r0 - cmp r0, 0x8 - ble _08067BF0 - ldr r5, _08067C00 - movs r4, 0x5 -_08067BD6: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067BD6 -_08067BEA: - ldr r0, [r6] - adds r0, 0x1 - str r0, [r6] -_08067BF0: - movs r7, 0 - movs r0, 0x7 - mov r10, r0 - b _08067CF6 - .align 2, 0 -_08067BF8: .4byte gRealInputs -_08067BFC: .4byte gUnknown_202EE10 -_08067C00: .4byte gIwramTextFunc1 -_08067C04: - adds r0, r1, 0 - movs r1, 0 - bl sub_80136E0 -_08067C0C: - cmp r4, 0x1 - bne _08067C44 - cmp r7, 0 - beq _08067C44 - ldr r0, [r6] - cmp r0, 0 - beq _08067C38 - ldr r5, _08067C40 - movs r4, 0x5 -_08067C1E: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067C1E - ldr r0, [r6] - subs r0, 0x1 - str r0, [r6] -_08067C38: - movs r7, 0 - movs r1, 0 - mov r10, r1 - b _08067CF6 - .align 2, 0 -_08067C40: .4byte gIwramTextFunc2 -_08067C44: - ldr r0, _08067C8C - ldrh r1, [r0, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08067CA0 - movs r0, 0x1 - bl sub_8083CE0 - ldr r1, _08067C90 - movs r2, 0x18 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08067C98 - ldr r0, [r6] - cmp r0, 0 - beq _08067C84 - ldr r5, _08067C94 - movs r4, 0x5 -_08067C6A: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x37 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08067C6A - ldr r0, [r6] - subs r0, 0x1 - str r0, [r6] -_08067C84: - movs r7, 0 - movs r3, 0 - mov r10, r3 - b _08067CF6 - .align 2, 0 -_08067C8C: .4byte gRealInputs -_08067C90: .4byte gUnknown_202EE10 -_08067C94: .4byte gIwramTextFunc2 -_08067C98: - adds r0, r1, 0 - movs r1, 0 - bl sub_8013744 -_08067CA0: - bl sub_80048C8 - lsls r0, 24 - cmp r0, 0 - beq _08067CAC - b _08067B36 -_08067CAC: - ldr r0, _08067CD4 - ldrh r1, [r0, 0x2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08067D40 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08067CCC - ldr r2, _08067CD8 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _08067CDC -_08067CCC: - bl sub_8083D08 - movs r7, 0x1 - b _08067CF6 - .align 2, 0 -_08067CD4: .4byte gRealInputs -_08067CD8: .4byte gUnknown_202EE10 -_08067CDC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08067CF0 - adds r0, r2, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - bne _08067CF0 - b _08067B36 -_08067CF0: - bl sub_8083D30 - movs r7, 0x2 -_08067CF6: - ldr r4, _08067D34 - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - cmp r7, 0 - bne _08067D0A - b _08067AD4 -_08067D0A: - cmp r7, 0x2 - bne _08067D48 - movs r1, 0x18 - ldrsh r0, [r4, r1] - mov r10, r0 - ldr r0, _08067D38 - ldr r0, [r0] - ldr r2, [sp, 0x68] - cmp r0, r2 - bge _08067D20 - b _08067AD4 -_08067D20: - ldr r0, _08067D3C - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl DisplayDungeonYesNoMessage - cmp r0, 0x1 - bne _08067D32 - b _08067ED8 -_08067D32: - b _08067AD4 - .align 2, 0 -_08067D34: .4byte gUnknown_202EE10 -_08067D38: .4byte gUnknown_202F310 -_08067D3C: .4byte gUnknown_80FDFB8 -_08067D40: - bl sub_8083D1C - movs r7, 0x3 - b _08067CF6 -_08067D48: - cmp r7, 0x3 - bne _08067D64 - movs r0, 0x18 - ldrsh r3, [r4, r0] - mov r10, r3 - ldr r0, _08067D60 - ldr r0, [r0] - add r0, r10 - lsls r0, 2 - add r0, r9 - b _08067ED0 - .align 2, 0 -_08067D60: .4byte gUnknown_202F30C -_08067D64: - movs r2, 0x18 - ldrsh r1, [r4, r2] - mov r10, r1 - ldr r0, _08067DAC - ldr r0, [r0] - adds r4, r0, r1 - ldr r1, _08067DB0 - movs r0, 0 - str r0, [r1] - movs r0, 0x29 - movs r1, 0 - bl sub_8044F5C - movs r0, 0x2A - movs r1, 0 - bl sub_8044F5C - movs r0, 0x40 - movs r1, 0 - bl sub_8044F5C - lsls r0, r4, 2 - add r0, r9 - ldr r0, [r0] - ldrh r0, [r0] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08067DBC - movs r0, 0x29 - bl sub_8044FF0 - b _08067DC2 - .align 2, 0 -_08067DAC: .4byte gUnknown_202F30C -_08067DB0: .4byte gUnknown_202EE6C -_08067DB4: - bl sub_8083D08 - movs r7, 0x1 - b _08067E6E -_08067DBC: - movs r0, 0x2A - bl sub_8044FF0 -_08067DC2: - lsls r0, r4, 2 - mov r2, r9 - adds r1, r0, r2 - ldr r2, [r1] - ldrb r1, [r2, 0x2] - adds r6, r0, 0 - cmp r1, 0 - bne _08067DDC - ldrb r1, [r2, 0x4] - cmp r1, 0x40 - beq _08067DDC - cmp r1, 0x41 - bne _08067DE2 -_08067DDC: - movs r0, 0x29 - bl sub_8044FF0 -_08067DE2: - bl sub_8045064 - add r0, sp, 0x4 - movs r1, 0x15 - bl sub_805FC30 - ldr r4, _08067EA0 - ldr r5, _08067EA4 - adds r7, r4, 0 - adds r7, 0x2A -_08067DF6: - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - ldrh r1, [r5, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08067E1A - movs r0, 0x1 - bl sub_8083CE0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80136E0 -_08067E1A: - ldrh r1, [r5, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08067E32 - movs r0, 0x1 - bl sub_8083CE0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8013744 -_08067E32: - ldrh r1, [r5, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08067E46 - adds r0, r4, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _08067E58 -_08067E46: - movs r3, 0x18 - ldrsh r0, [r4, r3] - bl sub_8044F3C - lsls r0, 24 - cmp r0, 0 - bne _08067DB4 - bl sub_8083D30 -_08067E58: - ldrh r1, [r5, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08067E68 - ldrb r0, [r7] - cmp r0, 0 - beq _08067DF6 -_08067E68: - bl sub_8083D30 - movs r7, 0 -_08067E6E: - ldr r4, _08067EA0 - adds r0, r4, 0 - bl AddMenuCursorSprite - movs r0, 0x37 - bl sub_803E46C - cmp r7, 0 - bne _08067E82 - b _08067AD4 -_08067E82: - movs r1, 0x18 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08067EA8 - mov r2, r9 - adds r0, r6, r2 - ldr r1, [r0] - ldrh r2, [r1] - movs r3, 0x80 - lsls r3, 8 - adds r0, r3, 0 - orrs r0, r2 - strh r0, [r1] - b _08067EBC - .align 2, 0 -_08067EA0: .4byte gUnknown_202EE10 -_08067EA4: .4byte gRealInputs -_08067EA8: - cmp r0, 0x1 - bne _08067ECC - mov r1, r9 - adds r0, r6, r1 - ldr r2, [r0] - ldrh r0, [r2] - ldr r3, _08067EC8 - adds r1, r3, 0 - ands r0, r1 - strh r0, [r2] -_08067EBC: - mov r0, r8 - mov r1, r9 - bl sub_8068310 - b _08067AD4 - .align 2, 0 -_08067EC8: .4byte 0x00007fff -_08067ECC: - mov r1, r9 - adds r0, r6, r1 -_08067ED0: - ldr r0, [r0] - bl sub_806806C - b _08067AD4 -_08067ED8: - mov r0, r8 - mov r1, r9 - bl sub_8068310 - ldr r0, _08067EFC - ldr r0, [r0] - ldr r2, [sp, 0x68] - cmp r0, r2 - bge _08067EEC - b _08067AD4 -_08067EEC: - add sp, 0x6C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08067EFC: .4byte gUnknown_202F310 - thumb_func_end sub_8067A80 - - thumb_func_start sub_8067F00 -sub_8067F00: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r4, r0, 0 - mov r9, r1 - str r3, [sp, 0x4] - lsls r4, 24 - lsrs r4, 24 - subs r7, r2, 0x1 - movs r0, 0x16 - mov r8, r0 - movs r0, 0 - bl sub_80073B8 - ldr r0, _08067F44 - adds r1, r4, 0 - movs r2, 0 - bl WriteFriendAreaName - ldr r2, _08067F48 - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0 - movs r3, 0 - bl PrintFormattedStringOnWindow - movs r1, 0 - mov r10, r1 - b _08067FF6 - .align 2, 0 -_08067F44: .4byte gFormatBuffer_Monsters -_08067F48: .4byte gUnknown_8106E28 -_08067F4C: - ldr r4, _08067F8C - lsls r6, r7, 2 - mov r0, r9 - adds r5, r6, r0 - ldr r1, [r5] - adds r0, r4, 0 - movs r2, 0 - bl PrintColoredPokeNameToBuffer - adds r4, 0x50 - ldr r0, [r5] - movs r2, 0x8 - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl sub_808D930 - ldr r1, _08067F90 - adds r0, r7, 0x1 - str r0, [r1] - ldr r0, [r5] - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08067F9C - ldr r0, _08067F94 - ldr r1, _08067F98 - bl strcpy - b _08067FA4 - .align 2, 0 -_08067F8C: .4byte gFormatBuffer_Monsters -_08067F90: .4byte gFormatArgs -_08067F94: .4byte gFormatBuffer_Items -_08067F98: .4byte gUnknown_8106E2C -_08067F9C: - ldr r0, _08067FCC - ldr r1, _08067FD0 - bl strcpy -_08067FA4: - mov r1, r9 - adds r0, r6, r1 - ldr r0, [r0] - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 7 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _08067FD8 - ldr r2, _08067FD4 - movs r0, 0 - str r0, [sp] - movs r0, 0x7 - mov r1, r8 - movs r3, 0 - bl PrintFormattedStringOnWindow - b _08067FE6 - .align 2, 0 -_08067FCC: .4byte gFormatBuffer_Items -_08067FD0: .4byte gUnknown_8106E30 -_08067FD4: .4byte gUnknown_8106E34 -_08067FD8: - ldr r2, _08068028 - str r0, [sp] - movs r0, 0x7 - mov r1, r8 - movs r3, 0 - bl PrintFormattedStringOnWindow -_08067FE6: - movs r2, 0x1 - add r10, r2 - movs r0, 0xC - add r8, r0 - adds r7, 0x1 - mov r1, r10 - cmp r1, 0x9 - bgt _08068000 -_08067FF6: - cmp r7, 0 - blt _08067FE6 - ldr r2, [sp, 0x4] - cmp r7, r2 - blt _08067F4C -_08068000: - movs r0, 0 - bl sub_80073E0 - movs r0, 0x1 - bl sub_80073B8 - ldr r0, _0806802C - ldr r0, [r0] - ldr r1, [sp, 0x28] - cmp r0, r1 - blt _08068034 - ldr r2, _08068030 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x2 - movs r3, 0x1 - bl PrintFormattedStringOnWindow - b _0806804C - .align 2, 0 -_08068028: .4byte gUnknown_8106E48 -_0806802C: .4byte gUnknown_202F310 -_08068030: .4byte gUnknown_8106E5C -_08068034: - ldr r1, _08068064 - ldr r2, [sp, 0x28] - subs r0, r2, r0 - str r0, [r1] - ldr r2, _08068068 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x2 - movs r3, 0x1 - bl PrintFormattedStringOnWindow -_0806804C: - movs r0, 0x1 - bl sub_80073E0 - 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 -_08068064: .4byte gFormatArgs -_08068068: .4byte gUnknown_8106E6C - thumb_func_end sub_8067F00 - - thumb_func_start sub_806806C -sub_806806C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x110 - str r0, [sp, 0x108] - add r4, sp, 0x98 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r0, 0x6 - str r0, [r4, 0x4] - movs r1, 0x2 - strh r1, [r4, 0x8] - strh r1, [r4, 0xA] - movs r2, 0x12 - strh r2, [r4, 0xC] - movs r0, 0xE - strh r0, [r4, 0xE] - strh r2, [r4, 0x10] - strh r1, [r4, 0x12] - ldr r0, _080681B4 - str r0, [r4, 0x14] - movs r0, 0x3 - str r0, [r4, 0x1C] - str r0, [r4, 0x34] - str r0, [r4, 0x4C] - movs r7, 0 - add r1, sp, 0x44 - strh r7, [r1] - mov r0, sp - adds r0, 0x5A - strh r7, [r0] - ldr r0, _080681B8 - strh r7, [r0, 0x18] - mov r9, r1 - adds r1, 0xB4 - str r1, [sp, 0x10C] - add r2, sp, 0x68 - mov r10, r2 - adds r6, r0, 0 -_080680C4: - movs r3, 0 - mov r8, r3 - add r1, sp, 0xF8 - ldr r0, _080681BC - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - ldr r1, _080681B4 - movs r2, 0x4 - strb r2, [r1] - strb r7, [r1, 0x1] - movs r0, 0xA - strb r0, [r1, 0x2] - mov r4, r8 - strb r4, [r1, 0x3] - strh r7, [r6, 0x1E] - strh r2, [r6, 0x20] - mov r0, r8 - strh r0, [r6, 0x1A] - strh r0, [r6, 0x18] - strh r0, [r6, 0x1C] - strh r0, [r6, 0x4] - movs r0, 0x10 - strh r0, [r6, 0x6] - mov r1, r8 - strh r1, [r6, 0x14] - mov r2, r8 - str r2, [r6] - adds r0, r6, 0 - adds r0, 0x28 - bl sub_801317C - add r0, sp, 0x98 - movs r1, 0x1 - bl sub_803ECB4 - ldr r0, _080681C0 - ldr r0, [r0] - ldr r3, _080681C4 - adds r0, r3 - ldrb r2, [r0] - add r0, sp, 0x4 - ldr r1, [sp, 0x108] - bl sub_808FF20 - lsls r4, r7, 2 - mov r0, sp - adds r0, r4 - adds r0, 0xF8 - ldr r0, [r0] - mov r1, r8 - str r1, [sp] - adds r1, r7, 0 - add r2, sp, 0x4 - mov r3, r10 - bl CreatePokemonInfoTabScreen - ldr r1, _080681C8 - movs r2, 0 - ldrsh r0, [r1, r2] - adds r0, 0xF - lsls r0, 3 - strh r0, [r6, 0xC] - movs r3, 0x2 - ldrsh r0, [r1, r3] - adds r0, 0x1 - lsls r0, 3 - subs r0, 0x2 - strh r0, [r6, 0xE] -_08068150: - ldr r0, _080681B8 - bl AddMenuCursorSprite - ldr r1, [sp, 0x10C] - adds r0, r1, r4 - ldr r0, [r0] - cmp r0, 0x4 - bne _0806817A - mov r2, r10 - ldrb r0, [r2, 0x8] - cmp r0, 0 - beq _0806816C - bl sub_80684C4 -_0806816C: - mov r3, r9 - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0806817A - bl sub_8068344 -_0806817A: - movs r0, 0 - ldr r1, _080681CC - bl sub_8014140 - adds r5, r0, 0 - movs r0, 0x1C - bl sub_803E46C - ldr r3, _080681D0 - ldrh r1, [r3, 0x2] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080681A2 - ldr r2, _080681B8 - adds r0, r2, 0 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0 - beq _080681D4 -_080681A2: - movs r0, 0 - bl sub_8083CE0 - adds r7, 0x1 - cmp r7, 0x4 - beq _080681B0 - b _080682E8 -_080681B0: - movs r7, 0 - b _080682E8 - .align 2, 0 -_080681B4: .4byte gUnknown_202F308 -_080681B8: .4byte gUnknown_202EE10 -_080681BC: .4byte gUnknown_8106E80 -_080681C0: .4byte gDungeon -_080681C4: .4byte 0x0000065a -_080681C8: .4byte gUnknown_2027370 -_080681CC: .4byte gUnknown_8106DA4 -_080681D0: .4byte gRealInputs -_080681D4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080681E6 - adds r0, r2, 0 - adds r0, 0x2C - ldrb r0, [r0] - cmp r0, 0 - beq _080681FA -_080681E6: - movs r0, 0 - bl sub_8083CE0 - subs r7, 0x1 - movs r0, 0x1 - negs r0, r0 - cmp r7, r0 - bne _080682E8 - movs r7, 0x3 - b _080682E8 -_080681FA: - ldr r2, [sp, 0x10C] - adds r0, r2, r4 - ldr r0, [r0] - cmp r0, 0x4 - bne _08068294 - ldrh r1, [r3, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08068212 - cmp r5, 0x2 - bne _08068248 -_08068212: - mov r3, r10 - ldrb r0, [r3, 0x8] - cmp r0, 0 - beq _08068248 - movs r0, 0 - bl sub_8083CE0 - ldr r5, _08068244 - movs r4, 0x5 -_08068224: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x1C - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _08068224 - mov r4, r9 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080682E8 - .align 2, 0 -_08068244: .4byte gIwramTextFunc1 -_08068248: - ldr r0, _0806828C - ldrh r1, [r0, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08068258 - cmp r5, 0x1 - bne _08068294 -_08068258: - mov r1, r9 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _08068294 - movs r0, 0 - bl sub_8083CE0 - ldr r5, _08068290 - movs r4, 0x5 -_0806826C: - ldr r1, [r5] - movs r0, 0 - bl _call_via_r1 - movs r0, 0x1C - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _0806826C - mov r3, r9 - ldrh r0, [r3] - subs r0, 0x1 - strh r0, [r3] - b _080682E8 - .align 2, 0 -_0806828C: .4byte gRealInputs -_08068290: .4byte gIwramTextFunc2 -_08068294: - bl sub_80048C8 - lsls r0, 24 - cmp r0, 0 - beq _080682A0 - b _08068150 -_080682A0: - ldr r0, _080682C4 - ldrh r1, [r0, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080682B8 - ldr r2, _080682C8 - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _080682CC -_080682B8: - bl sub_8083D08 - movs r4, 0x1 - mov r8, r4 - b _080682E8 - .align 2, 0 -_080682C4: .4byte gRealInputs -_080682C8: .4byte gUnknown_202EE10 -_080682CC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080682E0 - adds r0, r2, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - bne _080682E0 - b _08068150 -_080682E0: - bl sub_8083D30 - movs r0, 0x1 - mov r8, r0 -_080682E8: - movs r0, 0x37 - bl sub_803E46C - mov r1, r8 - cmp r1, 0 - bne _080682F6 - b _080680C4 -_080682F6: - movs r0, 0 - movs r1, 0 - bl sub_803EAF0 - add sp, 0x110 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806806C - - .align 2,0 diff --git a/asm/code_8099360.s b/asm/code_8099360.s index 3b4fdac75..5acfafb4a 100644 --- a/asm/code_8099360.s +++ b/asm/code_8099360.s @@ -31,12 +31,12 @@ sub_8099690: _080996BC: .4byte gUnknown_8116028 _080996C0: .4byte gSystemFileArchive _080996C4: .4byte gGameOptionsRef -_080996C8: .4byte gFontPaletteAlt +_080996C8: .4byte gFontPalette + 0x40 _080996CC: ldr r4, _080996D0 b _080996D6 .align 2, 0 -_080996D0: .4byte gUnknown_202D1B8 +_080996D0: .4byte gFontPalette + 0x180 _080996D4: ldr r4, _08099704 _080996D6: @@ -61,7 +61,7 @@ _080996E4: pop {r0} bx r0 .align 2, 0 -_08099704: .4byte gUnknown_202D1F8 +_08099704: .4byte gFontPalette + 0x1C0 thumb_func_end sub_8099690 thumb_func_start sub_8099708 diff --git a/asm/ground_lives.s b/asm/ground_lives.s index 6bde62e41..2b94740ca 100644 --- a/asm/ground_lives.s +++ b/asm/ground_lives.s @@ -720,7 +720,7 @@ _080A7D12: mov r1, sp movs r2, 0 movs r3, 0 - bl sub_8092638 + bl GetFriendAreaCapacity2 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] @@ -923,7 +923,7 @@ _080A7EB8: mov r1, sp movs r2, 0 movs r3, 0 - bl sub_8092638 + bl GetFriendAreaCapacity2 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] @@ -2965,7 +2965,7 @@ _080A8DF8: adds r1, r4, 0 movs r2, 0 movs r3, 0 - bl sub_8092638 + bl GetFriendAreaCapacity2 movs r1, 0 ldrsh r0, [r4, r1] cmp r5, r0 diff --git a/data/data_80CE77C.s b/data/data_80CE77C.s index 33d1b0155..4be6cdd8a 100644 --- a/data/data_80CE77C.s +++ b/data/data_80CE77C.s @@ -62,542 +62,3 @@ gStatusSprites: @ 80D3474 gUnknown_80D3564: @ 80D3564 .byte 0,0,0,0 -@ - .string "pksdir0\0" - .align 2,0 - -@ Friend Area Data - - .global gFriendAreaLocations -gFriendAreaLocations: @ 80D3570 -@ replacing .incbin "baserom.gba", 0x000d3570, 0x94c - .4byte gUnknown_80D3EAC - .byte 0xc5, 0x01, 0x71, 0x00, 0x08, 0x09, 0x0a, 0x27, 0x2f, 0x0b, 0x3f, 0x3f, 0x05, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x00, 0x02, 0x00, 0x07, 0x00 @ Mountain Range - .4byte gUnknown_80D3EA4 - .byte 0xcd, 0x01, 0x1c, 0x00, 0x30, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x00, 0x0c, 0x00 - .4byte gUnknown_80D3E9C - .byte 0x61, 0x01, 0x78, 0x00, 0x0d, 0x0e, 0x11, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1b, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0xff, 0xff, 0x09, 0x00, 0xff, 0xff - .4byte gUnknown_80D3E8C - .byte 0x62, 0x01, 0x2d, 0x01, 0x0f, 0x0c, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0x0e, 0x00, 0x12, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3E80 - .byte 0x94, 0x01, 0x02, 0x01, 0x34, 0x35, 0x28, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x11, 0x00, 0xff, 0xff, 0x0b, 0x00, 0x08, 0x00, 0xff, 0xff, 0x0e, 0x00, 0x03, 0x00 - .4byte gUnknown_80D3E70 - .byte 0xc7, 0x01, 0x9d, 0x00, 0x12, 0x13, 0x14, 0x15, 0x3f, 0x3f, 0x3f, 0x3f, 0x0b, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x08, 0x00 - .4byte gUnknown_80D3E60 - .byte 0x08, 0x01, 0x9d, 0x00, 0x16, 0x17, 0x18, 0x19, 0x3f, 0x3f, 0x3f, 0x3f, 0x10, 0x00, 0xff, 0xff, 0x1b, 0x00, 0x09, 0x00, 0x14, 0x00, 0x1a, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3E58 - .byte 0x97, 0x01, 0xa0, 0x00, 0x1a, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x08, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x1b, 0x00, 0xff, 0xff - .4byte gUnknown_80D3E48 - .byte 0x98, 0x01, 0xcf, 0x00, 0x1b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x04, 0x00, 0xff, 0xff, 0x0b, 0x00, 0x05, 0x00, 0x07, 0x00, 0x1b, 0x00, 0xff, 0xff, 0x0e, 0x00 - .4byte gUnknown_80D3E40 - .byte 0x33, 0x01, 0x79, 0x00, 0x1c, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x1b, 0x00, 0x02, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x14, 0x00, 0xff, 0xff, 0x06, 0x00 - .4byte gUnknown_80D3E30 - .byte 0x82, 0x01, 0x1d, 0x00, 0x1d, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x0c, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x0d, 0x00 - .4byte gUnknown_80D3E20 - .byte 0xc6, 0x01, 0xd0, 0x00, 0x1e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00, 0x07, 0x00, 0x08, 0x00, 0x04, 0x00 - .4byte gUnknown_80D3E18 - .byte 0xa2, 0x01, 0x46, 0x00, 0x1f, 0x20, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x0a, 0x00, 0x0d, 0x00, 0x02, 0x00 - .4byte gUnknown_80D3E10 - .byte 0x60, 0x01, 0x47, 0x00, 0x21, 0x23, 0x24, 0x22, 0x3f, 0x3f, 0x3f, 0x3f, 0x02, 0x00, 0xff, 0xff, 0x0c, 0x00, 0x0a, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x14, 0x00, 0x09, 0x00 - .4byte gUnknown_80D3E08 - .byte 0x63, 0x01, 0x04, 0x01, 0x25, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x03, 0x00, 0xff, 0xff, 0x04, 0x00, 0x08, 0x00, 0x1b, 0x00, 0xff, 0xff, 0x12, 0x00, 0xff, 0xff - .4byte gUnknown_80D3E00 - .byte 0x36, 0x01, 0x1c, 0x00, 0x26, 0x29, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x09, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x14, 0x00 - .4byte gUnknown_80D3DF8 - .byte 0x07, 0x01, 0xcb, 0x00, 0x10, 0x2a, 0x32, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x12, 0x00, 0xff, 0xff, 0x1b, 0x00, 0x06, 0x00, 0xff, 0xff, 0xff, 0xff, 0x19, 0x00 - .4byte gUnknown_80D3DF0 - .byte 0xc4, 0x01, 0x2d, 0x01, 0x2b, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DE8 - .byte 0x31, 0x01, 0x05, 0x01, 0x2e, 0x2c, 0x2d, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x03, 0x00, 0x0e, 0x00, 0xff, 0xff, 0xff, 0xff, 0x10, 0x00, 0x19, 0x00, 0xff, 0xff - .4byte gUnknown_80D3DE4 - .byte 0x2f, 0x00, 0x15, 0x00, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x17, 0x00, 0x1a, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DD4 - .byte 0x07, 0x01, 0x47, 0x00, 0x36, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x06, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0xff, 0xff, 0x18, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DC4 - .byte 0x5d, 0x00, 0x0c, 0x01, 0x37, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x19, 0x00, 0xff, 0xff, 0xff, 0xff, 0x16, 0x00, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DB4 - .byte 0x2d, 0x00, 0xcb, 0x00, 0x38, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x15, 0x00, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3DA4 - .byte 0x2d, 0x00, 0x70, 0x00, 0x39, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x16, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x00, 0x13, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D94 - .byte 0xd0, 0x00, 0x16, 0x00, 0x01, 0x03, 0x05, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x14, 0x00, 0x0f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x00 - .4byte gUnknown_80D3D84 - .byte 0xb2, 0x00, 0x0d, 0x01, 0x02, 0x04, 0x06, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x12, 0x00, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff, 0x15, 0x00, 0xff, 0xff - .4byte gUnknown_80D3D7C - .byte 0x81, 0x00, 0x42, 0x00, 0x07, 0x31, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0x06, 0x00, 0xff, 0xff, 0x18, 0x00, 0xff, 0xff, 0x13, 0x00, 0xff, 0xff, 0x17, 0x00 @ Beach - .4byte gUnknown_80D3D78 - .byte 0x63, 0x01, 0xa1, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x0e, 0x00, 0x08, 0x00, 0x07, 0x00, 0xff, 0xff, 0x02, 0x00, 0x09, 0x00, 0x06, 0x00, 0x10, 0x00 @ Team Name - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .4byte gUnknown_80D3D70 - .byte 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - @ Start of Friend Area String Pool (80D3D70) - @ These are what show on the map when going to Friend Areas - .global gUnknown_80D3D70 - gUnknown_80D3D70: - .string "ななし\0" - .align 2,0 - .global gUnknown_80D3D78 - gUnknown_80D3D78: - .string "$t\0" @ Team Name - .align 2,0 - .global gUnknown_80D3D7C - gUnknown_80D3D7C: - .string "Beach\0" - .align 2,0 - .global gUnknown_80D3D84 - gUnknown_80D3D84: - .string "Southern Sea\0" - .align 2,0 - .global gUnknown_80D3D94 - gUnknown_80D3D94: - .string "Northern Sea\0" - .align 2,0 - .global gUnknown_80D3DA4 - gUnknown_80D3DA4: - .string "Western Isles\0" - .align 2,0 - .global gUnknown_80D3DB4 - gUnknown_80D3DB4: - .string "Southwest Isles\0" - .align 2,0 - .global gUnknown_80D3DC4 - gUnknown_80D3DC4: - .string "Southern Isles\0" - .align 2,0 - .global gUnknown_80D3DD4 - gUnknown_80D3DD4: - .string "Northern Isles\0" - .align 2,0 - .global gUnknown_80D3DE4 - gUnknown_80D3DE4: - .string "Sky\0" - .align 2,0 - .global gUnknown_80D3DE8 - gUnknown_80D3DE8: - .string "Relics\0" - .align 2,0 - .global gUnknown_80D3DF0 - gUnknown_80D3DF0: - .string "Desert\0" - .align 2,0 - .global gUnknown_80D3DF8 - gUnknown_80D3DF8: - .string "Volcano\0" - .align 2,0 - .global gUnknown_80D3E00 - gUnknown_80D3E00: - .string "Ruins\0" - .align 2,0 - .global gUnknown_80D3E08 - gUnknown_80D3E08: - .string "Jungle\0" - .align 2,0 - .global gUnknown_80D3E10 - gUnknown_80D3E10: - .string "Cave\0" - .align 2,0 - .global gUnknown_80D3E18 - gUnknown_80D3E18: - .string "Marsh\0" - .align 2,0 - .global gUnknown_80D3E20 - gUnknown_80D3E20: - .string "Eastern Lakes\0" - .align 2,0 - .global gUnknown_80D3E30 - gUnknown_80D3E30: - .string "Northern Lakes\0" - .align 2,0 - .global gUnknown_80D3E40 - gUnknown_80D3E40: - .string "Pond\0" - .align 2,0 - .global gUnknown_80D3E48 - gUnknown_80D3E48: - .string "Eastern Ponds\0" - .align 2,0 - .global gUnknown_80D3E58 - gUnknown_80D3E58: - .string "River\0" - .align 2,0 - .global gUnknown_80D3E60 - gUnknown_80D3E60: - .string "Western Forest\0" - .align 2,0 - .global gUnknown_80D3E70 - gUnknown_80D3E70: - .string "Eastern Forest\0" - .align 2,0 - .global gUnknown_80D3E80 - gUnknown_80D3E80: - .string "Badlands\0" - .align 2,0 - .global gUnknown_80D3E8C - gUnknown_80D3E8C: - .string "South Plains\0" - .align 2,0 - .global gUnknown_80D3E9C - gUnknown_80D3E9C: - .string "Plains\0" - .align 2,0 - .global gUnknown_80D3EA4 - gUnknown_80D3EA4: - .string "Glacier\0" - .align 2,0 - .global gUnknown_80D3EAC - gUnknown_80D3EAC: - .string "Mountain Range\0" - .align 2,0 - - .global gUnknown_80D3EBC -gUnknown_80D3EBC: @ 80D3EBC -@ replacing .incbin "baserom.gba", 0x000d3ebc, 0x20 - .byte 0x80, 0x03 - .byte 0x80, 0x04 - .byte 0x80, 0x00 - .byte 0x80, 0x03 - .byte 0x80, 0x0f - .byte 0x80, 0x00 - .byte 0x80, 0x0c - .byte 0x80, 0x0f - .byte 0x80, 0x0b - .byte 0x80, 0x0c - .byte 0x80, 0x08 - .byte 0x80, 0x0b - .byte 0x80, 0x07 - .byte 0x80, 0x08 - .byte 0x80, 0x04 - .byte 0x80, 0x07 - - .global gUnknown_80D3EDC -gUnknown_80D3EDC: @ 80D3EDC - .byte 0xff, 0x00, 0x02, 0x01 - .byte 0x04, 0xff, 0x03, 0xff - .byte 0x06, 0x07, 0xff, 0xff - .byte 0x05, 0xff, 0xff, 0xff - - - .global gUnknown_80D3EEC -gUnknown_80D3EEC: @ 80D3EEC - .byte 0xff, 0xff, 0xff, 0x01 - .byte 0xff, 0xff, 0x03, 0xff - .byte 0xff, 0x07, 0xff, 0xff - .byte 0x05, 0xff, 0xff, 0xff - - .global gUnknown_80D3EFC -gUnknown_80D3EFC: @ 80D3EFC - .string "$t Team Base\0" - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gDungeonCoordinates -gDungeonCoordinates: @ 80D3F14 -@ replacing .incbin "baserom.gba", 0x000d3f14, 0x100 -@ 2 byte X and 2 byte Y - .2byte 172, 174 @ Tiny Woods - .2byte 171, 111 - .2byte 242, 126 - .2byte 232, 181 - .2byte 263, 155 - .2byte 298, 159 - .2byte 299, 142 - .2byte 203, 255 - .2byte 385, 166 - .2byte 388, 126 - .2byte 389, 109 - .2byte 417, 112 - .2byte 422, 101 - .2byte 432, 85 - .2byte 436, 69 - .2byte 442, 150 - .2byte 446, 163 - .2byte 365, 27 - .2byte 352, 12 - .2byte 133, 238 - .2byte 129, 143 - .2byte 344, 105 - .2byte 427, 62 - .2byte 27, 211 - .2byte 246, 315 - .2byte 443, 6 - .2byte 32, 279 - .2byte 404, 262 - .2byte 194, 63 - .2byte 159, 46 - .2byte 441, 310 - .2byte 231, 235 - .2byte 169, 287 - .2byte 441, 273 - .2byte 64, 87 - .2byte 80, 54 - .2byte 431, 225 - .2byte 27, 94 - .2byte 354, 298 - .2byte 336, 253 - .2byte 287, 222 - .2byte 63, 163 - .2byte 275, 111 - .2byte 202, 232 - .2byte 268, 302 - .2byte 336, 260 - .2byte 110, 79 - .2byte 225, 314 - .2byte 206, 314 - .2byte 11, 307 - .2byte 472, 25 - .2byte 250, 8 - .2byte 187, 190 - .2byte 205, 111 - .2byte 474, 6 - .2byte 183, 9 - .2byte 367, 214 - .2byte 278, 273 - .2byte 68, 305 - .2byte 270, 33 - .2byte 33, 39 - .2byte 217, 8 - .2byte 69, 280 - .2byte 192, 183 @ D63 - - .global gUnknown_80D4014 -gUnknown_80D4014: @ 80D4014 - .4byte wmp2font_text - .4byte wmp2mcc_text - .4byte wmp2cani_text - .4byte wmp2pal_text - .4byte wmp2fon1_text - - .global wmp2fon1_text - wmp2fon1_text: - .string "wmp2fon1\0" - .align 2,0 - - .global wmp2pal_text - wmp2pal_text: - .string "wmp2pal\0" - .align 2,0 - - .global wmp2cani_text - wmp2cani_text: - .string "wmp2cani\0" - .align 2,0 - - .global wmp2mcc_text - wmp2mcc_text: - .string "wmp2mcc\0" - .align 2,0 - - .global wmp2font_text - wmp2font_text: - .string "wmp2font\0" - .align 2,0 - - .global gUnknown_80D405C -gUnknown_80D405C: @ 80D405C - .string "ax%03d\0" - .align 2,0 - - .global gUnknown_80D4064 -gUnknown_80D4064: @ 80D4064 - .string "wmapspr\0" - .align 2,0 - - .global gUnknown_80D406C -gUnknown_80D406C: @ 80D406C - .string "palet\0" - .align 2,0 - - .global gUnknown_80D4074 -gUnknown_80D4074: @ 80D4074 - .string "{CENTER_ALIGN}{POKEMON_0}\0" - .align 2,0 - - .global gUnknown_80D407C -gUnknown_80D407C: @ 80D4074 - .string "Yes\0" - .align 2,0 - - .global gUnknown_80D4080 -gUnknown_80D4080: @ 80D4080 - .string "No\0" - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_80D408C -gUnknown_80D408C: @ 80D408C - .4byte wmapfont_text - .4byte wmapmcc_text - .4byte wmapcani_text - .4byte wmappal_text - - .global wmappal_text - wmappal_text: - .string "wmappal\0" - .align 2,0 - - .global wmapcani_text - wmapcani_text: - .string "wmapcani\0" - .align 2,0 - - .global wmapmcc_text - wmapmcc_text: - .string "wmapmcc\0" - .align 2,0 - - .global wmapfont_text - wmapfont_text: - .string "wmapfont\0" - .align 2,0 - - .global gUnknown_80D40C4 -gUnknown_80D40C4: @ 80D40C4 - .byte 0x00, 0x00, 0x18, 0x00 - .byte 0x18, 0x00, 0x18, 0x00 - .byte 0x18, 0x00, 0x00, 0x00 - .byte 0x18, 0x00, 0xE8, 0xFF - .byte 0x00, 0x00, 0xE8, 0xFF - .byte 0xE8, 0xFF, 0xE8, 0xFF - .byte 0xE8, 0xFF, 0x00, 0x00 - .byte 0xE8, 0xFF, 0x18, 0x00 - - .global gUnknown_80D40E4 -gUnknown_80D40E4: @ 80D40E4 - .string "ax%03d\0" - .align 2,0 - - .global gUnknown_80D40EC -gUnknown_80D40EC: @ 80D40EC - .string "wmapspr\0" - .align 2,0 - - .global gUnknown_80D40F4 -gUnknown_80D40F4: @ 80D40F4 - .string "palet\0" - .align 2,0 - - .global gUnknown_80D40FC -gUnknown_80D40FC: @ 80D40FC - .string "{CENTER_ALIGN}%s\0" - .align 2,0 - - .global gUnknown_80D4104 -gUnknown_80D4104: @ 80D4104 - .string "Where would you like to go?\0" - .align 2,0 - - .global gUnknown_80D4120 -gUnknown_80D4120: @ 80D4120 - .string "{MOVE_ITEM_0}\0" - .align 2,0 - - .global gUnknown_80D4124 -gUnknown_80D4124: @ 80D4124 - .string "{MOVE_ITEM_0}($v02" - .byte 0x81, 0x5E - .asciz "$v12)" - .align 2,0 - - .asciz "pksdir0" - .asciz "pksdir0" - - .global gUnknown_80D4144 -gUnknown_80D4144: @ 80D4144 - .2byte 302 - .2byte 303 - .2byte 303 - .2byte 301 - .2byte 304 - .2byte 306 - .2byte 307 - .2byte 0 - - .string "pksdir0\0" - .string "pksdir0\0" - .4byte noneText - .byte 0xff, 0xff, 0xff, 0xff - .4byte noneText - - .global noneText - noneText: - .string "none\0" - .align 2,0 - - .4byte defaultText - .byte 0xff, 0xff, 0xff, 0xff - .4byte noneText - - .global defaultText - defaultText: - .string "default\0" diff --git a/data/data_80CE77C_2.s b/data/data_80CE77C_2.s new file mode 100644 index 000000000..4812dafbd --- /dev/null +++ b/data/data_80CE77C_2.s @@ -0,0 +1,36 @@ + .section .rodata + + .align 2,0 + + .asciz "pksdir0" + .asciz "pksdir0" + + .global gUnknown_80D4144 +gUnknown_80D4144: @ 80D4144 + .2byte 302 + .2byte 303 + .2byte 303 + .2byte 301 + .2byte 304 + .2byte 306 + .2byte 307 + .2byte 0 + + .string "pksdir0\0" + .string "pksdir0\0" + .4byte noneText + .byte 0xff, 0xff, 0xff, 0xff + .4byte noneText + + .global noneText + noneText: + .string "none\0" + .align 2,0 + + .4byte defaultText + .byte 0xff, 0xff, 0xff, 0xff + .4byte noneText + + .global defaultText + defaultText: + .string "default\0" diff --git a/data/data_80F59C8.s b/data/data_80F59C8.s index 4bc061a0b..8afb78118 100644 --- a/data/data_80F59C8.s +++ b/data/data_80F59C8.s @@ -2,121 +2,6 @@ .section .rodata #.incbin "baserom.gba", 0xF59C4, 0x4 - - -.global gUnknown_80F5F70 -gUnknown_80F5F70: @ 80F5F70 -@ replacing .incbin "baserom.gba", 0xF5F70, 0x3C -.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00 -.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00 -.byte 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00 -.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x00, 0x00 - -.global gUnknown_80F5FAC -gUnknown_80F5FAC: @ 80F5FAC -@ replacing .incbin "baserom.gba", 0xF5FAC, 0x130 -.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 -.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 -.byte 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 -.byte 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - -.global gUnknown_80F60DC -gUnknown_80F60DC: @ 80F60DC -@ replacing .incbin "baserom.gba", 0xF60DC, 0x1C -.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 -.byte 0x04, 0x00, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00 - -.global gUnknown_80F60F8 -gUnknown_80F60F8: @ 80F60F8 -@ replacing .incbin "baserom.gba", 0x000f60f8, 0x8 -.string "banrpal\0" - -.global gUnknown_80F6100 -gUnknown_80F6100: @ 80F6100 -@ replacing .incbin "baserom.gba", 0x000f6100, 0x8 -.string "banfont\0" - -.global gUnknown_80F6108 -gUnknown_80F6108: @ 80F6108 -@ replacing .incbin "baserom.gba", 0x000f6108, 0x4 -.byte 0x23, 0x00, 0x00, 0x00 - -.global gUnknown_80F610C -gUnknown_80F610C: @ 80F610C -@ replacing .incbin "baserom.gba", 0x000f610c, 0x4 -.byte 0x42, 0x00, 0x00, 0x00 - -.global gUnknown_80F6110 -gUnknown_80F6110: @ 80F6110 -@ replacing .incbin "baserom.gba", 0x000f6110, 0x8 -.string "%s%c%cF\0" - -.global gUnknown_80F6118 -gUnknown_80F6118: @ 80F6118 -@ replacing .incbin "baserom.gba", 0x000f6118, 0x8 -.string "%s%cF\0" -.align 2,0 - -.global gUnknown_80F6120 -gUnknown_80F6120: @ 80F6120 -@ replacing .incbin "baserom.gba", 0x000f6120, 0x88 -.byte 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00 -.byte 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 -.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 -.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 -.string "pksdir0\0" - -.global gUnknown_80F61A8 -gUnknown_80F61A8: @ 80F61A8 -@ replacing .incbin "baserom.gba", 0x000f61a8, 0x8 -.string "itempat\0" - -.global gUnknown_80F61B0 -gUnknown_80F61B0: @ 80F61B0 -@ replacing .incbin "baserom.gba", 0x000f61b0, 0x8 -.string "etcfont\0" - -.global gUnknown_80F61B8 -gUnknown_80F61B8: @ 80F61B8 -@ replacing .incbin "baserom.gba", 0x000f61b8, 0xc -.string "etcfonta\0" -.align 2,0 - -.global gUnknown_80F61C4 -gUnknown_80F61C4: @ 80F61C4 -@ replacing .incbin "baserom.gba", 0x000f61c4, 0x8 -.string "levfont\0" - -.global gUnknown_80F61CC -gUnknown_80F61CC: @ 80F61CC -@ replacing .incbin "baserom.gba", 0x000f61cc, 0x8 -.string "hp5font\0" - -.global gUnknown_80F61D4 -gUnknown_80F61D4: @ 80F61D4 -@ replacing .incbin "baserom.gba", 0x000f61d4, 0x8 -.string "colvec\0" -.align 2,0 - -.global gUnknown_80F61DC -gUnknown_80F61DC: @ 80F61DC -@ replacing .incbin "baserom.gba", 0x000f61dc, 0x10 -.string "trappat\0" .string "pksdir0\0" .global gUnknown_80F61EC diff --git a/data/data_80F59C8_1.s b/data/data_80F59C8_1.s new file mode 100644 index 000000000..fb53fe435 --- /dev/null +++ b/data/data_80F59C8_1.s @@ -0,0 +1,83 @@ +#include "constants/status.h" +.section .rodata +#.incbin "baserom.gba", 0xF59C4, 0x4 + + + +.global gUnknown_80F5F70 +gUnknown_80F5F70: @ 80F5F70 +@ replacing .incbin "baserom.gba", 0xF5F70, 0x3C +.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00 +.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00 +.byte 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00 +.byte 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x00, 0x00 + +.global gUnknown_80F5FAC +gUnknown_80F5FAC: @ 80F5FAC +@ replacing .incbin "baserom.gba", 0xF5FAC, 0x130 +.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 +.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 +.byte 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 +.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +.byte 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + +.global gUnknown_80F60DC +gUnknown_80F60DC: @ 80F60DC +@ replacing .incbin "baserom.gba", 0xF60DC, 0x1C +.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 +.byte 0x04, 0x00, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00 + +.global gUnknown_80F60F8 +gUnknown_80F60F8: @ 80F60F8 +@ replacing .incbin "baserom.gba", 0x000f60f8, 0x8 +.string "banrpal\0" + +.global gUnknown_80F6100 +gUnknown_80F6100: @ 80F6100 +@ replacing .incbin "baserom.gba", 0x000f6100, 0x8 +.string "banfont\0" + +.global gUnknown_80F6108 +gUnknown_80F6108: @ 80F6108 +@ replacing .incbin "baserom.gba", 0x000f6108, 0x4 +.byte 0x23, 0x00, 0x00, 0x00 + +.global gUnknown_80F610C +gUnknown_80F610C: @ 80F610C +@ replacing .incbin "baserom.gba", 0x000f610c, 0x4 +.byte 0x42, 0x00, 0x00, 0x00 + +.global gUnknown_80F6110 +gUnknown_80F6110: @ 80F6110 +@ replacing .incbin "baserom.gba", 0x000f6110, 0x8 +.string "%s%c%cF\0" + +.global gUnknown_80F6118 +gUnknown_80F6118: @ 80F6118 +@ replacing .incbin "baserom.gba", 0x000f6118, 0x8 +.string "%s%cF\0" +.align 2,0 + +.global gUnknown_80F6120 +gUnknown_80F6120: @ 80F6120 +@ replacing .incbin "baserom.gba", 0x000f6120, 0x88 +.byte 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00 +.byte 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 +.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 +.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 +.string "pksdir0\0" + diff --git a/data/data_8106A4C.s b/data/data_8106A4C.s index ea2317b5d..002a4b90d 100644 --- a/data/data_8106A4C.s +++ b/data/data_8106A4C.s @@ -257,101 +257,3 @@ gUnknown_8106D8C: @ 8106D8C @ ??? .align 2,0 .string "pksdir0\0" - -@ sub_8067A80 - sub_806806C - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_8106DA4 -gUnknown_8106DA4: @ 8106DA4 - .byte 0x01, 0x00, 0x38, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, 0x00, 0x68, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_8106DC8 -gUnknown_8106DC8: @ 8106DC8 - .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x02, 0x00, 0x08, 0xf3, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x15, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_8106E28 -gUnknown_8106E28: @ 8106E28 - .string "{POKEMON_0}\0" - .align 2,0 - - .global gUnknown_8106E2C -gUnknown_8106E2C: @ 8106E2C - .byte 0x87, 0x42, 0x00, 0x00 - - .global gUnknown_8106E30 -gUnknown_8106E30: @ 8106E30 - .byte 0x87, 0x40, 0x00, 0x00 - - .global gUnknown_8106E34 -gUnknown_8106E34: @ 8106E34 - .string "{MOVE_ITEM_0}{color CYAN}$v02:{POKEMON_0}{reset}\0" - .align 2,0 - - .global gUnknown_8106E48 -gUnknown_8106E48: @ 8106E48 - .string "{MOVE_ITEM_0}{color YELLOW}$v02:{POKEMON_0}{reset}\0" - .align 2,0 - - .global gUnknown_8106E5C -gUnknown_8106E5C: @ 8106E5C - .string "Press {B_BUTTON}\n" - .string "if OK.\0" - .align 2,0 - - .global gUnknown_8106E6C -gUnknown_8106E6C: @ 8106E6C - .string "Say bye to\n" - .string "{VALUE_0} more\0" - .align 2,0 - - .global gUnknown_8106E80 -gUnknown_8106E80: @ 8106E80 - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - -@ sub_8068614 - sub_806A3D4 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_8106E98 -gUnknown_8106E98: @ 8106E98 - .string "palet\0" - .align 2,0 - - .global gUnknown_8106EA0 -gUnknown_8106EA0: @ 8106EA0 - .string "ax%03d\0" - .align 2,0 - - .global gUnknown_8106EA8 -gUnknown_8106EA8: @ 8106EA8 - .string "talkp%d\0" - .align 2,0 - - .global gUnknown_8106EB0 -gUnknown_8106EB0: @ 8106EB0 - .string "talk%d\0" - -@ ??? - .align 2,0 - .string "pksdir0\0" - -@ sub_806C51C - sub_806E100 - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_8106EC8 -gUnknown_8106EC8: @ 8106EC8 -.byte 0x00, 0x01, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 -.byte 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05 -.byte 0x06, 0x07, 0x07, 0x07, 0x07, 0x0b, 0x07 - - diff --git a/data/data_8106A4C_2.s b/data/data_8106A4C_2.s new file mode 100644 index 000000000..c7152ee35 --- /dev/null +++ b/data/data_8106A4C_2.s @@ -0,0 +1,40 @@ + .section .rodata + +.align 2,0 +@ sub_8068614 - sub_806A3D4 + .string "pksdir0\0" + .align 2,0 + + .global gUnknown_8106E98 +gUnknown_8106E98: @ 8106E98 + .string "palet\0" + .align 2,0 + + .global gUnknown_8106EA0 +gUnknown_8106EA0: @ 8106EA0 + .string "ax%03d\0" + .align 2,0 + + .global gUnknown_8106EA8 +gUnknown_8106EA8: @ 8106EA8 + .string "talkp%d\0" + .align 2,0 + + .global gUnknown_8106EB0 +gUnknown_8106EB0: @ 8106EB0 + .string "talk%d\0" + +@ ??? + .align 2,0 + .string "pksdir0\0" + +@ sub_806C51C - sub_806E100 + .align 2,0 + .string "pksdir0\0" + .align 2,0 + + .global gUnknown_8106EC8 +gUnknown_8106EC8: @ 8106EC8 +.byte 0x00, 0x01, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 +.byte 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05 +.byte 0x06, 0x07, 0x07, 0x07, 0x07, 0x0b, 0x07 diff --git a/include/code_8004AA0.h b/include/code_8004AA0.h index 8c6d517b7..100c497ef 100644 --- a/include/code_8004AA0.h +++ b/include/code_8004AA0.h @@ -18,20 +18,6 @@ typedef struct unkStruct_202EE8C extern unkStruct_202EE8C gUnknown_202EE8C[32]; -// size: 0x4DD8 -struct UnkBgStruct -{ - OpenedFile *unk0[5]; - u8 padding[0x4C4C - 0x14]; - unkStruct_202EE8C unk4C4C[16]; - u32 unk4DCC; - u32 unk4DD0; - /* 0x4DD4 */ s16 xoffset; - /* 0x4DD6 */ s16 yoffset; -}; - -extern struct UnkBgStruct *gUnknown_203B0E4; - // size: Variable typedef struct unkDataFor8004AA4 { diff --git a/include/code_8009804.h b/include/code_8009804.h index 4441c6abb..b388eb0ee 100644 --- a/include/code_8009804.h +++ b/include/code_8009804.h @@ -3,6 +3,8 @@ #include "structs/rgb.h" +extern RGB gFontPalette[128]; + // size: 0xC struct unkStruct_202D240 { diff --git a/include/code_801B3C0.h b/include/code_801B3C0.h index 33db72e14..116f9816e 100644 --- a/include/code_801B3C0.h +++ b/include/code_801B3C0.h @@ -17,7 +17,7 @@ typedef struct unkStruct_203B230 u8 fill18[0x20 - 0x18]; u32 unk20; u32 unk24; - UnkTextStruct2 unk28[4]; + Windows unk28; MenuInputStructSub unk88; } unkStruct_203B230; @@ -25,4 +25,4 @@ bool8 sub_801B3C0(Item *item); u32 sub_801B410(void); void sub_801B450(void); -#endif // GUARD_CODE_801B3C0_H \ No newline at end of file +#endif // GUARD_CODE_801B3C0_H diff --git a/include/code_801B60C.h b/include/code_801B60C.h index 7b7073892..4ef7556ea 100644 --- a/include/code_801B60C.h +++ b/include/code_801B60C.h @@ -20,11 +20,11 @@ typedef struct unkStruct_203B234 MenuStruct unk78; /* 0xC8 */ u32 menuAction; MenuItem unkCC[5]; - UnkTextStruct2 unkF4[4]; + Windows windows; } unkStruct_203B234; bool8 sub_801B60C(u32, u8 id, u8 quantity); u32 sub_801B6AC(void); void sub_801B72C(void); -#endif // GUARD_CODE_801B60C_H \ No newline at end of file +#endif // GUARD_CODE_801B60C_H diff --git a/include/code_801C8C4.h b/include/code_801C8C4.h index d9dabca81..94500c8be 100644 --- a/include/code_801C8C4.h +++ b/include/code_801C8C4.h @@ -15,7 +15,7 @@ struct unkStruct_203B244 /* 0x4B4 */ struct_Sub80095E4_2 unk4B4; }; -bool8 sub_801C8C4(s32, s32, UnkTextStruct2_sub *, u32); +bool8 sub_801C8C4(s32, s32, DungeonPos *, u32); u32 sub_801CA08(bool8); u8 sub_801CB24(void); void sub_801CB5C(bool8); diff --git a/include/code_801D014.h b/include/code_801D014.h index 63168f5b7..ef70e1780 100644 --- a/include/code_801D014.h +++ b/include/code_801D014.h @@ -21,7 +21,7 @@ struct unk_203B250 MenuStruct unk18; MenuItem unk68[8]; u16 unkA8[8]; - UnkTextStruct2 unkB8[4]; + Windows windows; }; // size: 0x8 diff --git a/include/code_801EE10.h b/include/code_801EE10.h index 71c95f515..73aca6d6c 100644 --- a/include/code_801EE10.h +++ b/include/code_801EE10.h @@ -21,7 +21,7 @@ typedef struct unkStruct_203B270 /* 0x1C */ MenuInputStruct input; u32 unk50; u32 unk54; - UnkTextStruct2 unk58[4]; + Windows windows; const u8 *text; } unkStruct_203B270; diff --git a/include/code_80227B8.h b/include/code_80227B8.h index a7bcadfff..96accc32c 100644 --- a/include/code_80227B8.h +++ b/include/code_80227B8.h @@ -26,11 +26,11 @@ typedef struct unkStruct_203B294 /* 0xF4 */ u32 menuAction; MenuItem unkF8[8]; u16 unk138[8]; - UnkTextStruct2 unk148[4]; + Windows windows; } unkStruct_203B294; bool8 sub_80227B8(PokemonStruct1 *pkmn); u32 sub_8022860(void); void sub_8022908(void); -#endif // GUARD_CODE_80227B8_H \ No newline at end of file +#endif // GUARD_CODE_80227B8_H diff --git a/include/code_8023144.h b/include/code_8023144.h index 6ede851d4..43530a5c8 100644 --- a/include/code_8023144.h +++ b/include/code_8023144.h @@ -11,15 +11,13 @@ typedef struct unkStruct_3001B5C u8 unk0; u32 unk4; s32 unk8; - s16 unkC[2]; - u32 unk10; - u8 fill14[0x354 - 0x14]; + s16 unkC[420]; u8 unk354; u8 fill355[0x35C - 0x355]; /* 0x35C */ struct_Sub80095E4_2 s35C; } unkStruct_3001B5C; -bool8 sub_8023144(s32, s32 index, UnkTextStruct2_sub *sub, u32); +bool8 sub_8023144(s32, s32 index, DungeonPos *sub, u32); u32 sub_8023278(bool8); s16 sub_802331C(void); void sub_8023354(bool8 cursorSprite); diff --git a/include/code_8024458.h b/include/code_8024458.h index f9f50961d..7c40da5d5 100644 --- a/include/code_8024458.h +++ b/include/code_8024458.h @@ -13,12 +13,11 @@ struct unkStruct_203B2AC u8 unk40[0x48 - 0x40]; s16 speciesNum; struct unkStruct_808FF20 unk4C; - u32 unkB0; - u8 fillB4[0xE0 - 0xB4]; + struct UnkInfoTabStruct unkB0; u32 unkE0; - UnkTextStruct2 *unkE4; - UnkTextStruct2 unkE8[4]; - UnkTextStruct2_sub2 unk148; + Window *unkE4; + Windows unkE8; + WindowHeader unk148; }; bool8 sub_8024458(s16 speciesNum, s32); diff --git a/include/code_802DB28.h b/include/code_802DB28.h index 572a54287..e9f040ce9 100644 --- a/include/code_802DB28.h +++ b/include/code_802DB28.h @@ -15,7 +15,7 @@ struct unkStruct_203B2FC /* 0x30 */ u8 jobSlotIndex; /* 0x34 */ WonderMail *jobInfo; /* 0x38 */ struct MonPortraitMsg monPortrait; - UnkTextStruct2 unk48[4]; + Windows unk48; }; bool8 sub_802DB28(u8 jobSlotIndex, u8 dungeon); diff --git a/include/code_802DE84.h b/include/code_802DE84.h index cd553c082..efe8f24ed 100644 --- a/include/code_802DE84.h +++ b/include/code_802DE84.h @@ -11,8 +11,8 @@ struct unkStruct_203B300 MenuInputStructSub unk0; /* 0xC */ unkStruct_802C39C *mail; u32 unk10; - UnkTextStruct2 *unk14; - UnkTextStruct2 unk18[4]; + Window *unk14; + Windows unk18; u8 unk78[4]; }; @@ -20,4 +20,4 @@ bool8 sub_802DE84(unkStruct_802C39C *mail); u32 sub_802DEE0(void); void sub_802DF24(void); -#endif // GUARD_CODE_802DE84_H \ No newline at end of file +#endif // GUARD_CODE_802DE84_H diff --git a/include/constants/friend_area.h b/include/constants/friend_area.h index 99e9e878a..179a22a4f 100644 --- a/include/constants/friend_area.h +++ b/include/constants/friend_area.h @@ -1,9 +1,6 @@ #ifndef GUARD_CONSTANTS_FRIEND_AREA_H #define GUARD_CONSTANTS_FRIEND_AREA_H - -#define NUM_FRIEND_AREAS 58 - // Unlock Condition #define UNLOCK_SHOP_STORY 0 #define UNLOCK_SHOP_POST_GAME 1 @@ -68,5 +65,6 @@ #define SOUTHERN_ISLAND 55 #define ENCLOSED_ISLAND 56 #define FINAL_ISLAND 57 +#define NUM_FRIEND_AREAS 58 #endif diff --git a/include/credits1.h b/include/credits1.h index 83217ad18..39c029595 100644 --- a/include/credits1.h +++ b/include/credits1.h @@ -6,7 +6,7 @@ // size: 0x6C typedef struct Credits1Work { - UnkTextStruct2 unk0[4]; + Windows unk0; s32 unk60; s32 unk64; /* 0x68 */ s32 creditsCategoryIndex; @@ -26,4 +26,4 @@ bool8 DrawCredits(s32 creditsCategoryIndex, s32); s32 sub_8035574(void); void sub_803565C(void); -#endif // GUARD_CREDITS1_H \ No newline at end of file +#endif // GUARD_CREDITS1_H diff --git a/include/debug_menu1.h b/include/debug_menu1.h index 708296549..0fec0caaf 100644 --- a/include/debug_menu1.h +++ b/include/debug_menu1.h @@ -8,7 +8,7 @@ struct DebugMenu { MenuStruct unk0[4]; - UnkTextStruct2 unk140[4]; + Windows unk140; u32 fill1A0; }; @@ -16,4 +16,4 @@ void CreateDebugMenu(void); void DeleteDebugMenu(void); u32 UpdateDebugMenu(void); -#endif // GUARD_DEBUG_MENU1_H \ No newline at end of file +#endif // GUARD_DEBUG_MENU1_H diff --git a/include/debug_menu2.h b/include/debug_menu2.h index 40a0baa3f..39cbed18c 100644 --- a/include/debug_menu2.h +++ b/include/debug_menu2.h @@ -14,7 +14,7 @@ typedef struct unkStruct_203B3F0 MenuStruct unk4C; unkStructFor8013AA0 unk9C; u8 fillCC[0xD8 - 0xCC]; - UnkTextStruct2 unkD8[4]; + Windows unkD8; } unkStruct_203B3F0; -#endif // GUARD_DEBUG_MENU2_H \ No newline at end of file +#endif // GUARD_DEBUG_MENU2_H diff --git a/include/debug_menu3.h b/include/debug_menu3.h index cf61cfdd8..a5851b53a 100644 --- a/include/debug_menu3.h +++ b/include/debug_menu3.h @@ -12,7 +12,7 @@ typedef struct unkStruct_203B3F4 /* 0x8 */ u32 menuAction; /* 0xC */ MenuItem menuItems[8]; MenuStruct unk4C; - UnkTextStruct2 unk9C[4]; + Windows unk9C; } unkStruct_203B3F4; -#endif // GUARD_DEBUG_MENU3_H \ No newline at end of file +#endif // GUARD_DEBUG_MENU3_H diff --git a/include/debug_menu4.h b/include/debug_menu4.h index c7925fc54..7a886483a 100644 --- a/include/debug_menu4.h +++ b/include/debug_menu4.h @@ -17,7 +17,7 @@ typedef struct unkStruct_203B3F8 unkStructFor8013AA0 unk60; MenuItem unk90[8]; u16 unkD0[8]; - UnkTextStruct2 unkE0[4]; + Windows unkE0; } unkStruct_203B3F8; -#endif // GUARD_DEBUG_MENU4_H \ No newline at end of file +#endif // GUARD_DEBUG_MENU4_H diff --git a/include/dungeon_move.h b/include/dungeon_move.h new file mode 100644 index 000000000..ccb15e650 --- /dev/null +++ b/include/dungeon_move.h @@ -0,0 +1,9 @@ +#ifndef GUARD_DUNGEON_MOVE_H +#define GUARD_DUNGEON_MOVE_H + +#include "structs/str_pokemon.h" +#include "structs/str_moves.h" + +bool8 TryUseChosenMove(struct Entity *attacker, u32 r6, s32 itemId, u32 var_30, bool32 isLinkedMove, struct Move *move); + +#endif diff --git a/include/felicity_bank.h b/include/felicity_bank.h index 42c65e138..c4044d49d 100644 --- a/include/felicity_bank.h +++ b/include/felicity_bank.h @@ -22,7 +22,7 @@ typedef struct FelicityBankWork unkStructFor8013AA0 unk64; /* 0x94 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unkA8[4]; + Windows unkA8; } FelicityBankWork; bool8 CreateFelicityBank(s32 mode); diff --git a/include/friend_area.h b/include/friend_area.h index 5e6144a49..8ce8cde2b 100644 --- a/include/friend_area.h +++ b/include/friend_area.h @@ -10,13 +10,13 @@ typedef struct FriendAreaSettings } FriendAreaSettings; // size: 0xC -typedef struct unkStruct_8092638 -{ - /* 0x0 */ s16 numPokemon; - s16 unk2; +typedef struct FriendAreaCapacity +{ + /* 0x0 */ s16 maxPokemon; + /* 0x2 */ s16 currNoPokemon; /* 0x4 */ bool8 hasFriendArea; s32 unk8; -} unkStruct_8092638; +} FriendAreaCapacity; extern bool8 *gFriendAreas; @@ -38,7 +38,7 @@ void sub_8092404(u8, u16 *, bool8, bool8); void sub_809249C(u8 friendArea, bool8 clear); void sub_8092558(u8 *buffer, u8 index); void WriteFriendAreaName(u8 *buffer, u8 index, bool8 printPrice); -void sub_8092638(u8 friendArea, unkStruct_8092638 *, bool8 checkLeader, bool8 checkDungeon); -void sub_80926F8(u8, unkStruct_8092638 *, u8); +void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkLeader, bool8 checkPartner); +void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartner); -#endif // GUARD_FRIEND_AREA_H \ No newline at end of file +#endif // GUARD_FRIEND_AREA_H diff --git a/include/friend_area_action_menu.h b/include/friend_area_action_menu.h index 911f8e25e..132d5d898 100644 --- a/include/friend_area_action_menu.h +++ b/include/friend_area_action_menu.h @@ -65,11 +65,11 @@ struct unkStruct_203B2BC MenuItem menuItems[4]; u8 fill120[0x16C - 0x13C]; u16 unk16C[10]; - UnkTextStruct2 unk180[4]; + Windows unk180; }; u32 sub_8027074(void); u32 sub_80270A4(void); void sub_8027168(void); -#endif // GUARD_FRIEND_AREA_ACTION_MENU_H \ No newline at end of file +#endif // GUARD_FRIEND_AREA_ACTION_MENU_H diff --git a/include/friend_areas_map.h b/include/friend_areas_map.h new file mode 100644 index 000000000..2559c92ad --- /dev/null +++ b/include/friend_areas_map.h @@ -0,0 +1,121 @@ +#ifndef GUARD_FRIEND_AREAS_MAP_H +#define GUARD_FRIEND_AREAS_MAP_H + +#include "file_system.h" +#include "code_8004AA0.h" +#include "menu_input.h" +#include "structs/axdata.h" +#include "structs/str_position.h" +#include "constants/direction.h" + +#define MAX_AREAS_PER_LOCATION 8 + +struct FriendAreaLocationInfo +{ + const u8 *name; + DungeonPos pos; + u8 areasIds[MAX_AREAS_PER_LOCATION]; + s16 adjacentLocations[NUM_DIRECTIONS]; +}; + +struct MapLocation +{ + bool8 isShown; + s16 locationsByDirection[NUM_DIRECTIONS]; + axdata sprite; +}; + +enum FriendAreaLocations +{ + LOCATION_MOUNTAIN_RANGE, + LOCATION_GLACIER, + LOCATION_PLAINS, + LOCATION_SOUTH_PLAINS, + LOCATION_BADLANDS, + LOCATION_EASTERN_FOREST, + LOCATION_WESTERN_FOREST, + LOCATION_RIVER, + LOCATION_EASTERN_PONDS, + LOCATION_POND, + LOCATION_NORTHERN_LAKES, + LOCATION_EASTERN_LAKES, + LOCATION_MARSH, + LOCATION_CAVE, + LOCATION_JUNGLE, + LOCATION_RUINS, + LOCATION_VOLCANO, + LOCATION_DESERT, + LOCATION_RELICS, + LOCATION_SKY, + LOCATION_NORTHERN_ISLES, + LOCATION_SOUTHERN_ISLES, + LOCATION_SOUTHWEST_ISLES, + LOCATION_WESTERN_ISLES, + LOCATION_NORTHERN_SEA, + LOCATION_SOUTHERN_SEA, + LOCATION_BEACH, + LOCATION_TEAM_BASE, + LOCATION_UNUSED_28, + LOCATION_UNUSED_29, + LOCATION_UNUSED_30, + LOCATION_UNUSED_31, + NUM_FRIEND_AREA_LOCATIONS +}; + +// size: 0x4DD8 +struct FriendAreasMap +{ + OpenedFile *unk0[5]; + u16 unk14[64][64]; + u16 unk2014[64][64]; + const struct FriendAreaLocationInfo *locationsInfo; + struct MapLocation mapLocations[NUM_FRIEND_AREA_LOCATIONS]; + s32 currLocationId; + s32 unk4A1C; + s32 locationIdOnBPress; + s32 teamBaseLocationId; + s32 unk4A28; + u8 unk4A2C; + axdata arrowSprites[NUM_DIRECTIONS]; + axdata monAxSprite; + unkStruct_202EE8C unk4C4C[16]; + s32 brightness; + u32 unk4DD0; + DungeonPos bgPos; + DungeonPos monSpritePos; + s32 unk4DDC; + s32 unk4DE0; + s32 unk4DE4; + s32 unk4DE8; + u8 displayedAreas[MAX_AREAS_PER_LOCATION]; + u8 chosenFriendAreaId; + s32 displayedAreasCount; + MenuInputStruct menu; +}; + +extern struct FriendAreasMap *gFriendAreasMapPtr; + +struct struct_unk800F990 +{ + u32 unk0; + u8 startingFriendAreaId; + u8 unk5; + struct FriendAreasMap *friendAreasMapPtr; + u8 unkC; +}; + +void ShowFriendAreasMap(struct struct_unk800F990 *param_1); +void PrintFriendAreaNameInMap(u8 *strBuffer, u8 index); +bool8 IsFriendAreaShownOnMap(u8 friendAreaId); + +void FriendAreasMap_UpdateMonSpritePosition(void); +void FriendAreasMap_UpdateBg(void); +void FriendAreasMap_HideTextWindowAndArrows(void); +void FriendAreasMap_RunFrameActions(void); +void FriendAreasMap_ShowDirectionArrows(void); +void FriendAreasMap_PrintCurrAreaName(void); +void FriendAreasMap_PrintAvailableSubAreas(void); +void FriendAreasMap_CloseFiles(void); +void FriendAreasMap_InitGfx(void); + +#endif diff --git a/include/friend_list_menu.h b/include/friend_list_menu.h index eaf2858fb..a4c6d619f 100644 --- a/include/friend_list_menu.h +++ b/include/friend_list_menu.h @@ -31,7 +31,7 @@ typedef struct unkStruct_203B2B4 MenuStruct unk78; MenuItem unkC8[8]; u16 unk108[8]; - UnkTextStruct2 unk118[4]; + Windows unk118; } unkStruct_203B2B4; bool8 CreateFriendListMenu(s32 param_1); diff --git a/include/friend_rescue.h b/include/friend_rescue.h index 2db0ba41f..a349b7fad 100644 --- a/include/friend_rescue.h +++ b/include/friend_rescue.h @@ -23,8 +23,8 @@ typedef struct WonderMailStruct_203B33C unkStruct_203B480 unk1E8; u8 unk218; MenuStruct unk21C[4]; - UnkTextStruct2 unk35C[4]; - UnkTextStruct2 unk3BC[4]; + Windows unk35C; + Windows unk3BC; /* 0x41C */ Item item; u32 unk420; // Is this supposed to be a File like 203B2C4? u8 unk424[0x100]; diff --git a/include/global.h b/include/global.h index 6674e8d79..de3274263 100644 --- a/include/global.h +++ b/include/global.h @@ -31,6 +31,17 @@ static inline s16 Self_s16(s16 a) return a; } +// Needed to match a couple of functions. +static inline void InlineStrcpy(u8 *dst, const u8 *src) +{ + strcpy(dst, src); +} + +static inline void InlineStrncpy(u8 *dst, const u8 *src, s32 n) +{ + strncpy(dst, src, n); +} + // Sometimes incrementing and decrementing a variable changes how registers are allocated, which helps with matching functions. Functionality-wise this doesn't do anything. #ifdef NONMATCHING #define ASM_MATCH_TRICK(a) {;} @@ -43,8 +54,6 @@ static inline s16 Self_s16(s16 a) #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n") -#define NAKED __attribute__((naked)) - #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) #define ARRAY_COUNT_INT(array) ((s32)(sizeof(array) / sizeof((array)[0]))) // When an int is needed to match. diff --git a/include/gulpin_shop.h b/include/gulpin_shop.h index 60284eca3..4f5ef9b9d 100644 --- a/include/gulpin_shop.h +++ b/include/gulpin_shop.h @@ -27,7 +27,7 @@ typedef struct GulpinShopWork u8 fillC8[0x118 - 0xC8]; /* 0x118 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unk12C[4]; + Windows unk12C; } GulpinShopWork; bool8 CreateGulpinShop(u32 mode, s16 pokeSpecies, Move *moves); diff --git a/include/gulpin_shop_801FB50.h b/include/gulpin_shop_801FB50.h index a3bc8f0f8..f0237f115 100644 --- a/include/gulpin_shop_801FB50.h +++ b/include/gulpin_shop_801FB50.h @@ -35,7 +35,7 @@ typedef struct unkStruct_203B27C u8 fill11C[0x16C - 0x11C]; /* 0x16C */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unk180[4]; + Windows unk180; } unkStruct_203B27C; bool8 sub_801FB50(u32 mode); diff --git a/include/iq_skill_info_menu.h b/include/iq_skill_info_menu.h index bf8cc6294..d6f9dd661 100644 --- a/include/iq_skill_info_menu.h +++ b/include/iq_skill_info_menu.h @@ -16,7 +16,7 @@ struct IQSkillInfoMenu u8 fill14[0x20 - 0x18]; u32 unk20; u32 unk24; - UnkTextStruct2 unk28[4]; + Windows unk28; MenuInputStructSub unk88; }; diff --git a/include/iq_skill_menu.h b/include/iq_skill_menu.h index 4d814e443..6a39ff357 100644 --- a/include/iq_skill_menu.h +++ b/include/iq_skill_menu.h @@ -19,7 +19,7 @@ struct IQSkillMenu /* 0x30 */ s32 menuAction; MenuItem unk34[8]; MenuStruct unk74; - UnkTextStruct2 unkC4[4]; + Windows unkC4; }; bool8 CreateIQSkillMenu(s16 species); diff --git a/include/kangaskhan_storage1.h b/include/kangaskhan_storage1.h index 08f4edffe..ecb31853d 100644 --- a/include/kangaskhan_storage1.h +++ b/include/kangaskhan_storage1.h @@ -47,7 +47,7 @@ struct KangaskhanStorageWork unkStructFor8013AA0 unkA8; /* 0xD8 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unkEC[4]; + Windows unkEC; }; bool8 CreateKangaskhanStorage(u32 mode); diff --git a/include/kangaskhan_storage2.h b/include/kangaskhan_storage2.h index 24238ba41..8fea21f32 100644 --- a/include/kangaskhan_storage2.h +++ b/include/kangaskhan_storage2.h @@ -27,7 +27,7 @@ typedef struct unkStruct_203B20C u16 unk60[8]; MenuStruct unk70; unkStructFor8013AA0 unkC0; - UnkTextStruct2 unkF0[4]; + Windows unkF0; } unkStruct_203B20C; bool8 sub_8017E1C(void); diff --git a/include/kecleon_bros1.h b/include/kecleon_bros1.h index 43427d2db..054ad9a75 100644 --- a/include/kecleon_bros1.h +++ b/include/kecleon_bros1.h @@ -65,7 +65,7 @@ typedef struct KecleonBrosWork1 /* 0x84 */ MenuStruct menu; /* 0xD4 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unkE8[4]; + Windows unkE8; } KecleonBrosWork1; // mode corresponds to the enum: KecleonBrosMode diff --git a/include/kecleon_bros4.h b/include/kecleon_bros4.h index 3d0169f25..500cd3c03 100644 --- a/include/kecleon_bros4.h +++ b/include/kecleon_bros4.h @@ -13,7 +13,7 @@ typedef struct unkStruct_203B224 /* 0x54 */ struct_Sub80095E4_2 unk54; } unkStruct_203B224; -bool8 sub_801A5D8(u32, s32, UnkTextStruct2_sub *, u32); +bool8 sub_801A5D8(u32, s32, DungeonPos *, u32); u32 sub_801A6E8(bool8); s32 sub_801A8AC(void); void sub_801A8D0(bool8); diff --git a/include/luminous_cave.h b/include/luminous_cave.h index 4c4010783..b18f45210 100644 --- a/include/luminous_cave.h +++ b/include/luminous_cave.h @@ -33,7 +33,7 @@ typedef struct LuminousCaveWork u8 unk110; u8 unk111; u8 unk112; - UnkTextStruct2 unk114[4]; + Windows unk114; } LuminousCaveWork; void CleanLuminousCave(void); diff --git a/include/mailbox.h b/include/mailbox.h index ea8ec6557..6c181fd09 100644 --- a/include/mailbox.h +++ b/include/mailbox.h @@ -19,7 +19,7 @@ struct unkStruct_203B304 MenuStruct unk6C; MenuItem menuItems[8]; u16 unkFC[8]; - UnkTextStruct2 unk10C[4]; + Windows unk10C; }; extern void SetMailboxState(u32); diff --git a/include/main_menu1.h b/include/main_menu1.h index 0c183a4cd..1ebc93f99 100644 --- a/include/main_menu1.h +++ b/include/main_menu1.h @@ -38,12 +38,12 @@ void CleanUpMenu(void); void DeleteMainMenu(void); MainMenu1Work *GetMainMenu(void); void InitMainMenu(void); -void SetMenuItems(MenuStruct *, UnkTextStruct2 *, s32 index, const UnkTextStruct2 *, const MenuItem *menuItems, bool8, u32 menuAction, bool8 unused); +void SetMenuItems(MenuStruct *, Windows *, s32 index, const Window *, const MenuItem *menuItems, bool8, u32 menuAction, bool8 unused); void SetUpMenu(void); s32 UpdateMenu(void); void sub_8035C1C(void); -void sub_8035CC0(UnkTextStruct2 *dataArray, u32 index); +void sub_8035CC0(Windows *dataArray, u32 index); void sub_8035CF4(MenuStruct *menu, u32 index, bool8); void sub_8035D1C(void); s16 sub_8035D3C(void); @@ -51,4 +51,4 @@ s32 sub_8035D74(void); unkStruct_8035D94 *sub_8035D94(void); void sub_8035DA0(void); -#endif // GUARD_MAIN_MENU1_H \ No newline at end of file +#endif // GUARD_MAIN_MENU1_H diff --git a/include/main_menu2.h b/include/main_menu2.h index 9f4c53808..d53af187c 100644 --- a/include/main_menu2.h +++ b/include/main_menu2.h @@ -9,7 +9,7 @@ typedef struct MainMenu2Work { u32 unk0; MenuStruct unk4[4]; - UnkTextStruct2 unk144[4]; + Windows unk144; /* 0x1A4 */ u32 currMenuChoice; } MainMenu2Work; diff --git a/include/makuhita_dojo1.h b/include/makuhita_dojo1.h index 6b5615300..8c1301bb5 100644 --- a/include/makuhita_dojo1.h +++ b/include/makuhita_dojo1.h @@ -30,7 +30,7 @@ typedef struct MakuhitaDojoWork1 u8 fill38[0x58 - 0x38]; /* 0x58 */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unk6C[4]; + Windows unk6C; } MakuhitaDojoWork1; void MakuhitaDojo_Delete(void); diff --git a/include/makuhita_dojo2.h b/include/makuhita_dojo2.h index a7c1d32bb..12bef4ce5 100644 --- a/include/makuhita_dojo2.h +++ b/include/makuhita_dojo2.h @@ -15,7 +15,7 @@ typedef struct MakuhitaDojoWork2 bool8 MakuhitaDojo_ReturnFalse(void); -bool8 sub_80302E8(s32, UnkTextStruct2_sub *, u32); +bool8 sub_80302E8(s32, DungeonPos *, u32); u32 sub_80303AC(bool8); s16 sub_8030418(void); void sub_8030480(void); diff --git a/include/menu_input.h b/include/menu_input.h index 0d897b526..338b6f411 100644 --- a/include/menu_input.h +++ b/include/menu_input.h @@ -9,9 +9,9 @@ s32 GetKeyPress(MenuInputStruct *r0); s32 sub_8012AE8(void); void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 param_6); void sub_8012C60(u32 x, u32 y, u32 param_3, u32 color, u32 param_5); -void sub_8012CAC(UnkTextStruct2 *param_1, const MenuItem *param_2); -void sub_8012D08(UnkTextStruct2 *param_1, s32 param_2); -void sub_8012D34(UnkTextStruct2 *param_1, s32 param_2); +void sub_8012CAC(Window *param_1, const MenuItem *param_2); +void sub_8012D08(Window *param_1, s32 param_2); +void sub_8012D34(Window *param_1, s32 param_2); void sub_8012D60(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colorArray, u16 *param_4, s32 menuAction, s32 index); void sub_8012E04(MenuStruct *param_1, const MenuItem *menuItems, const u32 *colorArray, u16 *param_4, s32 menuAction, s32 index); void sub_8012EA4(MenuStruct *param_1, bool8 r1); @@ -31,7 +31,7 @@ void sub_8013780(MenuInputStruct *param_1, s32 param_2); s32 sub_80137A8(MenuInputStruct *param_1); void sub_80137B0(MenuInputStruct *param_1, s32 param_2); void sub_80137F8(MenuInputStruct *param_1, u32 param_2); -s32 sub_8013800(MenuInputStruct *param_1, s32 param_2); +s32 GetMenuEntryYCoord(MenuInputStruct *menu, s32 entryId); void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4); void sub_8013848(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4); void sub_8013878(MenuInputStruct *param_1, s32 param_2); @@ -49,7 +49,7 @@ void sub_8013C68(unkStructFor8013AA0 *); void sub_8013D10(unkStructFor8013AA0 *); void sub_8013E54(void); void sub_8013F84(void); -void sub_80140B4(UnkTextStruct2 *); +void sub_80140B4(Windows *); #endif // GUARD_MENU_INPUT_H diff --git a/include/options_menu1.h b/include/options_menu1.h index 24baa5ba9..10247f132 100644 --- a/include/options_menu1.h +++ b/include/options_menu1.h @@ -14,7 +14,7 @@ struct unkStruct_203B25C /* 0x1C */ MenuStruct menu; /* 0x6C */ MenuItem menuItems[8]; u16 unkAC[8]; - UnkTextStruct2 unkBC[4]; + Windows unkBC; }; bool8 sub_801DCC4(void); diff --git a/include/options_menu2.h b/include/options_menu2.h index 2d7bdeadd..f326e23b8 100644 --- a/include/options_menu2.h +++ b/include/options_menu2.h @@ -11,8 +11,8 @@ struct unkStruct_203B260 /* 0x4 */ MenuInputStructSub unk4; /* 0x10 */ MenuInputStruct input; u32 unk44; - UnkTextStruct2 *unk48; - UnkTextStruct2 unk4C[4]; + Window *unk48; + Windows unk4C; }; bool8 sub_801E198(GameOptions *optionsMenu); diff --git a/include/other_menus1.h b/include/other_menus1.h index 9155b4c1e..ad0e478f8 100644 --- a/include/other_menus1.h +++ b/include/other_menus1.h @@ -18,7 +18,7 @@ typedef struct unkStruct_203B35C u32 unk14; u8 fill18[0x1C - 0x18]; MenuStruct unk1C[4]; - UnkTextStruct2 unk15C[4]; + Windows unk15C; unkStruct_8035D94 unk1BC[2]; unkStruct_203B480 unk1CC; unkStruct_203B480 unk1FC; diff --git a/include/party_list_menu.h b/include/party_list_menu.h index 3db582c1b..f4ad8476e 100644 --- a/include/party_list_menu.h +++ b/include/party_list_menu.h @@ -32,7 +32,7 @@ typedef struct unkStruct_203B2B8 MenuItem unk16C[10]; MenuItem unk1BC[10]; u16 unk20C[10]; - UnkTextStruct2 unk220[4]; + Windows unk220; } unkStruct_203B2B8; bool8 CreatePartyListMenu(PokemonStruct1 *pokeStruct); diff --git a/include/pelipper_board.h b/include/pelipper_board.h index 1495d4b77..fc4892d72 100644 --- a/include/pelipper_board.h +++ b/include/pelipper_board.h @@ -17,7 +17,7 @@ struct unkStruct_203B308 MenuStruct unk6C; MenuItem menuItems[8]; u16 unkFC[8]; - UnkTextStruct2 unk10C[4]; + Windows unk10C; }; extern struct unkStruct_203B308 *gPelipperBoard; diff --git a/include/pokemon_3.h b/include/pokemon_3.h index 436a5ad73..f76144a98 100644 --- a/include/pokemon_3.h +++ b/include/pokemon_3.h @@ -49,6 +49,12 @@ struct unkStruct_808FF20 u8 unk58[12]; }; +struct UnkInfoTabStruct +{ + u8 unk0[0xC]; + s32 unkC[9]; +}; + bool8 HasRecruitedMon(s16 species); s16 GetBaseSpecies(s16 index); s16 GetBaseSpeciesNoUnown(s16 index); @@ -63,14 +69,14 @@ void ToggleIQSkill(IqSkillFlags *iq, u32 skillIndex); void SetIQSkill(IqSkillFlags *iq, u32 skillIndex); bool8 IsIQSkillSet(IqSkillFlags *iq, u32 IQSkillBit); void SetDefaultIQSkills(IqSkillFlags *iq, bool8 enableSelfCurer); -void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3); +void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, bool8 param_3); s32 sub_808F700(PokemonStruct1 *pokemon); PokemonStruct1 *sub_808F734(PokemonStruct1 *pokemon, s16 _species); s16 ExtractSpeciesIndex(UnkDungeonGlobal_unk1CD98 *r0); void SetSpeciesLevelToExtract(UnkDungeonGlobal_unk1CD98 *r0, s32 level, s32 species); s32 ExtractLevel(UnkDungeonGlobal_unk1CD98 *r0); PokemonStruct1 *sub_808F798(PokemonStruct1 *pokemon, short _species); -void CreatePokemonInfoTabScreen(u32, s32, struct unkStruct_808FF20 *, u8 *, u32); +void CreatePokemonInfoTabScreen(s32 param_1, s32 param_2, struct unkStruct_808FF20 *mon, struct UnkInfoTabStruct *param_4, u32 windowId); void sub_808FF20(struct unkStruct_808FF20 *param_1, struct PokemonStruct1 *pokemon, bool8 param_3); #endif // GUARD_POKEMON_3_H diff --git a/include/pokemon_news1.h b/include/pokemon_news1.h index 68458586b..893698879 100644 --- a/include/pokemon_news1.h +++ b/include/pokemon_news1.h @@ -16,7 +16,7 @@ struct unkStruct_203B2CC u8 GetPokemonNewsIndex(void); bool8 HasNoPKMNNews(void); -bool8 sub_802B640(u32, UnkTextStruct2_sub *, u32); +bool8 sub_802B640(u32, DungeonPos *, u32); u32 sub_802B720(bool8); void sub_802B7D0(bool8 cursorSprite); void sub_802B81C(void); diff --git a/include/pokemon_news2.h b/include/pokemon_news2.h index 03da4a4d0..d019d67e4 100644 --- a/include/pokemon_news2.h +++ b/include/pokemon_news2.h @@ -14,7 +14,7 @@ struct unkStruct_203B2D4 const u8 *unk10[4]; u32 unk20; u32 unk24; - UnkTextStruct2 unk28[4]; + Windows unk28; MenuInputStructSub unk88; }; diff --git a/include/pokemon_news3.h b/include/pokemon_news3.h index c808ff113..d14e07f10 100644 --- a/include/pokemon_news3.h +++ b/include/pokemon_news3.h @@ -14,7 +14,7 @@ struct unkStruct_203B2D8 void CreateMailMenu(void); bool8 HasNoMailinMailbox(void); -bool8 sub_802BD14(s32, UnkTextStruct2_sub *, u32); +bool8 sub_802BD14(s32, DungeonPos *, u32); u32 sub_802BDEC(bool8); u8 sub_802BE74(void); void sub_802BE94(bool8 cursorSprite); diff --git a/include/post_office_guide2.h b/include/post_office_guide2.h index 1f8a1b67c..a30bb5f71 100644 --- a/include/post_office_guide2.h +++ b/include/post_office_guide2.h @@ -11,8 +11,8 @@ typedef struct unkStruct_203B330 u8 unkC; /* 0xD */ u8 dungeonIndex; u32 unk10; - UnkTextStruct2 *unk14; - UnkTextStruct2 unk18[4]; + Window *unk14; + Windows unk18; } unkStruct_203B330; bool8 sub_80319A4(u8, u8 dungeon, s32); diff --git a/include/rescue_password_menu.h b/include/rescue_password_menu.h index c2382da0c..7c3563a94 100644 --- a/include/rescue_password_menu.h +++ b/include/rescue_password_menu.h @@ -12,8 +12,8 @@ struct RescuePasswordMenu u32 currMenu; u32 state; MenuStruct unk8[4]; - UnkTextStruct2 unk148[4]; - UnkTextStruct2 unk1A8[4]; + Windows unk148; + Windows unk1A8; SpriteOAM unk208; u32 unk210; }; diff --git a/include/save_menu.h b/include/save_menu.h index 56612edb2..00bad9724 100644 --- a/include/save_menu.h +++ b/include/save_menu.h @@ -9,7 +9,7 @@ typedef struct SaveMenuWork /* 0x0 */ u32 currMenu; u32 unk4; MenuStruct unk8[4]; - UnkTextStruct2 unk148[4]; + Windows unk148; SpriteOAM unk1A8; u32 unk1B0; // Sprite count? } SaveMenuWork; diff --git a/include/sprite.h b/include/sprite.h index db7c37490..674802db1 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -41,6 +41,7 @@ void sub_800533C(ax_pose **, UnkSpriteMem **, axdata1 *, unkStruct_2039DB0 *, bo void AxResInitFile(axdata *, OpenedFile *, u32, u32, u32, u32, bool8); void AxResInit(axdata *, axmain *, u32, u32, u32, u32, bool8); void AxResInitUnorientedFile(axdata *, OpenedFile *, u32, u32, u32, bool8); -void RunAxAnimationFrame(struct axObject *); +void RunAxAnimationFrame(struct axdata *); +void DoAxFrame_800558C(struct axdata *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, unkStruct_2039DB0 *spriteMasks); #endif // GUARD_SPRITE_H diff --git a/include/structs/menu.h b/include/structs/menu.h index 6a2ae4bcd..78c36955d 100644 --- a/include/structs/menu.h +++ b/include/structs/menu.h @@ -24,7 +24,7 @@ typedef struct MenuInputStruct { s32 unk0; u16 unk4; - s16 unk6; + s16 firstEntryY; DungeonPos unk8; s16 unkC; // Maybe DungeonPos s16 unkE; @@ -72,7 +72,7 @@ typedef struct unkStructFor8013AA0 s32 unkC; // maxInclusive? s32 unk10; s32 unk14; // index of unk18? But read as chosenValue..? - UnkTextStruct2 *unk18; + Window *unk18; s32 unk1C; // width of prompt? s32 unk20; // height of prompt? u8 unk24; // related to unk10 diff --git a/include/structs/rgb.h b/include/structs/rgb.h index 8bdd6058f..b4c9ad9f3 100644 --- a/include/structs/rgb.h +++ b/include/structs/rgb.h @@ -8,9 +8,4 @@ typedef struct RGB u8 b; } RGB; -typedef struct Palette32 -{ - RGB pal[16]; -} Palette32; - #endif // GUARD_RGB_H diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index 1fa914b7c..c5e73164e 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -148,8 +148,8 @@ typedef struct FloorProperties typedef struct UnkDungeonGlobal_unk1C590 { - s16 unk0[NUM_ITEM_CATEGORIES]; - s16 unk18[NUMBER_OF_ITEM_IDS]; + s16 categoryValues[NUM_ITEM_CATEGORIES]; + s16 itemValues[NUMBER_OF_ITEM_IDS]; } UnkDungeonGlobal_unk1C590; typedef struct UnkDungeonGlobal_unk1CD98 @@ -273,7 +273,7 @@ typedef struct unkDungeon644 /* 0x30 */ u8 unk30; /* 0x31 */ u8 unk31; /* 0x32 */ bool8 itemHoldersIdentified; - /* 0x33 */ u8 fill33; + /* 0x33 */ u8 unk33; /* 0x34 */ u8 unk34; /* 0x35 */ u8 unk35; /* 0x36 */ u8 unk36; @@ -329,6 +329,8 @@ typedef struct unkDungeon57C } unkDungeon57C; #define COLOR_RAMP_COUNT 256 +#define UNK12A18_ARR_COUNT 29 +#define UNK12A18_ARR_COUNT_2 9 // size: 0x1CEDC typedef struct Dungeon @@ -415,13 +417,8 @@ typedef struct Dungeon /* 0x10844 */ s16 naturalJunctionListCounts[MAX_ROOM_COUNT]; /* 0x10884 */ DungeonPos naturalJunctionList[MAX_ROOM_COUNT][MAX_ROOM_COUNT]; // Arrays of room exits for each room. u16 unk11884[250][9]; - u16 unk12A18[20][9]; - u16 unk12B80[9]; - u16 unk12B92[36]; - u16 unk12BDA[9]; - u16 unk12BEC[9]; - u16 unk12BFE[19]; - u8 unk12C24[0x930]; + u16 unk12A18[UNK12A18_ARR_COUNT][UNK12A18_ARR_COUNT_2]; + u8 ALIGNED(4) unk12C24[0x930]; u16 unk13554[10]; OpenedFile *unk13568; u8 unk1356C; diff --git a/include/structs/str_dungeon_8042F6C.h b/include/structs/str_dungeon_8042F6C.h index 536d093e4..394c17a1e 100644 --- a/include/structs/str_dungeon_8042F6C.h +++ b/include/structs/str_dungeon_8042F6C.h @@ -6,7 +6,7 @@ #include "structs/str_pokemon.h" #include "structs/str_wonder_mail.h" -struct UnkStruct_xxx_dungeon_8042F6C +struct UnkStruct_RunDungeon { u8 unk0; DungeonLocation unk4; @@ -30,7 +30,7 @@ struct UnkStruct_xxx_dungeon_8042F6C WonderMailSub unk84; }; -void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8); +void RunDungeon(struct UnkStruct_RunDungeon *r8); #endif // GUARD_STR_DUNGEON_8042F6C_H diff --git a/include/structs/str_position.h b/include/structs/str_position.h index e56ee1d18..42b312f96 100644 --- a/include/structs/str_position.h +++ b/include/structs/str_position.h @@ -19,6 +19,9 @@ typedef struct PixelPos /* 0x4 */ s32 y; } PixelPos; +#define X_POS_TO_PIXELPOS(x)((((x) * 24) + 12) << 8) +#define Y_POS_TO_PIXELPOS(y)((((y) * 24) + 16) << 8) + /** * Currently only used in script data, for entities and GroundLink data. * DungeonPos expressed in terms of *graphics* tiles, 8 pixels per unit. diff --git a/include/structs/str_text.h b/include/structs/str_text.h index 32a4d2d2a..d0d94dfb7 100644 --- a/include/structs/str_text.h +++ b/include/structs/str_text.h @@ -28,42 +28,43 @@ typedef struct UnkTextStruct1 u8 unk46; } UnkTextStruct1; -// size: 0x4 -typedef struct UnkTextStruct2_sub -{ - // I haven't found a func that reads these separately yet, but simply making an arr[2] will cause assignments to break. - // Some funcs only match with this union for some reason even though they don't access the variables separately... - // The first func to break is currently sub_801A5D8 in kecleon_bros4.c - // The first func I matched that uses the array is sub_8006554 in text2.c (using the separated fields doesn't match or get even close) - union { - struct { - s16 unk0; - s16 unk2; - } separate; - s16 arr[2]; - } unk0; -} UnkTextStruct2_sub; - -typedef struct UnkTextStruct2_sub2 +typedef struct WindowHeader { u8 f0; u8 f1; u8 f2; u8 f3; -} UnkTextStruct2_sub2; +} WindowHeader; + +#include "structs/str_position.h" // size: 0x18 -typedef struct UnkTextStruct2 +typedef struct Window { u8 unk0; - u8 fill1[0x4 - 0x1]; - s32 unk4; - UnkTextStruct2_sub unk8; - s16 unkC; - s16 unkE; - s16 unk10; + s32 type; + DungeonPos pos; + s16 width; + s16 height; + s16 unk10; // In most cases it's the same as height. If it's smaller than height, the window may look glitchy. Maybe something with tile allocation/how the window is filled? s16 unk12; - const UnkTextStruct2_sub2 *unk14; // Pointer to 4 bytes which may be x-coord related. Could be window's header? -} UnkTextStruct2; + const WindowHeader *unk14; +} Window; + +#define WINDOW_TYPE_WITHOUT_BORDER 1 +#define WINDOW_TYPE_NORMAL 3 +#define WINDOW_TYPE_FILL_TRANSPARENT 5 +#define WINDOW_TYPE_WITH_HEADER 6 +#define WINDOW_TYPE_7 7 + +#define MAX_WINDOWS 4 + +typedef struct Windows { + Window id[MAX_WINDOWS]; + // Something ugly, so that sub_805FD74 could match weird compiler memcpy/stack initialization + #ifndef NONMATCHING + u8 fakeMatch[0]; + #endif // NONMATCHING +} Windows; #endif // GUARD_STR_TEXT_H diff --git a/include/structs/struct_sub80095e4.h b/include/structs/struct_sub80095e4.h index 16b4757a6..19eaea943 100644 --- a/include/structs/struct_sub80095e4.h +++ b/include/structs/struct_sub80095e4.h @@ -12,8 +12,8 @@ typedef struct struct_Sub80095E4 { /* 0x0 */ MenuInputStruct input; u32 unk34; - UnkTextStruct2 *unk38; - UnkTextStruct2 unk3C[4]; + Window *unk38; + Windows windows; // size: 0x9C } struct_Sub80095E4; @@ -22,7 +22,7 @@ typedef struct struct_Sub80095E4 typedef struct struct_Sub80095E4_2 { /* 0x0 */ struct_Sub80095E4 s0; // s as in 'struct' ; decided to go against unk as to not have `->unk0->unk3C` - UnkTextStruct2_sub2 unk9C; + WindowHeader unk9C; } struct_Sub80095E4_2; // Note: In order to get matching ASM, this macro had to be created. @@ -33,16 +33,16 @@ typedef struct struct_Sub80095E4_2 s16 newE; \ s16 a0 = (_a0); \ UNUSED s32 a0_ = a0; \ - UNUSED s16 oldE = (ptr).unk3C[(ptr).unk34].unkE; \ + UNUSED s16 oldE = (ptr).windows.id[(ptr).unk34].height; \ a0_ = 0; \ new10 = a0 + 2; \ newE = a0; \ \ - (ptr).unk3C[(ptr).unk34].unkE = newE; \ - (ptr).unk3C[(ptr).unk34].unk10 = a0 + 2; \ + (ptr).windows.id[(ptr).unk34].height = newE; \ + (ptr).windows.id[(ptr).unk34].unk10 = a0 + 2; \ \ ResetUnusedInputStruct(); \ - xxx_call_save_unk_text_struct_800641C((ptr).unk3C, TRUE, TRUE); \ + ShowWindows(&(ptr).windows, TRUE, TRUE); \ } #define SUB_80095E4_CALL(ptr) \ @@ -54,14 +54,14 @@ typedef struct struct_Sub80095E4_2 #define SUB_80095E4_CALL_2(ptr) \ { \ s32 a0 = sub_80095E4((ptr).input.unk1A, 12) + 2; \ - UNUSED s16 oldE = (ptr).unk3C[(ptr).unk34].unkE; \ + UNUSED s16 oldE = (ptr).windows.id[(ptr).unk34].height; \ s16 newE = a0; \ \ - (ptr).unk3C[(ptr).unk34].unkE = newE; \ - (ptr).unk3C[(ptr).unk34].unk10 = newE; \ + (ptr).windows.id[(ptr).unk34].height = newE; \ + (ptr).windows.id[(ptr).unk34].unk10 = newE; \ \ ResetUnusedInputStruct(); \ - xxx_call_save_unk_text_struct_800641C((ptr).unk3C, TRUE, TRUE); \ + ShowWindows(&(ptr).windows, TRUE, TRUE); \ } // sub_802BF30 and sub_802C328 use a different function call, and 24 instead of 12 diff --git a/include/text.h b/include/text.h index 4bb2e17a0..eab07f382 100644 --- a/include/text.h +++ b/include/text.h @@ -63,8 +63,8 @@ u32 UpdateFadeInTile(u32 a0); u32 sub_80063B0(void); void SelectCharmap(u32 a0); void SetCharacterMask(int a0); -void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct2 *a0, bool8 a1, bool8 a2); -void RestoreUnkTextStruct_8006518(UnkTextStruct2 *unkData); +void ShowWindows(const Windows *windows, bool8 a1, bool8 a2); +void RestoreUnkTextStruct_8006518(Windows *unkData); u32 sub_8006544(u32 index); void sub_8007334(s32 a0); void sub_80073B8(s32 a0); diff --git a/include/thank_you_wonder_mail.h b/include/thank_you_wonder_mail.h index 4ed0248ab..8761e25dc 100644 --- a/include/thank_you_wonder_mail.h +++ b/include/thank_you_wonder_mail.h @@ -22,8 +22,8 @@ typedef struct WonderMailStruct_203B2C4 unkStruct_203B480 unk1E8; /* 0x218 */ s8 mailIndex; MenuStruct unk21C[4]; - UnkTextStruct2 unk35C[4]; - UnkTextStruct2 unk3BC[4]; + Windows unk35C; + Windows unk3BC; Item unk41C; /* 0x420 */ struct MonPortraitMsg monPortrait; u32 unk430; diff --git a/include/trade_items_menu.h b/include/trade_items_menu.h index 31c1fae05..6fa5cc386 100644 --- a/include/trade_items_menu.h +++ b/include/trade_items_menu.h @@ -47,8 +47,8 @@ struct TradeItemsMenu u32 unk10; unkStructFor8013AA0 unk14; MenuStruct unk44[4]; - UnkTextStruct2 unk184[4]; - UnkTextStruct2 unk1E4[4]; + Windows unk184; + Windows unk1E4; // TODO These might be structs... struct TradeItem unk244; diff --git a/include/wigglytuff_shop2.h b/include/wigglytuff_shop2.h index 0053dc6db..b3477fd49 100644 --- a/include/wigglytuff_shop2.h +++ b/include/wigglytuff_shop2.h @@ -13,8 +13,8 @@ typedef struct WigglytuffShop2Work u32 pokemonStatus[0x10]; /* 0x70 */ s32 numPokemoninFriendArea; s32 unk74; - UnkTextStruct2 *unk78; - UnkTextStruct2 unk7C[4]; + Window *unk78; + Windows unk7C; u8 unkDC[4]; } WigglytuffShop2Work; diff --git a/include/wigglytuff_shop3.h b/include/wigglytuff_shop3.h index 48a12c019..59ae014c2 100644 --- a/include/wigglytuff_shop3.h +++ b/include/wigglytuff_shop3.h @@ -54,7 +54,7 @@ typedef struct WigglytuffShop3Work MenuStruct unk6C; /* 0xBC */ struct MonPortraitMsg monPortrait; struct MonPortraitMsg *monPortraitPtr; - UnkTextStruct2 unkD0[4]; + Windows unkD0; u32 unk130; u32 unk134; } WigglytuffShop3Work; diff --git a/include/wonder_mail.h b/include/wonder_mail.h index 1cf88327f..04690941d 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -22,8 +22,8 @@ typedef struct WonderMailStruct_203B2C0 u8 fill16A[0x218 - 0x1B8]; /* 0x218 */ u8 mailIndex; MenuStruct unk21C[4]; - UnkTextStruct2 unk35C[4]; - UnkTextStruct2 unk3BC[4]; + Windows unk35C; + Windows unk3BC; /* 0x41C */ u32 unkfill; // ItemSlot? /* 0x420 */ struct MonPortraitMsg monPortrait; /* 0x430 */ u8 padding3[0x534 - 0x430]; diff --git a/include/wonder_mail_4.h b/include/wonder_mail_4.h index e24e7f4b5..b04e337f6 100644 --- a/include/wonder_mail_4.h +++ b/include/wonder_mail_4.h @@ -3,7 +3,7 @@ #include "structs/str_text.h" -u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3); +u32 sub_80306A8(u32 wonderMailType, u32 r1, DungeonPos *r2, u32 r3); u32 sub_8030768(u8 r0); u8 sub_80307EC(void); void sub_8030810(u8 r0); diff --git a/include/wonder_mail_802C10C.h b/include/wonder_mail_802C10C.h index fa6811345..f5fc66b23 100644 --- a/include/wonder_mail_802C10C.h +++ b/include/wonder_mail_802C10C.h @@ -15,7 +15,7 @@ struct unkStruct_203B2E0 void DrawPelipperBoardJobMenu(void); bool8 HasNoPelipperBoardJobs(void); -bool8 sub_802C10C(s32, UnkTextStruct2_sub *, s32); +bool8 sub_802C10C(s32, DungeonPos *, s32); u32 sub_802C1E4(bool8); u8 sub_802C26C(void); void sub_802C28C(bool8 cursorSprite); diff --git a/include/wonder_mail_802C4C8.h b/include/wonder_mail_802C4C8.h index 1fef8af13..2f313f2ca 100644 --- a/include/wonder_mail_802C4C8.h +++ b/include/wonder_mail_802C4C8.h @@ -7,7 +7,7 @@ void DrawJobListMenu(void); bool8 HasNoAcceptedJobs(void); u8 GetPelipperBoardSlotIndex(void); -bool8 sub_802C4C8(s32, UnkTextStruct2_sub *, u32); +bool8 sub_802C4C8(s32, DungeonPos *, u32); u32 sub_802C598(bool8); void sub_802C640(bool8 cursorSprite); void sub_802C688(void); diff --git a/include/wonder_mail_802C860.h b/include/wonder_mail_802C860.h index 572ad8420..c4436fc70 100644 --- a/include/wonder_mail_802C860.h +++ b/include/wonder_mail_802C860.h @@ -19,7 +19,7 @@ struct unkStruct_203B2F0 MenuItem unk10C[8]; MenuItem unk14C[8]; u8 fill18C[0x19C - 0x18C]; - UnkTextStruct2 unk19C[4]; + Windows unk19C; }; bool8 InitializeJobListMenu(u32); diff --git a/include/wonder_mail_802D098.h b/include/wonder_mail_802D098.h index 182128537..85fb329d9 100644 --- a/include/wonder_mail_802D098.h +++ b/include/wonder_mail_802D098.h @@ -34,7 +34,7 @@ typedef struct unkStruct_203B2F8 MenuItem unk118[8]; MenuItem unk158[8]; u16 unk198[8]; - UnkTextStruct2 unk1A8[4]; + Windows unk1A8; } unkStruct_203B2F8; bool8 GetWonderMailAccepted(void); diff --git a/include/world_map.h b/include/world_map.h new file mode 100644 index 000000000..37d821373 --- /dev/null +++ b/include/world_map.h @@ -0,0 +1,57 @@ +#ifndef GUARD_WORLD_MAP_H +#define GUARD_WORLD_MAP_H + +#include "file_system.h" +#include "code_8004AA0.h" +#include "menu_input.h" +#include "structs/axdata.h" +#include "structs/str_position.h" +#include "structs/str_dungeon.h" + +struct UnkStruct_Sub1 +{ + u8 unk0; + DungeonPos unk4; + axdata unk8; +}; + +struct WorldMap +{ + struct UnkStruct_Sub1 unk0[64]; + OpenedFile *unk1100[5]; + u16 unk1114[64][64]; + u16 unk3114[64][64]; + axdata monAxSprite; + unkStruct_202EE8C unk5150[16]; + s32 brightness; + s32 unk52D4; + DungeonPos bgPos; + DungeonPos monSpritePos; + u16 unk52E0[1500]; + u8 unk5E98[1500]; +}; + +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]; +}; + +struct UnkStruct_sub_8010268 +{ + u8 fill0[4]; + struct UnkStruct_sub_8010494 unk4; + struct WorldMap *unkB0; + u8 unkB4; +}; + +void ShowWorldMap(struct UnkStruct_sub_8010268 *r5); + +#endif diff --git a/ld_script.txt b/ld_script.txt index d76f237c1..5145d3648 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -89,9 +89,9 @@ SECTIONS { asm/code_800ED38.o(.text); src/code_800F034.o(.text); src/code_800F958.o(.text); - asm/code_800F990.o(.text); - src/code_8010EF0.o(.text); - asm/code_8010F28.o(.text); + src/friend_areas_map.o(.text); + src/world_map.o(.text); + src/friend_areas_map_util.o(.text); src/code_80118A4.o(.text); src/debug.o(.text); src/save.o(.text); @@ -229,7 +229,6 @@ SECTIONS { src/code_805D8C8_1.o(.text); asm/code_805D8C8.o(.text); src/code_8066D04.o(.text); - asm/code_8066D04.o(.text); src/code_805D8C8.o(.text); asm/code_805D8C8_1.o(.text); src/code_8069D4C.o(.text); @@ -420,6 +419,10 @@ SECTIONS { src/code_800F034.o(.rodata); src/code_800F958.o(.rodata); data/data_80CE77C.o(.rodata); + src/friend_areas_map.o(.rodata); + src/world_map.o(.rodata); + src/friend_areas_map_util.o(.rodata); + data/data_80CE77C_2.o(.rodata); src/debug.o(.rodata); src/save.o(.rodata); src/save_read.o(.rodata); @@ -530,10 +533,14 @@ SECTIONS { src/dungeon_ai_movement.o(.rodata); data/data_80F4D44.o(.rodata); src/dungeon_config.o(.rodata); + data/data_80F59C8_1.o(.rodata); + src/code_803D110.o(.rodata); data/data_80F59C8.o(.rodata); src/dungeon_message.o(.rodata); src/dungeon_move.o(.rodata); data/data_8106A4C.o(.rodata); + src/code_8066D04.o(.rodata); + data/data_8106A4C_2.o(.rodata); src/code_806CD90.o(.rodata); src/type_effectiveness.o(.data); data/data_8106F7C.o(.rodata); diff --git a/src/adventure_log.c b/src/adventure_log.c index 32846c6b2..5e658c0f2 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -23,13 +23,13 @@ bool8 CreateAdventureLogScreen(u32 kind) { sAdventureLog = MemoryAlloc(sizeof(*sAdventureLog), 8); sAdventureLog->s0.unk34 = kind; - sAdventureLog->s0.unk38 = &sAdventureLog->s0.unk3C[kind]; - RestoreUnkTextStruct_8006518(sAdventureLog->s0.unk3C); - sAdventureLog->s0.unk3C[sAdventureLog->s0.unk34] = sUnknown_80E2008; + sAdventureLog->s0.unk38 = &sAdventureLog->s0.windows.id[kind]; + RestoreUnkTextStruct_8006518(&sAdventureLog->s0.windows); + sAdventureLog->s0.windows.id[sAdventureLog->s0.unk34] = sUnknown_80E2008; sAdventureLog->s0.unk38->unk14 = &sAdventureLog->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sAdventureLog->s0.unk3C, TRUE, TRUE); + ShowWindows(&sAdventureLog->s0.windows, TRUE, TRUE); sub_8013818(&sAdventureLog->s0.input, 0x20, 8, kind); sub_8032084(); DisplayAdventureLog(); @@ -63,9 +63,9 @@ u32 HandleAdventureLogInput(bool8 a0) void CleanAdventureLogScreen(void) { if (sAdventureLog != NULL) { - sAdventureLog->s0.unk3C[sAdventureLog->s0.unk34] = sUnknown_80E1FF0; + sAdventureLog->s0.windows.id[sAdventureLog->s0.unk34] = sUnknown_80E1FF0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sAdventureLog->s0.unk3C, TRUE, TRUE); + ShowWindows(&sAdventureLog->s0.windows, TRUE, TRUE); MemoryFree(sAdventureLog); sAdventureLog = NULL; } @@ -107,31 +107,31 @@ static void DisplayAdventureLog(void) case AA_NUM_FLOORS_EXPLORED: { s32 v1 = GetAdventureFloorsExplored(); gFormatArgs[0] = (s16)v1; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_MOVES_LEARNED: { s32 v2 = GetAdventureMovesLearned(); gFormatArgs[0] = (s16)v2; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_THIEVING_SUCCESSES: { s32 v3 = GetThievingSuccesses(); gFormatArgs[0] = (s16)v3; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_FRIEND_RESCUE_SUCCESSES: { s32 v4 = GetFriendRescueSuccesses(); gFormatArgs[0] = v4; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_POKEMON_EVOLVED: { s32 v5 = GetAdventureNumEvolved(); gFormatArgs[0] = v5; - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } case AA_NUM_POKEMON_JOINED: { @@ -140,13 +140,13 @@ static void DisplayAdventureLog(void) // fallthrough } default: { - PrintFormattedStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), GetAdventureLogLine(aa), sAdventureLog->s0.unk34, 0); break; } } } else - PrintStringOnWindow(8, sub_8013800(&sAdventureLog->s0.input, i), sPlaceholder, sAdventureLog->s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sAdventureLog->s0.input, i), sPlaceholder, sAdventureLog->s0.unk34, 0); } sub_80073E0(sAdventureLog->s0.unk34); diff --git a/src/adventure_log_menu.c b/src/adventure_log_menu.c index b992c52c1..e45c0595b 100644 --- a/src/adventure_log_menu.c +++ b/src/adventure_log_menu.c @@ -13,7 +13,7 @@ void CreateAdventureLogMenu(void) void CleanAdventureLogMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); } u32 UpdateAdventureLogMenu(void) diff --git a/src/code.c b/src/code.c index 4ec706dd0..fbd216401 100644 --- a/src/code.c +++ b/src/code.c @@ -31,7 +31,7 @@ extern void sub_808ED00(); extern void SetDungeonLocationInfo(DungeonLocation *dl); extern void sub_808CE74(s16, bool32, u8*); -void xxx_dungeon_8001340(struct UnkStruct_xxx_dungeon_8042F6C *r0); +void xxx_dungeon_8001340(struct UnkStruct_RunDungeon *r0); void sub_80011E8(u8 *param_1); void sub_809542C(WonderMailSub *param_1); @@ -53,7 +53,7 @@ EWRAM_INIT struct PersonalityRelated gPersonalityRelated_203B040 = { .PartnerNick = {""}, }; -void SaveLoadRelated_8000EDC(struct UnkStruct_xxx_dungeon_8042F6C *param_1) +void SaveLoadRelated_8000EDC(struct UnkStruct_RunDungeon *param_1) { u8 quickSaveValid; s32 quickSaveStatus; @@ -267,7 +267,7 @@ void NDS_LoadOverlay_GroundMain() } -void nullsub_2(struct UnkStruct_xxx_dungeon_8042F6C *r0) +void nullsub_2(struct UnkStruct_RunDungeon *r0) { } @@ -277,10 +277,10 @@ u32 xxx_script_related_8001334(u32 r0) return xxx_script_related_8098468(r0); } -void xxx_dungeon_8001340(struct UnkStruct_xxx_dungeon_8042F6C *r0) +void xxx_dungeon_8001340(struct UnkStruct_RunDungeon *r0) { nullsub_2(r0); - xxx_dungeon_8042F6C(r0); + RunDungeon(r0); NDS_LoadOverlay_GroundMain(); } diff --git a/src/code_2.c b/src/code_2.c index 487eb5262..cf6b8c0e6 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -39,7 +39,7 @@ extern void nullsub_33(void); extern u32 sub_80009D0(u32); extern u16 gUnknown_2026E4E; -extern s32 gTitleBrightness; +EWRAM_DATA s32 sTitleBrightness = 0; // TODO: figure out the struct struct UnkStruct203B040 @@ -101,17 +101,17 @@ void GameLoop(void) UpdateFadeInTile(0); InitFontPalette(); sub_800CDA8(2); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_2026E4E = 0x1000; LoadTitleScreen(); SetBG2RegOffsets(0, 0); SetBG3RegOffsets(0, 0); - gTitleBrightness = 0; - while (gTitleBrightness < 32) { + sTitleBrightness = 0; + while (sTitleBrightness < 32) { s32 i; - gTitleBrightness++; + sTitleBrightness++; for (i = 0; i < 240; i++) - SetBGPaletteBufferColorRGB(i, &((RGB*)gTitlePaletteFile->data)[i], gTitleBrightness, NULL); + SetBGPaletteBufferColorRGB(i, &((RGB*)gTitlePaletteFile->data)[i], sTitleBrightness, NULL); xxx_update_stuff(0); } if (tmp3) { @@ -148,11 +148,11 @@ void GameLoop(void) if (nextMenu == MENU_NEW_GAME) break; } DeleteMainMenu(); - while (gTitleBrightness > 0) { + while (sTitleBrightness > 0) { s32 i; - gTitleBrightness--; + sTitleBrightness--; for (i = 0; i < 240; i++) - SetBGPaletteBufferColorRGB(i, &((RGB*)gTitlePaletteFile->data)[i], gTitleBrightness, NULL); + SetBGPaletteBufferColorRGB(i, &((RGB*)gTitlePaletteFile->data)[i], sTitleBrightness, NULL); xxx_update_stuff(0); } CloseFile(gTitlePaletteFile); diff --git a/src/code_8002774.c b/src/code_8002774.c index e35dfad13..945a3ebc0 100644 --- a/src/code_8002774.c +++ b/src/code_8002774.c @@ -33,7 +33,7 @@ static inline s8 sub_8002984_sub(s32 direction1, s32 rand, s32 add, s32 multi) s32 sub_8002984(s32 _direction1, u32 caseID) { s32 direction1; - + direction1 = (s8)_direction1; switch((u8)caseID) { case 1: @@ -189,7 +189,7 @@ PixelPos SetVecFromDirectionSpeed(s8 r1, u32 r2) } s32 VecDirection8Sign(PixelPos *param_1) -{ +{ if (param_1->x < 0) { if (param_1->y < 0) { return DIRECTION_NORTHWEST; @@ -242,153 +242,94 @@ s32 VecDirection4SignYX(PixelPos *param_1) } } -// https://decomp.me/scratch/bD5wO -s8 VecDirection8Radial(PixelPos *param_1) +s8 VecDirection8Radial(PixelPos *pixelPos) { -#ifdef NONMATCHING - s32 r0; - s32 r1; - s32 r2; - s32 r3; - s32 r4; - s32 r5; -#else - register s32 r0; - register s32 r1 asm("r1"); - register s32 r2 asm("r2"); - register s32 r3 asm("r3"); - register s32 r4 asm("r4"); - register s32 r5; -#endif + PixelPos absPos = {abs(pixelPos->x), abs(pixelPos->y)}; - - r0 = param_1->x; - if (r0 < 0) { - r0 = -r0; - } - r1 = r0; - r3 = param_1->y; - r5 = r3; - if (r3 < 0) { - r5 = -r3; - } - r2 = r5; - r4 = param_1->x; - if (r4 < 0) { - if (r3 < 0) { - if (r2 > r0 * 2) { + if (pixelPos->x < 0) { + if (pixelPos->y < 0) { + if (absPos.y > absPos.x * 2) { return DIRECTION_NORTH; } - if (r1 <= r5 * 2) { + if (absPos.x <= absPos.y * 2) { return DIRECTION_NORTHWEST; } return DIRECTION_WEST; } - if (r2 <= r0 * 2) { - if (r1 > r5 * 2) { + if (absPos.y <= absPos.x * 2) { + if (absPos.x > absPos.y * 2) { return DIRECTION_WEST; } return DIRECTION_SOUTHWEST; } } - else { - if (0 < r4) { - if (r3 < 0) { - if (r2 > r0 * 2) { - return DIRECTION_NORTH; - } - if (r1 <= r5 * 2) { - return DIRECTION_NORTHEAST; - } + else if (pixelPos->x > 0) { + if (pixelPos->y < 0) { + if (absPos.y > absPos.x * 2) { + return DIRECTION_NORTH; + } + if (absPos.x <= absPos.y * 2) { + return DIRECTION_NORTHEAST; + } + return DIRECTION_EAST; + } + else { + if (absPos.y > absPos.x * 2) { + return DIRECTION_SOUTH; + } + if (absPos.x > absPos.y * 2) { return DIRECTION_EAST; } - else { - if (r2 > r0 * 2) { - return DIRECTION_SOUTH; - } - if (r1 > r5 * 2) { - return DIRECTION_EAST; - } - return DIRECTION_SOUTHEAST; - } - + return DIRECTION_SOUTHEAST; } - if (r3 < 0) { + } + else { + if (pixelPos->y < 0) { return DIRECTION_NORTH; } - if (r3 < 1) { + if (pixelPos->y < 1) { return -1; - } + } } return DIRECTION_SOUTH; } -// https://decomp.me/scratch/Bgbxc -s8 VecDirection4Radial(PixelPos *param_1) +s8 VecDirection4Radial(PixelPos *pixelPos) { -#ifdef NONMATCHING - s32 r0; - s32 r1; - s32 r2; - s32 r3; - s32 r4; - s32 r5; -#else - register s32 r0 asm("r3"); - register s32 r1 asm("r1"); - register s32 r2 asm("r2"); - register s32 r3; - register s32 r4; - register s32 r5 asm("r0"); -#endif + PixelPos absPos = {abs(pixelPos->x), abs(pixelPos->y)}; - r0 = param_1->x; - if (r0 < 0) { - r0 = -r0; - } - r1 = r0; - r3 = param_1->y; - r5 = r3; - if (r3 < 0) { - r5 = -r3; - } - r2 = r5; - r4 = param_1->x; - if (r4 < 0) { - if (r3 < 0) { - if (r2 > r1) { + if (pixelPos->x < 0) { + if (pixelPos->y < 0) { + if (absPos.y > absPos.x) { return DIRECTION_NORTH; } - else - return DIRECTION_WEST; + return DIRECTION_WEST; } - if (r2 <= r1) { + if (absPos.y <= absPos.x) { return DIRECTION_WEST; } } - else { - if (0 < r4) { - if (r3 < 0) { - if (r2 > r1) { - return DIRECTION_NORTH; - } - else - return DIRECTION_EAST; + else if (pixelPos->x > 0) { + if (pixelPos->y < 0) { + if (absPos.y > absPos.x) { + return DIRECTION_NORTH; } - else { - if (r2 > r1) { - return DIRECTION_SOUTH; - } - return DIRECTION_EAST; - } - + return DIRECTION_EAST; } - if (r3 < 0) { + else { + if (absPos.y > absPos.x) { + return DIRECTION_SOUTH; + } + return DIRECTION_EAST; + } + } + else { + if (pixelPos->y < 0) { return DIRECTION_NORTH; } - if (r3 < 1) { + if (pixelPos->y < 1) { return -1; - } + } } return DIRECTION_SOUTH; } @@ -407,7 +348,7 @@ s8 SizedDeltaDirection4(PixelPos *r0, PixelPos *r1, PixelPos *r2, PixelPos *r3) iVar3 = (stack.x + 1); iVar3 -= ((r1->x + r3->x) / 2); stack.x = iVar3; - if(stack.x < 0) stack.x = 0; + if(stack.x < 0) stack.x = 0; } else { @@ -429,10 +370,10 @@ s8 SizedDeltaDirection4(PixelPos *r0, PixelPos *r1, PixelPos *r2, PixelPos *r3) iVar1 = (stack.y - 1); iVar1 += ((r1->y + r3->y) / 2); stack.y = iVar1; - if(stack.y > 0) stack.y = 0; + if(stack.y > 0) stack.y = 0; } - - + + return VecDirection4Radial(&stack); } @@ -450,7 +391,7 @@ s8 SizedDeltaDirection8(PixelPos *r0, PixelPos *r1, PixelPos *r2, PixelPos *r3) iVar3 = (stack.x + 1); iVar3 -= ((r1->x + r3->x) / 2); stack.x = iVar3; - if(stack.x < 0) stack.x = 0; + if(stack.x < 0) stack.x = 0; } else { @@ -472,9 +413,9 @@ s8 SizedDeltaDirection8(PixelPos *r0, PixelPos *r1, PixelPos *r2, PixelPos *r3) iVar1 = (stack.y - 1); iVar1 += ((r1->y + r3->y) / 2); stack.y = iVar1; - if(stack.y > 0) stack.y = 0; + if(stack.y > 0) stack.y = 0; } - - + + return VecDirection8Radial(&stack); } diff --git a/src/code_800558C.c b/src/code_800558C.c index c7935f7cf..590b875a5 100644 --- a/src/code_800558C.c +++ b/src/code_800558C.c @@ -6,18 +6,19 @@ #include "math.h" #include "sprite.h" -extern u8 gUnknown_2026E38; -extern u32 *gUnknown_2026E3C; -extern s32 gUnknown_2026E40; -extern s32 gUnknown_2026E44; -extern s32 gUnknown_2026E48; -extern bool8 gUnknown_2026E4C; -extern u16 gUnknown_2026E4E; -extern bool32 gUnknown_2026E50; -extern bool32 gUnknown_2026E54; -extern u32 *gUnknown_2026E58; -extern s16 gUnknown_2026E60[]; -extern s16 gUnknown_20270E8[]; +EWRAM_DATA u8 gUnknown_2026E38 = 0; +EWRAM_DATA u32 *gUnknown_2026E3C = 0; +EWRAM_DATA s32 gUnknown_2026E40 = 0; +EWRAM_DATA s32 gUnknown_2026E44 = 0; +EWRAM_DATA s32 gUnknown_2026E48 = 0; +EWRAM_DATA bool8 gUnknown_2026E4C = 0; +EWRAM_DATA u16 gUnknown_2026E4E = 0; +EWRAM_DATA bool32 gUnknown_2026E50 = 0; +EWRAM_DATA bool32 gUnknown_2026E54 = 0; +EWRAM_DATA u32 *gUnknown_2026E58 = NULL; +UNUSED EWRAM_DATA static u32 sUnused0 = 0; +EWRAM_DATA static s16 gUnknown_2026E60[324] = {0}; +EWRAM_DATA static s16 gUnknown_20270E8[324] = {0}; EWRAM_INIT s16 *gUnknown_203B078 = NULL; @@ -31,28 +32,6 @@ extern const s16 gUnknown_80B83EA[16 * 10]; static void sub_800561C(struct axMapSprite *, s32, s32, const RGB *); const RGB *sub_8005674(struct axMapSprite *, s32); -void DoAxFrame_800558C(struct axObject *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, unkStruct_2039DB0 *spriteMasks) -{ - if (!(a0->axdata.flags >> 15)) - return; - - if (a0->axdata.sub1.poseId < 0) - RunAxAnimationFrame(a0); - - if (!(a0->axdata.flags >> 15)) - return; - - a0->axdata.sub1.pos.x = a0->axdata.sub1.offset.x + spriteX; - a0->axdata.sub1.pos.y = a0->axdata.sub1.offset.y + spriteY; - a0->axdata.sub1.paletteNum = paletteNum; - a0->axdata.sub1.unk16 = a3; - sub_800533C(a0->axdata.poseData, a0->axdata.spriteData, &a0->axdata.sub1, spriteMasks, !!(a0->axdata.sub1.lastPoseId ^ a0->axdata.sub1.poseId)); - a0->axdata.sub1.lastPoseId = a0->axdata.sub1.poseId; - - if (a0->axdata.flags & 0x800) - a0->axdata.flags &= 0xF7FF; -} - void sub_8005610(OpenedFile *a0, s32 vramIdx, s32 brightness, const RGB *ramp) { sub_800561C((struct axMapSprite *)a0->data, vramIdx, brightness, ramp); @@ -239,7 +218,7 @@ void sub_8005838(s32 *a0, u8 kind) if (!gUnknown_2026E4C) kind = 0; - r3 = !gUnknown_2026E54 ? (s16 *) &gUnknown_2026E60 : (s16*) &gUnknown_20270E8; + r3 = !gUnknown_2026E54 ? gUnknown_2026E60 : gUnknown_20270E8; r2 = gUnknown_203B078; if (r2 == NULL) diff --git a/src/code_8009804.c b/src/code_8009804.c index 92fb68549..0ba651473 100644 --- a/src/code_8009804.c +++ b/src/code_8009804.c @@ -8,11 +8,11 @@ extern const u8 gUnknown_80B88CC[]; extern const struct FileArchive gSystemFileArchive; // 8300500 -extern Palette32 gFontPalette[8]; -extern u8 gUnknown_202D238[4]; -extern s32 gUnknown_202D23C; -extern u32 gUnknown_202D2A0; -extern struct unkStruct_202D240 gUnknown_202D240[8]; +EWRAM_DATA RGB gFontPalette[128] = {0}; +EWRAM_DATA static u8 gUnknown_202D238[4] = {0}; +EWRAM_DATA static s32 gUnknown_202D23C = 0; +EWRAM_DATA static struct unkStruct_202D240 gUnknown_202D240[8] = {0}; +EWRAM_DATA u32 gUnknown_202D2A0 = 0; typedef struct Palette256 { @@ -45,9 +45,9 @@ void InitFontPalette(void) CpuCopy(gFontPalette, fontpalFile->data, sizeof(gFontPalette)); if (sub_80063B0() == 1) - ptr = gFontPalette[0].pal; + ptr = &gFontPalette[0]; else - ptr = gFontPalette[1].pal; + ptr = &gFontPalette[16]; for (i = 0; i < 16; ptr++, i++) SetBGPaletteBufferColorArray(i + 240, ptr); @@ -64,11 +64,11 @@ void vram_related_8009804(void) for (i = 0; i < 0x13C0; i++) *dest++ = 0; - dest = (u32 *)0x06007000; + dest = (u32 *)(VRAM + 0x7000); for (i = 0; i < 0x400; i++) *dest++ = 0; - dest = (u32 *)0x06008000; + dest = (u32 *)(VRAM + 0x8000); for (i = 0; i < 0x2000; i++) *dest++ = 0; @@ -85,7 +85,7 @@ void vram_related_8009804(void) *dest++ = 0; dest = (u32 *)OAM; - for (i = 0; i < 256; i++) + for (i = 0; i < OAM_SIZE / 4; i++) *dest++ = 0xA000A0; // TODO: Macro or explanation } @@ -150,7 +150,7 @@ void SetFontsBaseColor(RGB a0) s32 i; for (i = 0; i < 8; i++) - gFontPalette[i].pal[1] = a0; + gFontPalette[16 * i + 1] = a0; } UNUSED static void sub_8009A10(struct unkStruct_8009A1C_ptr *a0, u32 palId, u32 vramDstOffset, u32 r3) diff --git a/src/code_800E9A8.c b/src/code_800E9A8.c index 329e485fc..c02a9fed8 100644 --- a/src/code_800E9A8.c +++ b/src/code_800E9A8.c @@ -7,7 +7,7 @@ s32 sub_800E2C0(u32); -struct unkStruct_203B0CC *gUnknown_203B0CC; +extern struct unkStruct_203B0CC *gUnknown_203B0CC; void sub_800DE38(struct unkStruct_203B0CC_sub *); void sub_800DE8C(struct unkStruct_203B0CC_sub *, DungeonPos *); @@ -48,7 +48,7 @@ bool8 sub_800E838(u16 *param_1, s32 param_2) } // TODO: look at this later -// https://decomp.me/scratch/luz2f +// https://decomp.me/scratch/luz2f u32 sub_800E890(unkStruct_80416E0 *param_1) { param_1->unk14 = sub_800E900(param_1->unk0); @@ -101,7 +101,7 @@ bool8 sub_800E90C(DungeonPos *param_1) } } - if(ptr->unk10 > 0) + if(ptr->unk10 > 0) ptr->unk10--; sub_800DCD0(ptr); if(ptr->unk54 == 0) diff --git a/src/code_800E9E4.c b/src/code_800E9E4.c index b5120a88d..2235958dc 100644 --- a/src/code_800E9E4.c +++ b/src/code_800E9E4.c @@ -8,14 +8,14 @@ u32 sub_800F19C(s32); s32 sub_800EBBC(s32); s32 sub_800EC68(s32); -struct unkStruct_203B0CC *gUnknown_203B0CC; +extern struct unkStruct_203B0CC *gUnknown_203B0CC; extern unkStruct_80B9C60 gUnknown_80B9C60; extern s32 gUnknown_80B9C9C[8]; extern s16 gUnknown_80CE73C[20]; -unkStruct_80CE37C gUnknown_80CE37C[1]; +extern unkStruct_80CE37C gUnknown_80CE37C[1]; extern unkStruct_80BDBC4 gUnknown_80BDBC4[430]; extern unkStruct_80B9CC4 gUnknown_80B9CC4[448]; @@ -56,13 +56,13 @@ s32 sub_800EA84(s32 *param_1) unkStruct_80BDBC4 *ret1; u32 size; ret1 = sub_800ECB8(param_1[0]); - + stack[1].unk00[0] = ret1->unk0; stack[1].unk00[1] = param_1[4]; stack[1].unk00[2] = param_1[3]; stack[1].unk00[3] = param_1[1]; stack[1].unk00[4] = param_1[2]; - + ret1 = sub_800ECB8(param_1[0]); stack[1].unk00[5] = sub_800EBBC(ret1->unk0); stack[1].unk00[6] = 0x0000ffff; @@ -137,13 +137,13 @@ s32 sub_800EBC8(s32 *param_1) unkStruct_80BDBC4 *ret1; u32 size; ret1 = sub_800ECB8(param_1[0]); - + stack[1].unk00[0] = ret1->unk4; stack[1].unk00[1] = param_1[4]; stack[1].unk00[2] = param_1[3]; stack[1].unk00[3] = param_1[1]; stack[1].unk00[4] = param_1[2]; - + ret1 = sub_800ECB8(param_1[0]); stack[1].unk00[5] = sub_800EC68(ret1->unk4); stack[1].unk00[6] = 0x0000ffff; diff --git a/src/code_800F034.c b/src/code_800F034.c index ef2398231..6f08b8b99 100644 --- a/src/code_800F034.c +++ b/src/code_800F034.c @@ -16,7 +16,7 @@ struct unkStruct_203B0D4 struct unkStruct_800F18C unk0[2]; }; -struct unkStruct_203B0D4 *gUnknown_203B0D4; +extern struct unkStruct_203B0D4 *gUnknown_203B0D4; ALIGNED(4) static const u8 gUnknown_80CE77C[] = "efob%03d"; ALIGNED(4) static const u8 gUnknown_80CE788[] = "efbg%03d"; @@ -53,7 +53,7 @@ void sub_800F094(void) { gUnknown_203B0D4->unk0[index].effectID = -1; gUnknown_203B0D4->unk0[index].counter = 0; - } + } } s32 sub_800F0C0(s32 animType, s32 effectID) @@ -81,7 +81,7 @@ s32 sub_800F0F4(s32 animType, s32 effectID) return -1; } -void sub_800F13C(s32 index, OpenedFile *file, unkStruct_80B9CC4 * r2) +void sub_800F13C(s32 index, OpenedFile *file, unkStruct_80B9CC4 * r2) { if(gUnknown_203B0D4->unk0[index].counter == 0) gUnknown_203B0D4->unk0[index].effectID = r2->effectId; @@ -101,9 +101,9 @@ void sub_800F15C(s32 effectID) } } -struct unkStruct_800F18C *sub_800F18C(s32 index) +struct unkStruct_800F18C *sub_800F18C(s32 index) { - return &gUnknown_203B0D4->unk0[index]; + return &gUnknown_203B0D4->unk0[index]; } s32 sub_800F19C(s32 index) @@ -135,6 +135,6 @@ OpenedFile * sub_800F1C0(u32 animType, s32 effectID) void sub_800F204(OpenedFile *file) { - CloseFile(file); + CloseFile(file); } diff --git a/src/code_8010EF0.c b/src/code_8010EF0.c deleted file mode 100644 index 0317597d8..000000000 --- a/src/code_8010EF0.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "global.h" -#include "code_8004AA0.h" -#include "text.h" - -EWRAM_INIT struct UnkBgStruct *gUnknown_203B0E4 = NULL; -EWRAM_INIT void *gUnknown_203B0E8 = NULL; // Pointer to some unknown struct -EWRAM_INIT UnkTextStruct2 gUnknown_203B0EC[4] = { // Exact location of this variable is unknown. Find a better place for it once more code is decompiled. - [0] = { - .unk4 = 3, - .unk8 = {2, 10}, - .unkC = 26, - .unkE = 9, - .unk10 = 9, - }, - [1] = { - .unk4 = 3, - .unk8 = {23, 6}, - .unkC = 5, - .unkE = 3, - .unk10 = 3, - }, - [2] = { - .unk4 = 3, - }, - [3] = { - .unk4 = 3, - }, -}; - -void sub_8010EF0(void) -{ - CloseFile(gUnknown_203B0E4->unk0[4]); - CloseFile(gUnknown_203B0E4->unk0[2]); - CloseFile(gUnknown_203B0E4->unk0[3]); - CloseFile(gUnknown_203B0E4->unk0[0]); - CloseFile(gUnknown_203B0E4->unk0[1]); -} diff --git a/src/code_80118A4.c b/src/code_80118A4.c index e0e0d7069..9a9993696 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -1,18 +1,10 @@ -#include -#include #include "global.h" -#include "bg_palette_buffer.h" -#include "code_8004AA0.h" #include "code_800558C.h" #include "code_8009804.h" -#include "code_800C9CC.h" #include "code_80118A4.h" #include "music.h" #include "constants/bg_music.h" -#include "play_time.h" -#include "bg_control.h" #include "config.h" -#include "game_options.h" #include "sprite.h" #include "event_flag.h" #include "file_system.h" @@ -24,33 +16,9 @@ EWRAM_DATA s16 gUnknown_202DE20 = {0}; EWRAM_DATA s16 gUnknown_202DE22 = {0}; EWRAM_DATA s16 gUnknown_202DE24 = {0}; -extern void xxx_call_update_bg_vram(void); extern bool8 sub_80111C4(); extern void sub_8010F28(); -void sub_801169C(void) -{ - SetBG2RegOffsets(gUnknown_203B0E4->xoffset, gUnknown_203B0E4->yoffset); - SetBG3RegOffsets(gUnknown_203B0E4->xoffset, gUnknown_203B0E4->yoffset); - sub_8010F28(); - sub_8004AF0(sub_80111C4(), gUnknown_203B0E4->unk4C4C, 0xB0, 16, gUnknown_203B0E4->unk4DCC, NULL); - 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(); - sub_8009908(); - xxx_call_update_bg_sound_input(); - sub_8011860(); - ResetSprites(FALSE); -} - void sub_8011760(void) { if (sub_80023E4(13)) diff --git a/src/code_8015080.c b/src/code_8015080.c index 8aa56f2a7..72ff7c990 100644 --- a/src/code_8015080.c +++ b/src/code_8015080.c @@ -16,14 +16,14 @@ struct unkStruct_203B1F8 // size: 0x4B4 u32 menuAction; MenuStruct unk4; - UnkTextStruct2 unk54[4]; + Windows windows; u8 buffer[0x400]; }; EWRAM_INIT struct unkStruct_203B1F8 *gUnknown_203B1F8 = {NULL}; -const UnkTextStruct2 gUnknown_80DAF70 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80DAF70 = { + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -31,8 +31,8 @@ const UnkTextStruct2 gUnknown_80DAF70 = { NULL }; -const UnkTextStruct2 gUnknown_80DAF88 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80DAF88 = { + 0x00, 0x03, 0x02, 0x02, 0x1A, 0x0c, @@ -40,8 +40,8 @@ const UnkTextStruct2 gUnknown_80DAF88 = { NULL }; -const UnkTextStruct2 gUnknown_80DAFA0 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80DAFA0 = { + 0x00, 0x03, 0x16, 0x0F, 0x06, 0x03, @@ -251,8 +251,8 @@ static const u8 *const gUnknown_80DB4F4[] = _("END"), }; -static const UnkTextStruct2 gUnknown_80DB538 = { - 0x00, 0x00, 0x00, 0x00, +static const Window gUnknown_80DB538 = { + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -260,8 +260,8 @@ static const UnkTextStruct2 gUnknown_80DB538 = { NULL }; -static const UnkTextStruct2 gUnknown_80DB550 = { - 0x00, 0x00, 0x00, 0x00, +static const Window gUnknown_80DB550 = { + 0x00, 0x01, 0x01, 0x0A, 0x1C, 0x09, @@ -269,8 +269,8 @@ static const UnkTextStruct2 gUnknown_80DB550 = { NULL }; -static const UnkTextStruct2 gUnknown_80DB568 = { - 0x00, 0x00, 0x00, 0x00, +static const Window gUnknown_80DB568 = { + 0x00, 0x01, 0x04, 0x03, 0x16, 0x05, @@ -278,8 +278,8 @@ static const UnkTextStruct2 gUnknown_80DB568 = { NULL }; -static const UnkTextStruct2 gUnknown_80DB580 = { - 0x00, 0x00, 0x00, 0x00, +static const Window gUnknown_80DB580 = { + 0x00, 0x01, 0x01, 0x02, 0x1C, 0x07, @@ -296,14 +296,14 @@ bool8 sub_8015080(u8 *buffer, const MenuItem *menuItems) for(index = 0; index < 4; index++) { - gUnknown_203B1F8->unk54[index] = gUnknown_80DAF70; + gUnknown_203B1F8->windows.id[index] = gUnknown_80DAF70; } - gUnknown_203B1F8->unk54[0] = gUnknown_80DAF88; - gUnknown_203B1F8->unk54[2] = gUnknown_80DAFA0; - sub_8012CAC(&gUnknown_203B1F8->unk54[2], menuItems); + gUnknown_203B1F8->windows.id[0] = gUnknown_80DAF88; + gUnknown_203B1F8->windows.id[2] = gUnknown_80DAFA0; + sub_8012CAC(&gUnknown_203B1F8->windows.id[2], menuItems); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B1F8->unk54, 1, 1); + ShowWindows(&gUnknown_203B1F8->windows, 1, 1); sub_80073B8(0); FormatString(buffer, gUnknown_203B1F8->buffer, gUnknown_203B1F8->buffer + 0x400, 0); PrintStringOnWindow(4, 4, gUnknown_203B1F8->buffer, 0, 0); @@ -356,7 +356,7 @@ struct unkStruct_203B1FC u8 *unkF8; u8 unkFC[56]; u8 *unk134; - UnkTextStruct2 unk138[4]; + Windows windows; }; extern struct unkStruct_203B1FC *gUnknown_203B1FC; @@ -471,19 +471,19 @@ u32 sub_80151C0(u32 r0, u8 *buffer) gUnknown_203B1FC->unk17 = 0; for (index = 0; index < 4; index++) { - gUnknown_203B1FC->unk138[index] = gUnknown_80DB538; + gUnknown_203B1FC->windows.id[index] = gUnknown_80DB538; } if(gUnknown_203B1FC->unk4 != 0) { - gUnknown_203B1FC->unk138[1] = gUnknown_80DB580; + gUnknown_203B1FC->windows.id[1] = gUnknown_80DB580; } else { - gUnknown_203B1FC->unk138[1] = gUnknown_80DB568; + gUnknown_203B1FC->windows.id[1] = gUnknown_80DB568; } - gUnknown_203B1FC->unk138[0] = gUnknown_80DB550; + gUnknown_203B1FC->windows.id[0] = gUnknown_80DB550; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B1FC->unk138, 1, 1); + ShowWindows(&gUnknown_203B1FC->windows, 1, 1); sub_8015A08(1); sub_8015C1C(); diff --git a/src/code_801602C.c b/src/code_801602C.c index 7e166967b..c3320e8b1 100644 --- a/src/code_801602C.c +++ b/src/code_801602C.c @@ -27,7 +27,7 @@ static void sub_801629C(void); u32 CreateConfirmNameMenu(u32 mode, u8 *name) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B200 = MemoryAlloc(sizeof(struct unkStruct_203B200), 8); sUnknown_203B200->unk0 = mode; diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c index 0da13b7cb..1ea71f135 100644 --- a/src/code_801B3C0.c +++ b/src/code_801B3C0.c @@ -26,9 +26,9 @@ bool8 sub_801B3C0(Item *item) sUnknown_203B230->item = *item; sub_801317C(&sUnknown_203B230->unk88); sUnknown_203B230->unk24 = 0; - sub_80140B4(sUnknown_203B230->unk28); + sub_80140B4(&sUnknown_203B230->unk28); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B230->unk28, TRUE, TRUE); + ShowWindows(&sUnknown_203B230->unk28, TRUE, TRUE); sub_801B46C(0); return TRUE; } diff --git a/src/code_801B60C.c b/src/code_801B60C.c index 3873b1a66..f44ba2fa0 100644 --- a/src/code_801B60C.c +++ b/src/code_801B60C.c @@ -124,26 +124,26 @@ static void sub_801B760(void) case 13: case 14: case 15: - RestoreUnkTextStruct_8006518(sUnknown_203B234->unkF4); + RestoreUnkTextStruct_8006518(&sUnknown_203B234->windows); for (i = 0; i < 4; i++) - sUnknown_203B234->unkF4[i] = sUnknown_80DBA58; + sUnknown_203B234->windows.id[i] = sUnknown_80DBA58; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B234->unkF4, TRUE, TRUE); + ShowWindows(&sUnknown_203B234->windows, TRUE, TRUE); break; case 10: - RestoreUnkTextStruct_8006518(sUnknown_203B234->unkF4); + RestoreUnkTextStruct_8006518(&sUnknown_203B234->windows); sub_801BB5C(); - sUnknown_203B234->unkF4[2] = sUnknown_80DBA70; - sub_8012CAC(&sUnknown_203B234->unkF4[2], sUnknown_203B234->unkCC); + sUnknown_203B234->windows.id[2] = sUnknown_80DBA70; + sub_8012CAC(&sUnknown_203B234->windows.id[2], sUnknown_203B234->unkCC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B234->unkF4, TRUE, TRUE); + ShowWindows(&sUnknown_203B234->windows, TRUE, TRUE); break; case 12: - RestoreUnkTextStruct_8006518(sUnknown_203B234->unkF4); - sUnknown_203B234->unkF4[1] = sUnknown_80DBA88; + RestoreUnkTextStruct_8006518(&sUnknown_203B234->windows); + sUnknown_203B234->windows.id[1] = sUnknown_80DBA88; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B234->unkF4, TRUE, TRUE); + ShowWindows(&sUnknown_203B234->windows, TRUE, TRUE); break; } } diff --git a/src/code_801C8C4.c b/src/code_801C8C4.c index c8ade824b..4500f7b8a 100644 --- a/src/code_801C8C4.c +++ b/src/code_801C8C4.c @@ -18,7 +18,7 @@ static EWRAM_INIT u16 sUnknown_203B24E = {0}; static void sub_801CC38(void); static u32 sub_801CE58(void); -bool8 sub_801C8C4(s32 a0, s32 a1, UnkTextStruct2_sub *a2, u32 a3) +bool8 sub_801C8C4(s32 a0, s32 a1, DungeonPos *a2, u32 a3) { if (sub_801CF14(a0)) return FALSE; @@ -29,17 +29,17 @@ bool8 sub_801C8C4(s32 a0, s32 a1, UnkTextStruct2_sub *a2, u32 a3) sUnknown_203B244->unk0 = a0; sub_801CF94(); sUnknown_203B244->unk4B4.s0.unk34 = a1; - sUnknown_203B244->unk4B4.s0.unk38 = &sUnknown_203B244->unk4B4.s0.unk3C[a1]; - RestoreUnkTextStruct_8006518(sUnknown_203B244->unk4B4.s0.unk3C); - sUnknown_203B244->unk4B4.s0.unk3C[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE54; + sUnknown_203B244->unk4B4.s0.unk38 = &sUnknown_203B244->unk4B4.s0.windows.id[a1]; + RestoreUnkTextStruct_8006518(&sUnknown_203B244->unk4B4.s0.windows); + sUnknown_203B244->unk4B4.s0.windows.id[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE54; sUnknown_203B244->unk4B4.s0.unk38->unk14 = &sUnknown_203B244->unk4B4.unk9C; if (a2 != NULL) - sUnknown_203B244->unk4B4.s0.unk3C[sUnknown_203B244->unk4B4.s0.unk34].unk8 = *a2; + sUnknown_203B244->unk4B4.s0.windows.id[sUnknown_203B244->unk4B4.s0.unk34].pos = *a2; sub_8012D08(sUnknown_203B244->unk4B4.s0.unk38, a3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B244->unk4B4.s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B244->unk4B4.s0.windows, TRUE, TRUE); sub_8013818(&sUnknown_203B244->unk4B4.s0.input, sub_801CE58(), a3, a1); if (sUnknown_203B248 == sUnknown_203B244->unk0) { @@ -111,7 +111,7 @@ u8 sub_801CB24(void) void sub_801CB5C(bool8 a0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B244->unk4B4.s0.unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B244->unk4B4.s0.windows, FALSE, FALSE); sUnknown_203B244->unk4B4.s0.input.unk22 = sub_801CE58(); sub_8013984(&sUnknown_203B244->unk4B4.s0.input); sub_801CC38(); @@ -127,9 +127,9 @@ void sub_801CBB8(void) sUnknown_203B248 = sUnknown_203B244->unk0; sUnknown_203B24C = sUnknown_203B244->unk4B4.s0.input.menuIndex; sUnknown_203B24E = sUnknown_203B244->unk4B4.s0.input.unk1E; - sUnknown_203B244->unk4B4.s0.unk3C[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE3C; + sUnknown_203B244->unk4B4.s0.windows.id[sUnknown_203B244->unk4B4.s0.unk34] = sUnknown_80DBE3C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B244->unk4B4.s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B244->unk4B4.s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B244); sUnknown_203B244 = NULL; } @@ -161,13 +161,13 @@ void sub_801CCD8(void) for(index = 0; index < sUnknown_203B244->unk4B4.s0.input.unk1A; index++) { itemID = sUnknown_203B244->itemIDs[(sUnknown_203B244->unk4B4.s0.input.unk1E * sUnknown_203B244->unk4B4.s0.input.unk1C) + index]; BufferItemName(buffer, itemID, NULL); - y = sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index); + y = GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index); PrintStringOnWindow(8, y, buffer, sUnknown_203B244->unk4B4.s0.unk34, 0); - y2 = sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index); - sub_8012BC4((sUnknown_203B244->unk4B4.s0.unk38->unkC * 8) - 2, y2, gTeamInventoryRef->teamStorage[itemID], 3, 5, sUnknown_203B244->unk4B4.s0.unk34); + y2 = GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index); + sub_8012BC4((sUnknown_203B244->unk4B4.s0.unk38->width * 8) - 2, y2, gTeamInventoryRef->teamStorage[itemID], 3, 5, sUnknown_203B244->unk4B4.s0.unk34); if (sub_801CFE0(itemID) & 1) - sub_8007B7C(sUnknown_203B244->unk4B4.s0.unk34, 8, sub_8013800(&sUnknown_203B244->unk4B4.s0.input, index), (sUnknown_203B244->unk4B4.s0.unk38->unkC - 1) * '\b', 10); // TODO: Ghidra being crazy + sub_8007B7C(sUnknown_203B244->unk4B4.s0.unk34, 8, GetMenuEntryYCoord(&sUnknown_203B244->unk4B4.s0.input, index), (sUnknown_203B244->unk4B4.s0.unk38->width - 1) * 8, 10); } sub_80073E0(sUnknown_203B244->unk4B4.s0.unk34); diff --git a/src/code_801D014.c b/src/code_801D014.c index 0769db871..cd4b767d6 100644 --- a/src/code_801D014.c +++ b/src/code_801D014.c @@ -61,7 +61,7 @@ bool8 sub_801D014(PokemonStruct1 *a0) struct unk_203B250 *preload; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B250 = MemoryAlloc(sizeof(struct unk_203B250), 8); sUnknown_203B250->menuAction = sUnknown_203B254; @@ -188,7 +188,7 @@ static void sub_801D220(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B250->unkB8); + RestoreUnkTextStruct_8006518(&sUnknown_203B250->windows); switch (sUnknown_203B250->state) { case 0: @@ -196,47 +196,47 @@ static void sub_801D220(void) if (sUnknown_203B250->pokeStruct != NULL) { for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBE7C; + sUnknown_203B250->windows.id[i] = sUnknown_80DBE7C; - sUnknown_203B250->unkB8[0] = sUnknown_80DBE98; - sub_8012CAC(sUnknown_203B250->unkB8, sUnknown_203B250->unk68); - sUnknown_203B250->unkB8[0].unkC = 9; + sUnknown_203B250->windows.id[0] = sUnknown_80DBE98; + sub_8012CAC(&sUnknown_203B250->windows.id[0], sUnknown_203B250->unk68); + sUnknown_203B250->windows.id[0].width = 9; } else { - for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBEB0[i]; + for (i = 0; i < MAX_WINDOWS; i++) + sUnknown_203B250->windows.id[i] = sUnknown_80DBEB0[i]; - sub_8012CAC(sUnknown_203B250->unkB8, sUnknown_203B250->unk68); - sUnknown_203B250->unkB8[0].unkC = 8; + sub_8012CAC(&sUnknown_203B250->windows.id[0], sUnknown_203B250->unk68); + sUnknown_203B250->windows.id[0].width = 8; } break; case 1: sub_801D4C0(); if (sUnknown_203B250->pokeStruct != NULL) { - for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBE7C; + for (i = 0; i < MAX_WINDOWS; i++) + sUnknown_203B250->windows.id[i] = sUnknown_80DBE7C; - sUnknown_203B250->unkB8[0] = sUnknown_80DBE98; - sub_8012CAC(sUnknown_203B250->unkB8, sUnknown_203B250->unk68); - sUnknown_203B250->unkB8[0].unkC = 9; + sUnknown_203B250->windows.id[0] = sUnknown_80DBE98; + sub_8012CAC(&sUnknown_203B250->windows.id[0], sUnknown_203B250->unk68); + sUnknown_203B250->windows.id[0].width = 9; } else { - for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBEB0[i]; + for (i = 0; i < MAX_WINDOWS; i++) + sUnknown_203B250->windows.id[i] = sUnknown_80DBEB0[i]; - sub_8012CAC(sUnknown_203B250->unkB8, sUnknown_203B250->unk68); - sUnknown_203B250->unkB8[0].unkC = 8; + sub_8012CAC(&sUnknown_203B250->windows.id[0], sUnknown_203B250->unk68); + sUnknown_203B250->windows.id[0].width = 8; } break; default: for (i = 0; i < 4; i++) - sUnknown_203B250->unkB8[i] = sUnknown_80DBE7C; + sUnknown_203B250->windows.id[i] = sUnknown_80DBE7C; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B250->unkB8, TRUE, TRUE); + ShowWindows(&sUnknown_203B250->windows, TRUE, TRUE); } static void sub_801D3A8(void) diff --git a/src/code_801D9E4.c b/src/code_801D9E4.c index bb9c1acf6..7e89b77d7 100644 --- a/src/code_801D9E4.c +++ b/src/code_801D9E4.c @@ -23,12 +23,12 @@ bool8 sub_801D9E4(void) { sUnknown_203B258 = MemoryAlloc(sizeof(*sUnknown_203B258), 8); sUnknown_203B258->s0.unk34 = 3; - sUnknown_203B258->s0.unk38 = &sUnknown_203B258->s0.unk3C[3]; - RestoreUnkTextStruct_8006518(sUnknown_203B258->s0.unk3C); - sUnknown_203B258->s0.unk3C[sUnknown_203B258->s0.unk34] = sUnknown_80DBF88; + sUnknown_203B258->s0.unk38 = &sUnknown_203B258->s0.windows.id[3]; + RestoreUnkTextStruct_8006518(&sUnknown_203B258->s0.windows); + sUnknown_203B258->s0.windows.id[sUnknown_203B258->s0.unk34] = sUnknown_80DBF88; sUnknown_203B258->s0.unk38->unk14 = &sUnknown_203B258->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE); sub_8013818(&sUnknown_203B258->s0.input, 229, 10, sUnknown_203B258->s0.unk34); sub_801DB54(); sub_801DBD4(); @@ -80,9 +80,9 @@ UNUSED static void sub_801DADC(bool8 a0) void sub_801DB0C(void) { if (sUnknown_203B258 != NULL) { - sUnknown_203B258->s0.unk3C[sUnknown_203B258->s0.unk34] = sUnknown_80DBF70; + sUnknown_203B258->s0.windows.id[sUnknown_203B258->s0.unk34] = sUnknown_80DBF70; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B258); sUnknown_203B258 = NULL; } @@ -96,7 +96,7 @@ static void sub_801DB54(void) sUnknown_203B258->unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B258->s0.windows, TRUE, TRUE); SUB_80095E4_CALL(sUnknown_203B258->s0); } @@ -125,10 +125,10 @@ static void sub_801DBD4(void) temp = &gGroundConversion_811BAF4[index]; temp2 = &gUnknown_81188F0[temp->unk4]; - y = sub_8013800(&sUnknown_203B258->s0.input, counter); + y = GetMenuEntryYCoord(&sUnknown_203B258->s0.input, counter); PrintStringOnWindow(8, y, temp2->text1, sUnknown_203B258->s0.unk34, 0); - y = sub_8013800(&sUnknown_203B258->s0.input, counter); + y = GetMenuEntryYCoord(&sUnknown_203B258->s0.input, counter); PrintStringOnWindow(62, y, temp->text, sUnknown_203B258->s0.unk34, 0); } diff --git a/src/code_801EE10.c b/src/code_801EE10.c index 3c0b70c68..d28889cb4 100644 --- a/src/code_801EE10.c +++ b/src/code_801EE10.c @@ -13,8 +13,8 @@ EWRAM_INIT unkStruct_203B270 *gUnknown_203B270 = {NULL}; -const UnkTextStruct2 gUnknown_80DC240 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80DC240 = { + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -22,10 +22,10 @@ const UnkTextStruct2 gUnknown_80DC240 = { NULL }; -const UnkTextStruct2_sub2 gUnkData_80DC258 = {0x01, 0x00, 0x0F, 0x00}; +const WindowHeader gUnkData_80DC258 = {0x01, 0x00, 0x0F, 0x00}; -const UnkTextStruct2 gUnknown_80DC25C = { - 0, 0, 0, 0, +const Window gUnknown_80DC25C = { + 0, 6, 0x2, 0x2, 0x12, 0x8, @@ -33,8 +33,8 @@ const UnkTextStruct2 gUnknown_80DC25C = { &gUnkData_80DC258 }; -const UnkTextStruct2 gUnknown_80DC274 = { - 0, 0, 0, 0, +const Window gUnknown_80DC274 = { + 0, 3, 0x2, 0xF, 0x1A, 0x3, @@ -84,16 +84,16 @@ u8 sub_801EE10(u32 param_1, s16 species, Move *moves, u32 param_4, const u8 *tex if (iVar8 < four) { iVar8 = 4; } - RestoreUnkTextStruct_8006518(gUnknown_203B270->unk58); + RestoreUnkTextStruct_8006518(&gUnknown_203B270->windows); gUnknown_203B270->unk50 = param_6; - gUnknown_203B270->unk58[param_6] = gUnknown_80DC25C; + gUnknown_203B270->windows.id[param_6] = gUnknown_80DC25C; if (gUnknown_203B270->text != NULL) { gUnknown_203B270->unk54 = sub_8006544(param_6); - gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC274; + gUnknown_203B270->windows.id[gUnknown_203B270->unk54] = gUnknown_80DC274; } - sub_8012D08(&gUnknown_203B270->unk58[gUnknown_203B270->unk50],iVar8); + sub_8012D08(&gUnknown_203B270->windows.id[gUnknown_203B270->unk50],iVar8); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + ShowWindows(&gUnknown_203B270->windows, TRUE, TRUE); sub_8013818(&gUnknown_203B270->input,iVar5,iVar5,param_6); sub_8013780(&gUnknown_203B270->input,0); sub_801F280(TRUE); @@ -250,7 +250,7 @@ void sub_801F1B0(bool8 param_1, bool8 param_2) if(!gUnknown_203B270->unk4) gUnknown_203B270->unk4 = param_2; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + ShowWindows(&gUnknown_203B270->windows, TRUE, TRUE); gUnknown_203B270->input.unk22 = sub_801F3F8(); sub_8013984(&gUnknown_203B270->input); gUnknown_203B270->input.menuIndex = sub_8092F4C(gUnknown_203B270->moves, gUnknown_203B270->input.menuIndex); @@ -263,13 +263,13 @@ void sub_801F214(void) { if(gUnknown_203B270) { - gUnknown_203B270->unk58[gUnknown_203B270->unk50] = gUnknown_80DC240; + gUnknown_203B270->windows.id[gUnknown_203B270->unk50] = gUnknown_80DC240; if(gUnknown_203B270->text) { - gUnknown_203B270->unk58[gUnknown_203B270->unk54] = gUnknown_80DC240; + gUnknown_203B270->windows.id[gUnknown_203B270->unk54] = gUnknown_80DC240; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B270->unk58, TRUE, TRUE); + ShowWindows(&gUnknown_203B270->windows, TRUE, TRUE); MemoryFree(gUnknown_203B270); gUnknown_203B270 = NULL; } @@ -316,7 +316,7 @@ void sub_801F280(bool8 param_1) } sub_80928A0(gFormatBuffer_Items[0],move,&uStack_30); - y = sub_8013800(&gUnknown_203B270->input,i); + y = GetMenuEntryYCoord(&gUnknown_203B270->input,i); linkChain = MoveFlagLinkChain(move); x = !linkChain ? 0x8 : 0xD; if (!linkChain && i != 0) { diff --git a/src/code_801F428.c b/src/code_801F428.c index f6a3dc033..00a688777 100644 --- a/src/code_801F428.c +++ b/src/code_801F428.c @@ -20,16 +20,16 @@ struct unkStruct_203B274 }; EWRAM_INIT struct unkStruct_203B274 *gUnknown_203B274 = {NULL}; -static const UnkTextStruct2 sUnknown_80DC2AC = { - 0, 0, 0, 0, +static const Window sUnknown_80DC2AC = { + 0, 3, 0, 0, 0, 0, 0, 0, NULL }; -static const UnkTextStruct2 sUnknown_80DC2C4 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC2C4 = { + 0, 6, 2, 2, 0xF, 4, @@ -52,16 +52,16 @@ bool8 sub_801F428(s16 index, s32 param_2) gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32]; gUnknown_203B274->unk4 = &gUnknown_203B274->unk8; gUnknown_203B274->s348.s0.unk34 = param_2; - gUnknown_203B274->s348.s0.unk38 = &gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B274->s348.s0.unk3C); - gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2C4; + gUnknown_203B274->s348.s0.unk38 = &gUnknown_203B274->s348.s0.windows.id[gUnknown_203B274->s348.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B274->s348.s0.windows); + gUnknown_203B274->s348.s0.windows.id[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2C4; gUnknown_203B274->s348.s0.unk38->unk14 = &gUnknown_203B274->s348.unk9C; gUnknown_203B274->s348.unk9C.f0 = 1; gUnknown_203B274->s348.unk9C.f1 = 0; gUnknown_203B274->s348.unk9C.f2 = 0xC; gUnknown_203B274->s348.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B274->s348.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B274->s348.s0.input, sub_801F7E4(), 4, param_2); sub_801F690(); sub_801F700(); @@ -108,7 +108,7 @@ u16 sub_801F5B4(void) void sub_801F5F0(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B274->s348.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B274->s348.s0.windows, FALSE, FALSE); sub_8013984(&gUnknown_203B274->s348.s0.input); sub_801F690(); sub_801F700(); @@ -120,9 +120,9 @@ void sub_801F63C(void) { if(gUnknown_203B274 != NULL) { - gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2AC; + gUnknown_203B274->s348.s0.windows.id[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2AC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B274->s348.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B274); gUnknown_203B274 = NULL; } @@ -147,7 +147,7 @@ void sub_801F700(void) for(index = 0; index < gUnknown_203B274->s348.s0.input.unk1A; index++) { sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.unk1C + index]); - y = sub_8013800(&gUnknown_203B274->s348.s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B274->s348.s0.input, index); PrintStringOnWindow(8,y,buffer2,gUnknown_203B274->s348.s0.unk34,0); } sub_80073E0(gUnknown_203B274->s348.s0.unk34); diff --git a/src/code_801F808.c b/src/code_801F808.c index 7e42bc5a9..b08b685ed 100644 --- a/src/code_801F808.c +++ b/src/code_801F808.c @@ -23,16 +23,16 @@ struct unkStruct_203B278 u32 unk24; MenuInputStruct unk28; u32 unk5C; - UnkTextStruct2 *unk60; - UnkTextStruct2 unk64[4]; - UnkTextStruct2_sub2 unkC4; + Window *unk60; + Windows windows; + WindowHeader unkC4; MenuInputStructSub unkC8; }; EWRAM_INIT struct unkStruct_203B278 *gUnknown_203B278 = {NULL}; -static const UnkTextStruct2 sUnknown_80DC2F8 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC2F8 = { + 0, 3, 0, 0, 0, 0, @@ -55,10 +55,10 @@ bool8 sub_801F808(u16 *moveIDs) ResetSprites(TRUE); gUnknown_203B278 = MemoryAlloc(sizeof(struct unkStruct_203B278), 8); gUnknown_203B278->unk5C = 0; - gUnknown_203B278->unk60 = gUnknown_203B278->unk64; - sub_80140B4(gUnknown_203B278->unk64); + gUnknown_203B278->unk60 = &gUnknown_203B278->windows.id[0]; + sub_80140B4(&gUnknown_203B278->windows); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + ShowWindows(&gUnknown_203B278->windows, TRUE, TRUE); gUnknown_203B278->moveIDs = moveIDs; for(index = 4; index > 1; index--) @@ -93,9 +93,9 @@ void sub_801F8D0(void) { if(gUnknown_203B278) { - gUnknown_203B278->unk64[gUnknown_203B278->unk5C] = sUnknown_80DC2F8; + gUnknown_203B278->windows.id[gUnknown_203B278->unk5C] = sUnknown_80DC2F8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + ShowWindows(&gUnknown_203B278->windows, TRUE, TRUE); MemoryFree(gUnknown_203B278); gUnknown_203B278 = NULL; } @@ -110,7 +110,7 @@ void sub_801F918(s32 newState) void sub_801F930(void) { - sub_80140B4(gUnknown_203B278->unk64); + sub_80140B4(&gUnknown_203B278->windows); switch(gUnknown_203B278->state) { case 0: @@ -120,11 +120,11 @@ void sub_801F930(void) gUnknown_203B278->unkC4.f2 = 0x10; gUnknown_203B278->unkC4.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + ShowWindows(&gUnknown_203B278->windows, TRUE, TRUE); break; case 1: ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B278->unk64, TRUE, TRUE); + ShowWindows(&gUnknown_203B278->windows, TRUE, TRUE); break; default: break; diff --git a/src/code_80227B8.c b/src/code_80227B8.c index 1558bce6d..3bd8dd8f0 100644 --- a/src/code_80227B8.c +++ b/src/code_80227B8.c @@ -34,7 +34,7 @@ static void sub_8023120(void); bool8 sub_80227B8(PokemonStruct1 *pkmn) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B294 = MemoryAlloc(sizeof(unkStruct_203B294), 8); sUnknown_203B294->menuAction = 0; @@ -109,28 +109,28 @@ static void sub_802293C(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B294->unk148); + RestoreUnkTextStruct_8006518(&sUnknown_203B294->windows); switch (sUnknown_203B294->state) { case 2: sub_8022D2C(); - sUnknown_203B294->unk148[2] = sUnknown_80DC5BC; - sub_8012CAC(&sUnknown_203B294->unk148[2], sUnknown_203B294->unkF8); - sUnknown_203B294->unk148[2].unkC = 6; + sUnknown_203B294->windows.id[2] = sUnknown_80DC5BC; + sub_8012CAC(&sUnknown_203B294->windows.id[2], sUnknown_203B294->unkF8); + sUnknown_203B294->windows.id[2].width = 6; break; case 3: - sUnknown_203B294->unk148[1] = sUnknown_80DC5D4; + sUnknown_203B294->windows.id[1] = sUnknown_80DC5D4; break; default: for (i = 0; i < 4; i++) - sUnknown_203B294->unk148[i] = sUnknown_80DC5A4; + sUnknown_203B294->windows.id[i] = sUnknown_80DC5A4; break; case 10 ... 16: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B294->unk148, TRUE, TRUE); + ShowWindows(&sUnknown_203B294->windows, TRUE, TRUE); } static void sub_8022A10(void) diff --git a/src/code_8023144.c b/src/code_8023144.c index 81dfb5e1c..fdb680ae2 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -33,7 +33,7 @@ static void sub_8023730(void); static void sub_8023758(void); static void sub_80237E0(void); -bool8 sub_8023144(s32 a0, s32 index, UnkTextStruct2_sub *sub, u32 a3) +bool8 sub_8023144(s32 a0, s32 index, DungeonPos *sub, u32 a3) { u8 param_1_u8 = a0; @@ -47,18 +47,18 @@ bool8 sub_8023144(s32 a0, s32 index, UnkTextStruct2_sub *sub, u32 a3) gUnknown_3001B5C->unk4 = gUnknown_203B298; gUnknown_3001B5C->s35C.s0.unk34 = index; - gUnknown_3001B5C->s35C.s0.unk38 = &gUnknown_3001B5C->s35C.s0.unk3C[index]; - RestoreUnkTextStruct_8006518(gUnknown_3001B5C->s35C.s0.unk3C); - gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC91C; + gUnknown_3001B5C->s35C.s0.unk38 = &gUnknown_3001B5C->s35C.s0.windows.id[index]; + RestoreUnkTextStruct_8006518(&gUnknown_3001B5C->s35C.s0.windows); + gUnknown_3001B5C->s35C.s0.windows.id[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC91C; gUnknown_3001B5C->s35C.s0.unk38->unk14 = &gUnknown_3001B5C->s35C.unk9C; if (sub != NULL) - gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34].unk8 = *sub; + gUnknown_3001B5C->s35C.s0.windows.id[gUnknown_3001B5C->s35C.s0.unk34].pos = *sub; sub_8012D08(gUnknown_3001B5C->s35C.s0.unk38, a3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_3001B5C->s35C.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_3001B5C->s35C.s0.input, sub_80236A4(), a3, index); gUnknown_3001B5C->s35C.s0.input.menuIndex = gUnknown_203B29C; gUnknown_3001B5C->s35C.s0.input.unk1E = gUnknown_203B29E; @@ -112,7 +112,7 @@ s16 sub_802331C(void) void sub_8023354(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_3001B5C->s35C.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_3001B5C->s35C.s0.windows, FALSE, FALSE); sub_8013984(&gUnknown_3001B5C->s35C.s0.input); sub_8023420(); sub_80234BC(); @@ -127,9 +127,9 @@ void sub_80233A0(void) gUnknown_203B298 = gUnknown_3001B5C->unk4; gUnknown_203B29C = gUnknown_3001B5C->s35C.s0.input.menuIndex; gUnknown_203B29E = gUnknown_3001B5C->s35C.s0.input.unk1E; - gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC904; + gUnknown_3001B5C->s35C.s0.windows.id[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC904; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_3001B5C->s35C.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_3001B5C); gUnknown_3001B5C = NULL; } @@ -156,7 +156,7 @@ static void sub_80234BC(void) s32 i; u8 buffer2[256]; u8 buffer1[100]; - unkStruct_8092638 auStack_2c; + FriendAreaCapacity auStack_2c; CallPrepareTextbox_8008C54(gUnknown_3001B5C->s35C.s0.unk34); sub_80073B8(gUnknown_3001B5C->s35C.s0.unk34); @@ -165,9 +165,9 @@ static void sub_80234BC(void) sub_8012BC4((gUnknown_3001B5C->s35C.unk9C.f2 * 8) + 4, 0, gUnknown_3001B5C->s35C.s0.input.unk1E + 1, 2, 7, gUnknown_3001B5C->s35C.s0.unk34); for (i = 0; i < gUnknown_3001B5C->s35C.s0.input.unk1A; i++) { - y = sub_8013800(&gUnknown_3001B5C->s35C.s0.input, i); + y = GetMenuEntryYCoord(&gUnknown_3001B5C->s35C.s0.input, i); species = gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.unk1C) + i]; - sub_8092638(GetFriendArea(species), &auStack_2c, FALSE, FALSE); + GetFriendAreaCapacity2(GetFriendArea(species), &auStack_2c, FALSE, FALSE); color = COLOR_WHITE_2; if (auStack_2c.hasFriendArea) color = HasRecruitedMon(species) ? COLOR_CYAN : COLOR_GREEN; @@ -235,154 +235,38 @@ static void sub_8023730(void) } } -// 41.34%. Similar to SortbyAlphabetNo: https://decomp.me/scratch/Wmgj6 -NAKED static void sub_8023758(void) +void sub_8023758(void) { - asm_unified( - "\tpush {r4-r7,lr}\n" - "\tmov r7, r9\n" - "\tmov r6, r8\n" - "\tpush {r6,r7}\n" - "\tsub sp, 0x4\n" - "\tldr r3, _080237DC\n" - "\tldr r2, [r3]\n" - "\tldr r1, [r2, 0x8]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, 0xA\n" - "\tadds r2, r0\n" - "\tmov r9, r2\n" - "\tmovs r2, 0\n" - "\tsubs r1, 0x1\n" - "\tcmp r2, r1\n" - "\tbge _080237CC\n" -"_08023778:\n" - "\tmov r5, r9\n" - "\tldr r0, [r3]\n" - "\tldr r0, [r0, 0x8]\n" - "\tsubs r7, r0, 0x1\n" - "\tadds r0, r2, 0x1\n" - "\tmov r8, r0\n" - "\tcmp r7, r2\n" - "\tble _080237BE\n" -"_08023788:\n" - "\tsubs r6, r5, 0x2\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r6, r1]\n" - "\tmovs r1, 0x1\n" - "\tstr r2, [sp]\n" - "\tbl GetAlphabetParentNo\n" - "\tadds r4, r0, 0\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r5, r1]\n" - "\tmovs r1, 0x1\n" - "\tbl GetAlphabetParentNo\n" - "\tlsls r4, 16\n" - "\tlsls r0, 16\n" - "\tldr r2, [sp]\n" - "\tcmp r4, r0\n" - "\tble _080237B6\n" - "\tmovs r0, 0\n" - "\tldrsh r1, [r5, r0]\n" - "\tldrh r0, [r6]\n" - "\tstrh r0, [r5]\n" - "\tstrh r1, [r6]\n" -"_080237B6:\n" - "\tadds r5, r6, 0\n" - "\tsubs r7, 0x1\n" - "\tcmp r7, r2\n" - "\tbgt _08023788\n" -"_080237BE:\n" - "\tmov r2, r8\n" - "\tldr r3, _080237DC\n" - "\tldr r0, [r3]\n" - "\tldr r0, [r0, 0x8]\n" - "\tsubs r0, 0x1\n" - "\tcmp r2, r0\n" - "\tblt _08023778\n" -"_080237CC:\n" - "\tadd sp, 0x4\n" - "\tpop {r3,r4}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_080237DC: .4byte gUnknown_3001B5C"); + s32 temp; + s32 i, j; + s16 *r9 = &gUnknown_3001B5C->unkC[gUnknown_3001B5C->unk8 - 1]; + + for (i = 0; i < gUnknown_3001B5C->unk8 - 1; i++) { + s16 *r5 = r9; + for (j = gUnknown_3001B5C->unk8 - 1; j > i; j--) { + s16 *r6 = r5 - 1; + if (GetAlphabetParentNo(*r6, 1) > GetAlphabetParentNo(*r5, 1)) { + SWAP(*r5, *r6, temp); + } + r5--; + } + } } - // SIMILAR TO ABOVE: https://decomp.me/scratch/BG2JR -NAKED static void sub_80237E0(void) +void sub_80237E0(void) { - asm_unified( - "\tpush {r4-r7,lr}\n" - "\tmov r7, r9\n" - "\tmov r6, r8\n" - "\tpush {r6,r7}\n" - "\tsub sp, 0x4\n" - "\tldr r3, _08023864\n" - "\tldr r2, [r3]\n" - "\tldr r1, [r2, 0x8]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, 0xA\n" - "\tadds r2, r0\n" - "\tmov r9, r2\n" - "\tmovs r2, 0\n" - "\tsubs r1, 0x1\n" - "\tcmp r2, r1\n" - "\tbge _08023854\n" -"_08023800:\n" - "\tmov r5, r9\n" - "\tldr r0, [r3]\n" - "\tldr r0, [r0, 0x8]\n" - "\tsubs r7, r0, 0x1\n" - "\tadds r0, r2, 0x1\n" - "\tmov r8, r0\n" - "\tcmp r7, r2\n" - "\tble _08023846\n" -"_08023810:\n" - "\tsubs r6, r5, 0x2\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r6, r1]\n" - "\tmovs r1, 0\n" - "\tstr r2, [sp]\n" - "\tbl GetAlphabetParentNo\n" - "\tadds r4, r0, 0\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r5, r1]\n" - "\tmovs r1, 0\n" - "\tbl GetAlphabetParentNo\n" - "\tlsls r4, 16\n" - "\tlsls r0, 16\n" - "\tldr r2, [sp]\n" - "\tcmp r4, r0\n" - "\tble _0802383E\n" - "\tmovs r0, 0\n" - "\tldrsh r1, [r5, r0]\n" - "\tldrh r0, [r6]\n" - "\tstrh r0, [r5]\n" - "\tstrh r1, [r6]\n" -"_0802383E:\n" - "\tadds r5, r6, 0\n" - "\tsubs r7, 0x1\n" - "\tcmp r7, r2\n" - "\tbgt _08023810\n" -"_08023846:\n" - "\tmov r2, r8\n" - "\tldr r3, _08023864\n" - "\tldr r0, [r3]\n" - "\tldr r0, [r0, 0x8]\n" - "\tsubs r0, 0x1\n" - "\tcmp r2, r0\n" - "\tblt _08023800\n" -"_08023854:\n" - "\tadd sp, 0x4\n" - "\tpop {r3,r4}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08023864: .4byte gUnknown_3001B5C"); + s32 temp; + s32 i, j; + s16 *r9 = &gUnknown_3001B5C->unkC[gUnknown_3001B5C->unk8 - 1]; + + for (i = 0; i < gUnknown_3001B5C->unk8 - 1; i++) { + s16 *r5 = r9; + for (j = gUnknown_3001B5C->unk8 - 1; j > i; j--) { + s16 *r6 = r5 - 1; + if (GetAlphabetParentNo(*r6, 0) > GetAlphabetParentNo(*r5, 0)) { + SWAP(*r5, *r6, temp); + } + r5--; + } + } } diff --git a/src/code_8024458.c b/src/code_8024458.c index 5547d28d8..de31fef05 100644 --- a/src/code_8024458.c +++ b/src/code_8024458.c @@ -26,9 +26,9 @@ bool8 sub_8024458(s16 speciesNum, s32 a1) sUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8); sUnknown_203B2AC->speciesNum = speciesNum_s32; sUnknown_203B2AC->unkE0 = a1; - sUnknown_203B2AC->unkE4 = &sUnknown_203B2AC->unkE8[a1]; - RestoreUnkTextStruct_8006518(sUnknown_203B2AC->unkE8); - sUnknown_203B2AC->unkE8[sUnknown_203B2AC->unkE0] = sUnknown_80DC9C8; + sUnknown_203B2AC->unkE4 = &sUnknown_203B2AC->unkE8.id[a1]; + RestoreUnkTextStruct_8006518(&sUnknown_203B2AC->unkE8); + sUnknown_203B2AC->unkE8.id[sUnknown_203B2AC->unkE0] = sUnknown_80DC9C8; sUnknown_203B2AC->unkE4->unk14 = &sUnknown_203B2AC->unk148; sUnknown_203B2AC->unk148.f2 = 10; sub_8024604(); @@ -64,9 +64,9 @@ void sub_802452C(void) void sub_802453C(void) { if (sUnknown_203B2AC != NULL) { - sUnknown_203B2AC->unkE8[sUnknown_203B2AC->unkE0] = sUnknown_80DC9B0; + sUnknown_203B2AC->unkE8.id[sUnknown_203B2AC->unkE0] = sUnknown_80DC9B0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2AC->unkE8, TRUE, TRUE); + ShowWindows(&sUnknown_203B2AC->unkE8, TRUE, TRUE); MemoryFree(sUnknown_203B2AC); sUnknown_203B2AC = NULL; } @@ -78,12 +78,12 @@ static void sub_8024588(void) sUnknown_203B2AC->unk148.f1 = sUnknown_203B2AC->input.unk1E; sUnknown_203B2AC->unk148.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2AC->unkE8, TRUE, TRUE); + ShowWindows(&sUnknown_203B2AC->unkE8, TRUE, TRUE); } static void sub_80245D0(void) { - CreatePokemonInfoTabScreen(sUnknown_203B2AC->unk34[sUnknown_203B2AC->input.unk1E], sUnknown_203B2AC->input.unk1E, &sUnknown_203B2AC->unk4C, (u8 *)&sUnknown_203B2AC->unkB0, sUnknown_203B2AC->unkE0); + CreatePokemonInfoTabScreen(sUnknown_203B2AC->unk34[sUnknown_203B2AC->input.unk1E], sUnknown_203B2AC->input.unk1E, &sUnknown_203B2AC->unk4C, &sUnknown_203B2AC->unkB0, sUnknown_203B2AC->unkE0); } static void sub_8024604(void) diff --git a/src/code_802DB28.c b/src/code_802DB28.c index 8205833b3..e47fe5a5c 100644 --- a/src/code_802DB28.c +++ b/src/code_802DB28.c @@ -32,7 +32,7 @@ bool8 sub_802DB28(u8 jobSlotIndex, u8 dungeon) return FALSE; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B2FC = MemoryAlloc(sizeof(struct unkStruct_203B2FC), 8); sUnknown_203B2FC->jobSlotIndex = jobSlotIndex; @@ -92,18 +92,18 @@ static void sub_802DC40(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B2FC->unk48); + RestoreUnkTextStruct_8006518(&sUnknown_203B2FC->unk48); switch (sUnknown_203B2FC->state) { case 0: case 7: for (i = 0; i < 4; i++) - sUnknown_203B2FC->unk48[i] = sUnknown_80E016C; + sUnknown_203B2FC->unk48.id[i] = sUnknown_80E016C; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2FC->unk48, TRUE, TRUE); + ShowWindows(&sUnknown_203B2FC->unk48, TRUE, TRUE); } static void sub_802DC9C(void) diff --git a/src/code_802DE84.c b/src/code_802DE84.c index 943d909a1..71b567161 100644 --- a/src/code_802DE84.c +++ b/src/code_802DE84.c @@ -22,9 +22,9 @@ bool8 sub_802DE84(unkStruct_802C39C *mail) sUnknown_203B300->mail = mail; sub_801317C(&sUnknown_203B300->unk0); sUnknown_203B300->unk10 = sUnknown_203B300->mail->unk0[0]; - sUnknown_203B300->unk14 = &sUnknown_203B300->unk18[sUnknown_203B300->unk10]; - RestoreUnkTextStruct_8006518(sUnknown_203B300->unk18); - sUnknown_203B300->unk18[sUnknown_203B300->unk10] = sUnknown_80E0264; + sUnknown_203B300->unk14 = &sUnknown_203B300->unk18.id[sUnknown_203B300->unk10]; + RestoreUnkTextStruct_8006518(&sUnknown_203B300->unk18); + sUnknown_203B300->unk18.id[sUnknown_203B300->unk10] = sUnknown_80E0264; sub_802DF14(); return TRUE; } @@ -52,9 +52,9 @@ static void sub_802DF14(void) void sub_802DF24(void) { if (sUnknown_203B300 != NULL) { - sUnknown_203B300->unk18[sUnknown_203B300->unk10] = sUnknown_80E0248; + sUnknown_203B300->unk18.id[sUnknown_203B300->unk10] = sUnknown_80E0248; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B300->unk18, TRUE, TRUE); + ShowWindows(&sUnknown_203B300->unk18, TRUE, TRUE); MemoryFree(sUnknown_203B300); sUnknown_203B300 = NULL; } @@ -63,7 +63,7 @@ void sub_802DF24(void) static void sub_802DF6C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B300->unk18, TRUE, TRUE); + ShowWindows(&sUnknown_203B300->unk18, TRUE, TRUE); } static void sub_802DF88(void) diff --git a/src/code_8031D70.c b/src/code_8031D70.c index 50fd743b0..27dfee0a1 100644 --- a/src/code_8031D70.c +++ b/src/code_8031D70.c @@ -18,16 +18,16 @@ struct unkStruct_203B334 u32 mailIndex; MenuInputStructSub unk4; u32 unk10; - UnkTextStruct2 *unk14; - UnkTextStruct2 unk18[4]; + Window *unk14; + Windows unk18; u8 unk78[4]; }; EWRAM_INIT struct unkStruct_203B334 *gUnknown_203B334 = {NULL}; extern unkStruct_203B480 *gUnknown_203B480; -const UnkTextStruct2 gUnknown_80E1FA8 = { - 0, 0, 0, 0, +const Window gUnknown_80E1FA8 = { + 0, 3, 0x0, 0x0, 0x0, 0x0, @@ -35,10 +35,10 @@ const UnkTextStruct2 gUnknown_80E1FA8 = { NULL }; -const UnkTextStruct2_sub2 gUnkData_80E1FC0 = {0x01, 0x00, 0x0A, 0x00}; +const WindowHeader gUnkData_80E1FC0 = {0x01, 0x00, 0x0A, 0x00}; -const UnkTextStruct2 gUnknown_80E1FC4 = { - 0, 0, 0, 0, +const Window gUnknown_80E1FC4 = { + 0, 6, 0x2, 0x2, 0x1A, 0xA, @@ -58,9 +58,9 @@ bool8 sub_8031D70(u32 mailIndex, s32 param_2) gUnknown_203B334->mailIndex = mailIndex; sub_801317C(&gUnknown_203B334->unk4); gUnknown_203B334->unk10 = param_2; - gUnknown_203B334->unk14 = &gUnknown_203B334->unk18[param_2]; - RestoreUnkTextStruct_8006518(gUnknown_203B334->unk18); - gUnknown_203B334->unk18[gUnknown_203B334->unk10] = gUnknown_80E1FC4; + gUnknown_203B334->unk14 = &gUnknown_203B334->unk18.id[param_2]; + RestoreUnkTextStruct_8006518(&gUnknown_203B334->unk18); + gUnknown_203B334->unk18.id[gUnknown_203B334->unk10] = gUnknown_80E1FC4; sub_8031E00(); return TRUE; } @@ -90,9 +90,9 @@ void sub_8031E10(void) { if(gUnknown_203B334) { - gUnknown_203B334->unk18[gUnknown_203B334->unk10] = gUnknown_80E1FA8; + gUnknown_203B334->unk18.id[gUnknown_203B334->unk10] = gUnknown_80E1FA8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B334->unk18, TRUE, TRUE); + ShowWindows(&gUnknown_203B334->unk18, TRUE, TRUE); MemoryFree(gUnknown_203B334); gUnknown_203B334 = NULL; } @@ -101,7 +101,7 @@ void sub_8031E10(void) void sub_8031E58(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B334->unk18, TRUE, TRUE); + ShowWindows(&gUnknown_203B334->unk18, TRUE, TRUE); } void DrawSOSPasswordScreen(void) diff --git a/src/code_803D110.c b/src/code_803D110.c index 6ad89ca20..6f40c9e93 100644 --- a/src/code_803D110.c +++ b/src/code_803D110.c @@ -13,6 +13,7 @@ #include "text.h" #include "constants/dungeon.h" +extern void sub_803E13C(void); extern void sub_80901D8(DungeonLocation *param_1,DungeonLocation *param_2); extern s32 sub_80902C8(u8 dungeon); extern void sub_808E9C4(UnkDungeonGlobal_unk1CD98 *r0, s16 r1); @@ -27,9 +28,10 @@ extern const char gUnknown_80F6108[]; extern const char gUnknown_80F610C[]; extern const char gUnknown_80F6110[]; extern const char gUnknown_80F6118[]; -extern const char gUnknown_80F61A8[]; extern const u32 gUnknown_80F6120[]; +extern const u16 gUnknown_80F5F70[]; +extern RGB gUnknown_202ECA4[]; extern struct FileArchive gDungeonFileArchive; extern OpenedFile *gDungeonNameBannerPalette; extern OpenedFile *gDungeonNameBannerFontFile; @@ -39,7 +41,6 @@ extern OpenedFile *gUnknown_202EC98; extern OpenedFile *gUnknown_202EC94; extern s32 gDungeonNameBannerFont; extern u8 gUnknown_20274A5; -extern Palette32 gFontPalette[8]; struct UnkDungeonFileData { @@ -72,11 +73,9 @@ s32 sub_803DC6C(u32 chr, s32 strWidth, s32 a2); struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr); void sub_803DD30(u8 *a0, u32 *a1); -// TODO https://decomp.me/scratch/nXUH3 -/* void sub_803D4D0(void) { - u16 spArray[252]; + s16 spArray[NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS]; s32 i, j, k; OpenedFile *file; struct UnkDungeonFileData *strPtr; @@ -87,19 +86,18 @@ void sub_803D4D0(void) gDungeon->unk1C570 = gDungeon->unk644.dungeonLocation2; file = OpenFileAndGetFileDataPtr(gUnknown_80F4D8C, &gDungeonFileArchive); - - strPtr = &file->data.dungData->unk0[gDungeon->unk1C570.id][gDungeon->unk1C570.floor]; + strPtr = &((struct UnkDataFileStruct *)(file->data))->unk0[gDungeon->unk1C570.id][gDungeon->unk1C570.floor]; gDungeon->unk1CEC8 = GetDungeonFloorCount(gDungeon->unk644.dungeonLocation.id); gDungeon->unk14 = sub_80902C8(gDungeon->unk644.dungeonLocation.id); - gDungeon->unk1C574 = file->data.dungData->unk4[strPtr->unk0]; + gDungeon->unk1C574 = ((struct UnkDataFileStruct *)(file->data))->unk4[strPtr->unk0]; for (i = 0; i < 20; i++) { - gDungeon->unk1CD70[i] = file->data.dungData->unk10[strPtr->unk4][i]; + gDungeon->unk1CD70[i] = ((struct UnkDataFileStruct *)(file->data))->unk10[strPtr->unk4][i]; } for (i = 0; i < 31; i++) { - gDungeon->unk1CD98[i] = file->data.dungData->unkC[strPtr->unk2][i]; + gDungeon->unk1CD98[i] = ((struct UnkDataFileStruct *)(file->data))->unkC[strPtr->unk2][i]; if (ExtractSpeciesIndex(&gDungeon->unk1CD98[i]) == 0) break; } @@ -110,311 +108,36 @@ void sub_803D4D0(void) for (i = 0; i < 4; i++) { - u16 *src = file->data.dungData->unk8[strPtr->unk6[i]]; + u16 *src = ((struct UnkDataFileStruct *)(file->data))->unk8[strPtr->unk6[i]]; + s32 arrId = 0; - for (j = 0; j < 252; src++) { - if (*src > 29999) { - for (k = *src - 30000; k != 0; k--) { + for (j = 0; j < NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS; ) { + if (src[arrId] >= 30000) { + for (k = src[arrId] - 30000; k != 0; k--) { spArray[j++] = 0; } } else { - spArray[j++] = *src; + spArray[j++] = src[arrId]; } + arrId++; } - for (j = 0; j < 12; j++) { - gDungeon->unk1C590[i].unk0[j] = spArray[j]; + arrId = 0; + for (j = 0; j < NUM_ITEM_CATEGORIES; j++) { + gDungeon->unk1C590[i].categoryValues[arrId] = spArray[arrId]; + arrId++; } - for (j = 0; j < 240; j++) { - gDungeon->unk1C590[i].unk18[j] = spArray[12 + j]; + for (j = 0; j < NUMBER_OF_ITEM_IDS; j++) { + gDungeon->unk1C590[i].itemValues[j] = spArray[arrId]; + arrId++; } } CloseFile(file); } -*/ -// - -NAKED void sub_803D4D0(void) -{ - asm_unified(" .text\n" -" push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x1FC\n" -" ldr r6, _0803D654\n" -" ldr r1, [r6]\n" -" movs r4, 0xC9\n" -" lsls r4, 3\n" -" adds r0, r1, r4\n" -" ldr r2, _0803D658\n" -" adds r1, r2\n" -" bl sub_80901D8\n" -" ldr r0, [r6]\n" -" ldr r3, _0803D65C\n" -" adds r2, r0, r3\n" -" adds r1, r0, r4\n" -" ldrh r0, [r2]\n" -" ldrh r4, [r1]\n" -" cmp r0, r4\n" -" bne _0803D500\n" -" b _0803D6E0\n" -"_0803D500:\n" -" ldr r0, [r1]\n" -" str r0, [r2]\n" -" ldr r0, _0803D660\n" -" ldr r1, _0803D664\n" -" bl OpenFileAndGetFileDataPtr\n" -" mov r9, r0\n" -" ldr r3, [r0, 0x4]\n" -" ldr r2, [r6]\n" -" ldr r7, _0803D65C\n" -" adds r0, r2, r7\n" -" ldrb r1, [r0]\n" -" ldr r0, [r3]\n" -" lsls r1, 2\n" -" adds r1, r0\n" -" ldr r3, _0803D668\n" -" adds r0, r2, r3\n" -" ldrb r0, [r0]\n" -" lsls r0, 4\n" -" ldr r1, [r1]\n" -" adds r1, r0\n" -" mov r8, r1\n" -" ldr r4, _0803D658\n" -" adds r2, r4\n" -" ldrb r0, [r2]\n" -" bl GetDungeonFloorCount\n" -" ldr r1, [r6]\n" -" ldr r7, _0803D66C\n" -" adds r1, r7\n" -" strb r0, [r1]\n" -" ldr r0, [r6]\n" -" adds r0, r4\n" -" ldrb r0, [r0]\n" -" bl sub_80902C8\n" -" ldr r1, [r6]\n" -" strh r0, [r1, 0x14]\n" -" mov r2, r9\n" -" ldr r0, [r2, 0x4]\n" -" mov r3, r8\n" -" movs r4, 0\n" -" ldrsh r2, [r3, r4]\n" -" ldr r3, [r0, 0x4]\n" -" lsls r0, r2, 3\n" -" subs r0, r2\n" -" lsls r0, 2\n" -" ldr r7, _0803D670\n" -" adds r1, r7\n" -" adds r0, r3\n" -" ldm r0!, {r2-r4}\n" -" stm r1!, {r2-r4}\n" -" ldm r0!, {r2,r3,r7}\n" -" stm r1!, {r2,r3,r7}\n" -" ldr r0, [r0]\n" -" str r0, [r1]\n" -" movs r5, 0\n" -" mov r10, r6\n" -" ldr r4, _0803D674\n" -"_0803D576:\n" -" mov r6, r10\n" -" ldr r2, [r6]\n" -" lsls r3, r5, 1\n" -" adds r2, r4\n" -" adds r2, r3\n" -" mov r7, r9\n" -" ldr r1, [r7, 0x4]\n" -" mov r6, r8\n" -" movs r7, 0x4\n" -" ldrsh r0, [r6, r7]\n" -" ldr r1, [r1, 0x10]\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" ldr r0, [r0]\n" -" adds r3, r0\n" -" ldrh r0, [r3]\n" -" strh r0, [r2]\n" -" adds r5, 0x1\n" -" cmp r5, 0x13\n" -" ble _0803D576\n" -" movs r5, 0\n" -" adds r6, 0x6\n" -" str r6, [sp, 0x1F8]\n" -" ldr r6, _0803D678\n" -" mov r10, r6\n" -"_0803D5A8:\n" -" ldr r1, _0803D654\n" -" ldr r0, [r1]\n" -" lsls r3, r5, 3\n" -" mov r2, r10\n" -" adds r4, r0, r2\n" -" adds r4, r3\n" -" mov r12, r4\n" -" mov r4, r9\n" -" ldr r2, [r4, 0x4]\n" -" mov r7, r8\n" -" movs r4, 0x2\n" -" ldrsh r1, [r7, r4]\n" -" ldr r2, [r2, 0xC]\n" -" lsls r1, 2\n" -" adds r1, r2\n" -" ldr r1, [r1]\n" -" adds r3, r1\n" -" ldr r1, [r3]\n" -" ldr r2, [r3, 0x4]\n" -" mov r7, r12\n" -" str r1, [r7]\n" -" str r2, [r7, 0x4]\n" -" adds r0, r6\n" -" bl ExtractSpeciesIndex\n" -" lsls r0, 16\n" -" cmp r0, 0\n" -" beq _0803D5E8\n" -" adds r6, 0x8\n" -" adds r5, 0x1\n" -" cmp r5, 0x1E\n" -" ble _0803D5A8\n" -"_0803D5E8:\n" -" cmp r5, 0x1F\n" -" bgt _0803D606\n" -" ldr r6, _0803D654\n" -" lsls r0, r5, 3\n" -" ldr r1, _0803D678\n" -" adds r4, r0, r1\n" -"_0803D5F4:\n" -" ldr r0, [r6]\n" -" adds r0, r4\n" -" movs r1, 0\n" -" bl sub_808E9C4\n" -" adds r4, 0x8\n" -" adds r5, 0x1\n" -" cmp r5, 0x1F\n" -" ble _0803D5F4\n" -"_0803D606:\n" -" movs r5, 0\n" -" ldr r2, _0803D67C\n" -" mov r10, r2\n" -"_0803D60C:\n" -" mov r3, r9\n" -" ldr r1, [r3, 0x4]\n" -" lsls r0, r5, 1\n" -" ldr r4, [sp, 0x1F8]\n" -" adds r0, r4, r0\n" -" movs r6, 0\n" -" ldrsh r0, [r0, r6]\n" -" ldr r1, [r1, 0x8]\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" movs r4, 0\n" -" adds r7, r5, 0x1\n" -" mov r8, r7\n" -" lsls r1, r5, 6\n" -" mov r12, r1\n" -" ldr r3, [r0]\n" -" mov r2, sp\n" -"_0803D62E:\n" -" ldrh r0, [r3]\n" -" cmp r0, r10\n" -" bls _0803D684\n" -" ldrh r0, [r3]\n" -" ldr r6, _0803D680\n" -" adds r1, r0, r6\n" -" cmp r1, 0\n" -" beq _0803D68A\n" -" movs r6, 0\n" -" lsls r0, r4, 1\n" -" add r0, sp\n" -"_0803D644:\n" -" strh r6, [r0]\n" -" adds r0, 0x2\n" -" adds r2, 0x2\n" -" adds r4, 0x1\n" -" subs r1, 0x1\n" -" cmp r1, 0\n" -" bne _0803D644\n" -" b _0803D68A\n" -" .align 2, 0\n" -"_0803D654: .4byte gDungeon\n" -"_0803D658: .4byte 0x00000644\n" -"_0803D65C: .4byte 0x0001c570\n" -"_0803D660: .4byte gUnknown_80F4D8C\n" -"_0803D664: .4byte gDungeonFileArchive\n" -"_0803D668: .4byte 0x0001c571\n" -"_0803D66C: .4byte 0x0001cec8\n" -"_0803D670: .4byte 0x0001c574\n" -"_0803D674: .4byte 0x0001cd70\n" -"_0803D678: .4byte 0x0001cd98\n" -"_0803D67C: .4byte 0x0000752f\n" -"_0803D680: .4byte 0xffff8ad0\n" -"_0803D684:\n" -" strh r0, [r2]\n" -" adds r2, 0x2\n" -" adds r4, 0x1\n" -"_0803D68A:\n" -" adds r3, 0x2\n" -" cmp r4, 0xFB\n" -" ble _0803D62E\n" -" ldr r7, _0803D6F0\n" -" mov r1, r12\n" -" subs r0, r1, r5\n" -" movs r4, 0xB\n" -" mov r3, sp\n" -" lsls r2, r0, 3\n" -" ldr r6, _0803D6F4\n" -"_0803D69E:\n" -" ldr r0, [r7]\n" -" adds r0, r6\n" -" adds r0, r2\n" -" ldrh r1, [r3]\n" -" strh r1, [r0]\n" -" adds r3, 0x2\n" -" adds r2, 0x2\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bge _0803D69E\n" -" ldr r6, _0803D6F0\n" -" mov r2, r12\n" -" subs r0, r2, r5\n" -" lsls r3, r0, 3\n" -" add r2, sp, 0x18\n" -" ldr r5, _0803D6F8\n" -" movs r4, 0xEF\n" -"_0803D6C0:\n" -" ldr r0, [r6]\n" -" adds r0, r5\n" -" adds r0, r3\n" -" ldrh r1, [r2]\n" -" strh r1, [r0]\n" -" adds r2, 0x2\n" -" adds r3, 0x2\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bge _0803D6C0\n" -" mov r5, r8\n" -" cmp r5, 0x3\n" -" ble _0803D60C\n" -" mov r0, r9\n" -" bl CloseFile\n" -"_0803D6E0:\n" -" add sp, 0x1FC\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0803D6F0: .4byte gDungeon\n" -"_0803D6F4: .4byte 0x0001c590\n" -"_0803D6F8: .4byte 0x0001c5a8\n"); -} - u8 sub_803D6FC(void) { s32 i; @@ -433,7 +156,7 @@ u8 sub_803D73C(s32 a0) s32 rand = DungeonRandInt(10000); u8 category = NUM_ITEM_CATEGORIES; for (i = 0; i < NUM_ITEM_CATEGORIES; i++) { - if (gDungeon->unk1C590[a0].unk0[i] != 0 && gDungeon->unk1C590[a0].unk0[i] >= rand) { + if (gDungeon->unk1C590[a0].categoryValues[i] != 0 && gDungeon->unk1C590[a0].categoryValues[i] >= rand) { category = i; break; } @@ -443,7 +166,7 @@ u8 sub_803D73C(s32 a0) rand = DungeonRandInt(10000); for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) { - if (gDungeon->unk1C590[a0].unk18[i] != 0 && GetItemCategory(i) == category && gDungeon->unk1C590[a0].unk18[i] >= rand) { + if (gDungeon->unk1C590[a0].itemValues[i] != 0 && GetItemCategory(i) == category && gDungeon->unk1C590[a0].itemValues[i] >= rand) { return i; } } @@ -796,253 +519,100 @@ struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr) return ret; }; -/* -I'm leaving this as it is, because I'm not sure how to generate the ldmia asm instruction. Maybe once the file's data format is better understood. -struct FileSub_803DF60Struct +struct FileStruct2 { s32 count; - void *unkPtr; + u8 array[0]; }; -struct OpenedFile_sub_803DF60 +struct FileStruct { - File *file; - struct FileSub_803DF60Struct **strPtr; + struct FileStruct2 *ptr; + struct u8 *ptr2; }; void sub_803DF60(void) { + u8 *vram; s32 i; - struct OpenedFile_sub_803DF60 *file = (void*) OpenFileAndGetFileDataPtr(gUnknown_80F61A8, &gDungeonFileArchive); - struct FileSub_803DF60Struct r5 = **file->strPtr; + const void *src; + OpenedFile *file; - for (i = 0; i < r5.count; i++) { - CpuCopy((void *)VRAM + 0x13400 + i * 0x20, r5.unkPtr + i * 0x20, 0x20); + file = OpenFileAndGetFileDataPtr("itempat", &gDungeonFileArchive); + src = ((struct FileStruct *)(file->data))->ptr; + i = ((struct FileStruct2 *)(src))->count; + src = ((struct FileStruct2 *)(src))->array; + vram = OBJ_VRAM0 + 0x3400; + while (i != 0) + { + CpuCopy(vram, src, 0x20); + vram += 0x20; + src += 0x20; + i--; } - CloseFile(file); + + file = OpenFileAndGetFileDataPtr("etcfont", &gDungeonFileArchive); + src = ((struct FileStruct2 *)(file->data)); + i = ((struct FileStruct2 *)(src))->count; + src = ((struct FileStruct2 *)(src))->array; + vram = OBJ_VRAM0 + 0x4000; + while (i != 0) + { + CpuCopy(vram, src, 0x20); + vram += 0x20; + src += 0x20; + i--; + } + CloseFile(file); + + gUnknown_202EC94 = OpenFileAndGetFileDataPtr("etcfonta", &gDungeonFileArchive); + gUnknown_202EC98 = OpenFileAndGetFileDataPtr("levfont", &gDungeonFileArchive); + gUnknown_202EC9C = OpenFileAndGetFileDataPtr("hp5font", &gDungeonFileArchive); + gUnknown_202ECA0 = OpenFileAndGetFileDataPtr("colvec", &gDungeonFileArchive); } -*/ - -NAKED void sub_803DF60(void) +void sub_803E02C(void) { - asm_unified(" push {r4-r7,lr}\n" -" ldr r0, _0803DFF8\n" -" ldr r1, _0803DFFC\n" -" bl OpenFileAndGetFileDataPtr\n" -" adds r7, r0, 0\n" -" ldr r0, [r7, 0x4]\n" -" ldr r5, [r0]\n" -" ldm r5!, {r4}\n" -" ldr r6, _0803E000\n" -" cmp r4, 0\n" -" beq _0803DF8C\n" -"_0803DF78:\n" -" adds r0, r6, 0\n" -" adds r1, r5, 0\n" -" movs r2, 0x20\n" -" bl CpuCopy\n" -" adds r6, 0x20\n" -" adds r5, 0x20\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bne _0803DF78\n" -"_0803DF8C:\n" -" adds r0, r7, 0\n" -" bl CloseFile\n" -" ldr r0, _0803E004\n" -" ldr r1, _0803DFFC\n" -" bl OpenFileAndGetFileDataPtr\n" -" adds r7, r0, 0\n" -" ldr r5, [r7, 0x4]\n" -" ldm r5!, {r4}\n" -" ldr r6, _0803E008\n" -" cmp r4, 0\n" -" beq _0803DFBA\n" -"_0803DFA6:\n" -" adds r0, r6, 0\n" -" adds r1, r5, 0\n" -" movs r2, 0x20\n" -" bl CpuCopy\n" -" adds r6, 0x20\n" -" adds r5, 0x20\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bne _0803DFA6\n" -"_0803DFBA:\n" -" adds r0, r7, 0\n" -" bl CloseFile\n" -" ldr r0, _0803E00C\n" -" ldr r4, _0803DFFC\n" -" adds r1, r4, 0\n" -" bl OpenFileAndGetFileDataPtr\n" -" ldr r1, _0803E010\n" -" str r0, [r1]\n" -" ldr r0, _0803E014\n" -" adds r1, r4, 0\n" -" bl OpenFileAndGetFileDataPtr\n" -" ldr r1, _0803E018\n" -" str r0, [r1]\n" -" ldr r0, _0803E01C\n" -" adds r1, r4, 0\n" -" bl OpenFileAndGetFileDataPtr\n" -" ldr r1, _0803E020\n" -" str r0, [r1]\n" -" ldr r0, _0803E024\n" -" adds r1, r4, 0\n" -" bl OpenFileAndGetFileDataPtr\n" -" ldr r1, _0803E028\n" -" str r0, [r1]\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0803DFF8: .4byte gUnknown_80F61A8\n" -"_0803DFFC: .4byte gDungeonFileArchive\n" -"_0803E000: .4byte 0x06013400\n" -"_0803E004: .4byte gUnknown_80F61B0\n" -"_0803E008: .4byte 0x06014000\n" -"_0803E00C: .4byte gUnknown_80F61B8\n" -"_0803E010: .4byte gUnknown_202EC94\n" -"_0803E014: .4byte gUnknown_80F61C4\n" -"_0803E018: .4byte gUnknown_202EC98\n" -"_0803E01C: .4byte gUnknown_80F61CC\n" -"_0803E020: .4byte gUnknown_202EC9C\n" -"_0803E024: .4byte gUnknown_80F61D4\n" -"_0803E028: .4byte gUnknown_202ECA0\n"); -} + u8 *vram; + s32 i, j, r6; + const void *src; + OpenedFile *file; + u8 fileName[12]; -NAKED void sub_803E02C(void) -{ - asm_unified( "push {r4-r7,lr}\n" -" mov r7, r9\n" -" mov r6, r8\n" -" push {r6,r7}\n" -" sub sp, 0xC\n" -" bl sub_803E13C\n" -" mov r1, sp\n" -" ldr r0, _0803E118\n" -" ldm r0!, {r2,r3}\n" -" stm r1!, {r2,r3}\n" -" ldr r1, _0803E11C\n" -" mov r0, sp\n" -" bl OpenFileAndGetFileDataPtr\n" -" adds r7, r0, 0\n" -" ldr r0, [r7, 0x4]\n" -" ldr r5, [r0]\n" -" ldm r5!, {r4}\n" -" ldr r6, _0803E120\n" -" cmp r4, 0\n" -" beq _0803E06C\n" -"_0803E058:\n" -" adds r0, r6, 0\n" -" adds r1, r5, 0\n" -" movs r2, 0x20\n" -" bl CpuCopy\n" -" adds r6, 0x20\n" -" adds r5, 0x20\n" -" subs r4, 0x1\n" -" cmp r4, 0\n" -" bne _0803E058\n" -"_0803E06C:\n" -" ldr r0, _0803E124\n" -" ldr r1, [r7, 0x4]\n" -" ldr r1, [r1, 0x4]\n" -" movs r2, 0x80\n" -" bl CpuCopy\n" -" adds r0, r7, 0\n" -" bl CloseFile\n" -" movs r6, 0x80\n" -" lsls r6, 2\n" -" movs r4, 0\n" -" ldr r0, _0803E128\n" -" mov r9, r0\n" -" ldr r1, _0803E12C\n" -" mov r12, r1\n" -" movs r7, 0\n" -" ldr r2, _0803E130\n" -" mov r8, r2\n" -"_0803E092:\n" -" mov r3, r12\n" -" ldrh r0, [r3]\n" -" lsls r5, r0, 12\n" -" adds r2, r7, 0\n" -" movs r3, 0x8\n" -"_0803E09C:\n" -" mov r0, r9\n" -" ldr r1, [r0]\n" -" add r1, r8\n" -" adds r1, r2\n" -" adds r0, r5, 0\n" -" orrs r0, r6\n" -" strh r0, [r1]\n" -" adds r6, 0x1\n" -" adds r2, 0x2\n" -" subs r3, 0x1\n" -" cmp r3, 0\n" -" bge _0803E09C\n" -" movs r1, 0x2\n" -" add r12, r1\n" -" adds r7, 0x12\n" -" adds r4, 0x1\n" -" cmp r4, 0x1C\n" -" ble _0803E092\n" -" movs r4, 0\n" -" ldr r5, _0803E128\n" -" ldr r3, _0803E134\n" -" movs r2, 0xC0\n" -" lsls r2, 8\n" -"_0803E0CA:\n" -" ldr r0, [r5]\n" -" lsls r1, r4, 1\n" -" adds r0, r3\n" -" adds r0, r1\n" -" strh r2, [r0]\n" -" adds r4, 0x1\n" -" cmp r4, 0x8\n" -" ble _0803E0CA\n" -" movs r4, 0\n" -" ldr r2, _0803E128\n" -" movs r6, 0xBE\n" -" lsls r6, 1\n" -" ldr r5, _0803E138\n" -" movs r3, 0xBF\n" -" lsls r3, 1\n" -"_0803E0E8:\n" -" ldr r0, [r2]\n" -" lsls r1, r4, 2\n" -" adds r0, r1\n" -" adds r0, r6\n" -" strb r4, [r0]\n" -" ldr r0, [r2]\n" -" adds r0, r1\n" -" adds r0, r5\n" -" strb r4, [r0]\n" -" ldr r0, [r2]\n" -" adds r0, r1\n" -" adds r0, r3\n" -" strb r4, [r0]\n" -" adds r4, 0x1\n" -" cmp r4, 0xFF\n" -" ble _0803E0E8\n" -" add sp, 0xC\n" -" pop {r3,r4}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0803E118: .4byte gUnknown_80F61DC\n" -"_0803E11C: .4byte gDungeonFileArchive\n" -"_0803E120: .4byte 0x0600c000\n" -"_0803E124: .4byte gUnknown_202ECA4\n" -"_0803E128: .4byte gDungeon\n" -"_0803E12C: .4byte gUnknown_80F5F70\n" -"_0803E130: .4byte 0x00012a18\n" -"_0803E134: .4byte 0x00013554\n" -"_0803E138: .4byte 0x0000017d\n"); + sub_803E13C(); + strcpy(fileName, "trappat"); + file = OpenFileAndGetFileDataPtr(fileName, &gDungeonFileArchive); + + src = ((struct FileStruct *)(file->data))->ptr; + i = ((struct FileStruct2 *)(src))->count; + src = ((struct FileStruct2 *)(src))->array; + vram = (void *) VRAM + 0xC000; + while (i != 0) + { + CpuCopy(vram, src, 0x20); + vram += 0x20; + src += 0x20; + i--; + } + CpuCopy(gUnknown_202ECA4, ((struct FileStruct *)(file->data))->ptr2, 0x80); + CloseFile(file); + + r6 = 0x200; + for (i = 0; i < UNK12A18_ARR_COUNT; i++) { + for (j = 0; j < UNK12A18_ARR_COUNT_2; j++) { + gDungeon->unk12A18[i][j] = (gUnknown_80F5F70[i] << 0xC) | r6; + r6++; + } + } + for (i = 0; i < 9; i++) { + gDungeon->unk13554[i] = 0xC000; + } + for (i = 0; i < COLOR_RAMP_COUNT; i++) { + gDungeon->colorRamp[i].r = i; + gDungeon->colorRamp[i].g = i; + gDungeon->colorRamp[i].b = i; + } } void sub_803E13C(void) @@ -1052,9 +622,9 @@ void sub_803E13C(void) SetWindowBGColor(); if (gGameOptionsRef->playerGender != 0) - pal = gFontPalette[4].pal; + pal = &gFontPalette[16 * 4]; else - pal = gFontPalette[0].pal; + pal = &gFontPalette[0]; for (i = 0; i < 16; i++) { SetBGPaletteBufferColorArray(240 + i, pal); diff --git a/src/code_803E724.c b/src/code_803E724.c index 847abf862..a51b2078b 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -39,16 +39,15 @@ extern struct DungeonPalFile *gDungeonPaletteFile; extern struct DungeonPalFile *gDungeonNameBannerPalette; extern struct DungeonPalFile *gUnknown_202EC94; extern RGB gUnknown_202ECA4[]; -extern RGB gUnknown_202D058; extern u8 gUnknown_203B40C; extern MenuInputStruct gUnknown_202EE10; extern SpriteOAM gUnknown_202EDDC; extern const RGB gUnknown_80F62AC; -extern const struct UnkTextStruct2 gUnknown_80F62B0[]; -extern const struct UnkTextStruct2 gUnknown_80F6310[]; -extern const struct UnkTextStruct2 gUnknown_80F6370[]; -extern const struct UnkTextStruct2 gUnknown_80F63D0[]; +extern const struct Windows gUnknown_80F62B0; +extern const struct Windows gUnknown_80F6310; +extern const struct Windows gUnknown_80F6370; +extern const struct Windows gUnknown_80F63D0; extern const u32 gUnknown_80F6490[]; extern const s32 gUnknown_80F64B4[]; extern const s32 gUnknown_80F64FC[]; @@ -58,10 +57,7 @@ extern const u16 gUnknown_80F6544[][9]; extern u8 gUnknown_20274A5; -extern Palette32 gFontPalette[8]; - extern s32 gUnknown_202EDCC; -extern u32 gUnknown_3001018[]; extern void sub_8040A84(); extern void sub_8083D44(void); @@ -120,7 +116,7 @@ void sub_803E874(bool8 r10, s32 r9) } } - SetBGPaletteBufferColorRGB(248, &gUnknown_202D058, gDungeonBrightness, NULL); + SetBGPaletteBufferColorRGB(248, &gFontPalette[8], gDungeonBrightness, NULL); color = ((struct DungeonPalFile*) gDungeon->paletFile)->unk4; index = 256; @@ -177,7 +173,7 @@ void sub_803EA10(void) index++; } - SetBGPaletteBufferColorRGB(248, &gUnknown_202D058, gDungeonBrightness, NULL); + SetBGPaletteBufferColorRGB(248, &gFontPalette[8], gDungeonBrightness, NULL); } void sub_803EAF0(u32 a0, u8 *a1) @@ -192,18 +188,18 @@ void sub_803EAF0(u32 a0, u8 *a1) } ResetUnusedInputStruct(); sub_803EC94(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); break; case 0: sub_803EC94(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (gUnknown_203B40C != 0) { sub_8040A84(); sub_8040ABC(0); } break; case 3: - xxx_call_save_unk_text_struct_800641C(gUnknown_80F62B0, TRUE, TRUE); + ShowWindows(&gUnknown_80F62B0, TRUE, TRUE); if (gUnknown_203B40C != 0) { sub_8040ABC(1); } @@ -213,14 +209,14 @@ void sub_803EAF0(u32 a0, u8 *a1) sub_8052210(0); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_80F6310, TRUE, TRUE); + ShowWindows(&gUnknown_80F6310, TRUE, TRUE); break; case 7: if (gUnknown_203B40C != 0) { sub_8052210(0); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_80F6370, TRUE, TRUE); + ShowWindows(&gUnknown_80F6370, TRUE, TRUE); break; case 2: case 4: @@ -229,13 +225,13 @@ void sub_803EAF0(u32 a0, u8 *a1) } ResetUnusedInputStruct(); sub_803EC94(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); break; case 5: if (gUnknown_203B40C != 0) { sub_8052210(0); } - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); break; case 8: if (gUnknown_203B40C != 0) { @@ -250,7 +246,7 @@ void sub_803EAF0(u32 a0, u8 *a1) sub_8083D44(); } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_80F63D0, FALSE, TRUE); + ShowWindows(&gUnknown_80F63D0, FALSE, TRUE); break; case 10: sub_8083D44(); @@ -272,12 +268,12 @@ void sub_803EC94(void) sub_801317C(&gUnknown_202EE10.unk28); } -void sub_803ECB4(UnkTextStruct2 *a0, bool8 a1) +void sub_803ECB4(Windows *a0, bool8 a1) { gUnknown_202EDD0 = 10; sub_8052210(0); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(a0, TRUE, a1); + ShowWindows(a0, TRUE, a1); } void sub_803ECE0(void) @@ -859,13 +855,13 @@ void sub_803F38C(void) palId = (gGameOptionsRef->playerGender != MALE) ? 4 : 0; - SetBGPaletteBufferColorArray(0xFD, &gFontPalette[palId].pal[13]); - SetBGPaletteBufferColorArray(0xFE, &gFontPalette[palId].pal[14]); - SetBGPaletteBufferColorArray(0xFF, &gFontPalette[palId].pal[15]); + SetBGPaletteBufferColorArray(0xFD, &gFontPalette[16 * palId + 13]); + SetBGPaletteBufferColorArray(0xFE, &gFontPalette[16 * palId + 14]); + SetBGPaletteBufferColorArray(0xFF, &gFontPalette[16 * palId + 15]); - nullsub_5(0xFD, &gFontPalette[palId].pal[13]); - nullsub_5(0xFE, &gFontPalette[palId].pal[14]); - nullsub_5(0xFF, &gFontPalette[palId].pal[15]); + nullsub_5(0xFD, &gFontPalette[16 * palId + 13]); + nullsub_5(0xFE, &gFontPalette[16 * palId + 14]); + nullsub_5(0xFF, &gFontPalette[16 * palId + 15]); } bool8 sub_803F428(DungeonPos *pos) @@ -1153,6 +1149,8 @@ void sub_803F9CC(void) gUnknown_20274A5 = TRUE; } +IWRAM_DATA static u32 gUnknown_3001018[96] = {0}; + void sub_803FA4C(s32 a0, s32 a1, bool8 a2) { s32 i; @@ -1214,7 +1212,7 @@ void sub_803FA4C(s32 a0, s32 a1, bool8 a2) r5 = 0; } } - sub_80098BC((void *) VRAM + 0x5980, gUnknown_3001018, 0x180); + sub_80098BC((void *) VRAM + 0x5980, gUnknown_3001018, sizeof(gUnknown_3001018)); } void sub_803FB74(void) @@ -1267,18 +1265,18 @@ void sub_803FB74(void) if (strPtr->unk36 != r5) { strPtr->unk36 = r5; - SetBGPaletteBufferColorArray(0xFC, &gFontPalette[0].pal[12 + r5]); - SetBGPaletteBufferColorArray(0xFD, &gFontPalette[0].pal[13 + r5]); - SetBGPaletteBufferColorArray(0xFE, &gFontPalette[0].pal[14 + r5]); - SetBGPaletteBufferColorArray(0xFF, &gFontPalette[0].pal[15 + r5]); + SetBGPaletteBufferColorArray(0xFC, &gFontPalette[12 + r5]); + SetBGPaletteBufferColorArray(0xFD, &gFontPalette[13 + r5]); + SetBGPaletteBufferColorArray(0xFE, &gFontPalette[14 + r5]); + SetBGPaletteBufferColorArray(0xFF, &gFontPalette[15 + r5]); } if (strPtr->unk38 != r6) { strPtr->unk38 = r6; - nullsub_5(0xFC, &gFontPalette[0].pal[12 + r6]); - nullsub_5(0xFD, &gFontPalette[0].pal[13 + r6]); - nullsub_5(0xFE, &gFontPalette[0].pal[14 + r6]); - nullsub_5(0xFF, &gFontPalette[0].pal[15 + r6]); + nullsub_5(0xFC, &gFontPalette[12 + r6]); + nullsub_5(0xFD, &gFontPalette[13 + r6]); + nullsub_5(0xFE, &gFontPalette[14 + r6]); + nullsub_5(0xFF, &gFontPalette[15 + r6]); } arrPtr = gUnknown_202B038[0][0]; diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 53be37e00..6e87e719c 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -58,8 +58,8 @@ s32 sub_80416A4(DungeonPos *pos_1, u32 param_2, bool8 param_3) { PixelPos pos; - pos.x = pos_1->x * 0x1800 + 0xc00; - pos.y = pos_1->y * 0x1800 + 0x1000; + pos.x = X_POS_TO_PIXELPOS(pos_1->x); + pos.y = Y_POS_TO_PIXELPOS(pos_1->y); return sub_80416E0(&pos, param_2, param_3); } diff --git a/src/code_8042B34.c b/src/code_8042B34.c index 5fb1dcf9e..fcee722dd 100644 --- a/src/code_8042B34.c +++ b/src/code_8042B34.c @@ -345,7 +345,7 @@ extern s32 gDungeonBrightness; extern Entity *gLeaderPointer; void EnforceMaxItemsAndMoney(void); -void sub_8043FD0(void); +static void sub_8043FD0(void); void sub_806B404(void); u8 GetFloorType(void); @@ -362,7 +362,8 @@ extern const s16 gUnknown_80F6850[4]; extern OpenedFile *gDungeonNameBannerPalette; -void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8) +// This functions is the main 'loop' when the player is in a Dungeon. It runs from the moment the player enters a dungeon, until they leave(by completing or by fainting). +void RunDungeon(struct UnkStruct_RunDungeon *r8) { bool8 check; Entity *leader; @@ -1074,10 +1075,10 @@ bool8 sub_8043ED0(bool8 a0) return ret; } -void sub_8043FD0(void) +static void sub_8043FD0(void) { s32 level; - for (level = 2; level < 6; level++) { + for (level = 2; level <= 5; level++) { s32 i, monId, movesCount; for (monId = 0; monId < NUM_MONSTERS; monId++) { PokemonStruct1 *monStruct = &gRecruitedPokemonRef->pokemon[monId]; diff --git a/src/code_8044CC8.c b/src/code_8044CC8.c index b9a560d87..1de1a7fde 100644 --- a/src/code_8044CC8.c +++ b/src/code_8044CC8.c @@ -36,7 +36,7 @@ extern u8 GetFloorType(void); void sub_80460F8(DungeonPos *, Item *, u32); bool8 sub_80461C8(DungeonPos *, u32); -Item * sub_8044CC8(Entity *param_1, ActionParameter *param_2) +Item * sub_8044CC8(Entity *param_1, ActionParameter *param_2, UNUSED s32 a3) { const Tile *tile; Item *item; @@ -54,7 +54,8 @@ Item * sub_8044CC8(Entity *param_1, ActionParameter *param_2) info = GetEntInfo(param_1); } else { - if (3 < (u8)(param_2->actionUseIndex + 0x70)) { + u8 id = param_2->actionUseIndex - 0x90; + if (3 < id) { return NULL; } info = GetEntInfo(gDungeon->teamPokemon[param_2->actionUseIndex - 0x90]); @@ -86,14 +87,10 @@ bool8 sub_8044D40(ActionContainer *param_1,s32 index) return TRUE; } -Item *sub_8044D90(Entity *entity, s32 index, s32 unused) { +Item *sub_8044D90(Entity *entity, s32 index, s32 unused) +{ EntityInfo *info = GetEntInfo(entity); -#ifdef NONMATCHING - ActionParameter *puVar1 = &info->action.actionParameters[index]; -#else - register ActionParameter *puVar1 asm("r3") = &info->action.actionParameters[index]; -#endif - return sub_8044CC8(entity, puVar1); + return sub_8044CC8(entity, &info->action.actionParameters[index], unused); } Entity *sub_8044DA4(Entity *entity, s32 index) diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index e81651380..d1ae4c198 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -111,7 +111,7 @@ void sub_806752C(ActionContainer *a0); bool8 sub_8061A38(ActionContainer *a0, bool8 a1); void sub_8063A70(ActionContainer *a0, bool8 a1); void sub_8063CF0(ActionContainer *a0, bool8 a1); -void sub_8067768(UNUSED ActionContainer *a0); +void sub_8067768(ActionContainer *a0); void ShowTacticsMenu(ActionContainer *a0); void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3); extern bool8 sub_8071A8C(Entity *pokemon); @@ -1561,7 +1561,7 @@ void DrawFieldMenu(u8 a0) gUnknown_202EE10.unk1C = 5; gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = 2; + gUnknown_202EE10.firstEntryY = 2; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; gUnknown_202EE10.unk0 = 0; @@ -1592,19 +1592,19 @@ void DrawFieldMenu(u8 a0) gUnknown_202749A[5] = 7; } - y = sub_8013800(&gUnknown_202EE10, 0); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 0); PrintStringOnWindow(8, y, gFieldMenuMovesPtr, 0, 0); - y = sub_8013800(&gUnknown_202EE10, 1); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 1); PrintStringOnWindow(8, y, gFieldMenuItemsPtr, 0, 0); - y = sub_8013800(&gUnknown_202EE10, 2); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 2); PrintStringOnWindow(8, y, gFieldMenuTeamPtr, 0, 0); - y = sub_8013800(&gUnknown_202EE10, 3); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 3); PrintStringOnWindow(8, y, gFieldMenuOthersPtr, 0, 0); - y = sub_8013800(&gUnknown_202EE10, 4); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 4); PrintStringOnWindow(8, y, gFieldMenuGroundPtr, 0, 0); sub_80073E0(0); @@ -1675,40 +1675,32 @@ extern bool8 sub_8044F3C(s32 param_1); extern s32 gUnknown_202EE6C; extern const u8 gUnknown_8106B50[]; -typedef struct UnkTextStruct3 { - UnkTextStruct2 a0[4]; - // Something ugly, so that sub_805FD74 could match weird compiler memcpy/stack initialization - #ifndef NONMATCHING - u8 fakeMatch[0]; - #endif // NONMATCHING -} UnkTextStruct3; - -extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1); -static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5); +extern void sub_803ECB4(Windows *a0, u8 a1); +static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows *a4, WindowHeader *a5); // Inline needed to (fake?)match. -static inline void sub_805FC30_SetUpTxtStruct(UnkTextStruct3 *src) +static inline void sub_805FC30_SetUpTxtStruct(Windows *src) { memset(src, 0, sizeof(*src)); - src->a0[0].unk4 = 3; - src->a0[1].unk4 = 3; - src->a0[1].unk8.unk0.separate.unk0 = 0x16; - src->a0[1].unk8.unk0.separate.unk2 = 4; - src->a0[1].unkC = 6; - src->a0[1].unkE = 4; - src->a0[1].unk10 = 4; - src->a0[2].unk4 = 3; - src->a0[3].unk4 = 3; + src->id[0].type = WINDOW_TYPE_NORMAL; + src->id[1].type = WINDOW_TYPE_NORMAL; + src->id[1].pos.x = 0x16; + src->id[1].pos.y = 4; + src->id[1].width = 6; + src->id[1].height = 4; + src->id[1].unk10 = 4; + src->id[2].type = WINDOW_TYPE_NORMAL; + src->id[3].type = WINDOW_TYPE_NORMAL; } -void sub_805FC30(UnkTextStruct3 *a0, s32 a1) +void sub_805FC30(Windows *a0, s32 a1) { s32 i; - UnkTextStruct3 sp; + Windows sp; sub_805FC30_SetUpTxtStruct(&sp); - sp.a0[0] = a0->a0[0]; - sp.a0[0].unk0 = 0x80; + sp.id[0] = a0->id[0]; + sp.id[0].unk0 = 0x80; gUnknown_202EE10.menuIndex = 0; gUnknown_202EE10.unk1C = gUnknown_202EE6C; @@ -1716,7 +1708,7 @@ void sub_805FC30(UnkTextStruct3 *a0, s32 a1) gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk20 = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = 0; + gUnknown_202EE10.firstEntryY = 0; gUnknown_202EE10.unk0 = 1; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; @@ -1724,11 +1716,11 @@ void sub_805FC30(UnkTextStruct3 *a0, s32 a1) sub_801317C(&gUnknown_202EE10.unk28); - sp.a0[1].unk8.unk0.separate.unk0 = a1; - sp.a0[1].unkC = 28 - a1; - sp.a0[1].unkE = sp.a0[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0); + sp.id[1].pos.x = a1; + sp.id[1].width = 28 - a1; + sp.id[1].height = sp.id[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0); sub_803ECB4(&sp, 0); - sub_80137B0(&gUnknown_202EE10, sp.a0[1].unkE * 8); + sub_80137B0(&gUnknown_202EE10, sp.id[1].height * 8); sub_80073B8(1); for (i = 0; i < gUnknown_202EE6C; i++) { @@ -1737,7 +1729,7 @@ void sub_805FC30(UnkTextStruct3 *a0, s32 a1) r4 = (sub_8044F3C(i) != 0) ? 7 : 2; sprintfStatic(text, gUnknown_8106B50, r4, sub_8044EC8(i)); - y = sub_8013800(&gUnknown_202EE10, i); + y = GetMenuEntryYCoord(&gUnknown_202EE10, i); PrintStringOnWindow(8, y, text, 1, 0); } sub_80073E0(1); @@ -1768,7 +1760,7 @@ s32 sub_8060D64(s16 *a0, bool8 a1, bool8 a2, bool8 a3, Entity *a4); void sub_8060890(DungeonPos *a0); bool8 sub_8060860(s32 a0); void sub_8060900(Entity *a0); -s32 sub_8060800(UnkTextStruct2_sub2 *a0, s32 a1); +s32 sub_8060800(WindowHeader *a0, s32 a1); void sub_8060CE8(ActionContainer *a0); extern Entity *DrawFieldGiveItemMenu(u8 *a0, s32 a1); @@ -1783,22 +1775,22 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) u8 var_2C = 0; u8 var_28 = 0; EntityInfo *a0Info = GetEntInfo(a0); - UnkTextStruct2_sub2 var_3C; + WindowHeader var_3C; - UnkTextStruct3 var_FC = + Windows var_FC = { - .a0 = + .id = { [0] = { - .unk4 = 6, - .unk8 = {2, 2}, - .unkC = 0x12, - .unkE = 0x10, + .type = WINDOW_TYPE_WITH_HEADER, + .pos = {2, 2}, + .width = 0x12, + .height = 0x10, .unk10 = 0x10, .unk14 = &var_3C, }, - {.unk4 = 3}, {.unk4 = 3}, {.unk4 = 3}, + {.type = WINDOW_TYPE_NORMAL}, {.type = WINDOW_TYPE_NORMAL}, {.type = WINDOW_TYPE_NORMAL}, }, }; @@ -2044,15 +2036,15 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) return r9; } -extern const struct UnkTextStruct2 gUnknown_8106B6C; +extern const struct Window gUnknown_8106B6C; extern const struct unkStruct_8090F58 gUnknown_8106B60; -static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5) +static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, Windows *windows, WindowHeader *a5) { s32 i, x, y; s32 r10; UnkTextStruct1 *txtStrPtr; - UnkTextStruct2 var_94; + Window var_94; u8 txtBuff[80]; EntityInfo *a1Info; @@ -2071,41 +2063,41 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS switch (sUnknown_202F248[a0]) { case 0: case 1: - a4->a0[0].unk10 = 0x10; - a4->a0[0].unkE = 0x10; + windows->id[0].unk10 = 0x10; + windows->id[0].height = 0x10; a5->f2 = 0xC; - gUnknown_202EE10.unk6 = 0x10; + gUnknown_202EE10.firstEntryY = 0x10; gUnknown_202EE10.unk1C = 0xA; gDungeon->unk181e8.unk18212 = 1; break; case 2: - a4->a0[0].unk10 = 4; - a4->a0[0].unkE = 4; + windows->id[0].unk10 = 4; + windows->id[0].height = 4; a5->f2 = 6; - gUnknown_202EE10.unk6 = 0x12; + gUnknown_202EE10.firstEntryY = 0x12; gUnknown_202EE10.unk1C = 1; break; case 3: default: - a4->a0[0].unk10 = 4; - a4->a0[0].unkE = 4; + windows->id[0].unk10 = 4; + windows->id[0].height = 4; a5->f2 = 0xC; - gUnknown_202EE10.unk6 = 0x12; + gUnknown_202EE10.firstEntryY = 0x12; gUnknown_202EE10.unk1C = 1; break; } if (a2) { gUnknown_202EE10.unkC += 0x40; - a4->a0[0].unk8.unk0.separate.unk0 = 0xA; - a4->a0[1] = var_94; + windows->id[0].pos.x = 0xA; + windows->id[1] = var_94; } else { - a4->a0[0].unk8.unk0.separate.unk0 = 2; - a4->a0[1] = a4->a0[3]; + windows->id[0].pos.x = 2; + windows->id[1] = windows->id[3]; } - sub_803ECB4(a4, 1); + sub_803ECB4(windows, 1); txtStrPtr = &gUnknown_2027370[0]; gUnknown_202EE10.unkC = (txtStrPtr->unk0 + 0x10) * 8; gUnknown_202EE10.unkE = ((txtStrPtr->unk2 + 1) * 8) - 2; @@ -2120,7 +2112,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS if (ItemExists(&gTeamInventoryRef->teamItems[i])) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, &gTeamInventoryRef->teamItems[i], &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, i); + y = GetMenuEntryYCoord(&gUnknown_202EE10, i); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } else { @@ -2134,7 +2126,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS if (ItemExists(&gTeamInventoryRef->teamItems[i + 10])) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, &gTeamInventoryRef->teamItems[i + 10], &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, i); + y = GetMenuEntryYCoord(&gUnknown_202EE10, i); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } else { @@ -2149,7 +2141,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS if (item->flags & ITEM_FLAG_EXISTS) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, item, &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, 0); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 0); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } if (a3) { @@ -2164,7 +2156,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS if (item->flags & ITEM_FLAG_EXISTS) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, item, &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, 0); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 0); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } } @@ -2179,7 +2171,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS if (item->flags & ITEM_FLAG_EXISTS) { gUnknown_202EE10.unk1A++; sub_8090E14(txtBuff, item, &gUnknown_8106B60); - y = sub_8013800(&gUnknown_202EE10, 0); + y = GetMenuEntryYCoord(&gUnknown_202EE10, 0); PrintFormattedStringOnWindow(8, y, txtBuff, 0, 0); } } @@ -2198,7 +2190,7 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS } } -s32 sub_8060800(UnkTextStruct2_sub2 *a0, s32 a1) +s32 sub_8060800(WindowHeader *a0, s32 a1) { s32 i, r1, r2, r3; @@ -2507,7 +2499,7 @@ s32 sub_8060D64(s16 *a0, bool8 a1, bool8 a2, bool8 a3, Entity *a4) return count; } -extern UnkTextStruct2_sub2 gUnknown_202F270; +extern WindowHeader gUnknown_202F270; struct UnkFieldTeamMenuStruct { @@ -2516,7 +2508,7 @@ struct UnkFieldTeamMenuStruct u8 unk14[MAX_TEAM_MEMBERS]; }; -void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, UnkTextStruct3 *a1, bool8 a2); +void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *a1, bool8 a2); void sub_806145C(struct UnkFieldTeamMenuStruct *a0); void sub_80615B4(ActionContainer *a0, struct UnkFieldTeamMenuStruct *a1); @@ -2528,18 +2520,18 @@ bool8 sub_8060E38(Entity *a0) bool32 r10, ret; struct UnkFieldTeamMenuStruct sp; - UnkTextStruct3 var_84 = {0}; + Windows var_84 = {0}; - var_84.a0[0].unk4 = 6; - var_84.a0[0].unk8.unk0.separate.unk0 = 2; - var_84.a0[0].unk8.unk0.separate.unk2 = 2; - var_84.a0[0].unkC = 0xE; - var_84.a0[0].unkE = 0x10; - var_84.a0[0].unk10 = 0x10; - var_84.a0[0].unk14 = &gUnknown_202F270; - var_84.a0[1].unk4 = 3; - var_84.a0[2].unk4 = 3; - var_84.a0[3].unk4 = 3; + var_84.id[0].type = WINDOW_TYPE_WITH_HEADER; + var_84.id[0].pos.x = 2; + var_84.id[0].pos.y = 2; + var_84.id[0].width = 0xE; + var_84.id[0].height = 0x10; + var_84.id[0].unk10 = 0x10; + var_84.id[0].unk14 = &gUnknown_202F270; + var_84.id[1].type = WINDOW_TYPE_NORMAL; + var_84.id[2].type = WINDOW_TYPE_NORMAL; + var_84.id[3].type = WINDOW_TYPE_NORMAL; for (i = 0; i < MAX_TEAM_MEMBERS; i++) { Entity *teamMon = gDungeon->teamPokemon[i]; @@ -2549,8 +2541,8 @@ bool8 sub_8060E38(Entity *a0) } if (!gDungeon->unk644.unk17) { - var_84.a0[0].unk4 = 3; - var_84.a0[0].unk8.unk0.arr[1]++; + var_84.id[0].type = WINDOW_TYPE_NORMAL; + var_84.id[0].pos.y++; } while (1) { @@ -2686,14 +2678,14 @@ extern const u8 gUnknown_8106BF4[]; extern void sub_8070968(u8 *buffer, EntityInfo *entityInfo, s32 colorNum); -void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, UnkTextStruct3 *a1, bool8 a2) +void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, Windows *windows, bool8 a2) { s32 r0; DungeonPos pos; s32 i; s32 count = 0; - bool8 r10 = (a1->a0[0].unk4 == 6); + bool8 r10 = (windows->id[0].type == WINDOW_TYPE_WITH_HEADER); sub_8069D18(&pos, GetLeader()); for (i = 0; i < MAX_TEAM_MEMBERS; i++) { @@ -2731,7 +2723,7 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, UnkTextStruct3 *a1, bo gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk20 = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = (r10 != FALSE) * 16; + gUnknown_202EE10.firstEntryY = (r10 != FALSE) * 16; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; gUnknown_202EE10.unk14.x = 0; @@ -2741,14 +2733,14 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, UnkTextStruct3 *a1, bo if (r10) { r0 += 2; } - a1->a0[0].unk10 = r0; - a1->a0[0].unkE = r0; + windows->id[0].unk10 = r0; + windows->id[0].height = r0; gUnknown_202F270.f2 = 8; if (a2) { - a1->a0[1] = a1->a0[3]; + windows->id[1] = windows->id[3]; } - sub_803ECB4(a1, 1); + sub_803ECB4(windows, 1); sub_80137B0(&gUnknown_202EE10, 0); sub_80073B8(0); if (r10) { @@ -2798,7 +2790,7 @@ void DrawFieldTeamMenu(struct UnkFieldTeamMenuStruct *a0, UnkTextStruct3 *a1, bo gFormatArgs[0] = monInfo->HP; gFormatArgs[1] = monInfo->maxHPStat; - y = sub_8013800(&gUnknown_202EE10, i); + y = GetMenuEntryYCoord(&gUnknown_202EE10, i); if (monInfo->isTeamLeader) { PrintFormattedStringOnWindow(9, y, gUnknown_8106BD4, 0, 0); } @@ -2880,25 +2872,25 @@ void sub_8062D68(void); void sub_8062230(void); void sub_8062748(u8 a0); -static inline void SetTxtStruct(UnkTextStruct3 *sp) +static inline void SetTxtStruct(Windows *sp) { memset(sp, 0, sizeof(*sp)); - sp->a0[0].unk4 = 6; - sp->a0[0].unk8.unk0.separate.unk0 = 2; - sp->a0[0].unk8.unk0.separate.unk2 = 2; - sp->a0[0].unkC = 0x12; - sp->a0[0].unkE = 0xE; - sp->a0[0].unk10 = 0x12; - sp->a0[0].unk12 = 2; - sp->a0[0].unk14 = &gUnknown_202F270; - sp->a0[1].unk4 = 3; - sp->a0[2].unk4 = 3; - sp->a0[3].unk4 = 3; + sp->id[0].type = WINDOW_TYPE_WITH_HEADER; + sp->id[0].pos.x = 2; + sp->id[0].pos.y = 2; + sp->id[0].width = 0x12; + sp->id[0].height = 0xE; + sp->id[0].unk10 = 0x12; + sp->id[0].unk12 = 2; + sp->id[0].unk14 = &gUnknown_202F270; + sp->id[1].type = WINDOW_TYPE_NORMAL; + sp->id[2].type = WINDOW_TYPE_NORMAL; + sp->id[3].type = WINDOW_TYPE_NORMAL; } void ShowTacticsMenu(ActionContainer *a0) { - UnkTextStruct3 sp; + Windows sp; EntityInfo *monInfo; u8 tacticIds[NUM_TACTICS]; s32 scrollFirstId; @@ -2930,7 +2922,7 @@ void ShowTacticsMenu(ActionContainer *a0) gUnknown_202EE10.unk1E = 0; gUnknown_202EE10.unk20 = 0; gUnknown_202EE10.unk4 = 0; - gUnknown_202EE10.unk6 = 16; + gUnknown_202EE10.firstEntryY = 16; gUnknown_202EE10.unkC = 0; gUnknown_202EE10.unkE = 0; gUnknown_202EE10.unk14.x = 0; diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 9462a3811..afe049a1d 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -1,15 +1,42 @@ #include "global.h" +#include "globaldata.h" #include "code_8045A00.h" #include "dungeon_message.h" #include "code_807CD9C.h" +#include "code_8041AD0.h" +#include "code_806CD90.h" #include "dungeon_map_access.h" #include "dungeon_movement.h" #include "dungeon_music.h" +#include "position_util.h" #include "dungeon_util.h" #include "items.h" +#include "input.h" +#include "text.h" +#include "code_803E46C.h" #include "string_format.h" +#include "friend_area.h" +#include "dungeon_leader.h" +#include "status_checks_1.h" +#include "dungeon_ai_targeting.h" +#include "dungeon_engine.h" +#include "dungeon_move.h" +#include "dungeon_items.h" +#include "dungeon_random.h" +#include "code_8077274_1.h" +#include "code_8084778.h" +#include "pokemon.h" +#include "trap.h" +#include "moves.h" +#include "pokemon_3.h" +#include "menu_input.h" +#include "dungeon_capabilities.h" +#include "constants/item.h" +#include "constants/dungeon.h" +#include "constants/move_id.h" extern u8 *gUnknown_80F8BE0[]; +extern u8 *gUnknown_80FF76C[]; extern u8 *gItemStickyCannotMove1[]; extern u8 *gItemStickyCannotMove2[]; extern u8 *gItemStickyCannotEquip[]; @@ -25,15 +52,69 @@ extern u8 *gUnknown_80F8DB4[]; extern u8 *gUnknown_80F8DE0[]; extern u8 *gUnknown_80F8E04[]; extern u8 *gUnknown_80F8E28[]; +extern u8 *gItemStickyCannotMove3[]; +extern u8 *gNothingCanBePutDownHere[]; +extern u8 *gUnknown_80F8E2C[]; +extern u8 *gNoExchangesHere[]; +extern u8 *gSwappedGroundItem[]; +extern const u8 *const gMonThrewItem2; +extern const u8 *const gMonThrewItem1; +extern const u8 *const gCannotFarewell; +extern const u8 *const gSayFarewellQ; +extern const u8 *const gUnknown_80FDFB8; +extern const u8 *const gUnknown_80F913C; +extern const u8 *const gCannotTalk; +extern const u8 *const gUnknown_80FE008; +extern const u8 *const gUnknown_80FDF74; +extern const u8 *const gUnknown_80FF674; +extern const u8 *const gUnknown_80F9114; +extern const u8 *const gMonDisappointedAndLeft; +extern const u8 *const gSendMonBackQ; +extern const u8 *const gSendMonBackWithItemQ; +extern const u8 *const gMonWentBack; +extern const u8 *const gMonCringing; +extern const u8 *const gMonParalyzed; +extern const u8 *const gUnknown_80FC690; +extern s32 gUnknown_202EE6C; +extern u32 gUnknown_202F208; + +extern void sub_8071DA4(Entity *); +extern void sub_806A1B0(Entity *); +extern void sub_806A9B4(Entity *, u32); +extern void sub_8057588(Entity * pokemon, u8 param_2); +extern void sub_8068FE0(Entity *, u32, Entity *r2); +extern bool8 sub_806A58C(s16 a0); +extern bool8 sub_806A564(s16 r0); +extern void sub_8045C08(u8 *buffer, Item *item); +extern bool8 sub_8045888(Entity *); extern Item *sub_8044D90(Entity *, s32, u32); void sub_8045BF8(u8 *, Item *); +u8 sub_8048D50(); +void sub_8044FF0(u16 param_1); +u8 * sub_80464AC(); +void sub_8044F5C(u16 param_1, u8 param_2); +void sub_8044DF0(); +void sub_8042208(Entity *pokemon, u8 r1); +void sub_803E708(); +void sub_80479B8(); u8 sub_80460F8(DungeonPos *, Item *, u32); extern void sub_807AB38(Entity *, u32); extern Entity * sub_8044DA4(Entity *param_1,int param_2); extern void sub_806A6E8(Entity *); extern void sub_8044DF0(Entity *, u32, u32); extern void sub_8045DB4(DungeonPos *, u32); +extern bool8 sub_80461C8(DungeonPos *, u32); +extern bool32 sub_8055A00(Entity *attacker, s32 firstMoveId, s32 var_34, s32 itemId, s32 arg_0); +extern bool8 sub_8044B28(void); +Entity *sub_806773C(Entity *entity); +void sub_8067558(Entity *entity, Entity *targetEntity, s32 a2); +void sub_8067794(Entity *entity, Entity *targetEntity, s32 a2); +extern void sub_807EF84(void); +extern void sub_80845E0(Entity *entity); +extern void sub_8084448(Entity *entity); +extern void sub_806A3D4(u8 *dst, s32 _a1, s32 id, bool32 _a3); +extern Entity * sub_80696A8(Entity *target); void HandlePickUpPlayerAction(Entity *entity) { @@ -83,7 +164,6 @@ void HandleSetItemAction(Entity *param_1, bool8 param_2) } } - void HandleUnsetItemAction(Entity *entity,bool8 enableMessage) { Item *item; @@ -108,7 +188,6 @@ void HandleUnsetItemAction(Entity *entity,bool8 enableMessage) } } - void HandleGiveItemAction(Entity *param_1) { Entity *entity; @@ -186,7 +265,6 @@ void HandleGiveItemAction(Entity *param_1) } } - void HandleTakeItemAction(Entity *param_1) { Entity *entity; @@ -322,3 +400,987 @@ void HandlePlaceItemAction(Entity *entity) } } } + +void sub_8066E14(Entity *entity) +{ + Item *item[2]; + EntityInfo *info = GetEntInfo(entity); + item[0] = sub_8044D90(entity,0,5); + item[1] = sub_8044D90(entity,1,6); + + if (info->action.actionParameters[0].actionUseIndex != 0x80) { + LogMessageByIdWithPopupCheckUser(entity,*gUnknown_80F8E2C); + } + else if (info->action.actionParameters[1].actionUseIndex < 0x15 && (item[1]->flags & ITEM_FLAG_SET) && (item[1]->flags & ITEM_FLAG_STICKY)) { + sub_8045BF8(gFormatBuffer_Items[0],item[1]); + LogMessageByIdWithPopupCheckUser(entity,*gUnknown_80F8BE0); + } + else if (info->action.actionParameters[1].actionUseIndex == 0x81 && ItemSticky(item[1])) { + sub_8045BF8(gFormatBuffer_Items[1],item[1]); + LogMessageByIdWithPopupCheckUser(entity,*gItemStickyCannotMove3); + } + else { + const Tile *tile = GetTile((entity->pos).x,(entity->pos).y); + if (tile->object != NULL && GetEntityType(tile->object) != ENTITY_ITEM) { + LogMessageByIdWithPopupCheckUser(entity,*gNoExchangesHere); + } + else { + Item newItems[2]; + + newItems[0] = *item[0]; + newItems[1] = *item[1]; + newItems[0].flags &= ~(ITEM_FLAG_SET); + newItems[1].flags &= ~(ITEM_FLAG_SET); + + sub_80461C8(&info->action.actionParameters[0].itemPos,1); + ZeroOutItem(item[1]); + if (!sub_80460F8(&info->action.actionParameters[0].itemPos,&newItems[1],1)) { + LogMessageByIdWithPopupCheckUser(entity,*gNothingCanBePutDownHere); + } + else { + if (info->action.actionParameters[1].actionUseIndex == 0x81) { + info->heldItem = newItems[0]; + } + else { + AddItemToInventory(&newItems[0]); + } + + FillInventoryGaps(); + sub_8045BF8(gFormatBuffer_Items[0],&newItems[1]); + sub_8045BF8(gFormatBuffer_Items[1],&newItems[0]); + PlaySoundEffect(0x14d); + LogMessageByIdWithPopupCheckUser(entity,*gSwappedGroundItem); + sub_807AB38(entity,gDungeon->forceMonsterHouse); + } + } + } +} + +void sub_8066FA4(Entity *entity) +{ + Item *item[2]; + EntityInfo *info = GetEntInfo(entity); + const Tile *tile = GetTile((entity->pos).x,(entity->pos).y); + + item[0] = sub_8044D90(entity,0,7); + sub_8045BF8(gFormatBuffer_Items[0],item[0]); + if (info->action.actionParameters[0].actionUseIndex < 0x15 && (item[0]->flags & ITEM_FLAG_SET) && (item[0]->flags & ITEM_FLAG_STICKY)) { + sub_8045BF8(gFormatBuffer_Items[1],item[0]); + LogMessageByIdWithPopupCheckUser(entity,*gItemStickyCannotMove3); + } + else if (info->action.actionParameters[0].actionUseIndex == 0x81 && ItemSticky(item[0])) { + LogMessageByIdWithPopupCheckUser(entity,*gItemStickyCannotMove2); + } + else if (tile->object != NULL && GetEntityType(tile->object) != ENTITY_ITEM) { + LogMessageByIdWithPopupCheckUser(entity,*gNoExchangesHere); + } + else { + Item newItems[2]; + + item[1] = GetItemData(tile->object); + sub_8045BF8(gFormatBuffer_Items[1],item[1]); + newItems[0] = *item[0]; + newItems[1] = *item[1]; + newItems[0].flags &= ~(ITEM_FLAG_SET); + newItems[1].flags &= ~(ITEM_FLAG_SET); + + sub_80461C8(&entity->pos,1); + ZeroOutItem(item[0]); + if (!sub_80460F8(&entity->pos, &newItems[0],1)) { + LogMessageByIdWithPopupCheckUser(entity,*gNothingCanBePutDownHere); + } + else { + if (info->action.actionParameters[0].actionUseIndex == 0x81) { + info->heldItem = newItems[1]; + } + else { + AddItemToInventory(&newItems[1]); + } + FillInventoryGaps(); + PlaySoundEffect(0x14d); + LogMessageByIdWithPopupCheckUser(entity,*gSwappedGroundItem); + sub_807AB38(entity,gDungeon->forceMonsterHouse); + } + } +} + +void sub_8067110(Entity *entity) +{ + EntityInfo *info = GetEntInfo(entity); + Item *item = sub_8044D90(entity,0,8); + + sub_8045BF8(gFormatBuffer_Items[0],item); + SetMessageArgument_2(gFormatBuffer_Monsters[0],info,0); + if (sub_8048D50(entity,item)) { + Item item2; + + LogMessageByIdWithPopupCheckUser(entity,sub_80464AC(item)); + item2 = *item; + sub_8044DF0(entity,0,0x66); + sub_803E708(0x1e,0x11); + sub_80479B8(0,0,0,entity,entity,&item2); + sub_807AB38(entity,gDungeon->forceMonsterHouse); + } +} + +struct UnkStruct_8067110 +{ + u8 unk0; + u8 unk1; + s16 unk2; +}; + +extern void sub_8083904(DungeonPos *pos, Entity *entity); +extern void sub_80475C4(Entity *entity, Item *item, DungeonPos *pos1, DungeonPos *pos2, struct UnkStruct_8067110 *); +extern void sub_8047190(Entity *entity, Item *item, DungeonPos *pos1, s32 dir, struct UnkStruct_8067110 *); + +void sub_80671A0(Entity *entity) +{ + EntityInfo *info = GetEntInfo(entity); + Item *item = sub_8044D90(entity, 0, 9); + + if (info->action.actionParameters[0].actionUseIndex == 0x81 && ItemSticky(item)) { + sub_8045BF8(gFormatBuffer_Items[0], item); + LogMessageByIdWithPopupCheckUser(entity, *gUnknown_80F8BE0); + sub_803E708(0x14, 0x4C); + } + else if ((GetItemCategory(item->id) == CATEGORY_THROWN_LINE || GetItemCategory(item->id) == CATEGORY_THROWN_ARC) && ItemSticky(item)) { + sub_8045BF8(gFormatBuffer_Items[0], item); + LogMessageByIdWithPopupCheckUser(entity, *gUnknown_80F8BE0); + sub_803E708(0x14, 0x4C); + } + else if (ShouldMonsterRunAwayAndShowEffect(entity, TRUE)) { + LogMessageByIdWithPopupCheckUser(entity, *gUnknown_80FF76C); + sub_803E708(0x14, 0x4C); + } + else { + bool8 r7; + Item newItem; + DungeonPos pos; + struct UnkStruct_8067110 unkStruct; + + newItem = *item; + newItem.flags &= ~(ITEM_FLAG_SET); + + if (info->action.actionParameters[0].actionUseIndex == 0x80) { + item = NULL; + sub_80461C8(&info->action.actionParameters[0].itemPos, 1); + } + + r7 = TRUE; + if ((GetItemCategory(newItem.id) == CATEGORY_THROWN_LINE || GetItemCategory(newItem.id) == CATEGORY_THROWN_ARC) && (newItem.quantity > 1)) { + r7 = FALSE; + } + + if (r7) { + if (info->action.actionParameters[0].actionUseIndex != 0x80) { + ZeroOutItem(item); + FillInventoryGaps(); + } + } + else { + if (info->action.actionParameters[0].actionUseIndex == 0x80) { + newItem.quantity--; + sub_80460F8(&info->action.actionParameters[0].itemPos, &newItem, 1); + } + else { + item->quantity--; + } + } + + if (HasHeldItem(entity, ITEM_NO_AIM_SCOPE)) { + info->action.direction = DungeonRandInt(NUM_DIRECTIONS); + } + + if (sub_8045888(entity)) { + s32 i; + s32 dir = info->action.direction; + sub_80421C0(entity, 0x164); + + for (i = 0; i < NUM_DIRECTIONS; i++) { + dir--; + dir &= DIRECTION_MASK; + sub_806CDD4(entity, 0, dir); + sub_803E708(2, 21); + } + info->unk166 = 4; + } + + if ((GetItemCategory(newItem.id) == CATEGORY_THROWN_LINE || GetItemCategory(newItem.id) == CATEGORY_THROWN_ARC)) { + newItem.quantity = 1; + } + + sub_8045C08(gFormatBuffer_Items[0], &newItem); + SetMessageArgument_2(gFormatBuffer_Monsters[0], info, 0); + if (GetItemCategory(newItem.id) == CATEGORY_THROWN_LINE) { + LogMessageByIdWithPopupCheckUser(entity, gMonThrewItem2); + } + else { + LogMessageByIdWithPopupCheckUser(entity, gMonThrewItem1); + } + + sub_8042208(entity, GetItemCategory(newItem.id)); + if (HasHeldItem(entity, ITEM_CURVE_BAND)) { + unkStruct.unk1 = 1; + } + else { + unkStruct.unk1 = 0; + } + + switch (info->longTossClassStatus.status) { + case 0: + unkStruct.unk0 = 0; + unkStruct.unk2 = 10; + break; + case STATUS_LONG_TOSS: + unkStruct.unk0 = 0; + unkStruct.unk2 = 99; + break; + case STATUS_PIERCE: + unkStruct.unk0 = 1; + unkStruct.unk2 = 99; + break; + } + + if (HasHeldItem(entity, ITEM_PIERCE_BAND)) { + unkStruct.unk0 = 1; + unkStruct.unk2 = 99; + } + + if (GetItemCategory(newItem.id) == CATEGORY_THROWN_ARC) { + sub_8083904(&pos, entity); + sub_80475C4(entity, &newItem, &entity->pos, &pos, &unkStruct); + } + else { + sub_8047190(entity, &newItem, &entity->pos, info->action.direction, &unkStruct); + } + + if (EntityIsValid(entity)) { + sub_806CE68(entity, info->action.direction); + sub_807AB38(entity,gDungeon->forceMonsterHouse); + } + } +} + +void HandleTalkFieldAction(Entity *entity) +{ + sub_8067558(entity, sub_806773C(entity), -1); +} + +void sub_806752C(ActionContainer *a0) +{ + Entity *targetEntity = gDungeon->teamPokemon[a0->actionParameters[0].actionUseIndex]; + sub_8067558(GetLeader(), targetEntity, 0); +} + +void sub_8067558(Entity *entity, Entity *targetEntity, s32 a2) +{ + EntityInfo *info1 = GetEntInfo(entity); + + if (targetEntity == NULL) { + DisplayDungeonMessage(NULL, gCannotTalk, TRUE); + } + else if (!sub_8070BC0(entity)) { + DisplayDungeonMessage(NULL, gCannotTalk, TRUE); + } + else if (GetTreatmentBetweenMonsters(entity, targetEntity, TRUE, FALSE) != 1 + && GetTreatmentBetweenMonsters(targetEntity, entity, TRUE, FALSE) != 1) + { + EntityInfo *info2 = GetEntInfo(targetEntity); + + SetMessageArgument_2(gFormatBuffer_Monsters[0], info2, 0); + SetMessageArgument_2(gFormatBuffer_Monsters[1], info1, 7); + sub_8084778(); + TrySendImmobilizeSleepEndMsg(entity, targetEntity); + if (!sub_8070BC0(targetEntity) || CheckVariousStatuses2(targetEntity, TRUE)) { + DisplayDungeonMessage(NULL, gUnknown_80FE008, TRUE); + return; + } + + sub_806CEFC(entity, GetDirectionTowardsPosition(&entity->pos, &targetEntity->pos)); + if (a2 >= 0) { + sub_806CEFC(targetEntity, a2); + } + else { + sub_806CEFC(targetEntity, info1->action.direction + 4); + } + + if (info2->shopkeeper == SHOPKEEPER_MODE_SHOPKEEPER) { + sub_807EF84(); + return; + } + + if (info2->monsterBehavior == 1) { + if (gDungeon->unk644.unk2A != 0) { + DisplayDungeonMessage(NULL, gUnknown_80FF674, TRUE); + } + else if (gDungeon->unk644.unk33) { + sub_80845E0(targetEntity); + } + else { + sub_8084448(targetEntity); + } + } + else { + u8 txt[300]; + s32 r2; + s32 speciesId = info2->apparentID; + bool8 r6 = FALSE; + + if (info2->joinedAt.id == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON) { + speciesId = MONSTER_MUNCHLAX; + } + else if (info2->joinedAt.id == DUNGEON_RESCUE_TEAM_BASE) { + speciesId = MONSTER_DECOY; + } + else if (info2->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER && !gDungeon->unk644.unk18) { + r6 = TRUE; + } + + if (info2->HP <= info2->maxHPStat / 4) { + r2 = 2; + } + else if (info2->HP <= (info2->maxHPStat * 6) / 10) { + r2 = 1; + } + else { + r2 = 0; + } + + sub_806A3D4(txt, speciesId, r2, r6); + DisplayDungeonMessage(NULL, txt, TRUE); + } + } + else { + DisplayDungeonMessage(NULL, gCannotTalk, TRUE); + } +} + +Entity *sub_806773C(Entity *entity) +{ + Entity *ret = sub_80696A8(entity); + if (ret == NULL) return NULL; + if (GetEntityType(ret) != ENTITY_MONSTER) return NULL; + if (GetEntInfo(entity)->isNotTeamMember) return NULL; + + return ret; +} + +void sub_8067768(ActionContainer *a0) +{ + Entity *targetEntity = gDungeon->teamPokemon[a0->actionParameters[0].actionUseIndex]; + sub_8067794(GetLeader(), targetEntity, 0); +} + +void sub_8067794(Entity *entity, Entity *targetEntity, s32 a2) +{ + const u8 *stringPtr1; + const u8 *stringPtr2; + s32 teamIndex; + EntityInfo *info2 = GetEntInfo(targetEntity); + + if (targetEntity == NULL) { + DisplayDungeonMessage(NULL, gCannotFarewell, TRUE); + return; + } + + SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], targetEntity, 0); + stringPtr1 = gSayFarewellQ; + stringPtr2 = gUnknown_80F913C; + teamIndex = info2->teamIndex; + if (teamIndex >= 0) { + PokemonStruct2 *pokeStruct = &gRecruitedPokemonRef->pokemon2[teamIndex]; + if (sub_806A564(pokeStruct->unkA)) { + stringPtr1 = gUnknown_80F9114; + stringPtr2 = gMonDisappointedAndLeft; + } + else if (sub_806A58C(pokeStruct->unkA)) { + if (IsMakuhitaTrainingMaze()) { + stringPtr1 = gSendMonBackQ; + } + else { + stringPtr1 = gSendMonBackWithItemQ; + } + stringPtr2 = gMonWentBack; + } + } + + if (DisplayDungeonYesNoMessage(NULL, stringPtr1, FALSE) == 1) { + u8 tempText[64]; + + strncpy(tempText, gFormatBuffer_Monsters[0], sizeof(tempText)); + sub_8068FE0(targetEntity, 0x21D, 0); + strncpy(gFormatBuffer_Monsters[0], tempText, sizeof(tempText)); + DisplayDungeonMessage(NULL, stringPtr2, TRUE); + } +} + +void HandleUseMovePlayerAction(Entity *entity) +{ + s32 i = 0; + + while (i < sub_8070828(entity, TRUE)) { + EntityInfo *info = GetEntInfo(entity); + + sub_8055A00(entity, info->action.actionParameters[1].actionUseIndex, 1, 0, 0); + if (sub_8044B28()) { + break; + } + if (info->unk159 != 0) { + break; + } + i++; + } + + sub_8057588(entity, 1); + if (!sub_8044B28()) { + if (EntityIsValid(entity)) { + sub_806A9B4(entity, GetEntInfo(entity)->action.actionParameters[1].actionUseIndex); + } + sub_806A1B0(entity); + } +} + +void sub_8067904(Entity *entity, u16 moveId) +{ + Move move; + EntityInfo *info = GetEntInfo(entity); + + gUnknown_202F208 = 0; + InitPokemonMove(&move, moveId); + if (info->cringeClassStatus.status == STATUS_CRINGE) { + SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0); + LogMessageByIdWithPopupCheckUser(entity, gMonCringing); + } + else if (info->burnClassStatus.status == STATUS_PARALYSIS) { + SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0); + LogMessageByIdWithPopupCheckUser(entity, gMonParalyzed); + } + else { + s32 i; + bool32 isStruggle; + + if (moveId == MOVE_STRUGGLE) { + isStruggle = TRUE; + } + else { + isStruggle = FALSE; + } + + i = 0; + while (i < sub_8070828(entity, TRUE)) { + info->abilityEffectFlags = 0; + move.moveFlags |= 8; + move.moveFlags |= 4; + move.PP = 10; + TryUseChosenMove(entity, isStruggle, 0, 0, FALSE, &move); + + if (!EntityIsValid(entity) || info->unk159 != 0) { + break; + } + i++; + } + + if (EntityIsValid(entity)) { + if (moveId == MOVE_STRUGGLE && gUnknown_202F208 == 0) { + LogMessageByIdWithPopupCheckUser(entity, gUnknown_80FC690); + } + if (info->isTeamLeader && moveId != MOVE_STRUGGLE) { + DungeonPos pos; + + pos.x = entity->pos.x + gAdjacentTileOffsets[info->action.direction].x; + pos.y = entity->pos.y + gAdjacentTileOffsets[info->action.direction].y; + sub_807FE44(&pos, 1); + } + sub_8071DA4(entity); + } + } +} + +extern void sub_80684C4(void); +void sub_8045064(void); +extern void sub_8083CE0(u8 param_1); +extern void sub_8068344(void); +bool8 sub_8044F3C(s32 param_1); +void sub_8068310(s32 a0, PokemonStruct1 **a1); +void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2, s32 a3, s32 a4); +extern void sub_803ECB4(Windows *a0, u8 a1); +u32 sub_8014140(s32 a0, const void *a1); +void sub_8083D1C(void); +void sub_8083D08(void); +void sub_8083D30(void); +void sub_806806C(PokemonStruct1 *a0); +void sub_805FC30(Windows *a0, s32 a1); +extern void sub_803EAF0(u32, u8 *); + +extern const s32 gUnknown_8106E80[]; +extern MenuInputStruct gUnknown_202EE10; + +static EWRAM_DATA WindowHeader gUnknown_202F308 = {0}; +static EWRAM_DATA s32 gUnknown_202F30C = 0; +EWRAM_DATA s32 gUnknown_202F310 = 0; + +// It's likely a struct only used in Blue version. Touchpad maybe? +static const u8 gUnknown_8106DA4[] = { + 0x01, 0, 0x38, 0, 0, 0, 0x18, 0, 0x18, 0, 0, 0, 0x02, 0, 0x38, 0, 0x68, 0, 0x18, 0, 0x18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const Windows gUnknown_8106DC8 = { + .id = { + [0] = + { + .unk0 = 0, + .type = WINDOW_TYPE_WITH_HEADER, + .pos = {0x02, 0x02}, + .width = 0x11, + .height = 0x0E, + .unk10 = 0x12, + .unk12 = 0x02, + .unk14 = &gUnknown_202F308 + }, + [1] = + { + .unk0 = 0, + .type = WINDOW_TYPE_NORMAL, + .pos = {0x15, 0x04}, + .width = 0x07, + .height = 0x04, + .unk10 = 0x04, + .unk12 = 0, + .unk14 = NULL + }, + [2] = + { + .type = WINDOW_TYPE_NORMAL, + }, + [3] = + { + .type = WINDOW_TYPE_NORMAL, + } + } +}; + +void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3) +{ + s32 i; + s32 r10; + Windows spTxtStruct = gUnknown_8106DC8; + + gUnknown_202F30C = 0; + r10 = 0; + for (i = 0; i < a2; i++) { + a3[i]->unk0 &= ~(0x8000); + } + + while (1) { + sub_8068310(a2, a3); + if (gUnknown_202F310 >= a1) + break; + while (1) { + s32 r7 = 0, r5 = 0; + + gUnknown_202F308.f0 = 1; + gUnknown_202F308.f1 = 0; + gUnknown_202F308.f2 = 0xE; + gUnknown_202F308.f3 = 0; + + ASM_MATCH_TRICK(r7); + + sub_803ECB4(&spTxtStruct, 1); + sub_8067F00(a0, a3, gUnknown_202F30C, a2, a1); + gUnknown_202EE10.unk1A = min(a2, 8); + gUnknown_202EE10.menuIndex = r10; + gUnknown_202EE10.unk1C = 8; + gUnknown_202EE10.unk1E = 0; + gUnknown_202EE10.unk20 = 0; + gUnknown_202EE10.unk4 = 0; + gUnknown_202EE10.firstEntryY = 18; + gUnknown_202EE10.unkC = 0; + gUnknown_202EE10.unkE = 0; + gUnknown_202EE10.unk14.x = 0; + gUnknown_202EE10.unk0 = 0; + sub_801317C(&gUnknown_202EE10.unk28); + sub_80137B0(&gUnknown_202EE10, 0); + while (1) { + s32 r4; + + AddMenuCursorSprite(&gUnknown_202EE10); + r5 = 0; + r7 = 0; + if (a2 - gUnknown_202F30C > 8) { + r5 = 1; + sub_80684C4(); + } + if (gUnknown_202F30C != 0) { + r7 = 1; + sub_8068344(); + } + + r4 = sub_8014140(0, gUnknown_8106DA4); + sub_803E46C(0x37); + if (r4 == 2 && r5) { + if (a2 - gUnknown_202F30C > 8) { + s32 i; + for (i = 0; i < 6; i++) { + gIwramTextFunc1(0); + sub_803E46C(0x37); + } + gUnknown_202F30C++; + } + r7 = 0; + r10 = 7; + break; + } + if (gRealInputs.repeated & DPAD_DOWN) { + sub_8083CE0(1); + if (gUnknown_202EE10.menuIndex == 7) { + if (a2 - gUnknown_202F30C > 8) { + s32 i; + for (i = 0; i < 6; i++) { + gIwramTextFunc1(0); + sub_803E46C(0x37); + } + gUnknown_202F30C++; + } + r7 = 0; + r10 = 7; + break; + } + sub_80136E0(&gUnknown_202EE10, 0); + } + + if (r4 == 1 && r7 != 0) { + if (gUnknown_202F30C != 0) { + s32 i; + for (i = 0; i < 6; i++) { + gIwramTextFunc2(0); + sub_803E46C(0x37); + } + gUnknown_202F30C--; + } + r7 = 0; + r10 = 0; + break; + } + if (gRealInputs.repeated & DPAD_UP) { + sub_8083CE0(1); + if (gUnknown_202EE10.menuIndex == 0) { + if (gUnknown_202F30C != 0) { + s32 i; + for (i = 0; i < 6; i++) { + gIwramTextFunc2(0); + sub_803E46C(0x37); + } + gUnknown_202F30C--; + } + r7 = 0; + r10 = 0; + break; + } + sub_8013744(&gUnknown_202EE10, 0); + } + + if (sub_80048C8()) { + continue; + } + + if (gRealInputs.pressed & START_BUTTON) { + sub_8083D1C(); + r7 = 3; + break; + } + if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) { + sub_8083D08(); + r7 = 1; + break; + } + if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) { + sub_8083D30(); + r7 = 2; + break; + } + } + + AddMenuCursorSprite(&gUnknown_202EE10); + sub_803E46C(0x37); + if (r7 == 0) { + continue; + } + else if (r7 == 2) { + r10 = gUnknown_202EE10.menuIndex; + if (gUnknown_202F310 < a1) { + continue; + } + + if (DisplayDungeonYesNoMessage(NULL, gUnknown_80FDFB8, TRUE) == 1) { + break; + } + else { + continue; + } + } + else if (r7 == 3) { + r10 = gUnknown_202EE10.menuIndex; + sub_806806C(a3[gUnknown_202F30C + r10]); + continue; + } + else { + s32 arrId; + u8 locIdIsPartner; + + r10 = gUnknown_202EE10.menuIndex; + arrId = gUnknown_202F30C + r10; + gUnknown_202EE6C = 0; + sub_8044F5C(0x29, 0); + sub_8044F5C(0x2A, 0); + sub_8044F5C(0x40, 0); + if (a3[arrId]->unk0 & 0x8000) { + sub_8044FF0(0x29); + } + else { + sub_8044FF0(0x2A); + } + + // This unnecessary variable is required to match. + locIdIsPartner = DUNGEON_JOIN_LOCATION_PARTNER; + if (a3[arrId]->isTeamLeader || (a3[arrId]->dungeonLocation.id == DUNGEON_JOIN_LOCATION_LEADER || a3[arrId]->dungeonLocation.id == locIdIsPartner)) { + sub_8044FF0(0x29); + } + + sub_8045064(); + sub_805FC30(&spTxtStruct, 0x15); + + while (1) { + AddMenuCursorSprite(&gUnknown_202EE10); + sub_803E46C(0x37); + + if (gRealInputs.repeated & DPAD_DOWN) { + sub_8083CE0(1); + sub_80136E0(&gUnknown_202EE10, 1); + } + if (gRealInputs.repeated & DPAD_UP) { + sub_8083CE0(1); + sub_8013744(&gUnknown_202EE10, 1); + } + + if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) { + if (sub_8044F3C(gUnknown_202EE10.menuIndex)) { + sub_8083D08(); + r7 = 1; + break; + } + sub_8083D30(); + } + if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) { + sub_8083D30(); + r7 = 0; + break; + } + } + + AddMenuCursorSprite(&gUnknown_202EE10); + sub_803E46C(0x37); + if (r7 != 0) { + if (gUnknown_202EE10.menuIndex == 0) { + a3[arrId]->unk0 |= 0x8000; + sub_8068310(a2, a3); + } + else if (gUnknown_202EE10.menuIndex == 1) { + a3[arrId]->unk0 &= ~(0x8000); + sub_8068310(a2, a3); + } + else { + sub_806806C(a3[arrId]); + } + } + continue; + } + } + } +} + +void sub_8067F00(u8 a0, PokemonStruct1 **a1, s32 a2_, s32 a3, s32 a4) +{ + s32 i, y; + s32 a2; + + a2 = a2_ - 1; + y = 0x16; + + sub_80073B8(0); + WriteFriendAreaName(gFormatBuffer_Monsters[0], a0, FALSE); + PrintFormattedStringOnWindow(12, 0, _("{POKEMON_0}"), 0, '\0'); + i = 0; + while (i < 10) { + if (a2 >= 0) { + if (a2 >= a3) { + break; + } + + PrintColoredPokeNameToBuffer(gFormatBuffer_Monsters[0], a1[a2], 0); + sub_808D930(gFormatBuffer_Monsters[1], a1[a2]->speciesNum); + gFormatArgs[0] = a2 + 1; + if (a1[a2]->unk0 & 0x8000) { + InlineStrcpy(gFormatBuffer_Items[0], _("{STAR_BULLET}")); + } + else { + InlineStrcpy(gFormatBuffer_Items[0], _("{ICON_BLANK}")); + } + + if (a1[a2]->unk0 & 0x4000) { + PrintFormattedStringOnWindow(7, y, _("{MOVE_ITEM_0}{color CYAN}$v02:{POKEMON_0}{reset}"), 0, '\0'); + } + else { + PrintFormattedStringOnWindow(7, y, _("{MOVE_ITEM_0}{color YELLOW}$v02:{POKEMON_0}{reset}"), 0, '\0'); + } + } + + i++; + y += 12; + a2++; + } + + sub_80073E0(0); + sub_80073B8(1); + if (gUnknown_202F310 >= a4) { + PrintFormattedStringOnWindow(8, 2, _("Press {B_BUTTON}\nif OK."), 1, '\0'); + } + else { + gFormatArgs[0] = a4 - gUnknown_202F310; + PrintFormattedStringOnWindow(8, 2, _("Say bye to\n{VALUE_0} more"), 1, '\0'); + } + + sub_80073E0(1); +} + +void sub_806806C(PokemonStruct1 *a0) +{ + struct unkStruct_808FF20 unkStruct; + struct UnkInfoTabStruct var_C8; + Windows spTxtStruct = {0}; + s32 r7; + + spTxtStruct.id[0].type = WINDOW_TYPE_WITH_HEADER; + spTxtStruct.id[0].pos.x = 2; + spTxtStruct.id[0].pos.y = 2; + spTxtStruct.id[0].width = 0x12; + spTxtStruct.id[0].height = 0xE; + spTxtStruct.id[0].unk10 = 0x12; + spTxtStruct.id[0].unk12 = 2; + spTxtStruct.id[0].unk14 = &gUnknown_202F308; + spTxtStruct.id[1].type = WINDOW_TYPE_NORMAL; + spTxtStruct.id[2].type = WINDOW_TYPE_NORMAL; + spTxtStruct.id[3].type = WINDOW_TYPE_NORMAL; + + r7 = 0; + unkStruct.unk40 = 0; + unkStruct.unk56 = 0; + gUnknown_202EE10.menuIndex = 0; + + while (1) { + bool32 loopBreak = FALSE; + s32 spF8[4] = {2, 3, 4, 5}; + + gUnknown_202F308.f0 = 4; + gUnknown_202F308.f1 = r7; + gUnknown_202F308.f2 = 10; + gUnknown_202F308.f3 = 0; + + gUnknown_202EE10.unk1E = r7; + gUnknown_202EE10.unk20 = 4; + gUnknown_202EE10.unk1A = 0; + gUnknown_202EE10.menuIndex = 0; + gUnknown_202EE10.unk1C = 0; + gUnknown_202EE10.unk4 = 0; + gUnknown_202EE10.firstEntryY = 16; + gUnknown_202EE10.unk14.x = 0; + gUnknown_202EE10.unk0 = 0; + + sub_801317C(&gUnknown_202EE10.unk28); + sub_803ECB4(&spTxtStruct, 1); + sub_808FF20(&unkStruct, a0, gDungeon->unk644.unk16); + CreatePokemonInfoTabScreen(spF8[r7], r7, &unkStruct, &var_C8, 0); + + gUnknown_202EE10.unkC = (gUnknown_2027370[0].unk0 + 15) * 8; + gUnknown_202EE10.unkE = ((gUnknown_2027370[0].unk2 + 1) * 8) - 2; + + while (1) { + s32 r5; + + AddMenuCursorSprite(&gUnknown_202EE10); + if (spF8[r7] == 4) { + if (var_C8.unk0[8] != 0) { + sub_80684C4(); + } + if (unkStruct.unk40 != 0) { + sub_8068344(); + } + } + + r5 = sub_8014140(0, gUnknown_8106DA4); + sub_803E46C(0x1C); + if ((gRealInputs.pressed & DPAD_RIGHT) || gUnknown_202EE10.unk28.dpad_right) { + sub_8083CE0(0); + if (++r7 == 4) { + r7 = 0; + } + break; + } + if ((gRealInputs.pressed & DPAD_LEFT) || gUnknown_202EE10.unk28.dpad_left) { + sub_8083CE0(0); + if (--r7 == -1) { + r7 = 3; + } + break; + } + + if (spF8[r7] == 4) { + if (((gRealInputs.repeated & DPAD_DOWN) || r5 == 2) && var_C8.unk0[8] != 0) { + s32 i; + + sub_8083CE0(0); + for (i = 0; i < 6; i++) { + gIwramTextFunc1(0); + sub_803E46C(0x1C); + } + unkStruct.unk40++; + break; + } + if (((gRealInputs.repeated & DPAD_UP) || r5 == 1) && unkStruct.unk40 != 0) { + s32 i; + + sub_8083CE0(0); + for (i = 0; i < 6; i++) { + gIwramTextFunc2(0); + sub_803E46C(0x1C); + } + unkStruct.unk40--; + break; + } + } + + if (sub_80048C8()) { + continue; + } + + if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) { + sub_8083D08(); + loopBreak = TRUE; + break; + } + if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) { + sub_8083D30(); + loopBreak = TRUE; + break; + } + } + + sub_803E46C(0x37); + if (loopBreak) { + break; + } + } + + sub_803EAF0(0, NULL); +} + diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index ee6411eee..7181cc058 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -77,7 +77,6 @@ extern void sub_8005700(DungeonPos *a0, struct axObject *a1); u32 EntityGetStatusSprites(Entity *entity); void UpdateDungeonPokemonSprite(int id, short species, int status, char visible); extern void sub_8042EC8(Entity *a0, s32 a1); -void DoAxFrame_800558C(struct axObject *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, unkStruct_2039DB0 *spriteMasks); extern Entity *sub_804550C(s16 a); extern Entity *sub_80453AC(s16 id); extern void sub_803F580(s32); @@ -356,94 +355,32 @@ void sub_806A390(Entity *pokemon) struct UnkTalkFileStruct { - const u8 *strings[10][4]; + const u8 *strings[4]; }; -// https://decomp.me/scratch/beUzw s16 memes again -#ifdef NONMATCHING -void sub_806A3D4(u8 *dst, s16 a1, s32 id, bool8 a3) +void sub_806A3D4(u8 *dst, s32 _a1, s32 id, bool32 _a3) { u8 fileName[12]; OpenedFile *file; - s32 strId; + s32 a1 = (s16) (_a1); + bool8 a3 = _a3; + s32 mod; + struct UnkTalkFileStruct *strPtr; if (a3) { - sprintf(fileName, gUnknown_8106EA8, a1 / 10); + sprintf(fileName, gUnknown_8106EA8, (s16) (a1 / 10)); } else { - sprintf(fileName, gUnknown_8106EB0, a1 / 10); + sprintf(fileName, gUnknown_8106EB0, (s16) (a1 / 10)); } file = OpenFileAndGetFileDataPtr(fileName, &gDungeonFileArchive); - strId = a1 % 10; - strcpy(dst, ((struct UnkTalkFileStruct *)(file->data))->strings[strId][id]); + mod = (s16)(a1 % 10); + strPtr = ((struct UnkTalkFileStruct *)(file->data)); + strcpy(dst, strPtr[mod].strings[id]); CloseFile(file); } -#else -NAKED void sub_806A3D4(u8 *dst, s16 a1, s32 id, bool8 a3) -{ - asm_unified("push {r4-r7,lr}\n" -" sub sp, 0xC\n" -" adds r7, r0, 0\n" -" adds r6, r2, 0\n" -" lsls r1, 16\n" -" asrs r5, r1, 16\n" -" lsls r3, 24\n" -" cmp r3, 0\n" -" beq _0806A404\n" -" ldr r4, _0806A400\n" -" adds r0, r5, 0\n" -" movs r1, 0xA\n" -" bl __divsi3\n" -" adds r2, r0, 0\n" -" lsls r2, 16\n" -" asrs r2, 16\n" -" mov r0, sp\n" -" adds r1, r4, 0\n" -" bl sprintf\n" -" b _0806A41C\n" -" .align 2, 0\n" -"_0806A400: .4byte gUnknown_8106EA8\n" -"_0806A404:\n" -" ldr r4, _0806A450\n" -" adds r0, r5, 0\n" -" movs r1, 0xA\n" -" bl __divsi3\n" -" adds r2, r0, 0\n" -" lsls r2, 16\n" -" asrs r2, 16\n" -" mov r0, sp\n" -" adds r1, r4, 0\n" -" bl sprintf\n" -"_0806A41C:\n" -" ldr r1, _0806A454\n" -" mov r0, sp\n" -" bl OpenFileAndGetFileDataPtr\n" -" adds r4, r0, 0\n" -" adds r0, r5, 0\n" -" movs r1, 0xA\n" -" bl __modsi3\n" -" lsls r0, 16\n" -" ldr r1, [r4, 0x4]\n" -" asrs r0, 12\n" -" adds r0, r1\n" -" lsls r1, r6, 2\n" -" adds r0, r1\n" -" ldr r1, [r0]\n" -" adds r0, r7, 0\n" -" bl strcpy\n" -" adds r0, r4, 0\n" -" bl CloseFile\n" -" add sp, 0xC\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0806A450: .4byte gUnknown_8106EB0\n" -"_0806A454: .4byte gDungeonFileArchive"); -} -#endif // NONMATCHING bool8 sub_806A458(Entity *pokemon) { @@ -1486,31 +1423,35 @@ bool8 sub_806B8CC(s16 _species, s32 x, s32 y, PokemonStruct2 *monPtr, Entity **a return TRUE; } -// s16 species memes ughh https://decomp.me/scratch/jcfzb -#ifdef NONMATCHING -void sub_806BB6C(Entity *entity, s16 _species) +void sub_806BB6C(Entity *entity, s32 _species) { - s32 species = _species; + s32 species = (s16) _species; s16 speciesMatch; struct unkStruct_806B7F8 spStruct; EntityInfo *entInfo = GetEntInfo(entity); DeletePokemonDungeonSprite(entInfo->unk98); + // s16 memes... + spStruct.species = 0; speciesMatch = species; + ASM_MATCH_TRICK(species); spStruct.species = speciesMatch; + spStruct.level = 0; spStruct.unk2 = 0; spStruct.pos = entity->pos; spStruct.unk4 = 0; { s16 apparentSpeciesMatch; - s32 apparentSpecies = (GetMonsterApparentID(NULL, _species)); + s32 apparentSpecies = (s16) (GetMonsterApparentID(NULL, species)); + EntityInfo *entInfo; entity->unk22 = 0; + entInfo = GetEntInfo(entity); apparentSpeciesMatch = apparentSpecies; - GetEntInfo(entity)->apparentID = (apparentSpecies); - GetEntInfo(entity)->id = speciesMatch; - entity->axObj.spriteFile = GetSpriteData(apparentSpeciesMatch); + GetEntInfo(entity)->apparentID = (s16) (apparentSpeciesMatch); + GetEntInfo(entity)->id = speciesMatch; + entity->axObj.spriteFile = GetSpriteData(apparentSpecies); } entity->axObj.unk42_animId1 = 7; @@ -1518,7 +1459,7 @@ void sub_806BB6C(Entity *entity, s16 _species) entity->axObj.unk43_animId2 = 0xFF; entity->axObj.unk45_orientation = 1; entity->axObj.unk47 = 1; - entity->unk1C = 0; + entity->unk1C = IntToF248_2(0); if (entInfo->frozenClassStatus.status == STATUS_WRAP || entInfo->frozenClassStatus.status == STATUS_WRAPPED) { sub_8076CB4(entInfo->unk9C); @@ -1531,131 +1472,6 @@ void sub_806BB6C(Entity *entity, s16 _species) sub_80429E8(entity); EntityUpdateStatusSprites(entity); } -#else -NAKED void sub_806BB6C(Entity *entity, s16 _species) -{ - asm_unified("\n" -" push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x1C\n" -" adds r7, r0, 0\n" -" lsls r4, r1, 16\n" -" asrs r4, 16\n" -" ldr r0, [r7, 0x70]\n" -" mov r9, r0\n" -" mov r8, r9\n" -" adds r0, 0x98\n" -" ldr r0, [r0]\n" -" bl DeletePokemonDungeonSprite\n" -" add r0, sp, 0x8\n" -" movs r1, 0\n" -" mov r10, r1\n" -" movs r6, 0\n" -" lsls r5, r4, 16\n" -" lsrs r5, 16\n" -" strh r5, [r0]\n" -" strh r6, [r0, 0x8]\n" -" mov r2, r10\n" -" strb r2, [r0, 0x2]\n" -" ldr r0, [r7, 0x4]\n" -" str r0, [sp, 0x14]\n" -" str r6, [sp, 0xC]\n" -" movs r0, 0\n" -" adds r1, r4, 0\n" -" bl GetMonsterApparentID\n" -" lsls r0, 16\n" -" adds r1, r7, 0\n" -" adds r1, 0x22\n" -" mov r2, r10\n" -" strb r2, [r1]\n" -" ldr r1, [r7, 0x70]\n" -" asrs r2, r0, 16\n" -" lsrs r0, 16\n" -" strh r0, [r1, 0x4]\n" -" ldr r0, [r7, 0x70]\n" -" strh r5, [r0, 0x2]\n" -" adds r0, r2, 0\n" -" bl GetSpriteData\n" -" str r0, [r7, 0x64]\n" -" adds r1, r7, 0\n" -" adds r1, 0x6A\n" -" movs r0, 0x7\n" -" strb r0, [r1]\n" -" adds r0, r7, 0\n" -" adds r0, 0x6C\n" -" mov r5, r10\n" -" strb r5, [r0]\n" -" adds r1, 0x1\n" -" movs r0, 0xFF\n" -" strb r0, [r1]\n" -" adds r1, 0x2\n" -" movs r0, 0x1\n" -" strb r0, [r1]\n" -" adds r1, 0x2\n" -" strb r0, [r1]\n" -" str r6, [r7, 0x1C]\n" -" mov r0, r9\n" -" adds r0, 0xB0\n" -" ldrb r0, [r0]\n" -" subs r0, 0x3\n" -" lsls r0, 24\n" -" lsrs r0, 24\n" -" cmp r0, 0x1\n" -" bhi _0806BC08\n" -" mov r0, r9\n" -" adds r0, 0x9C\n" -" ldr r0, [r0]\n" -" bl sub_8076CB4\n" -"_0806BC08:\n" -" movs r1, 0\n" -" mov r6, r9\n" -" ldrb r0, [r6, 0x6]\n" -" cmp r0, 0\n" -" bne _0806BC14\n" -" movs r1, 0x1\n" -"_0806BC14:\n" -" adds r0, r1, 0\n" -" adds r1, r7, 0\n" -" add r2, sp, 0x8\n" -" movs r3, 0\n" -" bl sub_806BC68\n" -" movs r0, 0x8C\n" -" lsls r0, 1\n" -" add r0, r8\n" -" mov r1, r8\n" -" adds r1, 0x10\n" -" mov r2, r8\n" -" adds r2, 0x14\n" -" mov r3, r8\n" -" adds r3, 0x16\n" -" mov r5, r8\n" -" movs r6, 0x2\n" -" ldrsh r4, [r5, r6]\n" -" str r4, [sp]\n" -" ldrb r4, [r5, 0x9]\n" -" str r4, [sp, 0x4]\n" -" bl sub_806AED8\n" -" ldrh r0, [r5, 0x10]\n" -" strh r0, [r5, 0xE]\n" -" mov r0, r10\n" -" strb r0, [r5, 0x8]\n" -" adds r0, r7, 0\n" -" bl sub_80429E8\n" -" adds r0, r7, 0\n" -" bl EntityUpdateStatusSprites\n" -" add sp, 0x1C\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0"); -} -#endif // NONMATCHING void sub_806BC68(bool8 a0, Entity *entity, struct unkStruct_806B7F8 *structPtr, DungeonPos *pos) { @@ -2140,30 +1956,30 @@ void sub_806C51C(Entity *entity) if (entInfo->unk15C != 0) { if (entInfo->unk160 == 0) { if (entInfo->unk15F != 0) { - RunAxAnimationFrame(&entity->axObj); - RunAxAnimationFrame(&entity->axObj); - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); + RunAxAnimationFrame(&entity->axObj.axdata); + RunAxAnimationFrame(&entity->axObj.axdata); } else { - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); } } } else { - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); } } } else { if (entInfo->frozenClassStatus.status != STATUS_FROZEN && entInfo->frozenClassStatus.status != STATUS_PETRIFIED) { if (gDungeon->unk644.unk28 != 0 && gDungeon->unk1BDD4.unk1C05F == 0) { - RunAxAnimationFrame(&entity->axObj); - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); + RunAxAnimationFrame(&entity->axObj.axdata); } else if ((entity->axObj.unk43_animId2 == 0 || entity->axObj.unk43_animId2 == 7) && GetEntInfo(entity)->speedStage > 1) { - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); } - RunAxAnimationFrame(&entity->axObj); + RunAxAnimationFrame(&entity->axObj.axdata); } } @@ -2275,10 +2091,10 @@ void sub_806C51C(Entity *entity) } if (entity->unk22 == 0) { - DoAxFrame_800558C(&entity->axObj, x, y, y2, overworldPal, &spriteMasks); + DoAxFrame_800558C(&entity->axObj.axdata, x, y, y2, overworldPal, &spriteMasks); } else if (entity->unk22 == 1 && (gUnknown_202EDCC & 1)) { - DoAxFrame_800558C(&entity->axObj, x, y, y2, overworldPal, &spriteMasks); + DoAxFrame_800558C(&entity->axObj.axdata, x, y, y2, overworldPal, &spriteMasks); } } diff --git a/src/code_806FDF4.c b/src/code_806FDF4.c index cfe23f002..1df01e6f7 100644 --- a/src/code_806FDF4.c +++ b/src/code_806FDF4.c @@ -329,7 +329,7 @@ bool8 sub_806F9BC(s16 species) { u8 friendArea; s32 id; - unkStruct_8092638 auStack_18; + FriendAreaCapacity auStack_18; id = species; if (((gDungeon->unk644.unk14 == 0) || (sub_808529C(id) == 0)) || @@ -359,7 +359,7 @@ bool8 sub_806F9BC(s16 species) else { if (GetUnk12(id) == 0) { friendArea = GetFriendArea(id); - sub_8092638(friendArea, &auStack_18, FALSE, FALSE); + GetFriendAreaCapacity2(friendArea, &auStack_18, FALSE, FALSE); if (auStack_18.hasFriendArea == FALSE) return FALSE; } diff --git a/src/code_8072F3C.c b/src/code_8072F3C.c index 29c6f7496..38c7c4101 100644 --- a/src/code_8072F3C.c +++ b/src/code_8072F3C.c @@ -29,8 +29,8 @@ struct unkStruct_203B314 EWRAM_INIT struct unkStruct_203B314 *gUnknown_203B314 = {NULL}; -const UnkTextStruct2 gUnknown_80E06FC = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E06FC = { + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -38,16 +38,16 @@ const UnkTextStruct2 gUnknown_80E06FC = { NULL }; -const UnkTextStruct2 gUnknown_80E0714 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E0714 = { + 0x00, 0x06, 0x02, 0x02, 0x0E, 0x0E, 0x0E, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E072C = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E072C = { + 0x00, 0x06, 0x02, 0x02, 0x10, 0x10, @@ -66,7 +66,7 @@ extern bool8 sub_802FCF0(void); s32 sub_802FBF4(void); extern u8 sub_8097384(s16); -u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3) +u32 sub_802F73C(u32 r0, DungeonPos *r1, u32 r2, u8 r3) { if (sub_802FCF0()) return 0; @@ -76,22 +76,22 @@ u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3) gUnknown_203B314->unkB8 = r3; gUnknown_203B314->sBC.s0.unk34 = r0; - gUnknown_203B314->sBC.s0.unk38 = &gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B314->sBC.s0.unk3C); + gUnknown_203B314->sBC.s0.unk38 = &gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B314->sBC.s0.windows); if (r3 != 0) - gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E072C; + gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E072C; else - gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E0714; + gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E0714; gUnknown_203B314->sBC.s0.unk38->unk14 = &gUnknown_203B314->sBC.unk9C; if (r1 != 0) - gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34].unk8 = *r1; + gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34].pos = *r1; sub_8012D08(gUnknown_203B314->sBC.s0.unk38, r2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B314->sBC.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B314->sBC.s0.input, sub_802FBF4(), r2, r0); sub_802F9C0(); sub_802FA50(); @@ -169,9 +169,9 @@ void sub_802F974(void) { if(gUnknown_203B314 != NULL) { - gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E06FC; + gUnknown_203B314->sBC.s0.windows.id[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E06FC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B314->sBC.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B314); gUnknown_203B314 = NULL; } @@ -203,7 +203,7 @@ void sub_802FA50(void) if (gUnknown_203B314->unkB8 != 0) { for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++) { - y = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter); + y = GetMenuEntryYCoord(&gUnknown_203B314->sBC.s0.input,counter); index = gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter; sVar1 = gUnknown_203B314->unk0[index]; if (gUnknown_203B314->unk5C[index] != 0) { @@ -218,7 +218,7 @@ void sub_802FA50(void) else { for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++) { - y2 = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter); + y2 = GetMenuEntryYCoord(&gUnknown_203B314->sBC.s0.input,counter); text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter]); PrintStringOnWindow(8,y2,text,gUnknown_203B314->sBC.s0.unk34,0); } diff --git a/src/code_8073CF0.c b/src/code_8073CF0.c index c425bc7a1..6a06e5be5 100644 --- a/src/code_8073CF0.c +++ b/src/code_8073CF0.c @@ -64,7 +64,6 @@ extern void sub_8075900(Entity *pokemon, u8 r1); extern void sub_806A5B8(Entity *); extern void sub_807EC28(bool8); -extern s32 gUnknown_202F378; extern u8 gUnknown_202F32D; extern const u8 *gMonTerrifiedCouldntPickUpItem; @@ -91,6 +90,8 @@ extern const DungeonPos gUnknown_80F4D44[]; bool8 UseAttack(Entity *a0); void sub_8075050(EntityInfo *info, Unk_Entity_x184 *strPtr); +static EWRAM_DATA s32 gUnknown_202F378 = 0; + void HandleEatAIAction(Entity *pokemon) { sub_8067110(pokemon); @@ -891,8 +892,8 @@ bool8 UseAttack(Entity *a0) PixelPos pos; monInfo->flags |= 0x2000; - pos.x = (monInfo->unk184[0].previousTargetMovePosition2.x * 0x1800) + 0xC00; - pos.y = (monInfo->unk184[0].previousTargetMovePosition2.y * 0x1800) + 0x1000; + pos.x = X_POS_TO_PIXELPOS(monInfo->unk184[0].previousTargetMovePosition2.x); + pos.y = Y_POS_TO_PIXELPOS(monInfo->unk184[0].previousTargetMovePosition2.y); sub_804535C(mon, &pos); sub_806CDFC(mon, 0, monInfo->unk184[0].lastMoveDirection); monInfo->notMoving = 0; @@ -928,8 +929,8 @@ bool8 UseAttack(Entity *a0) else { PixelPos pos; - pos.x = (monInfo->unk184[monInfo->notMoving].previousTargetMovePosition2.x * 0x1800) + 0xC00; - pos.y = (monInfo->unk184[monInfo->notMoving].previousTargetMovePosition2.y * 0x1800) + 0x1000; + pos.x = X_POS_TO_PIXELPOS(monInfo->unk184[monInfo->notMoving].previousTargetMovePosition2.x); + pos.y = Y_POS_TO_PIXELPOS(monInfo->unk184[monInfo->notMoving].previousTargetMovePosition2.y); sub_804535C(mon, &pos); sub_806CDFC(mon, 0, monInfo->unk184[monInfo->notMoving].lastMoveDirection); } diff --git a/src/code_807CD9C.c b/src/code_807CD9C.c index 8f4874380..1edaa4117 100644 --- a/src/code_807CD9C.c +++ b/src/code_807CD9C.c @@ -202,8 +202,8 @@ void sub_807D068(Entity *pokemon, DungeonPos *pos) int incrementX; int incrementY; - posX = pos->x * 0x1800 + 0xc00; - posY = pos->y * 0x1800 + 0x1000; + posX = X_POS_TO_PIXELPOS(pos->x); + posY = Y_POS_TO_PIXELPOS(pos->y); diff = (pokemon->pixelPos).x - posX; if (diff < 0) { diff = -diff; diff --git a/src/code_807E5AC.c b/src/code_807E5AC.c index dca37458b..d3fd624f9 100644 --- a/src/code_807E5AC.c +++ b/src/code_807E5AC.c @@ -22,9 +22,14 @@ #include "dungeon_ai.h" #include "code_806CD90.h" #include "code_807CD9C.h" +#include "dungeon_random.h" #include "code_805D8C8.h" +#include "code_803E668.h" #include "code_8045A00.h" +#include "move_util.h" +#include "moves.h" #include "code_80450F8.h" +#include "math.h" #include "constants/ability.h" #include "constants/monster.h" #include "constants/type.h" @@ -615,766 +620,201 @@ void sub_807F33C(void) extern void sub_80833E8(DungeonPos *param_1, s32 *param_2); extern void sub_806A5B8(Entity *); +extern bool8 sub_8045888(Entity *ent); +extern void sub_806F370(Entity *pokemon, Entity *target, u32, u32, u8 *, u8 moveType, s32, u32, u32, u32); +extern void sub_807D068(Entity *, DungeonPos *); +extern void sub_80694C0(Entity *target,s32 x,int y,char param_4); void sub_807F9BC(Entity *entity); -/* +extern const u8 *const gUnknown_80FCB40; +extern const u8 *const gUnknown_80FCB70; +extern const u8 *const gUnknown_80FE6B4; +extern const u8 *const gUnknown_80FE690; + void sub_807F43C(Entity *target, Entity *attacker) { + s32 attackerDirection; + s32 var_3C; + DungeonPos attackerPos; + s32 pixelPosX, pixelPosY; + PixelPos var_54; + s32 var_30, r10; + s32 r6; + s32 newDir; + s32 i, directionId; + Entity *tileEntity; + s32 var_2C; + DungeonPos positions[40]; + s32 var_74[4]; + s32 positionsCounter; + if (AbilityIsActive(attacker, ABILITY_SUCTION_CUPS)) { SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], attacker, 0); - TryDisplayDungeonLoggableMessage3(attacker, target, gUnknown_80FCB40); // is anchored, cannot be moved + TryDisplayDungeonLoggableMessage3(target, attacker, gUnknown_80FCB40); // is anchored, cannot be moved + return; } - else if (attacker == target) { + if (target == attacker) { SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], attacker, 0); - TryDisplayDungeonLoggableMessage3(attacker, attacker, gUnknown_80FCB70); // couldn't be thrown for some reason + TryDisplayDungeonLoggableMessage3(target, attacker, gUnknown_80FCB70); // couldn't be thrown for some reason + return; } - else { - s32 var_74[4]; - DungeonPos positions[40]; - DungeonPos attackerPos = attacker->pos; - s32 var_3C = 0; - s32 monId; - while (1) { - s32 positionsCounter = 0; - for (monId = 0; monId < DUNGEON_MAX_POKEMON; monId++) { - Entity *mon = gDungeon->activePokemon[monId]; - if (EntityIsValid(mon) && target != mon && attacker != mon && CanSeeTarget(target, mon)) { - if (var_3C == 0) { - if (GetTreatmentBetweenMonsters(target, mon, FALSE, TRUE) != 1) - continue; - } - else { - if (GetTreatmentBetweenMonsters(target, mon, FALSE, TRUE) != 0) - continue; + attackerPos = attacker->pos; + for (var_3C = 0; var_3C < 2; var_3C++) { + positionsCounter = 0; + for (i = 0; i < DUNGEON_MAX_POKEMON; i++) { + Entity *mon = gDungeon->activePokemon[i]; + if (EntityIsValid(mon) && target != mon && attacker != mon && CanSeeTarget(target, mon)) { + if (var_3C == 0) { + if (GetTreatmentBetweenMonsters(target, mon, FALSE, TRUE) != 1) + continue; + } + else { + if (GetTreatmentBetweenMonsters(target, mon, FALSE, TRUE) != 0) + continue; + } + + if (var_3C == 0) { + DungeonPos pos; + for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { + pos.x = gAdjacentTileOffsets[directionId].x + mon->pos.x; + pos.y = gAdjacentTileOffsets[directionId].y + mon->pos.y; + if (!sub_80703A0(attacker, &pos)) + break; } - if (var_3C != 0) { - s32 directionId; - DungeonPos pos; - for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { - pos.x = mon->pos.x + gAdjacentTileOffsets[directionId].x; - pos.y = mon->pos.y + gAdjacentTileOffsets[directionId].y; - if (!sub_80703A0(attacker, &pos)) - break; - } - - if (directionId == NUM_DIRECTIONS) - break; - if (positionsCounter > 39) - break; + if (directionId != NUM_DIRECTIONS && positionsCounter < 40) { positions[positionsCounter++] = mon->pos; } - else { - s32 directionId; - DungeonPos pos; - for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { - pos.x = mon->pos.x + gAdjacentTileOffsets[directionId].x; - pos.y = mon->pos.y + gAdjacentTileOffsets[directionId].y; - if (!sub_80703A0(attacker, &pos) && positionsCounter < 40) { - positions[positionsCounter++] = mon->pos; - } + } + else { + DungeonPos pos; + for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { + pos.x = gAdjacentTileOffsets[directionId].x + mon->pos.x; + pos.y = gAdjacentTileOffsets[directionId].y + mon->pos.y; + if (!sub_80703A0(attacker, &pos) && positionsCounter < 40) { + positions[positionsCounter++] = pos; } } } } - - if (positionsCounter == 0) { - if (++var_3C < 2) - continue; - sub_80833E8(&target->pos, var_74); - } - else { - - } - break; } + if (positionsCounter != 0) + break; } -} -*/ -NAKED void sub_807F43C(Entity *target, Entity *attacker) -{ - asm_unified("push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x10C\n" -" str r0, [sp, 0xEC]\n" -" mov r8, r1\n" -" mov r0, r8\n" -" movs r1, 0xE\n" -" bl AbilityIsActive\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F470\n" -" ldr r0, _0807F468\n" -" mov r1, r8\n" -" movs r2, 0\n" -" bl SubstitutePlaceholderStringTags\n" -" ldr r0, _0807F46C\n" -" b _0807F694\n" -" .align 2, 0\n" -"_0807F468: .4byte gFormatBuffer_Monsters\n" -"_0807F46C: .4byte gUnknown_80FCB40\n" -"_0807F470:\n" -" ldr r0, [sp, 0xEC]\n" -" cmp r0, r8\n" -" bne _0807F490\n" -" ldr r0, _0807F488\n" -" mov r1, r8\n" -" movs r2, 0\n" -" bl SubstitutePlaceholderStringTags\n" -" ldr r0, _0807F48C\n" -" ldr r2, [r0]\n" -" mov r0, r8\n" -" b _0807F698\n" -" .align 2, 0\n" -"_0807F488: .4byte gFormatBuffer_Monsters\n" -"_0807F48C: .4byte gUnknown_80FCB70\n" -"_0807F490:\n" -" mov r1, r8\n" -" ldr r0, [r1, 0x4]\n" -" add r1, sp, 0xD4\n" -" str r0, [r1]\n" -" movs r2, 0\n" -" str r2, [sp, 0xF0]\n" -"_0807F49C:\n" -" movs r3, 0\n" -" mov r9, r3\n" -" movs r7, 0\n" -" mov r4, sp\n" -" adds r4, 0x18\n" -" str r4, [sp, 0x108]\n" -"_0807F4A8:\n" -" ldr r0, _0807F504\n" -" ldr r0, [r0]\n" -" lsls r1, r7, 2\n" -" ldr r2, _0807F508\n" -" adds r0, r2\n" -" adds r0, r1\n" -" ldr r4, [r0]\n" -" adds r0, r4, 0\n" -" bl EntityIsValid\n" -" lsls r0, 24\n" -" adds r3, r7, 0x1\n" -" str r3, [sp, 0x104]\n" -" cmp r0, 0\n" -" bne _0807F4C8\n" -" b _0807F602\n" -"_0807F4C8:\n" -" ldr r0, [sp, 0xEC]\n" -" cmp r0, r4\n" -" bne _0807F4D0\n" -" b _0807F602\n" -"_0807F4D0:\n" -" cmp r8, r4\n" -" bne _0807F4D6\n" -" b _0807F602\n" -"_0807F4D6:\n" -" adds r1, r4, 0\n" -" bl CanSeeTarget\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _0807F4E4\n" -" b _0807F602\n" -"_0807F4E4:\n" -" ldr r1, [sp, 0xF0]\n" -" cmp r1, 0\n" -" bne _0807F50C\n" -" ldr r0, [sp, 0xEC]\n" -" adds r1, r4, 0\n" -" movs r2, 0\n" -" movs r3, 0x1\n" -" bl GetTreatmentBetweenMonsters\n" -" lsls r0, 24\n" -" lsrs r0, 24\n" -" cmp r0, 0x1\n" -" beq _0807F500\n" -" b _0807F602\n" -"_0807F500:\n" -" b _0807F51E\n" -" .align 2, 0\n" -"_0807F504: .4byte gDungeon\n" -"_0807F508: .4byte 0x000135cc\n" -"_0807F50C:\n" -" ldr r0, [sp, 0xEC]\n" -" adds r1, r4, 0\n" -" movs r2, 0\n" -" movs r3, 0x1\n" -" bl GetTreatmentBetweenMonsters\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _0807F602\n" -"_0807F51E:\n" -" ldr r2, [sp, 0xF0]\n" -" cmp r2, 0\n" -" bne _0807F594\n" -" movs r5, 0\n" -" add r6, sp, 0xC8\n" -" adds r3, r7, 0x1\n" -" str r3, [sp, 0x104]\n" -" adds r7, r6, 0\n" -" ldr r0, _0807F588\n" -" mov r10, r0\n" -"_0807F532:\n" -" ldr r0, _0807F58C\n" -" lsls r3, r5, 2\n" -" adds r3, r0\n" -" ldrh r0, [r4, 0x4]\n" -" ldrh r1, [r3]\n" -" adds r0, r1\n" -" lsls r0, 16\n" -" lsrs r0, 16\n" -" ldr r1, [r6]\n" -" mov r2, r10\n" -" ands r1, r2\n" -" orrs r1, r0\n" -" str r1, [r7]\n" -" ldrh r2, [r4, 0x6]\n" -" ldrh r3, [r3, 0x2]\n" -" adds r2, r3\n" -" lsls r2, 16\n" -" ldr r0, _0807F590\n" -" ands r1, r0\n" -" orrs r1, r2\n" -" str r1, [r7]\n" -" mov r0, r8\n" -" add r1, sp, 0xC8\n" -" bl sub_80703A0\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F570\n" -" adds r5, 0x1\n" -" cmp r5, 0x7\n" -" ble _0807F532\n" -"_0807F570:\n" -" cmp r5, 0x8\n" -" beq _0807F602\n" -" mov r3, r9\n" -" cmp r3, 0x27\n" -" bgt _0807F602\n" -" ldr r0, [r4, 0x4]\n" -" ldr r4, [sp, 0x108]\n" -" stm r4!, {r0}\n" -" str r4, [sp, 0x108]\n" -" movs r0, 0x1\n" -" add r9, r0\n" -" b _0807F602\n" -" .align 2, 0\n" -"_0807F588: .4byte 0xffff0000\n" -"_0807F58C: .4byte gAdjacentTileOffsets\n" -"_0807F590: .4byte 0x0000ffff\n" -"_0807F594:\n" -" movs r5, 0\n" -" add r6, sp, 0xCC\n" -" adds r1, r7, 0x1\n" -" str r1, [sp, 0x104]\n" -" adds r7, r6, 0\n" -" mov r2, r9\n" -" lsls r0, r2, 2\n" -" add r0, sp\n" -" adds r0, 0x18\n" -" mov r10, r0\n" -"_0807F5A8:\n" -" ldr r0, _0807F630\n" -" lsls r3, r5, 2\n" -" adds r3, r0\n" -" ldrh r0, [r4, 0x4]\n" -" ldrh r1, [r3]\n" -" adds r0, r1\n" -" lsls r0, 16\n" -" lsrs r0, 16\n" -" ldr r2, _0807F634\n" -" ldr r1, [r6]\n" -" ands r1, r2\n" -" orrs r1, r0\n" -" str r1, [r7]\n" -" ldrh r2, [r4, 0x6]\n" -" ldrh r3, [r3, 0x2]\n" -" adds r2, r3\n" -" lsls r2, 16\n" -" ldr r0, _0807F638\n" -" ands r1, r0\n" -" orrs r1, r2\n" -" str r1, [r7]\n" -" mov r0, r8\n" -" add r1, sp, 0xCC\n" -" bl sub_80703A0\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _0807F5FC\n" -" mov r2, r9\n" -" cmp r2, 0x27\n" -" bgt _0807F5FC\n" -" ldr r0, [r6]\n" -" mov r3, r10\n" -" adds r3, 0x4\n" -" mov r10, r3\n" -" subs r3, 0x4\n" -" stm r3!, {r0}\n" -" ldr r0, [sp, 0x108]\n" -" adds r0, 0x4\n" -" str r0, [sp, 0x108]\n" -" movs r1, 0x1\n" -" add r9, r1\n" -"_0807F5FC:\n" -" adds r5, 0x1\n" -" cmp r5, 0x7\n" -" ble _0807F5A8\n" -"_0807F602:\n" -" ldr r7, [sp, 0x104]\n" -" cmp r7, 0x13\n" -" bgt _0807F60A\n" -" b _0807F4A8\n" -"_0807F60A:\n" -" mov r2, r9\n" -" cmp r2, 0\n" -" bne _0807F63C\n" -" ldr r3, [sp, 0xF0]\n" -" adds r3, 0x1\n" -" str r3, [sp, 0xF0]\n" -" cmp r3, 0x1\n" -" bgt _0807F61C\n" -" b _0807F49C\n" -"_0807F61C:\n" -" ldr r0, [sp, 0xEC]\n" -" adds r0, 0x4\n" -" add r4, sp, 0xB8\n" -" adds r1, r4, 0\n" -" bl sub_80833E8\n" -" movs r7, 0\n" -" add r5, sp, 0xD0\n" -" adds r6, r5, 0\n" -" b _0807F654\n" -" .align 2, 0\n" -"_0807F630: .4byte gAdjacentTileOffsets\n" -"_0807F634: .4byte 0xffff0000\n" -"_0807F638: .4byte 0x0000ffff\n" -"_0807F63C:\n" -" mov r0, r9\n" -" bl DungeonRandInt\n" -" lsls r0, 2\n" -" add r0, sp\n" -" adds r0, 0x18\n" -" ldr r0, [r0]\n" -" str r0, [sp, 0xD4]\n" -" b _0807F6A8\n" -"_0807F64E:\n" -" ldr r0, [r5]\n" -" str r0, [sp, 0xD4]\n" -" b _0807F68E\n" -"_0807F654:\n" -" ldr r0, [r4]\n" -" ldr r1, [r4, 0x8]\n" -" bl DungeonRandRange\n" -" lsls r0, 16\n" -" lsrs r0, 16\n" -" ldr r2, _0807F6A0\n" -" ldr r1, [r5]\n" -" ands r1, r2\n" -" orrs r1, r0\n" -" str r1, [r6]\n" -" ldr r0, [r4, 0x4]\n" -" ldr r1, [r4, 0xC]\n" -" bl DungeonRandRange\n" -" lsls r0, 16\n" -" ldrh r1, [r6]\n" -" orrs r1, r0\n" -" str r1, [r6]\n" -" mov r0, r8\n" -" add r1, sp, 0xD0\n" -" bl sub_80703A0\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F64E\n" -" adds r7, 0x1\n" -" cmp r7, 0x63\n" -" ble _0807F654\n" -"_0807F68E:\n" -" cmp r7, 0x64\n" -" bne _0807F6A8\n" -" ldr r0, _0807F6A4\n" -"_0807F694:\n" -" ldr r2, [r0]\n" -" ldr r0, [sp, 0xEC]\n" -"_0807F698:\n" -" mov r1, r8\n" -" bl TryDisplayDungeonLoggableMessage3\n" -" b _0807F99C\n" -" .align 2, 0\n" -"_0807F6A0: .4byte 0xffff0000\n" -"_0807F6A4: .4byte gUnknown_80FE6B4\n" -"_0807F6A8:\n" -" ldr r0, _0807F860\n" -" mov r1, r8\n" -" movs r2, 0\n" -" bl SubstitutePlaceholderStringTags\n" -" ldr r0, _0807F864\n" -" ldr r2, [r0]\n" -" ldr r0, [sp, 0xEC]\n" -" mov r1, r8\n" -" bl TryDisplayDungeonLoggableMessage3\n" -" mov r0, r8\n" -" bl sub_8045888\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F6D0\n" -" ldr r0, _0807F868\n" -" bl PlaySoundEffect\n" -"_0807F6D0:\n" -" movs r4, 0\n" -" str r4, [sp, 0x100]\n" -" mov r1, r8\n" -" ldr r0, [r1, 0x70]\n" -" adds r0, 0x46\n" -" ldrb r0, [r0]\n" -" mov r9, r0\n" -" add r2, sp, 0xD4\n" -" movs r3, 0\n" -" ldrsh r1, [r2, r3]\n" -" mov r4, r8\n" -" movs r3, 0x4\n" -" ldrsh r0, [r4, r3]\n" -" subs r3, r1, r0\n" -" movs r4, 0x2\n" -" ldrsh r1, [r2, r4]\n" -" mov r2, r8\n" -" movs r4, 0x6\n" -" ldrsh r0, [r2, r4]\n" -" subs r1, r0\n" -" cmp r1, r3\n" -" bge _0807F6FE\n" -" adds r1, r3, 0\n" -"_0807F6FE:\n" -" lsls r6, r1, 4\n" -" cmp r6, 0x50\n" -" ble _0807F706\n" -" movs r6, 0x50\n" -"_0807F706:\n" -" cmp r6, 0x9\n" -" bgt _0807F70C\n" -" movs r6, 0xA\n" -"_0807F70C:\n" -" mov r1, r8\n" -" adds r1, 0x4\n" -" add r0, sp, 0xD4\n" -" bl GetDirectionTowardsPosition\n" -" adds r5, r0, 0\n" -" add r2, sp, 0xD4\n" -" movs r1, 0\n" -" ldrsh r0, [r2, r1]\n" -" lsls r4, r0, 1\n" -" adds r4, r0\n" -" lsls r4, 11\n" -" movs r3, 0xC0\n" -" lsls r3, 4\n" -" adds r4, r3\n" -" ldr r0, _0807F86C\n" -" lsls r5, 2\n" -" adds r5, r0\n" -" movs r1, 0\n" -" ldrsh r0, [r5, r1]\n" -" lsls r0, 8\n" -" movs r1, 0x3\n" -" bl __divsi3\n" -" adds r4, r0\n" -" str r4, [sp, 0xF4]\n" -" movs r3, 0xD6\n" -" add r3, sp\n" -" movs r2, 0\n" -" ldrsh r0, [r3, r2]\n" -" lsls r4, r0, 1\n" -" adds r4, r0\n" -" lsls r4, 11\n" -" movs r0, 0x80\n" -" lsls r0, 5\n" -" adds r4, r0\n" -" movs r1, 0x2\n" -" ldrsh r0, [r5, r1]\n" -" lsls r0, 8\n" -" movs r1, 0x3\n" -" bl __divsi3\n" -" adds r4, r0\n" -" str r4, [sp, 0xF8]\n" -" mov r2, r8\n" -" ldr r5, [r2, 0xC]\n" -" ldr r3, [sp, 0xF4]\n" -" subs r0, r3, r5\n" -" adds r1, r6, 0\n" -" bl __divsi3\n" -" str r0, [sp, 0xFC]\n" -" mov r0, r8\n" -" ldr r4, [r0, 0x10]\n" -" ldr r1, [sp, 0xF8]\n" -" subs r0, r1, r4\n" -" adds r1, r6, 0\n" -" bl __divsi3\n" -" mov r10, r0\n" -" add r0, sp, 0xD8\n" -" str r5, [r0]\n" -" str r4, [r0, 0x4]\n" -" movs r7, 0\n" -" adds r5, r0, 0\n" -" cmp r7, r6\n" -" bge _0807F7FC\n" -" adds r4, r5, 0\n" -"_0807F794:\n" -" ldr r0, [r5]\n" -" ldr r2, [sp, 0xFC]\n" -" adds r0, r2, r0\n" -" str r0, [r4]\n" -" ldr r0, [r4, 0x4]\n" -" add r0, r10\n" -" str r0, [r4, 0x4]\n" -" mov r0, r8\n" -" adds r1, r4, 0\n" -" bl sub_804535C\n" -" mov r0, r8\n" -" bl sub_8045888\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F7E6\n" -" ldr r0, [sp, 0x100]\n" -" bl sin_4096\n" -" lsls r0, 5\n" -" mov r3, r8\n" -" str r0, [r3, 0x1C]\n" -" movs r0, 0x3B\n" -" bl sub_803E46C\n" -" movs r0, 0x3\n" -" ands r0, r7\n" -" cmp r0, 0\n" -" bne _0807F7E6\n" -" movs r0, 0x7\n" -" mov r1, r9\n" -" ands r1, r0\n" -" mov r9, r1\n" -" mov r0, r8\n" -" movs r1, 0x6\n" -" mov r2, r9\n" -" bl sub_806CDD4\n" -" movs r2, 0x1\n" -" add r9, r2\n" -"_0807F7E6:\n" -" movs r0, 0x80\n" -" lsls r0, 4\n" -" adds r1, r6, 0\n" -" bl __divsi3\n" -" ldr r3, [sp, 0x100]\n" -" adds r3, r0\n" -" str r3, [sp, 0x100]\n" -" adds r7, 0x1\n" -" cmp r7, r6\n" -" blt _0807F794\n" -"_0807F7FC:\n" -" ldr r4, [sp, 0xF4]\n" -" str r4, [r5]\n" -" add r1, sp, 0xD8\n" -" ldr r0, [sp, 0xF8]\n" -" str r0, [r1, 0x4]\n" -" movs r0, 0\n" -" mov r2, r8\n" -" str r0, [r2, 0x1C]\n" -" mov r0, r8\n" -" bl sub_804535C\n" -" movs r0, 0x3B\n" -" bl sub_803E46C\n" -" mov r3, r8\n" -" ldr r0, [r3, 0x70]\n" -" movs r1, 0x7\n" -" mov r4, r9\n" -" ands r4, r1\n" -" adds r0, 0x46\n" -" strb r4, [r0]\n" -" add r2, sp, 0xD4\n" -" movs r1, 0\n" -" ldrsh r0, [r2, r1]\n" -" adds r4, r2, 0\n" -" movs r3, 0x2\n" -" ldrsh r1, [r4, r3]\n" -" bl GetTile\n" -" ldr r6, [r0, 0x10]\n" -" adds r0, r6, 0\n" -" bl EntityIsValid\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _0807F876\n" -" add r2, sp, 0xD4\n" -" movs r0, 0\n" -" ldrsh r1, [r2, r0]\n" -" movs r3, 0x2\n" -" ldrsh r2, [r4, r3]\n" -" mov r0, r8\n" -" movs r3, 0x1\n" -" bl sub_80694C0\n" -" mov r0, r8\n" -" bl sub_807F9BC\n" -" b _0807F99C\n" -" .align 2, 0\n" -"_0807F860: .4byte gFormatBuffer_Monsters\n" -"_0807F864: .4byte gUnknown_80FE690\n" -"_0807F868: .4byte 0x000001a3\n" -"_0807F86C: .4byte gAdjacentTileOffsets\n" -"_0807F870:\n" -" ldr r0, [r7]\n" -" str r0, [sp, 0xD4]\n" -" b _0807F8BE\n" -"_0807F876:\n" -" movs r5, 0\n" -" add r4, sp, 0xE0\n" -" adds r7, r4, 0\n" -"_0807F87C:\n" -" ldr r0, _0807F8D0\n" -" lsls r3, r5, 2\n" -" adds r3, r0\n" -" add r1, sp, 0xD4\n" -" ldrh r0, [r1]\n" -" ldrh r2, [r3]\n" -" adds r0, r2\n" -" lsls r0, 16\n" -" lsrs r0, 16\n" -" ldr r2, _0807F8D4\n" -" ldr r1, [r7]\n" -" ands r1, r2\n" -" orrs r1, r0\n" -" str r1, [r4]\n" -" add r0, sp, 0xD4\n" -" ldrh r2, [r0, 0x2]\n" -" ldrh r3, [r3, 0x2]\n" -" adds r2, r3\n" -" lsls r2, 16\n" -" ldr r0, _0807F8D8\n" -" ands r1, r0\n" -" orrs r1, r2\n" -" str r1, [r4]\n" -" mov r0, r8\n" -" add r1, sp, 0xE0\n" -" bl sub_80703A0\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F870\n" -" adds r5, 0x1\n" -" cmp r5, 0x7\n" -" ble _0807F87C\n" -"_0807F8BE:\n" -" cmp r5, 0x8\n" -" bne _0807F8DC\n" -" ldr r0, [sp, 0xEC]\n" -" mov r1, r8\n" -" movs r2, 0\n" -" movs r3, 0\n" -" bl WarpTarget\n" -" b _0807F8FA\n" -" .align 2, 0\n" -"_0807F8D0: .4byte gAdjacentTileOffsets\n" -"_0807F8D4: .4byte 0xffff0000\n" -"_0807F8D8: .4byte 0x0000ffff\n" -"_0807F8DC:\n" -" mov r0, r8\n" -" add r1, sp, 0xD4\n" -" bl sub_807D068\n" -" add r0, sp, 0xD4\n" -" movs r3, 0\n" -" ldrsh r1, [r0, r3]\n" -" movs r0, 0xD6\n" -" add r0, sp\n" -" movs r4, 0\n" -" ldrsh r2, [r0, r4]\n" -" mov r0, r8\n" -" movs r3, 0x1\n" -" bl sub_80694C0\n" -"_0807F8FA:\n" -" adds r0, r6, 0\n" -" bl GetEntityType\n" -" cmp r0, 0x1\n" -" bne _0807F954\n" -" add r4, sp, 0xE4\n" -" ldr r1, _0807F9AC\n" -" adds r0, r4, 0\n" -" bl InitPokemonMove\n" -" adds r0, r6, 0\n" -" adds r1, r4, 0\n" -" bl sub_80571F0\n" -" lsls r0, 24\n" -" lsrs r1, r0, 24\n" -" cmp r1, 0\n" -" bne _0807F93C\n" -" ldr r0, _0807F9B0\n" -" movs r3, 0\n" -" ldrsh r2, [r0, r3]\n" -" str r1, [sp]\n" -" str r1, [sp, 0x4]\n" -" ldr r0, _0807F9B4\n" -" str r0, [sp, 0x8]\n" -" str r1, [sp, 0xC]\n" -" str r1, [sp, 0x10]\n" -" str r1, [sp, 0x14]\n" -" ldr r0, [sp, 0xEC]\n" -" adds r1, r6, 0\n" -" movs r3, 0\n" -" bl sub_806F370\n" -"_0807F93C:\n" -" adds r0, r6, 0\n" -" bl EntityIsValid\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F954\n" -" ldr r0, [r6, 0x70]\n" -" adds r0, 0x46\n" -" ldrb r1, [r0]\n" -" adds r0, r6, 0\n" -" bl sub_806CE68\n" -"_0807F954:\n" -" ldr r0, _0807F9B0\n" -" movs r4, 0\n" -" ldrsh r2, [r0, r4]\n" -" movs r1, 0\n" -" str r1, [sp]\n" -" str r1, [sp, 0x4]\n" -" ldr r0, _0807F9B8\n" -" str r0, [sp, 0x8]\n" -" str r1, [sp, 0xC]\n" -" str r1, [sp, 0x10]\n" -" str r1, [sp, 0x14]\n" -" ldr r0, [sp, 0xEC]\n" -" mov r1, r8\n" -" movs r3, 0\n" -" bl sub_806F370\n" -" mov r0, r8\n" -" bl EntityIsValid\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0807F98E\n" -" mov r1, r8\n" -" ldr r0, [r1, 0x70]\n" -" adds r0, 0x46\n" -" ldrb r1, [r0]\n" -" mov r0, r8\n" -" bl sub_806CE68\n" -"_0807F98E:\n" -" movs r0, 0x1E\n" -" movs r1, 0x3B\n" -" bl sub_803E708\n" -" mov r0, r8\n" -" bl sub_807F9BC\n" -"_0807F99C:\n" -" add sp, 0x10C\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0807F9AC: .4byte 0x00000163\n" -"_0807F9B0: .4byte gHurlOrbDmgValue\n" -"_0807F9B4: .4byte 0x0000021a\n" -"_0807F9B8: .4byte 0x00000219"); + if (positionsCounter != 0) { + s32 rnd = DungeonRandInt(positionsCounter); + attackerPos = positions[rnd]; + } + else { + sub_80833E8(&target->pos, var_74); + for (i = 0; i < 100; i++) { + DungeonPos pos; + pos.x = DungeonRandRange(var_74[0], var_74[2]); + pos.y = DungeonRandRange(var_74[1], var_74[3]); + if (!sub_80703A0(attacker, &pos)) { + attackerPos = pos; + break; + } + } + if (i == 100) { + TryDisplayDungeonLoggableMessage3(target, attacker, gUnknown_80FE6B4); // But it didn~27t go anywhere. + return; + } + } + + SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], attacker, 0); + TryDisplayDungeonLoggableMessage3(target, attacker, gUnknown_80FE690); // m0 was sent flying! + if (sub_8045888(attacker)) { + PlaySoundEffect(0x1A3); + } + + var_2C = 0; + attackerDirection = GetEntInfo(attacker)->action.direction; + r6 = max(attackerPos.x - attacker->pos.x, attackerPos.y - attacker->pos.y) << 4; + if (r6 > 80) + r6 = 80; + if (r6 < 10) + r6 = 10; + + newDir = GetDirectionTowardsPosition(&attackerPos, &attacker->pos); + + pixelPosX = X_POS_TO_PIXELPOS(attackerPos.x) + ((gAdjacentTileOffsets[newDir].x << 8) / 3); + pixelPosY = Y_POS_TO_PIXELPOS(attackerPos.y) + ((gAdjacentTileOffsets[newDir].y << 8) / 3); + + var_30 = (pixelPosX - attacker->pixelPos.x) / r6; + r10 = (pixelPosY - attacker->pixelPos.y) / r6; + var_54.x = attacker->pixelPos.x; + var_54.y = attacker->pixelPos.y; + for (i = 0; i < r6; i++) { + var_54.x += var_30; + var_54.y += r10; + sub_804535C(attacker, &var_54); + if (sub_8045888(attacker)) { + attacker->unk1C.raw = sin_4096(var_2C) << 5; + sub_803E46C(0x3B); + if (!(i & 3)) { + attackerDirection &= DIRECTION_MASK; + sub_806CDD4(attacker, 6, attackerDirection); + attackerDirection++; + } + } + var_2C += (0x800 / r6); + } + + var_54.x = pixelPosX; + var_54.y = pixelPosY; + attacker->unk1C.raw = 0; + sub_804535C(attacker, &var_54); + sub_803E46C(0x3B); + GetEntInfo(attacker)->action.direction = attackerDirection & DIRECTION_MASK; + + tileEntity = GetTile(attackerPos.x, attackerPos.y)->monster; + if (!EntityIsValid(tileEntity)) { + sub_80694C0(attacker, attackerPos.x, attackerPos.y, 1); + sub_807F9BC(attacker); + } + else { + for (directionId = 0; directionId < NUM_DIRECTIONS; directionId++) { + DungeonPos pos; + + pos.x = gAdjacentTileOffsets[directionId].x + attackerPos.x; + pos.y = gAdjacentTileOffsets[directionId].y + attackerPos.y; + if (!sub_80703A0(attacker, &pos)) { + attackerPos = pos; + break; + } + } + if (directionId == NUM_DIRECTIONS) { + WarpTarget(target, attacker, 0, NULL); + } + else { + sub_807D068(attacker, &attackerPos); + sub_80694C0(attacker, attackerPos.x, attackerPos.y, 1); + } + + if (GetEntityType(tileEntity) == ENTITY_MONSTER) { + Move move; + + InitPokemonMove(&move, MOVE_REGULAR_ATTACK); + if (!sub_80571F0(tileEntity, &move)) { + sub_806F370(target, tileEntity, gHurlOrbDmgValue, FALSE, NULL, TYPE_NONE, 0x21A, 0, 0, 0); + } + if (EntityIsValid(tileEntity)) { + sub_806CE68(tileEntity, GetEntInfo(tileEntity)->action.direction); + } + } + + sub_806F370(target, attacker, gHurlOrbDmgValue, FALSE, NULL, TYPE_NONE, 0x219, 0, 0, 0); + if (EntityIsValid(attacker)) { + sub_806CE68(attacker, GetEntInfo(attacker)->action.direction); + } + sub_803E708(0x1E, 0x3B); + sub_807F9BC(attacker); + } } void sub_807F9BC(Entity *entity) diff --git a/src/code_80861A8.c b/src/code_80861A8.c index d360926f4..69fc275d7 100644 --- a/src/code_80861A8.c +++ b/src/code_80861A8.c @@ -23,7 +23,7 @@ void sub_800EF64(); void sub_803E46C(s32); s32 sub_800E700(s32); void sub_800569C(DungeonPos *, axdata *, u8); -void sub_8085F44(void); +void sub_8085F44(s32); void sub_8052FB8(const u8 *); @@ -74,50 +74,46 @@ void sub_80861EC(Entity *a0) GetEntInfo(a0)->unkFE = 0x63; } -s32 sub_80861F8(s16 param_1,Entity *param_2,bool32 param_3) +s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3) { - EntityInfo *info; - s32 uVar2; - s32 uStack_38; - DungeonPos pos; - unkStruct_80416E0 stack; - unkStruct_2039DB0 stack1C; + EntityInfo *info; + s32 uVar2; + s32 uStack_38; + DungeonPos pos; + unkStruct_80416E0 stack; + unkStruct_2039DB0 stack1C; -#ifdef NONMATCHING - s32 param_1_s32 = param_1; -#else - register s32 param_1_s32 asm("r5") = param_1; -#endif + // Needed to match. + s32 param_1Copy2 = (s16) param_1; + s32 param_1Copy = param_1Copy2; + u8 param_3_bool32 = param_3; - u8 param_3_bool32 = param_3; + sub_800EE5C(param_1Copy2); + sub_800EF64(); + sub_803E46C(0x46); + info = GetEntInfo(param_2); + pos.x = 0; + pos.y = 0; + uStack_38 = sub_800E700(param_1Copy); + if (uStack_38 != -1) { + sub_800569C(&pos,¶m_2->axObj.axdata,uStack_38); + } + stack.unk0 = param_1Copy; + stack.unk4 = 0; + stack.dir = info->action.direction; + stack.x = (param_2->pixelPos).x / 256; + stack.y = (param_2->pixelPos).y / 256; - sub_800EE5C(param_1); - sub_800EF64(); - sub_803E46C(0x46); - info = GetEntInfo(param_2); - pos.x = 0; - pos.y = 0; - uStack_38 = sub_800E700(param_1_s32); - if (uStack_38 != -1) { - sub_800569C(&pos,¶m_2->axObj.axdata, - uStack_38); - } - stack.unk0 = param_1_s32; - stack.unk4 = 0; - stack.dir = (u32)(info->action).direction; - stack.x = (param_2->pixelPos).x / 256; - stack.y = (param_2->pixelPos).y / 256; + stack.unk10 = pos.x; + stack.unk12 = pos.y; + stack.unk14 = uStack_38; + stack.unk18 = 0xffff; + stack1C = gUnknown_8107380; - stack.unk10 = pos.x; - stack.unk12 = pos.y; - stack.unk14 = uStack_38; - stack.unk18 = 0xffff; - stack1C = gUnknown_8107380; - - uVar2 = sub_800E890(&stack); - if (param_3_bool32 != '\0') { - sub_8085F44(); - uVar2 = -1; - } - return uVar2; + uVar2 = sub_800E890(&stack); + if (param_3_bool32) { + sub_8085F44(uVar2); + uVar2 = -1; + } + return uVar2; } diff --git a/src/code_80869E4.c b/src/code_80869E4.c index 33f398c27..80578f4d5 100644 --- a/src/code_80869E4.c +++ b/src/code_80869E4.c @@ -15,7 +15,7 @@ // ??? extern u32 gDungeonBrightness; -EWRAM_DATA unkStruct_202F3D0 gUnknown_202F3D0 = {0}; +EWRAM_DATA static unkStruct_202F3D0 gUnknown_202F3D0 = {0}; // data_8107010.s extern u32 gUnknown_8107314[]; diff --git a/src/code_8099360.c b/src/code_8099360.c index 1c4a1dae9..933cb1d60 100644 --- a/src/code_8099360.c +++ b/src/code_8099360.c @@ -88,7 +88,7 @@ UNUSED static NAKED void sub_80993F0(void) " movs r0, 0\n" " movs r1, 0x1\n" " movs r2, 0x1\n" -" bl xxx_call_save_unk_text_struct_800641C\n" +" bl ShowWindows\n" " movs r0, 0\n" " movs r1, 0x14\n" " bl sub_8009408\n" @@ -149,7 +149,7 @@ UNUSED static NAKED void sub_80993F0(void) " movs r0, 0\n" " movs r1, 0x1\n" " movs r2, 0x1\n" -" bl xxx_call_save_unk_text_struct_800641C\n" +" bl ShowWindows\n" " bl GroundMap_Reset\n" " bl sub_809D0BC\n" " mov r0, r10\n" diff --git a/src/code_809A560.c b/src/code_809A560.c index b1af934d8..296aecc93 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -135,7 +135,7 @@ void sub_809A560(void) gUnknown_20399DC = 0; gUnknown_20399DE = 0; sub_80095CC(0,0x14); - xxx_call_save_unk_text_struct_800641C(0,1,1); + ShowWindows(0,1,1); sub_8009408(0,0x14); ResetTextbox_809B294(); gUnknown_3001B64->unk414 = 0; @@ -180,7 +180,7 @@ u32 xxx_script_textboxes_809A680(u32 param_1, u32 param_2) switch(param_1) { case 0: ResetTextbox_809B294(); - xxx_call_save_unk_text_struct_800641C(0,1,1); + ShowWindows(0,1,1); break; case 1: ResetTextbox_809B294(); @@ -196,7 +196,7 @@ u32 xxx_script_textboxes_809A680(u32 param_1, u32 param_2) break; default: ResetTextbox_809B294(); - xxx_call_save_unk_text_struct_800641C(0,1,1); + ShowWindows(0,1,1); } gUnknown_3001B64->unk0 = param_1; return 1; @@ -1863,7 +1863,7 @@ bool8 sub_809B648(void) case 0x2d: if (gUnknown_3001B64->unk420 == 1) { ResetTextbox_809B294(); - xxx_call_save_unk_text_struct_800641C(NULL, 1, 1); + ShowWindows(NULL, 1, 1); if (sub_801A5D8(0,0,0,10)) { return 1; } diff --git a/src/credits1.c b/src/credits1.c index 0008e6101..4b00e775c 100644 --- a/src/credits1.c +++ b/src/credits1.c @@ -8,8 +8,8 @@ static EWRAM_INIT Credits1Work *sCredits1Work = {NULL}; -extern const UnkTextStruct2 gUnknown_80E4A10; -extern const UnkTextStruct2 gUnknown_80E4A28; +extern const Window gUnknown_80E4A10; +extern const Window gUnknown_80E4A28; extern const u32 gUnknown_80E4A40[]; extern const CreditsData* gCreditsTable[27]; @@ -31,11 +31,11 @@ bool8 DrawCredits(s32 creditsCategoryIndex, s32 param_2) sCredits1Work->creditsCategoryIndex = creditsCategoryIndex; for (i = 0; i < 4; i++) - sCredits1Work->unk0[i] = gUnknown_80E4A10; - sCredits1Work->unk0[0] = gUnknown_80E4A28; + sCredits1Work->unk0.id[i] = gUnknown_80E4A10; + sCredits1Work->unk0.id[0] = gUnknown_80E4A28; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sCredits1Work->unk0[0], TRUE, TRUE); + ShowWindows(&sCredits1Work->unk0, TRUE, TRUE); sub_8099690(2); sub_80073B8(0); @@ -118,7 +118,7 @@ s32 sub_8035574(void) case 3: if (!sub_8099B94()) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sCredits1Work->unk60 = 4; } break; diff --git a/src/data/adventure_log.h b/src/data/adventure_log.h index c7a8c49d2..37308cd0a 100644 --- a/src/data/adventure_log.h +++ b/src/data/adventure_log.h @@ -1,6 +1,6 @@ -static const UnkTextStruct2 sUnknown_80E1FF0 = +static const Window sUnknown_80E1FF0 = { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, @@ -8,9 +8,9 @@ static const UnkTextStruct2 sUnknown_80E1FF0 = NULL }; -static const UnkTextStruct2 sUnknown_80E2008 = +static const Window sUnknown_80E2008 = { - 0, 0, 0, 0, + 0, 6, 2, 2, 26, 4, @@ -19,4 +19,4 @@ static const UnkTextStruct2 sUnknown_80E2008 = }; ALIGNED(4) static const u8 sAdventureLogText[] = _("Adventure Log"); -ALIGNED(4) static const u8 sPlaceholder[] = _("{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95} "); \ No newline at end of file +ALIGNED(4) static const u8 sPlaceholder[] = _("{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95}{UNK_95} "); diff --git a/src/data/code_801602C.h b/src/data/code_801602C.h index 4d0da6c76..5c29147dc 100644 --- a/src/data/code_801602C.h +++ b/src/data/code_801602C.h @@ -5,9 +5,9 @@ enum MENU_ACTION_NO, }; -UNUSED static const UnkTextStruct2 sUnknown_80DB670 = +UNUSED static const Window sUnknown_80DB670 = { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, @@ -17,4 +17,4 @@ UNUSED static const UnkTextStruct2 sUnknown_80DB670 = ALIGNED(4) static const u8 sIsNameOKPrompt[] = _("Is the name {COLOR CYAN}{POKEMON_0}{RESET} OK?"); ALIGNED(4) static const u8 sNameTooLong[] = _("This name is too long."); -ALIGNED(4) static const u8 sEnterAName[] = _("Please enter a name."); \ No newline at end of file +ALIGNED(4) static const u8 sEnterAName[] = _("Please enter a name."); diff --git a/src/data/code_801B60C.h b/src/data/code_801B60C.h index 107de37b2..0bb10ae5d 100644 --- a/src/data/code_801B60C.h +++ b/src/data/code_801B60C.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DBA58 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBA58 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DBA58 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBA70 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBA70 = { + 0, 3, 20, 4, 6, 3, @@ -16,8 +16,8 @@ static const UnkTextStruct2 sUnknown_80DBA70 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBA88 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBA88 = { + 0, 3, 20, 14, 6, 3, @@ -73,4 +73,4 @@ ALIGNED(4) static const u8 sFmtDiscardedForReceive[] = _( ALIGNED(4) static const u8 sTrashToolboxItem[] = _("Trash Toolbox Item"); ALIGNED(4) static const u8 sTrashReceivedItem[] = _("Trash Received Item"); ALIGNED(4) static const u8 sStorage[] = _("Storage"); -ALIGNED(4) static const u8 sTrash[] = _("Trash"); \ No newline at end of file +ALIGNED(4) static const u8 sTrash[] = _("Trash"); diff --git a/src/data/code_801C8C4.h b/src/data/code_801C8C4.h index b38d32b13..ff666225a 100644 --- a/src/data/code_801C8C4.h +++ b/src/data/code_801C8C4.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DBE3C = { - 0, 0, 0, 0, +static const Window sUnknown_80DBE3C = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DBE3C = { NULL }; -static const UnkTextStruct2 sUnknown_80DBE54 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBE54 = { + 0, 6, 2, 2, 16, 14, @@ -16,4 +16,4 @@ static const UnkTextStruct2 sUnknown_80DBE54 = { NULL }; -ALIGNED(4) static const u8 sStorage[] = _("Storage"); \ No newline at end of file +ALIGNED(4) static const u8 sStorage[] = _("Storage"); diff --git a/src/data/code_801D014.h b/src/data/code_801D014.h index e4d342f7c..376c6f6f3 100644 --- a/src/data/code_801D014.h +++ b/src/data/code_801D014.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DBE7C = { - 0, 0, 0, 0, +static const Window sUnknown_80DBE7C = { + 0, 3, 0, 0, 0, 0, @@ -7,9 +7,9 @@ static const UnkTextStruct2 sUnknown_80DBE7C = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DBE94 = {1, 0, 7, 0}; -static const UnkTextStruct2 sUnknown_80DBE98 = { - 0, 0, 0, 0, +static const WindowHeader sUnknown_80DBE94 = {1, 0, 7, 0}; +static const Window sUnknown_80DBE98 = { + 0, 6, 2, 2, 9, 6, @@ -17,10 +17,10 @@ static const UnkTextStruct2 sUnknown_80DBE98 = { &sUnknown_80DBE94 }; -static const UnkTextStruct2 sUnknown_80DBEB0[4] = +static const Window sUnknown_80DBEB0[MAX_WINDOWS] = { { - 0, 0, 0, 0, + 0, 3, 2, 3, 8, 6, @@ -28,7 +28,7 @@ static const UnkTextStruct2 sUnknown_80DBEB0[4] = NULL }, { - 0, 0, 0, 0, + 0, 3, 12, 4, 16, 2, @@ -36,7 +36,7 @@ static const UnkTextStruct2 sUnknown_80DBEB0[4] = NULL }, { - 0, 0, 0, 0, + 0, 3, 2, 14, 26, 4, @@ -44,7 +44,7 @@ static const UnkTextStruct2 sUnknown_80DBEB0[4] = NULL }, { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, diff --git a/src/data/code_801D9E4.h b/src/data/code_801D9E4.h index 96f83413f..33fc54c10 100644 --- a/src/data/code_801D9E4.h +++ b/src/data/code_801D9E4.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DBF70 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBF70 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DBF70 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBF88 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBF88 = { + 0, 6, 2, 2, 24, 17, @@ -16,4 +16,4 @@ static const UnkTextStruct2 sUnknown_80DBF88 = { NULL }; -ALIGNED(4) static const u8 sField[] = _("Field"); \ No newline at end of file +ALIGNED(4) static const u8 sField[] = _("Field"); diff --git a/src/data/code_80227B8.h b/src/data/code_80227B8.h index f2709ada2..3427469eb 100644 --- a/src/data/code_80227B8.h +++ b/src/data/code_80227B8.h @@ -5,27 +5,27 @@ static const MenuItem sUnknown_80DC584[3] = {NULL, 1}, }; -static const UnkTextStruct2 sUnknown_80DC5A4 = +static const Window sUnknown_80DC5A4 = { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, NULL }; -static const UnkTextStruct2 sUnknown_80DC5BC = +static const Window sUnknown_80DC5BC = { - 0, 0, 0, 0, + 0, 3, 20, 4, 6, 3, 3, 0, NULL }; -static const UnkTextStruct2 sUnknown_80DC5D4 = +static const Window sUnknown_80DC5D4 = { - 0, 0, 0, 0, + 0, 3, 20, 11, 6, 3, @@ -85,4 +85,4 @@ ALIGNED(4) static const u8 sNoItem[] = _("You don't have an item."); ALIGNED(4) static const u8 sGummiGone[] = _("The Gummi is gone!"); ALIGNED(4) static const u8 sItemGone[] = _("The item is gone!"); ALIGNED(4) static const u8 sGive[] = _("Give"); -ALIGNED(4) static const u8 sUse[] = _("Use"); \ No newline at end of file +ALIGNED(4) static const u8 sUse[] = _("Use"); diff --git a/src/data/code_8023144.h b/src/data/code_8023144.h index 22430504f..286bf91b3 100644 --- a/src/data/code_8023144.h +++ b/src/data/code_8023144.h @@ -1,6 +1,6 @@ -static const UnkTextStruct2 sUnknown_80DC904 = +static const Window sUnknown_80DC904 = { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, @@ -8,9 +8,9 @@ static const UnkTextStruct2 sUnknown_80DC904 = NULL }; -static const UnkTextStruct2 sUnknown_80DC91C = +static const Window sUnknown_80DC91C = { - 0, 0, 0, 0, + 0, 6, 2, 2, 15, 14, @@ -19,4 +19,4 @@ static const UnkTextStruct2 sUnknown_80DC91C = }; ALIGNED(4) static const u8 sPokemon[] = _("Pokémon"); -ALIGNED(4) static const u8 sFmtColoredString[] = _("{color}%c%s{reset}"); \ No newline at end of file +ALIGNED(4) static const u8 sFmtColoredString[] = _("{color}%c%s{reset}"); diff --git a/src/data/code_8023868.h b/src/data/code_8023868.h index ada6340f0..23a3f657e 100644 --- a/src/data/code_8023868.h +++ b/src/data/code_8023868.h @@ -1,6 +1,6 @@ //static // MAKE STATIC WHEN code_8023868.s IS DONE -const UnkTextStruct2 sUnknown_80DC950 = { - 0, 0, 0, 0, +const Window sUnknown_80DC950 = { + 0, 3, 0, 0, 0, 0, @@ -8,8 +8,8 @@ const UnkTextStruct2 sUnknown_80DC950 = { NULL }; //static // MAKE STATIC WHEN code_8023868.s IS DONE -const UnkTextStruct2 sUnknown_80DC968 = { - 0, 0, 0, 0, +const Window sUnknown_80DC968 = { + 0, 6, 2, 2, 15, 14, @@ -24,4 +24,4 @@ const u8 sUnknown_80DC988[] = _("Pokémon Friends"); ALIGNED(4) //static // MAKE STATIC WHEN code_8023868.s IS DONE const u8 sUnknown_80DC998[] = _("{color}%c%s{reset}"); ALIGNED(4) //static // MAKE STATIC WHEN code_8023868.s IS DONE -const u8 sUnknown_80DC9A4[] = _("%s"); \ No newline at end of file +const u8 sUnknown_80DC9A4[] = _("%s"); diff --git a/src/data/code_8024458.h b/src/data/code_8024458.h index 87bb678fa..69ff03565 100644 --- a/src/data/code_8024458.h +++ b/src/data/code_8024458.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DC9B0 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC9B0 = { + 0, 3, 0, 0, 0, 0, @@ -7,11 +7,11 @@ static const UnkTextStruct2 sUnknown_80DC9B0 = { NULL }; -static const UnkTextStruct2 sUnknown_80DC9C8 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC9C8 = { + 0, 6, 2, 2, 18, 14, 18, 2, NULL -}; \ No newline at end of file +}; diff --git a/src/data/code_802DB28.h b/src/data/code_802DB28.h index 6a13906a7..b41239deb 100644 --- a/src/data/code_802DB28.h +++ b/src/data/code_802DB28.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80E016C = { - 0, 0, 0, 0, +static const Window sUnknown_80E016C = { + 0, 3, 0, 0, 0, 0, @@ -23,4 +23,4 @@ ALIGNED(4) static const u8 sThanksForDelivering[] = _( ALIGNED(4) static const u8 sThanksForGetting[] = _( " Thank you for getting me\n" - "the {COLOR GREEN}{MOVE_ITEM_0}{RESET}!"); \ No newline at end of file + "the {COLOR GREEN}{MOVE_ITEM_0}{RESET}!"); diff --git a/src/data/code_802DE84.h b/src/data/code_802DE84.h index 6e9629a50..2b93977e1 100644 --- a/src/data/code_802DE84.h +++ b/src/data/code_802DE84.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80E0248 = { - 0, 0, 0, 0, +static const Window sUnknown_80E0248 = { + 0, 3, 0, 0, 0, 0, @@ -7,9 +7,9 @@ static const UnkTextStruct2 sUnknown_80E0248 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80E0260 = {1, 0, 18, 0}; -static const UnkTextStruct2 sUnknown_80E0264 = { - 0, 0, 0, 0, +static const WindowHeader sUnknown_80E0260 = {1, 0, 18, 0}; +static const Window sUnknown_80E0264 = { + 0, 6, 2, 2, 26, 16, diff --git a/src/data/debug_menu1.h b/src/data/debug_menu1.h index 5dde96b47..bf0f7f226 100644 --- a/src/data/debug_menu1.h +++ b/src/data/debug_menu1.h @@ -1,13 +1,13 @@ -static const UnkTextStruct2 sUnknown_80E7D40 = { - 0, 0, 0, 0, +static const Window sUnknown_80E7D40 = { + 0, 3, 0, 0, 0, 0, 0, 0, NULL }; -static const UnkTextStruct2 sUnknown_80E7D58 = { - 0, 0, 0, 0, +static const Window sUnknown_80E7D58 = { + 0, 3, 2, 2, 9, 11, @@ -24,4 +24,4 @@ static const MenuItem sDebugMenuItems[] = { {_("Storage"), MENU_DEBUG_MENU_STORAGE}, {_("h-open"), MENU_DEBUG_MENU_H_OPEN}, {NULL, 10}, -}; \ No newline at end of file +}; diff --git a/src/data/debug_menu2.h b/src/data/debug_menu2.h index f0e808633..4cc4d3f3f 100644 --- a/src/data/debug_menu2.h +++ b/src/data/debug_menu2.h @@ -1,6 +1,6 @@ -static const UnkTextStruct2 sUnknown_80E7E34 = +static const Window sUnknown_80E7E34 = { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, @@ -8,9 +8,9 @@ static const UnkTextStruct2 sUnknown_80E7E34 = NULL }; -static const UnkTextStruct2 sUnknown_80E7E4C = +static const Window sUnknown_80E7E4C = { - 0, 0, 0, 0, + 0, 3, 20, 4, 6, 3, @@ -18,9 +18,9 @@ static const UnkTextStruct2 sUnknown_80E7E4C = NULL }; -static const UnkTextStruct2 sUnknown_80E7E64 = +static const Window sUnknown_80E7E64 = { - 0, 0, 0, 0, + 0, 3, 20, 14, 6, 4, @@ -28,4 +28,4 @@ static const UnkTextStruct2 sUnknown_80E7E64 = NULL }; -ALIGNED(4) static const u8 sNumberPrompt[] = _("Number?"); \ No newline at end of file +ALIGNED(4) static const u8 sNumberPrompt[] = _("Number?"); diff --git a/src/data/debug_menu3.h b/src/data/debug_menu3.h index 8a55acedf..4155d7d84 100644 --- a/src/data/debug_menu3.h +++ b/src/data/debug_menu3.h @@ -1,6 +1,6 @@ -static const UnkTextStruct2 sUnknown_80E7E8C = +static const Window sUnknown_80E7E8C = { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, @@ -8,9 +8,9 @@ static const UnkTextStruct2 sUnknown_80E7E8C = NULL }; -static const UnkTextStruct2 sUnknown_80E7EA4 = +static const Window sUnknown_80E7EA4 = { - 0, 0, 0, 0, + 0, 3, 21, 4, 6, 3, @@ -19,4 +19,4 @@ static const UnkTextStruct2 sUnknown_80E7EA4 = }; ALIGNED(4) static const u8 sClose[] = _("CLOSE"); -ALIGNED(4) static const u8 sOpen[] = _("OPEN"); \ No newline at end of file +ALIGNED(4) static const u8 sOpen[] = _("OPEN"); diff --git a/src/data/debug_menu4.h b/src/data/debug_menu4.h index c802c5293..7a9a30388 100644 --- a/src/data/debug_menu4.h +++ b/src/data/debug_menu4.h @@ -1,6 +1,6 @@ -static const UnkTextStruct2 sUnknown_80E7ED4 = +static const Window sUnknown_80E7ED4 = { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, @@ -8,9 +8,9 @@ static const UnkTextStruct2 sUnknown_80E7ED4 = NULL }; -static const UnkTextStruct2 sUnknown_80E7EEC = +static const Window sUnknown_80E7EEC = { - 0, 0, 0, 0, + 0, 3, 19, 4, 9, 3, @@ -18,9 +18,9 @@ static const UnkTextStruct2 sUnknown_80E7EEC = NULL }; -static const UnkTextStruct2 sUnknown_80E7F04 = +static const Window sUnknown_80E7F04 = { - 0, 0, 0, 0, + 0, 3, 19, 14, 6, 4, @@ -30,4 +30,4 @@ static const UnkTextStruct2 sUnknown_80E7F04 = ALIGNED(4) static const u8 sNumberPrompt[] = _("Number?"); ALIGNED(4) static const u8 sLevel[] = _("LEVEL"); -ALIGNED(4) static const u8 sName[] = _("Name"); \ No newline at end of file +ALIGNED(4) static const u8 sName[] = _("Name"); diff --git a/src/data/felicity_bank.h b/src/data/felicity_bank.h index 7e1056981..7077a7b41 100644 --- a/src/data/felicity_bank.h +++ b/src/data/felicity_bank.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DB6DC = { - 0, 0, 0, 0, +static const Window sUnknown_80DB6DC = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DB6DC = { NULL }; -static const UnkTextStruct2 sUnknown_80DB6F4 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB6F4 = { + 0, 3, 2, 3, 26, 2, @@ -16,8 +16,8 @@ static const UnkTextStruct2 sUnknown_80DB6F4 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB70C = { - 0, 0, 0, 0, +static const Window sUnknown_80DB70C = { + 0, 3, 17, 8, 11, 4, @@ -27,4 +27,4 @@ static const UnkTextStruct2 sUnknown_80DB70C = { ALIGNED(4) static const u8 sDisplayMoney[] = _("Money: "); ALIGNED(4) static const u8 sDisplaySavings[] = _("Savings: "); -ALIGNED(4) static const u8 sMoney[] = _("Money"); \ No newline at end of file +ALIGNED(4) static const u8 sMoney[] = _("Money"); diff --git a/src/data/friend_area_action_menu.h b/src/data/friend_area_action_menu.h index d85972a1c..e29774519 100644 --- a/src/data/friend_area_action_menu.h +++ b/src/data/friend_area_action_menu.h @@ -1,6 +1,6 @@ -static const UnkTextStruct2 sUnknown_80DD6EC = +static const Window sUnknown_80DD6EC = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -8,9 +8,9 @@ static const UnkTextStruct2 sUnknown_80DD6EC = NULL }; -static const UnkTextStruct2 sUnknown_80DD704 = +static const Window sUnknown_80DD704 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x13, 0x04, 0x09, 0x03, @@ -18,9 +18,9 @@ static const UnkTextStruct2 sUnknown_80DD704 = NULL }; -static const UnkTextStruct2 sUnknown_80DD71C = +static const Window sUnknown_80DD71C = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x14, 0x04, 0x06, 0x03, @@ -28,9 +28,9 @@ static const UnkTextStruct2 sUnknown_80DD71C = NULL }; -static const UnkTextStruct2 sUnknown_80DD734 = +static const Window sUnknown_80DD734 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x16, 0x04, 0x06, 0x03, @@ -38,9 +38,9 @@ static const UnkTextStruct2 sUnknown_80DD734 = NULL }; -static const UnkTextStruct2 sUnknown_80DD74C = +static const Window sUnknown_80DD74C = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x02, 0x11, 0x1A, 0x02, @@ -79,4 +79,4 @@ ALIGNED(4) static const u8 sSummary[] = "Summary"; ALIGNED(4) static const u8 sMoves[] = "Moves"; ALIGNED(4) static const u8 sCheckIQ[] = "Check IQ"; -ALIGNED(4) static const u8 sItemBuffered[] = _("Item: {COLOR GREEN}{MOVE_ITEM_0}{RESET} "); \ No newline at end of file +ALIGNED(4) static const u8 sItemBuffered[] = _("Item: {COLOR GREEN}{MOVE_ITEM_0}{RESET} "); diff --git a/src/data/friend_list_menu.h b/src/data/friend_list_menu.h index 62d7c8390..19dfd7359 100644 --- a/src/data/friend_list_menu.h +++ b/src/data/friend_list_menu.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DD148 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD148 = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DD148 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD160 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD160 = { + 0, 0x03, 0x13, 0x04, 0x08, 0x03, @@ -16,8 +16,8 @@ static const UnkTextStruct2 sUnknown_80DD160 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD178 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD178 = { + 0, 0x03, 0x14, 0x04, 0x06, 0x03, @@ -25,8 +25,8 @@ static const UnkTextStruct2 sUnknown_80DD178 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD190 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD190 = { + 0, 0x03, 0x02, 0x11, 0x1A, 0x02, @@ -62,4 +62,4 @@ ALIGNED(4) static const u8 sName[] = "Name"; ALIGNED(4) static const u8 sSummary[] = "Summary"; ALIGNED(4) static const u8 sMoves[] = "Moves"; ALIGNED(4) static const u8 sCheckIQ[] = "Check IQ"; -ALIGNED(4) static const u8 sItemBuffered[] = _("Item: {COLOR GREEN}{MOVE_ITEM_0}{RESET} "); \ No newline at end of file +ALIGNED(4) static const u8 sItemBuffered[] = _("Item: {COLOR GREEN}{MOVE_ITEM_0}{RESET} "); diff --git a/src/data/friend_rescue_menus.h b/src/data/friend_rescue_menus.h index 250e0f916..8c16570ac 100644 --- a/src/data/friend_rescue_menus.h +++ b/src/data/friend_rescue_menus.h @@ -102,9 +102,9 @@ const MenuItem gUnknown_80E22F0[] = { {NULL, 8}, }; -const UnkTextStruct2 gUnknown_80E231C = +const Window gUnknown_80E231C = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x16, 0x07, 0x06, 0x04, @@ -112,9 +112,9 @@ const UnkTextStruct2 gUnknown_80E231C = NULL }; -const UnkTextStruct2 gUnknown_80E2334 = +const Window gUnknown_80E2334 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x16, 0x06, 0x06, 0x04, @@ -142,9 +142,9 @@ const MenuItem gUnknown_80E23A8[] = { {NULL, 8}, }; -const UnkTextStruct2 gUnknown_80E23F0 = +const Window gUnknown_80E23F0 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x15, 0x04, 0x06, 0x05, @@ -159,9 +159,9 @@ const MenuItem gUnknown_80E2408[] = { {NULL, 8}, }; -UNUSED static const UnkTextStruct2 sUnused = +UNUSED static const Window sUnused = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -226,4 +226,4 @@ const MenuItem gUnknown_80E25B4[] = { {_("Send Thank-You Mail"), 38}, {_("Exit"), 25}, {NULL, 25}, -}; \ No newline at end of file +}; diff --git a/src/data/gulpin_shop.h b/src/data/gulpin_shop.h index 8bd5d1909..4c2daef02 100644 --- a/src/data/gulpin_shop.h +++ b/src/data/gulpin_shop.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 gUnknown_80DC11C = { - 0, 0, 0, 0, +static const Window gUnknown_80DC11C = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 gUnknown_80DC11C = { NULL }; -static const UnkTextStruct2 gUnknown_80DC134 = { - 0, 0, 0, 0, +static const Window gUnknown_80DC134 = { + 0, 3, 22, 4, 6, 3, @@ -16,8 +16,8 @@ static const UnkTextStruct2 gUnknown_80DC134 = { NULL }; -UNUSED static const UnkTextStruct2 gUnknown_80DC14C = { - 0, 0, 0, 0, +UNUSED static const Window gUnknown_80DC14C = { + 0, 3, 22, 14, 6, 3, @@ -38,4 +38,4 @@ ALIGNED(4) static const u8 sForgetMoveOnly[] = _( "{CENTER_ALIGN}Forget the move {COLOR GREEN}{POKEMON_1}{RESET}\n" "{CENTER_ALIGN}and learn {COLOR CYAN}{POKEMON_0}{RESET}?"); -ALIGNED(4) static const u8 sForget[] = _("Forget"); \ No newline at end of file +ALIGNED(4) static const u8 sForget[] = _("Forget"); diff --git a/src/data/gulpin_shop_801FB50.h b/src/data/gulpin_shop_801FB50.h index cf1567c84..b9455ce27 100644 --- a/src/data/gulpin_shop_801FB50.h +++ b/src/data/gulpin_shop_801FB50.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 gUnknown_80DC31C = { - 0, 0, 0, 0, +static const Window gUnknown_80DC31C = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 gUnknown_80DC31C = { NULL }; -static const UnkTextStruct2 gUnknown_80DC334 = { - 0, 0, 0, 0, +static const Window gUnknown_80DC334 = { + 0, 3, 19, 4, 8, 3, @@ -16,8 +16,8 @@ static const UnkTextStruct2 gUnknown_80DC334 = { NULL }; -static const UnkTextStruct2 gUnknown_80DC34C = { - 0, 0, 0, 0, +static const Window gUnknown_80DC34C = { + 0, 3, 22, 4, 6, 3, @@ -25,8 +25,8 @@ static const UnkTextStruct2 gUnknown_80DC34C = { NULL }; -UNUSED static const UnkTextStruct2 gUnknown_80DC364 = { - 0, 0, 0, 0, +UNUSED static const Window gUnknown_80DC364 = { + 0, 3, 22, 14, 6, 3, @@ -34,8 +34,8 @@ UNUSED static const UnkTextStruct2 gUnknown_80DC364 = { NULL }; -static const UnkTextStruct2 gUnknown_80DC37C = { - 0, 0, 0, 0, +static const Window gUnknown_80DC37C = { + 0, 3, 22, 3, 6, 3, @@ -60,4 +60,4 @@ ALIGNED(4) static const u8 gGulpinDelink[] = _("Delink"); ALIGNED(4) static const u8 gGulpinForget[] = _("Forget"); ALIGNED(4) static const u8 gUnknown_80DC428[] = _("Setting moves"); ALIGNED(4) static const u8 gUnknown_80DC438[] = _("Linking moves"); -ALIGNED(4) static const u8 gUnknown_80DC448[] = _("Remembering moves"); \ No newline at end of file +ALIGNED(4) static const u8 gUnknown_80DC448[] = _("Remembering moves"); diff --git a/src/data/hints_menu1.h b/src/data/hints_menu1.h index cb8eb410c..bab8d705a 100644 --- a/src/data/hints_menu1.h +++ b/src/data/hints_menu1.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DC0A0 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC0A0 = { + 0, 3, 0, 0, 0, 0, @@ -7,9 +7,9 @@ static const UnkTextStruct2 sUnknown_80DC0A0 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DC0B8 = {1, 0, 8, 0}; -static const UnkTextStruct2 sUnknown_80DC0BC = { - 0, 0, 0, 0, +static const WindowHeader sUnknown_80DC0B8 = {1, 0, 8, 0}; +static const Window sUnknown_80DC0BC = { + 0, 6, 2, 2, 24, 14, diff --git a/src/data/hints_menu2.h b/src/data/hints_menu2.h index 23c79a5fd..bc545320f 100644 --- a/src/data/hints_menu2.h +++ b/src/data/hints_menu2.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DC0E4 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC0E4 = { + 0, 3, 0, 0, 0, 0, @@ -7,11 +7,11 @@ static const UnkTextStruct2 sUnknown_80DC0E4 = { NULL }; -static const UnkTextStruct2 sUnknown_80DC0FC = { - 0, 0, 0, 0, +static const Window sUnknown_80DC0FC = { + 0, 6, 2, 2, 26, 16, 16, 0, NULL -}; \ No newline at end of file +}; diff --git a/src/data/iq_skill_list_menu.h b/src/data/iq_skill_list_menu.h index 0ea4a139c..61a0dbe50 100644 --- a/src/data/iq_skill_list_menu.h +++ b/src/data/iq_skill_list_menu.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DBDD8 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBDD8 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DBDD8 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBDF0 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBDF0 = { + 0, 6, 2, 2, 16, 17, diff --git a/src/data/iq_skill_menu.h b/src/data/iq_skill_menu.h index 585bdf665..75a4c0ea4 100644 --- a/src/data/iq_skill_menu.h +++ b/src/data/iq_skill_menu.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DBD98 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBD98 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DBD98 = { NULL }; -static const UnkTextStruct2 sUnknown_80DBDB0 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBDB0 = { + 0, 3, 20, 4, 6, 3, @@ -16,4 +16,4 @@ static const UnkTextStruct2 sUnknown_80DBDB0 = { NULL }; -ALIGNED(4) static const u8 sSwitch[] = _("Switch"); \ No newline at end of file +ALIGNED(4) static const u8 sSwitch[] = _("Switch"); diff --git a/src/data/kangaskhan_storage1.h b/src/data/kangaskhan_storage1.h index b8aafcf99..ba09975f2 100644 --- a/src/data/kangaskhan_storage1.h +++ b/src/data/kangaskhan_storage1.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DB748 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB748 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DB748 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB760 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB760 = { + 0, 3, 20, 4, 6, 3, @@ -16,8 +16,8 @@ static const UnkTextStruct2 sUnknown_80DB760 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB778 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB778 = { + 0, 3, 20, 9, 6, 3, @@ -25,8 +25,8 @@ static const UnkTextStruct2 sUnknown_80DB778 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB790 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB790 = { + 0, 3, 20, 14, 6, 4, @@ -34,4 +34,4 @@ static const UnkTextStruct2 sUnknown_80DB790 = { NULL }; -ALIGNED(4) static const u8 sNumber[] = _("Number?"); \ No newline at end of file +ALIGNED(4) static const u8 sNumber[] = _("Number?"); diff --git a/src/data/kangaskhan_storage2.h b/src/data/kangaskhan_storage2.h index 2ea9e895d..fdbc9976f 100644 --- a/src/data/kangaskhan_storage2.h +++ b/src/data/kangaskhan_storage2.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DB7B8 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB7B8 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DB7B8 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB7D0 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB7D0 = { + 0, 3, 3, 3, 6, 3, @@ -16,8 +16,8 @@ static const UnkTextStruct2 sUnknown_80DB7D0 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB7E8 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB7E8 = { + 0, 3, 20, 4, 6, 3, @@ -25,8 +25,8 @@ static const UnkTextStruct2 sUnknown_80DB7E8 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB800 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB800 = { + 0, 3, 20, 9, 6, 3, @@ -34,8 +34,8 @@ static const UnkTextStruct2 sUnknown_80DB800 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB818 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB818 = { + 0, 3, 20, 14, 6, 4, @@ -43,4 +43,4 @@ static const UnkTextStruct2 sUnknown_80DB818 = { NULL }; -ALIGNED(4) static const u8 sNumber[] = _("Number?"); \ No newline at end of file +ALIGNED(4) static const u8 sNumber[] = _("Number?"); diff --git a/src/data/kecleon_bros1.h b/src/data/kecleon_bros1.h index fa762ce11..e0bbf1366 100644 --- a/src/data/kecleon_bros1.h +++ b/src/data/kecleon_bros1.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DB840 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB840 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DB840 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB858 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB858 = { + 0, 3, 20, 4, 6, 3, @@ -16,8 +16,8 @@ static const UnkTextStruct2 sUnknown_80DB858 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB870 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB870 = { + 0, 3, 20, 9, 6, 3, @@ -25,8 +25,8 @@ static const UnkTextStruct2 sUnknown_80DB870 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB888 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB888 = { + 0, 3, 20, 14, 6, 3, @@ -34,4 +34,4 @@ static const UnkTextStruct2 sUnknown_80DB888 = { NULL }; -ALIGNED(4) static const u8 sSellAll[] = _("Sell All"); \ No newline at end of file +ALIGNED(4) static const u8 sSellAll[] = _("Sell All"); diff --git a/src/data/kecleon_bros2.h b/src/data/kecleon_bros2.h index 055ff803d..cd27baf16 100644 --- a/src/data/kecleon_bros2.h +++ b/src/data/kecleon_bros2.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DB8B4 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB8B4 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DB8B4 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB8CC = { - 0, 0, 0, 0, +static const Window sUnknown_80DB8CC = { + 0, 6, 2, 2, 16, 4, @@ -17,4 +17,4 @@ static const UnkTextStruct2 sUnknown_80DB8CC = { }; ALIGNED(4) static const u8 sGoods[] = _("Goods"); -ALIGNED(4) static const u8 sFmtRed[] = _("{COLOR RED}%s{RESET}"); \ No newline at end of file +ALIGNED(4) static const u8 sFmtRed[] = _("{COLOR RED}%s{RESET}"); diff --git a/src/data/kecleon_bros3.h b/src/data/kecleon_bros3.h index ceb5b732e..986a1542e 100644 --- a/src/data/kecleon_bros3.h +++ b/src/data/kecleon_bros3.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DB8FC = { - 0, 0, 0, 0, +static const Window sUnknown_80DB8FC = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DB8FC = { NULL }; -static const UnkTextStruct2 sUnknown_80DB914 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB914 = { + 0, 6, 2, 2, 16, 4, @@ -17,4 +17,4 @@ static const UnkTextStruct2 sUnknown_80DB914 = { }; ALIGNED(4) static const u8 sGoods[] = _("Goods"); -ALIGNED(4) static const u8 sFmtRed[] = _("{COLOR RED}%s{RESET}"); \ No newline at end of file +ALIGNED(4) static const u8 sFmtRed[] = _("{COLOR RED}%s{RESET}"); diff --git a/src/data/kecleon_bros4.h b/src/data/kecleon_bros4.h index 8c89d6847..7b9d49c08 100644 --- a/src/data/kecleon_bros4.h +++ b/src/data/kecleon_bros4.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DB944 = { - 0, 0, 0, 0, +static const Window sUnknown_80DB944 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DB944 = { NULL }; -static const UnkTextStruct2 sUnknown_80DB95C = { - 0, 0, 0, 0, +static const Window sUnknown_80DB95C = { + 0, 6, 2, 2, 16, 17, @@ -21,4 +21,4 @@ ALIGNED(4) static const u8 sTeamToolboxB[] = _("Team Toolbox B"); ALIGNED(4) static const u8 sFmtMoveItem0[] = _("{COLOR RED_RAW}{MOVE_ITEM_0}{RESET}"); ALIGNED(4) static const u8 sFmtRed[] = _("{COLOR RED}%s{RESET}"); ALIGNED(4) static const u8 sItems[] = _("Items"); -ALIGNED(4) static const u8 sSlash[] = _("/"); \ No newline at end of file +ALIGNED(4) static const u8 sSlash[] = _("/"); diff --git a/src/data/luminous_cave.h b/src/data/luminous_cave.h index 8cbdd6693..066ee4ae8 100644 --- a/src/data/luminous_cave.h +++ b/src/data/luminous_cave.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DC9E8 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC9E8 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DC9E8 = { NULL }; -static const UnkTextStruct2 sUnknown_80DCA00 = { - 0, 0, 0, 0, +static const Window sUnknown_80DCA00 = { + 0, 3, 20, 4, 6, 3, @@ -129,4 +129,4 @@ ALIGNED(4) static const u8 sMustGiveName[] = _( "{CENTER_ALIGN}the evolved Pokémon. "); // TODO: This for a file after which had no data -ALIGNED(4) static const u8 sFill1[] = _("pksdir0"); \ No newline at end of file +ALIGNED(4) static const u8 sFill1[] = _("pksdir0"); diff --git a/src/data/main_menu1.h b/src/data/main_menu1.h index 44dd27688..8f03055ab 100644 --- a/src/data/main_menu1.h +++ b/src/data/main_menu1.h @@ -1,8 +1,8 @@ -static const UnkTextStruct2 sUnknown_80E59A8 = { - 0, 0, 0, 0, +static const Window sUnknown_80E59A8 = { + 0, 3, 0, 0, 0, 0, 0, 0, NULL -}; \ No newline at end of file +}; diff --git a/src/data/main_menu2.h b/src/data/main_menu2.h index 97e9b4265..c8e88f1c9 100644 --- a/src/data/main_menu2.h +++ b/src/data/main_menu2.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80E59C8 = { - 0, 0, 0, 0, +static const Window sUnknown_80E59C8 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80E59C8 = { NULL }; -static const UnkTextStruct2 sUnknown_80E59E0 = { - 0, 0, 0, 0, +static const Window sUnknown_80E59E0 = { + 0, 3, 2, 2, 10, 3, @@ -22,8 +22,8 @@ static const MenuItem sUnknown_80E59F8[] = { {NULL, 0xFFDD}, }; -UNUSED static const UnkTextStruct2 sUnknown_80E5A29 = { - 0, 0, 0, 0, +UNUSED static const Window sUnknown_80E5A29 = { + 0, 3, 2, 2, 10, 2, @@ -36,8 +36,8 @@ UNUSED static const MenuItem sUnknown_80E5A44[] = { {NULL, 0xFFDD}, }; -static const UnkTextStruct2 sUnknown_80E5A60 = { - 0, 0, 0, 0, +static const Window sUnknown_80E5A60 = { + 0, 3, 2, 2, 10, 8, @@ -45,8 +45,8 @@ static const UnkTextStruct2 sUnknown_80E5A60 = { NULL }; -static const UnkTextStruct2 sUnknown_80E5A78 = { - 0, 0, 0, 0, +static const Window sUnknown_80E5A78 = { + 0, 3, 2, 2, 11, 9, @@ -73,8 +73,8 @@ static const MenuItem sUnknown_80E5AFC[] = { {NULL, 0xFFDD}, }; -static const UnkTextStruct2 sUnknown_80E5B34 = { - 0, 0, 0, 0, +static const Window sUnknown_80E5B34 = { + 0, 3, 2, 2, 10, 8, @@ -101,8 +101,8 @@ static const MenuItem sUnknown_80E5B8C[] = { {NULL, 0xFFDD}, }; -static const UnkTextStruct2 sUnknown_80E5BC4 = { - 0, 0, 0, 0, +static const Window sUnknown_80E5BC4 = { + 0, 3, 2, 2, 10, 8, @@ -129,8 +129,8 @@ static const MenuItem sUnknown_80E5C18[] = { {NULL, 0xFFDD}, }; -UNUSED static const UnkTextStruct2 sUnknown_80E5C50 = { - 0, 0, 0, 0, +UNUSED static const Window sUnknown_80E5C50 = { + 0, 3, 2, 2, 10, 3, @@ -150,8 +150,8 @@ UNUSED static const MenuItem sUnknown_80E5C9C[] = { {NULL, 0xFFDD}, }; -static const UnkTextStruct2 sUnknown_80E5CB4 = { - 0, 0, 0, 0, +static const Window sUnknown_80E5CB4 = { + 0, 3, 2, 15, 26, 3, @@ -224,4 +224,4 @@ static const MenuItem sUnknown_80E6030[] = { {_("Using wireless communication, you can"), 0xFFDE}, {_("go on an adventure to unknown worlds."), 0xFFDE}, {NULL, 0xFFDD} -}; \ No newline at end of file +}; diff --git a/src/data/makuhita_dojo1.h b/src/data/makuhita_dojo1.h index ea5c04a47..6f49398e4 100644 --- a/src/data/makuhita_dojo1.h +++ b/src/data/makuhita_dojo1.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80E0760 = { - 0, 0, 0, 0, +static const Window sUnknown_80E0760 = { + 0, 3, 0, 0, 0, 0, @@ -12,4 +12,4 @@ ALIGNED(4) static const u8 sReceivedBonslyDoll[] = _( "{CENTER_ALIGN}It has been placed outside your\n" "{CENTER_ALIGN}rescue team base."); -ALIGNED(4) static const u8 sGoTrain[] = _("Go Train"); \ No newline at end of file +ALIGNED(4) static const u8 sGoTrain[] = _("Go Train"); diff --git a/src/data/makuhita_dojo2.h b/src/data/makuhita_dojo2.h index f3472bda4..bd23d5d29 100644 --- a/src/data/makuhita_dojo2.h +++ b/src/data/makuhita_dojo2.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80E07EC = { - 0, 0, 0, 0, +static const Window sUnknown_80E07EC = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80E07EC = { NULL }; -static const UnkTextStruct2 sUnknown_80E0804 = { - 0, 0, 0, 0, +static const Window sUnknown_80E0804 = { + 0, 6, 2, 2, 14, 14, @@ -18,4 +18,4 @@ static const UnkTextStruct2 sUnknown_80E0804 = { ALIGNED(4) static const u8 sCourses[] = _("Courses"); ALIGNED(4) static const u8 sStarBullet[] = _("{STAR_BULLET}"); -ALIGNED(4) static const u8 sFmtColor[] = _("{color}%c%s{reset}"); \ No newline at end of file +ALIGNED(4) static const u8 sFmtColor[] = _("{color}%c%s{reset}"); diff --git a/src/data/options_menu1.h b/src/data/options_menu1.h index 3d4e4cf9d..fbe669c26 100644 --- a/src/data/options_menu1.h +++ b/src/data/options_menu1.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DBFB0 = { - 0, 0, 0, 0, +static const Window sUnknown_80DBFB0 = { + 0, 3, 0, 0, 0, 0, @@ -7,9 +7,9 @@ static const UnkTextStruct2 sUnknown_80DBFB0 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DBFC8 = {1, 0, 7, 0}; -static const UnkTextStruct2 sUnknown_80DBFCC = { - 0, 0, 0, 0, +static const WindowHeader sUnknown_80DBFC8 = {1, 0, 7, 0}; +static const Window sUnknown_80DBFCC = { + 0, 6, 2, 2, 10, 6, diff --git a/src/data/options_menu2.h b/src/data/options_menu2.h index 183c07dc4..4fa347641 100644 --- a/src/data/options_menu2.h +++ b/src/data/options_menu2.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DC020 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC020 = { + 0, 3, 0, 0, 0, 0, @@ -7,9 +7,9 @@ static const UnkTextStruct2 sUnknown_80DC020 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DC038 = {1, 0, 10, 0}; -static const UnkTextStruct2 sUnknown_80DC03C = { - 0, 0, 0, 0, +static const WindowHeader sUnknown_80DC038 = {1, 0, 10, 0}; +static const Window sUnknown_80DC03C = { + 0, 6, 2, 2, 24, 16, diff --git a/src/data/other_menus1.h b/src/data/other_menus1.h index 2a2421f6a..28137b35f 100644 --- a/src/data/other_menus1.h +++ b/src/data/other_menus1.h @@ -1,13 +1,13 @@ -static const UnkTextStruct2 sUnknown_80E653C = { - 0, 0, 0, 0, +static const Window sUnknown_80E653C = { + 0, 3, 0, 0, 0, 0, 0, 0, NULL }; -static const UnkTextStruct2 sUnknown_80E6554 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6554 = { + 0, 3, 3, 8, 24, 5, @@ -50,8 +50,8 @@ static const MenuItem sUnknown_80E667C[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E66BC = { - 0, 0, 0, 0, +static const Window sUnknown_80E66BC = { + 0, 3, 3, 8, 24, 5, @@ -66,8 +66,8 @@ static const MenuItem sUnknown_80E66D4[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6748 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6748 = { + 0, 3, 3, 8, 24, 5, @@ -82,8 +82,8 @@ static const MenuItem sUnknown_80E6760[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E67D4 = { - 0, 0, 0, 0, +static const Window sUnknown_80E67D4 = { + 0, 3, 3, 8, 24, 5, @@ -98,8 +98,8 @@ static const MenuItem sUnknown_80E67EC[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6830 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6830 = { + 0, 3, 3, 8, 24, 5, @@ -114,8 +114,8 @@ static const MenuItem sUnknown_80E6848[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E689C = { - 0, 0, 0, 0, +static const Window sUnknown_80E689C = { + 0, 3, 3, 8, 24, 5, @@ -130,8 +130,8 @@ static const MenuItem sUnknown_80E68B4[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6938 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6938 = { + 0, 3, 3, 8, 24, 5, @@ -146,8 +146,8 @@ static const MenuItem sUnknown_80E6950[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E69B0 = { - 0, 0, 0, 0, +static const Window sUnknown_80E69B0 = { + 0, 3, 3, 8, 24, 5, @@ -162,8 +162,8 @@ static const MenuItem sUnknown_80E69C8[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6A10 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6A10 = { + 0, 3, 3, 8, 24, 5, @@ -178,8 +178,8 @@ static const MenuItem sUnknown_80E6A28[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6A74 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6A74 = { + 0, 3, 3, 8, 24, 5, @@ -194,8 +194,8 @@ static const MenuItem sUnknown_80E6A8C[] = { {NULL, 3}, }; -UNUSED static const UnkTextStruct2 sUnknown_80E6AEC = { - 0, 0, 0, 0, +UNUSED static const Window sUnknown_80E6AEC = { + 0, 3, 3, 8, 24, 5, @@ -210,8 +210,8 @@ UNUSED static const MenuItem sUnknown_80E6B04[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6B78 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6B78 = { + 0, 3, 3, 8, 24, 5, @@ -226,8 +226,8 @@ static const MenuItem sUnknown_80E6B90[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6BF4 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6BF4 = { + 0, 3, 3, 8, 24, 5, @@ -242,8 +242,8 @@ static const MenuItem sUnknown_80E6C0C[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6C50 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6C50 = { + 0, 3, 3, 8, 24, 5, @@ -258,8 +258,8 @@ static const MenuItem sUnknown_80E6C68[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6CD0 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6CD0 = { + 0, 3, 3, 8, 24, 5, @@ -274,8 +274,8 @@ static const MenuItem sUnknown_80E6CE8[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6D54 = { - 0, 0, 0, 0, +static const Window sUnknown_80E6D54 = { + 0, 3, 3, 8, 24, 5, @@ -290,8 +290,8 @@ static const MenuItem sUnknown_80E6D6C[] = { {NULL, 3}, }; -static const UnkTextStruct2 sUnknown_80E6DDC = { - 0, 0, 0, 0, +static const Window sUnknown_80E6DDC = { + 0, 3, 3, 8, 24, 5, @@ -304,4 +304,4 @@ static const MenuItem sUnknown_80E6DF4[] = { {_("{CENTER_ALIGN}Communication failed."), 5}, {_("{CENTER_ALIGN}Please check it again."), 5}, {NULL, 3}, -}; \ No newline at end of file +}; diff --git a/src/data/party_list_menu.h b/src/data/party_list_menu.h index 33a2d849e..ef5bba45b 100644 --- a/src/data/party_list_menu.h +++ b/src/data/party_list_menu.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DD310 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD310 = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DD310 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD328 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD328 = { + 0, 0x03, 0x13, 0x03, 0x08, 0x03, @@ -16,8 +16,8 @@ static const UnkTextStruct2 sUnknown_80DD328 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD340 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD340 = { + 0, 0x03, 0x14, 0x04, 0x06, 0x03, @@ -25,8 +25,8 @@ static const UnkTextStruct2 sUnknown_80DD340 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD358 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD358 = { + 0, 0x03, 0x02, 0x11, 0x1A, 0x02, @@ -34,8 +34,8 @@ static const UnkTextStruct2 sUnknown_80DD358 = { NULL }; -static const UnkTextStruct2 sUnknown_80DD370 = { - 0x00, 0x00, 0x00, 0x00, +static const Window sUnknown_80DD370 = { + 0, 0x03, 0x02, 0x03, 0x0F, 0x02, @@ -103,4 +103,4 @@ ALIGNED(4) static const u8 sPartyMenuSummary[] = "Summary"; ALIGNED(4) static const u8 sPartyMenuMoves[] = "Moves"; ALIGNED(4) static const u8 sPartyMenuCheckIQ[] = "Check IQ"; ALIGNED(4) static const u8 sPartyMenuItemPlaceholder[] = _("Item: {COLOR GREEN}{MOVE_ITEM_0}{RESET} "); -ALIGNED(4) static const u8 sUnknown_80DD6E0[] = "%s"; \ No newline at end of file +ALIGNED(4) static const u8 sUnknown_80DD6E0[] = "%s"; diff --git a/src/data/personality_test1.h b/src/data/personality_test1.h index 5e939f674..3bd46e7a4 100644 --- a/src/data/personality_test1.h +++ b/src/data/personality_test1.h @@ -819,11 +819,11 @@ static const u8* const sPersonalityTypeDescriptionTable[NUM_PERSONALITIES] = { [QUIRKY] = DESC_QUIRKY }; -static const UnkTextStruct2 sUnknown_80F4244 = { - 0, 0, 0, 0, +static const Window sUnknown_80F4244 = { + 0, 5, 12, 6, 5, 5, 5, 0, NULL -}; \ No newline at end of file +}; diff --git a/src/data/personality_test2.h b/src/data/personality_test2.h index 5f329d14f..4bf932a2c 100644 --- a/src/data/personality_test2.h +++ b/src/data/personality_test2.h @@ -12,9 +12,9 @@ const s16 gPartners[NUM_PARTNERS] = MONSTER_MUDKIP }; -const UnkTextStruct2 gUnknown_80F4278 = +const Window gUnknown_80F4278 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -22,9 +22,9 @@ const UnkTextStruct2 gUnknown_80F4278 = NULL }; -const UnkTextStruct2 gUnknown_80F4290 = +const Window gUnknown_80F4290 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x06, 0x02, 0x02, 0x09, 0x0B, @@ -32,9 +32,9 @@ const UnkTextStruct2 gUnknown_80F4290 = NULL }; -const UnkTextStruct2 gUnknown_80F42A8 = +const Window gUnknown_80F42A8 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x05, 0x0E, 0x04, 0x05, 0x05, @@ -42,4 +42,4 @@ const UnkTextStruct2 gUnknown_80F42A8 = NULL }; -const char gPartnerSelectionHeaderText[] = _("Pokémon"); \ No newline at end of file +const char gPartnerSelectionHeaderText[] = _("Pokémon"); diff --git a/src/data/pokemon_news1.h b/src/data/pokemon_news1.h index 96d888cd2..263418f51 100644 --- a/src/data/pokemon_news1.h +++ b/src/data/pokemon_news1.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DFBD0 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFBD0 = { + 0, 3, 0, 0, 0, 0, @@ -7,9 +7,9 @@ static const UnkTextStruct2 sUnknown_80DFBD0 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DFBE8 = {1, 0, 12, 0}; -static const UnkTextStruct2 sUnknown_80DFBEC = { - 0, 0, 0, 0, +static const WindowHeader sUnknown_80DFBE8 = {1, 0, 12, 0}; +static const Window sUnknown_80DFBEC = { + 0, 6, 2, 2, 24, 14, diff --git a/src/data/pokemon_news2.h b/src/data/pokemon_news2.h index 9c328d73f..4421b92d1 100644 --- a/src/data/pokemon_news2.h +++ b/src/data/pokemon_news2.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DFC18 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFC18 = { + 0, 3, 0, 0, 0, 0, @@ -7,9 +7,9 @@ static const UnkTextStruct2 sUnknown_80DFC18 = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DFC30 = {1, 0, 22, 0}; -static const UnkTextStruct2 sUnknown_80DFC34 = { - 0, 0, 0, 0, +static const WindowHeader sUnknown_80DFC30 = {1, 0, 22, 0}; +static const Window sUnknown_80DFC34 = { + 0, 6, 2, 2, 26, 16, diff --git a/src/data/pokemon_news3.h b/src/data/pokemon_news3.h index 9025cce23..a3219ea5b 100644 --- a/src/data/pokemon_news3.h +++ b/src/data/pokemon_news3.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DFC5C = { - 0, 0, 0, 0, +static const Window sUnknown_80DFC5C = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DFC5C = { NULL }; -static const UnkTextStruct2 sUnknown_80DFC74 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFC74 = { + 0, 6, 2, 2, 24, 14, @@ -16,4 +16,4 @@ static const UnkTextStruct2 sUnknown_80DFC74 = { NULL }; -ALIGNED(4) static const u8 sMailbox[] = _("Mailbox"); \ No newline at end of file +ALIGNED(4) static const u8 sMailbox[] = _("Mailbox"); diff --git a/src/data/post_office_guide2.h b/src/data/post_office_guide2.h index 190161e6a..879a6f9be 100644 --- a/src/data/post_office_guide2.h +++ b/src/data/post_office_guide2.h @@ -1,6 +1,6 @@ -static const UnkTextStruct2 sUnknown_80E1EFC = +static const Window sUnknown_80E1EFC = { - 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, @@ -8,11 +8,11 @@ static const UnkTextStruct2 sUnknown_80E1EFC = NULL }; -static const UnkTextStruct2_sub2 sUnknown_80E1F14 = {1, 0, 8, 0}; +static const WindowHeader sUnknown_80E1F14 = {1, 0, 8, 0}; -static const UnkTextStruct2 sUnknown_80E1F18 = +static const Window sUnknown_80E1F18 = { - 0, 0, 0, 0, + 0, 6, 2, 2, 20, 4, diff --git a/src/data/trade_items_menu.h b/src/data/trade_items_menu.h index e56aab7d9..fc0fe5349 100644 --- a/src/data/trade_items_menu.h +++ b/src/data/trade_items_menu.h @@ -10,9 +10,9 @@ static const MenuItem sUnknown_80E60D4[] = { {NULL, 0}, }; -static const UnkTextStruct2 sUnknown_80E60EC = +static const Window sUnknown_80E60EC = { - 0, 0, 0, 0, + 0, 3, 21, 4, 6, 5, @@ -27,9 +27,9 @@ static const MenuItem sUnknown_80E6104[] = { {NULL, 0}, }; -static const UnkTextStruct2 unused = +static const Window unused = { - 0, 0, 0, 0, + 0, 3, 22, 9, 5, 3, @@ -43,9 +43,9 @@ static const MenuItem sUnknown_80E6154[] = { {NULL, 0}, }; -static const UnkTextStruct2 sUnknown_80E6174 = +static const Window sUnknown_80E6174 = { - 0, 0, 0, 0, + 0, 3, 21, 13, 6, 4, @@ -109,4 +109,4 @@ ALIGNED(4) static const u8 sNoResponseCheckSenderReceiver[] = _( "Please make sure the sender and receiver\n" "are ready, then redo this from the start."); -ALIGNED(4) static const u8 sHowMany[] = "How many?"; \ No newline at end of file +ALIGNED(4) static const u8 sHowMany[] = "How many?"; diff --git a/src/data/wigglytuff_shop1.h b/src/data/wigglytuff_shop1.h index bfce03b7e..4857a05a2 100644 --- a/src/data/wigglytuff_shop1.h +++ b/src/data/wigglytuff_shop1.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DC464 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC464 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DC464 = { NULL }; -static const UnkTextStruct2 sUnknown_80DC47C = { - 0, 0, 0, 0, +static const Window sUnknown_80DC47C = { + 0, 6, 2, 2, 17, 17, @@ -18,4 +18,4 @@ static const UnkTextStruct2 sUnknown_80DC47C = { ALIGNED(4) static const u8 sFriendAreas[] = _("Friend Areas"); ALIGNED(4) static const u8 sFmtRedString[] = _("{COLOR RED}%s{RESET}"); -ALIGNED(4) static const u8 sFmtGreenString[] = _("{COLOR GREEN}%s{RESET}"); \ No newline at end of file +ALIGNED(4) static const u8 sFmtGreenString[] = _("{COLOR GREEN}%s{RESET}"); diff --git a/src/data/wigglytuff_shop2.h b/src/data/wigglytuff_shop2.h index 70e999735..755dc97f3 100644 --- a/src/data/wigglytuff_shop2.h +++ b/src/data/wigglytuff_shop2.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DC4BC = { - 0, 0, 0, 0, +static const Window sUnknown_80DC4BC = { + 0, 3, 0, 0, 0, 0, @@ -7,9 +7,9 @@ static const UnkTextStruct2 sUnknown_80DC4BC = { NULL }; -static const UnkTextStruct2_sub2 sUnknown_80DC4D4 = {1, 0, 18, 0}; -static const UnkTextStruct2 sUnknown_80DC4D8 = { - 0, 0, 0, 0, +static const WindowHeader sUnknown_80DC4D4 = {1, 0, 18, 0}; +static const Window sUnknown_80DC4D8 = { + 0, 6, 2, 2, 26, 17, diff --git a/src/data/wigglytuff_shop3.h b/src/data/wigglytuff_shop3.h index 39ad2944c..664450bdd 100644 --- a/src/data/wigglytuff_shop3.h +++ b/src/data/wigglytuff_shop3.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DC534 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC534 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DC534 = { NULL }; -static const UnkTextStruct2 sUnknown_80DC54C = { - 0, 0, 0, 0, +static const Window sUnknown_80DC54C = { + 0, 3, 21, 4, 6, 3, @@ -16,11 +16,11 @@ static const UnkTextStruct2 sUnknown_80DC54C = { NULL }; -static const UnkTextStruct2 sUnknown_80DC564 = { - 0, 0, 0, 0, +static const Window sUnknown_80DC564 = { + 0, 3, 21, 14, 6, 3, 3, 0, NULL -}; \ No newline at end of file +}; diff --git a/src/data/wonder_mail_1.h b/src/data/wonder_mail_1.h index f4df68bf9..dc01b51b1 100644 --- a/src/data/wonder_mail_1.h +++ b/src/data/wonder_mail_1.h @@ -40,9 +40,9 @@ const MenuItem gUnknown_80DDAA0[] = { {NULL, 10}, }; -const UnkTextStruct2 gUnknown_80DDACC = +const Window gUnknown_80DDACC = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x16, 0x07, 0x06, 0x04, @@ -50,9 +50,9 @@ const UnkTextStruct2 gUnknown_80DDACC = NULL }; -const UnkTextStruct2 gUnknown_80DDAE4 = +const Window gUnknown_80DDAE4 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x16, 0x06, 0x06, 0x04, @@ -338,4 +338,4 @@ ALIGNED(4) const char gWonderMailSOSPasswordIncorrectText[] = _( ALIGNED(4) const char gWonderMailAOKMailReceivedText[] = _( ": I received the {COLOR CYAN_G}SOS Mail{RESET}.\n" - "Your adventure will be saved."); \ No newline at end of file + "Your adventure will be saved."); diff --git a/src/data/wonder_mail_802C10C.h b/src/data/wonder_mail_802C10C.h index 7aa4081fa..29c1dd42d 100644 --- a/src/data/wonder_mail_802C10C.h +++ b/src/data/wonder_mail_802C10C.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DFC9C = { - 0, 0, 0, 0, +static const Window sUnknown_80DFC9C = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DFC9C = { NULL }; -static const UnkTextStruct2 sUnknown_80DFCB4 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFCB4 = { + 0, 6, 2, 2, 24, 14, @@ -16,4 +16,4 @@ static const UnkTextStruct2 sUnknown_80DFCB4 = { NULL }; -ALIGNED(4) static const u8 sBulletinBoard[] = _("Bulletin Board"); \ No newline at end of file +ALIGNED(4) static const u8 sBulletinBoard[] = _("Bulletin Board"); diff --git a/src/data/wonder_mail_802C4C8.h b/src/data/wonder_mail_802C4C8.h index 0f34b3b24..ab724e7c8 100644 --- a/src/data/wonder_mail_802C4C8.h +++ b/src/data/wonder_mail_802C4C8.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DFCE4 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFCE4 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DFCE4 = { NULL }; -static const UnkTextStruct2 sUnknown_80DFCFC = { - 0, 0, 0, 0, +static const Window sUnknown_80DFCFC = { + 0, 6, 2, 2, 24, 14, @@ -16,4 +16,4 @@ static const UnkTextStruct2 sUnknown_80DFCFC = { NULL }; -ALIGNED(4) static const u8 sJobList[] = _("Job List"); \ No newline at end of file +ALIGNED(4) static const u8 sJobList[] = _("Job List"); diff --git a/src/data/wonder_mail_802C860.h b/src/data/wonder_mail_802C860.h index 4b8e71810..fbc98490e 100644 --- a/src/data/wonder_mail_802C860.h +++ b/src/data/wonder_mail_802C860.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DFD28 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFD28 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DFD28 = { NULL }; -static const UnkTextStruct2 sUnknown_80DFD40 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFD40 = { + 0, 4, 21, 6, 7, 3, @@ -16,8 +16,8 @@ static const UnkTextStruct2 sUnknown_80DFD40 = { NULL }; -static const UnkTextStruct2 sUnknown_80DFD58 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFD58 = { + 0, 4, 21, 15, 6, 3, @@ -26,4 +26,4 @@ static const UnkTextStruct2 sUnknown_80DFD58 = { }; ALIGNED(4) static const u8 sTakeJob[] = _("Take Job"); -ALIGNED(4) static const u8 sSuspend[] = _("Suspend"); \ No newline at end of file +ALIGNED(4) static const u8 sSuspend[] = _("Suspend"); diff --git a/src/data/wonder_mail_802CDD4.h b/src/data/wonder_mail_802CDD4.h index 7c1f58c7b..ee7620403 100644 --- a/src/data/wonder_mail_802CDD4.h +++ b/src/data/wonder_mail_802CDD4.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DFD8C = { - 0, 0, 0, 0, +static const Window sUnknown_80DFD8C = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DFD8C = { NULL }; -static const UnkTextStruct2 sUnknown_80DFDA4 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFDA4 = { + 0, 6, 2, 2, 24, 14, @@ -16,4 +16,4 @@ static const UnkTextStruct2 sUnknown_80DFDA4 = { NULL }; -ALIGNED(4) static const u8 sRescueEvent[] = _("RESCUE EVENT"); \ No newline at end of file +ALIGNED(4) static const u8 sRescueEvent[] = _("RESCUE EVENT"); diff --git a/src/data/wonder_mail_802D098.h b/src/data/wonder_mail_802D098.h index 7c0839f67..b0c43817a 100644 --- a/src/data/wonder_mail_802D098.h +++ b/src/data/wonder_mail_802D098.h @@ -1,5 +1,5 @@ -static const UnkTextStruct2 sUnknown_80DFDD4 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFDD4 = { + 0, 3, 0, 0, 0, 0, @@ -7,8 +7,8 @@ static const UnkTextStruct2 sUnknown_80DFDD4 = { NULL }; -UNUSED static const UnkTextStruct2 sUnknown_80DFDEC = { - 0, 0, 0, 0, +UNUSED static const Window sUnknown_80DFDEC = { + 0, 3, 3, 3, 7, 3, @@ -16,8 +16,8 @@ UNUSED static const UnkTextStruct2 sUnknown_80DFDEC = { NULL }; -static const UnkTextStruct2 sUnknown_80DFE04 = { - 0, 0, 0, 0, +static const Window sUnknown_80DFE04 = { + 0, 3, 21, 6, 7, 3, @@ -25,8 +25,8 @@ static const UnkTextStruct2 sUnknown_80DFE04 = { NULL }; -static const UnkTextStruct2 sUnknown_80DFE1C = { - 0, 0, 0, 0, +static const Window sUnknown_80DFE1C = { + 0, 3, 21, 15, 7, 3, @@ -34,8 +34,8 @@ static const UnkTextStruct2 sUnknown_80DFE1C = { NULL }; -UNUSED static const UnkTextStruct2 sUnknown_80DFE34 = { - 0, 0, 0, 0, +UNUSED static const Window sUnknown_80DFE34 = { + 0, 3, 21, 15, 6, 3, @@ -83,4 +83,4 @@ ALIGNED(4) static const u8 sJobListFullPleaseDelete[] = _( "Please select and delete unwanted mail."); ALIGNED(4) static const u8 sNewMail[] = _("New Mail"); -ALIGNED(4) static const u8 sOldMail[] = _("Old Mail"); \ No newline at end of file +ALIGNED(4) static const u8 sOldMail[] = _("Old Mail"); diff --git a/src/debug_menu1.c b/src/debug_menu1.c index 3b34de591..1d4079344 100644 --- a/src/debug_menu1.c +++ b/src/debug_menu1.c @@ -47,17 +47,17 @@ void CreateDebugMenu(void) } for (i = 0; i < 4; i++) - sDebugMenu->unk140[i] = sUnknown_80E7D40; + sDebugMenu->unk140.id[i] = sUnknown_80E7D40; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sDebugMenu->unk140, TRUE, TRUE); + ShowWindows(&sDebugMenu->unk140, TRUE, TRUE); SetDebugMenuItems(); } void DeleteDebugMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (sDebugMenu != NULL) { MemoryFree(sDebugMenu); sDebugMenu = NULL; @@ -118,13 +118,13 @@ u32 UpdateDebugMenu(void) static void SetDebugMenuItems(void) { - SetMenuItems(sDebugMenu->unk0, sDebugMenu->unk140, 0, &sUnknown_80E7D58, sDebugMenuItems, TRUE, 13, FALSE); + SetMenuItems(sDebugMenu->unk0, &sDebugMenu->unk140, 0, &sUnknown_80E7D58, sDebugMenuItems, TRUE, 13, FALSE); sub_8035CF4(sDebugMenu->unk0, 0, 1); } static void sub_803A3A0(void) { - sub_8035CC0(sDebugMenu->unk140, 0); + sub_8035CC0(&sDebugMenu->unk140, 0); } static void sub_803A3BC(void) diff --git a/src/debug_menu2.c b/src/debug_menu2.c index 39a8c6d67..af32641b8 100644 --- a/src/debug_menu2.c +++ b/src/debug_menu2.c @@ -33,7 +33,7 @@ static void sub_803A86C(void); UNUSED static bool8 sub_803A45C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B3F0 = MemoryAlloc(sizeof(unkStruct_203B3F0), 8); sub_803A504(0); return TRUE; @@ -80,23 +80,23 @@ static void sub_803A51C(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B3F0->unkD8); + RestoreUnkTextStruct_8006518(&sUnknown_203B3F0->unkD8); switch (sUnknown_203B3F0->state) { case 3: - sUnknown_203B3F0->unkD8[1] = sUnknown_80E7E64; + sUnknown_203B3F0->unkD8.id[1] = sUnknown_80E7E64; break; case 2: - sUnknown_203B3F0->unkD8[2] = sUnknown_80E7E4C; + sUnknown_203B3F0->unkD8.id[2] = sUnknown_80E7E4C; break; default: for (i = 0; i < 4; i++) - sUnknown_203B3F0->unkD8[i] = sUnknown_80E7E34; + sUnknown_203B3F0->unkD8.id[i] = sUnknown_80E7E34; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B3F0->unkD8, TRUE, TRUE); + ShowWindows(&sUnknown_203B3F0->unkD8, TRUE, TRUE); } static void sub_803A5A0(void) @@ -121,7 +121,7 @@ static void sub_803A5A0(void) sUnknown_203B3F0->unk9C.unkC = 999; sUnknown_203B3F0->unk9C.unk4 = gTeamInventoryRef->teamStorage[sUnknown_203B3F0->id]; sUnknown_203B3F0->unk9C.unk14 = 1; - sUnknown_203B3F0->unk9C.unk18 = &sUnknown_203B3F0->unkD8[1]; + sUnknown_203B3F0->unk9C.unk18 = &sUnknown_203B3F0->unkD8.id[1]; sUnknown_203B3F0->unk9C.unk1C = 44; sUnknown_203B3F0->unk9C.unk20 = 18; sub_8013AA0(&sUnknown_203B3F0->unk9C); diff --git a/src/debug_menu3.c b/src/debug_menu3.c index dffb89dab..ab1f7156f 100644 --- a/src/debug_menu3.c +++ b/src/debug_menu3.c @@ -35,7 +35,7 @@ static bool8 sub_803ABC8(void); UNUSED static bool8 sub_803A888(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B3F4 = MemoryAlloc(sizeof(unkStruct_203B3F4), 8); sub_803A924(0); return TRUE; @@ -79,17 +79,17 @@ static void sub_803A93C(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B3F4->unk9C); + RestoreUnkTextStruct_8006518(&sUnknown_203B3F4->unk9C); if (sUnknown_203B3F4->state == 2) - sUnknown_203B3F4->unk9C[2] = sUnknown_80E7EA4; + sUnknown_203B3F4->unk9C.id[2] = sUnknown_80E7EA4; else { for(i = 0; i < 4; i++) - sUnknown_203B3F4->unk9C[i] = sUnknown_80E7E8C; + sUnknown_203B3F4->unk9C.id[i] = sUnknown_80E7E8C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B3F4->unk9C, TRUE, TRUE); + ShowWindows(&sUnknown_203B3F4->unk9C, TRUE, TRUE); } static void sub_803A9AC(void) diff --git a/src/debug_menu4.c b/src/debug_menu4.c index a808ecef5..482c695fc 100644 --- a/src/debug_menu4.c +++ b/src/debug_menu4.c @@ -82,25 +82,25 @@ static void sub_803ACE8(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B3F8->unkE0); + RestoreUnkTextStruct_8006518(&sUnknown_203B3F8->unkE0); switch (sUnknown_203B3F8->state) { case 3: sub_803AEB0(); - sUnknown_203B3F8->unkE0[2] = sUnknown_80E7EEC; - sub_8012CAC(&sUnknown_203B3F8->unkE0[2], sUnknown_203B3F8->unk90); + sUnknown_203B3F8->unkE0.id[2] = sUnknown_80E7EEC; + sub_8012CAC(&sUnknown_203B3F8->unkE0.id[2], sUnknown_203B3F8->unk90); break; case 5: - sUnknown_203B3F8->unkE0[3] = sUnknown_80E7F04; + sUnknown_203B3F8->unkE0.id[3] = sUnknown_80E7F04; break; default: for (i = 0; i < 4; i++) - sUnknown_203B3F8->unkE0[i] = sUnknown_80E7ED4; + sUnknown_203B3F8->unkE0.id[i] = sUnknown_80E7ED4; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B3F8->unkE0, TRUE, TRUE); + ShowWindows(&sUnknown_203B3F8->unkE0, TRUE, TRUE); } static void sub_803AD88(void) @@ -122,7 +122,7 @@ static void sub_803AD88(void) sUnknown_203B3F8->unk60.unkC = 100; sUnknown_203B3F8->unk60.unk4 = sUnknown_203B3F8->pokemon->level; sUnknown_203B3F8->unk60.unk14 = 3; - sUnknown_203B3F8->unk60.unk18 = &sUnknown_203B3F8->unkE0[3]; + sUnknown_203B3F8->unk60.unk18 = &sUnknown_203B3F8->unkE0.id[3]; sUnknown_203B3F8->unk60.unk1C = 44; sUnknown_203B3F8->unk60.unk20 = 18; sub_8013AA0(&sUnknown_203B3F8->unk60); diff --git a/src/ds_menus.c b/src/ds_menus.c index d5a75f547..1db68d8c8 100644 --- a/src/ds_menus.c +++ b/src/ds_menus.c @@ -29,5 +29,5 @@ u32 UpdateWirelessCommsMenu(void) void CleanWirelessCommsMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); } diff --git a/src/dungeon_cutscenes.c b/src/dungeon_cutscenes.c index 31d373ea0..010fe490c 100644 --- a/src/dungeon_cutscenes.c +++ b/src/dungeon_cutscenes.c @@ -395,6 +395,7 @@ extern void sub_80460F8(DungeonPos *, Item *, u8); extern u8 sub_8044B28(void); extern bool8 sub_8085B80(struct_8085B80 *); +void sub_8085F44(s32); void sub_808BBA8(Entity * ); void DeoxysScreenFlash(void); void sub_8086A54(Entity *); @@ -1264,158 +1265,49 @@ void MoltresDropInEffect(Entity * moltresEntity) } } -NAKED -void MoltresScreenFlash1(s32 r0, s32 r1) +void MoltresScreenFlash1(s32 xArg, s32 yArg) { - asm_unified("\tpush {lr}\n" - "\tsub sp, 0x8\n" - "\tadds r3, r1, 0\n" - "\tlsls r1, r0, 1\n" - "\tadds r1, r0\n" - "\tlsls r1, 11\n" - "\tmovs r2, 0xC0\n" - "\tlsls r2, 4\n" - "\tadds r0, r1, r2\n" - "\tcmp r0, 0\n" - "\tbge _08087D98\n" - "\tadds r0, 0xFF\n" -"_08087D98:\n" - "\tlsls r0, 8\n" - "\tlsrs r0, 16\n" - "\tldr r1, _08087DE0\n" - "\tldr r2, [sp, 0x4]\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp, 0x4]\n" - "\tlsls r0, r3, 1\n" - "\tadds r0, r3\n" - "\tlsls r0, 11\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 5\n" - "\tadds r0, r1\n" - "\tcmp r0, 0\n" - "\tbge _08087DB8\n" - "\tadds r0, 0xFF\n" -"_08087DB8:\n" - "\tlsls r0, 8\n" - "\tlsrs r0, 16\n" - "\tlsls r0, 16\n" - "\tldr r1, _08087DE4\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp, 0x4]\n" - "\tmovs r0, 0xB9\n" - "\tlsls r0, 1\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp]\n" - "\tmovs r1, 0x10\n" - "\tmovs r2, 0\n" - "\tadd r3, sp, 0x4\n" - "\tbl sub_8085EC8\n" - "\tadd sp, 0x8\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08087DE0: .4byte 0xffff0000\n" -"_08087DE4: .4byte 0x0000ffff"); + s32 x, y; + DungeonPos newPos; + + x = X_POS_TO_PIXELPOS(xArg); + newPos.x = x / 256; + + y = Y_POS_TO_PIXELPOS(yArg); + newPos.y = y / 256; + + sub_8085EC8(370,16,0,&newPos,0); } -NAKED -void MoltresScreenFlash2(s32 r0, s32 r1) +void MoltresScreenFlash2(s32 xArg, s32 yArg) { - asm_unified("\tpush {r4-r6,lr}\n" - "\tsub sp, 0x8\n" - "\tadds r3, r1, 0\n" - "\tlsls r1, r0, 1\n" - "\tadds r1, r0\n" - "\tlsls r1, 11\n" - "\tmovs r2, 0xC0\n" - "\tlsls r2, 4\n" - "\tadds r0, r1, r2\n" - "\tcmp r0, 0\n" - "\tbge _08087E00\n" - "\tadds r0, 0xFF\n" -"_08087E00:\n" - "\tlsls r0, 8\n" - "\tlsrs r0, 16\n" - "\tldr r1, _08087EA8\n" - "\tldr r2, [sp, 0x4]\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp, 0x4]\n" - "\tlsls r0, r3, 1\n" - "\tadds r0, r3\n" - "\tlsls r0, 11\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 5\n" - "\tadds r0, r1\n" - "\tcmp r0, 0\n" - "\tbge _08087E20\n" - "\tadds r0, 0xFF\n" -"_08087E20:\n" - "\tlsls r0, 8\n" - "\tlsrs r0, 16\n" - "\tlsls r0, 16\n" - "\tldr r1, _08087EAC\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp, 0x4]\n" - "\tmovs r0, 0xB9\n" - "\tlsls r0, 1\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp]\n" - "\tmovs r1, 0x16\n" - "\tmovs r2, 0\n" - "\tadd r3, sp, 0x4\n" - "\tbl sub_8085EC8\n" - "\tadds r6, r0, 0\n" - "\tmovs r0, 0xF6\n" - "\tlsls r0, 1\n" - "\tbl PlaySoundEffect\n" - "\tmovs r4, 0xFA\n" - "\tmovs r5, 0x1\n" -"_08087E4E:\n" - "\tstr r5, [sp]\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x1\n" - "\tbl SetDungeonBGColorRGB\n" - "\tmovs r0, 0x46\n" - "\tbl sub_803E46C\n" - "\tsubs r4, 0xA\n" - "\tcmp r4, 0x13\n" - "\tbgt _08087E4E\n" - "\tmovs r0, 0xA\n" - "\tmovs r1, 0x46\n" - "\tbl sub_803E708\n" - "\tmovs r4, 0xFA\n" - "\tmovs r5, 0x1\n" -"_08087E74:\n" - "\tstr r5, [sp]\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x1\n" - "\tbl SetDungeonBGColorRGB\n" - "\tmovs r0, 0x46\n" - "\tbl sub_803E46C\n" - "\tsubs r4, 0xA\n" - "\tcmp r4, 0\n" - "\tbge _08087E74\n" - "\tmovs r0, 0xA\n" - "\tmovs r1, 0x46\n" - "\tbl sub_803E708\n" - "\tbl sub_8085EB0\n" - "\tadds r0, r6, 0\n" - "\tbl sub_8085F44\n" - "\tadd sp, 0x8\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08087EA8: .4byte 0xffff0000\n" -"_08087EAC: .4byte 0x0000ffff"); + s32 r6; + s32 i, x, y; + DungeonPos newPos; + + x = X_POS_TO_PIXELPOS(xArg); + newPos.x = x / 256; + + y = Y_POS_TO_PIXELPOS(yArg); + newPos.y = y / 256; + + r6 = sub_8085EC8(370,22,0,&newPos,0); + PlaySoundEffect(0x1EC); + + for (i = 250; i >= 20; i -= 10) { + SetDungeonBGColorRGB(i, 0, 0, 1, 1); + sub_803E46C(0x46); + } + sub_803E708(0xA, 0x46); + + for (i = 250; i >= 0; i -= 10) { + SetDungeonBGColorRGB(i, 0, 0, 1, 1); + sub_803E46C(0x46); + } + sub_803E708(0xA, 0x46); + + sub_8085EB0(); + sub_8085F44(r6); } void MoltresScreenFlash3(void) @@ -4203,20 +4095,16 @@ void JirachiWishGrantFlash(void) void sub_808BB3C(DungeonPos *pos1) { -#ifndef NONMATCHING - register s32 iVar1 asm("r0"); -#else - s32 iVar1; -#endif - DungeonPos newPos; + s32 x, y; + DungeonPos newPos; - iVar1 = pos1->x * 0x1800 + 0xc00; - newPos.x = iVar1 / 256; + x = X_POS_TO_PIXELPOS(pos1->x); + newPos.x = x / 256; - iVar1 = pos1->y * 0x1800 + 0x1000; + y = Y_POS_TO_PIXELPOS(pos1->y); + newPos.y = y / 256; - newPos.y = iVar1 / 256; - sub_8085EC8(100,0,0,&newPos,0); + sub_8085EC8(100,0,0,&newPos,0); } void sub_808BBA8(Entity *jirachiEntity) diff --git a/src/dungeon_map_access.c b/src/dungeon_map_access.c index c0d47fe11..858fd80a5 100644 --- a/src/dungeon_map_access.c +++ b/src/dungeon_map_access.c @@ -157,7 +157,7 @@ void sub_8049884(void) } } -void sub_80498A8(int x,int y) +void sub_80498A8(s32 x,s32 y) { volatile u32 sp_0x0; volatile u32 sp_0x4; @@ -469,16 +469,16 @@ void sub_8049ED4(void) r7 = r10 + (r8 * 3); tile = GetTile(var_48, var_44); if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r7]; + src = &dungeon->unk12A18[26][r7]; } else if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r7]; + src = &dungeon->unk12A18[25][r7]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r7]; } else if (tile->spawnOrVisibilityFlags & 4) { - src = &dungeon->unk12BFE[r7]; + src = &dungeon->unk12A18[27][r7]; } else { @@ -514,16 +514,16 @@ void sub_8049ED4(void) r7 = r10; tile = GetTile(var_48, var_44); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r7]; + src = &dungeon->unk12A18[25][r7]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r7]; + src = &dungeon->unk12A18[26][r7]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r7]; } else if (tile->spawnOrVisibilityFlags & 4) { - src = &dungeon->unk12BFE[r7]; + src = &dungeon->unk12A18[27][r7]; } else { @@ -587,10 +587,10 @@ void sub_804A1F0(s32 a0, s32 a1) r6 = var_28 + r8 * 3; tile = GetTile(var_2C, r10); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r6]; + src = &dungeon->unk12A18[25][r6]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r6]; + src = &dungeon->unk12A18[26][r6]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r6]; @@ -628,10 +628,10 @@ void sub_804A1F0(s32 a0, s32 a1) r6 = var_28; tile = GetTile(var_2C, r10); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r6]; + src = &dungeon->unk12A18[25][r6]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r6]; + src = &dungeon->unk12A18[26][r6]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r6]; @@ -688,10 +688,10 @@ void sub_804A49C(s32 a0, s32 a1) r6 = r9 + var_28 * 3; tile = GetTile(r10, var_2C); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r6]; + src = &dungeon->unk12A18[25][r6]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r6]; + src = &dungeon->unk12A18[26][r6]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r6]; @@ -729,10 +729,10 @@ void sub_804A49C(s32 a0, s32 a1) r6 = var_28 * 3; tile = GetTile(r10, var_2C); if (tile->terrainType & TERRAIN_TYPE_SHOP) { - src = &dungeon->unk12BDA[r6]; + src = &dungeon->unk12A18[25][r6]; } else if (tile->terrainType & TERRAIN_TYPE_UNK_x1000) { - src = &dungeon->unk12BEC[r6]; + src = &dungeon->unk12A18[26][r6]; } else if (hallucinating) { src = &dungeon->unk11884[tile->unk8][r6]; @@ -803,7 +803,7 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) var_48.y = r9; if (a2 != 0) { if (r10 == pos->x && r9 == pos->y) { - src = &dungeon->unk12B92[r5]; + src = &dungeon->unk12A18[21][r5]; } else { src = &dungeon->unk13554[r5]; @@ -816,14 +816,14 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) } if (k == 6) { if (gGameOptionsRef->gridEnable) { - src = &dungeon->unk12B80[r5]; + src = &dungeon->unk12A18[20][r5]; } else { src = &dungeon->unk13554[r5]; } } else { - src = &dungeon->unk12B92[r5]; + src = &dungeon->unk12A18[21][r5]; } } else { @@ -845,7 +845,7 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) var_48.y = r9; if (a2 != 0) { if (r10 == pos->x && r9 == pos->y) { - src = &dungeon->unk12B92[r5]; + src = &dungeon->unk12A18[21][r5]; } else { src = &dungeon->unk13554[r5]; @@ -858,14 +858,14 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) } if (k == 6) { if (gGameOptionsRef->gridEnable) { - src = &dungeon->unk12B80[r5]; + src = &dungeon->unk12A18[20][r5]; } else { src = &dungeon->unk13554[r5]; } } else { - src = &dungeon->unk12B92[r5]; + src = &dungeon->unk12A18[21][r5]; } } else { diff --git a/src/dungeon_message.c b/src/dungeon_message.c index dab15b7da..ccbaccb88 100644 --- a/src/dungeon_message.c +++ b/src/dungeon_message.c @@ -4,6 +4,7 @@ #include "structs/dungeon_entity.h" #include "code_803E46C.h" #include "code_803E724.h" +#include "code_8009804.h" #include "string_format.h" #include "code_800E9E4.h" #include "menu_input.h" @@ -45,7 +46,6 @@ extern u32 gUnknown_202EDD0; extern u8 gUnknown_203B40C; extern u8 gUnknown_202EE01; extern s32 gUnknown_202EDCC; -extern Palette32 gFontPalette[]; extern const u8 gUnknown_80F7AE8[]; extern const u8 gUnknown_80F7AF8[]; @@ -65,17 +65,6 @@ EWRAM_INIT u8 gUnknown_203B434 = 1; #define FLAG_CAN_SCROLL_UP 0x1 #define FLAG_CAN_SCROLL_DOWN 0x2 -// Needed to match :shrug: -static inline void InlineStrcpy(u8 *dst, const u8 *src) -{ - strcpy(dst, src); -} - -static inline void InlineStrncpy(u8 *dst, const u8 *src, s32 n) -{ - strncpy(dst, src, n); -} - void sub_80521D0(void) { s32 i; @@ -757,7 +746,7 @@ void sub_8052FB8(const u8 *str) if (r8 < 62) { r8++; for (j = 0; j < 8; j++) { - SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[0].pal[j], r8 / 2, NULL); + SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[j], r8 / 2, NULL); } } else { @@ -788,18 +777,18 @@ void sub_8052FB8(const u8 *str) while (r8 >= 0) { for (j = 0; j < 8; j++) { - SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[0].pal[j], r8 / 2, NULL); + SetBGPaletteBufferColorRGB(240 + j, &gFontPalette[j], r8 / 2, NULL); } DrawDialogueBoxString(); sub_803E46C(9); r8--; } - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_803E46C(9); sub_8040238(); for (j = 0; j < 8; j++) { - SetBGPaletteBufferColorArray(240 + j, &gFontPalette[0].pal[j]); + SetBGPaletteBufferColorArray(240 + j, &gFontPalette[j]); } sub_803E708(8, 9); } diff --git a/src/dungeon_move.c b/src/dungeon_move.c index e732854a5..95881ee7a 100644 --- a/src/dungeon_move.c +++ b/src/dungeon_move.c @@ -1,4 +1,5 @@ #include "global.h" +#include "dungeon_move.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" #include "dungeon_message.h" @@ -304,7 +305,6 @@ s32 HandleDamagingMove(Entity *, Entity *, Move *, s24_8, s32); static s32 TryHitTarget(Entity *attacker, Entity *target, Move *move, struct DamageStruct *dmgStruct, s16 unk); static void TriggerTargetAbilityEffect(Entity *attacker); static bool8 AccuracyCalc(Entity *attacker, Entity *target, Move *move, s32 accuracyType, bool8 selfAlwaysHits); -bool8 TryUseChosenMove(struct Entity *attacker, u32 r6, s32 itemId, u32 var_30, bool32 isLinkedMove, struct Move *move); bool8 sub_8056468(Entity *entity, Move *move, const u8 *str, Entity **unkArray, bool32 itemId, bool8 arg_4, bool32 unused); bool8 sub_805744C(Entity * pokemon, Move *move, bool8 param_3); static void SetTargetsForMove(Entity **targetsArray, Entity *attacker, Move *move); @@ -2274,17 +2274,11 @@ s32 sub_8056564(Entity *entity, DungeonPos *pos, Move *move, s32 r4) if (!gDungeon->unk181e8.blinded && (GetBodySize(entInfo->apparentID) < 4 || r4 != 1)) { s32 unk6 = sub_800ECB8(sub_80412E0(move->id, GetApparentWeather(entity), 1))->unk6; - s32 x = (pos->x * 3 << 11); - s32 y = (pos->y * 3 << 11); - // This is needed for matching purposes. - s32 y2; + s32 pixelPosX = X_POS_TO_PIXELPOS(pos->x); + s32 pixelPosY = Y_POS_TO_PIXELPOS(pos->y); - x += 0xC00; - y += 0x1000; - y2 = y; - - unkSp2.x = x / 256; - unkSp2.y = y2 / 256; + unkSp2.x = pixelPosX / 256; + unkSp2.y = pixelPosY / 256; if (unk6 != 0) { s32 someRetVal; @@ -2422,8 +2416,8 @@ void sub_80566F8(Entity *attacker, Move *move, s32 a2, bool8 a3, s32 itemId, s32 var_68.y += var_48; if (sub_803F428(&var_68) && !gDungeon->unk181e8.blinded) { PixelPos pos32; - pos32.x = (var_68Before.x * 0x1800) + 0xC00; - pos32.y = (var_68Before.y * 0x1800) + 0x1000; + pos32.x = X_POS_TO_PIXELPOS(var_68Before.x); + pos32.y = Y_POS_TO_PIXELPOS(var_68Before.y); var_28 = var_30 * (var_4C << 8); var_24 = var_30 * (var_48 << 8); for (j = 0; j < 24 / var_30; j++) { diff --git a/src/dungeon_util.c b/src/dungeon_util.c index e7b32e641..fc06a04a2 100644 --- a/src/dungeon_util.c +++ b/src/dungeon_util.c @@ -179,14 +179,13 @@ void sub_804522C(void) { void sub_804535C(Entity *entity, PixelPos *pos) { - if (pos != NULL) { - (entity->pixelPos).x = pos->x; - (entity->pixelPos).y = pos->y; + entity->pixelPos.x = pos->x; + entity->pixelPos.y = pos->y; } else { - (entity->pixelPos).x = (entity->pos).x * 0x1800 + 0xc00; - (entity->pixelPos).y = (entity->pos).y * 0x1800 + 0x1000; + entity->pixelPos.x = X_POS_TO_PIXELPOS(entity->pos.x); + entity->pixelPos.y = Y_POS_TO_PIXELPOS(entity->pos.y); } } diff --git a/src/dungeon_util_1.c b/src/dungeon_util_1.c index d4873ae97..fa1d66152 100644 --- a/src/dungeon_util_1.c +++ b/src/dungeon_util_1.c @@ -239,7 +239,7 @@ void sub_80857B8(void) void sub_8085860(s32 x, s32 y) { sub_803F4A0(0); - sub_803F878(x * 0x1800 + 0xc00, y * 0x1800 + 0x1000); + sub_803F878(X_POS_TO_PIXELPOS(x), Y_POS_TO_PIXELPOS(y)); } void sub_8085890(s32 x, s32 y) diff --git a/src/event_flag.c b/src/event_flag.c index 572a97f5f..9f32181fa 100644 --- a/src/event_flag.c +++ b/src/event_flag.c @@ -14,7 +14,7 @@ #include "pokemon.h" #include "pokemon_3.h" -extern u8 gScriptVarBuffer[0x400]; +EWRAM_DATA u8 gScriptVarBuffer[0x400] = {0}; struct GroundEventTableEntry { diff --git a/src/felicity_bank.c b/src/felicity_bank.c index 1280b9034..daf809066 100644 --- a/src/felicity_bank.c +++ b/src/felicity_bank.c @@ -52,7 +52,7 @@ bool8 CreateFelicityBank(s32 mode) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sFelicityBankWork = MemoryAlloc(sizeof(FelicityBankWork), 8); sFelicityBankWork->menuAction = 0; sFelicityBankWork->mode = mode; @@ -130,32 +130,32 @@ static void sub_801645C(void) { s32 i; - RestoreUnkTextStruct_8006518(sFelicityBankWork->unkA8); + RestoreUnkTextStruct_8006518(&sFelicityBankWork->unkA8); switch (sFelicityBankWork->currState) { case 2: - sFelicityBankWork->unkA8[0].unk0 = 0x80; - sFelicityBankWork->unkA8[1].unk0 = 0x80; - sFelicityBankWork->unkA8[2].unk0 = 0x80; - sFelicityBankWork->unkA8[3] = sUnknown_80DB6F4; + sFelicityBankWork->unkA8.id[0].unk0 = 0x80; + sFelicityBankWork->unkA8.id[1].unk0 = 0x80; + sFelicityBankWork->unkA8.id[2].unk0 = 0x80; + sFelicityBankWork->unkA8.id[3] = sUnknown_80DB6F4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sFelicityBankWork->unkA8, TRUE, FALSE); + ShowWindows(&sFelicityBankWork->unkA8, TRUE, FALSE); break; case FELICITY_BANK_STORE_HOW_MUCH: case FELICITY_BANK_TAKE_HOW_MUCH: - sFelicityBankWork->unkA8[0].unk0 = 0x80; - sFelicityBankWork->unkA8[1].unk0 = 0x80; - sFelicityBankWork->unkA8[3] = sUnknown_80DB6F4; - sFelicityBankWork->unkA8[2] = sUnknown_80DB70C; + sFelicityBankWork->unkA8.id[0].unk0 = 0x80; + sFelicityBankWork->unkA8.id[1].unk0 = 0x80; + sFelicityBankWork->unkA8.id[3] = sUnknown_80DB6F4; + sFelicityBankWork->unkA8.id[2] = sUnknown_80DB70C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sFelicityBankWork->unkA8, TRUE, FALSE); + ShowWindows(&sFelicityBankWork->unkA8, TRUE, FALSE); break; default: for (i = 0; i < 4; i++) - sFelicityBankWork->unkA8[i] = sUnknown_80DB6DC; + sFelicityBankWork->unkA8.id[i] = sUnknown_80DB6DC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sFelicityBankWork->unkA8, TRUE, TRUE); + ShowWindows(&sFelicityBankWork->unkA8, TRUE, TRUE); break; } } @@ -218,7 +218,7 @@ static void UpdateFelicityBankDialogue(void) sFelicityBankWork->unk64.unk8 = 1; sFelicityBankWork->unk64.unk10 = 5; sFelicityBankWork->unk64.unk14 = 2; - sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8[2]; + sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8.id[2]; sFelicityBankWork->unk64.unk1C = 0x50; sFelicityBankWork->unk64.unk20 = 0x12; sub_8013AA0(&sFelicityBankWork->unk64); @@ -253,7 +253,7 @@ static void UpdateFelicityBankDialogue(void) sFelicityBankWork->unk64.unk8 = 1; sFelicityBankWork->unk64.unk10 = 5; sFelicityBankWork->unk64.unk14 = 2; - sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8[2]; + sFelicityBankWork->unk64.unk18 = &sFelicityBankWork->unkA8.id[2]; sFelicityBankWork->unk64.unk1C = 0x50; sFelicityBankWork->unk64.unk20 = 0x12; sub_8013AA0(&sFelicityBankWork->unk64); diff --git a/src/friend_area.c b/src/friend_area.c index 400375320..4bcb888df 100644 --- a/src/friend_area.c +++ b/src/friend_area.c @@ -155,7 +155,7 @@ bool8 HasAllFriendAreas(void) return TRUE; } -void sub_8092638(u8 friendArea, unkStruct_8092638 *param_2, bool8 checkLeader, bool8 checkDungeon) +void GetFriendAreaCapacity2(u8 friendArea, FriendAreaCapacity *dst, bool8 checkLeader, bool8 checkPartner) { PokemonStruct1 *pokeStruct; s32 i; @@ -166,30 +166,30 @@ void sub_8092638(u8 friendArea, unkStruct_8092638 *param_2, bool8 checkLeader, b for (i = 0; i < friendArea; i++) iVar4 += sFriendAreaSettings[i].num_pokemon; - param_2->unk8 = iVar4; - param_2->hasFriendArea = gFriendAreas[i]; + dst->unk8 = iVar4; + dst->hasFriendArea = gFriendAreas[i]; - if (param_2->hasFriendArea) { - param_2->unk2 = 0; - param_2->numPokemon = sFriendAreaSettings[i].num_pokemon; + if (dst->hasFriendArea) { + dst->currNoPokemon = 0; + dst->maxPokemon = sFriendAreaSettings[i].num_pokemon; - for (i = 0; i < param_2->numPokemon; i++, iVar4++) { + for (i = 0; i < dst->maxPokemon; i++, iVar4++) { pokeStruct = &gRecruitedPokemonRef->pokemon[iVar4]; if (PokemonFlag1(pokeStruct) && (!checkLeader || !IsMonTeamLeader(pokeStruct)) && - (!checkDungeon || pokeStruct->dungeonLocation.id != DUNGEON_JOIN_LOCATION_PARTNER)) { - param_2->unk2++; + (!checkPartner || pokeStruct->dungeonLocation.id != DUNGEON_JOIN_LOCATION_PARTNER)) { + dst->currNoPokemon++; } } } else { - param_2->unk2 = 0; - param_2->numPokemon = 0; + dst->currNoPokemon = 0; + dst->maxPokemon = 0; } } -void sub_80926F8(u8 a0, unkStruct_8092638 *a1, u8 a2) +void GetFriendAreaCapacity(u8 areaId, FriendAreaCapacity *dst, bool8 checkPartner) { PokemonStruct1 *mon; s32 r5; @@ -198,30 +198,30 @@ void sub_80926F8(u8 a0, unkStruct_8092638 *a1, u8 a2) r5 = 0; - for (i = 0; i < a0; i++) + for (i = 0; i < areaId; i++) r5 += sFriendAreaSettings[i].num_pokemon; - a1->unk8 = r5; - a1->hasFriendArea = gFriendAreas[i]; + dst->unk8 = r5; + dst->hasFriendArea = gFriendAreas[i]; - if (a1->hasFriendArea) { - a1->unk2 = 0; - a1->numPokemon = sFriendAreaSettings[i].num_pokemon; - max = a1->numPokemon; + if (dst->hasFriendArea) { + dst->currNoPokemon = 0; + dst->maxPokemon = sFriendAreaSettings[i].num_pokemon; + max = dst->maxPokemon; for (i = 0; i < max; i++, r5++) { mon = &gRecruitedPokemonRef->pokemon[r5]; if (PokemonFlag1(mon)) { - if (mon->isTeamLeader || (a2 == 0 && mon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER)) - a1->numPokemon--; + if (mon->isTeamLeader || (!checkPartner && mon->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER)) + dst->maxPokemon--; else - a1->unk2++; + dst->currNoPokemon++; } } } else { - a1->unk2 = 0; - a1->numPokemon = 0; + dst->currNoPokemon = 0; + dst->maxPokemon = 0; } } diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index bad311ce8..08d3f7e9e 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -142,29 +142,29 @@ void sub_802719C(void) { s32 index; - RestoreUnkTextStruct_8006518(sUnknown_203B2BC->unk180); + RestoreUnkTextStruct_8006518(&sUnknown_203B2BC->unk180); switch(sUnknown_203B2BC->state) { case 3: - sUnknown_203B2BC->unk180[3] = sUnknown_80DD74C; + sUnknown_203B2BC->unk180.id[3] = sUnknown_80DD74C; CreateFriendActionMenu(); - sUnknown_203B2BC->unk180[2] = sUnknown_80DD704; - sub_8012CAC(&sUnknown_203B2BC->unk180[2], sUnknown_203B2BC->menuItems); + sUnknown_203B2BC->unk180.id[2] = sUnknown_80DD704; + sub_8012CAC(&sUnknown_203B2BC->unk180.id[2], sUnknown_203B2BC->menuItems); break; case 0xC: sub_80276A8(); - sUnknown_203B2BC->unk180[2] = sUnknown_80DD71C; - sub_8012CAC(&sUnknown_203B2BC->unk180[2], sUnknown_203B2BC->menuItems); + sUnknown_203B2BC->unk180.id[2] = sUnknown_80DD71C; + sub_8012CAC(&sUnknown_203B2BC->unk180.id[2], sUnknown_203B2BC->menuItems); break; default: for(index = 0; index < 4; index++) { - sUnknown_203B2BC->unk180[index] = sUnknown_80DD6EC; + sUnknown_203B2BC->unk180.id[index] = sUnknown_80DD6EC; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2BC->unk180, TRUE, TRUE); + ShowWindows(&sUnknown_203B2BC->unk180, TRUE, TRUE); } void sub_8027274(void) diff --git a/src/friend_areas_map.c b/src/friend_areas_map.c new file mode 100644 index 000000000..4930ba5a2 --- /dev/null +++ b/src/friend_areas_map.c @@ -0,0 +1,944 @@ +#include "global.h" +#include "globaldata.h" +#include "friend_areas_map.h" +#include "sprite.h" +#include "code_8004AA0.h" +#include "input.h" +#include "text.h" +#include "code_8009804.h" +#include "bg_palette_buffer.h" +#include "string_format.h" +#include "code_800D090.h" +#include "friend_area.h" +#include "bg_control.h" +#include "code_800558C.h" +#include "code_80118A4.h" +#include "code_800C9CC.h" +#include "pokemon.h" +#include "decompress.h" +#include "constants/friend_area.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 void CopyDungeonName1toBuffer(u8 *buffer, DungeonLocation *dungeonLocation); +extern s32 Atan2_4096(PixelPos *a); +extern void sub_80117AC(void); +extern void sub_8011760(void); + +EWRAM_INIT struct FriendAreasMap *gFriendAreasMapPtr = NULL; +EWRAM_DATA static u8 sCurrDirection = 0; +EWRAM_DATA static u8 sHeldDpadCounter = 0; + +extern const FileArchive gTitleMenuFileArchive; +extern const FileArchive gMonsterFileArchive; + +static void MoveToNewLocation(s32 destLocationId, s32 direction, s32 nFrames); +static u8 GetChosenDirection(void); +static s32 ChooseLocation(s32 *newLocationId, s32 *newDirection); +static bool8 ChooseAreaInLocation(void); +static void FadeFromFriendAreasMap(void); +static void InitMapLocations(u8 startingFriendAreaId); + +extern u16 gUnknown_2026E4E; + +#define NO_AREA NUM_FRIEND_AREAS + 5 + + // ななし means 'without name' +#define DUMMY_LOCATION \ +{ \ + .name = _("ななし"), \ + .pos = {0, 0}, \ + .areasIds = {NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, \ + .adjacentLocations = {-1, -1, -1, -1, -1, -1, -1, -1}, \ +} + +// The second set is all dummies, maybe it was used for testing purposes? +static const struct FriendAreaLocationInfo sFriendAreaLocations[2][NUM_FRIEND_AREA_LOCATIONS] = +{ + { + [LOCATION_MOUNTAIN_RANGE] = + { + .name = "Mountain Range", + .pos = {0x1C5, 0x71}, + .areasIds = {MT_DEEPGREEN, MT_CLEFT, MT_MOONVIEW, MT_DISCIPLINE, DARKNESS_RIDGE, RAINBOW_PEAK, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_EASTERN_FOREST, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_MARSH, + [DIRECTION_WEST] = LOCATION_PLAINS, + [DIRECTION_SOUTHWEST] = LOCATION_RIVER, + }, + }, + [LOCATION_GLACIER] = + { + .name = "Glacier", + .pos = {0x1CD, 0x1C}, + .areasIds = {FRIGID_CAVERN, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_NORTHERN_LAKES, + [DIRECTION_SOUTHWEST] = LOCATION_MARSH, + }, + }, + [LOCATION_PLAINS] = + { + .name = "Plains", + .pos = {0x161, 0x78}, + .areasIds = {BEAU_PLAINS, SKY_BLUE_PLAINS, SACRED_FIELD, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_TEAM_BASE, + [DIRECTION_SOUTHEAST] = LOCATION_RIVER, + [DIRECTION_EAST] = 0, + [DIRECTION_NORTHEAST] = LOCATION_MARSH, + [DIRECTION_NORTH] = LOCATION_CAVE, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_POND, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_SOUTH_PLAINS] = + { + .name = "South Plains", + .pos = {0x162, 0x12D}, + .areasIds = {SAFARI, WILD_PLAINS, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_BADLANDS, + [DIRECTION_NORTH] = LOCATION_JUNGLE, + [DIRECTION_NORTHWEST] = LOCATION_RELICS, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_BADLANDS] = + { + .name = "Badlands", + .pos = {0x194, 0x102}, + .areasIds = {RAVAGED_FIELD, MAGNETIC_QUARRY, THUNDER_MEADOW, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_DESERT, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_EASTERN_LAKES, + [DIRECTION_NORTH] = LOCATION_EASTERN_PONDS, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_JUNGLE, + [DIRECTION_SOUTHWEST] = LOCATION_SOUTH_PLAINS, + }, + }, + [LOCATION_EASTERN_FOREST] = + { + .name = "Eastern Forest", + .pos = {0x1C7, 0x9D}, + .areasIds = {MIST_RISE_FOREST, FLYAWAY_FOREST, OVERGROWN_FOREST, ENERGETIC_FOREST, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_EASTERN_LAKES, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = 0, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_RIVER, + [DIRECTION_SOUTHWEST] = LOCATION_EASTERN_PONDS, + }, + }, + [LOCATION_WESTERN_FOREST] = + { + .name = "Western Forest", + .pos = {0x108, 0x9D}, + .areasIds = {MUSHROOM_FOREST, HEALING_FOREST, TRANSFORM_FOREST, SECRETIVE_FOREST, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_VOLCANO, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_TEAM_BASE, + [DIRECTION_NORTHEAST] = LOCATION_POND, + [DIRECTION_NORTH] = LOCATION_NORTHERN_ISLES, + [DIRECTION_NORTHWEST] = LOCATION_BEACH, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_RIVER] = + { + .name = "River", + .pos = {0x197, 0xA0}, + .areasIds = {RUB_A_DUB_RIVER, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_EASTERN_PONDS, + [DIRECTION_SOUTHEAST] = LOCATION_EASTERN_LAKES, + [DIRECTION_EAST] = LOCATION_EASTERN_FOREST, + [DIRECTION_NORTHEAST] = LOCATION_MOUNTAIN_RANGE, + [DIRECTION_NORTH] = LOCATION_MARSH, + [DIRECTION_NORTHWEST] = LOCATION_PLAINS, + [DIRECTION_WEST] = LOCATION_TEAM_BASE, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_EASTERN_PONDS] = + { + .name = "Eastern Ponds", + .pos = {0x198, 0xCF}, + .areasIds = {TADPOLE_POND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_BADLANDS, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_EASTERN_LAKES, + [DIRECTION_NORTHEAST] = LOCATION_EASTERN_FOREST, + [DIRECTION_NORTH] = LOCATION_RIVER, + [DIRECTION_NORTHWEST] = LOCATION_TEAM_BASE, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_JUNGLE, + }, + }, + [LOCATION_POND] = + { + .name = "Pond", + .pos = {0x133, 0x79}, + .areasIds = {TURTLESHELL_POND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_TEAM_BASE, + [DIRECTION_EAST] = LOCATION_PLAINS, + [DIRECTION_NORTHEAST] = LOCATION_CAVE, + [DIRECTION_NORTH] = LOCATION_RUINS, + [DIRECTION_NORTHWEST] = LOCATION_NORTHERN_ISLES, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_WESTERN_FOREST, + }, + }, + [LOCATION_NORTHERN_LAKES] = + { + .name = "Northern Lakes", + .pos = {0x182, 0x1D}, + .areasIds = {MYSTIC_LAKE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_MARSH, + [DIRECTION_EAST] = 1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_RUINS, + [DIRECTION_SOUTHWEST] = LOCATION_CAVE, + }, + }, + [LOCATION_EASTERN_LAKES] = + { + .name = "Eastern Lakes", + .pos = {0x1C6, 0xD0}, + .areasIds = {WATERFALL_LAKE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = LOCATION_EASTERN_FOREST, + [DIRECTION_NORTHWEST] = LOCATION_RIVER, + [DIRECTION_WEST] = LOCATION_EASTERN_PONDS, + [DIRECTION_SOUTHWEST] = LOCATION_BADLANDS, + }, + }, + [LOCATION_MARSH] = + { + .name = "Marsh", + .pos = {0x1A2, 0x46}, + .areasIds = {PEANUT_SWAMP, POISON_SWAMP, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_RIVER, + [DIRECTION_SOUTHEAST] = LOCATION_MOUNTAIN_RANGE, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = 1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_NORTHERN_LAKES, + [DIRECTION_WEST] = LOCATION_CAVE, + [DIRECTION_SOUTHWEST] = LOCATION_PLAINS, + }, + }, + [LOCATION_CAVE] = + { + .name = "Cave", + .pos = {0x160, 0x47}, + .areasIds = {ECHO_CAVE, DRAGON_CAVE, BOULDER_CAVE, CRYPTIC_CAVE, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_PLAINS, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_MARSH, + [DIRECTION_NORTHEAST] = LOCATION_NORTHERN_LAKES, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_RUINS, + [DIRECTION_WEST] = LOCATION_NORTHERN_ISLES, + [DIRECTION_SOUTHWEST] = LOCATION_POND, + }, + }, + [LOCATION_JUNGLE] = + { + .name = "Jungle", + .pos = {0x163, 0x104}, + .areasIds = {JUNGLE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_SOUTH_PLAINS, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_BADLANDS, + [DIRECTION_NORTHEAST] = LOCATION_EASTERN_PONDS, + [DIRECTION_NORTH] = LOCATION_TEAM_BASE, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_RELICS, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_RUINS] = + { + .name = "Ruins", + .pos = {0x136, 0x1C}, + .areasIds = {DECREPIT_LAB, POWER_PLANT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_POND, + [DIRECTION_SOUTHEAST] = LOCATION_CAVE, + [DIRECTION_EAST] = LOCATION_NORTHERN_LAKES, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_NORTHERN_SEA, + [DIRECTION_SOUTHWEST] = LOCATION_NORTHERN_ISLES, + }, + }, + [LOCATION_VOLCANO] = + { + .name = "Volcano", + .pos = {0x107, 0xCB}, + .areasIds = {SCORCHED_PLAINS, CRATER, VOLCANIC_PIT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_RELICS, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_TEAM_BASE, + [DIRECTION_NORTH] = LOCATION_WESTERN_FOREST, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_SOUTHERN_SEA, + }, + }, + [LOCATION_DESERT] = + { + .name = "Desert", + .pos = {0x1C4, 0x12D}, + .areasIds = {FURNACE_DESERT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_BADLANDS, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_RELICS] = + { + .name = "Relics", + .pos = {0x131, 0x105}, + .areasIds = {ANCIENT_RELIC, AGED_CHAMBER_AN, AGED_CHAMBER_O_EXCLAIM, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_SOUTH_PLAINS, + [DIRECTION_EAST] = LOCATION_JUNGLE, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_VOLCANO, + [DIRECTION_WEST] = LOCATION_SOUTHERN_SEA, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_SKY] = + { + .name = "Sky", + .pos = {0x2F, 0x15}, + .areasIds = {STRATOS_LOOKOUT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_WESTERN_ISLES, + [DIRECTION_SOUTHEAST] = LOCATION_BEACH, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_NORTHERN_ISLES] = + { + .name = "Northern Isles", + .pos = {0x107, 0x47}, + .areasIds = {LEGENDARY_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = 6, + [DIRECTION_SOUTHEAST] = 9, + [DIRECTION_EAST] = 0xD, + [DIRECTION_NORTHEAST] = 0xF, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = 0x18, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_SOUTHERN_ISLES] = + { + .name = "Southern Isles", + .pos = {0x5D, 0x10C}, + .areasIds = {SOUTHERN_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_SOUTHERN_SEA, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_SOUTHWEST_ISLES, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_SOUTHWEST_ISLES] = + { + .name = "Southwest Isles", + .pos = {0x2D, 0xCB}, + .areasIds = {ENCLOSED_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_SOUTHERN_ISLES, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = LOCATION_WESTERN_ISLES, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_WESTERN_ISLES] = + { + .name = "Western Isles", + .pos = {0x2D, 0x70}, + .areasIds = {FINAL_ISLAND, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_SOUTHWEST_ISLES, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_BEACH, + [DIRECTION_NORTH] = LOCATION_SKY, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_NORTHERN_SEA] = + { + .name = "Northern Sea", + .pos = {0xD0, 0x16}, + .areasIds = {BOUNTIFUL_SEA, SERENE_SEA, DEEP_SEA_CURRENT, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_NORTHERN_ISLES, + [DIRECTION_EAST] = LOCATION_RUINS, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_BEACH, + }, + }, + [LOCATION_SOUTHERN_SEA] = + { + .name = "Southern Sea", + .pos = {0xB2, 0x10D}, + .areasIds = {TREASURE_SEA, DEEP_SEA_FLOOR, SEAFLOOR_CAVE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = -1, + [DIRECTION_EAST] = LOCATION_RELICS, + [DIRECTION_NORTHEAST] = LOCATION_VOLCANO, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = -1, + [DIRECTION_WEST] = LOCATION_SOUTHERN_ISLES, + [DIRECTION_SOUTHWEST] = -1, + }, + }, + [LOCATION_BEACH] = + { + .name = "Beach", + .pos = {0x81, 0x42}, + .areasIds = {SHALLOW_BEACH, ICE_FLOE_BEACH, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = -1, + [DIRECTION_SOUTHEAST] = LOCATION_WESTERN_FOREST, + [DIRECTION_EAST] = -1, + [DIRECTION_NORTHEAST] = LOCATION_NORTHERN_SEA, + [DIRECTION_NORTH] = -1, + [DIRECTION_NORTHWEST] = LOCATION_SKY, + [DIRECTION_WEST] = -1, + [DIRECTION_SOUTHWEST] = LOCATION_WESTERN_ISLES, + }, + }, + [LOCATION_TEAM_BASE] = + { + .name = _("$t"), + .pos = {0x163, 0xA1}, + .areasIds = {FRIEND_AREA_NONE, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA, NO_AREA}, + .adjacentLocations = { + [DIRECTION_SOUTH] = LOCATION_JUNGLE, + [DIRECTION_SOUTHEAST] = LOCATION_EASTERN_PONDS, + [DIRECTION_EAST] = LOCATION_RIVER, + [DIRECTION_NORTHEAST] = -1, + [DIRECTION_NORTH] = LOCATION_PLAINS, + [DIRECTION_NORTHWEST] = LOCATION_POND, + [DIRECTION_WEST] = LOCATION_WESTERN_FOREST, + [DIRECTION_SOUTHWEST] = LOCATION_VOLCANO, + }, + }, + [LOCATION_UNUSED_28] = DUMMY_LOCATION, + [LOCATION_UNUSED_29] = DUMMY_LOCATION, + [LOCATION_UNUSED_30] = DUMMY_LOCATION, + [LOCATION_UNUSED_31] = DUMMY_LOCATION, + }, + { + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + DUMMY_LOCATION, + } +}; + +void ShowFriendAreasMap(struct struct_unk800F990 *param_1) +{ + gFriendAreasMapPtr = param_1->friendAreasMapPtr; + gUnknown_2026E4E = 0x1010; + sub_80095CC(0,0x14); + UpdateFadeInTile(2); + gFriendAreasMapPtr->locationsInfo = sFriendAreaLocations[0]; + gFriendAreasMapPtr->unk4A2C = param_1->unk5; + FriendAreasMap_InitGfx(); + gFriendAreasMapPtr->unk4A28 = -1; + gFriendAreasMapPtr->unk4A1C = -1; + InitMapLocations(param_1->startingFriendAreaId); + gFriendAreasMapPtr->locationIdOnBPress = gFriendAreasMapPtr->teamBaseLocationId; + sCurrDirection = 0xff; + sHeldDpadCounter = 0; + sub_8011760(); + while (1) { + s32 newLocationId = 0; + s32 newDirection = 0; + s32 inputRet = ChooseLocation(&newLocationId, &newDirection); + + if (inputRet == 1) { + MoveToNewLocation(newLocationId, newDirection, 50); + } + else if (inputRet == 2) { + if (!ChooseAreaInLocation()) + continue; + param_1->unkC = gFriendAreasMapPtr->chosenFriendAreaId; + break; + } + else if (inputRet == 3) { + if (gFriendAreasMapPtr->currLocationId == gFriendAreasMapPtr->locationIdOnBPress) { + param_1->unkC = 0; + break; + } + MoveToNewLocation(gFriendAreasMapPtr->locationIdOnBPress, DIRECTION_SOUTH, 10); + } + } + + FadeFromFriendAreasMap(); + FriendAreasMap_CloseFiles(); + nullsub_16(); +} + +static s32 ChooseLocation(s32 *newLocationId, s32 *newDirection) +{ + s32 ret = 0; + + FriendAreasMap_ShowDirectionArrows(); + FriendAreasMap_PrintCurrAreaName(); + while (ret == 0) { + u8 direction; + + FriendAreasMap_RunFrameActions(); + direction = GetChosenDirection(); + if (direction != 0xFF) { + s32 currLocationId = gFriendAreasMapPtr->currLocationId; + struct MapLocation *currLocation = &gFriendAreasMapPtr->mapLocations[currLocationId]; + + if (currLocation->locationsByDirection[direction] >= 0) { + s32 newlocId = currLocation->locationsByDirection[direction]; + struct MapLocation *newLocation = &gFriendAreasMapPtr->mapLocations[newlocId]; + + if (newLocation->isShown) { + ret = 1; + *newLocationId = newlocId; + *newDirection = direction; + gFriendAreasMapPtr->unk4A28 = direction; + gFriendAreasMapPtr->unk4A1C = currLocationId; + } + } + } + + if (gRealInputs.pressed & A_BUTTON) { + PlayAcceptSoundEffect(); + ret = 2; + } + if (gRealInputs.pressed & B_BUTTON) { + PlayCancelSoundEffect(); + ret = 3; + } + } + return ret; +} + +static bool8 ChooseAreaInLocation(void) +{ + bool8 ret = FALSE; + + FriendAreasMap_PrintAvailableSubAreas(); + while (1) { + MenuInputStruct *menuPtr = &gFriendAreasMapPtr->menu; + + AddMenuCursorSprite(menuPtr); + FriendAreasMap_RunFrameActions(); + 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(); + gFriendAreasMapPtr->chosenFriendAreaId = gFriendAreasMapPtr->displayedAreas[menuPtr->menuIndex]; + ret = TRUE; + break; + } + if ((gRealInputs.pressed & B_BUTTON) || menuPtr->unk28.b_button) { + PlayCancelSoundEffect(); + break; + } + } + + return ret; +} + +static void FadeFromFriendAreasMap(void) +{ + s32 i; + + FriendAreasMap_HideTextWindowAndArrows(); + sub_80117AC(); + for (i = 0; i < 60; i++) { + gFriendAreasMapPtr->brightness -= 2; + FriendAreasMap_RunFrameActions(); + } +} + +struct MaxMin +{ + s16 min; + s16 max; +}; + +static const struct MaxMin sDistanceRanges[] = +{ + {0x380, 0x480}, + {0x80, 0x380}, + {0xF80, 0x80}, + {0xC80, 0xF80}, + {0xB80, 0xC80}, + {0x880, 0xB80}, + {0x780, 0x880}, + {0x480, 0x780}, +}; + +static void InitMapLocations(u8 startingFriendAreaId) +{ + s32 startingLocationId = 0; + s32 i, j, k; + + for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { + bool8 locationShown = FALSE; + bool8 areaIsBase = FALSE; + struct MapLocation *mapLocation = &gFriendAreasMapPtr->mapLocations[i]; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[i]; + + for (j = 0; j < NUM_DIRECTIONS; j++) { + mapLocation->locationsByDirection[j] = -1; + } + for (j = 0; j < MAX_AREAS_PER_LOCATION; j++) { + if (IsFriendAreaShownOnMap(locationInfo->areasIds[j])) { + if (locationInfo->areasIds[j] == startingFriendAreaId) { + startingLocationId = i; + } + if (locationInfo->areasIds[j] == 0) { + gFriendAreasMapPtr->teamBaseLocationId = i; + areaIsBase = TRUE; + } + locationShown = TRUE; + } + } + + if (locationShown) { + mapLocation->isShown = TRUE; + AxResInitFile(&mapLocation->sprite, gFriendAreasMapPtr->unk0[2], (areaIsBase) ? 12 : 1, 0, 0x40, 0, 1); + } + else { + mapLocation->isShown = FALSE; + } + } + + for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { + s32 var1, var2; + struct MapLocation *mapLocation = &gFriendAreasMapPtr->mapLocations[i]; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[i]; + + if (!mapLocation->isShown) { + continue; + } + + // Grab locations which are next to each other. + for (j = 0; j < NUM_DIRECTIONS; j++) { + mapLocation->locationsByDirection[j] = -1; + if (locationInfo->adjacentLocations[j] >= 0) { + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[locationInfo->adjacentLocations[j]]; + if (ptr->isShown) { + mapLocation->locationsByDirection[j] = locationInfo->adjacentLocations[j]; + } + } + } + + var1 = gFriendAreasMapPtr->unk4A28; + var2 = gFriendAreasMapPtr->unk4A1C; + if (var1 >= 0 && var2 >= 0) { + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[var2]; + if (ptr->isShown) { + var1 += 4; + var1 &= DIRECTION_MASK; + mapLocation->locationsByDirection[var1] = var2; + } + } + + // Find locations which are the closest from each other. + for (j = 0; j < NUM_DIRECTIONS; j++) { + s32 foundLocationId = -1; + s32 biggestDistance = 999999; + + if (mapLocation->locationsByDirection[j] >= 0) + continue; + + for (k = 0; k < NUM_FRIEND_AREA_LOCATIONS; k++) { + bool8 valid; + PixelPos pixelPos; + s32 atanVal; + struct MapLocation *mapLocation2Info = &gFriendAreasMapPtr->mapLocations[k]; + const struct FriendAreaLocationInfo *location2Info = &gFriendAreasMapPtr->locationsInfo[k]; + + if (k == i) + continue; + if (!mapLocation2Info->isShown) + continue; + + pixelPos.x = (location2Info->pos.x - locationInfo->pos.x) << 8; + pixelPos.y = (location2Info->pos.y - locationInfo->pos.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; + } + + valid = FALSE; + if (j == DIRECTION_EAST) { + while (atanVal >= 0x1000) { + atanVal -= 0x1000; + } + while (atanVal < 0) { + atanVal += 0x1000; + } + if (sDistanceRanges[j].min < atanVal || sDistanceRanges[j].max > atanVal) { + valid = TRUE; + } + } + else { + if (sDistanceRanges[j].min <= atanVal && sDistanceRanges[j].max > atanVal) { + valid = TRUE; + } + } + + if (valid) { + s32 sum = (pixelPos.x * pixelPos.x) + (pixelPos.y * pixelPos.y); + if (biggestDistance > sum) { + biggestDistance = sum; + foundLocationId = k; + } + } + } + + if (foundLocationId >= 0) { + mapLocation->locationsByDirection[j] = foundLocationId; + } + } + } + + AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, 0, 0, 0, TRUE); + gFriendAreasMapPtr->currLocationId = startingLocationId; + gFriendAreasMapPtr->monSpritePos = gFriendAreasMapPtr->locationsInfo[startingLocationId].pos; + gFriendAreasMapPtr->bgPos.x = gFriendAreasMapPtr->monSpritePos.x - 120; + gFriendAreasMapPtr->bgPos.y = gFriendAreasMapPtr->monSpritePos.y - 80; + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); +} + +bool8 IsFriendAreaShownOnMap(u8 friendAreaId) +{ + if (friendAreaId >= NUM_FRIEND_AREAS) return FALSE; + if (friendAreaId == 0) return TRUE; + if (gFriendAreas[friendAreaId]) return TRUE; + + return FALSE; +} + +static u8 GetChosenDirection(void) +{ + u8 dirsAll[] = {0xff, DIRECTION_SOUTH, DIRECTION_EAST, DIRECTION_SOUTHEAST, DIRECTION_NORTH, 0xff, DIRECTION_NORTHEAST, 0xff, DIRECTION_WEST, DIRECTION_SOUTHWEST, 0xff, 0xff, DIRECTION_NORTHWEST, 0xff, 0xff, 0xff}; + u8 dirsDiagonal[] = {0xff, 0xff, 0xff, DIRECTION_SOUTHEAST, 0xff, 0xff, DIRECTION_NORTHEAST, 0xff, 0xff, DIRECTION_SOUTHWEST, 0xff, 0xff, DIRECTION_NORTHWEST, 0xff, 0xff, 0xff}; + u32 id = 0; + u8 *dirs = (gRealInputs.held & R_BUTTON) ? dirsDiagonal : dirsAll; + + if (gRealInputs.held & DPAD_DOWN) { + id |= 1; + } + if (gRealInputs.held & DPAD_RIGHT) { + id |= 2; + } + if (gRealInputs.held & DPAD_UP) { + id |= 4; + } + if (gRealInputs.held & DPAD_LEFT) { + id |= 8; + } + + if (sCurrDirection == dirs[id]) { + if (++sHeldDpadCounter >= 3) { // It'll only choose a New Area, if the DPAD was held for more than 3 frames. + return dirs[id]; + } + } + else { + sCurrDirection = dirs[id]; + sHeldDpadCounter = 0; + } + return 0xFF; +} + +static void MoveToNewLocation(s32 destLocationId, s32 direction, s32 nFrames) +{ + s32 i, currLocationId; + DungeonPos startingPos, dstPos; + + AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, direction & DIRECTION_MASK, 0, 0, TRUE); + FriendAreasMap_HideTextWindowAndArrows(); + + currLocationId = gFriendAreasMapPtr->currLocationId; + startingPos = gFriendAreasMapPtr->locationsInfo[currLocationId].pos; + dstPos = gFriendAreasMapPtr->locationsInfo[destLocationId].pos; + + PlayCursorUpDownSoundEffect(); + for (i = 0; i < nFrames; i++) { + gFriendAreasMapPtr->monSpritePos.x = ((((dstPos.x - startingPos.x) * (i << 8)) / nFrames) / 256) + startingPos.x; + gFriendAreasMapPtr->monSpritePos.y = ((((dstPos.y - startingPos.y) * (i << 8)) / nFrames) / 256) + startingPos.y; + + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); + FriendAreasMap_RunFrameActions(); + } + + gFriendAreasMapPtr->currLocationId = destLocationId; + gFriendAreasMapPtr->monSpritePos = gFriendAreasMapPtr->locationsInfo[destLocationId].pos; + FriendAreasMap_UpdateMonSpritePosition(); + FriendAreasMap_UpdateBg(); + FriendAreasMap_RunFrameActions(); + AxResInitFile(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->unk0[3], 0, 0, 0, 0, TRUE); +} + +void PrintFriendAreaNameInMap(u8 *strBuffer, u8 index) +{ + if (index == 0) { + FormatString("$t Team Base", strBuffer, strBuffer + 0x50, 0); + } + else { + WriteFriendAreaName(strBuffer, index, FALSE); + } +} + +static UNUSED void GetAreaMapPosition(u8 areaId, DungeonPos *dst) +{ + s32 i, j; + + for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { + const struct FriendAreaLocationInfo *locationInfo = &sFriendAreaLocations[0][i]; + for (j = 0; j < MAX_AREAS_PER_LOCATION; j++) { + if (locationInfo->areasIds[j] == areaId) { + dst->x = locationInfo->pos.x; + dst->y = locationInfo->pos.y; + return; + } + } + } + dst->x = 0; + dst->y = 0; +} diff --git a/src/friend_areas_map_util.c b/src/friend_areas_map_util.c new file mode 100644 index 000000000..9a92d4889 --- /dev/null +++ b/src/friend_areas_map_util.c @@ -0,0 +1,404 @@ +#include "global.h" +#include "globaldata.h" +#include "friend_areas_map.h" +#include "sprite.h" +#include "code_8004AA0.h" +#include "input.h" +#include "text.h" +#include "code_8009804.h" +#include "bg_palette_buffer.h" +#include "string_format.h" +#include "code_800D090.h" +#include "friend_area.h" +#include "bg_control.h" +#include "code_800558C.h" +#include "game_options.h" +#include "play_time.h" +#include "code_80118A4.h" +#include "code_800C9CC.h" +#include "pokemon.h" +#include "decompress.h" +#include "constants/direction.h" + +extern void sub_800CB20(void); +extern void xxx_call_update_bg_sound_input(void); +extern s32 sprintf(char *, const char *, ...); + +extern const FileArchive gTitleMenuFileArchive; +extern const FileArchive gMonsterFileArchive; + +static inline bool8 CheckAxFlag8000(axdata *ptr) +{ + return (ptr->flags & 0x8000) != 0; +} + +static inline bool8 ResetFlags(axdata *ptr) +{ + return ptr->flags = 0; +} + +static char *const gUnknown_80D408C[] = +{ + "wmapfont", + "wmapmcc", + "wmapcani", + "wmappal", +}; + +static const DungeonPos gUnknown_80D40C4[] = +{ + {0, 24}, + {24, 24}, + {24, 0}, + {24, -24}, + {0, -24}, + {-24, -24}, + {-24, 0}, + {-24, 24}, +}; + +void FriendAreasMap_InitGfx(void) +{ + u8 filename[0xC]; + s32 i, size; + + PokemonStruct1 *pokeStruct = GetPlayerPokemonStruct(); + OpenedFile *file = OpenFileAndGetFileDataPtr(gUnknown_80D408C[0], &gTitleMenuFileArchive); + OpenedFile *file2 = OpenFileAndGetFileDataPtr(gUnknown_80D408C[1], &gTitleMenuFileArchive); + + sprintf(filename, "ax%03d", pokeStruct->speciesNum); + gFriendAreasMapPtr->unk0[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + gFriendAreasMapPtr->unk0[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); + gFriendAreasMapPtr->unk0[4] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[2], &gTitleMenuFileArchive); + gFriendAreasMapPtr->unk0[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); + gFriendAreasMapPtr->unk0[0] = OpenFileAndGetFileDataPtr(gUnknown_80D408C[3], &gTitleMenuFileArchive); + gFriendAreasMapPtr->unk4DD0 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + + sub_8005610(gFriendAreasMapPtr->unk0[2], 0x40, 0x1F, 0); + + DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); + sub_8004AA4(gFriendAreasMapPtr->unk4C4C, gFriendAreasMapPtr->unk0[4], 0x10); + size = 0x4000; + DecompressATFile((u8 *) &gFriendAreasMapPtr->unk14, size, file2); + + gFriendAreasMapPtr->brightness = 0; + gFriendAreasMapPtr->bgPos.x = 0; + gFriendAreasMapPtr->bgPos.y = 0; + + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gFriendAreasMapPtr->arrowSprites[i]); + } + + CloseFile(file); + CloseFile(file2); + ShowWindows(NULL, 1, 1); +} + +void FriendAreasMap_CloseFiles(void) +{ + CloseFile(gFriendAreasMapPtr->unk0[4]); + CloseFile(gFriendAreasMapPtr->unk0[2]); + CloseFile(gFriendAreasMapPtr->unk0[3]); + CloseFile(gFriendAreasMapPtr->unk0[0]); + CloseFile(gFriendAreasMapPtr->unk0[1]); +} + +static void AnimateSprites(void) +{ + s32 i, dir; + unkStruct_2039DB0 var_30; + DungeonPos bgPos; + + sub_8004E8C(&var_30); + var_30.unk4 = 0xF3FF; + var_30.unkA = 0x800; + bgPos = gFriendAreasMapPtr->bgPos; + RunAxAnimationFrame(&gFriendAreasMapPtr->monAxSprite); + DoAxFrame_800558C(&gFriendAreasMapPtr->monAxSprite, gFriendAreasMapPtr->monSpritePos.x - bgPos.x, gFriendAreasMapPtr->monSpritePos.y - bgPos.y, 3, gFriendAreasMapPtr->unk4DD0, &var_30); + + for (i = 0; i < NUM_FRIEND_AREA_LOCATIONS; i++) { + struct MapLocation *mapLocation = &gFriendAreasMapPtr->mapLocations[i]; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[i]; + if (mapLocation->isShown) { + RunAxAnimationFrame(&mapLocation->sprite); + DoAxFrame_800558C(&mapLocation->sprite, locationInfo->pos.x - bgPos.x, locationInfo->pos.y- bgPos.y, 1, 0, &var_30); + } + } + + for (dir = 0; dir < NUM_DIRECTIONS; dir++) { + if (CheckAxFlag8000(&gFriendAreasMapPtr->arrowSprites[dir])) { + RunAxAnimationFrame(&gFriendAreasMapPtr->arrowSprites[dir]); + // Hide non-diagonal arrows when R button is pressed. + if ((gRealInputs.held & R_BUTTON) && (dir % 2) == 0) + continue; + + DoAxFrame_800558C(&gFriendAreasMapPtr->arrowSprites[dir], + (gUnknown_80D40C4[dir].x + gFriendAreasMapPtr->monSpritePos.x) - bgPos.x, + (gUnknown_80D40C4[dir].y + gFriendAreasMapPtr->monSpritePos.y) - bgPos.y, + 2, 0, &var_30); + } + } +} + +void FriendAreasMap_UpdateBg(void) +{ + s32 i, j; + s32 y1 = gFriendAreasMapPtr->bgPos.y >> 3; + s32 y2 = y1; + + for (i = 0; i < 21; i++) { + s32 x1 = gFriendAreasMapPtr->bgPos.x >> 3; + s32 x2 = x1; + + for (j = 0; j < 31; j++) { + x1 &= 0x1F; + y1 &= 0x1F; + + gUnknown_202B038[2][y1][x1] = gFriendAreasMapPtr->unk2014[y2][x2]; + gUnknown_202B038[3][y1][x1] = gFriendAreasMapPtr->unk14[y2][x2]; + x2++; + x1++; + } + y2++; + y1++; + } + + sub_80098F8(2); + sub_80098F8(3); +} + +void FriendAreasMap_HideTextWindowAndArrows(void) +{ + s32 i; + + ShowWindows(NULL, TRUE, TRUE); + gFriendAreasMapPtr->unk4DDC = 0; + gFriendAreasMapPtr->unk4DE0 = 0; + gFriendAreasMapPtr->unk4DE4 = 0; + gFriendAreasMapPtr->unk4DE8 = 0; + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gFriendAreasMapPtr->arrowSprites[i]); + } +} + +static bool8 FadeScreen(void) +{ + bool8 ret = FALSE; + + if (gFriendAreasMapPtr->brightness < 31) { + s32 i; + RGB *color = (void *) gFriendAreasMapPtr->unk0[0]->data; + + if (++gFriendAreasMapPtr->brightness >= 31) { + gFriendAreasMapPtr->brightness = 31; + } + + for (i = 0; i < 224; color++, i++) { + SetBGPaletteBufferColorRGB(i, color, gFriendAreasMapPtr->brightness, NULL); + } + + color = (void *) gFriendAreasMapPtr->unk0[1]->data; + for (i = 0; i < 240; color++, i++) { + SetBGPaletteBufferColorRGB(i + 256, color, gFriendAreasMapPtr->brightness, NULL); + } + + ret = TRUE; + } + + return ret; +} + +void FriendAreasMap_UpdateMonSpritePosition(void) +{ + if (gFriendAreasMapPtr->monSpritePos.x - gFriendAreasMapPtr->bgPos.x < 48) { + gFriendAreasMapPtr->bgPos.x = gFriendAreasMapPtr->monSpritePos.x - 48; + } + else if (gFriendAreasMapPtr->monSpritePos.x - gFriendAreasMapPtr->bgPos.x > 192) { + gFriendAreasMapPtr->bgPos.x = gFriendAreasMapPtr->monSpritePos.x - 192; + } + + if (gFriendAreasMapPtr->monSpritePos.y - gFriendAreasMapPtr->bgPos.y < 48) { + gFriendAreasMapPtr->bgPos.y = gFriendAreasMapPtr->monSpritePos.y - 48; + } + else if (gFriendAreasMapPtr->monSpritePos.y - gFriendAreasMapPtr->bgPos.y > 112) { + gFriendAreasMapPtr->bgPos.y = gFriendAreasMapPtr->monSpritePos.y - 112; + } + + if (gFriendAreasMapPtr->bgPos.x < 0) { + gFriendAreasMapPtr->bgPos.x = 0; + } + if (gFriendAreasMapPtr->bgPos.y < 0) { + gFriendAreasMapPtr->bgPos.y = 0; + } + if (gFriendAreasMapPtr->bgPos.x > 239) { + gFriendAreasMapPtr->bgPos.x = 239; + } + if (gFriendAreasMapPtr->bgPos.y > 151) { + gFriendAreasMapPtr->bgPos.y = 151; + } +} + +void FriendAreasMap_ShowDirectionArrows(void) +{ + s32 i; + struct MapLocation *currLocation = &gFriendAreasMapPtr->mapLocations[gFriendAreasMapPtr->currLocationId]; + + for (i = 0; i < NUM_DIRECTIONS; i++) { + ResetFlags(&gFriendAreasMapPtr->arrowSprites[i]); + if (currLocation->locationsByDirection[i] >= 0) { + struct MapLocation *ptr = &gFriendAreasMapPtr->mapLocations[currLocation->locationsByDirection[i]]; + if (ptr->isShown) { + AxResInitFile(&gFriendAreasMapPtr->arrowSprites[i], gFriendAreasMapPtr->unk0[2], i + 4, 0, 0x40, 0, TRUE); + } + } + } +} + +void FriendAreasMap_PrintCurrAreaName(void) +{ + u8 txt[200]; + s32 id = gFriendAreasMapPtr->currLocationId; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[id]; + Windows windows = {0}; + + windows.id[0].type = WINDOW_TYPE_NORMAL; + windows.id[0].pos.x = 7; + windows.id[0].pos.y = 2; + windows.id[0].width = 21; + windows.id[0].height = 2; + windows.id[0].unk10 = 2; + windows.id[1].type = WINDOW_TYPE_NORMAL; + windows.id[2].type = WINDOW_TYPE_NORMAL; + windows.id[3].type = WINDOW_TYPE_NORMAL; + + if (gFriendAreasMapPtr->monSpritePos.y - gFriendAreasMapPtr->bgPos.y <= 80) { + windows.id[0].pos.y = 17; + } + else { + windows.id[0].pos.y = 1; + } + + ShowWindows(&windows, TRUE, TRUE); + sub_80073B8(0); + sprintfStatic(txt, _("{CENTER_ALIGN}%s"), locationInfo->name); + PrintFormattedStringOnWindow(12, 2, txt, 0, '\0'); + sub_80073E0(0); + gFriendAreasMapPtr->unk4DDC = (windows.id[0].pos.x * 8) - 5; + gFriendAreasMapPtr->unk4DE0 = (windows.id[0].pos.y * 8) + 5; + gFriendAreasMapPtr->unk4DE4 = (windows.id[0].width * 8) + 10; + gFriendAreasMapPtr->unk4DE8 = (windows.id[0].height * 8) + 10; +} + +void FriendAreasMap_PrintAvailableSubAreas(void) +{ + s32 i, count, var; + s32 id = gFriendAreasMapPtr->currLocationId; + const struct FriendAreaLocationInfo *locationInfo = &gFriendAreasMapPtr->locationsInfo[id]; + MenuInputStruct *menuInput = &gFriendAreasMapPtr->menu; + WindowHeader header; + Windows windows = { + .id = { + [0] = { + .type = WINDOW_TYPE_WITH_HEADER, + .pos = {7, 2}, + .width = 21, + .height = 2, + .unk10 = 2, + .unk14 = &header, + }, + [1] = { + .type = WINDOW_TYPE_NORMAL, + }, + [2] = { + .type = WINDOW_TYPE_NORMAL, + }, + [3] = { + .type = WINDOW_TYPE_NORMAL, + }, + } + }; + + count = 0; + for (i = 0; i < MAX_AREAS_PER_LOCATION; i++) { + if (IsFriendAreaShownOnMap(locationInfo->areasIds[i])) { + gFriendAreasMapPtr->displayedAreas[count] = locationInfo->areasIds[i]; + count++; + } + } + + gFriendAreasMapPtr->displayedAreasCount = count; + header.f0 = 1; + header.f1 = 0; + header.f2 = 18; + header.f3 = 0; + menuInput->menuIndex = 0; + menuInput->unk1A = count; + menuInput->unk1C = count; + menuInput->unk1E = 0; + menuInput->unk20 = 0; + menuInput->unk4 = 0; + menuInput->firstEntryY = 16; + menuInput->unk0 = 0; + menuInput->unkC = 0; + menuInput->unkE = 0; + menuInput->unk14.x = 0; + menuInput->unk14.y = 0; + menuInput->unk8.x = 8; + menuInput->unk8.y = 8; + sub_801317C(&menuInput->unk28); + var = sub_80095E4(menuInput->unk1C, 0); + windows.id[0].unk10 = windows.id[0].height = var + 2; + sub_80137B0(menuInput, var * 8); + + ShowWindows(&windows, TRUE, TRUE); + + gFriendAreasMapPtr->unk4DDC = 0; + gFriendAreasMapPtr->unk4DE0 = 0; + gFriendAreasMapPtr->unk4DE4 = 0; + gFriendAreasMapPtr->unk4DE8 = 0; + sub_80073B8(0); + PrintFormattedStringOnWindow(16, 0, _("Where would you like to go?"), 0, '\0'); + + for (i = 0; i < count; i++) { + FriendAreaCapacity friendAreaCapacity; + s32 y = GetMenuEntryYCoord(menuInput, i); + u8 areaId = gFriendAreasMapPtr->displayedAreas[i]; + + PrintFriendAreaNameInMap(gFormatBuffer_Items[0], areaId); + if (areaId == 0) { + PrintFormattedStringOnWindow(12, y, _("{MOVE_ITEM_0}"), 0, '\0'); + } + else { + GetFriendAreaCapacity(areaId, &friendAreaCapacity, gFriendAreasMapPtr->unk4A2C); + gFormatArgs[0] = friendAreaCapacity.currNoPokemon; + gFormatArgs[1] = friendAreaCapacity.maxPokemon; + PrintFormattedStringOnWindow(12, y, _("{MOVE_ITEM_0}($v02/$v12)"), 0, '\0'); + } + } + + sub_80073E0(0); +} + +void FriendAreasMap_RunFrameActions(void) +{ + SetBG2RegOffsets(gFriendAreasMapPtr->bgPos.x, gFriendAreasMapPtr->bgPos.y); + SetBG3RegOffsets(gFriendAreasMapPtr->bgPos.x, gFriendAreasMapPtr->bgPos.y); + AnimateSprites(); + sub_8004AF0(FadeScreen(), gFriendAreasMapPtr->unk4C4C, 0xB0, 16, gFriendAreasMapPtr->brightness, NULL); + 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(); + sub_8009908(); + xxx_call_update_bg_sound_input(); + sub_8011860(); + ResetSprites(FALSE); +} + diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 4f391f3c9..160108e4f 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -145,31 +145,31 @@ void sub_802544C(void) { s32 i; - RestoreUnkTextStruct_8006518(gUnknown_203B2B4->unk118); + RestoreUnkTextStruct_8006518(&gUnknown_203B2B4->unk118); switch (gUnknown_203B2B4->state) { case 3: if (gUnknown_203B2B4->unk0 == 0) - gUnknown_203B2B4->unk118[3] = sUnknown_80DD190; + gUnknown_203B2B4->unk118.id[3] = sUnknown_80DD190; sub_8025728(); - gUnknown_203B2B4->unk118[2] = sUnknown_80DD160; - sub_8012CAC(&gUnknown_203B2B4->unk118[2], gUnknown_203B2B4->unkC8); + gUnknown_203B2B4->unk118.id[2] = sUnknown_80DD160; + sub_8012CAC(&gUnknown_203B2B4->unk118.id[2], gUnknown_203B2B4->unkC8); break; case 13: sub_802591C(); - gUnknown_203B2B4->unk118[2] = sUnknown_80DD178; - sub_8012CAC(&gUnknown_203B2B4->unk118[2], gUnknown_203B2B4->unkC8); + gUnknown_203B2B4->unk118.id[2] = sUnknown_80DD178; + sub_8012CAC(&gUnknown_203B2B4->unk118.id[2], gUnknown_203B2B4->unkC8); break; default: for (i = 0; i < 4; i++) - gUnknown_203B2B4->unk118[i] = sUnknown_80DD148; + gUnknown_203B2B4->unk118.id[i] = sUnknown_80DD148; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2B4->unk118, TRUE, TRUE); + ShowWindows(&gUnknown_203B2B4->unk118, TRUE, TRUE); } void sub_8025518(void) diff --git a/src/friend_rescue.c b/src/friend_rescue.c index c5926d6f1..da673ddcb 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -32,7 +32,7 @@ extern void SetFriendRescueMenuState(u32); extern TeamInventory *gTeamInventoryRef; -// NOTE: MenuItems and UnkTextStruct2 defined in here.. +// NOTE: MenuItems and Window defined in here.. #include "data/friend_rescue_menus.h" const u8 gUnknown_80E25F4[] = "What would you like to do?"; @@ -315,7 +315,7 @@ u32 CreateFriendRescueMenu(void) int counter; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_203B33C = MemoryAlloc(sizeof(WonderMailStruct_203B33C), 8); MemoryFill8(gUnknown_203B33C, 0, sizeof(WonderMailStruct_203B33C)); gUnknown_203B33C->unk530 = 0; @@ -820,7 +820,7 @@ void sub_8032828(void) case 0x32: if (sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_SOS, 0, NULL, 6); } break; @@ -842,9 +842,9 @@ void sub_8032828(void) CreateDialogueBoxAndPortrait(&gUnknown_80E2A0C[0], 0, 0, 0x101); break; case 0x3A: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8031D70(gUnknown_203B33C->unk218, 0); break; case 0x3B: @@ -896,12 +896,12 @@ void sub_8032828(void) if (sub_8023CE8() != 0) sub_8023C60(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8023868(3, 0, 0, 9); break; case 0x27: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk35C); - SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E2334, gUnknown_80E234C, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk35C); + SetMenuItems(gUnknown_203B33C->unk21C, &gUnknown_203B33C->unk35C, 3, &gUnknown_80E2334, gUnknown_80E234C, TRUE, 0, FALSE); sub_8023DA4(); sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); break; @@ -917,7 +917,7 @@ void sub_8032828(void) case 0x1D: if (sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_AOK, 0, NULL, 6); } break; @@ -1024,7 +1024,7 @@ void sub_8032828(void) if (sub_8030894() != 0) break; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_SOS, 0, NULL, 6); break; case 0x15: @@ -1051,9 +1051,9 @@ void sub_8032828(void) CreateDialogueBoxAndPortrait(&gUnknown_80E3078[0], 0, 0, 0x101); break; case 0x1A: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4, gUnknown_203B33C->passwordBuffer); break; case 0x5A: @@ -1063,24 +1063,24 @@ void sub_8032828(void) CreateDialogueBoxAndPortrait(gUnknown_80E30D0, 0, 0, 0x101); break; case 0x5D: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk35C); - SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E2408, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk35C); + SetMenuItems(gUnknown_203B33C->unk21C, &gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E2408, TRUE, 0, FALSE); sub_803092C(); sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); break; case 0x5F: if (sub_801D008() == NULL) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_x = {3, 2}; + DungeonPos local_x = {3, 2}; sub_801C8C4(0, 1, &local_x, 9); } } break; case 0x60: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk35C); - SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E23F0, gUnknown_80E2408, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk35C); + SetMenuItems(gUnknown_203B33C->unk21C, &gUnknown_203B33C->unk35C, 3, &gUnknown_80E23F0, gUnknown_80E2408, TRUE, 0, FALSE); sub_801CCD8(); sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); break; @@ -1116,9 +1116,9 @@ void sub_8032828(void) CreateDialogueBoxAndPortrait(gUnknown_80E311C, 0, 0, 0x101); break; case 0x73: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4, gUnknown_203B33C->passwordBuffer); break; case 0x66: @@ -1126,9 +1126,9 @@ void sub_8032828(void) break; case 0x67: case 0x2E: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8031D70(gUnknown_203B33C->unk218, 0); break; case 0x68: @@ -1234,7 +1234,7 @@ void sub_8032828(void) case 0x5C: if (sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(5, 0, 0, 6); } break; @@ -1242,8 +1242,8 @@ void sub_8032828(void) case 0x13: case 0x1E: case 0x33: - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk35C); - SetMenuItems(gUnknown_203B33C->unk21C, gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E234C, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk35C); + SetMenuItems(gUnknown_203B33C->unk21C, &gUnknown_203B33C->unk35C, 3, &gUnknown_80E231C, gUnknown_80E234C, TRUE, 0, FALSE); sub_803092C(); sub_8035CF4(gUnknown_203B33C->unk21C, 3, 1); break; @@ -1714,7 +1714,7 @@ void sub_8033DBC(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(FRIEND_RESCUE_MENU_MAIN); break; default: @@ -1784,9 +1784,9 @@ void sub_8033FE4(void) case 4: gUnknown_203B33C->fallbackState = 0x1D; gUnknown_203B33C->unk218 = sub_80307EC(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x1F); break; @@ -1809,15 +1809,15 @@ void sub_8034074(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x1F); break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 2); + sub_8035CC0(&gUnknown_203B33C->unk35C, 2); sub_8030810(0x1); SetFriendRescueMenuState(0x1D); break; @@ -1832,7 +1832,7 @@ void sub_8034130(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -1867,9 +1867,9 @@ void sub_803418C(void) case 4: gUnknown_203B33C->fallbackState = 0x26; gUnknown_203B33C->speciesNum = sub_8023B44(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8024458(gUnknown_203B33C->speciesNum, 0); SetFriendRescueMenuState(0x28); break; @@ -1892,15 +1892,15 @@ void sub_8034254(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8024458(gUnknown_203B33C->speciesNum, 0); SetFriendRescueMenuState(0x28); break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 3); + sub_8035CC0(&gUnknown_203B33C->unk35C, 3); sub_8023DA4(); SetFriendRescueMenuState(0x26); break; @@ -1918,7 +1918,7 @@ void sub_8034310(void) case 3: sub_802453C(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_8023B7C(1); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2036,7 +2036,7 @@ void sub_80344C0(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x2F); break; case 1: @@ -2062,9 +2062,9 @@ void sub_8034500(void) case 4: gUnknown_203B33C->fallbackState = 0x32; gUnknown_203B33C->unk218 = sub_80307EC(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x34); break; @@ -2087,15 +2087,15 @@ void sub_8034590(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x34); break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 2); + sub_8035CC0(&gUnknown_203B33C->unk35C, 2); sub_8030810(0x1); SetFriendRescueMenuState(0x32); break; @@ -2110,7 +2110,7 @@ void sub_803464C(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2183,7 +2183,7 @@ void sub_803473C(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x3B); break; case 1: @@ -2342,7 +2342,7 @@ void sub_8034970(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(0x68); break; case 1: @@ -2386,9 +2386,9 @@ void sub_80349E0(void) case 4: gUnknown_203B33C->fallbackState = 0x5C; gUnknown_203B33C->unk218 = sub_80307EC(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x5E); break; @@ -2411,15 +2411,15 @@ void sub_8034A70(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(gUnknown_203B33C->unk218, 0); SetFriendRescueMenuState(0x5E); break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 2); + sub_8035CC0(&gUnknown_203B33C->unk35C, 2); sub_8030810(0x1); SetFriendRescueMenuState(0x5C); break; @@ -2434,7 +2434,7 @@ void sub_8034B2C(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_803092C(); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2467,9 +2467,9 @@ void sub_8034B88(void) case 4: gUnknown_203B33C->fallbackState = 0x5F; gUnknown_203B33C->item.id = sub_801CB24(); - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&gUnknown_203B33C->item); SetFriendRescueMenuState(0x61); break; @@ -2484,7 +2484,7 @@ void sub_8034C38(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); sub_801CB5C(TRUE); if(gUnknown_203B33C->fallbackState == FRIEND_RESCUE_MENU_DEFAULT_FALLBACK) { @@ -2516,15 +2516,15 @@ void sub_8034C98(void) break; case 10: gUnknown_203B33C->fallbackState = FRIEND_RESCUE_MENU_DEFAULT_FALLBACK; - RestoreUnkTextStruct_8006518(gUnknown_203B33C->unk3BC); + RestoreUnkTextStruct_8006518(&gUnknown_203B33C->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&gUnknown_203B33C->item); SetFriendRescueMenuState(0x61); break; case 5: case 8: - sub_8035CC0(gUnknown_203B33C->unk35C, 3); + sub_8035CC0(&gUnknown_203B33C->unk35C, 3); sub_801CB5C(TRUE); SetFriendRescueMenuState(0x5F); break; @@ -2582,7 +2582,7 @@ void sub_8034D74(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B33C->unk3BC, TRUE, TRUE); + ShowWindows(&gUnknown_203B33C->unk3BC, TRUE, TRUE); SetFriendRescueMenuState(FRIEND_RESCUE_MENU_MAIN); break; default: diff --git a/src/ground_main.c b/src/ground_main.c index 5c22c7a5d..f05411939 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -44,8 +44,8 @@ EWRAM_DATA u16 gUnknown_20398BC = {0}; EWRAM_DATA u16 gUnknown_20398BE = {0}; EWRAM_DATA u32 gUnknown_20398C0 = {0}; EWRAM_DATA s16 gUnknown_20398C4 = {0}; -struct unkStruct_20398C8 gUnknown_20398C8; -extern u8 gUnknown_2039950; +EWRAM_DATA struct unkStruct_20398C8 gUnknown_20398C8 = {0}; +EWRAM_DATA u8 gUnknown_2039950 = 0; EWRAM_INIT bool8 gUnknown_203B49C = {0}; EWRAM_INIT u8 gUnknown_203B49D = {0}; @@ -395,7 +395,7 @@ u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2) sub_80A8EC0(auStack_98, 0x5b); BoundedCopyStringtoBuffer(nameBuffer, auStack_98, POKEMON_NAME_LENGTH); { - struct unkStruct_808D144 stack = + struct unkStruct_808D144 stack = { .name = nameBuffer, .speciesNum = MONSTER_GENGAR, @@ -413,7 +413,7 @@ u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2) sub_808D144(¶m_1->unk18, &stack); } } - break; + break; case 4: param_1->unkB = 0; break; @@ -431,7 +431,7 @@ u8 sub_80991E0(struct unkStruct_20398C8 *param_1,short *param_2) *param_2 = gUnknown_20398C4; if (gUnknown_203B49C) { memcpy(param_1, &gUnknown_20398C8, sizeof(struct unkStruct_20398C8)); - return TRUE; + return TRUE; } else { return sub_80990EC(param_1,gUnknown_20398C4); @@ -441,7 +441,7 @@ u8 sub_80991E0(struct unkStruct_20398C8 *param_1,short *param_2) void sub_8099220(struct unkStruct_20398C8 *param_1, s16 param_2) { s32 param_2_s32 = (s16)param_2; - if (param_1 != NULL) + if (param_1 != NULL) { gUnknown_203B49C = TRUE; gUnknown_203B49D = 0; diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index 4db64dde4..f52a89cb8 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -111,24 +111,24 @@ static void sub_801E980(void) { s32 index; - RestoreUnkTextStruct_8006518(sGulpinShopWork->unk12C); + RestoreUnkTextStruct_8006518(&sGulpinShopWork->unk12C); switch (sGulpinShopWork->state) { case 2: sub_801EBC4(); - sGulpinShopWork->unk12C[1] = gUnknown_80DC11C; - sGulpinShopWork->unk12C[2] = gUnknown_80DC134; - sub_8012CAC(&sGulpinShopWork->unk12C[2], sGulpinShopWork->unk28); + sGulpinShopWork->unk12C.id[1] = gUnknown_80DC11C; + sGulpinShopWork->unk12C.id[2] = gUnknown_80DC134; + sub_8012CAC(&sGulpinShopWork->unk12C.id[2], sGulpinShopWork->unk28); break; default: for(index = 0; index < 4; index++) { - sGulpinShopWork->unk12C[index] = gUnknown_80DC11C; + sGulpinShopWork->unk12C.id[index] = gUnknown_80DC11C; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sGulpinShopWork->unk12C, TRUE, TRUE); + ShowWindows(&sGulpinShopWork->unk12C, TRUE, TRUE); } static void sub_801EA28(void) diff --git a/src/gulpin_shop_801FB50.c b/src/gulpin_shop_801FB50.c index 5909e414b..b48c58a05 100644 --- a/src/gulpin_shop_801FB50.c +++ b/src/gulpin_shop_801FB50.c @@ -78,7 +78,7 @@ bool8 sub_801FB50(u32 mode) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_203B27C = MemoryAlloc(sizeof(unkStruct_203B27C), 0x8); gUnknown_203B27C->menuAction2 = 0; gUnknown_203B27C->menuAction3 = 0; @@ -194,45 +194,45 @@ static void sub_801FDC0(void) { s32 index; - RestoreUnkTextStruct_8006518(gUnknown_203B27C->unk180); + RestoreUnkTextStruct_8006518(&gUnknown_203B27C->unk180); switch (gUnknown_203B27C->state) { case 0x2: - gUnknown_203B27C->unk180[0].unk0 = 0x80; - gUnknown_203B27C->unk180[1].unk0 = 0x80; - gUnknown_203B27C->unk180[2].unk0 = 0x80; - gUnknown_203B27C->unk180[3] = gUnknown_80DC37C; + gUnknown_203B27C->unk180.id[0].unk0 = 0x80; + gUnknown_203B27C->unk180.id[1].unk0 = 0x80; + gUnknown_203B27C->unk180.id[2].unk0 = 0x80; + gUnknown_203B27C->unk180.id[3] = gUnknown_80DC37C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, FALSE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, FALSE); break; case 0x11: sub_80205D0(); - gUnknown_203B27C->unk180[2] = gUnknown_80DC334; - sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.id[2] = gUnknown_80DC334; + sub_8012CAC(&gUnknown_203B27C->unk180.id[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, TRUE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, TRUE); break; case 0x17: sub_802069C(); - gUnknown_203B27C->unk180[2] = gUnknown_80DC334; - sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.id[2] = gUnknown_80DC334; + sub_8012CAC(&gUnknown_203B27C->unk180.id[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, TRUE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, TRUE); break; case 0x20: CreateGulpinLinkMenu(); - gUnknown_203B27C->unk180[1] = gUnknown_80DC31C; - gUnknown_203B27C->unk180[2] = gUnknown_80DC34C; - sub_8012CAC(&gUnknown_203B27C->unk180[2], gUnknown_203B27C->unk7C); + gUnknown_203B27C->unk180.id[1] = gUnknown_80DC31C; + gUnknown_203B27C->unk180.id[2] = gUnknown_80DC34C; + sub_8012CAC(&gUnknown_203B27C->unk180.id[2], gUnknown_203B27C->unk7C); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, TRUE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, TRUE); break; default: for (index = 0; index < 4; index++) - gUnknown_203B27C->unk180[index] = gUnknown_80DC31C; + gUnknown_203B27C->unk180.id[index] = gUnknown_80DC31C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B27C->unk180, TRUE, TRUE); + ShowWindows(&gUnknown_203B27C->unk180, TRUE, TRUE); break; } } diff --git a/src/hints_menu1.c b/src/hints_menu1.c index fc94254bb..790f6214f 100644 --- a/src/hints_menu1.c +++ b/src/hints_menu1.c @@ -23,12 +23,12 @@ bool8 sub_801E3F0(u32 a0) sUnknown_203B264 = MemoryAlloc(sizeof(*sUnknown_203B264), 8); sUnknown_203B264->unk34 = a0; - sUnknown_203B264->unk38 = &sUnknown_203B264->unk3C[a0]; - RestoreUnkTextStruct_8006518(sUnknown_203B264->unk3C); - sUnknown_203B264->unk3C[sUnknown_203B264->unk34] = sUnknown_80DC0BC; + sUnknown_203B264->unk38 = &sUnknown_203B264->windows.id[a0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B264->windows); + sUnknown_203B264->windows.id[sUnknown_203B264->unk34] = sUnknown_80DC0BC; sub_8012D08(sUnknown_203B264->unk38, 10); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B264->unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B264->windows, TRUE, TRUE); sub_8013818(&sUnknown_203B264->input, 5, 10, a0); sub_801E594(); DrawHintSelectionMenu(); @@ -73,7 +73,7 @@ s32 GetChosenHintIndex(void) void CreateHintSelectionScreen(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B264->unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B264->windows, FALSE, FALSE); sub_8013984(&sUnknown_203B264->input); sub_801E594(); DrawHintSelectionMenu(); @@ -85,9 +85,9 @@ void CreateHintSelectionScreen(bool8 cursorSprite) void sub_801E54C(void) { if (sUnknown_203B264 != NULL) { - sUnknown_203B264->unk3C[sUnknown_203B264->unk34] = sUnknown_80DC0A0; + sUnknown_203B264->windows.id[sUnknown_203B264->unk34] = sUnknown_80DC0A0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B264->unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B264->windows, TRUE, TRUE); MemoryFree(sUnknown_203B264); sUnknown_203B264 = NULL; } @@ -108,7 +108,7 @@ static void DrawHintSelectionMenu(void) PrintStringOnWindow(16, 0, sHints, sUnknown_203B264->unk34, 0); for (hintIndex = 0; hintIndex < HINT_MAX; hintIndex++) { - y = sub_8013800(&sUnknown_203B264->input, hintIndex); + y = GetMenuEntryYCoord(&sUnknown_203B264->input, hintIndex); PrintStringOnWindow(10, y, gCommonHints[hintIndex].heading, sUnknown_203B264->unk34, 0); } diff --git a/src/hints_menu2.c b/src/hints_menu2.c index f37017e67..bc127ac88 100644 --- a/src/hints_menu2.c +++ b/src/hints_menu2.c @@ -22,12 +22,12 @@ bool8 CreateHintDisplayScreen(u32 index) { sUnknown_203B268 = MemoryAlloc(sizeof(struct_Sub80095E4_2), 8); sUnknown_203B268->s0.unk34 = 0; - sUnknown_203B268->s0.unk38 = sUnknown_203B268->s0.unk3C; - RestoreUnkTextStruct_8006518(sUnknown_203B268->s0.unk3C); - sUnknown_203B268->s0.unk3C[sUnknown_203B268->s0.unk34] = sUnknown_80DC0FC; + sUnknown_203B268->s0.unk38 = &sUnknown_203B268->s0.windows.id[0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B268->s0.windows); + sUnknown_203B268->s0.windows.id[sUnknown_203B268->s0.unk34] = sUnknown_80DC0FC; sUnknown_203B268->s0.unk38->unk14 = &sUnknown_203B268->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B268->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B268->s0.windows, TRUE, TRUE); sub_8013818(&sUnknown_203B268->s0.input, 5, 1, sUnknown_203B268->s0.unk34); sUnknown_203B268->s0.input.unk1E = index; sub_801E714(); @@ -62,9 +62,9 @@ static void sub_801E714(void) void DestroyHintDisplayScreen(void) { if (sUnknown_203B268 != NULL) { - sUnknown_203B268->s0.unk3C[sUnknown_203B268->s0.unk34] = sUnknown_80DC0E4; + sUnknown_203B268->s0.windows.id[sUnknown_203B268->s0.unk34] = sUnknown_80DC0E4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B268->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B268->s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B268); sUnknown_203B268 = NULL; } @@ -77,7 +77,7 @@ static void sub_801E76C(void) sUnknown_203B268->unk9C.f2 = 15; sUnknown_203B268->unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B268->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B268->s0.windows, TRUE, TRUE); } static void DisplayChosenHint(void) diff --git a/src/iq_skill_info_menu.c b/src/iq_skill_info_menu.c index 1a9091f84..8885fcd7f 100644 --- a/src/iq_skill_info_menu.c +++ b/src/iq_skill_info_menu.c @@ -34,9 +34,9 @@ bool8 CreateIQSkillInfoMenu(u8 iqSkill) sIQSkillInfoMenu->chosenIQSkill = iqSkill; sub_801317C(&sIQSkillInfoMenu->unk88); sIQSkillInfoMenu->unk24 = 0; - sub_80140B4(sIQSkillInfoMenu->unk28); + sub_80140B4(&sIQSkillInfoMenu->unk28); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillInfoMenu->unk28, TRUE, TRUE); + ShowWindows(&sIQSkillInfoMenu->unk28, TRUE, TRUE); SetIQSkillInfoMenuState(IQ_SKILL_INFO_MENU_INIT); return TRUE; } diff --git a/src/iq_skill_list_menu.c b/src/iq_skill_list_menu.c index 8ae25c0a7..b289a5cf6 100644 --- a/src/iq_skill_list_menu.c +++ b/src/iq_skill_list_menu.c @@ -30,13 +30,13 @@ bool8 CreateIQSkillListMenu(s16 species, u32 index, u32 a2) sIQSkillListMenu->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32]; sIQSkillListMenu->numIQSkills = GetNumAvailableIQSkills(sIQSkillListMenu->iqSkills, sIQSkillListMenu->pokeStruct->IQ); sIQSkillListMenu->s24.s0.unk34 = index; - sIQSkillListMenu->s24.s0.unk38 = &sIQSkillListMenu->s24.s0.unk3C[index]; - RestoreUnkTextStruct_8006518(sIQSkillListMenu->s24.s0.unk3C); - sIQSkillListMenu->s24.s0.unk3C[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDF0; + sIQSkillListMenu->s24.s0.unk38 = &sIQSkillListMenu->s24.s0.windows.id[index]; + RestoreUnkTextStruct_8006518(&sIQSkillListMenu->s24.s0.windows); + sIQSkillListMenu->s24.s0.windows.id[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDF0; sIQSkillListMenu->s24.s0.unk38->unk14 = &sIQSkillListMenu->s24.unk9C; sub_8012D08(sIQSkillListMenu->s24.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + ShowWindows(&sIQSkillListMenu->s24.s0.windows, TRUE, TRUE); sub_8013818(&sIQSkillListMenu->s24.s0.input, sIQSkillListMenu->numIQSkills, a2, index); sub_801C440(); BuildIQSkillList(); @@ -78,7 +78,7 @@ s32 GetIQSkillSelection(void) void RedrawIQSkillListMenu(bool8 addCursor) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillListMenu->s24.s0.unk3C, FALSE, FALSE); + ShowWindows(&sIQSkillListMenu->s24.s0.windows, FALSE, FALSE); sIQSkillListMenu->s24.s0.input.unk22 = sIQSkillListMenu->numIQSkills; sub_8013984(&sIQSkillListMenu->s24.s0.input); sub_801C440(); @@ -91,9 +91,9 @@ void RedrawIQSkillListMenu(bool8 addCursor) void CleanIQSkillListMenu(void) { if (sIQSkillListMenu != NULL) { - sIQSkillListMenu->s24.s0.unk3C[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDD8; + sIQSkillListMenu->s24.s0.windows.id[sIQSkillListMenu->s24.s0.unk34] = sUnknown_80DBDD8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + ShowWindows(&sIQSkillListMenu->s24.s0.windows, TRUE, TRUE); MemoryFree(sIQSkillListMenu); sIQSkillListMenu = NULL; } @@ -106,7 +106,7 @@ static void sub_801C440(void) sIQSkillListMenu->s24.unk9C.f2 = 10; sIQSkillListMenu->s24.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillListMenu->s24.s0.unk3C, TRUE, TRUE); + ShowWindows(&sIQSkillListMenu->s24.s0.windows, TRUE, TRUE); SUB_80095E4_CALL_2(sIQSkillListMenu->s24.s0); } @@ -132,7 +132,7 @@ void BuildIQSkillList(void) for (counter = 0; counter < sIQSkillListMenu->s24.s0.input.unk1A; counter++) { skillIndex = sIQSkillListMenu->iqSkills[(sIQSkillListMenu->s24.s0.input.unk1E * sIQSkillListMenu->s24.s0.input.unk1C) + counter]; - y = sub_8013800(&sIQSkillListMenu->s24.s0.input, counter); + y = GetMenuEntryYCoord(&sIQSkillListMenu->s24.s0.input, counter); strncpy(gFormatBuffer_Items[1], GetIQSkillName(skillIndex), 80); if (IsIQSkillSet(&sIQSkillListMenu->pokeStruct->IQSkills, 1 << skillIndex)) diff --git a/src/iq_skill_menu.c b/src/iq_skill_menu.c index b06603f73..dfd55c353 100644 --- a/src/iq_skill_menu.c +++ b/src/iq_skill_menu.c @@ -77,17 +77,17 @@ static void sub_801BFCC(void) { s32 i; - RestoreUnkTextStruct_8006518(sIQSkillMenu->unkC4); + RestoreUnkTextStruct_8006518(&sIQSkillMenu->unkC4); if (sIQSkillMenu->state == 2) - sIQSkillMenu->unkC4[2] = sUnknown_80DBDB0; + sIQSkillMenu->unkC4.id[2] = sUnknown_80DBDB0; else { for (i = 0; i < 4; i++) - sIQSkillMenu->unkC4[i] = sUnknown_80DBD98; + sIQSkillMenu->unkC4.id[i] = sUnknown_80DBD98; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sIQSkillMenu->unkC4, TRUE, TRUE); + ShowWindows(&sIQSkillMenu->unkC4, TRUE, TRUE); } static void HandleIQSkillMenuState(void) diff --git a/src/items.c b/src/items.c index d5ee5352f..f8cc8f8a5 100644 --- a/src/items.c +++ b/src/items.c @@ -33,7 +33,7 @@ EWRAM_DATA ItemDataEntry *gItemParametersData = {0}; EWRAM_DATA TeamInventory gTeamInventory = {0}; EWRAM_INIT TeamInventory *gTeamInventoryRef = {NULL}; -extern s32 sub_8091E94(s32 a1, s32 a2, s32 a3); +extern u8 sub_8091E94(s32 a1, s32 a2, s32 a3); extern void SortKecleonShopInventory(); bool8 AddKecleonWareItem(u8); @@ -1195,223 +1195,63 @@ u8 xxx_bit_lut_lookup_8091E50(u8 i0, u8 i1) return (gUnknown_8108F64[i0][i1 >> 3] >> (i1 & 7)) & 1; } +extern const u16* gUnknown_8108E58[]; -extern u16* gUnknown_8108E58[]; - -struct UnkStruct_8091E94 { - s16 unk0[12]; - s16 unk18[0xf0]; -}; - -NAKED -s32 sub_8091E94(s32 a1, s32 a2, s32 a3) +u8 sub_8091E94(s32 a0, s32 a1, s32 a2) { -#if 0 - // this is about as good as I got it so far - s32 i; - u8 item_type; - s32 result; + s32 id, i, arrId; + u8 foundCategory, ret; + struct UnkDungeonGlobal_unk1C590 data; + s16 rawArray[NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS]; + const u16 *ptr = gUnknown_8108E58[a0 - 1]; - // struct of 12 + 0xf0 (NUMBER_OF_ITEM_IDS) hwords? - struct UnkStruct_8091E94 s1; - u16 s2[12 + 0xf0]; - s32 data_index; - // 30000: level up exp required? + id = 0; + arrId = 0; + while (id < NUM_ITEM_CATEGORIES + NUMBER_OF_ITEM_IDS) { + if (ptr[arrId] >= 30000) { + s32 a = ptr[arrId] - 30000; - data_index = 0; - // compressed data? - for (i = 0; i < 252; i++) { - if (gUnknown_8108E58[a1 - 1][i] > 29999) { - s32 j; - for (j = gUnknown_8108E58[a1 - 1][i] - 30000; j != 0; j--) { - s2[data_index++] = 0; - } + while (a != 0) { + rawArray[id++] = 0; + a--; + } + } + else { + rawArray[id++] = ptr[arrId]; + } + arrId++; } - else { - s2[data_index++] = gUnknown_8108E58[a1 - 1][i]; + + arrId = 0; + for (id = 0; id < NUM_ITEM_CATEGORIES; id++) { + data.categoryValues[arrId] = rawArray[arrId]; + arrId++; } - } - for (i = 0; i < 12; i++) { - s1.unk0[i] = s2[i]; - } - - for (i = 0; i < 240; i++) { - s1.unk18[i] = s2[12 + i]; - } - - item_type = 0; - for (i = 0; i < 12; i++) { - if (s1.unk0[i] && s1.unk0[i] >= a2){ - item_type = i; - break; + for (id = 0; id < NUMBER_OF_ITEM_IDS; id++) { + data.itemValues[id] = rawArray[arrId]; + arrId++; } - } - result = 70; - if (item_type != 12) { - s32 j; - for (j = 0; j < 240; j++) { - if (s1.unk18[j] && (GetItemCategory(j) == item_type) && (s1.unk18[j] >= a3)) { - return result; - } + foundCategory = NUM_ITEM_CATEGORIES; + for (i = 0; i < NUM_ITEM_CATEGORIES; i++) { + if (data.categoryValues[i] != 0 && data.categoryValues[i] >= a1) { + foundCategory = i; + break; + } } - result = j; - } - return result; -#else - asm_unified("\tpush {r4-r7,lr}\n" -"\tmov r7, r10\n" -"\tmov r6, r9\n" -"\tmov r5, r8\n" -"\tpush {r5-r7}\n" -"\tldr r4, _08091EE4\n" -"\tadd sp, r4\n" -"\tmov r8, r1\n" -"\tmov r10, r2\n" -"\tldr r1, _08091EE8\n" -"\tsubs r0, 0x1\n" -"\tlsls r0, 2\n" -"\tadds r0, r1\n" -"\tmovs r3, 0\n" -"\tadd r1, sp, 0x18\n" -"\tmov r9, r1\n" -"\tldr r2, _08091EEC\n" -"\tmov r12, r2\n" -"\tadd r6, sp, 0x1F8\n" -"\tldr r2, [r0]\n" -"\tadds r7, r6, 0\n" -"\tmovs r4, 0\n" -"_08091EC0:\n" -"\tldrh r1, [r2]\n" -"\tcmp r1, r12\n" -"\tbls _08091EF4\n" -"\tldrh r0, [r2]\n" -"\tldr r1, _08091EF0\n" -"\tadds r0, r1\n" -"\tcmp r0, 0\n" -"\tbeq _08091EFC\n" -"\tmovs r5, 0\n" -"\tadds r1, r7, r4\n" -"_08091ED4:\n" -"\tstrh r5, [r1]\n" -"\tadds r1, 0x2\n" -"\tadds r4, 0x2\n" -"\tadds r3, 0x1\n" -"\tsubs r0, 0x1\n" -"\tcmp r0, 0\n" -"\tbne _08091ED4\n" -"\tb _08091EFC\n" -"\t.align 2, 0\n" -"_08091EE4: .4byte 0xfffffc10\n" -"_08091EE8: .4byte gUnknown_8108E58\n" -"_08091EEC: .4byte 0x0000752f\n" -"_08091EF0: .4byte 0xffff8ad0\n" -"_08091EF4:\n" -"\tadds r0, r6, r4\n" -"\tstrh r1, [r0]\n" -"\tadds r4, 0x2\n" -"\tadds r3, 0x1\n" -"_08091EFC:\n" -"\tadds r2, 0x2\n" -"\tcmp r3, 0xFB\n" -"\tble _08091EC0\n" -"\tmovs r3, 0xB\n" -"\tadd r2, sp, 0x1F8\n" -"\tmov r1, sp\n" -"_08091F08:\n" -"\tldrh r0, [r2]\n" -"\tstrh r0, [r1]\n" -"\tadds r2, 0x2\n" -"\tadds r1, 0x2\n" -"\tsubs r3, 0x1\n" -"\tcmp r3, 0\n" -"\tbge _08091F08\n" -"\tmov r2, r9\n" -"\tadd r1, sp, 0x210\n" -"\tmovs r3, 0xEF\n" -"_08091F1C:\n" -"\tldrh r0, [r1]\n" -"\tstrh r0, [r2]\n" -"\tadds r1, 0x2\n" -"\tadds r2, 0x2\n" -"\tsubs r3, 0x1\n" -"\tcmp r3, 0\n" -"\tbge _08091F1C\n" -"\tmovs r7, 0xC\n" -"\tmovs r6, 0\n" -"\tmov r0, sp\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r0, r2]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F4A\n" -"\tmov r0, sp\n" -"\tmovs r1, 0\n" -"\tldrsh r0, [r0, r1]\n" -"\tcmp r0, r8\n" -"\tblt _08091F4A\n" -"\tmovs r7, 0\n" -"\tb _08091F66\n" -"_08091F46:\n" -"\tmov r8, r5\n" -"\tb _08091F9C\n" -"_08091F4A:\n" -"\tadds r6, 0x1\n" -"\tcmp r6, 0xB\n" -"\tbgt _08091F66\n" -"\tlsls r0, r6, 1\n" -"\tmov r2, sp\n" -"\tadds r1, r2, r0\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r1, r2]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F4A\n" -"\tcmp r0, r8\n" -"\tblt _08091F4A\n" -"\tlsls r0, r6, 24\n" -"\tlsrs r7, r0, 24\n" -"_08091F66:\n" -"\tmovs r0, 0x46\n" -"\tmov r8, r0\n" -"\tcmp r7, 0xC\n" -"\tbeq _08091F9C\n" -"\tmovs r6, 0\n" -"\tmov r4, r9\n" -"_08091F72:\n" -"\tmovs r1, 0\n" -"\tldrsh r0, [r4, r1]\n" -"\tcmp r0, 0\n" -"\tbeq _08091F94\n" -"\tlsls r0, r6, 24\n" -"\tlsrs r5, r0, 24\n" -"\tadds r0, r5, 0\n" -"\tbl GetItemCategory\n" -"\tlsls r0, 24\n" -"\tlsrs r0, 24\n" -"\tcmp r0, r7\n" -"\tbne _08091F94\n" -"\tmovs r2, 0\n" -"\tldrsh r0, [r4, r2]\n" -"\tcmp r0, r10\n" -"\tbge _08091F46\n" -"_08091F94:\n" -"\tadds r4, 0x2\n" -"\tadds r6, 0x1\n" -"\tcmp r6, 0xEF\n" -"\tble _08091F72\n" -"_08091F9C:\n" -"\tmov r0, r8\n" -"\tmovs r3, 0xFC\n" -"\tlsls r3, 2\n" -"\tadd sp, r3\n" -"\tpop {r3-r5}\n" -"\tmov r8, r3\n" -"\tmov r9, r4\n" -"\tmov r10, r5\n" -"\tpop {r4-r7}\n" -"\tpop {r1}\n" -"\tbx r1\n"); -#endif + + ret = ITEM_PLAIN_SEED; + if (foundCategory != NUM_ITEM_CATEGORIES) { + for (i = 0; i < NUMBER_OF_ITEM_IDS; i++) { + if (data.itemValues[i] != 0 && GetItemCategory(i) == foundCategory && data.itemValues[i] >= a2) { + ret = i; + break; + } + } + } + + return ret; } void ClearAllItems_8091FB4(void) diff --git a/src/kangaskhan_storage1.c b/src/kangaskhan_storage1.c index 410fbd3c3..a5b6cfa36 100644 --- a/src/kangaskhan_storage1.c +++ b/src/kangaskhan_storage1.c @@ -46,7 +46,7 @@ bool8 CreateKangaskhanStorage(u32 mode) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gKangaskhanStorageWork = MemoryAlloc(sizeof(struct KangaskhanStorageWork), 8); gKangaskhanStorageWork->menuAction1 = 0; gKangaskhanStorageWork->menuAction2 = 0; @@ -145,38 +145,38 @@ static void sub_8016E80(void) { s32 index; - RestoreUnkTextStruct_8006518(gKangaskhanStorageWork->unkEC); + RestoreUnkTextStruct_8006518(&gKangaskhanStorageWork->unkEC); switch (gKangaskhanStorageWork->currState) { case 13: case 14: - gKangaskhanStorageWork->unkEC[0] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[1] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[2] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[1] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[2] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[0] = sUnknown_80DB748; break; case 22: case 23: - gKangaskhanStorageWork->unkEC[0] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[1] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[2] = sUnknown_80DB748; - gKangaskhanStorageWork->unkEC[0] = sUnknown_80DB778; + gKangaskhanStorageWork->unkEC.id[0] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[1] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[2] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[0] = sUnknown_80DB778; break; case 24: - gKangaskhanStorageWork->unkEC[1] = sUnknown_80DB790; + gKangaskhanStorageWork->unkEC.id[1] = sUnknown_80DB790; break; case 15: case 25: - gKangaskhanStorageWork->unkEC[2] = sUnknown_80DB760; + gKangaskhanStorageWork->unkEC.id[2] = sUnknown_80DB760; break; default: for (index = 0; index < 4; index++) - gKangaskhanStorageWork->unkEC[index] = sUnknown_80DB748; + gKangaskhanStorageWork->unkEC.id[index] = sUnknown_80DB748; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gKangaskhanStorageWork->unkEC, TRUE, TRUE); + ShowWindows(&gKangaskhanStorageWork->unkEC, TRUE, TRUE); } static void sub_8016FF8(void) @@ -309,7 +309,7 @@ static void sub_8016FF8(void) gKangaskhanStorageWork->unkA8.unk4 = gKangaskhanStorageWork->unkA8.unkC; gKangaskhanStorageWork->unkA8.unk14 = 1; - gKangaskhanStorageWork->unkA8.unk18 = &gKangaskhanStorageWork->unkEC[1]; + gKangaskhanStorageWork->unkA8.unk18 = &gKangaskhanStorageWork->unkEC.id[1]; gKangaskhanStorageWork->unkA8.unk1C = 40; gKangaskhanStorageWork->unkA8.unk20 = 18; sub_8013AA0(&gKangaskhanStorageWork->unkA8); diff --git a/src/kangaskhan_storage2.c b/src/kangaskhan_storage2.c index 830d2490c..031183c8d 100644 --- a/src/kangaskhan_storage2.c +++ b/src/kangaskhan_storage2.c @@ -42,7 +42,7 @@ enum MenuActions { bool8 sub_8017E1C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B20C = MemoryAlloc(sizeof(unkStruct_203B20C), 8); sUnknown_203B20C->menuAction1 = 0; sUnknown_203B20C->menuAction2 = 0; @@ -108,46 +108,46 @@ static void sub_8017F28(void) { s32 index; - RestoreUnkTextStruct_8006518(sUnknown_203B20C->unkF0); + RestoreUnkTextStruct_8006518(&sUnknown_203B20C->unkF0); switch (sUnknown_203B20C->state) { case KANGASKHAN_STORAGE_2_MAIN: - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; BuildKangaskhanStorage2MainMenu(); - sUnknown_203B20C->unkF0[2] = sUnknown_80DB7D0; - sub_8012CAC(&sUnknown_203B20C->unkF0[2], sUnknown_203B20C->unk20); + sUnknown_203B20C->unkF0.id[2] = sUnknown_80DB7D0; + sub_8012CAC(&sUnknown_203B20C->unkF0.id[2], sUnknown_203B20C->unk20); break; case 4: case 5: - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[2] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[2] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; break; case 10: case 11: - sUnknown_203B20C->unkF0[0] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[1] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[2] = sUnknown_80DB7B8; - sUnknown_203B20C->unkF0[0] = sUnknown_80DB800; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[1] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[2] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[0] = sUnknown_80DB800; break; case 12: - sUnknown_203B20C->unkF0[1] = sUnknown_80DB818; + sUnknown_203B20C->unkF0.id[1] = sUnknown_80DB818; break; case 6: case 13: - sUnknown_203B20C->unkF0[2] = sUnknown_80DB7E8; + sUnknown_203B20C->unkF0.id[2] = sUnknown_80DB7E8; break; default: case KANGASKHAN_STORAGE_2_INIT: for (index = 0; index < 4; index++) - sUnknown_203B20C->unkF0[index] = sUnknown_80DB7B8; + sUnknown_203B20C->unkF0.id[index] = sUnknown_80DB7B8; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B20C->unkF0, TRUE, TRUE); + ShowWindows(&sUnknown_203B20C->unkF0, TRUE, TRUE); } static void sub_8018100(void) @@ -189,7 +189,7 @@ static void sub_8018100(void) sUnknown_203B20C->unkC0.unk4 = sUnknown_203B20C->unkC0.unkC; sUnknown_203B20C->unkC0.unk14 = 1; - sUnknown_203B20C->unkC0.unk18 = &sUnknown_203B20C->unkF0[1]; + sUnknown_203B20C->unkC0.unk18 = &sUnknown_203B20C->unkF0.id[1]; sUnknown_203B20C->unkC0.unk1C = 40; sUnknown_203B20C->unkC0.unk20 = 18; sub_8013AA0(&sUnknown_203B20C->unkC0); diff --git a/src/kecleon_bros1.c b/src/kecleon_bros1.c index f42766aca..bc56a7c83 100644 --- a/src/kecleon_bros1.c +++ b/src/kecleon_bros1.c @@ -179,26 +179,26 @@ static void sub_8018D30(void) { s32 i; - RestoreUnkTextStruct_8006518(sKecleonBrosWork1->unkE8); + RestoreUnkTextStruct_8006518(&sKecleonBrosWork1->unkE8); switch (sKecleonBrosWork1->currState) { case 18: case 19: - sKecleonBrosWork1->unkE8[0] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[2] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[0] = sUnknown_80DB870; - sKecleonBrosWork1->unkE8[1] = sUnknown_80DB888; + sKecleonBrosWork1->unkE8.id[0] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[2] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[0] = sUnknown_80DB870; + sKecleonBrosWork1->unkE8.id[1] = sUnknown_80DB888; break; case 26: case 27: - sKecleonBrosWork1->unkE8[0] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[1] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[2] = sUnknown_80DB840; - sKecleonBrosWork1->unkE8[1] = sUnknown_80DB888; + sKecleonBrosWork1->unkE8.id[0] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[1] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[2] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[1] = sUnknown_80DB888; break; case 20: case 28: - sKecleonBrosWork1->unkE8[2] = sUnknown_80DB858; + sKecleonBrosWork1->unkE8.id[2] = sUnknown_80DB858; break; default: case KECLEON_STORE_BUY_ITEM_INFO: @@ -207,12 +207,12 @@ static void sub_8018D30(void) case KECLEON_STORE_SELL_ITEM_MENU: case KECLEON_STORE_SELL_ITEM_RECEIPT: for (i = 0; i < 4; i++) - sKecleonBrosWork1->unkE8[i] = sUnknown_80DB840; + sKecleonBrosWork1->unkE8.id[i] = sUnknown_80DB840; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sKecleonBrosWork1->unkE8, TRUE, TRUE); + ShowWindows(&sKecleonBrosWork1->unkE8, TRUE, TRUE); } static void UpdateKecleonStoreDialogue(void) diff --git a/src/kecleon_bros2.c b/src/kecleon_bros2.c index e071f6169..ffe7467e5 100644 --- a/src/kecleon_bros2.c +++ b/src/kecleon_bros2.c @@ -25,12 +25,12 @@ bool8 sub_8019E40(u32 r0) gUnknown_203B214 = MemoryAlloc(sizeof(*gUnknown_203B214), 8); gUnknown_203B214->s0.unk34 = r0; - gUnknown_203B214->s0.unk38 = &gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B214->s0.unk3C); - gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34] = sUnknown_80DB8CC; + gUnknown_203B214->s0.unk38 = &gUnknown_203B214->s0.windows.id[gUnknown_203B214->s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B214->s0.windows); + gUnknown_203B214->s0.windows.id[gUnknown_203B214->s0.unk34] = sUnknown_80DB8CC; gUnknown_203B214->s0.unk38->unk14 = &gUnknown_203B214->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B214->s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B214->s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B214->s0.input, CountKecleonShopItems(), 10, r0); gUnknown_203B214->s0.input.menuIndex = gUnknown_203B218; sub_8013984(&gUnknown_203B214->s0.input); @@ -84,7 +84,7 @@ u8 sub_8019FB0(void) void sub_8019FCC(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B214->s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B214->s0.windows, FALSE, FALSE); gUnknown_203B214->s0.input.unk22 = CountKecleonShopItems(); sub_8013984(&gUnknown_203B214->s0.input); sub_801A064(); @@ -97,9 +97,9 @@ void sub_801A010(void) { if (gUnknown_203B214 != NULL) { gUnknown_203B218 = gUnknown_203B214->s0.input.menuIndex; - gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34] = sUnknown_80DB8B4; + gUnknown_203B214->s0.windows.id[gUnknown_203B214->s0.unk34] = sUnknown_80DB8B4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B214->s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B214->s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B214); gUnknown_203B214 = NULL; } @@ -145,12 +145,12 @@ void sub_801A0D8(void) buyPrice = GetStackBuyPrice(&item); if (buyPrice <= gTeamInventoryRef->teamMoney) { - y = sub_8013800(&gUnknown_203B214->s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B214->s0.input, index); PrintStringOnWindow(8, y, auStack204, gUnknown_203B214->s0.unk34, 0); } else { sprintfStatic(auStack112, sFmtRed, auStack204); - y = sub_8013800(&gUnknown_203B214->s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B214->s0.input, index); PrintStringOnWindow(8, y, auStack112, gUnknown_203B214->s0.unk34, 0); } } diff --git a/src/kecleon_bros3.c b/src/kecleon_bros3.c index 795957ecd..af8b70663 100644 --- a/src/kecleon_bros3.c +++ b/src/kecleon_bros3.c @@ -25,12 +25,12 @@ u8 sub_801A20C(u32 r0) gUnknown_203B21C = MemoryAlloc(sizeof(*gUnknown_203B21C), 8); gUnknown_203B21C->s0.unk34 = r0; - gUnknown_203B21C->s0.unk38 = &gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B21C->s0.unk3C); - gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34] = sUnknown_80DB914; + gUnknown_203B21C->s0.unk38 = &gUnknown_203B21C->s0.windows.id[gUnknown_203B21C->s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B21C->s0.windows); + gUnknown_203B21C->s0.windows.id[gUnknown_203B21C->s0.unk34] = sUnknown_80DB914; gUnknown_203B21C->s0.unk38->unk14 = &gUnknown_203B21C->unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B21C->s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B21C->s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B21C->s0.input, CountKecleonWareItems(), 10, r0); gUnknown_203B21C->s0.input.menuIndex = gUnknown_203B220; sub_8013984(&gUnknown_203B21C->s0.input); @@ -85,7 +85,7 @@ u8 sub_801A37C(void) void sub_801A398(bool8 r0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B21C->s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B21C->s0.windows, FALSE, FALSE); gUnknown_203B21C->s0.input.unk22 = CountKecleonWareItems(); sub_8013984(&gUnknown_203B21C->s0.input); sub_801A430(); @@ -98,9 +98,9 @@ void sub_801A3DC(void) { if (gUnknown_203B21C != NULL) { gUnknown_203B220 = gUnknown_203B21C->s0.input.menuIndex; - gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34] = sUnknown_80DB8FC; + gUnknown_203B21C->s0.windows.id[gUnknown_203B21C->s0.unk34] = sUnknown_80DB8FC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B21C->s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B21C->s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B21C); gUnknown_203B21C = NULL; } @@ -146,12 +146,12 @@ void sub_801A4A4(void) buyPrice = GetStackBuyPrice(&item); if (buyPrice <= gTeamInventoryRef->teamMoney) { - y = sub_8013800(&gUnknown_203B21C->s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B21C->s0.input, index); PrintStringOnWindow(8, y, buffer1, gUnknown_203B21C->s0.unk34, 0); } else { sprintfStatic(buffer2, sFmtRed, buffer1); - y = sub_8013800(&gUnknown_203B21C->s0.input, index); + y = GetMenuEntryYCoord(&gUnknown_203B21C->s0.input, index); PrintStringOnWindow(8, y, buffer2, gUnknown_203B21C->s0.unk34, 0); } } diff --git a/src/kecleon_bros4.c b/src/kecleon_bros4.c index cb75b5065..e7d83f4dd 100644 --- a/src/kecleon_bros4.c +++ b/src/kecleon_bros4.c @@ -23,7 +23,7 @@ static void SortInventoryItems(void); static void sub_801A998(void); static s32 sub_801AE24(u32); -bool8 sub_801A5D8(u32 param_1, s32 param_2, UnkTextStruct2_sub *param_3, u32 param_4) +bool8 sub_801A5D8(u32 param_1, s32 param_2, DungeonPos *param_3, u32 param_4) { if (GetNumberOfFilledInventorySlots() == 0) return FALSE; @@ -35,18 +35,18 @@ bool8 sub_801A5D8(u32 param_1, s32 param_2, UnkTextStruct2_sub *param_3, u32 par FillInventoryGaps(); sub_801AE84(); gUnknown_203B224->unk54.s0.unk34 = param_2; - gUnknown_203B224->unk54.s0.unk38 = &gUnknown_203B224->unk54.s0.unk3C[param_2]; - RestoreUnkTextStruct_8006518(gUnknown_203B224->unk54.s0.unk3C); - gUnknown_203B224->unk54.s0.unk3C[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB95C; + gUnknown_203B224->unk54.s0.unk38 = &gUnknown_203B224->unk54.s0.windows.id[param_2]; + RestoreUnkTextStruct_8006518(&gUnknown_203B224->unk54.s0.windows); + gUnknown_203B224->unk54.s0.windows.id[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB95C; gUnknown_203B224->unk54.s0.unk38->unk14 = &gUnknown_203B224->unk54.unk9C; if (param_3 != NULL) - gUnknown_203B224->unk54.s0.unk3C[gUnknown_203B224->unk54.s0.unk34].unk8 = *param_3; + gUnknown_203B224->unk54.s0.windows.id[gUnknown_203B224->unk54.s0.unk34].pos = *param_3; sub_8012D08(gUnknown_203B224->unk54.s0.unk38, param_4); sub_8099690(1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B224->unk54.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B224->unk54.s0.input, GetNumberOfFilledInventorySlots(), param_4, param_2); gUnknown_203B224->unk54.s0.input.menuIndex = gUnknown_203B228; gUnknown_203B224->unk54.s0.input.unk1E = gUnknown_203B22A; @@ -147,7 +147,7 @@ void sub_801A8D0(bool8 r0) { sub_8099690(1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B224->unk54.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B224->unk54.s0.windows, FALSE, FALSE); FillInventoryGaps(); gUnknown_203B224->unk54.s0.input.unk22 = GetNumberOfFilledInventorySlots(); sub_8013984(&gUnknown_203B224->unk54.s0.input); @@ -162,10 +162,10 @@ void sub_801A928(void) if (gUnknown_203B224 != NULL) { gUnknown_203B228 = gUnknown_203B224->unk54.s0.input.menuIndex; gUnknown_203B22A = gUnknown_203B224->unk54.s0.input.unk1E; - gUnknown_203B224->unk54.s0.unk3C[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB944; + gUnknown_203B224->unk54.s0.windows.id[gUnknown_203B224->unk54.s0.unk34] = sUnknown_80DB944; sub_8099690(0); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B224->unk54.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B224); gUnknown_203B224 = NULL; } @@ -178,7 +178,7 @@ static void sub_801A998(void) gUnknown_203B224->unk54.unk9C.f2 = 11; gUnknown_203B224->unk54.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B224->unk54.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B224->unk54.s0.windows, TRUE, TRUE); } void sub_801A9E0(void) @@ -205,7 +205,7 @@ void sub_801A9E0(void) switch (gUnknown_203B224->unk0) { case 0: { sub_8090E14(buf1, &item, 0); - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); break; } case 1: @@ -218,7 +218,7 @@ void sub_801A9E0(void) item.flags = 1; sub_8090E14(buf1, &item, &thing); - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); break; } case 3: { @@ -231,10 +231,10 @@ void sub_801A9E0(void) sub_8090E14(buf1, &item, &thing); if (gUnknown_203B224->unk4[teamItemIndex] != 0 || sub_801ADA0(teamItemIndex)) - PrintStringOnWindow(8,sub_8013800(&gUnknown_203B224->unk54.s0.input,r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8,GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input,r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); else { strncpy(gFormatBuffer_Items[0], buf1, 80); - PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); } break; } @@ -252,15 +252,15 @@ void sub_801A9E0(void) if (GetStackSellPrice(&item) + gTeamInventoryRef->teamMoney > MAX_TEAM_MONEY) { sprintfStatic(buf2, sFmtRed, buf1); - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf2, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf2, gUnknown_203B224->unk54.s0.unk34, 0); } else - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); } else { sub_8090E14(buf1, &item, 0); strncpy(gFormatBuffer_Items[0], buf1, 80); - PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); } break; } @@ -275,17 +275,17 @@ void sub_801A9E0(void) sub_8090E14(buf1, &item, &thing); if (IsGummiItem(item.id)) - PrintStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), buf1, gUnknown_203B224->unk54.s0.unk34, 0); else { strncpy(gFormatBuffer_Items[0], buf1, 80); - PrintFormattedStringOnWindow(8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); + PrintFormattedStringOnWindow(8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), sFmtMoveItem0, gUnknown_203B224->unk54.s0.unk34, 0); } break; } } if (sub_801AED0(teamItemIndex) & 1) - sub_8007B7C(gUnknown_203B224->unk54.s0.unk34, 8, sub_8013800(&gUnknown_203B224->unk54.s0.input, r7), (gUnknown_203B224->unk54.s0.unk38->unkC - 2) * 8, 10); + sub_8007B7C(gUnknown_203B224->unk54.s0.unk34, 8, GetMenuEntryYCoord(&gUnknown_203B224->unk54.s0.input, r7), (gUnknown_203B224->unk54.s0.unk38->width - 2) * 8, 10); } sub_80073E0(gUnknown_203B224->unk54.s0.unk34); diff --git a/src/load_screen.c b/src/load_screen.c index f816767a4..d15c565e5 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -29,7 +29,7 @@ struct LoadScreen // size: 0x27c u32 currMenu; MenuStruct unk4[4]; - UnkTextStruct2 unk144[4]; + Windows unk144; /* 0x1A4 */ u8 formattedTeamName[0x24]; /* 0x1C8 */ u8 formattedPlayerName[0x24]; /* 0x1EC */ u8 formattedLocation[0x24]; @@ -48,8 +48,8 @@ void sub_80397B4(void); extern void sub_80920D8(u8 *); -const UnkTextStruct2 gUnknown_80E75F8 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E75F8 = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -57,8 +57,8 @@ const UnkTextStruct2 gUnknown_80E75F8 = { NULL }; -const UnkTextStruct2 gUnknown_80E7610 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E7610 = { + 0, 0x03, 0x02, 0x02, 0x1A, 0x0B, @@ -80,8 +80,8 @@ EWRAM_INIT MenuItem gUnknown_203B378[2] = { EWRAM_INIT u32 gUnknown_203B388[12] = {0xC, 0xC, 0xE, 0xE, 0xD, 0xE, 0xC, 0xD, 0xD, 0xB, 0xB, 0xB}; EWRAM_INIT u32 gUnknown_203B3B8[12] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1A, 0x18, 0x1B, 0x16, 0x19, 0x17}; -const UnkTextStruct2 gUnknown_80E762C = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E762C = { + 0, 0x03, 0x02, 0x0F, 0x13, 0x03, @@ -124,9 +124,9 @@ const MenuItem gDeleteSaveConfirmMenuItems[3] = {NULL, 3}, }; -const UnkTextStruct2 gUnknown_80E7784 = +const Window gUnknown_80E7784 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x17, 0x0F, 0x05, 0x03, @@ -168,29 +168,29 @@ void CreateLoadScreen(u32 currMenu) } gLoadScreen->currMenu = currMenu; for(index = 0; index < 4; index++){ - gLoadScreen->unk144[index] = gUnknown_80E75F8; + gLoadScreen->unk144.id[index] = gUnknown_80E75F8; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gLoadScreen->unk144, TRUE, TRUE); - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,FALSE,6,FALSE); + ShowWindows(&gLoadScreen->unk144, TRUE, TRUE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,0,&gUnknown_80E7610,gUnknown_203B378,FALSE,6,FALSE); switch(gLoadScreen->currMenu){ case MENU_CONTINUE: if (IsQuickSave()) - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeQuicksaveMenuItems,FALSE,6,FALSE); else - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C,gResumeAdventureMenuItems,FALSE,6,FALSE); break; case MENU_AWAITING_RESCUE: - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C,gQuitWaitingRescueMenuItems,FALSE,6,FALSE); break; case MENU_DELETE_SAVE_PROMPT: - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C,gDeleteSavePromptMenuItems,FALSE,6,FALSE); break; case MENU_DELETE_SAVE_CONFIRM: - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,FALSE,6,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,1,&gUnknown_80E762C, gDeleteSaveConfirmMenuItems,FALSE,6,FALSE); break; } - SetMenuItems(gLoadScreen->unk4,gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,TRUE,2,FALSE); + SetMenuItems(gLoadScreen->unk4,&gLoadScreen->unk144,2,&gUnknown_80E7784,gLoadScreenYesNoMenu,TRUE,2,FALSE); sub_8035CF4(gLoadScreen->unk4,0,0); sub_8035CF4(gLoadScreen->unk4,1,0); sub_8035CF4(gLoadScreen->unk4,2,1); @@ -200,7 +200,7 @@ void CreateLoadScreen(u32 currMenu) void CleanLoadScreen(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if(gLoadScreen != NULL) { MemoryFree(gLoadScreen); diff --git a/src/luminous_cave.c b/src/luminous_cave.c index edbb0cf20..3f381d91e 100644 --- a/src/luminous_cave.c +++ b/src/luminous_cave.c @@ -90,7 +90,7 @@ u32 sub_802465C(void) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sLuminousCaveWork = MemoryAlloc(sizeof(LuminousCaveWork), 8); sLuminousCaveWork->menuAction1 = 0; sLuminousCaveWork->menuAction2 = 0; @@ -180,12 +180,12 @@ static void sub_8024804(void) { s32 i; - RestoreUnkTextStruct_8006518(sLuminousCaveWork->unk114); + RestoreUnkTextStruct_8006518(&sLuminousCaveWork->unk114); switch (sLuminousCaveWork->state) { case 8: case 13: - sLuminousCaveWork->unk114[2] = sUnknown_80DCA00; + sLuminousCaveWork->unk114.id[2] = sUnknown_80DCA00; break; case LUMINOUS_CAVE_LET_US_BEGIN: case LUMINOUS_CAVE_CHANGED_APPEARANCE: @@ -200,12 +200,12 @@ static void sub_8024804(void) break; default: for (i = 0; i < 4; i++) - sLuminousCaveWork->unk114[i] = sUnknown_80DC9E8; + sLuminousCaveWork->unk114.id[i] = sUnknown_80DC9E8; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sLuminousCaveWork->unk114, TRUE, TRUE); + ShowWindows(&sLuminousCaveWork->unk114, TRUE, TRUE); } static void UpdateLuminousCaveDialogue(void) diff --git a/src/mailbox.c b/src/mailbox.c index 2e3a5a1f1..ead63f107 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -20,9 +20,9 @@ EWRAM_INIT struct unkStruct_203B304 *gUnknown_203B304 = {NULL}; -const UnkTextStruct2 gUnknown_80E0284 = +const Window gUnknown_80E0284 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -30,9 +30,9 @@ const UnkTextStruct2 gUnknown_80E0284 = NULL }; -const UnkTextStruct2 gUnknown_80E029C = +const Window gUnknown_80E029C = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x03, 0x03, 0x07, 0x03, @@ -40,9 +40,9 @@ const UnkTextStruct2 gUnknown_80E029C = NULL }; -const UnkTextStruct2 gUnknown_80E02B4 = +const Window gUnknown_80E02B4 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x04, 0x15, 0x06, 0x07, 0x03, @@ -50,9 +50,9 @@ const UnkTextStruct2 gUnknown_80E02B4 = NULL }; -const UnkTextStruct2 gUnknown_80E02CC = +const Window gUnknown_80E02CC = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x04, 0x15, 0x0f, 0x06, 0x03, @@ -150,34 +150,34 @@ void SetMailboxState(u32 newState) void sub_802E0A0(void) { s32 index; - RestoreUnkTextStruct_8006518(gUnknown_203B304->unk10C); + RestoreUnkTextStruct_8006518(&gUnknown_203B304->unk10C); switch(gUnknown_203B304->state) { case MAIN_MAILBOX_MENU: for(index = 0; index < 4; index++) { - gUnknown_203B304->unk10C[index] = gUnknown_80E0284; + gUnknown_203B304->unk10C.id[index] = gUnknown_80E0284; } CreateMailboxMenu(); - gUnknown_203B304->unk10C[2] = gUnknown_80E029C; - sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->menuItems); + gUnknown_203B304->unk10C.id[2] = gUnknown_80E029C; + sub_8012CAC(&gUnknown_203B304->unk10C.id[2], gUnknown_203B304->menuItems); break; case MAIL_ACTION_MENU: CreateMailActionMenu(); - gUnknown_203B304->unk10C[2] = gUnknown_80E02B4; - sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->menuItems); - gUnknown_203B304->unk10C[2].unkC = 6; - gUnknown_203B304->unk10C[3] = gUnknown_80E02CC; + gUnknown_203B304->unk10C.id[2] = gUnknown_80E02B4; + sub_8012CAC(&gUnknown_203B304->unk10C.id[2], gUnknown_203B304->menuItems); + gUnknown_203B304->unk10C.id[2].width = 6; + gUnknown_203B304->unk10C.id[3] = gUnknown_80E02CC; break; default: for(index = 0; index < 4; index++) { - gUnknown_203B304->unk10C[index] = gUnknown_80E0284; + gUnknown_203B304->unk10C.id[index] = gUnknown_80E0284; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B304->unk10C, TRUE, TRUE); + ShowWindows(&gUnknown_203B304->unk10C, TRUE, TRUE); } void sub_802E1AC(void) diff --git a/src/main_menu1.c b/src/main_menu1.c index 8a79f8eb2..adf9cc8ae 100644 --- a/src/main_menu1.c +++ b/src/main_menu1.c @@ -291,11 +291,12 @@ void sub_8035C1C(void) sMainMenu->sub.unk2D = 0; } -void SetMenuItems(MenuStruct *a0, UnkTextStruct2 *a1, s32 index, const UnkTextStruct2 *a3, const MenuItem *menuItems, bool8 a5, u32 menuAction, bool8 unused) +void SetMenuItems(MenuStruct *a0, Windows *a1, s32 index, const Window *a3, const MenuItem *menuItems, bool8 a5, u32 menuAction, bool8 unused) { - a1[index] = *a3; + Window *winPtrs = a1->id; + winPtrs[index] = *a3; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(a1, TRUE, TRUE); + ShowWindows(a1, TRUE, TRUE); if (a5) sub_8012D60(&a0[index], menuItems, 0, 0, menuAction, index); @@ -305,12 +306,15 @@ void SetMenuItems(MenuStruct *a0, UnkTextStruct2 *a1, s32 index, const UnkTextSt a0[index].unk4C = TRUE; } -void sub_8035CC0(UnkTextStruct2 *dataArray, u32 index) +void sub_8035CC0(Windows *dataArray, u32 index) { + Window *winPtrs; + RestoreUnkTextStruct_8006518(dataArray); - dataArray[index] = sUnknown_80E59A8; + winPtrs = dataArray->id; + winPtrs[index] = sUnknown_80E59A8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(dataArray, TRUE, TRUE); + ShowWindows(dataArray, TRUE, TRUE); } void sub_8035CF4(MenuStruct *menu, u32 index, bool8 a2) diff --git a/src/main_menu2.c b/src/main_menu2.c index 220930b9d..26837cfe3 100644 --- a/src/main_menu2.c +++ b/src/main_menu2.c @@ -32,10 +32,10 @@ void DrawMainMenu(void) } for (i = 0; i < 4; i++) - sUnknown_203B34C->unk144[i] = sUnknown_80E59C8; + sUnknown_203B34C->unk144.id[i] = sUnknown_80E59C8; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B34C->unk144, TRUE, TRUE); + ShowWindows(&sUnknown_203B34C->unk144, TRUE, TRUE); SetMainMenuItems(); sUnknown_203B34C->currMenuChoice = -1; @@ -49,7 +49,7 @@ void DrawMainMenu(void) void CleanMainMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (sUnknown_203B34C != NULL) { MemoryFree(sUnknown_203B34C); @@ -148,56 +148,56 @@ static bool8 SetMainMenuText(void) return FALSE; sUnknown_203B34C->currMenuChoice = menuChoice; - sub_8035CC0(sUnknown_203B34C->unk144, 2); - sub_8035CC0(sUnknown_203B34C->unk144, 3); + sub_8035CC0(&sUnknown_203B34C->unk144, 2); + sub_8035CC0(&sUnknown_203B34C->unk144, 3); switch (menuChoice) { case MENU_WIRELESS_COMMS: // Using wireless communications, you can go on an adventure to unknown worlds. - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E6030, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E6030, FALSE, 0, FALSE); break; case MENU_WONDER_MAIL: // Using passwords, you can receive Wonder Mail - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F80, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F80, FALSE, 0, FALSE); break; case MENU_AWAITING_RESCUE: // You are awaiting resuce by a friend // You can give up waiting for rescue - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F1C, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5F1C, FALSE, 0, FALSE); break; case MENU_NEW_GAME: // Start an entirely new adventure - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5CCC, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5CCC, FALSE, 0, FALSE); break; case MENU_CONTINUE: // Resume your adventure from where you last saved - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DA0, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DA0, FALSE, 0, FALSE); break; case MENU_DELETE_SAVE_PROMPT: // This will delete your saved game data. // Beware! This will delete it forever - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DF0, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5DF0, FALSE, 0, FALSE); break; case MENU_ADVENTURE_LOG: // Check your career as an adventurer - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D0C, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D0C, FALSE, 0, FALSE); break; case MENU_FRIEND_RESCUE: // Using a Game Link cable or passwords, friends may rescue each other - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5E5C, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5E5C, FALSE, 0, FALSE); break; case MENU_TRADE_ITEMS: // Using a Game Link cable you can trade stored items with a friend - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5EBC, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5EBC, FALSE, 0, FALSE); break; case MENU_DUAL_SLOT: // Using Dual Slot function, you can receive teams from your friends - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5FCC, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5FCC, FALSE, 0, FALSE); break; case MENU_DEBUG: // This is the Debug Mode. // It won't be in the release version - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D48, FALSE, 0, FALSE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 2, &sUnknown_80E5CB4, sUnknown_80E5D48, FALSE, 0, FALSE); break; default: break; @@ -208,7 +208,7 @@ static bool8 SetMainMenuText(void) static void sub_803623C(void) { - sub_8035CC0(sUnknown_203B34C->unk144, 1); + sub_8035CC0(&sUnknown_203B34C->unk144, 1); SetMainMenuItems(); sUnknown_203B34C->currMenuChoice = -1; @@ -230,7 +230,7 @@ static void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5C18, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5C18, TRUE, sUnknown_203B350, TRUE); } else { // Revive Team @@ -238,7 +238,7 @@ static void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5BC4, sUnknown_80E5BDC, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5BC4, sUnknown_80E5BDC, TRUE, sUnknown_203B350, TRUE); } } else { @@ -249,7 +249,7 @@ static void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5AFC, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5AFC, TRUE, sUnknown_203B350, TRUE); } else { // Continue @@ -257,7 +257,7 @@ static void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A60, sUnknown_80E5A90, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5A60, sUnknown_80E5A90, TRUE, sUnknown_203B350, TRUE); } } } @@ -269,7 +269,7 @@ static void SetMainMenuItems(void) // Friend Rescue // Trade Items // Wonder Mail - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5B8C, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5A78, sUnknown_80E5B8C, TRUE, sUnknown_203B350, TRUE); } else { // Awaiting Rescue @@ -277,14 +277,14 @@ static void SetMainMenuItems(void) // Adventure Log // Friend Rescue // Trade Items - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E5B34, sUnknown_80E5B4C, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E5B34, sUnknown_80E5B4C, TRUE, sUnknown_203B350, TRUE); } } } else { // New Game // Adventure Log - SetMenuItems(sUnknown_203B34C->unk4, sUnknown_203B34C->unk144, 0, &sUnknown_80E59E0, sUnknown_80E59F8, TRUE, sUnknown_203B350, TRUE); + SetMenuItems(sUnknown_203B34C->unk4, &sUnknown_203B34C->unk144, 0, &sUnknown_80E59E0, sUnknown_80E59F8, TRUE, sUnknown_203B350, TRUE); } } diff --git a/src/makuhita_dojo1.c b/src/makuhita_dojo1.c index bfcf7f211..a4d430b09 100644 --- a/src/makuhita_dojo1.c +++ b/src/makuhita_dojo1.c @@ -41,7 +41,7 @@ bool8 MakuhitaDojo_New(u32 mode) u32 initialState; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sMakuhitaDojoWork1 = MemoryAlloc(sizeof(MakuhitaDojoWork1), 8); sMakuhitaDojoWork1->unk10 = -1; @@ -152,21 +152,21 @@ static void sub_802FF1C(void) { s32 index; - RestoreUnkTextStruct_8006518(sMakuhitaDojoWork1->unk6C); + RestoreUnkTextStruct_8006518(&sMakuhitaDojoWork1->unk6C); switch (sMakuhitaDojoWork1->state) { case 0: case 4: case 13: for(index = 0; index < 4; index++) - sMakuhitaDojoWork1->unk6C[index] = sUnknown_80E0760; + sMakuhitaDojoWork1->unk6C.id[index] = sUnknown_80E0760; break; default: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sMakuhitaDojoWork1->unk6C, TRUE, TRUE); + ShowWindows(&sMakuhitaDojoWork1->unk6C, TRUE, TRUE); } static void MakuhitaDojo_UpdateDialogue(void) diff --git a/src/makuhita_dojo2.c b/src/makuhita_dojo2.c index 0555b3045..de517e53b 100644 --- a/src/makuhita_dojo2.c +++ b/src/makuhita_dojo2.c @@ -22,7 +22,7 @@ static void MakuhitaDojo_DrawCourseList(void); static void sub_80304C8(void); static s32 sub_8030668(void); -bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) +bool8 sub_80302E8(s32 param_1, DungeonPos *param_2, u32 param_3) { if (MakuhitaDojo_ReturnFalse()) return FALSE; @@ -31,17 +31,17 @@ bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) sMakuhitaDojoWork2 = MemoryAlloc(sizeof(MakuhitaDojoWork2), 8); sMakuhitaDojoWork2->s30.s0.unk34 = param_1; - sMakuhitaDojoWork2->s30.s0.unk38 = &sMakuhitaDojoWork2->s30.s0.unk3C[param_1]; - RestoreUnkTextStruct_8006518(sMakuhitaDojoWork2->s30.s0.unk3C); - sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E0804; + sMakuhitaDojoWork2->s30.s0.unk38 = &sMakuhitaDojoWork2->s30.s0.windows.id[param_1]; + RestoreUnkTextStruct_8006518(&sMakuhitaDojoWork2->s30.s0.windows); + sMakuhitaDojoWork2->s30.s0.windows.id[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E0804; sMakuhitaDojoWork2->s30.s0.unk38->unk14 = &sMakuhitaDojoWork2->s30.unk9C; if (param_2 != NULL) - sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34].unk8 = *param_2; + sMakuhitaDojoWork2->s30.s0.windows.id[sMakuhitaDojoWork2->s30.s0.unk34].pos = *param_2; sub_8012D08(sMakuhitaDojoWork2->s30.s0.unk38, param_3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); + ShowWindows(&sMakuhitaDojoWork2->s30.s0.windows, TRUE, TRUE); sub_8013818(&sMakuhitaDojoWork2->s30.s0.input, sub_8030668(), param_3, param_1); sub_80304C8(); MakuhitaDojo_DrawCourseList(); @@ -91,9 +91,9 @@ UNUSED static void sub_8030444(bool8 a0) void sub_8030480(void) { if (sMakuhitaDojoWork2 != NULL) { - sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E07EC; + sMakuhitaDojoWork2->s30.s0.windows.id[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E07EC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); + ShowWindows(&sMakuhitaDojoWork2->s30.s0.windows, TRUE, TRUE); MemoryFree(sMakuhitaDojoWork2); sMakuhitaDojoWork2 = NULL; } @@ -130,7 +130,7 @@ static void MakuhitaDojo_DrawCourseList(void) mazeIndex = sub_80A2668(iVar6); - y = sub_8013800(&sMakuhitaDojoWork2->s30.s0.input, i); + y = GetMenuEntryYCoord(&sMakuhitaDojoWork2->s30.s0.input, i); color = COLOR_WHITE_2; // COLOR_WHITE again? if ((bool8)IsMazeCompleted(mazeIndex)) { PrintStringOnWindow(8, y, sStarBullet, sMakuhitaDojoWork2->s30.s0.unk34, 0); diff --git a/src/menu_input.c b/src/menu_input.c index 3a19b7e9e..26eba7212 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -16,36 +16,36 @@ const u32 gDefaultMenuTextColors[3] = { COLOR_WHITE_2, COLOR_RED, COLOR_RED }; -const UnkTextStruct2_sub2 UnkData_80D47C4 = {0x01, 0x00, 0x10, 0x00}; +const WindowHeader UnkData_80D47C4 = {0x01, 0x00, 0x10, 0x00}; -const UnkTextStruct2 gUnknown_80D47C8[4] = { - 0x00, 0x00, 0x00, 0x00, - 0x06, - 0x02, 0x02, - 0x1a, 0x0c, - 0x0c, 0x00, - &UnkData_80D47C4, +const Window gUnknown_80D47C8[MAX_WINDOWS] = { + 0, + 0x06, + 0x02, 0x02, + 0x1a, 0x0c, + 0x0c, 0x00, + &UnkData_80D47C4, - 0x00, 0x00, 0x00, 0x00, - 0x03, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - NULL, + 0, + 0x03, + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL, - 0x00, 0x00, 0x00, 0x00, - 0x03, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - NULL, + 0, + 0x03, + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL, - 0x00, 0x00, 0x00, 0x00, - 0x03, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - NULL, + 0, + 0x03, + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL, }; ALIGNED(4) const u8 gUnknown_80D4828[] = _("{COLOR}%c%s"); @@ -223,7 +223,7 @@ void sub_8012C60(u32 x, u32 y, u32 a2, u32 color, u32 a4) xxx_call_draw_char(x + add_x, y, uVar2, color, a4); } -void sub_8012CAC(UnkTextStruct2 *a0, const MenuItem *a1) +void sub_8012CAC(Window *a0, const MenuItem *a1) { s32 length; s32 maxLength; @@ -240,35 +240,35 @@ void sub_8012CAC(UnkTextStruct2 *a0, const MenuItem *a1) } } - a0->unkC = (maxLength / 8) + 2; + a0->width = (maxLength / 8) + 2; sub_8012D08(a0, count); } -void sub_8012D08(UnkTextStruct2 *param_1, s32 param_2) +void sub_8012D08(Window *param_1, s32 param_2) { s32 sVar2; s16 sVar3; sVar2 = (s16) sub_80095E4(param_2, 12); - if (param_1->unk4 == 6) + if (param_1->type == WINDOW_TYPE_WITH_HEADER) sVar2 = (s16)(sVar2 + 2); sVar3 = sVar2; - param_1->unkE = sVar3; + param_1->height = sVar3; param_1->unk10 = sVar3; } -void sub_8012D34(struct UnkTextStruct2 *param_1, s32 param_2) +void sub_8012D34(struct Window *param_1, s32 param_2) { s32 sVar2; s16 sVar3; sVar2 = (s16) sub_8009614(param_2, 24); - if (param_1->unk4 == 6) + if (param_1->type == WINDOW_TYPE_WITH_HEADER) sVar2 = (s16)(sVar2 + 2); sVar3 = sVar2; - param_1->unkE = sVar3; + param_1->height = sVar3; param_1->unk10 = sVar3; } @@ -386,10 +386,10 @@ void sub_8012EBC(MenuStruct *param_1) const u32 *colorArray; s32 counter; s32 index; - UnkTextStruct2 textStack[4]; + Windows textStack; u8 buffer[256]; UnkTextStruct1 *ptr_text; - UnkTextStruct2 *ptr_text2; + Window *ptr_text2; if (param_1->unk4D) { sub_80073B8(param_1->index); @@ -397,8 +397,8 @@ void sub_8012EBC(MenuStruct *param_1) ptr_text = &gUnknown_2027370[index]; if (ptr_text->unkC == 6) { - ptr_text2 = &textStack[index]; - RestoreUnkTextStruct_8006518(textStack); + ptr_text2 = &textStack.id[index]; + RestoreUnkTextStruct_8006518(&textStack); x = sub_8008ED0(param_1->unk0); PrintFormattedStringOnWindow(((ptr_text2->unk14->f2 * 8 - x) / 2) + 8, 0, param_1->unk0, param_1->index, 0); } @@ -424,7 +424,7 @@ void sub_8012EBC(MenuStruct *param_1) color = colorArray[0]; // Use the default white sprintfStatic(buffer,gUnknown_80D4828, color, textPtr); - y = sub_8013800(¶m_1->input, counter); + y = GetMenuEntryYCoord(¶m_1->input, counter); PrintFormattedStringOnWindow(8, y, buffer, param_1->index, 0); menuItemsPtr++; counter++; @@ -552,9 +552,9 @@ static void sub_8013134(MenuInputStruct *param_1, u32 menuItemCounter, u32 index param_1->unk4 = 0; if (temp->unkC == 6) - param_1->unk6 = 16; + param_1->firstEntryY = 16; else - param_1->unk6 = 2; + param_1->firstEntryY = 2; param_1->unkC = 0; param_1->unkE = 0; @@ -701,7 +701,7 @@ void UpdateMenuCursorSpriteCoords(MenuInputStruct *param_1) index = param_1->unk0; temp = &gUnknown_2027370[index]; param_1->unk8.x = temp->unk0 * 8 + param_1->unk4; - param_1->unk8.y = temp->unk2 * 8 + sub_8013800(param_1, param_1->menuIndex); + param_1->unk8.y = temp->unk2 * 8 + GetMenuEntryYCoord(param_1, param_1->menuIndex); } void MoveMenuCursorDown(MenuInputStruct *param_1) @@ -810,15 +810,12 @@ void sub_80137F8(MenuInputStruct *param_1, u32 param_2) param_1->unk10 = param_2 << 8; } -s32 sub_8013800(MenuInputStruct *param_1, s32 param_2) +s32 GetMenuEntryYCoord(MenuInputStruct *menu, s32 entryId) { - s32 iVar1; - s32 iVar2; + s32 firstY = menu->firstEntryY; + s32 iVar1 = entryId * menu->unk10; - iVar2 = param_1->unk6; - iVar1 = param_2 * param_1->unk10; - - return iVar2 + (iVar1 / 256); + return firstY + (iVar1 / 256); } void sub_8013818(MenuInputStruct *param_1, s32 param_2, u32 param_3, s32 param_4) @@ -957,9 +954,9 @@ void sub_8013984(MenuInputStruct *param_1) param_1->unk4 = 0; if (ptr->unkC == 6) - param_1->unk6 = 16; + param_1->firstEntryY = 16; else - param_1->unk6 = 0; + param_1->firstEntryY = 0; if (param_1->unk20 < 2) param_1->unkC = 0; @@ -1152,7 +1149,7 @@ static bool8 sub_8013DD0(unkStructFor8013AA0 *a0) void sub_8013E54(void) { UnkTextStruct1 *ptr = &gUnknown_2027370[0]; - SpriteOAM SStack_18 = {0}; + SpriteOAM SStack_18 = {0}; SpriteSetAffine1(&SStack_18, 0); SpriteSetAffine2(&SStack_18, 0); @@ -1174,7 +1171,7 @@ void sub_8013E54(void) void sub_8013F84(void) { UnkTextStruct1 *ptr = &gUnknown_2027370[0]; - SpriteOAM SStack_18 = {0}; + SpriteOAM SStack_18 = {0}; SpriteSetAffine1(&SStack_18, 0); SpriteSetAffine2(&SStack_18, 0); @@ -1193,13 +1190,13 @@ void sub_8013F84(void) AddSprite(&SStack_18,0x100,0,0x0); } -void sub_80140B4(UnkTextStruct2 *a0) +void sub_80140B4(Windows *a0) { s32 i; for(i = 0; i < 4; i++) { - a0[i] = gUnknown_80D47C8[i]; + a0->id[i] = gUnknown_80D47C8[i]; } } diff --git a/src/mission_reward.c b/src/mission_reward.c index 12d1ed130..b35434301 100644 --- a/src/mission_reward.c +++ b/src/mission_reward.c @@ -22,7 +22,7 @@ struct unkStruct_203B310 /* 0xC */ s32 itemRewardIndex; unkStruct_802F204 *unk10; /* 0x14 */ struct MonPortraitMsg monPortrait; - UnkTextStruct2 unk24[4]; + Windows unk24; }; EWRAM_INIT struct unkStruct_203B310 *gUnknown_203B310 = {NULL}; @@ -41,8 +41,8 @@ enum FriendRewardStates REWARD_EXIT, }; -const UnkTextStruct2 gUnknown_80E041C = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E041C = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -112,7 +112,7 @@ u32 sub_802F204(unkStruct_802F204 *r0, bool8 displayClientSprite) struct unkStruct_203B310 *preload; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_203B310 = MemoryAlloc(sizeof(struct unkStruct_203B310), 8); gUnknown_203B310->unk10 = r0; gUnknown_203B310->itemRewardIndex = 0; @@ -180,13 +180,13 @@ void sub_802F300(void) switch(gUnknown_203B310->state) { case PREP_MONEY_REWARD: - RestoreUnkTextStruct_8006518(gUnknown_203B310->unk24); + RestoreUnkTextStruct_8006518(&gUnknown_203B310->unk24); for(index = 0; index < 4; index++) { - gUnknown_203B310->unk24[index] = gUnknown_80E041C; + gUnknown_203B310->unk24.id[index] = gUnknown_80E041C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B310->unk24, TRUE, TRUE); + ShowWindows(&gUnknown_203B310->unk24, TRUE, TRUE); default: break; } diff --git a/src/move_actions.c b/src/move_actions.c index 17e6816ce..a50f494ed 100644 --- a/src/move_actions.c +++ b/src/move_actions.c @@ -2585,8 +2585,6 @@ bool8 SplashMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param_ PixelPos pos2; Tile *tile; Entity *entity; - s32 temp; - s32 temp2; u8 check; @@ -2610,14 +2608,9 @@ _0805A8C2: TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FEBDC); return FALSE; } - temp = pos1.x * 0x1800; - temp += (0xC00); - pos2.x = (temp - target->pixelPos.x) / 0xc; - - temp2 = pos1.y * 0x1800; - temp2 += (0x80 << 5); - pos2.y = ((temp2 - target->pixelPos.y) / 0xc); + pos2.x = (X_POS_TO_PIXELPOS(pos1.x) - target->pixelPos.x) / 0xc; + pos2.y = (Y_POS_TO_PIXELPOS(pos1.y) - target->pixelPos.y) / 0xc; if (((check = sub_803F428(&target->pos), r9 = &target->pos, check)) || (sub_803F428(&pos1))) { for(counter = 0; counter < 0xC; counter++) diff --git a/src/options_menu1.c b/src/options_menu1.c index 4e0222a96..16be3d3b9 100644 --- a/src/options_menu1.c +++ b/src/options_menu1.c @@ -104,7 +104,7 @@ static void sub_801DD84(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B25C->unkBC); + RestoreUnkTextStruct_8006518(&sUnknown_203B25C->unkBC); switch (sUnknown_203B25C->state) { case OPTIONS_MENU_INIT: @@ -118,30 +118,30 @@ static void sub_801DD84(void) } for(i = 0; i < 4; i++) - sUnknown_203B25C->unkBC[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.id[i] = sUnknown_80DBFB0; - sUnknown_203B25C->unkBC[0] = sUnknown_80DBFCC; - sub_8012CAC(&sUnknown_203B25C->unkBC[0], sUnknown_203B25C->menuItems); - sUnknown_203B25C->unkBC[0].unkC = 10; + sUnknown_203B25C->unkBC.id[0] = sUnknown_80DBFCC; + sub_8012CAC(&sUnknown_203B25C->unkBC.id[0], sUnknown_203B25C->menuItems); + sUnknown_203B25C->unkBC.id[0].width = 10; break; case OPTIONS_MENU_MAIN: CreateOthersMenu(); for (i = 0; i < 4; i++) - sUnknown_203B25C->unkBC[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.id[i] = sUnknown_80DBFB0; - sUnknown_203B25C->unkBC[0] = sUnknown_80DBFCC; - sub_8012CAC(&sUnknown_203B25C->unkBC[0], sUnknown_203B25C->menuItems); - sUnknown_203B25C->unkBC[0].unkC = 10; + sUnknown_203B25C->unkBC.id[0] = sUnknown_80DBFCC; + sub_8012CAC(&sUnknown_203B25C->unkBC.id[0], sUnknown_203B25C->menuItems); + sUnknown_203B25C->unkBC.id[0].width = 10; break; default: for (i = 0; i < 4; i++) - sUnknown_203B25C->unkBC[i] = sUnknown_80DBFB0; + sUnknown_203B25C->unkBC.id[i] = sUnknown_80DBFB0; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B25C->unkBC, TRUE, TRUE); + ShowWindows(&sUnknown_203B25C->unkBC, TRUE, TRUE); } static void sub_801DED0(void) diff --git a/src/options_menu2.c b/src/options_menu2.c index 80fe8e084..b7f943857 100644 --- a/src/options_menu2.c +++ b/src/options_menu2.c @@ -22,12 +22,12 @@ bool8 sub_801E198(GameOptions *optionsMenu) sUnknown_203B260->optionsMenu = optionsMenu; sub_801317C(&sUnknown_203B260->unk4); sUnknown_203B260->unk44 = 0; - sUnknown_203B260->unk48 = &sUnknown_203B260->unk4C[0]; - RestoreUnkTextStruct_8006518(sUnknown_203B260->unk4C); - sUnknown_203B260->unk4C[sUnknown_203B260->unk44] = sUnknown_80DC03C; + sUnknown_203B260->unk48 = &sUnknown_203B260->unk4C.id[0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B260->unk4C); + sUnknown_203B260->unk4C.id[sUnknown_203B260->unk44] = sUnknown_80DC03C; sub_8012D08(sUnknown_203B260->unk48, 1); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B260->unk4C, TRUE, TRUE); + ShowWindows(&sUnknown_203B260->unk4C, TRUE, TRUE); sub_8013818(&sUnknown_203B260->input, 1, 1, sUnknown_203B260->unk44); nullsub_38(); CreateOptionsMenu(); @@ -83,9 +83,9 @@ u32 sub_801E218(void) void sub_801E2C4(void) { if (sUnknown_203B260 != NULL) { - sUnknown_203B260->unk4C[sUnknown_203B260->unk44] = sUnknown_80DC020; + sUnknown_203B260->unk4C.id[sUnknown_203B260->unk44] = sUnknown_80DC020; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B260->unk4C, TRUE, TRUE); + ShowWindows(&sUnknown_203B260->unk4C, TRUE, TRUE); MemoryFree(sUnknown_203B260); sUnknown_203B260 = NULL; } @@ -104,7 +104,7 @@ static void CreateOptionsMenu(void) sub_80073B8(sUnknown_203B260->unk44); PrintStringOnWindow(16, 0, sGameOptions,sUnknown_203B260->unk44, 0); - y = sub_8013800(&sUnknown_203B260->input, 0); + y = GetMenuEntryYCoord(&sUnknown_203B260->input, 0); PrintStringOnWindow(8, y, sUnknown_80DC064, sUnknown_203B260->unk44, 0); switch (sUnknown_203B260->optionsMenu->windowColor) { diff --git a/src/other_menus1.c b/src/other_menus1.c index 3cc5485d3..9c3b97911 100644 --- a/src/other_menus1.c +++ b/src/other_menus1.c @@ -36,7 +36,7 @@ void sub_8036FDC(s32 param_1) s32 index2; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); ResetSprites(FALSE); if (sUnknown_203B35C == NULL) { @@ -54,11 +54,11 @@ void sub_8036FDC(s32 param_1) } for (index2 = 0; index2 < 4; index2++) - sUnknown_203B35C->unk15C[index2] = sUnknown_80E653C; + sUnknown_203B35C->unk15C.id[index2] = sUnknown_80E653C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B35C->unk15C, TRUE, TRUE); - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6CD0, sUnknown_80E6CE8, FALSE, 6, FALSE); + ShowWindows(&sUnknown_203B35C->unk15C, TRUE, TRUE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6CD0, sUnknown_80E6CE8, FALSE, 6, FALSE); sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE); sub_80376CC(); } @@ -119,7 +119,7 @@ static void sub_80371B8(void) { unkStruct_8035D94 *item; const MenuItem *MenuItems; - const UnkTextStruct2 *puVar5; + const Window *puVar5; puVar5 = NULL; MenuItems = NULL; @@ -128,17 +128,17 @@ static void sub_80371B8(void) if (sUnknown_203B35C->unk0 < 2 && sUnknown_203B35C->linkStatus == COMMS_GOOD) { if (sub_8037C10(FALSE) != 0) { sub_80376CC(); - sub_8035CC0(sUnknown_203B35C->unk15C, 0); + sub_8035CC0(&sUnknown_203B35C->unk15C, 0); // Success! // The item exchange with your friend // went through successfully - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6C50, sUnknown_80E6C68, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6C50, sUnknown_80E6C68, FALSE, 6, FALSE); sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE); } } else { sub_80376CC(); - sub_8035CC0(sUnknown_203B35C->unk15C, 0); + sub_8035CC0(&sUnknown_203B35C->unk15C, 0); switch (sUnknown_203B35C->linkStatus) { case 0: @@ -194,7 +194,7 @@ static void sub_80371B8(void) break; } - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, puVar5, MenuItems, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, puVar5, MenuItems, FALSE, 6, FALSE); sub_8035CF4(sUnknown_203B35C->unk1C, 0, TRUE); if (sUnknown_203B35C->linkStatus != COMMS_GOOD && sUnknown_203B35C->unk0 == 0) { @@ -407,27 +407,27 @@ static void sub_8037810(void) void sub_8037900(void) { - sub_8035CC0(sUnknown_203B35C->unk15C, 0); + sub_8035CC0(&sUnknown_203B35C->unk15C, 0); switch (sUnknown_203B35C->unk0) { case 0: case 1: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E656C, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E656C, FALSE, 6, FALSE); break; } case 2: case 3: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E65D8, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E65D8, FALSE, 6, FALSE); break; } case 4: case 5: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E661C, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E661C, FALSE, 6, FALSE); break; } case 6: case 7: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E665C, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E665C, FALSE, 6, FALSE); break; } case 8: { @@ -435,7 +435,7 @@ void sub_8037900(void) } case 9: case 10: { - SetMenuItems(sUnknown_203B35C->unk1C, sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E667C, FALSE, 6, FALSE); + SetMenuItems(sUnknown_203B35C->unk1C, &sUnknown_203B35C->unk15C, 0, &sUnknown_80E6554, sUnknown_80E667C, FALSE, 6, FALSE); break; } } diff --git a/src/other_menus2.c b/src/other_menus2.c index 8c1db1ed8..2c5c17b30 100644 --- a/src/other_menus2.c +++ b/src/other_menus2.c @@ -20,8 +20,10 @@ typedef struct unkStruct_800D670 // rescue_password_menu.c extern s32 gCommsTimeout; // Counts to 100 and then errors if other player hasn't connected -extern s32 gUnknown_202EC40[2]; -extern s32 gUnknown_202EC48; +EWRAM_DATA static s32 gUnknown_202EC38 = 0; +UNUSED EWRAM_DATA static u8 sUnused = 0; +EWRAM_DATA static s32 gUnknown_202EC40[2] = {0}; +EWRAM_DATA static s32 gUnknown_202EC48 = 0; extern struct UnkStruct_203B184 *gUnknown_203B184; @@ -34,10 +36,12 @@ extern void sub_800D510(void); extern void sub_800D520(void); extern void sub_800D570(void); extern u8 sub_800D588(void); -extern void sub_800D59C(s32 *, u32); +extern void sub_800D59C(void *, u32); extern u8 sub_800D600(void); extern void sub_800D670(s32 idx, void *dst, s32 size); extern void sub_800D68C(u32); +void sub_800D414(void); +s32 sub_8012AE8(void); // Inline needed for 8-bit return cast static inline bool8 IsNotChunsoft(unkStruct_800D670 *unk) @@ -92,113 +96,85 @@ bool8 sub_8037A48(void) return found; } -// https://decomp.me/scratch/IJ9zV (inverted loop, try to match without gotos...) -NAKED s32 sub_8037B28(s32 mode) +static inline void InitUnk(unkStruct_800D670 *dst, const u8 *chunsoft, s32 mode) { - asm_unified("push {r4,r5,lr}\n" -" sub sp, 0x14\n" -" adds r4, r0, 0\n" -" movs r5, 0\n" -" bl sub_800D414\n" -" ldr r0, _08037B58\n" -" str r5, [r0]\n" -" ldr r5, _08037B5C\n" -" mov r0, sp\n" -" movs r1, 0\n" -" movs r2, 0x14\n" -" bl MemoryFill8\n" -" mov r0, sp\n" -" adds r1, r5, 0\n" -" bl strcpy\n" -" str r4, [sp, 0x10]\n" -" mov r0, sp\n" -" movs r1, 0x14\n" -" bl sub_800D59C\n" -" b _08037B7A\n" -" .align 2, 0\n" -"_08037B58: .4byte gUnknown_202EC38\n" -"_08037B5C: .4byte sChunsoft\n" -"_08037B60:\n" -" cmp r5, 0x3\n" -" beq _08037BCC\n" -" cmp r5, 0x4\n" -" beq _08037BD8\n" -" cmp r5, 0x5\n" -" beq _08037BF0\n" -" ldr r2, _08037BC0\n" -" ldr r1, [r2]\n" -" ldr r0, _08037BC4\n" -" cmp r1, r0\n" -" bgt _08037BE4\n" -" adds r0, r1, 0x1\n" -" str r0, [r2]\n" -"_08037B7A:\n" -" movs r4, 0\n" -"_08037B7C:\n" -" bl sub_80373C4\n" -" bl sub_8012AE8\n" -" cmp r0, 0x3\n" -" bgt _08037B8C\n" -" cmp r0, 0x2\n" -" bge _08037BF0\n" -"_08037B8C:\n" -" adds r4, 0x1\n" -" cmp r4, 0\n" -" ble _08037B7C\n" -" bl sub_800D33C\n" -" adds r5, r0, 0\n" -" bl sub_800D570\n" -" cmp r5, 0x2\n" -" bne _08037B60\n" -" bl sub_800D600\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _08037BFC\n" -" bl sub_8037A48\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" bne _08037BC8\n" -" movs r4, 0x4\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" b _08037C06\n" -" .align 2, 0\n" -"_08037BC0: .4byte gUnknown_202EC38\n" -"_08037BC4: .4byte 0x00000707\n" -"_08037BC8:\n" -" movs r4, 0\n" -" b _08037C06\n" -"_08037BCC:\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" movs r0, 0x2\n" -" b _08037C08\n" -"_08037BD8:\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" movs r0, 0x3\n" -" b _08037C08\n" -"_08037BE4:\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" movs r0, 0xF\n" -" b _08037C08\n" -"_08037BF0:\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -" movs r0, 0x1\n" -" b _08037C08\n" -"_08037BFC:\n" -" movs r4, 0x5\n" -" bl sub_800D520\n" -" bl sub_800D510\n" -"_08037C06:\n" -" adds r0, r4, 0\n" -"_08037C08:\n" -" add sp, 0x14\n" -" pop {r4,r5}\n" -" pop {r1}\n" -" bx r1"); + MemoryFill8(dst, 0, sizeof(unkStruct_800D670)); + strcpy(dst->buffer, chunsoft); + dst->unk10 = mode; +} + +s32 sub_8037B28(s32 mode) +{ + s32 i; + s32 ret; + unkStruct_800D670 stack; + s32 r5 = 0; + + sub_800D414(); + gUnknown_202EC38 = 0; + InitUnk(&stack, sChunsoft, mode); + sub_800D59C(&stack, sizeof(unkStruct_800D670)); + + while (TRUE) { + for (i = 0; i < 1; i++) { + sub_80373C4(); + switch (sub_8012AE8()) { + case 2: + case 3: + sub_800D520(); + sub_800D510(); + return 1; + } + } + + r5 = sub_800D33C(); + sub_800D570(); + + if (r5 == 2) { + break; + } + else if (r5 == 3) { + sub_800D520(); + sub_800D510(); + return 2; + } + else if (r5 == 4) { + sub_800D520(); + sub_800D510(); + return 3; + } + else if (r5 == 5) { + sub_800D520(); + sub_800D510(); + return 1; + } + + if (gUnknown_202EC38 < 1800) { + gUnknown_202EC38++; + } + else { + sub_800D520(); + sub_800D510(); + return COMMS_NOT_READY; + } + } + + if (sub_800D600() != 0) { + if (sub_8037A48() == 0) { + ret = 4; + sub_800D520(); + sub_800D510(); + } + else { + ret = 0; + } + } + else { + ret = 5; + sub_800D520(); + sub_800D510(); + } + return ret; } s32 sub_8037C10(bool8 a0) @@ -215,7 +191,7 @@ s32 sub_8037C10(bool8 a0) if (sub_800D588()) ret = gUnknown_202EC40[1]; else - ret = gUnknown_202EC40[0]; + ret = gUnknown_202EC40[0]; } return ret; @@ -278,48 +254,50 @@ static void sub_8037CC4(s32 mode, void *param_2, void *param_3) } } -// TODO: same as sub_80381F4. Try to fix this fakematch https://decomp.me/scratch/vkGqo -s32 sub_8037D64(u32 mode, void *param_2, void *param_3) +s32 sub_8037D64(u32 mode, void * param_2, void *param_3) { - u32 iVar2; - s32 linkStatus; + s32 iVar2 = 0; + s32 linkStatus = 0; - iVar2 = 0; - linkStatus = COMMS_GOOD; gUnknown_202EC48 = 0; sub_800D494(); sub_8037C44(mode, param_2); - goto _first; -_start: - while (iVar2 - 3 > 2) { - if (99 < gUnknown_202EC48) { - sub_800D520(); - sub_800D510(); - return COMMS_NOT_READY; - } - gUnknown_202EC48++; - _first: + + while (1) { sub_80373C4(); iVar2 = sub_800D33C(); sub_800D570(); + if (iVar2 == 2) { - if (sub_800D600() == 0) { + break; + } + + if (iVar2 == 3 || iVar2 == 4 || iVar2 == 5) { + sub_800D520(); + sub_800D510(); + return 1; + } + else { + + if (gUnknown_202EC48 < 100) + gUnknown_202EC48++; + else { sub_800D520(); sub_800D510(); - linkStatus = 5; + return COMMS_NOT_READY; } - else { - linkStatus = COMMS_GOOD; - } - goto _end; } - else - goto _start; } - sub_800D520(); - sub_800D510(); - return 1; -_end: + + if (sub_800D600() != 0) { + linkStatus = 0; + } + else { + sub_800D520(); + sub_800D510(); + linkStatus = 5; + } + sub_8037CC4(mode, param_2, param_3); return linkStatus; } @@ -592,55 +570,56 @@ UNUSED static s32 sub_80381E8(u32 mode, void * param_2, void * param_3) return sub_803815C(mode, param_2, param_3); } -// TODO: clean this up... fix fakematch without gotos. see above funcs https://decomp.me/scratch/JGv2m s32 sub_80381F4(u32 mode, void *param_2, void *param_3) { - u32 iVar2; - s32 linkStatus; - - iVar2 = 0; - linkStatus = sub_803815C(mode, param_2, param_3); + s32 iVar2 = 0; + s32 linkStatus = sub_803815C(mode, param_2, param_3); gCommsTimeout = 0; sub_800D494(); sub_800D59C(&linkStatus, 4); - goto _first; -_start: - while (iVar2 - 3 > 2) { - if (99 < gCommsTimeout) { - sub_800D520(); - sub_800D510(); - return COMMS_NOT_READY; - } - gCommsTimeout++; - _first: + + while (1) { sub_80373C4(); iVar2 = sub_800D33C(); sub_800D570(); if (iVar2 == 2) { - if (sub_800D600() != 0) { - linkStatus = sub_8037DF0(); - } - else { - sub_800D520(); - sub_800D510(); - linkStatus = 5; - } - if (linkStatus != COMMS_GOOD) { - sub_800D520(); - sub_800D510(); - } - else { - sub_8037F9C(mode, param_2, param_3); - } - goto _end; + break; + } + + if (iVar2 == 3 || iVar2 == 4 || iVar2 == 5) { + sub_800D520(); + sub_800D510(); + return 1; + } + + if (gCommsTimeout < 100) { + gCommsTimeout++; } else - goto _start; + { + sub_800D520(); + sub_800D510(); + return COMMS_NOT_READY; + } } - sub_800D520(); - sub_800D510(); - return 1; -_end: + + if (sub_800D600() != 0) { + linkStatus = sub_8037DF0(); + } + else { + sub_800D520(); + sub_800D510(); + linkStatus = 5; + } + + if (linkStatus == COMMS_GOOD) { + sub_8037F9C(mode, param_2, param_3); + } + else { + sub_800D520(); + sub_800D510(); + } + sub_800D520(); return linkStatus; } diff --git a/src/party_list_menu.c b/src/party_list_menu.c index 420c611a8..1e034dbd2 100644 --- a/src/party_list_menu.c +++ b/src/party_list_menu.c @@ -157,36 +157,36 @@ static void SetPartyListMenuState(s32 newState) static void sub_802608C(void) { s32 index; - RestoreUnkTextStruct_8006518(sUnknown_203B2B8->unk220); + RestoreUnkTextStruct_8006518(&sUnknown_203B2B8->unk220); switch(sUnknown_203B2B8->state) { case PARTY_LIST_STATE_MAIN_MENU: case PARTY_LIST_STATE_MAIN_MENU_1: for(index = 0; index < 4; index++) { - sUnknown_203B2B8->unk220[index] = sUnknown_80DD310; + sUnknown_203B2B8->unk220.id[index] = sUnknown_80DD310; } - sUnknown_203B2B8->unk220[0] = sUnknown_80DD358; - sUnknown_203B2B8->unk220[3] = sUnknown_80DD370; + sUnknown_203B2B8->unk220.id[0] = sUnknown_80DD358; + sUnknown_203B2B8->unk220.id[3] = sUnknown_80DD370; PartyListMenu_CreateMenu1(); - sUnknown_203B2B8->unk220[2] = sUnknown_80DD328; - sub_8012CAC(&sUnknown_203B2B8->unk220[2], sUnknown_203B2B8->unk16C); - sUnknown_203B2B8->unk220[2].unkC = 9; + sUnknown_203B2B8->unk220.id[2] = sUnknown_80DD328; + sub_8012CAC(&sUnknown_203B2B8->unk220.id[2], sUnknown_203B2B8->unk16C); + sUnknown_203B2B8->unk220.id[2].width = 9; break; case 0x14: PartyListMenu_CreateMenu2(); - sUnknown_203B2B8->unk220[2] = sUnknown_80DD340; - sub_8012CAC(&sUnknown_203B2B8->unk220[2], sUnknown_203B2B8->unk16C); + sUnknown_203B2B8->unk220.id[2] = sUnknown_80DD340; + sub_8012CAC(&sUnknown_203B2B8->unk220.id[2], sUnknown_203B2B8->unk16C); break; default: for(index = 0; index < 4; index++) { - sUnknown_203B2B8->unk220[index] = sUnknown_80DD310; + sUnknown_203B2B8->unk220.id[index] = sUnknown_80DD310; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2B8->unk220, TRUE, TRUE); + ShowWindows(&sUnknown_203B2B8->unk220, TRUE, TRUE); } void HandlePartyListMenuCallback(void) @@ -782,7 +782,7 @@ void sub_8026E08(u32 r0) sub_808D930(buffer, sUnknown_203B2B8->pokeStruct->speciesNum); sprintfStatic(buffer1, sUnknown_80DD6E0, gFormatBuffer_Monsters[0]); x = sub_8008ED0(buffer1); - PrintStringOnWindow(((sUnknown_80DD370.unkC << 3) - x) / 2, 3, buffer1, r0, 0); + PrintStringOnWindow(((sUnknown_80DD370.width << 3) - x) / 2, 3, buffer1, r0, 0); sub_80073E0(r0); } diff --git a/src/pelipper_board.c b/src/pelipper_board.c index 43d2d0b16..05fc3f7aa 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -20,9 +20,9 @@ EWRAM_INIT struct unkStruct_203B308 *gPelipperBoard = {NULL}; -const UnkTextStruct2 gUnknown_80E0330 = +const Window gUnknown_80E0330 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -30,9 +30,9 @@ const UnkTextStruct2 gUnknown_80E0330 = NULL }; -const UnkTextStruct2 gUnknown_80E0348 = +const Window gUnknown_80E0348 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x03, 0x03, 0x07, 0x03, @@ -40,9 +40,9 @@ const UnkTextStruct2 gUnknown_80E0348 = NULL }; -const UnkTextStruct2 gUnknown_80E0360 = +const Window gUnknown_80E0360 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x04, 0x15, 0x06, 0x07, 0x03, @@ -50,9 +50,9 @@ const UnkTextStruct2 gUnknown_80E0360 = NULL }; -const UnkTextStruct2 gUnknown_80E0378 = +const Window gUnknown_80E0378 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x04, 0x15, 0x0f, 0x06, 0x03, @@ -145,34 +145,34 @@ void SetPelipperBoardState(u32 newState) void sub_802E94C(void) { s32 index; - RestoreUnkTextStruct_8006518(gPelipperBoard->unk10C); + RestoreUnkTextStruct_8006518(&gPelipperBoard->unk10C); switch(gPelipperBoard->state) { case MAIN_PELIPPER_BOARD_MENU: for(index = 0; index < 4; index++) { - gPelipperBoard->unk10C[index] = gUnknown_80E0330; + gPelipperBoard->unk10C.id[index] = gUnknown_80E0330; } CreatePelipperBoardMenu(); - gPelipperBoard->unk10C[2] = gUnknown_80E0348; - sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->menuItems); + gPelipperBoard->unk10C.id[2] = gUnknown_80E0348; + sub_8012CAC(&gPelipperBoard->unk10C.id[2], gPelipperBoard->menuItems); break; case 6: sub_802EC10(); - gPelipperBoard->unk10C[2] = gUnknown_80E0360; - sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->menuItems); - gPelipperBoard->unk10C[2].unkC = 6; - gPelipperBoard->unk10C[3] = gUnknown_80E0378; + gPelipperBoard->unk10C.id[2] = gUnknown_80E0360; + sub_8012CAC(&gPelipperBoard->unk10C.id[2], gPelipperBoard->menuItems); + gPelipperBoard->unk10C.id[2].width = 6; + gPelipperBoard->unk10C.id[3] = gUnknown_80E0378; break; default: for(index = 0; index < 4; index++) { - gPelipperBoard->unk10C[index] = gUnknown_80E0330; + gPelipperBoard->unk10C.id[index] = gUnknown_80E0330; } break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gPelipperBoard->unk10C, TRUE, TRUE); + ShowWindows(&gPelipperBoard->unk10C, TRUE, TRUE); } void sub_802EA58(void) diff --git a/src/personality_test1.c b/src/personality_test1.c index 5518629e1..8eed940c8 100644 --- a/src/personality_test1.c +++ b/src/personality_test1.c @@ -386,13 +386,13 @@ static void PersonalityTest_DisplayStarterSprite(void) s32 paletteIndex; s32 emotionId; const u8 *gfx; - UnkTextStruct2 stackArray[4]; + Windows stackArray; starterID = sPersonalityTestTracker->unk4.StarterID; - RestoreUnkTextStruct_8006518(stackArray); - stackArray[1] = sUnknown_80F4244; + RestoreUnkTextStruct_8006518(&stackArray); + stackArray.id[1] = sUnknown_80F4244; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(stackArray, TRUE, FALSE); + ShowWindows(&stackArray, TRUE, FALSE); CallPrepareTextbox_8008C54(1); sub_80073B8(1); diff --git a/src/personality_test2.c b/src/personality_test2.c index 9abf56dcd..b40f611e8 100644 --- a/src/personality_test2.c +++ b/src/personality_test2.c @@ -33,12 +33,12 @@ void CreatePartnerSelectionMenu(s16 starterID) sub_803CEAC(); gUnknown_203B404->StarterID = starterID_s32; gUnknown_203B404->s18.s0.unk34 = 0; - gUnknown_203B404->s18.s0.unk38 = gUnknown_203B404->s18.s0.unk3C; + gUnknown_203B404->s18.s0.unk38 = &gUnknown_203B404->s18.s0.windows.id[0]; - gUnknown_203B404->s18.s0.unk3C[0] = gUnknown_80F4290; - gUnknown_203B404->s18.s0.unk3C[1] = gUnknown_80F42A8; - gUnknown_203B404->s18.s0.unk3C[2] = gUnknown_80F4278; - gUnknown_203B404->s18.s0.unk3C[3] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.windows.id[0] = gUnknown_80F4290; + gUnknown_203B404->s18.s0.windows.id[1] = gUnknown_80F42A8; + gUnknown_203B404->s18.s0.windows.id[2] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.windows.id[3] = gUnknown_80F4278; gUnknown_203B404->s18.s0.unk38->unk14 = &gUnknown_203B404->s18.unk9C; @@ -47,7 +47,7 @@ void CreatePartnerSelectionMenu(s16 starterID) gUnknown_203B404->s18.unk9C.f2 = 6; gUnknown_203B404->s18.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B404->s18.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B404->s18.s0.input, GetValidPartners(), 10, gUnknown_203B404->s18.s0.unk34); RedrawPartnerSelectionMenu(); PersonalityTest_DisplayPartnerSprite(); @@ -90,9 +90,9 @@ UNUSED static void sub_803CE34(bool8 cursorSprite) void sub_803CE6C(void) { - gUnknown_203B404->s18.s0.unk3C[gUnknown_203B404->s18.s0.unk34] = gUnknown_80F4278; + gUnknown_203B404->s18.s0.windows.id[gUnknown_203B404->s18.s0.unk34] = gUnknown_80F4278; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B404->s18.s0.windows, TRUE, TRUE); sub_803CECC(); } @@ -129,7 +129,7 @@ static void RedrawPartnerSelectionMenu(void) monCounter = 0; while (monCounter < gUnknown_203B404->s18.s0.input.unk1A) { - yCoord = sub_8013800(&gUnknown_203B404->s18.s0.input, monCounter); + yCoord = GetMenuEntryYCoord(&gUnknown_203B404->s18.s0.input, monCounter); monName = GetMonSpecies(gUnknown_203B404->PartnerArray[monCounter]); PrintStringOnWindow(8, yCoord, monName, gUnknown_203B404->s18.s0.unk34, 0); monCounter++; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index a726eef0a..4ff0c1ff0 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -9,6 +9,7 @@ #include "constants/iq_skill.h" #include "constants/tactic.h" #include "constants/type.h" +#include "constants/ability.h" #include "structs/str_pokemon.h" #include "sprite.h" #include "text_util.h" @@ -16,6 +17,9 @@ #include "luminous_cave.h" #include "code_8097670.h" #include "moves.h" +#include "string_format.h" +#include "dungeon.h" +#include "text.h" extern u8 *gIQSkillNames[]; extern u8 *gIQSkillDescriptions[]; @@ -23,24 +27,12 @@ extern u8 *gTacticsDescriptions[]; extern u8 *gTactics[]; extern u32 gIQSkillGroups[]; -struct unkStruct_808E9EC -{ - u32 unk0; - u32 unk4; - u32 unk8; - u32 unkC; - u8 unk10; - u8 unk11; - u8 unk12; - u8 unk13; -}; - extern SpriteOAM gShadowSprites[3]; // Shadow sprites of some kind -extern s16 gUnknown_810AC60; // 0xC -extern s16 gUnknown_810AC62; // 0xC -extern s16 gUnknown_810AC68; // 0x8 -extern s16 gUnknown_810AC64; // 0x8 -extern s16 gUnknown_810AC66; // 0x8 +extern const s16 gUnknown_810AC60; // 0xC +extern const s16 gUnknown_810AC62; // 0xC +extern const s16 gUnknown_810AC68; // 0x8 +extern const s16 gUnknown_810AC64; // 0x8 +extern const s16 gUnknown_810AC66; // 0x8 extern u8 *gUnknown_810DD58[]; extern u8 *gEvolutionStrings[]; extern u8 *gExpPts810DD9C_Ptr[]; @@ -310,166 +302,52 @@ s32 ExtractLevel(UnkDungeonGlobal_unk1CD98 *r0) return (r0->unk0 >> 9); } -// Unused -#ifdef NONMATCHING -void sub_808E9EC(PokemonStruct1 *r0, struct unkStruct_808E9EC *r1) +struct UnusedOffenseStruct { - u8 pokeAtt; - u8 r4; - u32 reg1_8; - s16 reg1; + s32 att[2]; + s32 def[2]; + u8 atkBoost; + u8 spAtkBoost; + u8 defBoost; + u8 spDefBoost; +}; - pokeAtt = r0->offense.att[0]; - - r1->unk0 = pokeAtt; - r1->unk4 = r0->offense.att[1]; - r1->unk8 = r0->offense.def[0]; - r1->unkC = r0->offense.def[1]; - r1->unk10 = 0; - r1->unk11 = 0; - r1->unk12 = 0; - r1->unk13 = 0; - if(r0->heldItem.id != 0) - { - r4 = r0->heldItem.id; - if(r4 == 0x13) - { - r1->unk10 = gUnknown_810AC60; - r1->unk0 = pokeAtt + gUnknown_810AC60; +UNUSED static void GetMonOffenseStats(PokemonStruct1 *mon, struct UnusedOffenseStruct *dst) +{ + dst->att[0] = mon->offense.att[0]; + dst->att[1] = mon->offense.att[1]; + dst->def[0] = mon->offense.def[0]; + dst->def[1] = mon->offense.def[1]; + dst->atkBoost = 0; + dst->spAtkBoost = 0; + dst->defBoost = 0; + dst->spDefBoost = 0; + if (mon->heldItem.id != ITEM_NOTHING) { + u16 itemId = mon->heldItem.id; + if (itemId == ITEM_POWER_BAND) { + dst->atkBoost += gUnknown_810AC60; + dst->att[0] += gUnknown_810AC60; } - if(r4 == 0x21) - { - r1->unk11 += gUnknown_810AC62; - r1->unk4 += gUnknown_810AC62; + if (itemId == ITEM_SPECIAL_BAND) { + dst->spAtkBoost += gUnknown_810AC62; + dst->att[1] += gUnknown_810AC62; } - if(r4 == 0x2B) - { - // TODO: regs get a little f**ked - reg1_8 = (u8)gUnknown_810AC68; - r1->unk10 += reg1_8; - r1->unk11 += reg1_8; - - reg1 = gUnknown_810AC68; - r1->unk0 += reg1; - r1->unk4 += reg1; + if (itemId == ITEM_MUNCH_BELT) { + dst->atkBoost += gUnknown_810AC68; + dst->spAtkBoost += gUnknown_810AC68; + dst->att[0] += gUnknown_810AC68; + dst->att[1] += gUnknown_810AC68; } - if(r4 == 0x1E) - { - r1->unk12 += gUnknown_810AC64; - r1->unk8 += gUnknown_810AC64; + if (itemId == ITEM_DEF_SCARF) { + dst->defBoost += gUnknown_810AC64; + dst->def[0] += gUnknown_810AC64; } - if(r4 == 0x22) - { - r1->unk13 += gUnknown_810AC66; - r1->unkC += gUnknown_810AC66; + if (itemId == ITEM_ZINC_BAND) { + dst->spDefBoost += gUnknown_810AC66; + dst->def[1] += gUnknown_810AC66; } } } -#else -NAKED -void sub_808E9EC(PokemonStruct1 *r0, struct unkStruct_808E9EC *r1) -{ - asm_unified("\tpush {r4-r6,lr}\n" - "\tadds r3, r1, 0\n" - "\tldrb r2, [r0, 0x18]\n" - "\tstr r2, [r3]\n" - "\tldrb r1, [r0, 0x19]\n" - "\tstr r1, [r3, 0x4]\n" - "\tldrb r1, [r0, 0x1A]\n" - "\tstr r1, [r3, 0x8]\n" - "\tldrb r1, [r0, 0x1B]\n" - "\tstr r1, [r3, 0xC]\n" - "\tmovs r1, 0\n" - "\tstrb r1, [r3, 0x10]\n" - "\tstrb r1, [r3, 0x11]\n" - "\tstrb r1, [r3, 0x12]\n" - "\tstrb r1, [r3, 0x13]\n" - "\tadds r1, r0, 0\n" - "\tadds r1, 0x28\n" - "\tldrb r0, [r1]\n" - "\tcmp r0, 0\n" - "\tbeq _0808EA96\n" - "\tadds r4, r0, 0\n" - "\tadds r5, r4, 0\n" - "\tcmp r4, 0x13\n" - "\tbne _0808EA2A\n" - "\tldr r1, _0808EA9C\n" - "\tldrh r0, [r1]\n" - "\tstrb r0, [r3, 0x10]\n" - "\tmovs r6, 0\n" - "\tldrsh r0, [r1, r6]\n" - "\tadds r0, r2, r0\n" - "\tstr r0, [r3]\n" -"_0808EA2A:\n" - "\tcmp r4, 0x21\n" - "\tbne _0808EA42\n" - "\tldr r1, _0808EAA0\n" - "\tldrb r0, [r1]\n" - "\tldrb r2, [r3, 0x11]\n" - "\tadds r0, r2\n" - "\tstrb r0, [r3, 0x11]\n" - "\tmovs r6, 0\n" - "\tldrsh r1, [r1, r6]\n" - "\tldr r0, [r3, 0x4]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3, 0x4]\n" -"_0808EA42:\n" - "\tcmp r4, 0x2B\n" - "\tbne _0808EA66\n" - "\tldr r2, _0808EAA4\n" - "\tldrb r0, [r2]\n" - "\tldrb r6, [r3, 0x10]\n" - "\tadds r1, r0, r6\n" - "\tstrb r1, [r3, 0x10]\n" - "\tldrb r1, [r3, 0x11]\n" - "\tadds r0, r1\n" - "\tstrb r0, [r3, 0x11]\n" - "\tmovs r6, 0\n" - "\tldrsh r1, [r2, r6]\n" - "\tldr r0, [r3]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3]\n" - "\tldr r0, [r3, 0x4]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3, 0x4]\n" -"_0808EA66:\n" - "\tcmp r4, 0x1E\n" - "\tbne _0808EA7E\n" - "\tldr r1, _0808EAA8\n" - "\tldrb r0, [r1]\n" - "\tldrb r2, [r3, 0x12]\n" - "\tadds r0, r2\n" - "\tstrb r0, [r3, 0x12]\n" - "\tmovs r6, 0\n" - "\tldrsh r1, [r1, r6]\n" - "\tldr r0, [r3, 0x8]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3, 0x8]\n" -"_0808EA7E:\n" - "\tcmp r5, 0x22\n" - "\tbne _0808EA96\n" - "\tldr r1, _0808EAAC\n" - "\tldrb r0, [r1]\n" - "\tldrb r2, [r3, 0x13]\n" - "\tadds r0, r2\n" - "\tstrb r0, [r3, 0x13]\n" - "\tmovs r6, 0\n" - "\tldrsh r1, [r1, r6]\n" - "\tldr r0, [r3, 0xC]\n" - "\tadds r0, r1\n" - "\tstr r0, [r3, 0xC]\n" -"_0808EA96:\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0808EA9C: .4byte gUnknown_810AC60\n" -"_0808EAA0: .4byte gUnknown_810AC62\n" -"_0808EAA4: .4byte gUnknown_810AC68\n" -"_0808EAA8: .4byte gUnknown_810AC64\n" -"_0808EAAC: .4byte gUnknown_810AC66"); -} -#endif u8 *GetIQSkillName(u8 skill) { @@ -922,171 +800,163 @@ void WriteHiddenPowerBits(DataSerializer* a1, HiddenPower* a2) WriteBits(a1, &a2->hiddenPowerType, 5); } -void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3) +void sub_808F468(struct PokemonStruct1 *pokemon,struct EvolveStatus *evolveStatus,bool8 param_3) { - bool8 evolFlag; - u8 friendArea; - u8 uVar2; - s32 numPokemon; - unkStruct_8092638 local_40; // sp 0x0 - unkEvolve evolveConditions; // r7 - s32 index, index2; -#ifndef NONMATCHING - register s32 defaultReason asm("sl"); -#else - s32 defaultReason; -#endif + struct FriendAreaCapacity friendAreaCapacity; + struct unkEvolve evolveConditions; + s32 index; evolveStatus->evolutionConditionStatus = 0; - for(index = MONSTER_BULBASAUR; index < MONSTER_MAX; index++) - { - if ((s16)index == MONSTER_ALAKAZAM) { - GetPokemonEvolveConditions(MONSTER_ALAKAZAM, &evolveConditions); + for (index = MONSTER_BULBASAUR; index < MONSTER_MAX; index++) { + s32 speciesId = (s16) index; + if (speciesId == MONSTER_ALAKAZAM) { + GetPokemonEvolveConditions(MONSTER_ALAKAZAM,&evolveConditions); } else { - GetPokemonEvolveConditions(index, &evolveConditions); + GetPokemonEvolveConditions(speciesId,&evolveConditions); } - if(((evolveConditions.preEvolution.evolveType != EVOLVE_TYPE_NONE) && (param_1->speciesNum == evolveConditions.preEvolution.evolveFrom))) + if (evolveConditions.preEvolution.evolveType != 0 && pokemon->speciesNum == evolveConditions.preEvolution.evolveFrom) break; }; + if (index == MONSTER_MAX) { evolveStatus->evolutionConditionStatus = EVOLUTION_NO_MORE; + return; } - else { - for(index = MONSTER_BULBASAUR, defaultReason = EVOLUTION_LACK_ITEM; index < MONSTER_MAX; index++) - { - evolFlag = FALSE; - index2 = (s16)index; - GetPokemonEvolveConditions(index2, &evolveConditions); - if ((evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_NONE) || (param_1->speciesNum != evolveConditions.preEvolution.evolveFrom)) continue; - friendArea = ((u8 (*)(s32))GetFriendArea)(index2); // UB - uVar2 = GetFriendArea(param_1->speciesNum); - sub_8092638(friendArea,&local_40,FALSE,FALSE); - if (!local_40.hasFriendArea) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_FRIEND_AREA; - evolFlag = TRUE; + + for (index = MONSTER_BULBASAUR; index < MONSTER_MAX; index++) { + u8 evolvedMonFriendArea, monFriendArea; + bool8 cannotEvolve = FALSE; + s32 speciesId = (s16) (index); + + GetPokemonEvolveConditions(speciesId, &evolveConditions); + if (evolveConditions.preEvolution.evolveType == 0 || pokemon->speciesNum != evolveConditions.preEvolution.evolveFrom) + continue; + + evolvedMonFriendArea = GetFriendArea(speciesId); + monFriendArea = GetFriendArea(pokemon->speciesNum); + GetFriendAreaCapacity2(evolvedMonFriendArea,&friendAreaCapacity,0,0); + if (!friendAreaCapacity.hasFriendArea) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_FRIEND_AREA; + cannotEvolve = TRUE; + } + else { + s32 currMonsNo = friendAreaCapacity.currNoPokemon; + if (evolvedMonFriendArea == monFriendArea) { + currMonsNo--; + } + if (friendAreaCapacity.maxPokemon <= currMonsNo) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ROOM; + cannotEvolve = TRUE; + } + } + + if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_LEVEL) { + if (evolveStatus->evolutionConditionStatus & 1) + continue; + if (pokemon->level < evolveConditions.evolutionRequirements.mainRequirement) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_LEVEL; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_IQ) { + if (pokemon->IQ < evolveConditions.evolutionRequirements.mainRequirement) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_IQ; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_ITEM) { + if (param_3) { + if ((evolveStatus->evoItem1 != evolveConditions.evolutionRequirements.mainRequirement) && + (evolveStatus->evoItem2 != evolveConditions.evolutionRequirements.mainRequirement)) + { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (FindItemInInventory(evolveConditions.evolutionRequirements.mainRequirement) < 0) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + + if (evolveConditions.evolutionRequirements.additionalRequirement == 4) { + if (param_3) { + if ((evolveStatus->evoItem1 != ITEM_LINK_CABLE) && (evolveStatus->evoItem2 != ITEM_LINK_CABLE)) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (FindItemInInventory(ITEM_LINK_CABLE) < 0) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 5) { + if (pokemon->offense.att[0] <= pokemon->offense.def[0]) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 6) { + if (pokemon->offense.att[0] >= pokemon->offense.def[0]) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 7) { + if (pokemon->offense.att[0] != pokemon->offense.def[0]) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 8) { + if (param_3) { + if ((evolveStatus->evoItem1 != ITEM_SUN_RIBBON) && (evolveStatus->evoItem2 != ITEM_SUN_RIBBON)) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (FindItemInInventory(ITEM_SUN_RIBBON) < 0) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 9) { + if (param_3) { + if ((evolveStatus->evoItem1 != ITEM_LUNAR_RIBBON) && (evolveStatus->evoItem2 != ITEM_LUNAR_RIBBON)) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (FindItemInInventory(ITEM_LUNAR_RIBBON) < 0) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ITEM; + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 0xb) { + if ((evolveStatus->wurmpleVal & 1)) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 0xc) { + if (!(evolveStatus->wurmpleVal & 1)) { + cannotEvolve = TRUE; + } + } + else if (evolveConditions.evolutionRequirements.additionalRequirement == 10) { + if (param_3 != 0) { + if ((evolveStatus->evoItem1 != ITEM_BEAUTY_SCARF) && (evolveStatus->evoItem2 != ITEM_BEAUTY_SCARF)) { + cannotEvolve = TRUE; + } } else { - numPokemon = local_40.unk2; - if (friendArea == uVar2) { - numPokemon--; - } - if (local_40.numPokemon <= numPokemon) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_ROOM; - evolFlag = TRUE; + if (FindItemInInventory(ITEM_BEAUTY_SCARF) < 0) { + cannotEvolve = TRUE; } } - if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_LEVEL) { - if ((evolveStatus->evolutionConditionStatus & EVOLUTION_GOOD)) continue; - if (param_1->level < evolveConditions.evolutionRequirements.mainRequirement) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_LEVEL; - evolFlag = TRUE; - } - } - else if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_IQ) { - if (param_1->IQ < evolveConditions.evolutionRequirements.mainRequirement) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_LACK_IQ; - evolFlag = TRUE; - } - } - else if (evolveConditions.preEvolution.evolveType == EVOLVE_TYPE_ITEM) { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 != evolveConditions.evolutionRequirements.mainRequirement) && - (evolveStatus->evoItem2 != evolveConditions.evolutionRequirements.mainRequirement)) { - evolveStatus->evolutionConditionStatus |= defaultReason; - evolFlag = TRUE; - } - } - else - { - if (FindItemInInventory(evolveConditions.evolutionRequirements.mainRequirement) < 0) { - evolveStatus->evolutionConditionStatus |= defaultReason; - evolFlag = TRUE; - } - } - } - if (evolveConditions.evolutionRequirements.additionalRequirement == 4) { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 != ITEM_LINK_CABLE) && (evolveStatus->evoItem2 != ITEM_LINK_CABLE)) - { - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - } - else - { - if (-1 < FindItemInInventory(ITEM_LINK_CABLE)) goto _0808F6CA; - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 5) { - if ((param_1->offense).att[0] > (param_1->offense).def[0]) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 6) { - if ((param_1->offense).att[0] < (param_1->offense).def[0]) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 7) { - if ((param_1->offense).att[0] == (param_1->offense).def[0]) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 8) - { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 != ITEM_SUN_RIBBON) && (evolveStatus->evoItem2 != ITEM_SUN_RIBBON)) - { - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - else goto _0808F6CA; - } - else { - if (-1 < FindItemInInventory(ITEM_SUN_RIBBON)) goto _0808F6CA; - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 9) { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 != ITEM_LUNAR_RIBBON) && (evolveStatus->evoItem2 != ITEM_LUNAR_RIBBON)) - { - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - else goto _0808F6CA; - } - else - { - if (-1 < FindItemInInventory(ITEM_LUNAR_RIBBON)) goto _0808F6CA; - evolveStatus->evolutionConditionStatus |= defaultReason; - continue; - } - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 11) { - if (!(evolveStatus->wurmpleVal & 1)) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 12) { - if ((evolveStatus->wurmpleVal & 1)) goto _0808F6CA; - else continue; - } - else if (evolveConditions.evolutionRequirements.additionalRequirement == 10) { - if (param_3 != 0) { - if ((evolveStatus->evoItem1 == ITEM_BEAUTY_SCARF) || (evolveStatus->evoItem2 == ITEM_BEAUTY_SCARF)) goto _0808F6CA; - else continue; - } - else - { - if ( FindItemInInventory(ITEM_BEAUTY_SCARF) < 0) evolFlag = TRUE; - } - } - _0808F6CA: - if (!evolFlag) { - evolveStatus->evolutionConditionStatus |= EVOLUTION_GOOD; - evolveStatus->targetEvolveSpecies = index2; - } + } + + if (!cannotEvolve) { + evolveStatus->evolutionConditionStatus |= EVOLUTION_GOOD; + evolveStatus->targetEvolveSpecies = speciesId; } } } @@ -1176,810 +1046,225 @@ UNUSED void sub_808F83C(PokemonStruct1 *pokemon, s16 species, u8 *r2) *r2 = 0; } - -// https://decomp.me/scratch/qONOW - 91.59% matched (Seth) -NAKED -void CreatePokemonInfoTabScreen(u32 param_1, s32 param_2, struct unkStruct_808FF20 *param_3, u8 *param_4, u32 param_5) +void CreatePokemonInfoTabScreen(s32 param_1, s32 param_2, struct unkStruct_808FF20 *mon, struct UnkInfoTabStruct *param_4, u32 windowId) { - asm_unified( -" push {r4-r7,lr}\n" -" mov r7, r10\n" -" mov r6, r9\n" -" mov r5, r8\n" -" push {r5-r7}\n" -" sub sp, 0x30\n" -" adds r5, r0, 0\n" -" adds r4, r1, 0\n" -" mov r10, r2\n" -" str r3, [sp, 0x2C]\n" -" ldr r0, [sp, 0x50]\n" -" bl sub_80073B8\n" -" ldr r0, _0808F880\n" -" mov r1, r10\n" -" adds r1, 0x2\n" -" movs r2, 0x14\n" -" bl strncpy\n" -" movs r0, 0x20\n" -" mov r9, r0\n" -" cmp r5, 0x5\n" -" bls _0808F874\n" -" b _0808FED6\n" -"_0808F874:\n" -" lsls r0, r5, 2\n" -" ldr r1, _0808F884\n" -" adds r0, r1\n" -" ldr r0, [r0]\n" -" mov pc, r0\n" -" .align 2, 0\n" -"_0808F880: .4byte gFormatBuffer_Monsters\n" -"_0808F884: .4byte _0808F888\n" -" .align 2, 0\n" -"_0808F888:\n" -" .4byte _0808FED6\n" -" .4byte _0808FBF4\n" -" .4byte _0808F8A0\n" -" .4byte _0808FB44\n" -" .4byte _0808FCB0\n" -" .4byte _0808FDB0\n" -"_0808F8A0:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r2, _0808F998\n" -" movs r5, 0\n" -" str r5, [sp]\n" -" movs r1, 0\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r4, _0808F99C\n" -" mov r1, r10\n" -" ldr r0, [r1, 0x2C]\n" -" str r0, [r4]\n" -" ldr r0, [r1, 0x30]\n" -" str r0, [r4, 0x4]\n" -" ldr r0, _0808F9A0\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xA\n" -" add r9, r2\n" -" ldr r0, _0808F9A4\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r3, 0xA\n" -" add r9, r3\n" -" mov r0, r10\n" -" ldr r2, [r0, 0x2C]\n" -" cmp r2, 0x63\n" -" bgt _0808F914\n" -" movs r3, 0\n" -" ldrsh r1, [r0, r3]\n" -" adds r2, 0x1\n" -" add r0, sp, 0x8\n" -" bl GetPokemonLevelData\n" -" ldr r0, [sp, 0x8]\n" -" mov r2, r10\n" -" ldr r1, [r2, 0x30]\n" -" subs r0, r1\n" -" str r0, [r4]\n" -" ldr r0, _0808F9A8\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808F914:\n" -" movs r3, 0xC\n" -" add r9, r3\n" -" mov r1, r10\n" -" ldr r0, [r1, 0x24]\n" -" str r0, [r4]\n" -" ldr r0, [r1, 0x28]\n" -" str r0, [r4, 0x4]\n" -" ldr r0, _0808F9AC\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xA\n" -" add r9, r2\n" -" ldr r0, _0808F9B0\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r0, _0808F9B4\n" -" ldr r2, [r0]\n" -" mov r0, r10\n" -" adds r0, 0x34\n" -" ldrb r3, [r0]\n" -" str r3, [r4]\n" -" mov r1, r10\n" -" adds r1, 0x39\n" -" ldrb r0, [r1]\n" -" cmp r0, 0\n" -" beq _0808F964\n" -" adds r0, r3, r0\n" -" str r0, [r4]\n" -" ldr r0, _0808F9B8\n" -" ldr r2, [r0]\n" -"_0808F964:\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r1, r10\n" -" adds r1, 0x3B\n" -" ldrb r3, [r1]\n" -" cmp r3, 0\n" -" beq _0808F9C0\n" -" mov r0, r10\n" -" adds r0, 0x36\n" -" ldrb r0, [r0]\n" -" adds r1, r3, 0\n" -" adds r0, r1\n" -" str r0, [r4]\n" -" ldr r0, _0808F9BC\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" b _0808F9D8\n" -" .align 2, 0\n" -"_0808F998: .4byte gUnknown_8107754\n" -"_0808F99C: .4byte gFormatArgs\n" -"_0808F9A0: .4byte gLevel810DD6C_Ptr\n" -"_0808F9A4: .4byte gExpPts810DD9C_Ptr\n" -"_0808F9A8: .4byte gUnknown_810DDB8\n" -"_0808F9AC: .4byte gUnknown_810DDD0\n" -"_0808F9B0: .4byte gUnknown_810DDE4\n" -"_0808F9B4: .4byte gUnknown_810DE0C\n" -"_0808F9B8: .4byte gUnknown_810DE20\n" -"_0808F9BC: .4byte gUnknown_810DE4C\n" -"_0808F9C0:\n" -" mov r0, r10\n" -" adds r0, 0x36\n" -" ldrb r0, [r0]\n" -" str r0, [r4]\n" -" ldr r0, _0808FA44\n" -" ldr r2, [r0]\n" -" str r3, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808F9D8:\n" -" movs r3, 0xA\n" -" add r9, r3\n" -" ldr r0, _0808FA48\n" -" ldr r2, [r0]\n" -" movs r5, 0\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r0, _0808FA4C\n" -" ldr r2, [r0]\n" -" ldr r4, _0808FA50\n" -" mov r0, r10\n" -" adds r0, 0x35\n" -" ldrb r3, [r0]\n" -" str r3, [r4]\n" -" mov r1, r10\n" -" adds r1, 0x3A\n" -" ldrb r0, [r1]\n" -" cmp r0, 0\n" -" beq _0808FA0E\n" -" adds r0, r3, r0\n" -" str r0, [r4]\n" -" ldr r0, _0808FA54\n" -" ldr r2, [r0]\n" -"_0808FA0E:\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r1, r10\n" -" adds r1, 0x3C\n" -" ldrb r3, [r1]\n" -" cmp r3, 0\n" -" beq _0808FA5C\n" -" mov r0, r10\n" -" adds r0, 0x37\n" -" ldrb r0, [r0]\n" -" adds r1, r3, 0\n" -" adds r0, r1\n" -" str r0, [r4]\n" -" ldr r0, _0808FA58\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" b _0808FA74\n" -" .align 2, 0\n" -"_0808FA44: .4byte gUnknown_810DE38\n" -"_0808FA48: .4byte gUnknown_810DDFC\n" -"_0808FA4C: .4byte gUnknown_810DE24\n" -"_0808FA50: .4byte gFormatArgs\n" -"_0808FA54: .4byte gUnknown_810DE28\n" -"_0808FA58: .4byte gUnknown_810DE54\n" -"_0808FA5C:\n" -" mov r0, r10\n" -" adds r0, 0x37\n" -" ldrb r0, [r0]\n" -" str r0, [r4]\n" -" ldr r0, _0808FA94\n" -" ldr r2, [r0]\n" -" str r3, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808FA74:\n" -" movs r0, 0xA\n" -" add r9, r0\n" -" mov r2, r10\n" -" adds r2, 0x20\n" -" ldrb r1, [r2]\n" -" movs r0, 0x1\n" -" ands r0, r1\n" -" cmp r0, 0\n" -" beq _0808FA9C\n" -" ldr r0, _0808FA98\n" -" adds r1, r2, 0\n" -" movs r2, 0\n" -" bl sub_8090E14\n" -" b _0808FAA6\n" -" .align 2, 0\n" -"_0808FA94: .4byte gUnknown_810DE50\n" -"_0808FA98: .4byte gFormatBuffer_Items\n" -"_0808FA9C:\n" -" ldr r0, _0808FB24\n" -" ldr r1, _0808FB28\n" -" ldr r1, [r1]\n" -" bl strcpy\n" -"_0808FAA6:\n" -" ldr r0, _0808FB2C\n" -" ldr r2, [r0]\n" -" movs r4, 0\n" -" str r4, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r1, 0xC\n" -" add r9, r1\n" -" ldr r1, _0808FB30\n" -" mov r2, r10\n" -" movs r3, 0x3E\n" -" ldrsh r0, [r2, r3]\n" -" str r0, [r1]\n" -" movs r1, 0x3E\n" -" ldrsh r0, [r2, r1]\n" -" movs r1, 0xA\n" -" bl __divsi3\n" -" lsls r0, 16\n" -" asrs r0, 16\n" -" cmp r0, 0\n" -" bge _0808FADA\n" -" movs r0, 0\n" -"_0808FADA:\n" -" cmp r0, 0x62\n" -" ble _0808FAE0\n" -" movs r0, 0x63\n" -"_0808FAE0:\n" -" ldr r1, _0808FB34\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" ldr r5, _0808FB38\n" -" ldr r1, [r0]\n" -" adds r0, r5, 0\n" -" bl strcpy\n" -" ldr r0, _0808FB3C\n" -" ldr r2, [r0]\n" -" str r4, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xA\n" -" add r9, r2\n" -" mov r0, r10\n" -" adds r0, 0x38\n" -" ldrb r4, [r0]\n" -" cmp r4, 0\n" -" beq _0808FB10\n" -" b _0808FED6\n" -"_0808FB10:\n" -" adds r0, 0x1C\n" -" ldrb r1, [r0]\n" -" adds r0, r5, 0\n" -" bl CopyTacticsNameToBuffer\n" -" ldr r0, _0808FB40\n" -" ldr r2, [r0]\n" -" str r4, [sp]\n" -" b _0808FECC\n" -" .align 2, 0\n" -"_0808FB24: .4byte gFormatBuffer_Items\n" -"_0808FB28: .4byte gUnknown_810DE58\n" -"_0808FB2C: .4byte gUnknown_810DE6C\n" -"_0808FB30: .4byte gFormatArgs\n" -"_0808FB34: .4byte gUnknown_8115718\n" -"_0808FB38: .4byte gFormatBuffer_Monsters\n" -"_0808FB3C: .4byte gUnknown_810DE80\n" -"_0808FB40: .4byte gUnknown_810DE98\n" -"_0808FB44:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r2, _0808FBE8\n" -" movs r4, 0\n" -" str r4, [sp]\n" -" movs r1, 0\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r2, _0808FBEC\n" -" str r4, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r3, r10\n" -" ldrb r0, [r3, 0x16]\n" -" bl GetFormattedTypeString\n" -" adds r2, r0, 0\n" -" str r4, [sp]\n" -" movs r0, 0x38\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r1, r10\n" -" ldrb r0, [r1, 0x17]\n" -" cmp r0, 0\n" -" beq _0808FB94\n" -" bl GetFormattedTypeString\n" -" adds r2, r0, 0\n" -" str r4, [sp]\n" -" movs r0, 0x60\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808FB94:\n" -" movs r2, 0xC\n" -" add r9, r2\n" -" ldr r2, _0808FBF0\n" -" str r4, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r3, 0xC\n" -" add r9, r3\n" -" mov r1, r10\n" -" ldrb r0, [r1, 0x18]\n" -" bl GetAbilityDescription\n" -" adds r2, r0, 0\n" -" str r4, [sp]\n" -" movs r5, 0xB\n" -" str r5, [sp, 0x4]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow2\n" -" movs r2, 0x21\n" -" add r9, r2\n" -" mov r3, r10\n" -" ldrb r0, [r3, 0x19]\n" -" cmp r0, 0\n" -" bne _0808FBD2\n" -" b _0808FED6\n" -"_0808FBD2:\n" -" bl GetAbilityDescription\n" -" adds r2, r0, 0\n" -" str r4, [sp]\n" -" str r5, [sp, 0x4]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow2\n" -" b _0808FED6\n" -" .align 2, 0\n" -"_0808FBE8: .4byte gUnknown_810775C\n" -"_0808FBEC: .4byte gUnknown_8107768\n" -"_0808FBF0: .4byte gUnknown_8107770\n" -"_0808FBF4:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r1, _0808FC34\n" -" ldr r2, [r1]\n" -" movs r1, 0\n" -" str r1, [sp]\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r0, r10\n" -" adds r0, 0x56\n" -" movs r1, 0\n" -" ldrsh r0, [r0, r1]\n" -" subs r5, r0, 0x1\n" -" movs r2, 0xC\n" -" negs r2, r2\n" -" add r9, r2\n" -" movs r7, 0\n" -" ldr r6, [sp, 0x2C]\n" -" adds r6, 0xC\n" -" adds r1, r6, 0\n" -" movs r2, 0\n" -" ldr r0, [sp, 0x2C]\n" -" adds r0, 0x2C\n" -"_0808FC24:\n" -" str r2, [r0]\n" -" subs r0, 0x4\n" -" cmp r0, r1\n" -" bge _0808FC24\n" -" movs r3, 0\n" -" mov r8, r3\n" -" b _0808FC88\n" -" .align 2, 0\n" -"_0808FC34: .4byte gUnknown_810DD58\n" -"_0808FC38:\n" -" mov r0, r10\n" -" adds r0, 0x58\n" -" adds r4, r0, r5\n" -" ldrb r0, [r4]\n" -" cmp r0, 0\n" -" beq _0808FC78\n" -" movs r7, 0x1\n" -" ldr r0, _0808FCA0\n" -" ldrb r1, [r4]\n" -" lsls r1, 2\n" -" adds r1, r0\n" -" ldr r0, _0808FCA4\n" -" ldr r1, [r1]\n" -" movs r2, 0x50\n" -" bl strncpy\n" -" ldr r2, _0808FCA8\n" -" movs r0, 0\n" -" str r0, [sp]\n" -" movs r0, 0xC\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" mov r0, r8\n" -" cmp r0, 0\n" -" ble _0808FC78\n" -" subs r0, 0x1\n" -" lsls r0, 2\n" -" adds r0, r6, r0\n" -" ldrb r1, [r4]\n" -" str r1, [r0]\n" -"_0808FC78:\n" -" movs r1, 0x1\n" -" add r8, r1\n" -" adds r5, 0x1\n" -" movs r2, 0xC\n" -" add r9, r2\n" -" mov r3, r8\n" -" cmp r3, 0x9\n" -" bgt _0808FC90\n" -"_0808FC88:\n" -" cmp r5, 0\n" -" blt _0808FC78\n" -" cmp r5, 0xB\n" -" ble _0808FC38\n" -"_0808FC90:\n" -" cmp r7, 0\n" -" beq _0808FC96\n" -" b _0808FED6\n" -"_0808FC96:\n" -" ldr r0, _0808FCAC\n" -" ldr r2, [r0]\n" -" str r7, [sp]\n" -" b _0808FD98\n" -" .align 2, 0\n" -"_0808FCA0: .4byte gStatusNames\n" -"_0808FCA4: .4byte gFormatBuffer_Items + 0x50\n" -"_0808FCA8: .4byte gUnknown_8107784\n" -"_0808FCAC: .4byte gUnknown_810DF78\n" -"_0808FCB0:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r1, _0808FCF8\n" -" ldr r2, [r1]\n" -" movs r1, 0\n" -" str r1, [sp]\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" add r4, sp, 0x14\n" -" mov r0, r10\n" -" movs r2, 0x3E\n" -" ldrsh r1, [r0, r2]\n" -" adds r0, r4, 0\n" -" bl GetNumAvailableIQSkills\n" -" mov r0, r10\n" -" adds r0, 0x40\n" -" movs r3, 0\n" -" ldrsh r0, [r0, r3]\n" -" subs r7, r0, 0x1\n" -" mov r1, r9\n" -" subs r1, 0xC\n" -" movs r2, 0\n" -" ldr r0, [sp, 0x2C]\n" -" adds r0, 0x8\n" -"_0808FCE4:\n" -" strb r2, [r0]\n" -" subs r0, 0x1\n" -" ldr r3, [sp, 0x2C]\n" -" cmp r0, r3\n" -" bge _0808FCE4\n" -" mov r9, r1\n" -" movs r4, 0\n" -" mov r8, r4\n" -" b _0808FD84\n" -" .align 2, 0\n" -"_0808FCF8: .4byte gIQSkill810DD68_Ptr\n" -"_0808FCFC:\n" -" mov r5, sp\n" -" adds r5, r7\n" -" adds r5, 0x14\n" -" ldrb r0, [r5]\n" -" cmp r0, 0\n" -" beq _0808FD74\n" -" movs r4, 0x1\n" -" bl GetIQSkillName\n" -" adds r1, r0, 0\n" -" ldr r6, _0808FD3C\n" -" adds r0, r6, 0\n" -" movs r2, 0x50\n" -" bl strncpy\n" -" mov r0, r10\n" -" adds r0, 0x50\n" -" adds r1, r4, 0\n" -" ldrb r5, [r5]\n" -" lsls r1, r5\n" -" bl IsIQSkillSet\n" -" lsls r0, 24\n" -" cmp r0, 0\n" -" beq _0808FD44\n" -" adds r0, r6, 0\n" -" subs r0, 0x50\n" -" ldr r1, _0808FD40\n" -" bl strcpy\n" -" b _0808FD4E\n" -" .align 2, 0\n" -"_0808FD3C: .4byte gFormatBuffer_Items + 0x50\n" -"_0808FD40: .4byte gUnknown_8107788\n" -"_0808FD44:\n" -" adds r0, r6, 0\n" -" subs r0, 0x50\n" -" ldr r1, _0808FDA4\n" -" bl strcpy\n" -"_0808FD4E:\n" -" mov r0, r8\n" -" cmp r0, 0\n" -" ble _0808FD64\n" -" subs r0, 0x1\n" -" ldr r1, [sp, 0x2C]\n" -" adds r0, r1, r0\n" -" mov r1, sp\n" -" adds r1, r7\n" -" adds r1, 0x14\n" -" ldrb r1, [r1]\n" -" strb r1, [r0]\n" -"_0808FD64:\n" -" ldr r2, _0808FDA8\n" -" movs r0, 0\n" -" str r0, [sp]\n" -" movs r0, 0xC\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808FD74:\n" -" movs r2, 0x1\n" -" add r8, r2\n" -" adds r7, 0x1\n" -" movs r3, 0xC\n" -" add r9, r3\n" -" mov r0, r8\n" -" cmp r0, 0x9\n" -" bgt _0808FD8C\n" -"_0808FD84:\n" -" cmp r7, 0\n" -" blt _0808FD74\n" -" cmp r7, 0x17\n" -" ble _0808FCFC\n" -"_0808FD8C:\n" -" cmp r4, 0\n" -" beq _0808FD92\n" -" b _0808FED6\n" -"_0808FD92:\n" -" ldr r0, _0808FDAC\n" -" ldr r2, [r0]\n" -" str r4, [sp]\n" -"_0808FD98:\n" -" movs r0, 0xC\n" -" movs r1, 0x20\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" b _0808FED6\n" -" .align 2, 0\n" -"_0808FDA4: .4byte gUnknown_810778C\n" -"_0808FDA8: .4byte gUnknown_8107790\n" -"_0808FDAC: .4byte gUnknown_810DF84\n" -"_0808FDB0:\n" -" lsls r0, r4, 3\n" -" adds r0, 0x10\n" -" ldr r2, _0808FEEC\n" -" movs r5, 0\n" -" str r5, [sp]\n" -" movs r1, 0\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" ldr r6, _0808FEF0\n" -" mov r2, r10\n" -" movs r3, 0\n" -" ldrsh r1, [r2, r3]\n" -" adds r0, r6, 0\n" -" bl CopyMonsterNameToBuffer\n" -" ldr r1, _0808FEF4\n" -" mov r2, r10\n" -" movs r3, 0\n" -" ldrsh r0, [r2, r3]\n" -" str r0, [r1]\n" -" ldr r0, _0808FEF8\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r0, 0xA\n" -" add r9, r0\n" -" mov r1, r10\n" -" movs r2, 0\n" -" ldrsh r0, [r1, r2]\n" -" bl GetFriendArea\n" -" lsls r0, 24\n" -" lsrs r0, 24\n" -" bl GetFriendAreaName\n" -" adds r1, r0, 0\n" -" ldr r4, _0808FEFC\n" -" adds r0, r4, 0\n" -" movs r2, 0x50\n" -" bl strncpy\n" -" ldr r0, _0808FF00\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r3, 0xA\n" -" add r9, r3\n" -" ldr r0, _0808FF04\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r0, 0xD\n" -" add r9, r0\n" -" ldr r0, _0808FF08\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r1, 0xA\n" -" add r9, r1\n" -" mov r1, r10\n" -" adds r1, 0x1C\n" -" adds r0, r4, 0\n" -" bl PrintYellowDungeonNametoBuffer\n" -" ldr r0, _0808FF0C\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xD\n" -" add r9, r2\n" -" mov r3, r10\n" -" movs r1, 0\n" -" ldrsh r0, [r3, r1]\n" -" bl GetCategoryString\n" -" adds r1, r0, 0\n" -" adds r0, r6, 0\n" -" movs r2, 0x14\n" -" bl strncpy\n" -" ldr r0, _0808FF10\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xD\n" -" add r9, r2\n" -" ldr r4, _0808FF14\n" -" mov r3, r10\n" -" movs r1, 0\n" -" ldrsh r0, [r3, r1]\n" -" bl GetBodySize\n" -" lsls r0, 24\n" -" lsrs r0, 22\n" -" adds r0, r4\n" -" ldr r1, [r0]\n" -" adds r0, r6, 0\n" -" bl strcpy\n" -" ldr r0, _0808FF18\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -" movs r2, 0xD\n" -" add r9, r2\n" -" ldr r1, _0808FF1C\n" -" mov r0, r10\n" -" adds r0, 0x4C\n" -" ldrb r0, [r0]\n" -" lsls r0, 2\n" -" adds r0, r1\n" -" ldr r2, [r0]\n" -" str r5, [sp]\n" -"_0808FECC:\n" -" movs r0, 0x4\n" -" mov r1, r9\n" -" ldr r3, [sp, 0x50]\n" -" bl PrintFormattedStringOnWindow\n" -"_0808FED6:\n" -" ldr r0, [sp, 0x50]\n" -" bl sub_80073E0\n" -" add sp, 0x30\n" -" pop {r3-r5}\n" -" mov r8, r3\n" -" mov r9, r4\n" -" mov r10, r5\n" -" pop {r4-r7}\n" -" pop {r0}\n" -" bx r0\n" -" .align 2, 0\n" -"_0808FEEC: .4byte gUnknown_8107798\n" -"_0808FEF0: .4byte gFormatBuffer_Monsters\n" -"_0808FEF4: .4byte gFormatArgs\n" -"_0808FEF8: .4byte gUnknown_810DEB4\n" -"_0808FEFC: .4byte gFormatBuffer_Items\n" -"_0808FF00: .4byte gUnknown_810DEC8\n" -"_0808FF04: .4byte gUnknown_810DEDC\n" -"_0808FF08: .4byte gUnknown_810DFB4\n" -"_0808FF0C: .4byte gUnknown_810DFC8\n" -"_0808FF10: .4byte gUnknown_810DEF4\n" -"_0808FF14: .4byte gUnknown_810E02C\n" -"_0808FF18: .4byte gUnknown_810DF98\n" -"_0808FF1C: .4byte gEvolutionStrings"); + s32 i, y; + s32 j; + + sub_80073B8(windowId); + strncpy(gFormatBuffer_Monsters[0],mon->nameBuffer,0x14); + y = 0x20; + switch (param_1) { + case 0: + break; + case 2: { + const u8 *str; + s32 iVar8; + LevelData levelData; + + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,gUnknown_8107754,windowId,'\0'); + gFormatArgs[0] = mon->level; + gFormatArgs[1] = mon->exp; + PrintFormattedStringOnWindow(4,y,*gLevel810DD6C_Ptr,windowId,'\0'); + y += 0xA; + PrintFormattedStringOnWindow(4,y,*gExpPts810DD9C_Ptr,windowId,'\0'); + y += 0xA; + if (mon->level < 100) { + GetPokemonLevelData(&levelData,mon->species,mon->level + 1); + gFormatArgs[0] = levelData.expRequired - mon->exp; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DDB8,windowId,'\0'); + } + y += 0xC; + gFormatArgs[0] = mon->HP1; + gFormatArgs[1] = mon->HP2; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DDD0,windowId,'\0'); + y += 0xA; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DDE4,windowId,'\0'); + str = *gUnknown_810DE0C; + gFormatArgs[0] = mon->offense.att[0]; + if (mon->atkBoost != 0) { + gFormatArgs[0] = gFormatArgs[0] + mon->atkBoost; + str = *gUnknown_810DE20; + } + PrintFormattedStringOnWindow(4,y,str,windowId,'\0'); + if (mon->defBoost != 0) { + gFormatArgs[0] = mon->offense.def[0] + mon->defBoost; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE4C,windowId,'\0'); + } + else { + gFormatArgs[0] = mon->offense.def[0]; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE38,windowId,'\0'); + } + y += 0xA; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DDFC,windowId,'\0'); + str = *gUnknown_810DE24; + gFormatArgs[0] = mon->offense.att[1]; + if (mon->spAtkBoost != 0) { + gFormatArgs[0] = gFormatArgs[0] + mon->spAtkBoost; + str = *gUnknown_810DE28; + } + PrintFormattedStringOnWindow(4,y,str,windowId,'\0'); + if (mon->spDefBoost != 0) { + gFormatArgs[0] = mon->offense.def[1] + mon->spDefBoost; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE54,windowId,'\0'); + } + else { + gFormatArgs[0] = mon->offense.def[1]; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE50,windowId,'\0'); + } + y += 0xA; + if (ItemExists(&mon->item)) { + sub_8090E14(gFormatBuffer_Items[0],&mon->item,0); + } + else { + strcpy(gFormatBuffer_Items[0],*gUnknown_810DE58); + } + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE6C,windowId,'\0'); + y += 0xC; + gFormatArgs[0] = mon->IQ; + iVar8 = mon->IQ / 10; + if (iVar8 < 0) { + iVar8 = 0; + } + if (0x62 < iVar8) { + iVar8 = 99; + } + + InlineStrcpy(gFormatBuffer_Monsters[0],gUnknown_8115718[iVar8]); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE80,windowId,'\0'); + y += 0xA; + if (!mon->isTeamLeader) + { + CopyTacticsNameToBuffer(gFormatBuffer_Monsters[0],mon->tactic); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DE98,windowId,'\0'); + } + y += 0xA; + break; + } + case 3: { + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,gUnknown_810775C,windowId,'\0'); + PrintFormattedStringOnWindow(4,y,gUnknown_8107768,windowId,'\0'); + PrintFormattedStringOnWindow(0x38,y,GetFormattedTypeString(mon->types[0]),windowId,'\0'); + if (mon->types[1] != TYPE_NONE) { + PrintFormattedStringOnWindow(0x60,y,GetFormattedTypeString(mon->types[1]),windowId,'\0'); + } + y += 0xC; + PrintFormattedStringOnWindow(4,y,gUnknown_8107770,windowId,'\0'); + y += 0xC; + PrintFormattedStringOnWindow2(4,y,GetAbilityDescription(mon->abilities[0]),windowId,'\0',0xb); + y += 0x21; + if (mon->abilities[1] != ABILITY_UNKNOWN) { + PrintFormattedStringOnWindow2(4,y,GetAbilityDescription(mon->abilities[1]),windowId,'\0',0xb); + } + break; + } + case 1: { + s32 iVar11; + bool8 bVar10; + + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,*gUnknown_810DD58,windowId,'\0'); + iVar11 = mon->unk56 - 1; + y -= 0xC; + bVar10 = FALSE; + + for (i = 0; i < 9; i++) { + param_4->unkC[i] = 0; + } + + for (j = 0; j < 10; j++, iVar11++, y += 0xC) { + if (-1 < iVar11) { + if (0xb < iVar11) + break; + if (mon->unk58[iVar11] != 0) { + bVar10 = TRUE; + InlineStrncpy(gFormatBuffer_Items[1],gStatusNames[mon->unk58[iVar11]],0x50); + PrintFormattedStringOnWindow(0xc,y,gUnknown_8107784,windowId,'\0'); + if (0 < j) { + param_4->unkC[j - 1] = mon->unk58[iVar11]; + } + } + } + } + + if (!bVar10) { + PrintFormattedStringOnWindow(0xc,0x20,*gUnknown_810DF78,windowId,'\0'); + } + break; + } + case 4: { + s32 iVar13; + bool8 bVar11; + u8 iqSkillBuffer[24]; + + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,*gIQSkill810DD68_Ptr,windowId,'\0'); + GetNumAvailableIQSkills(iqSkillBuffer,mon->IQ); + iVar13 = mon->unk40 - 1; + + for (i = 0; i < 9; i++) { + param_4->unk0[i] = 0; + } + y -= 0xC; + bVar11 = FALSE; + + for(j = 0; j < 10; j++, iVar13++, y += 0xC) { + if (-1 < iVar13) { + if (0x17 < iVar13) + break; + if (iqSkillBuffer[iVar13] != 0) { + u8 *iqSkillName; + + bVar11 = TRUE; + iqSkillName = GetIQSkillName(iqSkillBuffer[iVar13]); + strncpy(gFormatBuffer_Items[1],iqSkillName,0x50); + if (IsIQSkillSet(&mon->IQSkills,1 << iqSkillBuffer[iVar13])) { + strcpy(gFormatBuffer_Items[0],gUnknown_8107788); + } + else { + strcpy(gFormatBuffer_Items[0],gUnknown_810778C); + } + if (j >= 1) { + param_4->unk0[j - 1] = iqSkillBuffer[iVar13]; + } + PrintFormattedStringOnWindow(0xc,y,gUnknown_8107790,windowId,'\0'); + } + } + } + + if (!bVar11) { + PrintFormattedStringOnWindow(0xc,0x20,*gUnknown_810DF84,windowId,'\0'); + } + break; + } + case 5: { + PrintFormattedStringOnWindow(param_2 * 8 + 0x10,0,gUnknown_8107798,windowId,'\0'); + CopyMonsterNameToBuffer(gFormatBuffer_Monsters[0],mon->species); + gFormatArgs[0] = mon->species; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DEB4,windowId,'\0'); + y += 0xA; + InlineStrncpy(gFormatBuffer_Items[0],GetFriendAreaName(GetFriendArea(mon->species)),0x50); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DEC8,windowId,'\0'); + y += 0xA; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DEDC,windowId,'\0'); + y += 0xD; + PrintFormattedStringOnWindow(4,y,*gUnknown_810DFB4,windowId,'\0'); + y += 0xA; + PrintYellowDungeonNametoBuffer(gFormatBuffer_Items[0],&mon->dungeonLocation); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DFC8,windowId,'\0'); + y += 0xD; + strncpy(gFormatBuffer_Monsters[0],GetCategoryString(mon->species),0x14); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DEF4,windowId,'\0'); + y += 0xD; + strcpy(gFormatBuffer_Monsters[0],gUnknown_810E02C[GetBodySize(mon->species)]); + PrintFormattedStringOnWindow(4,y,*gUnknown_810DF98,windowId,'\0'); + y += 0xD; + PrintFormattedStringOnWindow(4,y,gEvolutionStrings[mon->unk4C],windowId,'\0'); + break; + } + } + sub_80073E0(windowId); } + void sub_808FF20(struct unkStruct_808FF20 *param_1, struct PokemonStruct1 *pokemon, bool8 param_3) { s32 index; diff --git a/src/pokemon_news1.c b/src/pokemon_news1.c index b88b50255..92770b943 100644 --- a/src/pokemon_news1.c +++ b/src/pokemon_news1.c @@ -23,7 +23,7 @@ static s32 GetNumPKMNNews(void); static void sub_802B880(void); -bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802B640(u32 a0, DungeonPos *a1, u32 a2) { if (HasNoPKMNNews()) return FALSE; @@ -32,18 +32,18 @@ bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) sUnknown_203B2CC = MemoryAlloc(sizeof(struct unkStruct_203B2CC), 8); sUnknown_203B2CC->s38.unk34 = a0; - sUnknown_203B2CC->s38.unk38 = &sUnknown_203B2CC->s38.unk3C[a0]; + sUnknown_203B2CC->s38.unk38 = &sUnknown_203B2CC->s38.windows.id[a0]; - RestoreUnkTextStruct_8006518(sUnknown_203B2CC->s38.unk3C); + RestoreUnkTextStruct_8006518(&sUnknown_203B2CC->s38.windows); - sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; + sUnknown_203B2CC->s38.windows.id[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; if (a1 != NULL) - sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34].unk8 = *a1; + sUnknown_203B2CC->s38.windows.id[sUnknown_203B2CC->s38.unk34].pos = *a1; sub_8012D08(sUnknown_203B2CC->s38.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2CC->s38.windows, TRUE, TRUE); sub_8013818(&sUnknown_203B2CC->s38.input, GetNumPKMNNews(), a2, a0); @@ -92,7 +92,7 @@ u8 GetPokemonNewsIndex(void) void sub_802B7D0(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2CC->s38.unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B2CC->s38.windows, FALSE, FALSE); sUnknown_203B2CC->s38.input.unk22 = GetNumPKMNNews(); sub_8013984(&sUnknown_203B2CC->s38.input); @@ -110,10 +110,10 @@ void sub_802B81C(void) sUnknown_203B2D2 = sUnknown_203B2CC->s38.input.unk1E; - sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBD0; + sUnknown_203B2CC->s38.windows.id[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBD0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2CC->s38.windows, TRUE, TRUE); MemoryFree(sUnknown_203B2CC); sUnknown_203B2CC = NULL; @@ -139,7 +139,7 @@ static void CreatePKMNNewsMenu(void) sub_8012BC4((sUnknown_80DFBE8.f2 * 8) + 4, 0, sUnknown_203B2CC->s38.input.unk1E + 1, 2, 7, sUnknown_203B2CC->s38.unk34); for (index = 0; index < sUnknown_203B2CC->s38.input.unk1A; index++) { - y = sub_8013800(&sUnknown_203B2CC->s38.input, index); + y = GetMenuEntryYCoord(&sUnknown_203B2CC->s38.input, index); new_index = (sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.unk1C) + index; mailIndex = sUnknown_203B2CC->receivedNewsletters[new_index]; sub_803B6B0(10, y, 6, sUnknown_203B2CC->s38.unk34); diff --git a/src/pokemon_news2.c b/src/pokemon_news2.c index c76a77490..c7c1db65a 100644 --- a/src/pokemon_news2.c +++ b/src/pokemon_news2.c @@ -27,12 +27,12 @@ bool8 sub_802B9FC(u8 mailIndex) sUnknown_203B2D4->currMailIndex = mailIndex; sub_801317C(&sUnknown_203B2D4->unk88); sUnknown_203B2D4->unk24 = 0; - sUnknown_203B2D4->unk28[0] = sUnknown_80DFC34; - sUnknown_203B2D4->unk28[1] = sUnknown_80DFC18; - sUnknown_203B2D4->unk28[2] = sUnknown_80DFC18; - sUnknown_203B2D4->unk28[3] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.id[0] = sUnknown_80DFC34; + sUnknown_203B2D4->unk28.id[1] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.id[2] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.id[3] = sUnknown_80DFC18; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D4->unk28, TRUE, TRUE); + ShowWindows(&sUnknown_203B2D4->unk28, TRUE, TRUE); sUnknown_203B2D4->unk8 = 0; sub_802BCC4(); sub_802BC7C(); @@ -62,9 +62,9 @@ u32 sub_802BA8C(void) void sub_802BACC(void) { if (sUnknown_203B2D4 != NULL) { - sUnknown_203B2D4->unk28[sUnknown_203B2D4->unk24] = sUnknown_80DFC18; + sUnknown_203B2D4->unk28.id[sUnknown_203B2D4->unk24] = sUnknown_80DFC18; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D4->unk28, TRUE, TRUE); + ShowWindows(&sUnknown_203B2D4->unk28, TRUE, TRUE); MemoryFree(sUnknown_203B2D4); sUnknown_203B2D4 = NULL; } diff --git a/src/pokemon_news3.c b/src/pokemon_news3.c index c0b4820f5..ee129ad59 100644 --- a/src/pokemon_news3.c +++ b/src/pokemon_news3.c @@ -26,7 +26,7 @@ static s32 CountEmptyMailSlots(void); static void sub_802BF30(void); -bool8 sub_802BD14(s32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802BD14(s32 a0, DungeonPos *a1, u32 a2) { if (HasNoMailinMailbox()) return FALSE; @@ -35,17 +35,17 @@ bool8 sub_802BD14(s32 a0, UnkTextStruct2_sub *a1, u32 a2) sUnknown_203B2D8 = MemoryAlloc(sizeof(struct unkStruct_203B2D8), 8); sUnknown_203B2D8->unk4.s0.unk34 = a0; - sUnknown_203B2D8->unk4.s0.unk38 = &sUnknown_203B2D8->unk4.s0.unk3C[a0]; - RestoreUnkTextStruct_8006518(sUnknown_203B2D8->unk4.s0.unk3C); - sUnknown_203B2D8->unk4.s0.unk3C[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC74; + sUnknown_203B2D8->unk4.s0.unk38 = &sUnknown_203B2D8->unk4.s0.windows.id[a0]; + RestoreUnkTextStruct_8006518(&sUnknown_203B2D8->unk4.s0.windows); + sUnknown_203B2D8->unk4.s0.windows.id[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC74; sUnknown_203B2D8->unk4.s0.unk38->unk14 = &sUnknown_203B2D8->unk4.unk9C; if (a1 != NULL) - sUnknown_203B2D8->unk4.s0.unk3C[sUnknown_203B2D8->unk4.s0.unk34].unk8 = *a1; + sUnknown_203B2D8->unk4.s0.windows.id[sUnknown_203B2D8->unk4.s0.unk34].pos = *a1; sub_8012D34(sUnknown_203B2D8->unk4.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D8->unk4.s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2D8->unk4.s0.windows, TRUE, TRUE); sub_8013848(&sUnknown_203B2D8->unk4.s0.input, CountEmptyMailSlots(), a2, a0); sUnknown_203B2D8->unk4.s0.input.menuIndex = sUnknown_203B2DC; sub_8013984(&sUnknown_203B2D8->unk4.s0.input); @@ -89,7 +89,7 @@ u8 sub_802BE74(void) void sub_802BE94(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D8->unk4.s0.unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B2D8->unk4.s0.windows, FALSE, FALSE); sUnknown_203B2D8->unk4.s0.input.unk22 = CountEmptyMailSlots(); sub_8013984(&sUnknown_203B2D8->unk4.s0.input); @@ -104,9 +104,9 @@ void sub_802BEDC(void) { if (sUnknown_203B2D8 != NULL) { sUnknown_203B2DC = sUnknown_203B2D8->unk4.s0.input.menuIndex; - sUnknown_203B2D8->unk4.s0.unk3C[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC5C; + sUnknown_203B2D8->unk4.s0.windows.id[sUnknown_203B2D8->unk4.s0.unk34] = sUnknown_80DFC5C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2D8->unk4.s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2D8->unk4.s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B2D8); sUnknown_203B2D8 = NULL; } @@ -136,10 +136,10 @@ void CreateMailMenu(void) for (i = 0; i < sUnknown_203B2D8->unk4.s0.input.unk1A; i++) { mail = GetMailboxSlotInfo(sUnknown_203B2D8->unk0[(sUnknown_203B2D8->unk4.s0.input.unk1E * sUnknown_203B2D8->unk4.s0.input.unk1C) + i]); local.unk0[0] = sUnknown_203B2D8->unk4.s0.unk34; - local.y = sub_8013800(&sUnknown_203B2D8->unk4.s0.input, i); + local.y = GetMenuEntryYCoord(&sUnknown_203B2D8->unk4.s0.input, i); if (mail->mailType == MAIL_TYPE_UNK1) { - y = sub_8013800(&sUnknown_203B2D8->unk4.s0.input, i); + y = GetMenuEntryYCoord(&sUnknown_203B2D8->unk4.s0.input, i); sub_803B6B0(10, y, 6, sUnknown_203B2D8->unk4.s0.unk34); PrintPokeNameToBuffer(gFormatBuffer_Monsters[0], GetPlayerPokemonStruct()); sprintfStatic(buffer, GetPokemonMailHeadline(mail->unk4.dungeon.floor), gFormatBuffer_Monsters[0]); diff --git a/src/post_office_guide1.c b/src/post_office_guide1.c index 76f5cd9ea..d86dcbc8d 100644 --- a/src/post_office_guide1.c +++ b/src/post_office_guide1.c @@ -46,7 +46,7 @@ bool8 CreateHelperPelipperMenu(s16 speciesID) species_32 = SpeciesId(speciesID); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sPostOfficeHelper = MemoryAlloc(sizeof(PostOfficeWork), 8); CopyYellowMonsterNametoBuffer(gSpeakerNameBuffer, species_32); diff --git a/src/post_office_guide2.c b/src/post_office_guide2.c index c5e99e742..fdac9a4d0 100644 --- a/src/post_office_guide2.c +++ b/src/post_office_guide2.c @@ -37,7 +37,7 @@ bool8 sub_80319A4(u8 param_1, u8 dungeon, s32 param_3) sUnknown_203B330->dungeonIndex = dungeon; sub_801317C(&sUnknown_203B330->input); sUnknown_203B330->unk10 = param_3; - sUnknown_203B330->unk14 = &sUnknown_203B330->unk18[param_3]; + sUnknown_203B330->unk14 = &sUnknown_203B330->unk18.id[param_3]; sub_8031A2C(); return TRUE; } @@ -65,9 +65,9 @@ static void sub_8031A2C(void) void sub_8031A3C(void) { if (sUnknown_203B330 != NULL) { - sUnknown_203B330->unk18[sUnknown_203B330->unk10] = sUnknown_80E1EFC; + sUnknown_203B330->unk18.id[sUnknown_203B330->unk10] = sUnknown_80E1EFC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B330->unk18, TRUE, TRUE); + ShowWindows(&sUnknown_203B330->unk18, TRUE, TRUE); MemoryFree(sUnknown_203B330); sUnknown_203B330 = NULL; } @@ -77,8 +77,8 @@ static void sub_8031A84(void) { s32 jobs; - RestoreUnkTextStruct_8006518(sUnknown_203B330->unk18); - sUnknown_203B330->unk18[sUnknown_203B330->unk10] = sUnknown_80E1F18; + RestoreUnkTextStruct_8006518(&sUnknown_203B330->unk18); + sUnknown_203B330->unk18.id[sUnknown_203B330->unk10] = sUnknown_80E1F18; if (sUnknown_203B330->unkC == 2) { jobs = CountJobsinDungeon(sUnknown_203B330->dungeonIndex); @@ -89,7 +89,7 @@ static void sub_8031A84(void) } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B330->unk18, TRUE, TRUE); + ShowWindows(&sUnknown_203B330->unk18, TRUE, TRUE); } static void DisplayMissionObjectives(void) diff --git a/src/reg_control.c b/src/reg_control.c index ad0d9d5f5..d490cc591 100644 --- a/src/reg_control.c +++ b/src/reg_control.c @@ -155,60 +155,44 @@ IntrCallback SetInterruptCallback(u32 index, IntrCallback new_callback) } // Unused? -s32 sub_800B720(s16 a0, IntrCallback a1) +s32 sub_800B720(s32 a0, IntrCallback a1) { s32 r2; - unkStruct_202D648 *r3; - s32 r4; + s32 i; + struct unkStruct_202D648 *strPtr; bool8 sp4; - s32 spC; - bool32 sp10; + s32 asS16, asU16; - spC = a0; + asS16 = (s16) a0; sp4 = DisableInterrupts(); - do { - sp10 = FALSE; - r4 = 0; - r3 = gUnknown_202D608; - if (r4 >= gUnknown_203B0AA) - continue; - if (r3->unk0 == gUnknown_203B0A8) { - gUnknown_203B0A8 = (gUnknown_203B0A8 + 1) & 0x7fff; - sp10 = TRUE; - continue; - } - label: - do { - r4++; - r3++; - if (r4 >= gUnknown_203B0AA) - continue; - if (r3->unk0 == gUnknown_203B0A8) { + while (1) { + bool8 sp10 = FALSE; + for (i = 0, strPtr = gUnknown_202D608; i < gUnknown_203B0AA; i++, strPtr++) { + if (strPtr->unk0 == gUnknown_203B0A8) { gUnknown_203B0A8 = (gUnknown_203B0A8 + 1) & 0x7fff; sp10 = TRUE; + break; } - else - goto label; - } while (0); - } while (sp10); - - for (r4 = 0, r3 = gUnknown_202D608; r4 < gUnknown_203B0AA; r4++, r3++) { - if (r3->unk2 > spC) + } + if (!sp10) break; } - for (r2 = gUnknown_203B0AA - 1, r3 = &gUnknown_202D608[r2]; r2 >= r4; r2--, r3--) - r3[1] = r3[0]; + for (i = 0, strPtr = gUnknown_202D608; i < gUnknown_203B0AA; i++, strPtr++) { + if (strPtr->unk2 > asS16) + break; + } + + for (r2 = gUnknown_203B0AA - 1, strPtr = &gUnknown_202D608[r2]; r2 >= i; r2--, strPtr--) { + strPtr[1] = strPtr[0]; + } gUnknown_203B0AA++; - gUnknown_202D608[r4].unk0 = gUnknown_203B0A8; -#ifdef NONMATCHING - gUnknown_202D608[r4].unk2 = spC; -#else - gUnknown_202D608[r4].unk2 = ((u32)spC << 0x10 >> 0x10); // fake and may overflow. Unspecified behavior -#endif - gUnknown_202D608[r4].unk4 = a1; + gUnknown_202D608[i].unk0 = gUnknown_203B0A8; + asU16 = (u16) asS16; + gUnknown_202D608[i].unk2 = asU16; + gUnknown_202D608[i].unk4 = a1; if (sp4) EnableInterrupts(); diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index e574f1ca9..77d0d9ebd 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -26,8 +26,8 @@ EWRAM_INIT u8 gUnknown_203B368 = {1}; EWRAM_INIT u32 gUnknown_203B36C = {65502}; EWRAM_INIT struct RescuePasswordMenu *gRescuePasswordMenu = {NULL}; -const UnkTextStruct2 gUnknown_80E71E4 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E71E4 = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -35,8 +35,8 @@ const UnkTextStruct2 gUnknown_80E71E4 = { NULL }; -const UnkTextStruct2 gUnknown_80E71FC = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E71FC = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -59,8 +59,8 @@ ALIGNED(4) const u8 CheckAgain_80E7234[] = _("{CENTER_ALIGN}Please check it agai ALIGNED(4) const u8 IncorrectPassword_80E7250[] = _("{CENTER_ALIGN}Incorrect password!"); ALIGNED(4) const u8 Error_80E7268[] = _("{CENTER_ALIGN}{COLOR RED}Error!{RESET} "); -const UnkTextStruct2 gUnknown_80E7278 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E7278 = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -83,8 +83,8 @@ ALIGNED(4) const u8 DATA_80E72B0[] = " "; ALIGNED(4) const u8 PasswordAccept_80E72B4[] = _("{CENTER_ALIGN}The password has been accepted."); ALIGNED(4) const u8 Success_80E72D8[] = _("{CENTER_ALIGN}{COLOR CYAN_G}Success!{RESET} "); -const UnkTextStruct2 gUnknown_80E72EC = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E72EC = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -103,8 +103,8 @@ const MenuItem gUnknown_80E7304[4] = { ALIGNED(4) const u8 NotSOSMail_80E7324[] = _("{CENTER_ALIGN}This is not an {COLOR CYAN_G}SOS Mail{RESET}."); -const UnkTextStruct2 gUnknown_80E7344 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E7344 = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -123,8 +123,8 @@ const MenuItem gUnknown_80E735C[4] = { ALIGNED(4) const u8 ReceiveSOSMail_80E737C[] = _("{CENTER_ALIGN}This {COLOR CYAN_G}SOS Mail{RESET} has been received already."); -const UnkTextStruct2 gUnknown_80E73AC = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E73AC = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -143,8 +143,8 @@ const MenuItem gUnknown_80E73C4[4] = { ALIGNED(4) const u8 sUnknown_80E73E4[] = _("{CENTER_ALIGN}This is not an {COLOR CYAN_G}A-OK Mail{RESET}."); -const UnkTextStruct2 gUnknown_80E7408 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E7408 = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -163,8 +163,8 @@ const MenuItem gUnknown_80E7420[4] = { ALIGNED(4) const u8 sUnknown_80E7440[] = _("{CENTER_ALIGN}This {COLOR CYAN_G}A-OK Mail{RESET} cannot be used."); -const UnkTextStruct2 gUnknown_80E7468 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E7468 = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -182,8 +182,8 @@ const MenuItem gUnknown_80E7480[4] = { }; ALIGNED(4) const u8 sUnknown_80E74A0[] = _("{CENTER_ALIGN}This is not a {COLOR CYAN_G}Thank-You Mail{RESET}."); -const UnkTextStruct2 gUnknown_80E74C8 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E74C8 = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -202,8 +202,8 @@ const MenuItem gUnknown_80E74E0[4] = { ALIGNED(4) const u8 sUnknown_80E7500[] = _("{CENTER_ALIGN}This {COLOR CYAN_G}Thank-You Mail{RESET} cannot be used."); -const UnkTextStruct2 gUnknown_80E752C = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E752C = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -221,8 +221,8 @@ const MenuItem gUnknown_80E7544[4] = { }; ALIGNED(4) const u8 sUnknown_80E7564[] = _("{CENTER_ALIGN}This is not a {COLOR CYAN_G}Wonder Mail{RESET}."); -const UnkTextStruct2 gUnknown_80E7588 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E7588 = { + 0, 0x03, 0x03, 0x09, 0x17, 0x05, @@ -265,10 +265,10 @@ void CreateRescuePasswordMenu(u32 currMenu) } for(counter = 0; counter < 4; counter++) - gRescuePasswordMenu->unk148[counter] = gUnknown_80E71E4; + gRescuePasswordMenu->unk148.id[counter] = gUnknown_80E71E4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gRescuePasswordMenu->unk148, TRUE, TRUE); + ShowWindows(&gRescuePasswordMenu->unk148, TRUE, TRUE); if ((gUnknown_203B368 != 0) || (gUnknown_203B36C != currMenu)) { for(counter = 0; counter < RESCUE_PASSWORD_SIZE; counter++) @@ -313,7 +313,7 @@ void CleanRescuePasswordMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (gRescuePasswordMenu != NULL) { sub_80155F0(); sub_8031E10(); @@ -494,7 +494,7 @@ s32 UpdateRescuePasswordMenu(void) case 0xC: sub_8039174(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4,gRescuePasswordBuffer); gRescuePasswordMenu->state = 8; subtract = gRescuePasswordMenu->currMenu - 0x21; @@ -522,7 +522,7 @@ s32 UpdateRescuePasswordMenu(void) case 0xC: sub_8039174(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4,gRescuePasswordBuffer); gRescuePasswordMenu->state = ConvertMenutoRescuePasswordState(gRescuePasswordMenu->currMenu); subtract = gRescuePasswordMenu->currMenu - 0x21; @@ -543,37 +543,37 @@ s32 UpdateRescuePasswordMenu(void) void DisplayRescuePasswordError(u32 passwordError) { - RestoreUnkTextStruct_8006518(gRescuePasswordMenu->unk1A8); + RestoreUnkTextStruct_8006518(&gRescuePasswordMenu->unk1A8); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80155F0(); switch(passwordError) { case PASSWORD_ENTRY_INCORRECT_PASSWORD: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E71FC,gUnknown_80E7214,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NOT_SOS_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E72EC,gUnknown_80E7304,FALSE,13,FALSE); break; case PASSWORD_ENTRY_DUPLICATE_SOS_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7344,gUnknown_80E735C,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NO_SPACE: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7588,gUnknown_80E75A0,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NOT_AOK_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E73AC,gUnknown_80E73C4,FALSE,13,FALSE); break; case PASSWORD_ENTRY_DUPLICATE_AOK_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7408,gUnknown_80E7420,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7468,gUnknown_80E7480,FALSE,13,FALSE); break; case PASSWORD_ENTRY_DUPLICATE_THANK_YOU_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E74C8,gUnknown_80E74E0,FALSE,13,FALSE); break; case PASSWORD_ENTRY_NOT_WONDER_MAIL: - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E752C,gUnknown_80E7544,FALSE,13,FALSE); break; default: break; @@ -583,11 +583,11 @@ void DisplayRescuePasswordError(u32 passwordError) void DisplayPasswordAcceptScreen(void) { - RestoreUnkTextStruct_8006518(gRescuePasswordMenu->unk1A8); + RestoreUnkTextStruct_8006518(&gRescuePasswordMenu->unk1A8); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80155F0(); - SetMenuItems(gRescuePasswordMenu->unk8,gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,FALSE,13,FALSE); + SetMenuItems(gRescuePasswordMenu->unk8,&gRescuePasswordMenu->unk148,0,&gUnknown_80E7278,gUnknown_80E7290,FALSE,13,FALSE); sub_8035CF4(gRescuePasswordMenu->unk8,0,TRUE); } diff --git a/src/save_menu.c b/src/save_menu.c index 7933ea70b..3ff3fb918 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -12,9 +12,9 @@ static EWRAM_INIT SaveMenuWork *sUnknown_203B364 = {NULL}; -const UnkTextStruct2 gUnknown_80E6F20 = +const Window gUnknown_80E6F20 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -22,9 +22,9 @@ const UnkTextStruct2 gUnknown_80E6F20 = NULL }; -const UnkTextStruct2 gUnknown_80E6F38 = +const Window gUnknown_80E6F38 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x05, 0x08, 0x15, 0x05, @@ -130,19 +130,19 @@ void CreateSaveMenu(s32 currMenu) MemoryFill8(sUnknown_203B364,0,sizeof(SaveMenuWork)); } for(index = 0; index < 4; index++){ - sUnknown_203B364->unk148[index] = gUnknown_80E6F20; + sUnknown_203B364->unk148.id[index] = gUnknown_80E6F20; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B364->unk148, TRUE, TRUE); + ShowWindows(&sUnknown_203B364->unk148, TRUE, TRUE); if (currMenu == MENU_DELETE_SAVE) { // Beware, Deleting your Adventure - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gDeletingYourAdventureMenuItems, FALSE,6,FALSE); } else { // Saving your Adventure - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38,gSavingAdventureMenuItems, FALSE,6,FALSE); } sub_8035CF4(sUnknown_203B364->unk8,0,TRUE); @@ -154,7 +154,7 @@ void CreateSaveMenu(s32 currMenu) void CleanSaveMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (sUnknown_203B364 != NULL) { MemoryFree(sUnknown_203B364); sUnknown_203B364 = NULL; @@ -187,13 +187,13 @@ s32 UpdateSaveMenu(void) switch(saveStatus) { case SAVE_COMPLETED: - sub_8035CC0(sUnknown_203B364->unk148,0); + sub_8035CC0(&sUnknown_203B364->unk148,0); if (sUnknown_203B364->currMenu == MENU_DELETE_SAVE) { - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38, gDeletedSaveMenuItems,FALSE,6,FALSE); } else { - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureSavedMenuItems,FALSE,6,FALSE); } if (sUnknown_203B364->currMenu == 0x2d) { @@ -208,13 +208,13 @@ s32 UpdateSaveMenu(void) sUnknown_203B364->unk4 = 5; break; default: - sub_8035CC0(sUnknown_203B364->unk148,0); + sub_8035CC0(&sUnknown_203B364->unk148,0); if (sUnknown_203B364->currMenu == MENU_DELETE_SAVE) { - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureCouldNotBeDeletedMenuItems,FALSE,6,FALSE); } else { - SetMenuItems(sUnknown_203B364->unk8,sUnknown_203B364->unk148,0,&gUnknown_80E6F38, + SetMenuItems(sUnknown_203B364->unk8,&sUnknown_203B364->unk148,0,&gUnknown_80E6F38, gAdventureCouldNotBeSavedMenuItems,FALSE,6,FALSE); } sub_8035CF4(sUnknown_203B364->unk8,0,TRUE); diff --git a/src/sound_names.c b/src/sound_names.c index 75cf95255..8fbca344e 100644 --- a/src/sound_names.c +++ b/src/sound_names.c @@ -16,8 +16,6 @@ struct SoundNamesStruct }; // Forward declarations -static const char sText_Table[]; -static const char sText_Header[]; static const char sText_PKDSoundData[]; const struct SoundNamesStruct gSoundNamesStruct; @@ -33,14 +31,12 @@ ALIGNED(4) UNUSED static const char sPksDir1[] = "pksdir0"; const struct SoundNamesStruct gSoundNamesStruct = { - .headerText = sText_Header, + .headerText = "HEADER", .soundDataBankText = sText_PKDSoundData, - .tableText = sText_Table, + .tableText = "TABLE", .sfxNames = gSfxNames, }; -ALIGNED(4) static const char sText_Table[] = "TABLE"; -ALIGNED(4) static const char sText_Header[] = "HEADER"; ALIGNED(4) UNUSED static const char sPksDir2[] = "pksdir0"; ALIGNED(4) static const char sText_PKDSoundData[] = "PKD Sound Data Bank"; diff --git a/src/sprite.c b/src/sprite.c index 5b6f433d7..60e5b987d 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -519,50 +519,71 @@ static inline s16 check_flag_for_80054BC(u16 flags) { return flags >> 15; } - -void RunAxAnimationFrame(struct axObject *a0) +void RunAxAnimationFrame(struct axdata *a0) { ax_anim *aData; - if (!check_flag_for_80054BC(a0->axdata.flags)) + if (!check_flag_for_80054BC(a0->flags)) return; - if (a0->axdata.sub1.poseId >= 0) { - if (a0->axdata.flags & 0x4000) + if (a0->sub1.poseId >= 0) { + if (a0->flags & 0x4000) return; - if (a0->axdata.totalFrames < 30000) - a0->axdata.totalFrames++; + if (a0->totalFrames < 30000) + a0->totalFrames++; - if (a0->axdata.animWaitFrames != 0) { - a0->axdata.animWaitFrames--; + if (a0->animWaitFrames != 0) { + a0->animWaitFrames--; return; } - if (a0->axdata.animFrames != 0 && --a0->axdata.animFrames > 0) + if (a0->animFrames != 0 && --a0->animFrames > 0) return; } - if (a0->axdata.activeAnimData->frames == 0) { - if (!(a0->axdata.flags & 0x1000)) { - a0->axdata.flags |= 0x2000; + if (a0->activeAnimData->frames == 0) { + if (!(a0->flags & 0x1000)) { + a0->flags |= 0x2000; return; } - a0->axdata.activeAnimData = a0->axdata.nextAnimData; - a0->axdata.animWaitFrames = Rand32Bit() & 1; + a0->activeAnimData = a0->nextAnimData; + a0->animWaitFrames = Rand32Bit() & 1; } - a0->axdata.flags |= 0x800; + a0->flags |= 0x800; - aData = a0->axdata.activeAnimData; - a0->axdata.animFrames = aData->frames; - a0->axdata.sub1.poseId = aData->poseId; - a0->axdata.sub1.offset.x = aData->offset.x; - a0->axdata.sub1.offset.y = aData->offset.y; - a0->axdata.sub1.shadow.x = aData->shadow.x; - a0->axdata.sub1.shadow.y = aData->shadow.y; - a0->axdata.sub1.unkC = aData->unkFlags; - a0->axdata.sub1.unk10 |= aData->unkFlags; - a0->axdata.activeAnimData = aData + 1; + aData = a0->activeAnimData; + a0->animFrames = aData->frames; + a0->sub1.poseId = aData->poseId; + a0->sub1.offset.x = aData->offset.x; + a0->sub1.offset.y = aData->offset.y; + a0->sub1.shadow.x = aData->shadow.x; + a0->sub1.shadow.y = aData->shadow.y; + a0->sub1.unkC = aData->unkFlags; + a0->sub1.unk10 |= aData->unkFlags; + a0->activeAnimData = aData + 1; +} + +void DoAxFrame_800558C(struct axdata *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, unkStruct_2039DB0 *spriteMasks) +{ + if (!(a0->flags >> 15)) + return; + + if (a0->sub1.poseId < 0) + RunAxAnimationFrame(a0); + + if (!(a0->flags >> 15)) + return; + + a0->sub1.pos.x = a0->sub1.offset.x + spriteX; + a0->sub1.pos.y = a0->sub1.offset.y + spriteY; + a0->sub1.paletteNum = paletteNum; + a0->sub1.unk16 = a3; + sub_800533C(a0->poseData, a0->spriteData, &a0->sub1, spriteMasks, !!(a0->sub1.lastPoseId ^ a0->sub1.poseId)); + a0->sub1.lastPoseId = a0->sub1.poseId; + + if (a0->flags & 0x800) + a0->flags &= 0xF7FF; } diff --git a/src/string_format.c b/src/string_format.c index 66c7dde8d..a4e4dde29 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -59,45 +59,17 @@ u32 sub_8014140(void) } // This kinda looks like the 'true' beginning of the file -struct SubStruct_203B198 -{ - u8 unk0; - u32 unk4; // x34 - u16 unk8; // x38 - u16 unkA; // x3A - u16 unkC; // x3C - u16 unkE; // x3E - u16 unk10; // x40 - u8 fill12[6]; // x42 -}; - -struct UnkStruct_203B198 -{ - UnkTextStruct2 unk0; - u8 unk18; - u32 unk1C; - DungeonPos unk20; - u16 unk24; - u16 unk26; - u16 unk28; - u8 fill2A[4]; - struct SubStruct_203B198 unk30; - struct SubStruct_203B198 unk48; -}; - static const u32 gUnknown_80D48A0[] = {0x7, 0x2, 0x2}; -static const struct SubStruct_203B198 gUnknown_80D48AC = { - 0x00, - 0x03, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - +static const struct Window gUnknown_80D48AC = { + 0x00, + 0x03, + 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, 0x00 }; -static const UnkTextStruct2 gUnknown_80D48C4 = { - 0x00, 0x00, 0x00, 0x00, +static const Window gUnknown_80D48C4 = { + 0x00, 0x00, 0x02, 0x0F, 0x1A, 0x05, @@ -105,8 +77,8 @@ static const UnkTextStruct2 gUnknown_80D48C4 = { NULL }; -static const UnkTextStruct2 gUnknown_80D48DC = { - 0x00, 0x00, 0x00, 0x00, +static const Window gUnknown_80D48DC = { + 0x00, 0x02, 0x02, 0x08, 0x1A, 0x05, @@ -176,7 +148,7 @@ static EWRAM_DATA s32 gUnknown_202EC1C = 0; // Only read, but never written to. Possibly used in Blue? struct NeverWrittenToStruct202EC20 { - struct SubStruct_203B198 unk0; + struct Window unk0; const u8 *unk18; }; static EWRAM_DATA struct NeverWrittenToStruct202EC20 *sNeverWrittenToUnknownStructPtr = NULL; @@ -184,20 +156,24 @@ static UNUSED EWRAM_DATA u8 sUnusedEwram1[4] = {0}; static EWRAM_DATA MenuInputStructSub gUnknown_202EC28 = {0}; -static EWRAM_INIT struct UnkStruct_203B198 sUnknown_203B198 = { - .unk0 = { - .unk8 = {2, 15}, - .unkC = 26, - .unkE = 5, - .unk10 = 7, - }, - .unk18 = 0x40, - .unk1C = 7, - .unk30 = { - .unk4 = 3, - }, - .unk48 = { - .unk4 = 3, +static EWRAM_INIT Windows sUnknown_203B198 = { + .id = { + [0] = { + .pos = {2, 15}, + .width = 26, + .height = 5, + .unk10 = 7, + }, + [1] = { + .unk0 = 0x40, + .type = WINDOW_TYPE_7, + }, + [2] = { + .type = WINDOW_TYPE_NORMAL, + }, + [3] = { + .type = WINDOW_TYPE_NORMAL, + } } }; @@ -250,41 +226,41 @@ void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const Me gUnknown_202EC1C = r9; sub_801317C(&gUnknown_202EC28); if (flags & 0x10) { - sUnknown_203B198.unk0 = gUnknown_80D48DC; + sUnknown_203B198.id[0] = gUnknown_80D48DC; } else { - sUnknown_203B198.unk0 = gUnknown_80D48C4; + sUnknown_203B198.id[0] = gUnknown_80D48C4; } - sUnknown_203B198.unk24 = 0; - sUnknown_203B198.unk26 = 0; - sUnknown_203B198.unk28 = 0; - sUnknown_203B198.unk18 = 0x40; + sUnknown_203B198.id[1].width = 0; + sUnknown_203B198.id[1].height = 0; + sUnknown_203B198.id[1].unk10 = 0; + sUnknown_203B198.id[1].unk0 = 0x40; if (monPortraitPtr != NULL && monPortraitPtr->faceData != NULL && monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].gfx != 0) { s32 i; - sUnknown_203B198.unk20.x = monPortraitPtr->pos.x; - sUnknown_203B198.unk20.y = monPortraitPtr->pos.y; - sUnknown_203B198.unk24 = 5; - sUnknown_203B198.unk26 = 5; - sUnknown_203B198.unk28 = 5; + sUnknown_203B198.id[1].pos.x = monPortraitPtr->pos.x; + sUnknown_203B198.id[1].pos.y = monPortraitPtr->pos.y; + sUnknown_203B198.id[1].width = 5; + sUnknown_203B198.id[1].height = 5; + sUnknown_203B198.id[1].unk10 = 5; for (i = 0; i < 16; i++) { SetBGPaletteBufferColorArray(224 + i, &monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].pal[i]); } portraitOn = TRUE; if (monPortraitPtr->unkE) { - sUnknown_203B198.unk1C = 7; + sUnknown_203B198.id[1].type = WINDOW_TYPE_7; } else { - sUnknown_203B198.unk1C = 5; + sUnknown_203B198.id[1].type = WINDOW_TYPE_FILL_TRANSPARENT; } } - sUnknown_203B198.unk30 = gUnknown_80D48AC; - sUnknown_203B198.unk48 = gUnknown_80D48AC; + sUnknown_203B198.id[2] = gUnknown_80D48AC; + sUnknown_203B198.id[3] = gUnknown_80D48AC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B198.unk0, TRUE, TRUE); + ShowWindows(&sUnknown_203B198, TRUE, TRUE); gUnknown_202E748.unk0 = 4; gUnknown_202E748.unk2 = 4; gUnknown_202E748.unk8 = 0x70; @@ -586,7 +562,7 @@ void DrawDialogueBoxString(void) case 11: { if (sUnknownTextFlags & 0x200) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_202E744 = 0; } else { @@ -644,21 +620,21 @@ static void sub_8014A88(void) if (r5 % 8) r2++; - sUnknown_203B198.unk30.unk4 = gUnknown_202EC10; + sUnknown_203B198.id[2].type = gUnknown_202EC10; r1 = r7 / 8; r1 += 2; - sUnknown_203B198.unk30.unkC = r1; - sUnknown_203B198.unk30.unk10 = r2; - sUnknown_203B198.unk30.unkE = r2; - sUnknown_203B198.unk30.unk8 = 28 - r1; - sUnknown_203B198.unk30.unkA = 14 - r2; - sUnknown_203B198.unk0.unk0 = 0x80; - sUnknown_203B198.unk18 = 0xC0; + sUnknown_203B198.id[2].width = r1; + sUnknown_203B198.id[2].unk10 = r2; + sUnknown_203B198.id[2].height = r2; + sUnknown_203B198.id[2].pos.x = 28 - r1; + sUnknown_203B198.id[2].pos.y = 14 - r2; + sUnknown_203B198.id[0].unk0 = 0x80; + sUnknown_203B198.id[1].unk0 = 0xC0; if (sNeverWrittenToUnknownStructPtr != NULL) { - sUnknown_203B198.unk48 = sNeverWrittenToUnknownStructPtr->unk0; + sUnknown_203B198.id[3] = sNeverWrittenToUnknownStructPtr->unk0; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(&sUnknown_203B198.unk0, TRUE, FALSE); + ShowWindows(&sUnknown_203B198, TRUE, FALSE); sub_8012D60(&gUnknown_202EBC0, sDialogueMenuItems, gUnknown_80D48A0, gUnknown_202EC18, gUnknown_202EC1C, 2); if (sNeverWrittenToUnknownStructPtr != NULL) { sub_80073B8(3); diff --git a/src/text.c b/src/text.c index e1eae1003..3cd7b7bae 100644 --- a/src/text.c +++ b/src/text.c @@ -15,8 +15,6 @@ struct CharMapStruct struct unkChar *unk4; }; -// data.s - // data2.s extern const char gUnknown_80B88B0[]; // "font" extern const char gUnknown_80B88B8[]; // "fontsp" @@ -25,9 +23,6 @@ extern const char gUnknown_80B88C0[]; // "fontsppa" // system_sbin.s extern const struct FileArchive gSystemFileArchive; -// Todo fix gUnknown_3000E94 being accessed as s16/u8 -extern s16 gUnknown_3000E94[]; - EWRAM_DATA UnkTextStruct1 gUnknown_2027370[4] = {0}; EWRAM_DATA static struct CharMapStruct *sCharmaps[2] = {NULL}; EWRAM_DATA static s16 sCharacterSpacing = 0; @@ -38,7 +33,7 @@ EWRAM_DATA static s32 sCurrentCharmap = 0; EWRAM_DATA static vu32 sUnknown_20274B0 = 0; EWRAM_DATA static u32 sUnknown_20274B4[0xEC0] = {0}; EWRAM_DATA static OpenedFile *sCharmapFiles[3] = {NULL}; -EWRAM_DATA static UnkTextStruct2 sUnknown_202AFC0[4] = {0}; +EWRAM_DATA static Windows sUnknown_202AFC0 = {0}; EWRAM_DATA static s32 sUnknown_202B020 = 0; EWRAM_DATA static s32 sUnknown_202B024 = 0; EWRAM_DATA static s32 sCharHeight[2] = {0}; @@ -46,6 +41,8 @@ EWRAM_DATA static u32 sTextShadowMask = 0; // Some text color info is stored; re EWRAM_DATA static u8 sDrawTextShadow = 0; EWRAM_DATA ALIGNED(4) u16 gUnknown_202B038[4][32][32] = {0}; +IWRAM_DATA static s16 gUnknown_3000E94[161] = {0}; + // These text-related functions were deemed important as they're copied and run from IWRAM for improved performance. static void sub_8272774(UnkTextStruct1 *txtStructs, s32 id); static void sub_8272884(UnkTextStruct1 *txtStructs, s32 id); @@ -64,14 +61,14 @@ EWRAM_INIT void (*gIwramTextFunc4)(s32 a0) = sub_8272A78; // This variable is only used in InitGraphics function, which may or may not belong to text.c EWRAM_INIT u8 gUnknown_203B090 = 0; -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct2 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3); -static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, UnkTextStruct2_sub *a8, u8 a9); +static void SaveUnkTextStructAndXXX_8006438(const Windows *a0, bool8 a1, bool8 a2, DungeonPos *a3); +static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const Window *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9); static void sub_800677C(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3); static void sub_80069CC(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); static void sub_8006AC4(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); static void sub_8006B70(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); static void sub_8006C44(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3); -static void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const UnkTextStruct2_sub2 *a3, u16 *a4); +static void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4); static u32 xxx_draw_char(struct UnkTextStruct1 *a0, s32 x, s32 y, u32 a3, u32 color, u32 a5); static void nullsub_129(u32 a0, s32 x, s32 y, s32 a3, u32 color); static void sub_8007958(UnkTextStruct1 *a0, u32 a1, s32 x, s32 y, s32 a4, u32 color); @@ -86,7 +83,7 @@ static void sub_80084A4(UnkTextStruct1 *a0, u16 a1[32][32], u32 a2, s32 a3, s32 static void sub_8008818(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); static bool8 xxx_update_bg_vram(UnkTextStruct1 *a0); static void sub_800898C(void); -static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str); +static void sub_80089AC(const Window *r4, DungeonPos *r5_Str); static void PrepareTextbox_8008C6C(UnkTextStruct1 *strArr, u32 strId); static void xxx_draw_string(UnkTextStruct1 *strArr, s32 x, s32 y, const u8 *str, u32 windowId, u32 terminatingChr, s32 characterSpacing, s32 lineSpacing); static const u8 *HandleTextFormat(UnkTextStruct1 *strArr, const u8 *str, struct UnkDrawStringStruct *sp); @@ -113,12 +110,14 @@ static const u32 gUnknown_80B853C[16] = 0xEEEEEEEE, }; -static const UnkTextStruct2 gUnknown_80B857C[4] = +static const Windows sDummyWindows = { - [0] = {.unk4 = 3}, - [1] = {.unk4 = 3}, - [2] = {.unk4 = 3}, - [3] = {.unk4 = 3}, + .id = { + [0] = {.type = WINDOW_TYPE_NORMAL}, + [1] = {.type = WINDOW_TYPE_NORMAL}, + [2] = {.type = WINDOW_TYPE_NORMAL}, + [3] = {.type = WINDOW_TYPE_NORMAL}, + } }; static const struct unkShiftData gCharMasksOffsets[8] = @@ -273,14 +272,14 @@ void SetCharacterMask(int a0) sTextShadowMask = retval; } -void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct2 *a0, bool8 a1, bool8 a2) +void ShowWindows(const Windows *windows, bool8 a1, bool8 a2) { - UnkTextStruct2_sub r3 = {0, 0}; - SaveUnkTextStructAndXXX_8006438(a0, a1, a2, &r3); + DungeonPos positionModifier = {0, 0}; + SaveUnkTextStructAndXXX_8006438(windows, a1, a2, &positionModifier); } // https://decomp.me/scratch/xF5Y1 -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct2 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3) +static void SaveUnkTextStructAndXXX_8006438(const Windows *a0, bool8 a1, bool8 a2, DungeonPos *a3) { s32 i; u32 r9; @@ -288,19 +287,19 @@ static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct2 *a0, bool8 a1, r9 = 2; if (a0 == NULL) - a0 = gUnknown_80B857C; + a0 = &sDummyWindows; if (a2) sub_8009388(); sub_800898C(); for (i = 0; i < 4; i++) { - sUnknown_202AFC0[i] = a0[i]; + sUnknown_202AFC0.id[i] = a0->id[i]; - if (a0[i].unkC) { - sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gUnknown_202B038[0][0][0], gUnknown_80B8804[i], a0 + i, a1, r9, a3, 0); - sub_80089AC(a0 + i, a3); - r9 += a0[i].unkC * a0[i].unk10; + if (a0->id[i].width) { + sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gUnknown_202B038[0][0][0], gUnknown_80B8804[i], &a0->id[i], a1, r9, a3, 0); + sub_80089AC(&a0->id[i], a3); + r9 += a0->id[i].width * a0->id[i].unk10; } } @@ -317,11 +316,11 @@ UNUSED static void nullsub_152(void) { } -void RestoreUnkTextStruct_8006518(UnkTextStruct2 *unkData) +void RestoreUnkTextStruct_8006518(Windows *unkData) { - s32 iVar2; - for (iVar2 = 0; iVar2 < 4; iVar2++) - unkData[iVar2] = sUnknown_202AFC0[iVar2]; + s32 i; + for (i = 0; i < 4; i++) + unkData->id[i] = sUnknown_202AFC0.id[i]; } UNUSED static void nullsub_153(void) @@ -334,7 +333,7 @@ u32 sub_8006544(u32 index) } // a1 is a VRAM pointer -static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, UnkTextStruct2_sub *a8, u8 a9) +static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const Window *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9) { UnkTextStruct1 *t1; s32 iVar3; @@ -348,14 +347,14 @@ static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, c s32 j; t1 = &a0[a4]; - iVar3 = a5->unk8.unk0.arr[0] + a8->unk0.arr[0]; - iVar5 = a5->unk8.unk0.arr[1] + a8->unk0.arr[1]; + iVar3 = a5->pos.x + a8->x; + iVar5 = a5->pos.y + a8->y; t1->unk0 = iVar3; t1->unk2 = iVar5; - t1->unk4 = a5->unkC; + t1->unk4 = a5->width; t1->unk8 = a5->unk10; - t1->unk6 = a5->unkE; - t1->unkC = a5->unk4; + t1->unk6 = a5->height; + t1->unkC = a5->type; t1->unk10 = a7; if (t1->unkC == 6) @@ -684,7 +683,7 @@ static void sub_8006C44(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3) // Not even close but I don't feel like continuing atm https://decomp.me/scratch/F58jg /* -void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const UnkTextStruct2_sub2 *a3, u16 *a4) +void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4) { s32 bVar1; s32 iVar2; @@ -868,7 +867,7 @@ void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const UnkTextStruct2_sub2 * } */ NAKED -static void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const UnkTextStruct2_sub2 *a3, u16 *a4) +static void sub_8006E94(UnkTextStruct1 *a0, s32 a1, u32 a2, const WindowHeader *a3, u16 *a4) { asm_unified( "\tpush {r4-r7,lr}\n" @@ -2859,25 +2858,25 @@ static void sub_800898C(void) { s32 i; - for (i = 0; i < 161; i++) { + for (i = 0; i < ARRAY_COUNT_INT(gUnknown_3000E94); i++) { gUnknown_3000E94[i] = 0xF0F0; } } -static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) +static void sub_80089AC(const Window *r4, DungeonPos *r5_Str) { u8 *r6; if (r4->unk0 & 0x40) return; - r6 = (void*) &gUnknown_3000E94; - if (r4->unk4 == 1) { - s32 r12 = (r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8; - s32 r5 = (r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8; - s32 r7 = (r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8; - s32 r2 = (r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8; - if (r4->unkE != 0) { + r6 = (u8*) gUnknown_3000E94; + if (r4->type == WINDOW_TYPE_WITHOUT_BORDER) { + s32 r12 = (r4->pos.x + r5_Str->x) * 8; + s32 r5 = (r4->pos.y + r5_Str->y) * 8; + s32 r7 = (r4->pos.x + r5_Str->x + r4->width) * 8; + s32 r2 = (r4->pos.y + r5_Str->y + r4->height) * 8; + if (r4->height != 0) { if (r5 < 0) r5 = 0; if (r2 < 0) @@ -2905,14 +2904,14 @@ static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) } } } - else if (r4->unk4 == 6) { + else if (r4->type == WINDOW_TYPE_WITH_HEADER) { s32 i; - s32 r9 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) - 5; - s32 r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8) - 4; - s32 var_24 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8) + 5; - s32 r8 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) + 5; - s32 r12 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) + 3; - const UnkTextStruct2_sub2 *r2 = r4->unk14; + s32 r9 = ((r4->pos.x + r5_Str->x) * 8) - 5; + s32 r5 = ((r4->pos.y + r5_Str->y) * 8) - 4; + s32 var_24 = ((r4->pos.x + r5_Str->x + r4->width) * 8) + 5; + s32 r8 = ((r4->pos.y + r5_Str->y + r4->height) * 8) + 5; + s32 r12 = ((r4->pos.x + r5_Str->x) * 8) + 3; + const WindowHeader *r2 = r4->unk14; s32 tmp = r2->f2 - 1; s32 r10 = (((tmp + r2->f0 + 2) * 8) + r12) - 4; s32 r4 = r9 + ((r2->f1 + 1) * 8); @@ -2981,14 +2980,14 @@ static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) } } else { - s32 r8 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) - 5; - s32 r3 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8) - 5; - s32 r12 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8) + 5; - s32 r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) + 5; - if (r4->unkE != 0) { - if (r4->unk4 == 0) { + s32 r8 = ((r4->pos.x + r5_Str->x) * 8) - 5; + s32 r3 = ((r4->pos.y + r5_Str->y) * 8) - 5; + s32 r12 = ((r4->pos.x + r5_Str->x + r4->width) * 8) + 5; + s32 r5 = ((r4->pos.y + r5_Str->y + r4->height) * 8) + 5; + if (r4->height != 0) { + if (r4->type == 0) { r3 += 8; - r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) - 3; + r5 = ((r4->pos.y + r5_Str->y + r4->height) * 8) - 3; } if (r3 < 0) r3 = 0; diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 7ee792b70..6b784017e 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -75,9 +75,9 @@ const Item gUnknown_80DED44 = ITEM_FLAG_EXISTS, 0, ITEM_NOTHING }; -const UnkTextStruct2 gUnknown_80DED48 = +const Window gUnknown_80DED48 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x15, 0x04, 0x06, 0x05, @@ -85,9 +85,9 @@ const UnkTextStruct2 gUnknown_80DED48 = NULL }; -const UnkTextStruct2 gUnknown_80DED60 = +const Window gUnknown_80DED60 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x16, 0x07, 0x06, 0x05, @@ -95,9 +95,6 @@ const UnkTextStruct2 gUnknown_80DED60 = NULL }; -extern const u8 SendItem_Text[]; -extern const u8 DontSendItem_Text[]; - const MenuItem gUnknown_80DED78[] = { {"Confirm", CONFIRM_ACTION}, @@ -106,9 +103,9 @@ const MenuItem gUnknown_80DED78[] = }; // Unused -const UnkTextStruct2 gUnknown_80DEDA0 = +const Window gUnknown_80DEDA0 = { - 0x00, 0x00, 0x00, 0x00, + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -149,15 +146,12 @@ const MenuItem gUnknown_80DEE60[] = const MenuItem gUnknown_80DEE7C[] = { - {SendItem_Text, SEND_ITEM_ACTION}, - {DontSendItem_Text, NO_SEND_ITEM_ACTION}, + {"Send Item", SEND_ITEM_ACTION}, + {_("Don't Send Item"), NO_SEND_ITEM_ACTION}, {"Cancel", CANCEL_ACTION}, {}, }; -ALIGNED(4) static const u8 DontSendItem_Text[] = _("Don't Send Item"); -ALIGNED(4) static const u8 SendItem_Text[] = "Send Item"; - const MenuItem gUnknown_80DEEBC[] = { {"Send w/o Item", NO_SEND_ITEM_ACTION}, @@ -237,7 +231,7 @@ u32 CreateThankYouMailPelipper(void) unkStruct_203B480 *mail; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B2C4 = MemoryAlloc(sizeof(WonderMailStruct_203B2C4), 8); MemoryFill8(sUnknown_203B2C4, 0, sizeof(WonderMailStruct_203B2C4)); @@ -525,7 +519,7 @@ void sub_802A050(void) case 2: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C4->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); SetThankYouMailMenuState(0x1B); break; case 1: @@ -571,9 +565,9 @@ void sub_802A0C8(void) case 4: sUnknown_203B2C4->fallbackState = 0x10; sUnknown_203B2C4->mailIndex = sub_80307EC(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C4->mailIndex,0); SetThankYouMailMenuState(0x12); break; @@ -607,15 +601,15 @@ void sub_802A174(void) break; case INFO_ACTION: sUnknown_203B2C4->fallbackState = 0x2b; - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C4->mailIndex,0); SetThankYouMailMenuState(0x12); break; case CANCEL_ACTION: case 0xD: - sub_8035CC0(sUnknown_203B2C4->unk35C,2); + sub_8035CC0(&sUnknown_203B2C4->unk35C,2); sub_8030810(1); SetThankYouMailMenuState(0x10); default: @@ -631,7 +625,7 @@ void sub_802A230(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C4->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); sub_803092C(); if (sUnknown_203B2C4->fallbackState == 0x2b) { sub_8035CF4(sUnknown_203B2C4->unk21C, 3, TRUE); @@ -666,9 +660,9 @@ void sub_802A28C(void) case 4: sUnknown_203B2C4->fallbackState = 0x13; sUnknown_203B2C4->unk41C.id = sub_801CB24(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&sUnknown_203B2C4->unk41C); SetThankYouMailMenuState(SHOW_ITEM_TO_SEND_INFO); break; @@ -683,7 +677,7 @@ void sub_802A33C(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C4->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); sub_801CB5C(TRUE); if (sUnknown_203B2C4->fallbackState == 0x2b) { sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE); @@ -717,15 +711,15 @@ void sub_802A39C(void) break; case INFO_ACTION: sUnknown_203B2C4->fallbackState = 0x2b; - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&sUnknown_203B2C4->unk41C); SetThankYouMailMenuState(SHOW_ITEM_TO_SEND_INFO); break; case CANCEL_ACTION: case 0xD: - sub_8035CC0(sUnknown_203B2C4->unk35C, 3); + sub_8035CC0(&sUnknown_203B2C4->unk35C, 3); sub_801CCD8(); SetThankYouMailMenuState(0x13); default: @@ -832,7 +826,7 @@ void HandleThankYouMailPasswordMenu(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C4->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C4->unk3BC, TRUE, TRUE); SetThankYouMailMenuState(ANYTHING_ELSE_THANK_YOU_MAIN_MENU); break; } @@ -1269,12 +1263,12 @@ void UpdateThankYouMailText(void) if (sub_8030894() != 0) break; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_THANK_YOU,0,0,6); break; case 0x11: - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk35C); - SetMenuItems(sUnknown_203B2C4->unk21C,sUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,TRUE,0,FALSE); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk35C); + SetMenuItems(sUnknown_203B2C4->unk21C,&sUnknown_203B2C4->unk35C,3,&gUnknown_80DED60,gUnknown_80DED78,TRUE,0,FALSE); sub_803092C(); sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE); break; @@ -1282,15 +1276,15 @@ void UpdateThankYouMailText(void) if (sub_801D008() != NULL) break; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_x = {3, 2}; + DungeonPos local_x = {3, 2}; sub_801C8C4(0, 1, &local_x, 9); } break; case 0x14: - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk35C); - SetMenuItems(sUnknown_203B2C4->unk21C,sUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,TRUE,0,FALSE); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk35C); + SetMenuItems(sUnknown_203B2C4->unk21C,&sUnknown_203B2C4->unk35C,3,&gUnknown_80DED48,gUnknown_80DED78,TRUE,0,FALSE); sub_801CCD8(); sub_8035CF4(sUnknown_203B2C4->unk21C,3,TRUE); break; @@ -1336,15 +1330,15 @@ void UpdateThankYouMailText(void) CreateDialogueBoxAndPortrait(gUnknown_80DF380,0,&sUnknown_203B2C4->monPortrait,0x10d); break; case PROCESS_THANK_YOU_PASSWORD: - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4,sUnknown_203B2C4->passwordBuffer); break; case 0x1a: - RestoreUnkTextStruct_8006518(sUnknown_203B2C4->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8031D70(sUnknown_203B2C4->mailIndex,0); break; case 0x1b: diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index fb0edf7d8..47d528bbc 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -47,7 +47,7 @@ void WriteandExitTradeItemsMenu(); s32 CreateTradeItemsMenu(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sTradeItemsMenu = MemoryAlloc(sizeof(struct TradeItemsMenu), 8); MemoryFill8(sTradeItemsMenu, 0, sizeof(struct TradeItemsMenu)); sub_8035C1C(); @@ -176,9 +176,9 @@ void sub_80365AC(void) sTradeItemsMenu->fallbackState = TRADE_ITEMS_SEND_ITEM_SELECTION; sTradeItemsMenu->itemToSend.id = sub_801CB24(); sTradeItemsMenu->itemToSend.quantity = 1; - RestoreUnkTextStruct_8006518(sTradeItemsMenu->unk1E4); + RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk1E4); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&sTradeItemsMenu->itemToSend); SetTradeItemMenu(TRADE_ITEMS_ITEM_INFO); break; @@ -200,16 +200,16 @@ void sub_8036674(void) break; case 4: // Info sTradeItemsMenu->fallbackState = 0x13; - RestoreUnkTextStruct_8006518(sTradeItemsMenu->unk1E4); + RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk1E4); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_801B3C0(&sTradeItemsMenu->itemToSend); SetTradeItemMenu(TRADE_ITEMS_ITEM_INFO); break; case 7: case 0: // Cancel - sub_8035CC0(sTradeItemsMenu->unk184, 3); + sub_8035CC0(&sTradeItemsMenu->unk184, 3); sub_801CCD8(); SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_SELECTION); break; @@ -224,7 +224,7 @@ void sub_8036728(void) case 3: sub_801B450(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sTradeItemsMenu->unk1E4, TRUE, TRUE); + ShowWindows(&sTradeItemsMenu->unk1E4, TRUE, TRUE); sub_801CB5C(TRUE); if (sTradeItemsMenu->fallbackState == 0x13) { sub_8035CF4(sTradeItemsMenu->unk44, 3, TRUE); @@ -252,7 +252,7 @@ void sub_8036788(void) break; case 2: // If you back out of the # selection - sub_8035CC0(sTradeItemsMenu->unk184, 2); + sub_8035CC0(&sTradeItemsMenu->unk184, 2); sub_801CCD8(); sub_8035CF4(sTradeItemsMenu->unk44, 3, TRUE); SetTradeItemMenu(TRADE_ITEMS_SEND_ITEM_POPUP_MENU); @@ -497,16 +497,16 @@ void sub_8036B28(void) case TRADE_ITEMS_SEND_ITEM_SELECTION: if (sub_801D008() == NULL) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_10 = {3, 2}; + DungeonPos local_10 = {3, 2}; sub_801C8C4(0,1,&local_10,9); } } break; case TRADE_ITEMS_SEND_ITEM_POPUP_MENU: - RestoreUnkTextStruct_8006518(sTradeItemsMenu->unk184); - SetMenuItems(sTradeItemsMenu->unk44,sTradeItemsMenu->unk184,3,&sUnknown_80E60EC, + RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk184); + SetMenuItems(sTradeItemsMenu->unk44,&sTradeItemsMenu->unk184,3,&sUnknown_80E60EC, sUnknown_80E6104,TRUE,0,FALSE); sub_801CCD8(); sub_8035CF4(sTradeItemsMenu->unk44,3,TRUE); @@ -626,11 +626,11 @@ void sub_8036ECC(u32 index, u32 r1) sTradeItemsMenu->unk14.unk1C = 0x2c; sTradeItemsMenu->unk14.unk20 = 0x12; sTradeItemsMenu->unk14.unk14 = index; - sTradeItemsMenu->unk14.unk18 = &sTradeItemsMenu->unk184[index]; + sTradeItemsMenu->unk14.unk18 = &sTradeItemsMenu->unk184.id[index]; sub_8013AA0(&sTradeItemsMenu->unk14); - sTradeItemsMenu->unk184[index] = sUnknown_80E6174; + sTradeItemsMenu->unk184.id[index] = sUnknown_80E6174; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sTradeItemsMenu->unk184, TRUE, TRUE); + ShowWindows(&sTradeItemsMenu->unk184, TRUE, TRUE); } void sub_8036F30(void) @@ -647,7 +647,7 @@ void sub_8036F30(void) void sub_8036F74(void) { - RestoreUnkTextStruct_8006518(sTradeItemsMenu->unk184); + RestoreUnkTextStruct_8006518(&sTradeItemsMenu->unk184); sub_8036ECC(2, gTeamInventoryRef->teamStorage[sTradeItemsMenu->itemToSend.id]); sub_801CCD8(); sub_8035CF4(sTradeItemsMenu->unk44, 3, FALSE); diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index 7b2e37de1..84262722d 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -15,15 +15,15 @@ typedef struct unkStruct_203B360 /* 0x0 */ u32 currMenu; u32 unk4; // state MenuStruct unk8[4]; - UnkTextStruct2 unk148[4]; + Windows unk148; SpriteOAM unk1A8; u32 unk1B0; // sprite count? } unkStruct_203B360; static EWRAM_INIT unkStruct_203B360 *sUnknown_203B360 = {NULL}; -const UnkTextStruct2 gUnknown_80E6E7C = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E6E7C = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -31,8 +31,8 @@ const UnkTextStruct2 gUnknown_80E6E7C = { NULL }; -const UnkTextStruct2 gUnknown_80E6E94 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E6E94 = { + 0, 0x03, 0x05, 0x09, 0x13, 0x05, @@ -68,15 +68,15 @@ void sub_80382E4(s32 currMenu) MemoryFill8(sUnknown_203B360, 0, sizeof(unkStruct_203B360)); } for(index = 0; index < 4; index++){ - sUnknown_203B360->unk148[index] = gUnknown_80E6E7C; + sUnknown_203B360->unk148.id[index] = gUnknown_80E6E7C; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B360->unk148, TRUE, TRUE); + ShowWindows(&sUnknown_203B360->unk148, TRUE, TRUE); if (currMenu == 0x25) { // Caution! // The storage space is empty! // Please check again. - SetMenuItems(sUnknown_203B360->unk8,sUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC, + SetMenuItems(sUnknown_203B360->unk8,&sUnknown_203B360->unk148,0,&gUnknown_80E6E94,gUnknown_80E6EAC, FALSE,4,FALSE); } sub_8035CF4(sUnknown_203B360->unk8,0,TRUE); @@ -88,7 +88,7 @@ void sub_80382E4(s32 currMenu) void sub_80383A8(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (sUnknown_203B360 != 0) { MemoryFree(sUnknown_203B360); sUnknown_203B360 = 0; diff --git a/src/wigglytuff_shop1.c b/src/wigglytuff_shop1.c index 4a62baf7d..bf89f2253 100644 --- a/src/wigglytuff_shop1.c +++ b/src/wigglytuff_shop1.c @@ -30,12 +30,12 @@ bool8 sub_80211AC(u32 mode, u32 a1) sWigglytuffShop1Work = MemoryAlloc(sizeof(WigglytuffShop1Work), 8); sWigglytuffShop1Work->mode = mode; sWigglytuffShop1Work->s40.s0.unk34 = a1; - sWigglytuffShop1Work->s40.s0.unk38 = &sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34]; - RestoreUnkTextStruct_8006518(sWigglytuffShop1Work->s40.s0.unk3C); - sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC47C; + sWigglytuffShop1Work->s40.s0.unk38 = &sWigglytuffShop1Work->s40.s0.windows.id[sWigglytuffShop1Work->s40.s0.unk34]; + RestoreUnkTextStruct_8006518(&sWigglytuffShop1Work->s40.s0.windows); + sWigglytuffShop1Work->s40.s0.windows.id[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC47C; sWigglytuffShop1Work->s40.s0.unk38->unk14 = &sWigglytuffShop1Work->s40.unk9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, TRUE, TRUE); sub_8013818(&sWigglytuffShop1Work->s40.s0.input, sub_8021664(), 10, a1); if (sUnknown_203B284 == sWigglytuffShop1Work->mode) { @@ -87,7 +87,7 @@ u8 sub_802132C(void) void sub_8021354(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop1Work->s40.s0.unk3C, FALSE, FALSE); + ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, FALSE, FALSE); sWigglytuffShop1Work->s40.s0.input.unk22 = sub_8021664(); sub_8013984(&sWigglytuffShop1Work->s40.s0.input); sub_8021410(); @@ -103,9 +103,9 @@ void sub_80213A0(void) sUnknown_203B284 = sWigglytuffShop1Work->mode; sUnknown_203B288 = sWigglytuffShop1Work->s40.s0.input.menuIndex; sUnknown_203B28A = sWigglytuffShop1Work->s40.s0.input.unk1E; - sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC464; + sWigglytuffShop1Work->s40.s0.windows.id[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC464; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, TRUE, TRUE); MemoryFree(sWigglytuffShop1Work); sWigglytuffShop1Work = NULL; } @@ -118,7 +118,7 @@ static void sub_8021410(void) sWigglytuffShop1Work->s40.unk9C.f2 = 12; sWigglytuffShop1Work->s40.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop1Work->s40.s0.windows, TRUE, TRUE); SUB_80095E4_CALL(sWigglytuffShop1Work->s40.s0); } @@ -143,22 +143,22 @@ void sub_8021494(void) WriteFriendAreaName(buffer1, friendAreaIndex, TRUE); if (GetFriendAreaPrice(friendAreaIndex) <= gTeamInventoryRef->teamMoney) - PrintStringOnWindow(8,sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer1, sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8,GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer1, sWigglytuffShop1Work->s40.s0.unk34, 0); else { sprintfStatic(buffer2, sFmtRedString, buffer1); - PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0); } } else if (sWigglytuffShop1Work->mode == 0) { if (gFriendAreas[friendAreaIndex] == TRUE) - PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0); else { sprintfStatic(buffer2, sFmtGreenString, GetFriendAreaName(friendAreaIndex)); - PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0); } } else - PrintStringOnWindow(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0); + PrintStringOnWindow(8, GetMenuEntryYCoord(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0); } sub_80073E0(sWigglytuffShop1Work->s40.s0.unk34); diff --git a/src/wigglytuff_shop2.c b/src/wigglytuff_shop2.c index da0764b3b..446519a94 100644 --- a/src/wigglytuff_shop2.c +++ b/src/wigglytuff_shop2.c @@ -31,9 +31,9 @@ bool8 CreateWigglytuffShopFriendAreaMenu(u8 friendArea, bool8 a1, s32 a2) sub_801317C(&sWigglytuffShop2Work->unk0); sub_8021A60(); sWigglytuffShop2Work->unk74 = a2; - sWigglytuffShop2Work->unk78 = &sWigglytuffShop2Work->unk7C[a2]; - RestoreUnkTextStruct_8006518(sWigglytuffShop2Work->unk7C); - sWigglytuffShop2Work->unk7C[sWigglytuffShop2Work->unk74] = sUnknown_80DC4D8; + sWigglytuffShop2Work->unk78 = &sWigglytuffShop2Work->unk7C.id[a2]; + RestoreUnkTextStruct_8006518(&sWigglytuffShop2Work->unk7C); + sWigglytuffShop2Work->unk7C.id[sWigglytuffShop2Work->unk74] = sUnknown_80DC4D8; sub_8021820(); return TRUE; } @@ -61,9 +61,9 @@ static void sub_8021820(void) void CleanWigglytuffShopFriendAreaInfoMenu(void) { if (sWigglytuffShop2Work) { - sWigglytuffShop2Work->unk7C[sWigglytuffShop2Work->unk74] = sUnknown_80DC4BC; + sWigglytuffShop2Work->unk7C.id[sWigglytuffShop2Work->unk74] = sUnknown_80DC4BC; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop2Work->unk7C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop2Work->unk7C, TRUE, TRUE); MemoryFree(sWigglytuffShop2Work); sWigglytuffShop2Work = NULL; } @@ -72,7 +72,7 @@ void CleanWigglytuffShopFriendAreaInfoMenu(void) static void sub_8021878(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop2Work->unk7C, TRUE, TRUE); + ShowWindows(&sWigglytuffShop2Work->unk7C, TRUE, TRUE); } static void PopulateWigglytuffShopFriendAreaInfoScreen(void) diff --git a/src/wigglytuff_shop3.c b/src/wigglytuff_shop3.c index eabf966ef..87c0e8bbc 100644 --- a/src/wigglytuff_shop3.c +++ b/src/wigglytuff_shop3.c @@ -53,7 +53,7 @@ bool8 CreateWigglytuffShop(u32 mode) OpenedFile *file; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sWigglytuffShop3Work = MemoryAlloc(sizeof(WigglytuffShop3Work), 8); sWigglytuffShop3Work->menuAction1 = 0; @@ -140,32 +140,32 @@ static void sub_8021D5C(void) { s32 i; - RestoreUnkTextStruct_8006518(sWigglytuffShop3Work->unkD0); + RestoreUnkTextStruct_8006518(&sWigglytuffShop3Work->unkD0); switch (sWigglytuffShop3Work->state) { case WIGGLYTUFF_UNK9: case WIGGLYTUFF_UNKA: - sWigglytuffShop3Work->unkD0[0] = sUnknown_80DC534; - sWigglytuffShop3Work->unkD0[2] = sUnknown_80DC534; - sWigglytuffShop3Work->unkD0[1] = sUnknown_80DC564; + sWigglytuffShop3Work->unkD0.id[0] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.id[2] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.id[1] = sUnknown_80DC564; break; case WIGGLYTUFF_UNKB: - sWigglytuffShop3Work->unkD0[2] = sUnknown_80DC54C; + sWigglytuffShop3Work->unkD0.id[2] = sUnknown_80DC54C; break; default: for (i = 0; i < 4; i++) - sWigglytuffShop3Work->unkD0[i] = sUnknown_80DC534; + sWigglytuffShop3Work->unkD0.id[i] = sUnknown_80DC534; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sWigglytuffShop3Work->unkD0, TRUE, TRUE); + ShowWindows(&sWigglytuffShop3Work->unkD0, TRUE, TRUE); } static void UpdateWigglytuffDialogue(void) { u8 *string; - unkStruct_8092638 uStack_14; + FriendAreaCapacity uStack_14; switch (sWigglytuffShop3Work->state) { case WIGGLYTUFF_INIT: @@ -273,7 +273,7 @@ static void UpdateWigglytuffDialogue(void) sub_8023354(TRUE); break; case DISPLAY_POKEMON_FRIEND_AREA_INFO: - sub_8092638(sWigglytuffShop3Work->chosenFriendArea, &uStack_14, FALSE, FALSE); + GetFriendAreaCapacity2(sWigglytuffShop3Work->chosenFriendArea, &uStack_14, FALSE, FALSE); if (uStack_14.hasFriendArea) sWigglytuffShop3Work->fallbackState = WIGGLYTUFF_CHECK_HAS_FRIEND_AREA; diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 87b2cf857..f5ed8de67 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -187,7 +187,7 @@ u8 sub_8027F88(void) s32 counter; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B2C0 = MemoryAlloc(sizeof(WonderMailStruct_203B2C0), 8); MemoryFill8(sUnknown_203B2C0, 0, sizeof(WonderMailStruct_203B2C0)); sUnknown_203B2C0->unk53C = 0; @@ -420,9 +420,9 @@ void sub_8028348(void) switch(sUnknown_203B2C0->state) { case 0x3B: - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8031D70(sUnknown_203B2C0->mailIndex, 0); break; case 0x3C: @@ -457,13 +457,13 @@ void sub_8028348(void) if(sub_8023CE8() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8023868(3, 0, 0, 9); } break; case 0x34: - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk35C); - SetMenuItems(sUnknown_203B2C0->unk21C, sUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk35C); + SetMenuItems(sUnknown_203B2C0->unk21C, &sUnknown_203B2C0->unk35C, 3, &gUnknown_80DDAE4, gUnknown_80DDAFC, TRUE, 0, FALSE); sub_8023DA4(); sub_8035CF4(sUnknown_203B2C0->unk21C, 3, TRUE); break; @@ -483,7 +483,7 @@ void sub_8028348(void) if(sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80306A8(WONDER_MAIL_TYPE_AOK, 0, 0, 6); } break; @@ -572,9 +572,9 @@ void sub_8028348(void) CreateDialogueBoxAndPortrait(gUnknown_80DE124, 0, &sUnknown_203B2C0->monPortrait,0x10d); break; case 0x27: - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(4, sUnknown_203B2C0->passwordBuffer); break; case 8: @@ -610,15 +610,15 @@ void sub_8028348(void) if(sub_8030894() == 0) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); // SOS Mail sub_80306A8(WONDER_MAIL_TYPE_SOS_1, 0, 0, 6); } break; case 0x20: case 0x2B: - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk35C); - SetMenuItems(sUnknown_203B2C0->unk21C, sUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, TRUE, 0, FALSE); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk35C); + SetMenuItems(sUnknown_203B2C0->unk21C, &sUnknown_203B2C0->unk35C, 3, &gUnknown_80DDACC, gUnknown_80DDAFC, TRUE, 0, FALSE); sub_803092C(); sub_8035CF4(sUnknown_203B2C0->unk21C, 3, TRUE); break; @@ -1114,9 +1114,9 @@ void sub_8029044(void) case 4: sUnknown_203B2C0->fallbackState = 0x1F; sUnknown_203B2C0->mailIndex = sub_80307EC(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); SetFriendRescueCounterState(0x21); break; @@ -1150,15 +1150,15 @@ void sub_80290F0(void) break; case INFO_ACTION: sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); SetFriendRescueCounterState(0x21); break; case 4: case CANCEL_ACTION: - sub_8035CC0(sUnknown_203B2C0->unk35C, 2); + sub_8035CC0(&sUnknown_203B2C0->unk35C, 2); sub_8030810(1); SetFriendRescueCounterState(0x1F); break; @@ -1175,7 +1175,7 @@ void sub_80291AC(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_803092C(); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1392,7 +1392,7 @@ void sub_80293F4(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); SetFriendRescueCounterState(FRIEND_RESCUE_MAIN); break; default: @@ -1463,9 +1463,9 @@ void sub_80295D8(void) case 4: sUnknown_203B2C0->fallbackState = 0x2A; sUnknown_203B2C0->mailIndex = sub_80307EC(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); SetFriendRescueCounterState(0x2C); break; @@ -1499,15 +1499,15 @@ void sub_8029684(void) break; case INFO_ACTION: sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8030D40(sUnknown_203B2C0->mailIndex, 0); SetFriendRescueCounterState(0x2C); break; case 0x4: case CANCEL_ACTION: - sub_8035CC0(sUnknown_203B2C0->unk35C,2); + sub_8035CC0(&sUnknown_203B2C0->unk35C,2); sub_8030810(1); SetFriendRescueCounterState(0x2A); break; @@ -1522,7 +1522,7 @@ void sub_8029740(void) case 3: sub_8030DE4(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_803092C(); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1573,9 +1573,9 @@ void sub_80297D4(void) case 4: sUnknown_203B2C0->fallbackState = SELECT_HELPER_POKEMON; sUnknown_203B2C0->speciesNum = sub_8023B44(); - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8024458(sUnknown_203B2C0->speciesNum, 0); SetFriendRescueCounterState(0x35); break; @@ -1599,15 +1599,15 @@ void sub_8029884(void) break; case INFO_ACTION: sUnknown_203B2C0->fallbackState = DEFAULT_FALLBACK_STATE; - RestoreUnkTextStruct_8006518(sUnknown_203B2C0->unk3BC); + RestoreUnkTextStruct_8006518(&sUnknown_203B2C0->unk3BC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_8024458(sUnknown_203B2C0->speciesNum, 0); SetFriendRescueCounterState(0x35); break; case 0x4: case CANCEL_ACTION: - sub_8035CC0(sUnknown_203B2C0->unk35C, 3); + sub_8035CC0(&sUnknown_203B2C0->unk35C, 3); sub_8023B7C(1); SetFriendRescueCounterState(SELECT_HELPER_POKEMON); break; @@ -1631,7 +1631,7 @@ void sub_8029944(void) case 3: sub_802453C(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); sub_8023B7C(1); if(sUnknown_203B2C0->fallbackState == DEFAULT_FALLBACK_STATE) { @@ -1771,7 +1771,7 @@ void sub_8029AF4(void) case 3: sub_8031E10(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2C0->unk3BC, TRUE, TRUE); + ShowWindows(&sUnknown_203B2C0->unk3BC, TRUE, TRUE); SetFriendRescueCounterState(0x3C); break; case 1: diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 60443e0be..a9f332180 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -79,7 +79,7 @@ u8 sub_802B2D4(void) OpenedFile *faceFile; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sUnknown_203B2C8 = MemoryAlloc(sizeof(struct unkStruct_203B2C8),8); MemoryFill8(sUnknown_203B2C8,0,sizeof(struct unkStruct_203B2C8)); sUnknown_203B2C8->unk1 = -1; diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index e344f72a1..545d90dbd 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -19,7 +19,7 @@ struct unkStruct_203B30C unkStruct_802C39C unk8; MenuStruct unk60; MenuItem unkB0[8]; - UnkTextStruct2 unkF0[4]; + Windows unkF0; }; static EWRAM_INIT struct unkStruct_203B30C *gUnknown_203B30C = {NULL}; @@ -31,24 +31,24 @@ extern void sub_802F004(); extern void sub_802F088(); extern void sub_802F108(void); -const UnkTextStruct2 gUnknown_80E03C4 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E03C4 = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E03DC = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E03DC = { + 0, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E03F4 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E03F4 = { + 0, 0x03, 0x15, 0x06, 0x07, 0x03, @@ -119,22 +119,22 @@ void sub_802F004(void) { s32 index; - RestoreUnkTextStruct_8006518(gUnknown_203B30C->unkF0); + RestoreUnkTextStruct_8006518(&gUnknown_203B30C->unkF0); switch(gUnknown_203B30C->state) { case 2: sub_802F108(); - gUnknown_203B30C->unkF0[2] = gUnknown_80E03F4; - sub_8012CAC(&gUnknown_203B30C->unkF0[2], gUnknown_203B30C->unkB0); + gUnknown_203B30C->unkF0.id[2] = gUnknown_80E03F4; + sub_8012CAC(&gUnknown_203B30C->unkF0.id[2], gUnknown_203B30C->unkB0); break; default: for(index = 0; index < 4; index++) { - gUnknown_203B30C->unkF0[index] = gUnknown_80E03C4; + gUnknown_203B30C->unkF0.id[index] = gUnknown_80E03C4; } } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B30C->unkF0, TRUE, TRUE); + ShowWindows(&gUnknown_203B30C->unkF0, TRUE, TRUE); } void sub_802F088(void) diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index a7be19ec0..c0f71b37f 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -26,8 +26,8 @@ static EWRAM_INIT struct unkStruct_203B320 *gUnknown_203B320 = {NULL}; extern unkStruct_203B480 *gUnknown_203B480; -const UnkTextStruct2 gUnknown_80E083C = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E083C = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -35,8 +35,8 @@ const UnkTextStruct2 gUnknown_80E083C = { NULL }; -const UnkTextStruct2 gUnknown_80E0854 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E0854 = { + 0, 0x06, 0x02, 0x02, 0x18, 0x11, @@ -77,7 +77,7 @@ ALIGNED(4) const u8 SOSList[] = "SOS List"; s32 sub_8030A74(void); void sub_80308A0(void); -u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3) +u32 sub_80306A8(u32 wonderMailType, u32 r1, DungeonPos *r2, u32 r3) { if (HasNoWonderMailType(wonderMailType)) return 0; @@ -86,18 +86,18 @@ u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3) gUnknown_203B320->wonderMailType = wonderMailType; gUnknown_203B320->s28.s0.unk34 = r1; - gUnknown_203B320->s28.s0.unk38 = &gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34]; - RestoreUnkTextStruct_8006518(gUnknown_203B320->s28.s0.unk3C); + gUnknown_203B320->s28.s0.unk38 = &gUnknown_203B320->s28.s0.windows.id[gUnknown_203B320->s28.s0.unk34]; + RestoreUnkTextStruct_8006518(&gUnknown_203B320->s28.s0.windows); - gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E0854; + gUnknown_203B320->s28.s0.windows.id[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E0854; gUnknown_203B320->s28.s0.unk38->unk14 = &gUnknown_203B320->s28.unk9C; if (r2 != 0) - gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34].unk8 = *r2; + gUnknown_203B320->s28.s0.windows.id[gUnknown_203B320->s28.s0.unk34].pos = *r2; sub_8012D08(gUnknown_203B320->s28.s0.unk38, r3); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B320->s28.s0.windows, TRUE, TRUE); sub_8013818(&gUnknown_203B320->s28.s0.input, sub_8030A74(), r3, r1); sub_80308A0(); sub_803092C(); @@ -154,9 +154,9 @@ void sub_803084C(void) { if(gUnknown_203B320 != NULL) { - gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E083C; + gUnknown_203B320->s28.s0.windows.id[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E083C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B320->s28.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B320); gUnknown_203B320 = NULL; } @@ -174,7 +174,7 @@ void sub_80308A0(void) gUnknown_203B320->s28.unk9C.f2 = 12; gUnknown_203B320->s28.unk9C.f3 = 0; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B320->s28.s0.windows, TRUE, TRUE); SUB_80095E4_CALL(gUnknown_203B320->s28.s0); } @@ -200,7 +200,7 @@ void sub_803092C(void) for (index = 0; index < gUnknown_203B320->s28.s0.input.unk1A; index++) { mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.unk1C) + index]); local.unk0[0] = gUnknown_203B320->s28.s0.unk34; - local.y = sub_8013800(&gUnknown_203B320->s28.s0.input,index); + local.y = GetMenuEntryYCoord(&gUnknown_203B320->s28.s0.input,index); local.mailTitleType = 7; local.mailMissionType = MISSION_TYPE_FRIEND_RESCUE; local.mailStatus = MAIL_STATUS_SUSPENDED; diff --git a/src/wonder_mail_5.c b/src/wonder_mail_5.c index 9486643b0..ec366a25e 100644 --- a/src/wonder_mail_5.c +++ b/src/wonder_mail_5.c @@ -20,8 +20,8 @@ struct unkStruct_203B324 MenuInputStructSub unk0; u8 mailIndex; u32 windowID; - UnkTextStruct2 *unk14; - UnkTextStruct2 unk18[4]; + Window *unk14; + Windows unk18; }; static EWRAM_INIT struct unkStruct_203B324 *gUnknown_203B324 = {NULL}; @@ -29,8 +29,8 @@ static EWRAM_INIT struct unkStruct_203B324 *gUnknown_203B324 = {NULL}; extern unkStruct_203B480 *gUnknown_203B480; -const UnkTextStruct2 gUnknown_80E0900 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E0900 = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, @@ -38,10 +38,10 @@ const UnkTextStruct2 gUnknown_80E0900 = { NULL }; -const UnkTextStruct2_sub2 gUnknown_80E0918 = {0x01, 0x00, 0x12, 0x00}; +const WindowHeader gUnknown_80E0918 = {0x01, 0x00, 0x12, 0x00}; -const UnkTextStruct2 gUnknown_80E091C = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E091C = { + 0, 0x06, 0x02, 0x02, 0x1A, 0x10, @@ -63,9 +63,9 @@ bool8 sub_8030D40(u8 mailIndex, s32 windowID) gUnknown_203B324->mailIndex = mailIndex; sub_801317C(&gUnknown_203B324->unk0); gUnknown_203B324->windowID = windowID; - gUnknown_203B324->unk14 = &gUnknown_203B324->unk18[windowID]; - RestoreUnkTextStruct_8006518(gUnknown_203B324->unk18); - gUnknown_203B324->unk18[gUnknown_203B324->windowID] = gUnknown_80E091C; + gUnknown_203B324->unk14 = &gUnknown_203B324->unk18.id[windowID]; + RestoreUnkTextStruct_8006518(&gUnknown_203B324->unk18); + gUnknown_203B324->unk18.id[gUnknown_203B324->windowID] = gUnknown_80E091C; sub_8030DD4(); return TRUE; } @@ -95,9 +95,9 @@ void sub_8030DE4(void) { if(gUnknown_203B324 != NULL) { - gUnknown_203B324->unk18[gUnknown_203B324->windowID] = gUnknown_80E0900; + gUnknown_203B324->unk18.id[gUnknown_203B324->windowID] = gUnknown_80E0900; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B324->unk18, TRUE, TRUE); + ShowWindows(&gUnknown_203B324->unk18, TRUE, TRUE); MemoryFree(gUnknown_203B324); gUnknown_203B324 = NULL; } @@ -106,7 +106,7 @@ void sub_8030DE4(void) void sub_8030E2C(void) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B324->unk18, TRUE, TRUE); + ShowWindows(&gUnknown_203B324->unk18, TRUE, TRUE); } void sub_8030E48(void) diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c index 486d6316e..7ffa730c0 100644 --- a/src/wonder_mail_6.c +++ b/src/wonder_mail_6.c @@ -17,7 +17,7 @@ struct unkStruct_203B328 u8 mailIndex; MenuStruct unk8; MenuStruct unk58; - UnkTextStruct2 unkA8[4]; + Windows unkA8; /* 0x108 */ struct MonPortraitMsg monPortrait; u32 wonderMailType; }; @@ -48,24 +48,24 @@ const MenuItem gUnknown_80E0968[] = {NULL, CANCEL_ACTION} }; -const UnkTextStruct2 gUnknown_80E0990 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E0990 = { + 0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E09A8 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E09A8 = { + 0, 0x03, 0x13, 0x0B, 0x08, 0x03, 0x03, 0x00, NULL }; -const UnkTextStruct2 gUnknown_80E09C0 = { - 0x00, 0x00, 0x00, 0x00, +const Window gUnknown_80E09C0 = { + 0, 0x03, 0x11, 0x0F, 0x07, 0x03, @@ -101,7 +101,7 @@ bool8 sub_8030F58(u32 wonderMailType) OpenedFile *file; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); if (gUnknown_203B328 == NULL) { gUnknown_203B328 = MemoryAlloc(sizeof(struct unkStruct_203B328),8); MemoryFill8(gUnknown_203B328,0,sizeof(struct unkStruct_203B328)); @@ -180,40 +180,40 @@ void sub_80310E4(u32 newState) static void sub_80310FC(void) { - RestoreUnkTextStruct_8006518(gUnknown_203B328->unkA8); + RestoreUnkTextStruct_8006518(&gUnknown_203B328->unkA8); switch(gUnknown_203B328->state) { case INIT_STATE: - gUnknown_203B328->unkA8[1] = gUnknown_80E0990; - gUnknown_203B328->unkA8[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8[3] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[1] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[3] = gUnknown_80E0990; break; case MAIN_MENU: - gUnknown_203B328->unkA8[1] = gUnknown_80E09A8; - gUnknown_203B328->unkA8[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8[3] = gUnknown_80E0990; - sub_8012CAC(&gUnknown_203B328->unkA8[1], gUnknown_80E0968); + gUnknown_203B328->unkA8.id[1] = gUnknown_80E09A8; + gUnknown_203B328->unkA8.id[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[3] = gUnknown_80E0990; + sub_8012CAC(&gUnknown_203B328->unkA8.id[1], gUnknown_80E0968); break; case DELETE_SINGLE_MAIL_STATE: case DELETE_ALL_MAIL_STATE: - gUnknown_203B328->unkA8[2] = gUnknown_80E09C0; - sub_8012CAC(&gUnknown_203B328->unkA8[2], gUnknown_80E0948); + gUnknown_203B328->unkA8.id[2] = gUnknown_80E09C0; + sub_8012CAC(&gUnknown_203B328->unkA8.id[2], gUnknown_80E0948); break; case INFO_STATE: - gUnknown_203B328->unkA8[0] = gUnknown_80E0990; - gUnknown_203B328->unkA8[1] = gUnknown_80E0990; - gUnknown_203B328->unkA8[2] = gUnknown_80E0990; - gUnknown_203B328->unkA8[3] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[0] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[1] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8.id[3] = gUnknown_80E0990; break; case 5: case 6: default: ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B328->unkA8, TRUE, TRUE); + ShowWindows(&gUnknown_203B328->unkA8, TRUE, TRUE); } static void sub_8031258(void) diff --git a/src/wonder_mail_802C10C.c b/src/wonder_mail_802C10C.c index 23f80463a..b37dec5bf 100644 --- a/src/wonder_mail_802C10C.c +++ b/src/wonder_mail_802C10C.c @@ -20,7 +20,7 @@ static s32 CountPelipperBoardSlots(void); static void sub_802C328(void); -bool8 sub_802C10C(s32 a0, UnkTextStruct2_sub *a1, s32 a2) +bool8 sub_802C10C(s32 a0, DungeonPos *a1, s32 a2) { if (HasNoPelipperBoardJobs()) return FALSE; @@ -29,18 +29,18 @@ bool8 sub_802C10C(s32 a0, UnkTextStruct2_sub *a1, s32 a2) gUnknown_203B2E0 = MemoryAlloc(sizeof(struct unkStruct_203B2E0), 8); gUnknown_203B2E0->unk8.s0.unk34 = a0; - gUnknown_203B2E0->unk8.s0.unk38 = &gUnknown_203B2E0->unk8.s0.unk3C[a0]; - RestoreUnkTextStruct_8006518(gUnknown_203B2E0->unk8.s0.unk3C); + gUnknown_203B2E0->unk8.s0.unk38 = &gUnknown_203B2E0->unk8.s0.windows.id[a0]; + RestoreUnkTextStruct_8006518(&gUnknown_203B2E0->unk8.s0.windows); - gUnknown_203B2E0->unk8.s0.unk3C[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFCB4; + gUnknown_203B2E0->unk8.s0.windows.id[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFCB4; gUnknown_203B2E0->unk8.s0.unk38->unk14 = &gUnknown_203B2E0->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E0->unk8.s0.unk3C[gUnknown_203B2E0->unk8.s0.unk34].unk8 = *a1; + gUnknown_203B2E0->unk8.s0.windows.id[gUnknown_203B2E0->unk8.s0.unk34].pos = *a1; sub_8012D34(gUnknown_203B2E0->unk8.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E0->unk8.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B2E0->unk8.s0.windows, TRUE, TRUE); sub_8013848(&gUnknown_203B2E0->unk8.s0.input, CountPelipperBoardSlots(), a2, a0); gUnknown_203B2E0->unk8.s0.input.menuIndex = gUnknown_203B2E4; sub_8013984(&gUnknown_203B2E0->unk8.s0.input); @@ -84,7 +84,7 @@ u8 sub_802C26C(void) void sub_802C28C(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E0->unk8.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B2E0->unk8.s0.windows, FALSE, FALSE); gUnknown_203B2E0->unk8.s0.input.unk22 = CountPelipperBoardSlots(); sub_8013984(&gUnknown_203B2E0->unk8.s0.input); sub_802C328(); @@ -98,9 +98,9 @@ void sub_802C2D4(void) { if (gUnknown_203B2E0 != NULL) { gUnknown_203B2E4 = gUnknown_203B2E0->unk8.s0.input.menuIndex; - gUnknown_203B2E0->unk8.s0.unk3C[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFC9C; + gUnknown_203B2E0->unk8.s0.windows.id[gUnknown_203B2E0->unk8.s0.unk34] = sUnknown_80DFC9C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E0->unk8.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B2E0->unk8.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B2E0); gUnknown_203B2E0 = NULL; } @@ -140,7 +140,7 @@ void DrawPelipperBoardJobMenu(void) slotIndex = (gUnknown_203B2E0->pelipperBoardSlots[(gUnknown_203B2E0->unk8.s0.input.unk1E * gUnknown_203B2E0->unk8.s0.input.unk1C) + i]); mail = GetPelipperBoardSlotInfo(slotIndex); local.unk0[0] = gUnknown_203B2E0->unk8.s0.unk34; - local.y = sub_8013800(&gUnknown_203B2E0->unk8.s0.input, i); + local.y = GetMenuEntryYCoord(&gUnknown_203B2E0->unk8.s0.input, i); sub_803B35C(mail, &local); if (IsMailinJobSlot(GetPelipperBoardSlotInfo(slotIndex))) diff --git a/src/wonder_mail_802C4C8.c b/src/wonder_mail_802C4C8.c index 4ecafc075..66d4b380a 100644 --- a/src/wonder_mail_802C4C8.c +++ b/src/wonder_mail_802C4C8.c @@ -23,25 +23,25 @@ static s32 CountAcceptedJobs(void); static void sub_802C6DC(void); -bool8 sub_802C4C8(s32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802C4C8(s32 a0, DungeonPos *a1, u32 a2) { if (HasNoAcceptedJobs()) return FALSE; gUnknown_203B2E8 = MemoryAlloc(sizeof(struct unkStruct_203B2E0), 8); gUnknown_203B2E8->unk8.s0.unk34 = a0; - gUnknown_203B2E8->unk8.s0.unk38 = &gUnknown_203B2E8->unk8.s0.unk3C[a0]; - RestoreUnkTextStruct_8006518(gUnknown_203B2E8->unk8.s0.unk3C); + gUnknown_203B2E8->unk8.s0.unk38 = &gUnknown_203B2E8->unk8.s0.windows.id[a0]; + RestoreUnkTextStruct_8006518(&gUnknown_203B2E8->unk8.s0.windows); - gUnknown_203B2E8->unk8.s0.unk3C[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCFC; + gUnknown_203B2E8->unk8.s0.windows.id[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCFC; gUnknown_203B2E8->unk8.s0.unk38->unk14 = &gUnknown_203B2E8->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E8->unk8.s0.unk3C[gUnknown_203B2E8->unk8.s0.unk34].unk8 = *a1; + gUnknown_203B2E8->unk8.s0.windows.id[gUnknown_203B2E8->unk8.s0.unk34].pos = *a1; sub_8012D34(gUnknown_203B2E8->unk8.s0.unk38, a2); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E8->unk8.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B2E8->unk8.s0.windows, TRUE, TRUE); sub_8013848(&gUnknown_203B2E8->unk8.s0.input, CountAcceptedJobs(), a2, a0); gUnknown_203B2E8->unk8.s0.input.menuIndex = gUnknown_203B2EC; sub_8013984(&gUnknown_203B2E8->unk8.s0.input); @@ -85,7 +85,7 @@ u8 GetPelipperBoardSlotIndex(void) void sub_802C640(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E8->unk8.s0.unk3C, FALSE, FALSE); + ShowWindows(&gUnknown_203B2E8->unk8.s0.windows, FALSE, FALSE); gUnknown_203B2E8->unk8.s0.input.unk22 = CountAcceptedJobs(); sub_8013984(&gUnknown_203B2E8->unk8.s0.input); sub_802C6DC(); @@ -99,9 +99,9 @@ void sub_802C688(void) { if (gUnknown_203B2E8 != NULL) { gUnknown_203B2EC = gUnknown_203B2E8->unk8.s0.input.menuIndex; - gUnknown_203B2E8->unk8.s0.unk3C[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCE4; + gUnknown_203B2E8->unk8.s0.windows.id[gUnknown_203B2E8->unk8.s0.unk34] = sUnknown_80DFCE4; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B2E8->unk8.s0.unk3C, TRUE, TRUE); + ShowWindows(&gUnknown_203B2E8->unk8.s0.windows, TRUE, TRUE); MemoryFree(gUnknown_203B2E8); gUnknown_203B2E8 = NULL; } @@ -139,7 +139,7 @@ void DrawJobListMenu(void) for (i = 0; i < gUnknown_203B2E8->unk8.s0.input.unk1A; i++) { mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[(gUnknown_203B2E8->unk8.s0.input.unk1E * gUnknown_203B2E8->unk8.s0.input.unk1C) + i]); local.unk0[0] = gUnknown_203B2E8->unk8.s0.unk34; - local.y = sub_8013800(&gUnknown_203B2E8->unk8.s0.input, i); + local.y = GetMenuEntryYCoord(&gUnknown_203B2E8->unk8.s0.input, i); sub_803B35C(mail, &local); CreateRescueTitle(&local); } diff --git a/src/wonder_mail_802C860.c b/src/wonder_mail_802C860.c index a7c3beb22..2c6fbad0b 100644 --- a/src/wonder_mail_802C860.c +++ b/src/wonder_mail_802C860.c @@ -82,25 +82,25 @@ static void sub_802C928(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B2F0->unk19C); + RestoreUnkTextStruct_8006518(&sUnknown_203B2F0->unk19C); switch (sUnknown_203B2F0->state) { case 2: sub_802CAA4(); - sUnknown_203B2F0->unk19C[2] = sUnknown_80DFD40; - sub_8012CAC(&sUnknown_203B2F0->unk19C[2], sUnknown_203B2F0->unk10C); + sUnknown_203B2F0->unk19C.id[2] = sUnknown_80DFD40; + sub_8012CAC(&sUnknown_203B2F0->unk19C.id[2], sUnknown_203B2F0->unk10C); break; case 3: - sUnknown_203B2F0->unk19C[3] = sUnknown_80DFD58; + sUnknown_203B2F0->unk19C.id[3] = sUnknown_80DFD58; break; default: for (i = 0; i < 4; i++) - sUnknown_203B2F0->unk19C[i] = sUnknown_80DFD28; + sUnknown_203B2F0->unk19C.id[i] = sUnknown_80DFD28; break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F0->unk19C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2F0->unk19C, TRUE, TRUE); } static void sub_802C9D8(void) diff --git a/src/wonder_mail_802CDD4.c b/src/wonder_mail_802CDD4.c index 2cdb48b5b..ce6a6d4d2 100644 --- a/src/wonder_mail_802CDD4.c +++ b/src/wonder_mail_802CDD4.c @@ -25,13 +25,13 @@ bool8 sub_802CDD4(u32 a0) sUnknown_203B2F4 = MemoryAlloc(sizeof(struct_Sub80095E4_2), 8); sUnknown_203B2F4->s0.unk34 = a0; - sUnknown_203B2F4->s0.unk38 = &sUnknown_203B2F4->s0.unk3C[sUnknown_203B2F4->s0.unk34]; - RestoreUnkTextStruct_8006518(sUnknown_203B2F4->s0.unk3C); - sUnknown_203B2F4->s0.unk3C[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFDA4; + sUnknown_203B2F4->s0.unk38 = &sUnknown_203B2F4->s0.windows.id[sUnknown_203B2F4->s0.unk34]; + RestoreUnkTextStruct_8006518(&sUnknown_203B2F4->s0.windows); + sUnknown_203B2F4->s0.windows.id[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFDA4; sUnknown_203B2F4->s0.unk38->unk14 = &sUnknown_203B2F4->unk9C; sub_8012D34(sUnknown_203B2F4->s0.unk38, 4); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F4->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2F4->s0.windows, TRUE, TRUE); sub_8013848(&sUnknown_203B2F4->s0.input, 5, 4, a0); sub_802CF5C(); sub_802CFD0(); @@ -69,7 +69,7 @@ u8 sub_802CEBC(void) void sub_802CED8(bool8 cursorSprite) { ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F4->s0.unk3C, FALSE, FALSE); + ShowWindows(&sUnknown_203B2F4->s0.windows, FALSE, FALSE); sub_8013984(&sUnknown_203B2F4->s0.input); sub_802CF5C(); sub_802CFD0(); @@ -81,9 +81,9 @@ void sub_802CED8(bool8 cursorSprite) void sub_802CF14(void) { if (sUnknown_203B2F4 != NULL) { - sUnknown_203B2F4->s0.unk3C[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFD8C; + sUnknown_203B2F4->s0.windows.id[sUnknown_203B2F4->s0.unk34] = sUnknown_80DFD8C; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F4->s0.unk3C, TRUE, TRUE); + ShowWindows(&sUnknown_203B2F4->s0.windows, TRUE, TRUE); MemoryFree(sUnknown_203B2F4); sUnknown_203B2F4 = NULL; } @@ -120,7 +120,7 @@ void sub_802CFD0(void) iVar1 = sub_803B344((sUnknown_203B2F4->s0.input.unk1E * sUnknown_203B2F4->s0.input.unk1C) + r5); local.unk0[0] = sUnknown_203B2F4->s0.unk34; - local.y = sub_8013800(&sUnknown_203B2F4->s0.input, r5); + local.y = GetMenuEntryYCoord(&sUnknown_203B2F4->s0.input, r5); sub_803B35C(&iVar1->mail, &local); local.unk43 = 1; diff --git a/src/wonder_mail_802D098.c b/src/wonder_mail_802D098.c index 4b6650dcc..bdd9c22c1 100644 --- a/src/wonder_mail_802D098.c +++ b/src/wonder_mail_802D098.c @@ -140,31 +140,31 @@ static void sub_802D1B8(void) { s32 i; - RestoreUnkTextStruct_8006518(sUnknown_203B2F8->unk1A8); + RestoreUnkTextStruct_8006518(&sUnknown_203B2F8->unk1A8); switch (sUnknown_203B2F8->state) { case 13: sub_802D5A4(); - sUnknown_203B2F8->unk1A8[2] = sUnknown_80DFE04; - sub_8012CAC(&sUnknown_203B2F8->unk1A8[2], sUnknown_203B2F8->unk118); - sUnknown_203B2F8->unk1A8[2].unkC = 6; + sUnknown_203B2F8->unk1A8.id[2] = sUnknown_80DFE04; + sub_8012CAC(&sUnknown_203B2F8->unk1A8.id[2], sUnknown_203B2F8->unk118); + sUnknown_203B2F8->unk1A8.id[2].width = 6; break; case 14: sub_802D63C(); - sUnknown_203B2F8->unk1A8[3] = sUnknown_80DFE1C; - sub_8012CAC(&sUnknown_203B2F8->unk1A8[3], sUnknown_203B2F8->unk158); - sUnknown_203B2F8->unk1A8[3].unkC = 6; + sUnknown_203B2F8->unk1A8.id[3] = sUnknown_80DFE1C; + sub_8012CAC(&sUnknown_203B2F8->unk1A8.id[3], sUnknown_203B2F8->unk158); + sUnknown_203B2F8->unk1A8.id[3].width = 6; break; default: for (i = 0; i < 4; i++) - sUnknown_203B2F8->unk1A8[i] = sUnknown_80DFDD4; + sUnknown_203B2F8->unk1A8.id[i] = sUnknown_80DFDD4; break; case WONDER_MAIL_EXIT: break; } ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(sUnknown_203B2F8->unk1A8, TRUE, TRUE); + ShowWindows(&sUnknown_203B2F8->unk1A8, TRUE, TRUE); } static void sub_802D2A8(void) diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c index a1d2b2d1a..6c2598492 100644 --- a/src/wonder_mail_main_menu.c +++ b/src/wonder_mail_main_menu.c @@ -49,7 +49,7 @@ struct unkStruct_203B3E8 u8 unk38_u8[0x30]; // idk why it fills to 0x30 instead... } UNK38; u8 fill68[0x1EC - 0x68]; - UnkTextStruct2 unk1EC[4]; + Windows unk1EC; u32 unk24C; /* 0x250 */ u32 wonderMailStatus; unkStruct_803B344 unk254; @@ -95,7 +95,7 @@ bool8 CreateWonderMailMenu(void) s32 index; ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); gUnknown_203B3E8 = MemoryAlloc(sizeof(struct unkStruct_203B3E8), 8); MemoryFill8(gUnknown_203B3E8, 0, sizeof(struct unkStruct_203B3E8)); @@ -331,7 +331,7 @@ void HandlePasswordEntryScreen(void) case 3: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B3E8->unk1EC, TRUE, TRUE); + ShowWindows(&gUnknown_203B3E8->unk1EC, TRUE, TRUE); if ( !DecodeWonderMailPassword(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->UNK38.decodedMail) || !IsValidWonderMail(&gUnknown_203B3E8->UNK38.decodedMail) ) { // Invalid password @@ -349,7 +349,7 @@ void HandlePasswordEntryScreen(void) case 2: sub_80155F0(); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(gUnknown_203B3E8->unk1EC, TRUE, TRUE); + ShowWindows(&gUnknown_203B3E8->unk1EC, TRUE, TRUE); SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU); break; } @@ -456,7 +456,7 @@ void WonderMailMainMenuCallback(void) break; case 3: ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_802EF48(); break; case RECEIVE_WONDER_MAIL_MAIN_SCREEN: @@ -558,9 +558,9 @@ void WonderMailMainMenuCallback(void) CreateDialogueBoxAndPortrait(gUnknown_80E7C98,0,0,0x101); break; case PASSWORD_ENTRY_SCREEN: - RestoreUnkTextStruct_8006518(gUnknown_203B3E8->unk1EC); + RestoreUnkTextStruct_8006518(&gUnknown_203B3E8->unk1EC); ResetUnusedInputStruct(); - xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); + ShowWindows(NULL, TRUE, TRUE); sub_80151C0(5,gUnknown_203B3E8->PasswordEntryBuffer); break; case PASSWORD_INVALID: diff --git a/src/world_map.c b/src/world_map.c new file mode 100644 index 000000000..7b562bdf0 --- /dev/null +++ b/src/world_map.c @@ -0,0 +1,604 @@ +#include "global.h" +#include "globaldata.h" +#include "world_map.h" +#include "sprite.h" +#include "code_8004AA0.h" +#include "input.h" +#include "text.h" +#include "code_8009804.h" +#include "bg_palette_buffer.h" +#include "string_format.h" +#include "code_800D090.h" +#include "friend_area.h" +#include "bg_control.h" +#include "code_800558C.h" +#include "code_80118A4.h" +#include "code_800C9CC.h" +#include "game_options.h" +#include "play_time.h" +#include "pokemon.h" +#include "decompress.h" + +extern const FileArchive gTitleMenuFileArchive; +extern const FileArchive gMonsterFileArchive; + +extern u16 gUnknown_2026E4E; + +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 void CopyDungeonName1toBuffer(u8 *buffer, DungeonLocation *dungeonLocation); +extern s32 Atan2_4096(PixelPos *a); +extern void sub_80117AC(void); +extern void sub_8011760(void); + +static EWRAM_INIT struct WorldMap *sWorldMapPtr = NULL; +static EWRAM_INIT Windows sWorldMapWindows = { + .id = { + [0] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {2, 10}, + .width = 26, + .height = 9, + .unk10 = 9, + }, + [1] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {23, 6}, + .width = 5, + .height = 3, + .unk10 = 3, + }, + [2] = { .type = WINDOW_TYPE_NORMAL,}, + [3] = { .type = WINDOW_TYPE_NORMAL,}, + } +}; + +static void ClearWindows(void); +static void AnimateSprites(bool8 a0); +static bool8 FadeScreen(void); +static void nullsub_24(void); +static void RunFrameActions(void); +static void UpdateMonSpritePosition(void); +static void UpdateBg(void); +static void sub_8010494(struct UnkStruct_sub_8010494 *r9); +static void AnimateMonPath(u8 id1, u8 id2); +static void sub_801059C(void); +static bool8 ShowYesNoWindow(u8 *str); +static void PrintDialogueMessage(const u8 *text); +static void FadeFromWorldMap(void); +static void CloseFiles(void); +static void PrintDungeonName(DungeonLocation *dungLocation); + +// Code is very similar to the functions in friend_areas_map_util.c + +void ShowWorldMap(struct UnkStruct_sub_8010268 *r5) +{ + s32 i, speciesId, var; + u8 text[1000]; + + sWorldMapPtr = 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++) { + RunFrameActions(); + } + AnimateMonPath(r5->unk4.unk0.id, r5->unk4.unk4.id); + PrintDungeonName(&r5->unk4.unk4); + for (i = 0; i < 60; i++) { + RunFrameActions(); + } + + 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) { + PrintDialogueMessage(text); + r5->unkB4 = 0; + } + else if (var == 2) { + if (ShowYesNoWindow(text)) { + r5->unkB4 = 1; + } + else { + r5->unkB4 = 0; + } + } + + FadeFromWorldMap(); + CloseFiles(); + nullsub_16(); +} + +static const DungeonPos gDungeonCoordinates[] = +{ + [DUNGEON_TINY_WOODS] = {172, 174}, + [DUNGEON_THUNDERWAVE_CAVE] = {171, 111}, + [DUNGEON_MT_STEEL] = {242, 126}, + [DUNGEON_SINISTER_WOODS] = {232, 181}, + [DUNGEON_SILENT_CHASM] = {263, 155}, + [DUNGEON_MT_THUNDER] = {298, 159}, + [DUNGEON_MT_THUNDER_PEAK] = {299, 142}, + [DUNGEON_GREAT_CANYON] = {203, 255}, + [DUNGEON_LAPIS_CAVE] = {385, 166}, + [DUNGEON_MT_BLAZE] = {388, 126}, + [DUNGEON_MT_BLAZE_PEAK] = {389, 109}, + [DUNGEON_FROSTY_FOREST] = {417, 112}, + [DUNGEON_FROSTY_GROTTO] = {422, 101}, + [DUNGEON_MT_FREEZE] = {432, 85}, + [DUNGEON_MT_FREEZE_PEAK] = {436, 69}, + [DUNGEON_MAGMA_CAVERN] = {442, 150}, + [DUNGEON_MAGMA_CAVERN_PIT] = {446, 163}, + [DUNGEON_SKY_TOWER] = {365, 27}, + [DUNGEON_SKY_TOWER_SUMMIT] = {352, 12}, + [DUNGEON_STORMY_SEA] = {133, 238}, + [DUNGEON_SILVER_TRENCH] = {129, 143}, + [DUNGEON_METEOR_CAVE] = {344, 105}, + [DUNGEON_MT_FREEZE_PEAK_2] = {427, 62}, + [DUNGEON_WESTERN_CAVE] = {27, 211}, + [DUNGEON_BOSS_3] = {246, 315}, + [DUNGEON_BOSS_4] = {443, 6}, + [DUNGEON_WISH_CAVE] = {32, 279}, + [DUNGEON_BURIED_RELIC] = {404, 262}, + [DUNGEON_PITFALL_VALLEY] = {194, 63}, + [DUNGEON_NORTHERN_RANGE] = {159, 46}, + [DUNGEON_BOSS_9] = {441, 310}, + [DUNGEON_DESERT_REGION] = {231, 235}, + [DUNGEON_SOUTHERN_CAVERN] = {169, 287}, + [DUNGEON_WYVERN_HILL] = {441, 273}, + [DUNGEON_FIERY_FIELD] = {64, 87}, + [DUNGEON_NORTHWIND_FIELD] = {80, 54}, + [DUNGEON_SOLAR_CAVE] = {431, 225}, + [DUNGEON_LIGHTNING_FIELD] = {27, 94}, + [DUNGEON_DARKNIGHT_RELIC] = {354, 298}, + [DUNGEON_WONDROUS_SEA] = {336, 253}, + [DUNGEON_MURKY_CAVE] = {287, 222}, + [DUNGEON_GRAND_SEA] = {63, 163}, + [DUNGEON_UPROAR_FOREST] = {275, 111}, + [DUNGEON_ODDITY_CAVE] = {202, 232}, + [DUNGEON_REMAINS_ISLAND] = {268, 302}, + [DUNGEON_MARVELOUS_SEA] = {336, 260}, + [DUNGEON_FANTASY_STRAIT] = {110, 79}, + [DUNGEON_ROCK_PATH] = {225, 314}, + [DUNGEON_SNOW_PATH] = {206, 314}, + [DUNGEON_AUTOPILOT] = {11, 307}, + [DUNGEON_D50] = {472, 25}, + [DUNGEON_D51] = {250, 8}, + [DUNGEON_NORMAL_MAZE] = {187, 190}, + [DUNGEON_HOWLING_FOREST] = {205, 111}, + [DUNGEON_D54] = {474, 6}, + [DUNGEON_POISON_MAZE] = {183, 9}, + [DUNGEON_WATERFALL_POND] = {367, 214}, + [DUNGEON_UNKNOWN_RELIC] = {278, 273}, + [DUNGEON_JOYOUS_TOWER] = {68, 305}, + [DUNGEON_FAR_OFF_SEA] = {270, 33}, + [DUNGEON_MT_FARAWAY] = {33, 39}, + [DUNGEON_D61] = {217, 8}, + [DUNGEON_PURITY_FOREST] = {69, 280}, + [DUNGEON_OUT_ON_RESCUE] = {192, 183}, +}; + +// Heavy math function. +static void AnimateMonPath(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(&sWorldMapPtr->monAxSprite, sWorldMapPtr->unk1100[3], 0, r3, 0, 0, TRUE); + + for (i = 0; i < valMax; i++) { + sWorldMapPtr->monSpritePos.x = ((((pos2.x - pos1.x) * (i << 8)) / valMax) / 256) + pos1.x; + sWorldMapPtr->monSpritePos.y = ((((pos2.y - pos1.y) * (i << 8)) / valMax) / 256) + pos1.y; + UpdateMonSpritePosition(); + UpdateBg(); + RunFrameActions(); + if (gRealInputs.pressed & A_BUTTON) + break; + if (gRealInputs.pressed & B_BUTTON) + break; + } + + sWorldMapPtr->monSpritePos = pos2; + UpdateMonSpritePosition(); + UpdateBg(); + RunFrameActions(); +} + +static void sub_8010494(struct UnkStruct_sub_8010494 *r9) +{ + s32 i; + for (i = 0; i < 64; i++) { + struct UnkStruct_Sub1 *structPtr = &sWorldMapPtr->unk0[i]; + u8 r0; + + if (i < 63) { + r0 = r9->unk6D[i]; + } + else { + r0 = 1; + } + + if (r0) { + structPtr->unk0 = 1; + AxResInitFile(&structPtr->unk8, sWorldMapPtr->unk1100[2], (i == 63) ? 12 : 1, 0, 0x40, 0, 1); + structPtr->unk4 = gDungeonCoordinates[i]; + } + else { + structPtr->unk0 = 0; + } + } + + AxResInitFile(&sWorldMapPtr->monAxSprite, sWorldMapPtr->unk1100[3], 0, 0, 0, 0, TRUE); + sWorldMapPtr->monSpritePos = gDungeonCoordinates[r9->unk0.id]; + sWorldMapPtr->bgPos.x = sWorldMapPtr->monSpritePos.x - 120; + sWorldMapPtr->bgPos.y = sWorldMapPtr->monSpritePos.y - 80; + UpdateMonSpritePosition(); + UpdateBg(); +} + +static char *const gUnknown_80D4014[] = +{ + "wmp2font", + "wmp2mcc", + "wmp2cani", + "wmp2pal", + "wmp2fon1", +}; + +static 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, "ax%03d", pokeStruct->speciesNum); + sWorldMapPtr->unk1100[3] = OpenFileAndGetFileDataPtr(filename, &gMonsterFileArchive); + sWorldMapPtr->unk1100[2] = OpenFileAndGetFileDataPtr("wmapspr", &gTitleMenuFileArchive); + sWorldMapPtr->unk1100[4] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[2], &gTitleMenuFileArchive); + sWorldMapPtr->unk1100[1] = OpenFileAndGetFileDataPtr("palet", &gMonsterFileArchive); + sWorldMapPtr->unk1100[0] = OpenFileAndGetFileDataPtr(gUnknown_80D4014[3], &gTitleMenuFileArchive); + sWorldMapPtr->unk52D4 = GetPokemonOverworldPalette(pokeStruct->speciesNum, 0); + + sub_8005610(sWorldMapPtr->unk1100[2], 0x40, 0x1F, 0); + + DecompressATGlobalFile((u32 *)(VRAM + 0x8000), 0x0, file); + sub_8004AA4(sWorldMapPtr->unk5150, sWorldMapPtr->unk1100[4], 0x10); + size = 0x4000; + DecompressATFile((u8 *) &sWorldMapPtr->unk1114, size, file2); + + sWorldMapPtr->brightness = 0; + sWorldMapPtr->bgPos.x = 0; + sWorldMapPtr->bgPos.y = 0; + + for (i = 0; i < 1500; i++) { + sWorldMapPtr->unk52E0[i] |= 0xFFFF; + sWorldMapPtr->unk5E98[i] = 0; + } + + CloseFile(file); + CloseFile(file2); + ShowWindows(NULL, 1, 1); +} + +static void CloseFiles(void) +{ + CloseFile(sWorldMapPtr->unk1100[4]); + CloseFile(sWorldMapPtr->unk1100[3]); + CloseFile(sWorldMapPtr->unk1100[2]); + CloseFile(sWorldMapPtr->unk1100[0]); + CloseFile(sWorldMapPtr->unk1100[1]); +} + +static void UpdateMonSpritePosition(void) +{ + if (sWorldMapPtr->monSpritePos.x - sWorldMapPtr->bgPos.x < 48) { + sWorldMapPtr->bgPos.x = sWorldMapPtr->monSpritePos.x - 48; + } + else if (sWorldMapPtr->monSpritePos.x - sWorldMapPtr->bgPos.x > 192) { + sWorldMapPtr->bgPos.x = sWorldMapPtr->monSpritePos.x - 192; + } + + if (sWorldMapPtr->monSpritePos.y - sWorldMapPtr->bgPos.y < 48) { + sWorldMapPtr->bgPos.y = sWorldMapPtr->monSpritePos.y - 48; + } + else if (sWorldMapPtr->monSpritePos.y - sWorldMapPtr->bgPos.y > 112) { + sWorldMapPtr->bgPos.y = sWorldMapPtr->monSpritePos.y - 112; + } + + if (sWorldMapPtr->bgPos.x < 0) { + sWorldMapPtr->bgPos.x = 0; + } + if (sWorldMapPtr->bgPos.y < 0) { + sWorldMapPtr->bgPos.y = 0; + } + if (sWorldMapPtr->bgPos.x >= 240) { + sWorldMapPtr->bgPos.x = 240; + } + if (sWorldMapPtr->bgPos.y >= 160) { + sWorldMapPtr->bgPos.y = 160; + } +} + +static void UpdateBg(void) +{ + s32 i, j; + s32 y1 = sWorldMapPtr->bgPos.y >> 3; + s32 y2 = y1; + + for (i = 0; i < 21; i++) { + s32 x1 = sWorldMapPtr->bgPos.x >> 3; + s32 x2 = x1; + + for (j = 0; j < 31; j++) { + x1 &= 0x1F; + y1 &= 0x1F; + + gUnknown_202B038[2][y1][x1] = sWorldMapPtr->unk3114[y2][x2]; + gUnknown_202B038[3][y1][x1] = sWorldMapPtr->unk1114[y2][x2]; + x2++; + x1++; + } + y2++; + y1++; + } + + sub_80098F8(2); + sub_80098F8(3); +} + +static void nullsub_24(void) +{ + +} + +static void FadeFromWorldMap(void) +{ + s32 i; + + ClearWindows(); + sub_80117C4(); + for (i = 0; i < 60; i++) { + sWorldMapPtr->brightness -= 2; + RunFrameActions(); + } +} + +static void ClearWindows(void) +{ + ShowWindows(NULL, TRUE, TRUE); +} + +static void RunFrameActions(void) +{ + SetBG2RegOffsets(sWorldMapPtr->bgPos.x, sWorldMapPtr->bgPos.y); + SetBG3RegOffsets(sWorldMapPtr->bgPos.x, sWorldMapPtr->bgPos.y); + AnimateSprites(TRUE); + FadeScreen(); + 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 FadeScreen(void) +{ + bool8 ret = FALSE; + + if (sWorldMapPtr->brightness < 31) { + s32 i; + RGB *color = (void *) sWorldMapPtr->unk1100[0]->data; + + if (++sWorldMapPtr->brightness >= 31) { + sWorldMapPtr->brightness = 31; + } + + for (i = 0; i < 224; color++, i++) { + SetBGPaletteBufferColorRGB(i, color, sWorldMapPtr->brightness, NULL); + } + + color = (void *) sWorldMapPtr->unk1100[1]->data; + for (i = 0; i < 240; color++, i++) { + SetBGPaletteBufferColorRGB(i + 256, color, sWorldMapPtr->brightness, NULL); + } + + ret = TRUE; + } + + return ret; +} + +static void AnimateSprites(bool8 a0) +{ + s32 i; + unkStruct_2039DB0 var_2C; + DungeonPos pos; + + sub_8004E8C(&var_2C); + var_2C.unk4 = 0xF3FF; + var_2C.unkA = 0x800; + pos = sWorldMapPtr->bgPos; + RunAxAnimationFrame(&sWorldMapPtr->monAxSprite); + if (a0) { + DoAxFrame_800558C(&sWorldMapPtr->monAxSprite, sWorldMapPtr->monSpritePos.x - pos.x, sWorldMapPtr->monSpritePos.y - pos.y, 3, sWorldMapPtr->unk52D4, &var_2C); + } + + for (i = 0; i < 64; i++) { + struct UnkStruct_Sub1 *structPtr = &sWorldMapPtr->unk0[i]; + if (structPtr->unk0) { + axdata *axPtr = &structPtr->unk8; + + RunAxAnimationFrame(axPtr); + if (a0) { + DoAxFrame_800558C(axPtr, structPtr->unk4.x - pos.x, structPtr->unk4.y - pos.y, 1, 0, &var_2C); + } + } + } +} + +static void PrintDungeonName(DungeonLocation *dungLocation) +{ + const s32 x = 12; + Windows windows = { + .id = { + [0] = { + .type = WINDOW_TYPE_NORMAL, + .pos = {x, 2}, + .width = 16, + .height = 2, + .unk10 = 2, + }, + [1] = {.type = WINDOW_TYPE_NORMAL}, + [2] = {.type = WINDOW_TYPE_NORMAL}, + [3] = {.type = WINDOW_TYPE_NORMAL}, + } + }; + + if (sWorldMapPtr->monSpritePos.y - sWorldMapPtr->bgPos.y <= 80) { + windows.id[0].pos.y = 17; + } + else { + windows.id[0].pos.y = 1; + } + + ShowWindows(&windows, TRUE, TRUE); + sub_80073B8(0); + CopyDungeonName1toBuffer(gFormatBuffer_Monsters[0], dungLocation); + PrintFormattedStringOnWindow(12, 2, _("{CENTER_ALIGN}{POKEMON_0}"), 0, '\0'); + sub_80073E0(0); +} + +static void PrintDialogueMessage(const u8 *text) +{ + s32 i, a; + CreateMenuDialogueBoxAndPortrait(text, NULL, 0, NULL, NULL, 3, 0, NULL, 0x301); + do { + DrawDialogueBoxString(); + RunFrameActions(); + } while (sub_80144A4(&a) != 0); + + for (i = 0; i < 10; i++) { + RunFrameActions(); + } +} + +static bool8 ShowYesNoWindow(u8 *str) +{ + s32 r2, i; + MenuInputStruct menuInput; + + r2 = 0; + for (i = 0; str[i] != '\0'; i++) { + if (str[i] == '\n') { + r2 += 12; + } + } + r2 += 11; + r2 /= 8; + + sWorldMapWindows.id[0].pos.y = 19 - r2; + sWorldMapWindows.id[0].unk10 = r2; + sWorldMapWindows.id[0].height = r2; + sWorldMapWindows.id[1].pos.y = 14 - r2; + ShowWindows(&sWorldMapWindows, TRUE, TRUE); + sub_80073B8(0); + PrintFormattedStringOnWindow(4, 0, str, 0, '\0'); + sub_80073E0(0); + sub_80073B8(1); + PrintFormattedStringOnWindow(10, 0, "Yes", 1, '\0'); + PrintFormattedStringOnWindow(10, 12, "No", 1, '\0'); + sub_80073E0(1); + + menuInput.menuIndex = 1; + menuInput.unk1A = 2; + menuInput.unk1C = 2; + menuInput.unk1E = 0; + menuInput.unk20 = 0; + menuInput.unk4 = 0; + menuInput.firstEntryY = 0; + menuInput.unk0 = 1; + menuInput.unkC = 0; + menuInput.unkE = 0; + menuInput.unk14.x = 0; + menuInput.unk14.y = 0; + menuInput.unk8.x = 8; + menuInput.unk8.y = 8; + sub_80137B0(&menuInput, 24); + sub_801317C(&menuInput.unk28); + while (1) { + AddMenuCursorSprite(&menuInput); + RunFrameActions(); + if (gRealInputs.repeated & DPAD_DOWN) { + MoveMenuCursorDown(&menuInput); + PlayCursorUpDownSoundEffect(); + } + if (gRealInputs.repeated & DPAD_UP) { + MoveMenuCursorUp(&menuInput); + PlayCursorUpDownSoundEffect(); + } + if ((gRealInputs.pressed & A_BUTTON) || menuInput.unk28.a_button) { + PlayAcceptSoundEffect(); + break; + } + } + + if (menuInput.menuIndex == 0) { + return TRUE; + } + else { + return FALSE; + } +} + +static UNUSED void GetDungeonCoords(u8 id, DungeonPos *pos) +{ + pos->x = gDungeonCoordinates[id].x; + pos->y = gDungeonCoordinates[id].y; +} + diff --git a/sym_ewram.txt b/sym_ewram.txt index 0069640b5..4ea6cbbfe 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,77 +1,16 @@ .include "src/m4a.o" + .include "src/code_2.o" + .space 0x4 -gTitleBrightness: /* 2000A80 (GameLoop) */ - .space 0x8 - -gScriptVarBuffer: /* 2000A88 (ThoroughlyResetScriptVars - RestoreGlobalScriptVars) */ - .space 0x400 - + .include "src/event_flag.o" .include "src/memory.o" .include "src/bg_palette_buffer.o" .include "src/input.o" .include "src/sprite.o" - -gUnknown_2026E38: /* 2026E38 (sub_80057E8 - VBlank_CB) */ - .space 0x4 -gUnknown_2026E3C: /* 2026E3C (sub_80057E8 - VBlank_CB) */ - .space 0x4 -gUnknown_2026E40: /* 2026E40 (sub_8005838) */ - .space 0x4 -gUnknown_2026E44: /* 2026E44 (sub_8005838) */ - .space 0x4 -gUnknown_2026E48: /* 2026E48 (sub_8005838) */ - .space 0x4 -gUnknown_2026E4C: /* 2026E4C (sub_80057E8 - sub_8005838) */ - .space 0x2 -gUnknown_2026E4E: /* 2026E4E (GameLoop - GroundWeather_Select) */ - .space 0x2 -gUnknown_2026E50: /* 2026E50 (sub_80057E8 - sub_80060EC) */ - .space 0x4 -gUnknown_2026E54: /* 2026E54 (sub_80057E8 - sub_80060EC) */ - .space 0x4 -gUnknown_2026E58: /* 2026E58 (sub_80057E8 - sub_80060EC) */ - .space 0x8 -gUnknown_2026E60: /* 2026E60 (sub_8005838) */ - .space 0x288 -gUnknown_20270E8: /* 20270E8 (sub_8005838) */ - .space 0x288 - + .include "src/code_800558C.o" .include "src/text.o" - - -gFontPalette: /* 202D038 (sub_80097B0 - sub_8052FB8) */ - .space 0x4 - -gUnknown_202D03C: /* 202D03C (sub_8040238) */ - .space 0x1C -gUnknown_202D058: /* 202D058 (sub_803E250 - sub_803EA10) */ - .space 0x10 -gUnknown_202D068: /* 202D068 (sub_803FB74) */ - .space 0x4 -gUnknown_202D06C: /* 202D06C (sub_803F38C) */ - .space 0xC - -gFontPaletteAlt: /* 202D078 (sub_8099690) */ - .space 0x20 - -gUnknown_202D098: /* 202D098 (xxx_format_string) */ - .space 0x120 - -gUnknown_202D1B8: /* 202D1B8 (sub_8099690) */ - .space 0x40 -gUnknown_202D1F8: /* 202D1F8 (sub_8099690) */ - .space 0x40 - -gUnknown_202D238: /* 202D238 (sub_80098A0 - sub_8009908) */ - .space 0x4 -gUnknown_202D23C: /* 202D23C (sub_80098A0 - sub_8009908) */ - .space 0x4 -gUnknown_202D240: /* 202D240 (sub_80098BC - sub_8009908) */ - .space 0x60 -gUnknown_202D2A0: /* 202D2A0 (sub_8009A1C - sub_8009BE4) */ - .space 0x4 - + .include "src/code_8009804.o" .include "src/file_system.o" .include "src/decompress.o" .include "src/main.o" @@ -116,11 +55,7 @@ gUnknown_202DBB8: /* 202DBB8 (sub_800D6AC / data_80B9BB8) */ gUnknown_202DCF8: /* 202DCF8 (sub_80001E8 - sub_800D9B8) */ .space 0x120 -gUnknown_202DE18: /* 202DE18 (sub_800F990 - sub_8010014) */ - .space 0x1 -gUnknown_202DE19: /* 202DE19 (sub_800F990 - sub_8010014) */ - .space 0x3 - + .include "src/friend_areas_map.o" .include "src/code_80118A4.o" .space 0x2 @@ -128,15 +63,7 @@ gUnknown_202DE19: /* 202DE19 (sub_800F990 - sub_8010014) */ .space 4 .include "src/string_format.o" .space 4 - - -gUnknown_202EC38: /* 202EC38 (sub_8037B28) */ - .space 0x8 -gUnknown_202EC40: /* 202EC40 (sub_8037A48 - sub_8037C10) */ - .space 0x8 -gUnknown_202EC48: /* 202EC48 (sub_8037D64) */ - .space 0x4 - + .include "src/other_menus2.o" .include "src/rescue_password_menu.o" .space 0x2 @@ -248,13 +175,7 @@ gUnknown_202F2FC: /* 202F2FC (sub_8065FB4 - sub_8066358) */ gUnknown_202F300: /* 202F300 (sub_8066434) */ .space 0x8 -gUnknown_202F308: /* 202F308 (sub_8067A80 - sub_806806C) */ - .space 0x4 -gUnknown_202F30C: /* 202F30C (sub_8067A80 - sub_8067A80) */ - .space 0x4 -gUnknown_202F310: /* 202F310 (sub_8067A80 - sub_8068310) */ - .space 0x4 - + .include "src/code_8066D04.o" .include "src/dungeon_movement.o" .include "src/code_80718D8.o" @@ -264,14 +185,10 @@ gUnknown_202F32D: /* 202F32D (sub_8072CF4 - UseAttack) */ .space 0x3 .include "src/dungeon_ai_items.o" - -gUnknown_202F378: /* 202F378 (sub_8074FB0 - UseAttack) */ - .space 0x8 - + .include "src/code_8073CF0.o" + .space 0x4 .include "src/dungeon_ai_attack.o" - -gUnknown_202F3D0: /* 202F3D0 (sub_80867F4 - sub_8086854) */ - .space 0x8 + .include "src/code_80869E4.o" gUnknown_202F3D8: /* 202F3D8 (sub_8085B4C - sub_8085B80) */ .space 0x8 @@ -295,12 +212,8 @@ gUnknown_202F3D8: /* 202F3D8 (sub_8085B4C - sub_8085B80) */ .include "src/exclusive_pokemon.o" .space 0x4 .include "src/ground_main.o" - .space 0x2 -gUnknown_20398C8: /* 20398C8 (sub_80991E0 - sub_809927C) */ - .space 0x88 /* This should be a "struct WonderMailStruct_203B2C0_sub", at least I think so due to its size. Kermalis */ -gUnknown_2039950: /* 2039950 (xxx_script_related_8098468 - sub_809927C) */ - .space 0x8 + .space 0x7 gUnknown_2039958: /* 2039958 (sub_809977C - sub_8099BE4) */ .space 0x10 diff --git a/sym_ewram_init.txt b/sym_ewram_init.txt index 140588feb..39685f199 100644 --- a/sym_ewram_init.txt +++ b/sym_ewram_init.txt @@ -15,7 +15,8 @@ .include "src/cpu.o" .include "src/code_800DAC0.o" .include "src/code_800ED38.o" -.include "src/code_8010EF0.o" +.include "src/friend_areas_map.o" +.include "src/world_map.o" .include "src/debug.o" .include "src/save.o" .include "src/save_read.o" diff --git a/sym_iwram.txt b/sym_iwram.txt index 5c61b39d2..908f47ef4 100644 --- a/sym_iwram.txt +++ b/sym_iwram.txt @@ -6,13 +6,7 @@ gUnknown_3000400: /* 3000400 */ gUnknown_3000C00: /* 3000C00 */ .space 0x294 -gUnknown_3000E94: /* 3000E94 */ - .space 0x144 - +.include "src/text.o" .include "src/music.o" - -gUnknown_3001018: /* 3001018 */ - .space 0x180 - +.include "src/code_803E724.o" .include "src/code_8094D28.o" -