From 346bcc681f3a95bd6a491205551c0bd8a5d8687b Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 15 May 2023 10:03:12 -0700 Subject: [PATCH 01/21] more decomp --- asm/wonder_mail_3_mid.s | 275 -------------------- asm/wonder_mail_802C860.s | 519 +------------------------------------ include/wonder_mail_2_1.h | 38 +++ include/wonder_mail_3.h | 6 +- src/adventure_log.c | 2 +- src/exclusive_pokemon.c | 2 +- src/exclusive_pokemon_1.c | 52 ++-- src/flash.c | 2 +- src/friend_rescue.c | 2 +- src/load_screen.c | 8 +- src/main_menu.c | 8 +- src/pelipper_board.c | 1 + src/post_office_guide.c | 4 +- src/rescue_password_menu.c | 49 ++-- src/save.c | 6 +- src/trade_items_menu.c | 12 +- src/wonder_mail_2_1.c | 43 +-- src/wonder_mail_3.c | 293 ++++++++++++++++++++- src/wonder_mail_3_mid.c | 136 +++++++++- sym_ewram.txt | 7 +- sym_ewram2.txt | 69 +---- 21 files changed, 552 insertions(+), 982 deletions(-) create mode 100644 include/wonder_mail_2_1.h diff --git a/asm/wonder_mail_3_mid.s b/asm/wonder_mail_3_mid.s index 6add33aa8..bccbd96a8 100644 --- a/asm/wonder_mail_3_mid.s +++ b/asm/wonder_mail_3_mid.s @@ -5,281 +5,6 @@ .text - thumb_func_start sub_802F9C0 -sub_802F9C0: - push {r4,r5,lr} - ldr r4, _0802FA44 - ldr r0, [r4] - movs r1, 0xAC - lsls r1, 1 - adds r0, r1 - movs r2, 0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r4] - ldr r3, _0802FA48 - adds r0, r3 - strb r2, [r0] - ldr r0, [r4] - adds r3, 0x1 - adds r1, r0, r3 - movs r0, 0x8 - strb r0, [r1] - ldr r0, [r4] - ldr r1, _0802FA4C - adds r0, r1 - strb r2, [r0] - ldr r0, [r4] - adds r0, 0xD6 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0xC - bl sub_80095E4 - adds r0, 0x2 - lsls r0, 16 - ldr r3, [r4] - adds r5, r3, 0 - adds r5, 0xF0 - ldr r2, [r5] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, r3, r1 - movs r2, 0x83 - lsls r2, 1 - adds r1, r2 - asrs r2, r0, 16 - lsrs r0, 16 - strh r0, [r1] - ldr r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r3, r0 - adds r2, 0x2 - movs r0, 0x84 - lsls r0, 1 - adds r3, r0 - strh r2, [r3] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0xF8 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802FA44: .4byte gUnknown_203B314 -_0802FA48: .4byte 0x00000159 -_0802FA4C: .4byte 0x0000015b - thumb_func_end sub_802F9C0 - - thumb_func_start sub_802FA50 -sub_802FA50: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r4, _0802FB1C - ldr r0, [r4] - adds r0, 0xF0 - ldr r0, [r0] - bl sub_8008C54 - ldr r0, [r4] - adds r0, 0xF0 - ldr r0, [r0] - bl sub_80073B8 - ldr r2, _0802FB20 - ldr r0, [r4] - adds r0, 0xF0 - ldr r3, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xA - movs r1, 0 - bl xxx_call_draw_string - ldr r3, [r4] - movs r1, 0xAD - lsls r1, 1 - adds r0, r3, r1 - ldrb r0, [r0] - lsls r0, 3 - adds r0, 0x4 - adds r1, r3, 0 - adds r1, 0xDA - movs r5, 0 - ldrsh r2, [r1, r5] - adds r2, 0x1 - movs r1, 0x7 - str r1, [sp] - adds r1, r3, 0 - adds r1, 0xF0 - ldr r1, [r1] - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x2 - bl sub_8012BC4 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xB8 - ldrb r0, [r0] - cmp r0, 0 - beq _0802FB78 - movs r6, 0 - adds r0, r1, 0 - adds r0, 0xD6 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r6, r0 - blt _0802FACA - b _0802FBD6 -_0802FACA: - mov r8, r4 -_0802FACC: - mov r2, r8 - ldr r0, [r2] - adds r0, 0xBC - adds r1, r6, 0 - bl sub_8013800 - adds r5, r0, 0 - mov r3, r8 - ldr r2, [r3] - adds r0, r2, 0 - adds r0, 0xDA - movs r3, 0 - ldrsh r1, [r0, r3] - subs r0, 0x2 - movs r3, 0 - ldrsh r0, [r0, r3] - muls r0, r1 - adds r1, r0, r6 - lsls r0, r1, 1 - adds r0, r2, r0 - movs r3, 0 - ldrsh r7, [r0, r3] - adds r0, r2, 0 - adds r0, 0x5C - adds r0, r1 - ldrb r4, [r0] - cmp r4, 0 - beq _0802FB28 - adds r0, r2, 0 - adds r0, 0xF0 - ldr r3, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0xA - adds r1, r5, 0 - ldr r2, _0802FB24 - bl xxx_call_draw_string - b _0802FB46 - .align 2, 0 -_0802FB1C: .4byte gUnknown_203B314 -_0802FB20: .4byte gUnknown_80E0744 -_0802FB24: .4byte gUnknown_80E0750 -_0802FB28: - adds r0, r2, 0 - adds r0, 0x8A - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0802FB46 - adds r0, r2, 0 - adds r0, 0xF0 - ldr r3, [r0] - str r4, [sp] - movs r0, 0xA - adds r1, r5, 0 - ldr r2, _0802FB74 - bl xxx_call_draw_string -_0802FB46: - adds r0, r7, 0 - bl sub_80974A0 - adds r2, r0, 0 - mov r1, r8 - ldr r0, [r1] - adds r0, 0xF0 - ldr r3, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x18 - adds r1, r5, 0 - bl xxx_call_draw_string - adds r6, 0x1 - mov r2, r8 - ldr r0, [r2] - adds r0, 0xD6 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r6, r0 - blt _0802FACC - b _0802FBD6 - .align 2, 0 -_0802FB74: .4byte gUnknown_80E0754 -_0802FB78: - movs r6, 0 - adds r0, r1, 0 - adds r0, 0xD6 - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r6, r0 - bge _0802FBD6 - adds r5, r4, 0 -_0802FB88: - ldr r0, [r5] - adds r0, 0xBC - adds r1, r6, 0 - bl sub_8013800 - adds r4, r0, 0 - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0xDA - movs r3, 0 - ldrsh r2, [r0, r3] - subs r0, 0x2 - movs r3, 0 - ldrsh r0, [r0, r3] - muls r0, r2 - adds r0, r6 - lsls r0, 1 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - bl sub_80974A0 - adds r2, r0, 0 - ldr r0, [r5] - adds r0, 0xF0 - ldr r3, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - adds r1, r4, 0 - bl xxx_call_draw_string - adds r6, 0x1 - ldr r0, [r5] - adds r0, 0xD6 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r6, r0 - blt _0802FB88 -_0802FBD6: - ldr r0, _0802FBF0 - ldr r0, [r0] - adds r0, 0xF0 - ldr r0, [r0] - bl sub_80073E0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802FBF0: .4byte gUnknown_203B314 - thumb_func_end sub_802FA50 - thumb_func_start sub_802FBF4 sub_802FBF4: push {r4-r7,lr} diff --git a/asm/wonder_mail_802C860.s b/asm/wonder_mail_802C860.s index c4f3dd9ec..c571c3491 100644 --- a/asm/wonder_mail_802C860.s +++ b/asm/wonder_mail_802C860.s @@ -144,521 +144,4 @@ _0802CBA4: .4byte gUnknown_80D494C _0802CBA8: .4byte gUnknown_80D4970 thumb_func_end sub_802CAA4 - thumb_func_start sub_802CBAC -sub_802CBAC: - ldr r0, _0802CBF4 - ldr r0, [r0] - mov r12, r0 - movs r3, 0 - movs r1, 0xA6 - lsls r1, 1 - add r1, r12 - ldr r0, _0802CBF8 - ldr r0, [r0] - str r0, [r1] - movs r1, 0xA8 - lsls r1, 1 - add r1, r12 - movs r0, 0x5 - str r0, [r1] - movs r2, 0x1 - movs r1, 0xAA - lsls r1, 1 - add r1, r12 - ldr r0, _0802CBFC - ldr r0, [r0] - str r0, [r1] - movs r1, 0xAC - lsls r1, 1 - add r1, r12 - movs r0, 0x6 - str r0, [r1] - movs r0, 0xAE - lsls r0, 1 - add r0, r12 - str r3, [r0] - movs r0, 0xB0 - lsls r0, 1 - add r0, r12 - str r2, [r0] - bx lr - .align 2, 0 -_0802CBF4: .4byte gUnknown_203B2F0 -_0802CBF8: .4byte gUnknown_80D4920 -_0802CBFC: .4byte gUnknown_80D4928 - thumb_func_end sub_802CBAC - - thumb_func_start sub_802CC00 -sub_802CC00: - push {lr} - movs r0, 0x1 - bl sub_802C598 - cmp r0, 0x4 - bhi _0802CC6A - lsls r0, 2 - ldr r1, _0802CC18 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802CC18: .4byte _0802CC1C - .align 2, 0 -_0802CC1C: - .4byte _0802CC6A - .4byte _0802CC6A - .4byte _0802CC60 - .4byte _0802CC30 - .4byte _0802CC48 -_0802CC30: - bl GetPelipperBoardSlotIndex - ldr r1, _0802CC44 - ldr r1, [r1] - strb r0, [r1, 0xC] - movs r0, 0x2 - bl SetJobListState - b _0802CC6A - .align 2, 0 -_0802CC44: .4byte gUnknown_203B2F0 -_0802CC48: - bl GetPelipperBoardSlotIndex - ldr r1, _0802CC5C - ldr r1, [r1] - strb r0, [r1, 0xC] - movs r0, 0x4 - bl SetJobListState - b _0802CC6A - .align 2, 0 -_0802CC5C: .4byte gUnknown_203B2F0 -_0802CC60: - bl sub_802C688 - movs r0, 0x5 - bl SetJobListState -_0802CC6A: - pop {r0} - bx r0 - thumb_func_end sub_802CC00 - - thumb_func_start sub_802CC70 -sub_802CC70: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_802C598 - ldr r4, _0802CCB4 - ldr r0, [r4] - adds r0, 0x6C - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _0802CCA0 - ldr r0, [r4] - adds r0, 0x6C - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _0802CCA0 - ldr r0, [r4] - str r1, [r0, 0x68] -_0802CCA0: - ldr r0, [sp] - subs r0, 0x1 - cmp r0, 0x6 - bhi _0802CD2E - lsls r0, 2 - ldr r1, _0802CCB8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802CCB4: .4byte gUnknown_203B2F0 -_0802CCB8: .4byte _0802CCBC - .align 2, 0 -_0802CCBC: - .4byte _0802CD28 - .4byte _0802CCD8 - .4byte _0802CCF4 - .4byte _0802CD18 - .4byte _0802CD2E - .4byte _0802CD2E - .4byte _0802CD20 -_0802CCD8: - ldr r0, _0802CCEC - bl PlaySound - ldr r0, _0802CCF0 - ldr r0, [r0] - ldrb r0, [r0, 0xC] - bl GetJobSlotInfo - movs r1, 0x6 - b _0802CD06 - .align 2, 0 -_0802CCEC: .4byte 0x00000133 -_0802CCF0: .4byte gUnknown_203B2F0 -_0802CCF4: - ldr r0, _0802CD10 - bl PlaySound - ldr r0, _0802CD14 - ldr r0, [r0] - ldrb r0, [r0, 0xC] - bl GetJobSlotInfo - movs r1, 0x5 -_0802CD06: - strb r1, [r0] - movs r0, 0x1 - bl SetJobListState - b _0802CD2E - .align 2, 0 -_0802CD10: .4byte 0x00000133 -_0802CD14: .4byte gUnknown_203B2F0 -_0802CD18: - movs r0, 0x3 - bl SetJobListState - b _0802CD2E -_0802CD20: - movs r0, 0x4 - bl SetJobListState - b _0802CD2E -_0802CD28: - movs r0, 0x1 - bl SetJobListState -_0802CD2E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_802CC70 - - thumb_func_start sub_802CD38 -sub_802CD38: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_802C598 - ldr r4, _0802CD78 - ldr r0, [r4] - adds r0, 0x6C - bl sub_8012FD8 - ldr r0, [r4] - adds r0, 0xBC - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _0802CD66 - ldr r0, [r4] - adds r0, 0xBC - mov r1, sp - bl sub_8013114 -_0802CD66: - ldr r0, [sp] - cmp r0, 0x5 - beq _0802CD88 - cmp r0, 0x5 - bgt _0802CD7C - cmp r0, 0x1 - beq _0802CD80 - b _0802CDB0 - .align 2, 0 -_0802CD78: .4byte gUnknown_203B2F0 -_0802CD7C: - cmp r0, 0x6 - bne _0802CDB0 -_0802CD80: - movs r0, 0x1 - bl SetJobListState - b _0802CDB0 -_0802CD88: - ldr r0, [r4] - ldrb r0, [r0, 0xC] - bl ResetJobSlot - bl sub_8096C80 - bl HasNoAcceptedJobs - lsls r0, 24 - cmp r0, 0 - beq _0802CDAA - bl sub_802C688 - movs r0, 0x5 - bl SetJobListState - b _0802CDB0 -_0802CDAA: - movs r0, 0x1 - bl SetJobListState -_0802CDB0: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_802CD38 - - thumb_func_start sub_802CDB8 -sub_802CDB8: - push {lr} - bl sub_802DEE0 - cmp r0, 0x1 - bls _0802CDD0 - cmp r0, 0x3 - bhi _0802CDD0 - bl sub_802DF24 - movs r0, 0x1 - bl SetJobListState -_0802CDD0: - pop {r0} - bx r0 - thumb_func_end sub_802CDB8 - - thumb_func_start sub_802CDD4 -sub_802CDD4: - push {r4-r6,lr} - adds r5, r0, 0 - ldr r4, _0802CE54 - ldr r0, [r4] - cmp r0, 0 - bne _0802CDEA - movs r0, 0xA0 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] -_0802CDEA: - ldr r0, [r4] - str r5, [r0, 0x34] - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 3 - adds r1, 0x3C - adds r1, r0, r1 - str r1, [r0, 0x38] - adds r0, 0x3C - bl sub_8006518 - ldr r1, [r4] - ldr r2, [r1, 0x34] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, 0x3C - ldr r0, _0802CE58 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r1, [r4] - ldr r0, [r1, 0x38] - adds r1, 0x9C - str r1, [r0, 0x14] - movs r1, 0x4 - bl sub_8012D34 - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x3C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - movs r1, 0x5 - movs r2, 0x4 - adds r3, r5, 0 - bl sub_8013848 - bl sub_802CF5C - bl sub_802CFD0 - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0802CE54: .4byte gUnknown_203B2F4 -_0802CE58: .4byte gUnknown_80DFDA4 - thumb_func_end sub_802CDD4 - - thumb_func_start sub_802CE5C -sub_802CE5C: - push {r4,lr} - lsls r0, 24 - cmp r0, 0 - bne _0802CE74 - ldr r0, _0802CE70 - ldr r0, [r0] - bl sub_8013660 - movs r0, 0 - b _0802CEB4 - .align 2, 0 -_0802CE70: .4byte gUnknown_203B2F4 -_0802CE74: - ldr r4, _0802CE90 - ldr r0, [r4] - bl GetKeyPress - cmp r0, 0x1 - beq _0802CE94 - cmp r0, 0x2 - bne _0802CE98 - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0802CEB4 - .align 2, 0 -_0802CE90: .4byte gUnknown_203B2F4 -_0802CE94: - movs r0, 0x3 - b _0802CEB4 -_0802CE98: - ldr r0, [r4] - movs r1, 0x1 - bl sub_80138B8 - lsls r0, 24 - cmp r0, 0 - bne _0802CEAA - movs r0, 0 - b _0802CEB4 -_0802CEAA: - bl sub_802CF5C - bl sub_802CFD0 - movs r0, 0x1 -_0802CEB4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_802CE5C - - thumb_func_start sub_802CEBC -sub_802CEBC: - ldr r0, _0802CED4 - ldr r1, [r0] - movs r0, 0x1E - ldrsh r2, [r1, r0] - movs r3, 0x1C - ldrsh r0, [r1, r3] - muls r0, r2 - ldrb r1, [r1, 0x18] - adds r0, r1 - lsls r0, 24 - lsrs r0, 24 - bx lr - .align 2, 0 -_0802CED4: .4byte gUnknown_203B2F4 - thumb_func_end sub_802CEBC - - thumb_func_start sub_802CED8 -sub_802CED8: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ResetUnusedInputStruct - ldr r5, _0802CF10 - ldr r0, [r5] - adds r0, 0x3C - movs r1, 0 - movs r2, 0 - bl sub_800641C - ldr r0, [r5] - bl sub_8013984 - bl sub_802CF5C - bl sub_802CFD0 - cmp r4, 0 - beq _0802CF0A - ldr r0, [r5] - bl AddMenuCursorSprite -_0802CF0A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802CF10: .4byte gUnknown_203B2F4 - thumb_func_end sub_802CED8 - - thumb_func_start sub_802CF14 -sub_802CF14: - push {r4,r5,lr} - ldr r4, _0802CF54 - ldr r2, [r4] - cmp r2, 0 - beq _0802CF4E - ldr r0, [r2, 0x34] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x3C - ldr r0, _0802CF58 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x3C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0802CF4E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802CF54: .4byte gUnknown_203B2F4 -_0802CF58: .4byte gUnknown_80DFD8C - thumb_func_end sub_802CF14 - - thumb_func_start sub_802CF5C -sub_802CF5C: - push {r4,lr} - ldr r4, _0802CFCC - ldr r0, [r4] - ldrh r1, [r0, 0x20] - adds r0, 0x9C - movs r2, 0 - strb r1, [r0] - ldr r0, [r4] - ldrh r1, [r0, 0x1E] - adds r0, 0x9D - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x9E - movs r1, 0xC - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x9F - strb r2, [r0] - ldr r0, [r4] - movs r1, 0x1A - ldrsh r0, [r0, r1] - movs r1, 0x18 - bl sub_8009614 - adds r0, 0x2 - lsls r0, 16 - ldr r2, [r4] - ldr r3, [r2, 0x34] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x4A - asrs r3, r0, 16 - lsrs r0, 16 - strh r0, [r1] - ldr r1, [r2, 0x34] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r2, r0 - adds r3, 0x2 - adds r2, 0x4C - strh r3, [r2] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x3C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802CFCC: .4byte gUnknown_203B2F4 - thumb_func_end sub_802CF5C - - .align 2,0 + .align 2,0 diff --git a/include/wonder_mail_2_1.h b/include/wonder_mail_2_1.h new file mode 100644 index 000000000..d64cc4607 --- /dev/null +++ b/include/wonder_mail_2_1.h @@ -0,0 +1,38 @@ +struct unkStruct_203B2E8 +{ + // size: 0xA8 + u8 pelipperBoardSlots[MAX_ACCEPTED_JOBS]; + u32 unk8; + u8 fillC[0x20 - 0xC]; + s16 unk20; + s16 unk22; + s16 unk24; + s16 unk26; + u16 unk28; + u16 acceptedJobs; + u16 unk2C; + u8 fill2E[0x3C - 0x2E]; + u32 unk3C; + struct UnkTextStruct2 *unk40; + struct UnkTextStruct2 unk44[4]; + u8 unkA4[4]; +}; + +struct unkStruct_203B2F0 +{ + // size: 0x1FC + u32 unk0; + u32 state; + u8 unk8[0xC - 0x8]; + u8 unkC; + u8 fillD[0x10 - 0xD]; + u32 unk10; + u8 fill14[0x68 - 0x14]; + u32 menuAction; + struct MenuStruct unk6C; + struct MenuStruct unkBC; + struct MenuItem unk10C[8]; + struct MenuItem unk14C[8]; + u8 fill18C[0x19C - 0x18C]; + struct UnkTextStruct2 unk19C[4]; +}; diff --git a/include/wonder_mail_3.h b/include/wonder_mail_3.h index 1be936004..a4761870d 100644 --- a/include/wonder_mail_3.h +++ b/include/wonder_mail_3.h @@ -1,13 +1,15 @@ #include "menu.h" struct unkStruct_203B2F4 { - u8 fill0[0x1A]; + u8 fill0[0x18]; + u8 unk18; + u8 unk19; s16 unk1A; s16 unk1C; s16 unk1E; u8 fill20[0x34 - 0x20]; u32 unk34; - u32 unk38; + struct UnkTextStruct2 *unk38; struct UnkTextStruct2 unk3C[4]; u8 unk9C[4]; }; diff --git a/src/adventure_log.c b/src/adventure_log.c index 05e5dabd9..4aad16264 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -20,7 +20,7 @@ struct AdventureLog u8 unk9C[4]; }; -extern struct AdventureLog *gAdventureLog; +EWRAM_DATA_2 struct AdventureLog *gAdventureLog = {0}; const struct UnkTextStruct2 gUnknown_80E1FF0 = { 0x00, 0x00, 0x00, 0x00, diff --git a/src/exclusive_pokemon.c b/src/exclusive_pokemon.c index ae97d7595..c5e9a09a7 100644 --- a/src/exclusive_pokemon.c +++ b/src/exclusive_pokemon.c @@ -26,7 +26,7 @@ const u8 filler_ex1[8] = 'p', 'k', 's', 'd', 'i', 'r', '0', 0 }; -extern struct ExclusivePokemonData *gUnknown_203B498; +EWRAM_DATA_2 struct ExclusivePokemonData *gUnknown_203B498 = {0}; EWRAM_DATA struct ExclusivePokemonData gExclusivePokemonInfo = {0}; diff --git a/src/exclusive_pokemon_1.c b/src/exclusive_pokemon_1.c index 215002906..44a6ab04f 100644 --- a/src/exclusive_pokemon_1.c +++ b/src/exclusive_pokemon_1.c @@ -15,36 +15,36 @@ u8 sub_80981A0(s32); bool8 IsExclusivePokemonUnlocked(s16 pokeID) { - s32 iVar2; + s32 index; s32 pokeID_s32; pokeID_s32 = pokeID; - for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++) + for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++) { - if(gExclusivePokemon[iVar2].poke_id == pokeID_s32) - return gUnknown_203B498->Exclusives[iVar2]; + if(gExclusivePokemon[index].poke_id == pokeID_s32) + return gUnknown_203B498->Exclusives[index]; } return TRUE; } void UnlockExclusivePokemon(s16 pokeID) { - s32 iVar2; + s32 index; s32 pokeID_s32; pokeID_s32 = pokeID; - for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++) + for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++) { - if(gExclusivePokemon[iVar2].poke_id == pokeID_s32) - gUnknown_203B498->Exclusives[iVar2] = TRUE; + if(gExclusivePokemon[index].poke_id == pokeID_s32) + gUnknown_203B498->Exclusives[index] = TRUE; } } void WriteExclusivePokemon(struct unkStruct_8094924 *r0) { - s32 iVar2; + s32 index; u8 *puVar2; u8 stack_0; @@ -58,24 +58,24 @@ void WriteExclusivePokemon(struct unkStruct_8094924 *r0) SaveIntegerBits(r0, gUnknown_203B498, 1); - for(iVar2 = 0; iVar2 < 424; iVar2++) + for(index = 0; index < 424; index++) { - stack_0 = sub_8098134(iVar2); + stack_0 = sub_8098134(index); SaveIntegerBits(r0, &stack_0, 1); } - for(iVar2 = 0; iVar2 < 64; iVar2++) + for(index = 0; index < 64; index++) { - stack_1 = sub_8098100(iVar2); + stack_1 = sub_8098100(index); SaveIntegerBits(r0, &stack_1, 1); } - for(iVar2 = 0; iVar2 < 31; iVar2++) + for(index = 0; index < 31; index++) { - stack_2 = sub_80981A0(iVar2); + stack_2 = sub_80981A0(index); SaveIntegerBits(r0, &stack_2, 1); } - for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++) + for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++) { - if(gUnknown_203B498->Exclusives[iVar2]) + if(gUnknown_203B498->Exclusives[index]) puVar2 = &neg_1; else puVar2 = &zero; @@ -85,7 +85,7 @@ void WriteExclusivePokemon(struct unkStruct_8094924 *r0) void ReadExclusivePokemon(struct unkStruct_8094924 *r0) { - s32 iVar2; + s32 index; u8 stack_0; u8 stack_1; u8 stack_2; @@ -93,31 +93,31 @@ void ReadExclusivePokemon(struct unkStruct_8094924 *r0) memset(gUnknown_203B498, 0, sizeof(struct ExclusivePokemonData)); RestoreIntegerBits(r0, gUnknown_203B498, 1); - for(iVar2 = 0; iVar2 < 424; iVar2++) + for(index = 0; index < 424; index++) { RestoreIntegerBits(r0, &stack_0, 1); if(stack_0) - sub_80980B4(iVar2); + sub_80980B4(index); } - for(iVar2 = 0; iVar2 < 64; iVar2++) + for(index = 0; index < 64; index++) { RestoreIntegerBits(r0, &stack_1, 1); if(stack_1) - sub_8097FA8(iVar2); + sub_8097FA8(index); } - for(iVar2 = 0; iVar2 < 31; iVar2++) + for(index = 0; index < 31; index++) { RestoreIntegerBits(r0, &stack_2, 1); if(stack_2) - sub_8098170(iVar2); + sub_8098170(index); } - for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++) + for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++) { RestoreIntegerBits(r0, &stack_3, 1); do; while(0); // do/while needed for matching - jiang - gUnknown_203B498->Exclusives[iVar2] = 1 & stack_3; + gUnknown_203B498->Exclusives[index] = 1 & stack_3; } sub_8097FF8(); } diff --git a/src/flash.c b/src/flash.c index e7b020565..fcb08e555 100644 --- a/src/flash.c +++ b/src/flash.c @@ -3,7 +3,7 @@ #include "flash.h" #include "memory.h" -u8 gFlashEnabled; +EWRAM_DATA_2 bool8 gFlashEnabled = {0}; extern FlashIntrFunc *GetInterruptHandler(s32); diff --git a/src/friend_rescue.c b/src/friend_rescue.c index 6ba40df08..6854dd463 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -14,7 +14,7 @@ extern u32 sub_802F298(); extern char gUnknown_202E5D8[0x50]; extern char gAvailablePokemonNames[0x50]; -extern struct WonderMailStruct_203B33C *gUnknown_203B33C; +EWRAM_DATA_2 struct WonderMailStruct_203B33C *gUnknown_203B33C = {0}; extern u8 sub_8039880(void); diff --git a/src/load_screen.c b/src/load_screen.c index 7df515718..8f30f7577 100644 --- a/src/load_screen.c +++ b/src/load_screen.c @@ -29,10 +29,10 @@ struct LoadScreen /* 0x258 */ u8 formattedHelperInfo[0x24]; }; -EWRAM_DATA struct LoadScreen *gLoadScreen; -EWRAM_DATA struct MenuItem gUnknown_203B378[2]; -EWRAM_DATA u32 gUnknown_203B388[12]; -EWRAM_DATA u32 gUnknown_203B3B8[12]; +EWRAM_DATA_2 struct LoadScreen *gLoadScreen = {0}; +EWRAM_DATA_2 struct MenuItem gUnknown_203B378[2] = {0}; +EWRAM_DATA_2 u32 gUnknown_203B388[12] = {0}; +EWRAM_DATA_2 u32 gUnknown_203B3B8[12] = {0}; extern struct unkStruct_203B484 *gUnknown_203B484; diff --git a/src/main_menu.c b/src/main_menu.c index b32455768..1e5842db0 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -40,10 +40,10 @@ struct unkStruct_203B34C /* 0x1A4 */ u32 currMenuChoice; }; -EWRAM_DATA struct MainMenu *gMainMenu; -EWRAM_DATA struct unkStruct_203B34C *gUnknown_203B34C; -EWRAM_DATA u32 gUnknown_203B350; -EWRAM_DATA u32 gUnknown_203B354; // unused everywhere else except here.. +EWRAM_DATA_2 struct MainMenu *gMainMenu = {0}; +EWRAM_DATA_2 struct unkStruct_203B34C *gUnknown_203B34C = {0}; +EWRAM_DATA_2 u32 gUnknown_203B350 = {0}; +EWRAM_DATA_2 u32 gUnknown_203B354 = {0}; // unused everywhere else except here.. extern void SetWindowBGColor(void); extern void sub_8099690(u32); diff --git a/src/pelipper_board.c b/src/pelipper_board.c index a1da2381e..3e8878183 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -6,6 +6,7 @@ #include "menu_input.h" #include "pelipper_board.h" +EWRAM_DATA_2 struct unkStruct_203B308 *gPelipperBoard = {0}; extern void SetPelipperBoardState(u32); const struct UnkTextStruct2 gUnknown_80E0330 = diff --git a/src/post_office_guide.c b/src/post_office_guide.c index 3b2f7f154..f15b1c20f 100644 --- a/src/post_office_guide.c +++ b/src/post_office_guide.c @@ -23,7 +23,7 @@ struct PostOfficeHelper u8 unk16; }; -EWRAM_DATA struct PostOfficeHelper *gPostOfficeHelper; +EWRAM_DATA_2 struct PostOfficeHelper *gPostOfficeHelper = {0}; struct unkStruct_203B330 @@ -38,7 +38,7 @@ struct unkStruct_203B330 struct UnkTextStruct2 *unk14; struct UnkTextStruct2 unk18[4]; }; -EWRAM_DATA struct unkStruct_203B330 *gUnknown_203B330; +EWRAM_DATA_2 struct unkStruct_203B330 *gUnknown_203B330 = {0}; extern const char GetHelp_Text[]; diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 75e185188..0c5bb49d0 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -12,14 +12,17 @@ #include "wonder_mail.h" #include "menu_input.h" -extern u8 gRescuePasswordBuffer[]; -extern u32 gUnknown_202EC4C; +#define RESCUE_PASSWORD_SIZE 0x36 + +EWRAM_DATA u32 gUnknown_202EC4C = {0}; +EWRAM_DATA u8 gRescuePasswordBuffer[RESCUE_PASSWORD_SIZE] = {0}; + extern struct unkStruct_203B484 *gUnknown_203B484; extern struct UnkTextStruct2 gUnknown_80E71E4; -EWRAM_DATA u8 gUnknown_203B368; -EWRAM_DATA u32 gUnknown_203B36C; -EWRAM_DATA struct RescuePasswordMenu *gRescuePasswordMenu; +EWRAM_DATA_2 u8 gUnknown_203B368 = {0}; +EWRAM_DATA_2 u32 gUnknown_203B36C = {0}; +EWRAM_DATA_2 struct RescuePasswordMenu *gRescuePasswordMenu = {0}; extern s32 sub_8035D74(void); extern void sub_80151C0(u32, u8 *); @@ -92,7 +95,7 @@ void CreateRescuePasswordMenu(u32 currMenu) sub_800641C(gRescuePasswordMenu->unk148, 1, 1); if ((gUnknown_203B368 != 0) || (gUnknown_203B36C != currMenu)) { - for(counter = 0; counter < 0x36; counter++) + for(counter = 0; counter < RESCUE_PASSWORD_SIZE; counter++) { gRescuePasswordBuffer[counter] = 0; } @@ -164,10 +167,10 @@ s32 UpdateRescuePasswordMenu(void) struct MainMenu *iVar9; s32 nextMenu; struct unkStruct_203B480 local_44; - u32 local_14; + u32 menuAction; u32 subtract; - local_14 = 0xb; + menuAction = 0xb; nextMenu = MENU_NO_SCREEN_CHANGE; switch(gRescuePasswordMenu->state) { case 0: @@ -304,9 +307,9 @@ s32 UpdateRescuePasswordMenu(void) break; case 8: if (sub_8012FD8(&gRescuePasswordMenu->unk8[0]) == '\0') { - sub_8013114(&gRescuePasswordMenu->unk8[0], &local_14); + sub_8013114(&gRescuePasswordMenu->unk8[0], &menuAction); } - switch(local_14) + switch(menuAction) { default: case 0xD: @@ -332,9 +335,9 @@ s32 UpdateRescuePasswordMenu(void) break; case 9: if (sub_8012FD8(&gRescuePasswordMenu->unk8[0]) == '\0') { - sub_8013114(&gRescuePasswordMenu->unk8[0], &local_14); + sub_8013114(&gRescuePasswordMenu->unk8[0], &menuAction); } - switch(local_14) + switch(menuAction) { default: case 0xD: @@ -414,36 +417,36 @@ void DisplayPasswordAcceptScreen(void) u32 ConvertMenutoRescuePasswordState(u32 unused) { - u32 uVar1; + u32 state; - uVar1 = 0xb; + state = 0xb; switch(gRescuePasswordMenu->currMenu) { case 0x1b: - uVar1 = 0; + state = 0; break; case 0x1f: - uVar1 = 4; + state = 4; break; case 0x1d: - uVar1 = 2; + state = 2; break; case MENU_DISPLAY_RESCUE_PASSWORD: - uVar1 = 6; + state = 6; break; case 0x1c: - uVar1 = 1; + state = 1; break; case 0x20: - uVar1 = 5; + state = 5; break; case 0x1e: - uVar1 = 3; + state = 3; break; case MENU_RESCUE_PASSWORD_ENTRY: - uVar1 = 7; + state = 7; break; } - return uVar1; + return state; } u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, struct unkStruct_203B480 *param_3) diff --git a/src/save.c b/src/save.c index 3a593fc64..6e121b632 100644 --- a/src/save.c +++ b/src/save.c @@ -11,9 +11,9 @@ #include "game_options.h" -EWRAM_DATA u32 gUnknown_203B17C; -EWRAM_DATA char *gUnknown_203B180; -EWRAM_DATA struct UnkStruct_203B184 *gUnknown_203B184; +EWRAM_DATA_2 u32 gUnknown_203B17C = {0}; +EWRAM_DATA_2 char *gUnknown_203B180 = {0}; +EWRAM_DATA_2 struct UnkStruct_203B184 *gUnknown_203B184 = {0}; extern struct GameOptions *gGameOptionsRef; struct unk_struct diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index e17d25d75..3c53c18a5 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -10,10 +10,10 @@ #include "menu.h" #include "menu_input.h" -extern struct TradeItemsMenu *gTradeItemsMenu; +EWRAM_DATA_2 struct TradeItemsMenu *gTradeItemsMenu = {0}; extern u32 gUnknown_202DE30; -extern u32 gUnknown_202DE58; +extern u8 gUnknown_202DE58[]; const struct MenuItem gUnknown_80E60A0[3] = { {"Send item", 1}, @@ -643,7 +643,7 @@ void sub_8036B28(void) break; case TRADE_ITEMS_SEND_ITEM_CONFIRM: gUnknown_202DE30 = gTradeItemsMenu->quantityToSend; - sub_8090DC4(&gUnknown_202DE58,gTradeItemsMenu->itemToSend.id,0); + sub_8090DC4(gUnknown_202DE58,gTradeItemsMenu->itemToSend.id,0); sub_8014248(gUnknown_80E61E4,0,5, gUnknown_80E6154,0,4,0,0,0x101); break; case TRADE_ITEMS_RECEIVE_ITEM: @@ -702,17 +702,17 @@ void sub_8036B28(void) case 0xe: if (gTradeItemsMenu->unk24C.quantity == 0) { gUnknown_202DE30 = gTradeItemsMenu->unk244.quantity; - sub_8090DC4(&gUnknown_202DE58,gTradeItemsMenu->unk244.itemIdx.id,0); + sub_8090DC4(gUnknown_202DE58,gTradeItemsMenu->unk244.itemIdx.id,0); } else { gUnknown_202DE30 = gTradeItemsMenu->unk24C.quantity; - sub_8090DC4(&gUnknown_202DE58,gTradeItemsMenu->unk24C.itemIdx.id,0); + sub_8090DC4(gUnknown_202DE58,gTradeItemsMenu->unk24C.itemIdx.id,0); } sub_80141B4(gUnknown_80E6314,0,0,0x101); break; case 0xd: gUnknown_202DE30 = gTradeItemsMenu->quantityToSend; - sub_8090DC4(&gUnknown_202DE58,gTradeItemsMenu->itemToSend.id,0); + sub_8090DC4(gUnknown_202DE58,gTradeItemsMenu->itemToSend.id,0); sub_80141B4(gUnknown_80E6358,0,0,0x101); break; case 0xB: diff --git a/src/wonder_mail_2_1.c b/src/wonder_mail_2_1.c index 585786564..3dbb6b2f8 100644 --- a/src/wonder_mail_2_1.c +++ b/src/wonder_mail_2_1.c @@ -1,5 +1,5 @@ -#include "constants/input.h" #include "global.h" +#include "constants/input.h" #include "constants/mailbox.h" #include "input.h" #include "memory.h" @@ -7,50 +7,11 @@ #include "menu.h" #include "code_802C39C.h" #include "menu_input.h" - -struct unkStruct_203B2E8 -{ - // size: 0xA8 - u8 pelipperBoardSlots[MAX_ACCEPTED_JOBS]; - u32 unk8; - u8 fillC[0x20 - 0xC]; - s16 unk20; - s16 unk22; - s16 unk24; - s16 unk26; - u16 unk28; - u16 acceptedJobs; - u16 unk2C; - u8 fill2E[0x3C - 0x2E]; - u32 unk3C; - struct UnkTextStruct2 *unk40; - struct UnkTextStruct2 unk44[4]; - u8 unkA4[4]; -}; - -struct unkStruct_203B2F0 -{ - // size: 0x1FC - u32 unk0; - u32 state; - u8 unk8[0xC - 0x8]; - u8 unkC; - u8 fillD[0x10 - 0xD]; - u32 unk10; - u8 fill14[0x68 - 0x14]; - u32 menuAction; - struct MenuStruct unk6C; - struct MenuStruct unkBC; - struct MenuItem unk10C[8]; - struct MenuItem unk14C[8]; - u8 fill18C[0x19C - 0x18C]; - struct UnkTextStruct2 unk19C[4]; -}; +#include "wonder_mail_2_1.h" extern struct unkStruct_203B2F0 *gUnknown_203B2F0; extern struct unkStruct_203B2E8* gUnknown_203B2E8; extern struct unkStruct_203B2E8* gUnknown_203B2E0; - u16 gUnknown_203B2EC; const struct UnkTextStruct2 gUnknown_80DFCE4 = diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index d8b147664..88fbfa0d4 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -1,14 +1,17 @@ #include "global.h" +#include "constants/dungeon.h" +#include "constants/input.h" + #include "memory.h" #include "text.h" #include "input.h" #include "mailbox.h" #include "menu.h" -#include "constants/dungeon.h" #include "wonder_mail.h" #include "wonder_mail_3.h" #include "code_802C39C.h" #include "menu_input.h" +#include "wonder_mail_2_1.h" const struct UnkTextStruct2 gUnknown_80DFDD4 = @@ -153,6 +156,294 @@ extern void sub_80073E0(u32); extern void CreateRescueTitle(struct unkStruct_802C39C *); extern s32 sub_8013800(void *, u32); extern u8 gUnknown_80DFDBC[]; +extern void sub_802CF5C(void); +extern void sub_802CFD0(void); +extern void sub_8013984(void *); +extern void AddMenuCursorSprite(void *); +extern u8 sub_80138B8(void *, u32); +extern void sub_8013660(void *); +extern u32 GetKeyPress(void *); +extern void PlayMenuSoundEffect(u32); +extern void sub_8013848(void *, s32, u32, u32); + +extern void sub_802DF24(void); +extern void SetJobListState(u32); +extern u32 sub_802DEE0(void); +extern void ResetJobSlot(u8); +extern u8 HasNoAcceptedJobs(void); +u32 sub_802C598(u8 param_1); +extern void sub_802C688(void); +extern void PlaySound(u32); +extern u8 GetPelipperBoardSlotIndex(void); + +extern struct UnkTextStruct2 gUnknown_80DFD8C; +extern struct UnkTextStruct2 gUnknown_80DFDA4; + +extern struct unkStruct_203B2F0 *gUnknown_203B2F0; + +extern u8 *gUnknown_80D4920[]; +extern u8 *gUnknown_80D4928[]; + +void sub_802CBAC(void) +{ + u8 *text; + s32 menuAction; + struct unkStruct_203B2F0 *preload; + + preload = gUnknown_203B2F0; + text = NULL; + preload->unk14C[0].text = *gUnknown_80D4920; + preload->unk14C[0].menuAction = 5; + menuAction = 1; + preload->unk14C[1].text = *gUnknown_80D4928; + preload->unk14C[1].menuAction = 6; + preload->unk14C[2].text = text; + preload->unk14C[2].menuAction = menuAction; +} + +void sub_802CC00(void) +{ + switch(sub_802C598(1)) + { + case 3: + gUnknown_203B2F0->unkC = GetPelipperBoardSlotIndex(); + SetJobListState(2); + break; + case 4: + gUnknown_203B2F0->unkC = GetPelipperBoardSlotIndex(); + SetJobListState(4); + break; + case 0: + case 1: + break; + case 2: + sub_802C688(); + SetJobListState(5); + break; + } +} + +void sub_802CC70(void) +{ + s32 menuAction; + struct WonderMail *mail; + struct WonderMail *mail2; + + menuAction = 0; + sub_802C598(0); + if (!sub_8012FD8(&gUnknown_203B2F0->unk6C)) { + sub_8013114(&gUnknown_203B2F0->unk6C,&menuAction); + if(menuAction != 1) gUnknown_203B2F0->menuAction = menuAction; + } + switch(menuAction) + { + case 2: + PlaySound(0x133); + mail = GetJobSlotInfo(gUnknown_203B2F0->unkC); + mail->mailType = 6; + SetJobListState(1); + break; + case 3: + PlaySound(0x133); + mail2 = GetJobSlotInfo(gUnknown_203B2F0->unkC); + mail2->mailType = 5; + SetJobListState(1); + break; + case 4: + SetJobListState(3); + break; + case 7: + SetJobListState(4); + break; + case 1: + SetJobListState(1); + break; + } +} + +void sub_802CD38(void) +{ + s32 menuAction; + + menuAction = 0; + sub_802C598(0); + sub_8012FD8(&gUnknown_203B2F0->unk6C); + if (!sub_8012FD8(&gUnknown_203B2F0->unkBC)) { + sub_8013114(&gUnknown_203B2F0->unkBC,&menuAction); + } + switch(menuAction) + { + case 1: + case 6: + SetJobListState(1); + break; + case 5: + ResetJobSlot(gUnknown_203B2F0->unkC); + sub_8096C80(); + if (HasNoAcceptedJobs()) { + sub_802C688(); + SetJobListState(5); + } + else { + SetJobListState(1); + } + break; + } +} + +void sub_802CDB8(void) +{ + switch(sub_802DEE0()) + { + case 2: + case 3: + sub_802DF24(); + SetJobListState(1); + break; + case 0: + case 1: + break; + } +} + +bool8 sub_802CDD4(u32 r0) +{ + if(gUnknown_203B2F4 == NULL) + { + gUnknown_203B2F4 = MemoryAlloc(sizeof(struct unkStruct_203B2F4), 8); + } + gUnknown_203B2F4->unk34 = r0; + gUnknown_203B2F4->unk38 = &gUnknown_203B2F4->unk3C[gUnknown_203B2F4->unk34]; + sub_8006518(gUnknown_203B2F4->unk3C); + gUnknown_203B2F4->unk3C[gUnknown_203B2F4->unk34] = gUnknown_80DFDA4; + gUnknown_203B2F4->unk38->unk14 = gUnknown_203B2F4->unk9C; + sub_8012D34(gUnknown_203B2F4->unk38, 4); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2F4->unk3C, 1, 1); + sub_8013848(gUnknown_203B2F4, 5, 4, r0); + sub_802CF5C(); + sub_802CFD0(); + return TRUE; +} + +u32 sub_802CE5C(u8 r0) +{ + if(r0 == 0) + { + sub_8013660(gUnknown_203B2F4); + return 0; + } + else + { + switch(GetKeyPress(gUnknown_203B2F4)) + { + case INPUT_B_BUTTON: + PlayMenuSoundEffect(1); + return 2; + case INPUT_A_BUTTON: + return 3; + default: + if(sub_80138B8(gUnknown_203B2F4, 1) != 0) + { + sub_802CF5C(); + sub_802CFD0(); + return 1; + } + else + { + return 0; + } + } + } +} + +u8 sub_802CEBC(void) +{ + return (gUnknown_203B2F4->unk1E * gUnknown_203B2F4->unk1C) + gUnknown_203B2F4->unk18; +} + +void sub_802CED8(u8 r0) +{ + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2F4->unk3C, 0, 0); + sub_8013984(gUnknown_203B2F4); + sub_802CF5C(); + sub_802CFD0(); + if(r0) + AddMenuCursorSprite(gUnknown_203B2F4); +} + +void sub_802CF14(void) +{ + if(gUnknown_203B2F4) + { + gUnknown_203B2F4->unk3C[gUnknown_203B2F4->unk34] = gUnknown_80DFD8C; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2F4->unk3C, 1, 1); + MemoryFree(gUnknown_203B2F4); + gUnknown_203B2F4 = NULL; + } +} + +NAKED +void sub_802CF5C(void) +{ + asm_unified( + "\tpush {r4,lr}\n" + "\tldr r4, _0802CFCC\n" + "\tldr r0, [r4]\n" + "\tldrh r1, [r0, 0x20]\n" + "\tadds r0, 0x9C\n" + "\tmovs r2, 0\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r4]\n" + "\tldrh r1, [r0, 0x1E]\n" + "\tadds r0, 0x9D\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x9E\n" + "\tmovs r1, 0xC\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x9F\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r4]\n" + "\tmovs r1, 0x1A\n" + "\tldrsh r0, [r0, r1]\n" + "\tmovs r1, 0x18\n" + "\tbl sub_8009614\n" + "\tadds r0, 0x2\n" + "\tlsls r0, 16\n" + "\tldr r2, [r4]\n" + "\tldr r3, [r2, 0x34]\n" + "\tlsls r1, r3, 1\n" + "\tadds r1, r3\n" + "\tlsls r1, 3\n" + "\tadds r1, r2, r1\n" + "\tadds r1, 0x4A\n" + "\tasrs r3, r0, 16\n" + "\tlsrs r0, 16\n" + "\tstrh r0, [r1]\n" + "\tldr r1, [r2, 0x34]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tadds r2, r0\n" + "\tadds r3, 0x2\n" + "\tadds r2, 0x4C\n" + "\tstrh r3, [r2]\n" + "\tbl ResetUnusedInputStruct\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x3C\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x1\n" + "\tbl sub_800641C\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0802CFCC: .4byte gUnknown_203B2F4"); +} void sub_802CFD0(void) diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 53cbfd3f5..0ef10864d 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -56,20 +56,15 @@ struct unkStruct_203B310 }; extern struct unkStruct_203B310 *gUnknown_203B310; -// TODO: port to ItemSlot -struct Item_Alt -{ - union temp { - struct Item norm; - u32 full_bits; - } temp; -}; - struct unkStruct_203B314 { // size: 0x15C s16 unk0[2]; - u8 fill4[0xB8 - 0x4]; + u8 fill4[0x5C - 0x4]; + u8 unk5C[2]; + u8 fill5E[0x8A - 0x5E]; + u8 unk8A[2]; + u8 unk8C[0xB8 - 0x8C]; u8 unkB8; u8 unkB9; u8 unkBA; @@ -150,6 +145,12 @@ extern void sub_80141B4(const u8 *, u32, struct OpenedFile **, u32); extern u32 sub_801B60C(u32, u8, u8); extern void sub_8092578(u8 *buffer, u8 index, u8 r2); void HandleMissionReward(void); +extern s32 sub_8013800(u32 *, s32); +extern void xxx_call_draw_string(s32, s32, const u8 *, s32, s32); +extern void sub_8008C54(u32); +extern void sub_80073B8(u32); +extern void sub_80073E0(u32); +const u8 *sub_80974A0(s16 index); const struct UnkTextStruct2 gUnknown_80E03C4 = { 0x00, 0x00, 0x00, 0x00, @@ -273,6 +274,9 @@ extern u8 gUnknown_202E5D8[]; extern u8 gAvailablePokemonNames[]; extern u32 gUnknown_202DE30; extern const u8 *gUnknown_80D4970[]; +extern u8 gUnknown_80E0744[]; +extern u8 gUnknown_80E0754[]; +extern u8 gUnknown_80E0750[]; @@ -838,3 +842,115 @@ void sub_802F974(void) gUnknown_203B314 = NULL; } } + +NAKED +void sub_802F9C0(void) +{ + asm_unified( + "\tpush {r4,r5,lr}\n" + "\tldr r4, _0802FA44\n" + "\tldr r0, [r4]\n" + "\tmovs r1, 0xAC\n" + "\tlsls r1, 1\n" + "\tadds r0, r1\n" + "\tmovs r2, 0\n" + "\tmovs r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r4]\n" + "\tldr r3, _0802FA48\n" + "\tadds r0, r3\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r3, 0x1\n" + "\tadds r1, r0, r3\n" + "\tmovs r0, 0x8\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r4]\n" + "\tldr r1, _0802FA4C\n" + "\tadds r0, r1\n" + "\tstrb r2, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0xD6\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r0, r2]\n" + "\tmovs r1, 0xC\n" + "\tbl sub_80095E4\n" + "\tadds r0, 0x2\n" + "\tlsls r0, 16\n" + "\tldr r3, [r4]\n" + "\tadds r5, r3, 0\n" + "\tadds r5, 0xF0\n" + "\tldr r2, [r5]\n" + "\tlsls r1, r2, 1\n" + "\tadds r1, r2\n" + "\tlsls r1, 3\n" + "\tadds r1, r3, r1\n" + "\tmovs r2, 0x83\n" + "\tlsls r2, 1\n" + "\tadds r1, r2\n" + "\tasrs r2, r0, 16\n" + "\tlsrs r0, 16\n" + "\tstrh r0, [r1]\n" + "\tldr r1, [r5]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tadds r3, r0\n" + "\tadds r2, 0x2\n" + "\tmovs r0, 0x84\n" + "\tlsls r0, 1\n" + "\tadds r3, r0\n" + "\tstrh r2, [r3]\n" + "\tbl ResetUnusedInputStruct\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0xF8\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x1\n" + "\tbl sub_800641C\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0802FA44: .4byte gUnknown_203B314\n" +"_0802FA48: .4byte 0x00000159\n" +"_0802FA4C: .4byte 0x0000015b"); +} + +void sub_802FA50(void) +{ + s32 sVar1; + const u8 *text; + u32 y; + u32 y2; + int index; + int counter; + + sub_8008C54(gUnknown_203B314->unkF0); + sub_80073B8(gUnknown_203B314->unkF0); + xxx_call_draw_string(10,0,gUnknown_80E0744,gUnknown_203B314->unkF0,0); + sub_8012BC4(gUnknown_203B314->unk158[2] * 8 + 4,0,gUnknown_203B314->unkDA + 1,2,7,gUnknown_203B314->unkF0); + if (gUnknown_203B314->unkB8 != 0) { + for(counter = 0; counter < gUnknown_203B314->unkD6; counter++) + { + y = sub_8013800(&gUnknown_203B314->unkBC,counter); + index = gUnknown_203B314->unkDA * gUnknown_203B314->unkD8 + counter; + sVar1 = gUnknown_203B314->unk0[index]; + if (gUnknown_203B314->unk5C[index] != 0) { + xxx_call_draw_string(10,y,gUnknown_80E0750,gUnknown_203B314->unkF0,0); + } + else if (gUnknown_203B314->unk8A[index] != 0) { + xxx_call_draw_string(10,y,gUnknown_80E0754,gUnknown_203B314->unkF0,0); + } + xxx_call_draw_string(0x18,y,sub_80974A0(sVar1),gUnknown_203B314->unkF0,0); + } + } + else { + for(counter = 0; counter < gUnknown_203B314->unkD6; counter++) + { + y2 = sub_8013800(&gUnknown_203B314->unkBC,counter); + text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->unkDA * gUnknown_203B314->unkD8 + counter]); + xxx_call_draw_string(8,y2,text,gUnknown_203B314->unkF0,0); + } + } + sub_80073E0(gUnknown_203B314->unkF0); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index f052bbc6a..00b89057e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -437,11 +437,8 @@ gUnknown_202EC40: /* 202EC40 */ gUnknown_202EC48: /* 202EC48 */ .space 0x4 -gUnknown_202EC4C: /* 202EC4C */ - .space 0x4 - -gRescuePasswordBuffer: /* 202EC50 */ - .space 0x38 + .include "src/rescue_password_menu.o" + .space 0x2 gDungeonNameBannerPalette: /* 202EC88 */ .space 0x4 diff --git a/sym_ewram2.txt b/sym_ewram2.txt index f650dd005..113331c7e 100644 --- a/sym_ewram2.txt +++ b/sym_ewram2.txt @@ -83,8 +83,8 @@ gUnknown_203B0B0: /* 203B0B0 */ gUnknown_203B0B2: /* 203B0B2 */ .space 0x2 -gFlashEnabled: /* 203B0B4 */ - .space 0x4 + .include "src/flash.o" + .space 0x3 gUnknown_203B0B8: /* 203B0B8 */ .space 0x4 @@ -122,15 +122,6 @@ gUnknown_203B0EC: /* 203B0EC */ .include "src/debug.o" .space 0x2B -gUnknown_203B17C: /* 203B17C */ - .space 0x4 - -gUnknown_203B180: /* 203B180 */ - .space 0x4 - -gUnknown_203B184: /* 203B184 */ - .space 0x4 - .include "src/save.o" gUnknown_203B198: /* 203B198 */ @@ -358,8 +349,7 @@ gUnknown_203B300: /* 203B300 */ gUnknown_203B304: /* 203B304 */ .space 0x4 -gPelipperBoard: /* 203B308 */ - .space 0x4 +.include "src/pelipper_board.o" gUnknown_203B30C: /* 203B30C */ .space 0x4 @@ -385,20 +375,13 @@ gUnknown_203B324: /* 203B324 */ gUnknown_203B328: /* 203B328 */ .space 0x4 -gPostOfficeHelper: /* 203B32C */ - .space 0x4 - -gUnknown_203B330: /* 203B330 */ - .space 0x4 +.include "src/post_office_guide.o" gUnknown_203B334: /* 203B334 */ .space 0x4 -gAdventureLog: /* 203B338 */ - .space 0x4 - -gUnknown_203B33C: /* 203B33C */ - .space 0x4 +.include "src/adventure_log.o" +.include "src/friend_rescue.o" gUnknown_203B340: /* 203B340 */ .space 0x4 @@ -406,20 +389,9 @@ gUnknown_203B340: /* 203B340 */ gUnknown_203B344: /* 203B344 */ .space 0x4 -gMainMenu: /* 203B348 */ - .space 0x4 +.include "src/main_menu.o" -gUnknown_203B34C: /* 203B34C */ - .space 0x4 - -gUnknown_203B350: /* 203B350 */ - .space 0x4 - -gUnknown_203B354: /* 203B354 */ - .space 0x4 - -gTradeItemsMenu: /* 203B358 */ - .space 0x4 +.include "src/trade_items_menu.o" gUnknown_203B35C: /* 203B35C */ .space 0x4 @@ -430,26 +402,9 @@ gUnknown_203B360: /* 203B360 */ gUnknown_203B364: /* 203B364 */ .space 0x4 -gUnknown_203B368: /* 203B368 */ - .space 0x4 +.include "src/rescue_password_menu.o" -gUnknown_203B36C: /* 203B36C */ - .space 0x4 - -gRescuePasswordMenu: /* 203B370 */ - .space 0x4 - -gLoadScreen: /* 203B374 */ - .space 0x4 - -gUnknown_203B378: /* 203B378 */ - .space 0x10 - -gUnknown_203B388: /* 203B388 */ - .space 0x30 - -gUnknown_203B3B8: /* 203B3B8 */ - .space 0x30 +.include "src/load_screen.o" gUnknown_203B3E8: /* 203B3E8 */ .space 0x4 @@ -553,9 +508,7 @@ gUnknown_203B490: /* 203B490 */ gUnknown_203B494: /* 203B494 */ .space 0x4 -gUnknown_203B498: /* 203B498 */ - .space 0x4 - + .include "src/exclusive_pokemon.o" .include "src/ground_main.o" .space 0x2 From 2116aef8c258586ea02cf59ab4b21a7562ceee4f Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 15 May 2023 17:37:34 -0700 Subject: [PATCH 02/21] decomp another func and cleanup code --- asm/code_2.s | 2 +- asm/code_80428A0.s | 2 +- asm/code_8095014.s | 37 ---- asm/friend_rescue.s | 8 +- asm/ground_script.s | 2 +- asm/other_menus.s | 10 +- include/code_8094F88.h | 18 +- include/code_80958E8.h | 9 +- include/save.h | 6 +- include/sub_8095228.h | 27 --- ld_script.txt | 2 - src/code_2.c | 1 - src/code_8094F88.c | 405 ++++++++++++++++++++++++++++++++++-- src/code_8095824.c | 365 -------------------------------- src/code_80958E8.c | 8 +- src/code_80972F4.c | 12 +- src/friend_list_menu_1.c | 2 +- src/friend_rescue_1.c | 11 +- src/mailbox_8095F8C.c | 6 +- src/post_office_guide.c | 2 +- src/rescue_password_menu.c | 42 ++-- src/save.c | 8 - src/thank_you_wonder_mail.c | 12 +- src/wonder_mail.c | 6 +- src/wonder_mail_2.c | 4 +- src/wonder_mail_4.c | 2 +- 26 files changed, 479 insertions(+), 530 deletions(-) delete mode 100644 include/sub_8095228.h diff --git a/asm/code_2.s b/asm/code_2.s index 81d8a8659..311dae02c 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -934,7 +934,7 @@ _08000DAC: cmp r0, 0 beq _08000E00 ldrb r0, [r4] - bl sub_8095228 + bl GetMailatIndex adds r2, r0, 0 adds r0, 0x2C ldrb r1, [r0] diff --git a/asm/code_80428A0.s b/asm/code_80428A0.s index 14595e1c4..523ff0fd1 100644 --- a/asm/code_80428A0.s +++ b/asm/code_80428A0.s @@ -929,7 +929,7 @@ _0804326A: beq _080432F4 mov r0, sp ldrb r0, [r0] - bl sub_8095228 + bl GetMailatIndex adds r2, r0, 0 adds r2, 0x2C movs r0, 0 diff --git a/asm/code_8095014.s b/asm/code_8095014.s index 94ff64080..5f088844f 100644 --- a/asm/code_8095014.s +++ b/asm/code_8095014.s @@ -5,41 +5,4 @@ .text - thumb_func_start sub_80951BC -sub_80951BC: - push {r4,lr} - adds r4, r0, 0 - bl FindOpenMailSlot - adds r2, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _080951F4 - ldr r0, _080951F0 - ldr r1, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 4 - adds r1, r0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - b _080951F6 - .align 2, 0 -_080951F0: .4byte gUnknown_203B480 -_080951F4: - movs r0, 0 -_080951F6: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80951BC - .align 2,0 diff --git a/asm/friend_rescue.s b/asm/friend_rescue.s index bd0ab3acc..5388c763a 100644 --- a/asm/friend_rescue.s +++ b/asm/friend_rescue.s @@ -848,7 +848,7 @@ _0803304A: lsls r3, 2 adds r0, r3 ldrb r0, [r0] - bl sub_8095228 + bl GetMailatIndex ldr r1, [r6] adds r1, 0x48 ldm r0!, {r2,r4,r5} @@ -907,7 +907,7 @@ _080330B4: lsls r3, 2 adds r0, r1, r3 ldrb r0, [r0] - bl sub_8095228 + bl GetMailatIndex ldr r1, [r6] adds r1, 0xA8 ldm r0!, {r2-r4} @@ -1202,7 +1202,7 @@ _0803331A: lsls r2, 2 adds r0, r2 ldrb r0, [r0] - bl sub_8095228 + bl GetMailatIndex ldr r1, [r6] adds r1, r4 ldm r0!, {r2,r3,r5} @@ -1420,7 +1420,7 @@ _0803349C: bl GetMailIndex lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex adds r2, r0, 0 adds r0, 0x22 ldrb r1, [r0] diff --git a/asm/ground_script.s b/asm/ground_script.s index 2b4f95a45..3a5a0c7b0 100644 --- a/asm/ground_script.s +++ b/asm/ground_script.s @@ -1128,7 +1128,7 @@ _0809E524: bl sub_8001658 lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex adds r4, r0, 0 movs r0, 0x6 bl sub_80023E4 diff --git a/asm/other_menus.s b/asm/other_menus.s index 0f50504ce..1bd67d082 100644 --- a/asm/other_menus.s +++ b/asm/other_menus.s @@ -116,7 +116,7 @@ _080374E4: bl sub_8035D74 lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex ldr r3, _08037518 ldr r1, [r3] movs r2, 0xE6 @@ -154,7 +154,7 @@ _08037534: bl sub_8035D74 lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex ldr r3, _08037568 ldr r1, [r3] movs r2, 0x8B @@ -180,7 +180,7 @@ _0803756C: bl sub_8035D74 lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex ldr r4, _080375CC ldr r1, [r4] movs r5, 0xA3 @@ -1363,7 +1363,7 @@ _08037ED0: bl GetMailIndex lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex adds r4, r0, 0 adds r1, r4, 0 adds r0, r5, 0 @@ -1434,7 +1434,7 @@ _08037F5E: bl GetMailIndex lsls r0, 24 lsrs r0, 24 - bl sub_8095228 + bl GetMailatIndex adds r2, r0, 0 adds r1, r4, 0 ldm r1!, {r3-r5} diff --git a/include/code_8094F88.h b/include/code_8094F88.h index 744425187..c96fdefbb 100644 --- a/include/code_8094F88.h +++ b/include/code_8094F88.h @@ -5,6 +5,7 @@ struct unkStruct_203B480 { + // size: 0x30 /* 0x0 */ u8 mailType; /* 0x1 */ u8 missionType; /* 0x4 */ struct DungeonLocation dungeon; @@ -37,8 +38,21 @@ struct unkStruct_203B48C s32 unk4[0x20]; }; +extern struct unkStruct_203B480 *gUnknown_203B480; +extern struct unkStruct_203B484 *gUnknown_203B484; +extern u32 *gUnknown_203B488; +extern struct unkStruct_203B48C *gUnknown_203B48C; + +void sub_80950BC(void); +struct unkStruct_203B480 *sub_80950F8(void); +struct unkStruct_203B484 *sub_8095100(void); +u32 *sub_8095108(void); +struct unkStruct_203B48C *sub_8095110(void); +void sub_8095118(void); +s32 FindOpenMailSlot(void); +bool8 sub_80951BC(struct unkStruct_203B480 *mail); bool8 sub_80951FC(struct unkStruct_203B480 *param_1); -struct unkStruct_203B480 * sub_8095228(u8 index); +struct unkStruct_203B480 * GetMailatIndex(u8 index); void DeleteMailAtIndex(u8 index); void sub_8095274(u32 param_1); bool8 sub_8095298(s32 param_1); @@ -49,6 +63,8 @@ u32 CountAllMail(void); s32 sub_8095374(void); s32 GetMailIndex(u8 mailType, u32 param_2); s32 GetFirstIndexofMailType(u8 mailType); +void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b); +void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b); #endif diff --git a/include/code_80958E8.h b/include/code_80958E8.h index b78845ca3..4a6f15e23 100644 --- a/include/code_80958E8.h +++ b/include/code_80958E8.h @@ -1,4 +1,5 @@ #include "wonder_mail.h" +#include "constants/mailbox.h" struct subStruct_203B490 { @@ -12,13 +13,13 @@ struct subStruct_203B490 struct unkStruct_203B490 { // size: 0x330? - /* 0x0 */ struct WonderMail mailboxSlots[4]; - /* 0x50 */ struct WonderMail pelipperBoardJobs[8]; - /* 0xF0 */ struct WonderMail jobSlots[8]; + /* 0x0 */ struct WonderMail mailboxSlots[NUM_MAILBOX_SLOTS]; + /* 0x50 */ struct WonderMail pelipperBoardJobs[MAX_ACCEPTED_JOBS]; + /* 0xF0 */ struct WonderMail jobSlots[MAX_ACCEPTED_JOBS]; u8 unk190[0x28]; u8 unk1B8[0x78]; struct subStruct_203B490 unk230[16]; - u8 PKMNNewsReceived[56]; + u8 PKMNNewsReceived[NUM_POKEMON_NEWS]; bool8 unk328; }; diff --git a/include/save.h b/include/save.h index 206644cbf..c86e57ad4 100644 --- a/include/save.h +++ b/include/save.h @@ -49,10 +49,10 @@ struct UnkStruct_sub_8011DAC { struct UnkStruct_203B184 { /* 0x0 */ struct TeamInventory *MoneyItems; /* 0x4 */ struct unkStruct_203B45C *recruitedPokemon; - /* 0x8 */ u8 *unk8; - /* 0xC */ u8 *unkC; + /* 0x8 */ struct unkStruct_203B480 *unk8; + /* 0xC */ struct unkStruct_203B484 *unkC; /* 0x10 */ u32 *unk10; - /* 0x14 */ u32 *unk14; + /* 0x14 */ struct unkStruct_203B48C *unk14; /* 0x18 */ struct unkStruct_203B490 *mailInfo; /* 0x1C */ struct RescueTeamData *RescueTeamInfo; /* 0x20 */ u32 unk20; diff --git a/include/sub_8095228.h b/include/sub_8095228.h deleted file mode 100644 index 62f905c4e..000000000 --- a/include/sub_8095228.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef GUARD_SUB_8095228_H -#define GUARD_SUB_8095228_H - -#include "dungeon_global_data.h" - -struct unkStruct_8095228 -{ - /* 0x0 */ u8 mailType; // mail type - /* 0x1 */ u8 missionType; // mission type - /* 0x2 */ u8 unk2; - /* 0x3 */ u8 unk3; - /* 0x4 */ struct DungeonLocation dungeon; // dungeon - /* 0x8 */ u32 unk8; - /* 0xC */ s16 clientSpecies; // client pokemon - /* 0xE */ s16 targetSpecies; // target - u32 unk10; // TODO: verify that this is just a union of the 4 bytes in Wonder Mail - u8 padding2[0x20 - 0x14]; - struct Item unk20; - u8 padding3[0x28 - 0x24]; - u32 unk28; - s8 unk2C; - u8 padding4[0x30 - 0x2D]; -}; - -extern struct unkStruct_8095228 *sub_8095228(u8); - -#endif // GUARD_SUB_8095228_H diff --git a/ld_script.txt b/ld_script.txt index a9c0f1667..4a7076269 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -313,8 +313,6 @@ SECTIONS { asm/code_8094D28.o(.text); src/play_time.o(.text); src/code_8094F88.o(.text); - asm/code_8095014.o(.text); - src/code_8095824.o(.text); src/code_80958E8.o(.text); asm/code_80958E8.o(.text); src/code_80958E8_mid.o(.text); diff --git a/src/code_2.c b/src/code_2.c index b1c66909b..198ea8bdd 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -25,7 +25,6 @@ extern void sub_8097670(void); extern void LoadGameOptions(void); extern void SetWindowBGColor(void); extern void LoadItemParameters(void); -extern void sub_80950BC(void); extern void LoadMailInfo(void); extern void sub_800CD64(u32, u32); extern void SetWindowTitle(char *); diff --git a/src/code_8094F88.c b/src/code_8094F88.c index 06e978f0c..6b5148152 100644 --- a/src/code_8094F88.c +++ b/src/code_8094F88.c @@ -3,6 +3,10 @@ #include "pokemon.h" #include "code_8094F88.h" #include "memory.h" +#include "dungeon.h" +#include "random.h" +#include "save.h" +#include "text_util.h" extern struct unkStruct_203B480 gUnknown_2038C88; extern struct unkStruct_203B480 *gUnknown_203B480; @@ -14,7 +18,17 @@ extern u32 *gUnknown_203B488; extern u32 gUnknown_20392E8; +extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*); +extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*); +extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC); +extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*); +extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet); +extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet); +extern struct PokemonStruct *GetPlayerPokemonStruct(void); +extern s32 sub_8094E4C(void); +extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); +extern void sub_8094D28(s32); void sub_80950BC(void) { @@ -47,24 +61,24 @@ struct unkStruct_203B48C *sub_8095110(void) void sub_8095118(void) { - s32 iVar1; + s32 index; struct unkStruct_203B480 *unused; - MemoryFill8((u8*)gUnknown_203B480,0,0x600); - MemoryFill8((u8*)gUnknown_203B484,0,0x5c); - for(iVar1 = 0; iVar1 < 0x20; iVar1++){ + MemoryFill8((u8*)gUnknown_203B480,0, 0x20 * sizeof(struct unkStruct_203B480)); + MemoryFill8((u8*)gUnknown_203B484,0, 0x5c); + for(index = 0; index < 0x20; index++){ // NOTE: we use a temp variable here to force the match - unused = &gUnknown_203B480[iVar1]; - gUnknown_203B480[iVar1].mailType = WONDER_MAIL_TYPE_NONE; - unused = &gUnknown_203B480[iVar1]; - gUnknown_203B480[iVar1].unk20.id = ITEM_NOTHING; - unused = &gUnknown_203B480[iVar1]; - gUnknown_203B480[iVar1].unk2D = 0; + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].mailType = WONDER_MAIL_TYPE_NONE; + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].unk20.id = ITEM_NOTHING; + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].unk2D = 0; } gUnknown_203B48C->unk0 = 0; - for(iVar1 = 0; iVar1 < 0x20; iVar1++){ - gUnknown_203B48C->unk4[iVar1] = -1; + for(index = 0; index < 0x20; index++){ + gUnknown_203B48C->unk4[index] = -1; } } @@ -86,3 +100,370 @@ s32 FindOpenMailSlot(void) } return -1; } + +// Fakematch +bool8 sub_80951BC(struct unkStruct_203B480 *mail) +{ + s32 index; + struct unkStruct_203B480 *preload; + struct unkStruct_203B480 *preload2; + + index = FindOpenMailSlot(); + + if(index == -1) + { + return 0; + } + else + { + preload = gUnknown_203B480; + preload2 = &preload[index]; + *preload2 = *mail; + return 1; + } +} + +struct unkStruct_809542C +{ + struct DungeonLocation unk0; + u32 unk4; +}; + +bool8 sub_80951FC(struct unkStruct_203B480 *param_1) +{ + bool8 bVar1 = gUnknown_203B480[1].mailType != 0; + gUnknown_203B480[1] = *param_1; + return bVar1; +} + +struct unkStruct_203B480 * GetMailatIndex(u8 index) +{ + struct unkStruct_203B480 *ptr; + + ptr = &gUnknown_203B480[index]; + return ptr; +} + +void DeleteMailAtIndex(u8 index) +{ + struct unkStruct_203B480 *unused; + + MemoryFill8((u8*)&gUnknown_203B480[index],0,sizeof(struct unkStruct_203B480)); + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].mailType = 0; + unused = &gUnknown_203B480[index]; + gUnknown_203B480[index].unk20.id = 0; +} + +void sub_8095274(u32 param_1) +{ + s32 iVar2; + s32 iVar3; + + gUnknown_203B48C->unk4[gUnknown_203B48C->unk0] = param_1; + iVar2 = gUnknown_203B48C->unk0; + iVar3 = 0; + if (iVar2 < 0x1f) { + iVar3 = iVar2 + 1; + } + gUnknown_203B48C->unk0 = iVar3; +} + +bool8 sub_8095298(s32 param_1) +{ + s32 index; + + for(index = 0; index < 0x20; index++) + { + if(gUnknown_203B48C->unk4[index] == param_1) return TRUE; + } + return FALSE; +} + +void sub_80952C4(void) +{ + s32 index; + + gUnknown_203B48C->unk0 = 0; + for(index = 0; index < 0x20; index++) + { + gUnknown_203B48C->unk4[index] = -1; + } +} + +bool8 HasMail(u8 mailType, u32 param_2) +{ + struct unkStruct_203B480 *ptr; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return TRUE; + } + return FALSE; +} + +s32 CountMailType(u8 mailType) +{ + struct unkStruct_203B480 *ptr; + s32 total = 0; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if (ptr->mailType == mailType) total++; + } + return total; +} + +u32 CountAllMail(void) +{ + struct unkStruct_203B480 *ptr; + u32 total = 0; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if (ptr->mailType != 0) total++; + } + return total; +} + +s32 sub_8095374(void) +{ + struct unkStruct_203B480 *ptr; + s32 retvar = -1; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if (ptr->mailType == 1) retvar = index; + } + return retvar; +} + +/* With mailType and (additonal data??), search mail and return exact index */ +s32 GetMailIndex(u8 mailType, u32 param_2) +{ + struct unkStruct_203B480 *ptr; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return index; + } + return -1; +} + +/* Return the index of the first mail of the requested type */ +s32 GetFirstIndexofMailType(u8 mailType) +{ + struct unkStruct_203B480 *ptr; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) + { + if (ptr->mailType == mailType) return index; + } + return -1; +} + +s32 sub_8095400(u32 param_1) +{ + u32 *ptr; + s32 index; + + for(index = 0, ptr = &gUnknown_203B480[0].unk10.unk10; index < 0x20; ptr += 0xC, index++) + { + if (*ptr == param_1) return index; + } + return -1; +} + +void sub_809542C(struct unkStruct_809542C *param_1) +{ + u32 uVar4; + +#ifndef NONMATCHING + register struct unkStruct_203B480 *preload asm("r2"); +#else + struct unkStruct_203B480 *preload; +#endif + + u8 buffer [20]; + + gUnknown_203B480->mailType = 1; + preload = gUnknown_203B480; + uVar4 = param_1->unk4; + preload->dungeon = param_1->unk0; + preload->unk8 = uVar4; + sub_8094D28(Rand32Bit()); + gUnknown_203B480->unk10.unk10 = sub_8094E4C(); + gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum; + PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct()); + CopyStringtoBuffer(gUnknown_203B480->playerName, buffer); + gUnknown_203B480->unk24 = sub_8011C34(); + gUnknown_203B480->rescuesAllowed = GetRescuesAllowed(gUnknown_203B480->dungeon.id); +} + +void sub_8095494(struct unkStruct_809542C *param_1, u8 index) +{ + u32 uVar1; + struct DungeonLocation temp; + struct unkStruct_203B480 *mail; + + mail = gUnknown_203B480; + mail += index; + + temp = mail->dungeon; + uVar1 = mail->unk8; + param_1->unk0 = temp; + param_1->unk4 = uVar1; +} + +u32 sub_80954B4(void) +{ + if(CountMailType(3) != 0) + return 1; + else + return 0; +} + +u32 sub_80954CC(u8 *a, u32 b) +{ + struct unkStruct_8094924 backup; + struct PokemonStruct *temp; + s32 index; + + xxx_init_struct_8094924_restore_809485C(&backup, a, b); + for(index = 0; index < 0x20; index++) + { + sub_8095774(&backup, &gUnknown_203B480[index]); + } + RestoreIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20); + temp = &gUnknown_203B484->unk4; + memset(temp, 0, sizeof(struct PokemonStruct)); + RestoreIntegerBits(&backup, &temp->unk0, 2); + RestoreIntegerBits(&backup, &temp->isTeamLeader, 1); + RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7); + RestoreDungeonLocation(&backup, &temp->dungeonLocation); + RestoreIntegerBits(&backup, &temp->speciesNum, 9); + xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]); + xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]); + RestoreIntegerBits(&backup, &temp->IQ, 0xA); + RestoreIntegerBits(&backup, &temp->pokeHP, 0xA); + RestoreIntegerBits(&backup, &temp->offense.att[0], 8); + RestoreIntegerBits(&backup, &temp->offense.att[1], 8); + RestoreIntegerBits(&backup, &temp->offense.def[0], 8); + RestoreIntegerBits(&backup, &temp->offense.def[1], 8); + RestoreIntegerBits(&backup, &temp->unk1C, 0x18); + RestoreIntegerBits(&backup, &temp->IQSkills, 0x18); + RestoreIntegerBits(&backup, &temp->unk24, 4); + RestoreHeldItem(&backup, &temp->heldItem); + RestorePokemonMoves(&backup, temp->moves); + RestoreIntegerBits(&backup, temp->name, 0x50); + + RestoreIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20); + for(index = 0; index < 0x20; index++) + { + RestoreIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20); + } + nullsub_102(&backup); + return backup.unk8; +} + +u32 sub_8095624(u8 *a, u32 b) +{ + struct unkStruct_8094924 backup; + struct PokemonStruct *temp; + s32 index; + + xxx_init_struct_8094924_save_809486C(&backup, a, b); + for(index = 0; index < 0x20; index++) + { + sub_8095824(&backup, &gUnknown_203B480[index]); + } + SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20); + temp = &gUnknown_203B484->unk4; + SaveIntegerBits(&backup, &temp->unk0, 2); + SaveIntegerBits(&backup, &temp->isTeamLeader, 1); + SaveIntegerBits(&backup, &temp->unkHasNextStage, 7); + SaveDungeonLocation(&backup, &temp->dungeonLocation); + SaveIntegerBits(&backup, &temp->speciesNum, 9); + xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]); + xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]); + SaveIntegerBits(&backup, &temp->IQ, 0xA); + SaveIntegerBits(&backup, &temp->pokeHP, 0xA); + SaveIntegerBits(&backup, &temp->offense.att[0], 8); + SaveIntegerBits(&backup, &temp->offense.att[1], 8); + SaveIntegerBits(&backup, &temp->offense.def[0], 8); + SaveIntegerBits(&backup, &temp->offense.def[1], 8); + SaveIntegerBits(&backup, &temp->unk1C, 0x18); + SaveIntegerBits(&backup, &temp->IQSkills, 0x18); + SaveIntegerBits(&backup, &temp->unk24, 4); + SaveHeldItem(&backup, &temp->heldItem); + SavePokemonMoves(&backup, temp->moves); + SaveIntegerBits(&backup, temp->name, 0x50); + + SaveIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20); + for(index = 0; index < 0x20; index++) + { + SaveIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20); + } + nullsub_102(&backup); + return backup.unk8; +} + +void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) +{ + u8 temp; + + RestoreIntegerBits(a, &b->mailType, 4); + RestoreDungeonLocation(a, &b->dungeon); + RestoreIntegerBits(a, &b->unk8, 0x18); + RestoreIntegerBits(a, &b->clientSpecies, 0x9); + RestoreIntegerBits(a, &b->unk10.unk10, 0x20); + RestoreIntegerBits(a, &b->playerName, 0x50); + RestoreIntegerBits(a, &b->unk20.flags, 0x8); + RestoreIntegerBits(a, &b->unk20.quantity, 0x8); + RestoreIntegerBits(a, &b->unk20.id, 0x8); + RestoreIntegerBits(a, &b->unk24, 0x20); + RestoreIntegerBits(a, &b->unk28, 0x20); + RestoreIntegerBits(a, &b->rescuesAllowed, 0x8); + + RestoreIntegerBits(a, &temp, 1); + b->unk2D = temp & 1; +} + +void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) +{ + u8 neg1; + u8 zero; + u8 *puVar2; + neg1 = -1; + zero = 0; + + SaveIntegerBits(a, &b->mailType, 4); + SaveDungeonLocation(a, &b->dungeon); + SaveIntegerBits(a, &b->unk8, 0x18); + SaveIntegerBits(a, &b->clientSpecies, 0x9); + SaveIntegerBits(a, &b->unk10.unk10, 0x20); + SaveIntegerBits(a, &b->playerName, 0x50); + SaveIntegerBits(a, &b->unk20.flags, 0x8); + SaveIntegerBits(a, &b->unk20.quantity, 0x8); + SaveIntegerBits(a, &b->unk20.id, 0x8); + SaveIntegerBits(a, &b->unk24, 0x20); + SaveIntegerBits(a, &b->unk28, 0x20); + SaveIntegerBits(a, &b->rescuesAllowed, 0x8); + + if(b->unk2D != 0) + puVar2 = &neg1; + else + puVar2 = &zero; + SaveIntegerBits(a, puVar2, 1); +} + +void sub_80958E4(u32 *a, u32 b) +{ + *a = b; +} diff --git a/src/code_8095824.c b/src/code_8095824.c index 8f0056a60..f5e7b6272 100644 --- a/src/code_8095824.c +++ b/src/code_8095824.c @@ -6,368 +6,3 @@ #include "save.h" #include "text_util.h" #include "code_8094F88.h" - -extern struct unkStruct_203B484 *gUnknown_203B484; -extern struct unkStruct_203B480 *gUnknown_203B480; -extern struct unkStruct_203B48C *gUnknown_203B48C; - -extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*); -extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*); -extern void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSubStruct_C* unkC); -extern void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*); -extern void SavePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet); -extern void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct Move *moveSet); - -void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b); -void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b); -s32 CountMailType(u8); - -extern struct PokemonStruct *GetPlayerPokemonStruct(void); -extern s32 sub_8094E4C(void); -extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); -extern void sub_8094D28(s32); - -struct unkStruct_809542C -{ - struct DungeonLocation unk0; - u32 unk4; -}; - -bool8 sub_80951FC(struct unkStruct_203B480 *param_1) -{ - bool8 bVar1 = gUnknown_203B480[1].mailType != 0; - gUnknown_203B480[1] = *param_1; - return bVar1; -} - -struct unkStruct_203B480 * sub_8095228(u8 index) -{ - struct unkStruct_203B480 *ptr; - - ptr = &gUnknown_203B480[index]; - return ptr; -} - -void DeleteMailAtIndex(u8 index) -{ - struct unkStruct_203B480 *unused; - - MemoryFill8((u8*)&gUnknown_203B480[index],0,sizeof(struct unkStruct_203B480)); - unused = &gUnknown_203B480[index]; - gUnknown_203B480[index].mailType = 0; - unused = &gUnknown_203B480[index]; - gUnknown_203B480[index].unk20.id = 0; -} - -void sub_8095274(u32 param_1) -{ - s32 iVar2; - s32 iVar3; - - gUnknown_203B48C->unk4[gUnknown_203B48C->unk0] = param_1; - iVar2 = gUnknown_203B48C->unk0; - iVar3 = 0; - if (iVar2 < 0x1f) { - iVar3 = iVar2 + 1; - } - gUnknown_203B48C->unk0 = iVar3; -} - -bool8 sub_8095298(s32 param_1) -{ - s32 index; - - for(index = 0; index < 0x20; index++) - { - if(gUnknown_203B48C->unk4[index] == param_1) return TRUE; - } - return FALSE; -} - -void sub_80952C4(void) -{ - s32 index; - - gUnknown_203B48C->unk0 = 0; - for(index = 0; index < 0x20; index++) - { - gUnknown_203B48C->unk4[index] = -1; - } -} - -bool8 HasMail(u8 mailType, u32 param_2) -{ - struct unkStruct_203B480 *ptr; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return TRUE; - } - return FALSE; -} - -s32 CountMailType(u8 mailType) -{ - struct unkStruct_203B480 *ptr; - s32 total = 0; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if (ptr->mailType == mailType) total++; - } - return total; -} - -u32 CountAllMail(void) -{ - struct unkStruct_203B480 *ptr; - u32 total = 0; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if (ptr->mailType != 0) total++; - } - return total; -} - -s32 sub_8095374(void) -{ - struct unkStruct_203B480 *ptr; - s32 retvar = -1; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if (ptr->mailType == 1) retvar = index; - } - return retvar; -} - -/* With mailType and (additonal data??), search mail and return exact index */ -s32 GetMailIndex(u8 mailType, u32 param_2) -{ - struct unkStruct_203B480 *ptr; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if ((ptr->mailType == mailType) && (ptr->unk10.unk10 == param_2)) return index; - } - return -1; -} - -/* Return the index of the first mail of the requested type */ -s32 GetFirstIndexofMailType(u8 mailType) -{ - struct unkStruct_203B480 *ptr; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0]; index < 0x20; ptr++, index++) - { - if (ptr->mailType == mailType) return index; - } - return -1; -} - -s32 sub_8095400(u32 param_1) -{ - u32 *ptr; - s32 index; - - for(index = 0, ptr = &gUnknown_203B480[0].unk10.unk10; index < 0x20; ptr += 0xC, index++) - { - if (*ptr == param_1) return index; - } - return -1; -} - -void sub_809542C(struct unkStruct_809542C *param_1) -{ - u32 uVar4; - -#ifndef NONMATCHING - register struct unkStruct_203B480 *preload asm("r2"); -#else - struct unkStruct_203B480 *preload; -#endif - - u8 buffer [20]; - - gUnknown_203B480->mailType = 1; - preload = gUnknown_203B480; - uVar4 = param_1->unk4; - preload->dungeon = param_1->unk0; - preload->unk8 = uVar4; - sub_8094D28(Rand32Bit()); - gUnknown_203B480->unk10.unk10 = sub_8094E4C(); - gUnknown_203B480->clientSpecies = GetPlayerPokemonStruct()->speciesNum; - PrintPokeNameToBuffer(buffer, GetPlayerPokemonStruct()); - CopyStringtoBuffer(gUnknown_203B480->playerName, buffer); - gUnknown_203B480->unk24 = sub_8011C34(); - gUnknown_203B480->rescuesAllowed = GetRescuesAllowed(gUnknown_203B480->dungeon.id); -} - -void sub_8095494(struct unkStruct_809542C *param_1, u8 index) -{ - u32 uVar1; - struct DungeonLocation temp; - struct unkStruct_203B480 *mail; - - mail = gUnknown_203B480; - mail += index; - - temp = mail->dungeon; - uVar1 = mail->unk8; - param_1->unk0 = temp; - param_1->unk4 = uVar1; -} - -u32 sub_80954B4(void) -{ - if(CountMailType(3) != 0) - return 1; - else - return 0; -} - -u32 sub_80954CC(u8 *a, u32 b) -{ - struct unkStruct_8094924 backup; - struct PokemonStruct *temp; - s32 index; - - xxx_init_struct_8094924_restore_809485C(&backup, a, b); - for(index = 0; index < 0x20; index++) - { - sub_8095774(&backup, &gUnknown_203B480[index]); - } - RestoreIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20); - temp = &gUnknown_203B484->unk4; - memset(temp, 0, sizeof(struct PokemonStruct)); - RestoreIntegerBits(&backup, &temp->unk0, 2); - RestoreIntegerBits(&backup, &temp->isTeamLeader, 1); - RestoreIntegerBits(&backup, &temp->unkHasNextStage, 7); - RestoreDungeonLocation(&backup, &temp->dungeonLocation); - RestoreIntegerBits(&backup, &temp->speciesNum, 9); - xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[0]); - xxx_restore_poke_sub_c_808F410(&backup, &temp->unkC[1]); - RestoreIntegerBits(&backup, &temp->IQ, 0xA); - RestoreIntegerBits(&backup, &temp->pokeHP, 0xA); - RestoreIntegerBits(&backup, &temp->offense.att[0], 8); - RestoreIntegerBits(&backup, &temp->offense.att[1], 8); - RestoreIntegerBits(&backup, &temp->offense.def[0], 8); - RestoreIntegerBits(&backup, &temp->offense.def[1], 8); - RestoreIntegerBits(&backup, &temp->unk1C, 0x18); - RestoreIntegerBits(&backup, &temp->IQSkills, 0x18); - RestoreIntegerBits(&backup, &temp->unk24, 4); - RestoreHeldItem(&backup, &temp->heldItem); - RestorePokemonMoves(&backup, temp->moves); - RestoreIntegerBits(&backup, temp->name, 0x50); - - RestoreIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20); - for(index = 0; index < 0x20; index++) - { - RestoreIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20); - } - nullsub_102(&backup); - return backup.unk8; -} - -u32 sub_8095624(u8 *a, u32 b) -{ - struct unkStruct_8094924 backup; - struct PokemonStruct *temp; - s32 index; - - xxx_init_struct_8094924_save_809486C(&backup, a, b); - for(index = 0; index < 0x20; index++) - { - sub_8095824(&backup, &gUnknown_203B480[index]); - } - SaveIntegerBits(&backup, &gUnknown_203B484->unk0, 0x20); - temp = &gUnknown_203B484->unk4; - SaveIntegerBits(&backup, &temp->unk0, 2); - SaveIntegerBits(&backup, &temp->isTeamLeader, 1); - SaveIntegerBits(&backup, &temp->unkHasNextStage, 7); - SaveDungeonLocation(&backup, &temp->dungeonLocation); - SaveIntegerBits(&backup, &temp->speciesNum, 9); - xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[0]); - xxx_save_poke_sub_c_808F41C(&backup, &temp->unkC[1]); - SaveIntegerBits(&backup, &temp->IQ, 0xA); - SaveIntegerBits(&backup, &temp->pokeHP, 0xA); - SaveIntegerBits(&backup, &temp->offense.att[0], 8); - SaveIntegerBits(&backup, &temp->offense.att[1], 8); - SaveIntegerBits(&backup, &temp->offense.def[0], 8); - SaveIntegerBits(&backup, &temp->offense.def[1], 8); - SaveIntegerBits(&backup, &temp->unk1C, 0x18); - SaveIntegerBits(&backup, &temp->IQSkills, 0x18); - SaveIntegerBits(&backup, &temp->unk24, 4); - SaveHeldItem(&backup, &temp->heldItem); - SavePokemonMoves(&backup, temp->moves); - SaveIntegerBits(&backup, temp->name, 0x50); - - SaveIntegerBits(&backup, &gUnknown_203B48C->unk0, 0x20); - for(index = 0; index < 0x20; index++) - { - SaveIntegerBits(&backup, &gUnknown_203B48C->unk4[index], 0x20); - } - nullsub_102(&backup); - return backup.unk8; -} - -void sub_8095774(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) -{ - u8 temp; - - RestoreIntegerBits(a, &b->mailType, 4); - RestoreDungeonLocation(a, &b->dungeon); - RestoreIntegerBits(a, &b->unk8, 0x18); - RestoreIntegerBits(a, &b->clientSpecies, 0x9); - RestoreIntegerBits(a, &b->unk10.unk10, 0x20); - RestoreIntegerBits(a, &b->playerName, 0x50); - RestoreIntegerBits(a, &b->unk20.flags, 0x8); - RestoreIntegerBits(a, &b->unk20.quantity, 0x8); - RestoreIntegerBits(a, &b->unk20.id, 0x8); - RestoreIntegerBits(a, &b->unk24, 0x20); - RestoreIntegerBits(a, &b->unk28, 0x20); - RestoreIntegerBits(a, &b->rescuesAllowed, 0x8); - - RestoreIntegerBits(a, &temp, 1); - b->unk2D = temp & 1; -} - -void sub_8095824(struct unkStruct_8094924 * a, struct unkStruct_203B480 *b) -{ - u8 neg1; - u8 zero; - u8 *puVar2; - neg1 = -1; - zero = 0; - - SaveIntegerBits(a, &b->mailType, 4); - SaveDungeonLocation(a, &b->dungeon); - SaveIntegerBits(a, &b->unk8, 0x18); - SaveIntegerBits(a, &b->clientSpecies, 0x9); - SaveIntegerBits(a, &b->unk10.unk10, 0x20); - SaveIntegerBits(a, &b->playerName, 0x50); - SaveIntegerBits(a, &b->unk20.flags, 0x8); - SaveIntegerBits(a, &b->unk20.quantity, 0x8); - SaveIntegerBits(a, &b->unk20.id, 0x8); - SaveIntegerBits(a, &b->unk24, 0x20); - SaveIntegerBits(a, &b->unk28, 0x20); - SaveIntegerBits(a, &b->rescuesAllowed, 0x8); - - if(b->unk2D != 0) - puVar2 = &neg1; - else - puVar2 = &zero; - SaveIntegerBits(a, puVar2, 1); -} - -void sub_80958E4(u32 *a, u32 b) -{ - *a = b; -} diff --git a/src/code_80958E8.c b/src/code_80958E8.c index ad9923b58..30a8c4af5 100644 --- a/src/code_80958E8.c +++ b/src/code_80958E8.c @@ -40,19 +40,19 @@ struct unkStruct_203B490 *GetMailInfo(void) void InitializeMailJobsNews(void) { s32 index; - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { ResetMailboxSlot(index); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { ResetPelipperBoardSlot(index); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { ResetJobSlot(index); } - for(index = 0; index < 56; index++) + for(index = 0; index < NUM_POKEMON_NEWS; index++) { gUnknown_203B490->PKMNNewsReceived[index] = FALSE; } diff --git a/src/code_80972F4.c b/src/code_80972F4.c index 7ae7986a6..685cd0d2a 100644 --- a/src/code_80972F4.c +++ b/src/code_80972F4.c @@ -41,15 +41,15 @@ u32 RestoreMailInfo(u8 *r0, u32 size) u32 temp; xxx_init_struct_8094924_restore_809485C(&backup, r0, size); - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { RestoreWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { RestoreWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { RestoreWonderMail(&backup, &gUnknown_203B490->jobSlots[index]); } @@ -86,15 +86,15 @@ u32 SaveMailInfo(u8 *r0, u32 size) u32 temp; xxx_init_struct_8094924_save_809486C(&backup, r0, size); - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { SaveWonderMail(&backup, &gUnknown_203B490->mailboxSlots[index]); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { SaveWonderMail(&backup, &gUnknown_203B490->pelipperBoardJobs[index]); } - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { SaveWonderMail(&backup, &gUnknown_203B490->jobSlots[index]); } diff --git a/src/friend_list_menu_1.c b/src/friend_list_menu_1.c index c70970248..313cd5231 100644 --- a/src/friend_list_menu_1.c +++ b/src/friend_list_menu_1.c @@ -34,7 +34,7 @@ struct unkStruct_203B2B4 struct MenuStruct unk78; struct MenuItem unkC8[4]; u8 fillE8[0x108 - 0xE8]; - s16 unk108[8]; + u16 unk108[8]; struct UnkTextStruct2 unk118[4]; }; extern struct unkStruct_203B2B4 *gUnknown_203B2B4; diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c index d6c7312d1..e12a1f0bc 100644 --- a/src/friend_rescue_1.c +++ b/src/friend_rescue_1.c @@ -17,7 +17,6 @@ extern struct TeamInventory *gTeamInventory_203B460; -extern u8 *gUnknown_203B484; extern void SetFriendRescueMenuState(u32); extern s32 sub_80144A4(s32 *); @@ -82,9 +81,7 @@ extern u16 sub_8023B44(void); extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_203B480 *r0); extern void sub_8095274(u32); -extern void sub_80951BC(struct unkStruct_203B480 *r0); extern u8 sub_800D588(void); -extern s32 FindOpenMailSlot(void); extern struct PokemonStruct *GetPlayerPokemonStruct(void); extern u8 gUnknown_80E44A4[]; @@ -724,7 +721,7 @@ void sub_8033DBC(void) case PASSWORD_ENTRY_AOK_MAIL_SUCCESS: mail.mailType = 5; sub_80951FC(&mail); - mail2 = sub_8095228(GetMailIndex(1, mail.unk10.unk10)); + mail2 = GetMailatIndex(GetMailIndex(1, mail.unk10.unk10)); mail2->mailType = 7; MemoryFill8((u8 *)gUnknown_203B484, 0, sizeof(struct unkStruct_203B484)); SetFriendRescueMenuState(0x40); @@ -1592,7 +1589,7 @@ void sub_8034D74(void) SetFriendRescueMenuState(FRIEND_RESCUE_MENU_ERROR_2); break; case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS: - mail2 = sub_8095228(GetMailIndex(4, mail.unk10.unk10)); + mail2 = GetMailatIndex(GetMailIndex(4, mail.unk10.unk10)); *mail2 = mail; mail2->mailType = 6; gUnknown_203B33C->unk420 = mail.unk10.unk10; @@ -1691,7 +1688,7 @@ void sub_8034F88(void) switch(menuAction) { case 6: - mail = sub_8095228(gUnknown_203B33C->unk218); + mail = GetMailatIndex(gUnknown_203B33C->unk218); if(gUnknown_203B33C->item.id != ITEM_NOTHING) mail->unk20 = gUnknown_203B33C->item; gTeamInventory_203B460->teamStorage[gUnknown_203B33C->item.id]--; @@ -1893,7 +1890,7 @@ void sub_8035210(void) case 0xD: if(gUnknown_203B33C->unk528 == 0x13) { - mail = sub_8095228(GetFirstIndexofMailType(5)); + mail = GetMailatIndex(GetFirstIndexofMailType(5)); if(mail->unk20.id != ITEM_NOTHING) SetFriendRescueMenuState(0x53); else diff --git a/src/mailbox_8095F8C.c b/src/mailbox_8095F8C.c index 92d494a9d..b07250bfa 100644 --- a/src/mailbox_8095F8C.c +++ b/src/mailbox_8095F8C.c @@ -13,7 +13,7 @@ s32 CountFilledMailboxSlots(void) s32 counter; counter = 0; - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { if(!IsMailSlotEmpty(index)) counter++; @@ -26,7 +26,7 @@ bool8 sub_8095FB0(struct WonderMail *mail) { s32 index; - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { if(gUnknown_203B490->mailboxSlots[index].mailType == WONDER_MAIL_TYPE_NONE) { @@ -53,7 +53,7 @@ bool8 IsMailSlotEmpty(u8 index) void ResetMailbox(void) { s32 index; - for(index = 0; index < 4; index++) + for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { ResetMailboxSlot(index); } diff --git a/src/post_office_guide.c b/src/post_office_guide.c index f15b1c20f..11f3fe530 100644 --- a/src/post_office_guide.c +++ b/src/post_office_guide.c @@ -613,7 +613,7 @@ void DisplayMissionObjectives(void) { case 1: sub_8099394(&local_94); - mail = sub_8095228(local_94); + mail = GetMailatIndex(local_94); sub_803B6B0(10,16,3,gUnknown_203B330->unk10); // %dF sprintfStatic(buffer,gUnknown_80E1F3C,mail->dungeon.floor); diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 0c5bb49d0..7b9dd3704 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -36,10 +36,7 @@ extern void DisplayPasswordAcceptScreen(void); extern u32 sub_8039068(u32, u8 *passwordBuffer, struct unkStruct_203B480 *r0); -extern void sub_80951BC(struct unkStruct_203B480 *r0); -extern bool8 sub_80951FC(struct unkStruct_203B480 *r0); extern u32 sub_80154F0(void); -extern void sub_8095274(u32); extern u32 sub_8031DCC(void); extern void sub_80391F8(void); extern void sub_8031E00(); @@ -53,7 +50,6 @@ bool8 IsInvalidItemReward(u8); bool8 sub_8095298(s32); bool8 sub_803D204(u8 *, struct unkStruct_203B480 *); extern s32 GetDungeonFloorCount(u8); -extern s32 FindOpenMailSlot(void); extern struct UnkTextStruct2 gUnknown_80E71FC; extern struct UnkTextStruct2 gUnknown_80E7278; @@ -118,7 +114,7 @@ void CreateRescuePasswordMenu(u32 currMenu) sub_80151C0(4, gRescuePasswordBuffer); break; case MENU_DISPLAY_RESCUE_PASSWORD: - temp = sub_8095228(0x1F); + temp = GetMailatIndex(0x1F); MemoryFill8((u8 *)temp, 0, sizeof(struct unkStruct_203B480)); temp->mailType = 2; temp->unk20.id = ITEM_NOTHING; @@ -161,12 +157,12 @@ static inline s32 UpdateRescuePasswordMenu_sub(s32 otherMenu) s32 UpdateRescuePasswordMenu(void) { - struct unkStruct_203B480 *puVar5; - struct unkStruct_203B480 *puVar6; + struct unkStruct_203B480 *mailPtr1; + struct unkStruct_203B480 *mailPtr2; u32 iVar7; - struct MainMenu *iVar9; + struct MainMenu *mainMenuPtr; s32 nextMenu; - struct unkStruct_203B480 local_44; + struct unkStruct_203B480 mail; u32 menuAction; u32 subtract; @@ -182,7 +178,7 @@ s32 UpdateRescuePasswordMenu(void) case 3: case 5: iVar7 = sub_80154F0(); - MemoryFill8((u8 *)&local_44, 0, sizeof(struct unkStruct_203B480)); + MemoryFill8((u8 *)&mail, 0, sizeof(struct unkStruct_203B480)); switch(iVar7) { case 1: @@ -196,7 +192,7 @@ s32 UpdateRescuePasswordMenu(void) nextMenu = MENU_FRIEND_RESCUE; break; case 3: - switch(sub_8039068(gRescuePasswordMenu->currMenu, gRescuePasswordBuffer, &local_44)) { + switch(sub_8039068(gRescuePasswordMenu->currMenu, gRescuePasswordBuffer, &mail)) { case PASSWORD_ENTRY_INCORRECT_PASSWORD: nextMenu = PASSWORD_ENTRY_INCORRECT_PASSWORD; DisplayRescuePasswordError(nextMenu); @@ -222,12 +218,12 @@ s32 UpdateRescuePasswordMenu(void) nextMenu = MENU_NO_SCREEN_CHANGE; break; case PASSWORD_ENTRY_SOS_MAIL_SUCCESS: - sub_8095274(local_44.unk10.unk10); + sub_8095274(mail.unk10.unk10); DisplayPasswordAcceptScreen(); gRescuePasswordMenu->state = 9; nextMenu = MENU_NO_SCREEN_CHANGE; - local_44.mailType = 2; - sub_80951BC(&local_44); + mail.mailType = 2; + sub_80951BC(&mail); break; case PASSWORD_ENTRY_NOT_AOK_MAIL: nextMenu = PASSWORD_ENTRY_NOT_AOK_MAIL; @@ -245,10 +241,10 @@ s32 UpdateRescuePasswordMenu(void) DisplayPasswordAcceptScreen(); gRescuePasswordMenu->state = 9; nextMenu = MENU_NO_SCREEN_CHANGE; - local_44.mailType = 5; - sub_80951FC(&local_44); - puVar5 = sub_8095228(GetMailIndex(1, local_44.unk10.unk10)); - puVar5->mailType = WONDER_MAIL_TYPE_OKD; + mail.mailType = 5; + sub_80951FC(&mail); + mailPtr1 = GetMailatIndex(GetMailIndex(1, mail.unk10.unk10)); + mailPtr1->mailType = WONDER_MAIL_TYPE_OKD; MemoryFill8((u8 *)&gUnknown_203B484, 0, sizeof(struct unkStruct_203B484)); break; case PASSWORD_ENTRY_NOT_THANK_YOU_MAIL: @@ -267,11 +263,11 @@ s32 UpdateRescuePasswordMenu(void) DisplayPasswordAcceptScreen(); gRescuePasswordMenu->state = 9; nextMenu = MENU_NO_SCREEN_CHANGE; - puVar6 = sub_8095228(GetMailIndex(4, local_44.unk10.unk10)); - *puVar6 = local_44; - puVar6->mailType = 6; - iVar9 = GetMainMenu(); - iVar9->unk3A = 1; + mailPtr2 = GetMailatIndex(GetMailIndex(4, mail.unk10.unk10)); + *mailPtr2 = mail; + mailPtr2->mailType = 6; + mainMenuPtr = GetMainMenu(); + mainMenuPtr->unk3A = 1; break; } break; diff --git a/src/save.c b/src/save.c index 6e121b632..7e8bb17d6 100644 --- a/src/save.c +++ b/src/save.c @@ -76,10 +76,7 @@ EWRAM_DATA_2 struct QuickSaveWrite *gQuickSaveWrite = {0}; extern s32 gUnknown_202DE28; extern bool8 *gFriendAreas; -extern u8 *gUnknown_203B480; -extern u8 *gUnknown_203B484; extern u32 *gUnknown_203B488; -extern u32 *gUnknown_203B48C; extern u32 gUnknown_203B494; ALIGNED(4) const char sGameInternalVersion[] = _("POKE_DUNGEON__05"); @@ -155,10 +152,6 @@ extern u32 RestoreRecruitedPokemon(void* a, s32 b); extern u32 SavePokemonStruct2(u8 *, u32); extern u32 RestorePokemonStruct2(void* a, s32 b); extern u32 sub_80921C4(u8 *, u32); -extern u8 *sub_8095100(void); -extern u32 *sub_8095108(void); -extern u32 *sub_8095110(void); -extern void sub_8095118(void); extern u32 sub_80954CC(void* a, s32 b); extern u32 sub_8095624(u8 *, u32); extern u32 RestoreMailInfo(void* a, s32 b); @@ -168,7 +161,6 @@ extern u32 sub_8097D60(u8 *, u32); extern u32 sub_8097D98(void* a, s32 b); extern void sub_80993E4(); extern void sub_800135C(void); -extern u8 *sub_80950F8(void); extern void sub_80958E4(u32 *a, u32 b); extern struct unkStruct_203B490 *GetMailInfo(void); extern void InitializeMailJobsNews(void); diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 19acf94be..45797e0f5 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -287,7 +287,7 @@ u32 CreateThankYouMailPelipper(void) index = GetFirstIndexofMailType(6); if (index != -1) { - mail = sub_8095228(index); + mail = GetMailatIndex(index); gUnknown_203B2C4->unk41C = mail->unk20; gUnknown_203B2C4->mailIndex = index; gUnknown_203B2C4->unk430 = mail->unk10.unk10; @@ -841,7 +841,7 @@ void HandleThankYouMailPasswordMenu(void) break; case PASSWORD_ENTRY_THANK_YOU_MAIL_SUCCESS: mailIndex = GetMailIndex(4,mail1.unk10.unk10); - mail = sub_8095228(mailIndex); + mail = GetMailatIndex(mailIndex); *mail = mail1; mail->mailType = 6; gUnknown_203B2C4->unk430 = mail1.unk10.unk10; @@ -954,7 +954,7 @@ void HandleConfirmItemtoSendMenu(void) switch(menuAction) { case 7: - mail = sub_8095228(gUnknown_203B2C4->mailIndex); + mail = GetMailatIndex(gUnknown_203B2C4->mailIndex); if(gUnknown_203B2C4->unk41C.id != ITEM_NOTHING) { mail->unk20 = gUnknown_203B2C4->unk41C; @@ -1143,7 +1143,7 @@ void HandleMailCommunicationMenu(void) switch(gUnknown_203B2C4->wonderMailMode) { case WONDER_MAIL_MODE_SEND: - mail = sub_8095228(GetFirstIndexofMailType(WONDER_MAIL_TYPE_THANK_YOU)); + mail = GetMailatIndex(GetFirstIndexofMailType(WONDER_MAIL_TYPE_THANK_YOU)); if(mail->unk20.id != ITEM_NOTHING) { SetThankYouMailMenuState(ITEM_EXISTS_ON_THANK_YOU_MAIL); @@ -1330,7 +1330,7 @@ void UpdateThankYouMailText(void) { case 6: MemoryFill8((u8 *)&gUnknown_203B2C4->unk1B8,0, sizeof(struct unkStruct_203B480)); - gUnknown_203B2C4->unk1B8 = *sub_8095228(gUnknown_203B2C4->mailIndex); + gUnknown_203B2C4->unk1B8 = *GetMailatIndex(gUnknown_203B2C4->mailIndex); gUnknown_203B2C4->linkError = sub_8037D64(gUnknown_203B2C4->unk40,&gUnknown_203B2C4->unk1B8,&gUnknown_203B2C4->unk1E8); break; case 7: @@ -1408,7 +1408,7 @@ void UpdateThankYouMailText(void) gUnknown_203B2C4->unk53C.unk16 = 2; // 0x552 gUnknown_203B2C4->unk53C.moneyReward = 0; // 0x554 mailIndex = GetMailIndex(6,gUnknown_203B2C4->unk430); - mail = sub_8095228(mailIndex); + mail = GetMailatIndex(mailIndex); itemIndex = mail->unk20.id; if (itemIndex != ITEM_NOTHING) gUnknown_203B2C4->unk53C.itemRewards[0] = itemIndex; // unk558 diff --git a/src/wonder_mail.c b/src/wonder_mail.c index cf45434a5..c69a5fbd0 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -28,7 +28,6 @@ extern bool8 sub_80A2824(u8); extern char gUnknown_202E5D8[0x50]; extern char gAvailablePokemonNames[0x50]; -extern s32 FindOpenMailSlot(void); extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); extern void nullsub_130(void); extern void sub_8028348(void); @@ -48,7 +47,6 @@ extern u32 sub_8039068(u32, u8 *r1, struct unkStruct_203B480 *r0); extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32); extern void sub_8095274(u32); extern void sub_80155F0(); -extern void sub_80951BC(struct unkStruct_203B480 *r0); extern void sub_8023C60(); extern u32 sub_8023A94(u32); extern void sub_8024458(s16, u32); @@ -628,7 +626,7 @@ void sub_8028348(void) MemoryFill8((u8 *)&gUnknown_203B2C0->unk130, 0, sizeof(struct WonderMailStruct_203B2C0_sub)); gUnknown_203B2C0->unkA8.pokemon.speciesNum = 0; gUnknown_203B2C0->unk130.pokemon.speciesNum = 0; - gUnknown_203B2C0->unkA8.mail = *sub_8095228(gUnknown_203B2C0->mailIndex); + gUnknown_203B2C0->unkA8.mail = *GetMailatIndex(gUnknown_203B2C0->mailIndex); if(gUnknown_203B2C0->speciesNum != -1) { gUnknown_203B2C0->unkA8.pokemon = gRecruitedPokemonRef->pokemon[gUnknown_203B2C0->speciesNum]; @@ -1179,7 +1177,7 @@ void sub_8028FDC(void) switch(menuChoice) { case 8: - mail = sub_8095228(gUnknown_203B2C0->mailIndex); + mail = GetMailatIndex(gUnknown_203B2C0->mailIndex); if(!sub_80A2824(mail->dungeon.id)) { SetFriendRescueCounterState(CANT_GO_TO_DUNGEON); diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index fef9a17c0..cfbbfde0c 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -180,7 +180,7 @@ void sub_802B3E0(void) gUnknown_203B2C8->unk114.unk16 = 2; gUnknown_203B2C8->unk114.moneyReward = 0; sub_8097790(); - mail = sub_8095228(gUnknown_203B2C8->unk1); + mail = GetMailatIndex(gUnknown_203B2C8->unk1); sub_803C37C(&mail->dungeon, 0, gUnknown_203B2C8->unk114.itemRewards); gUnknown_203B2C8->unk114.teamRankPtsReward = GetDungeonTeamRankPts(&mail->dungeon, 0); gUnknown_203B2C8->unk114.itemRewards[1] = ITEM_NOTHING; @@ -241,7 +241,7 @@ void sub_802B5B8(void) if (sub_80144A4(&temp) == 0) { uVar2 = sub_8011C34(); - mail = sub_8095228(gUnknown_203B2C8->unk1); + mail = GetMailatIndex(gUnknown_203B2C8->unk1); mail->mailType = WONDER_MAIL_TYPE_AOK; mail->unk28 = uVar2; sub_802B548(3); diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 6b0a07e88..3bbdac56c 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -284,7 +284,7 @@ void sub_803092C(void) sub_8012BC4(r5,0,gUnknown_203B320->unk42 + 1,1,7,gUnknown_203B320->unk58); for (index = 0; index < gUnknown_203B320->unk3E; index++) { - mail = sub_8095228(gUnknown_203B320->unk0[(gUnknown_203B320->unk42 * gUnknown_203B320->unk40) + index]); + mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->unk42 * gUnknown_203B320->unk40) + index]); local.unk0[0] = gUnknown_203B320->unk58; local.y = sub_8013800(&gUnknown_203B320->unk24,index); local.unk40 = 7; From d9a411956b156762a319175bc52a3b7096559e52 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Tue, 16 May 2023 20:52:59 -0700 Subject: [PATCH 03/21] another menu decomped --- asm/code_8095014.s | 8 -- asm/debug_menu_2.s | 78 ------------ asm/friend_area_action_menu.s | 52 -------- include/friend_area_action_menu.h | 6 +- ld_script.txt | 2 - src/debug_menu_1.c | 190 ++++++++++++++++++++++++++++++ src/debug_menu_2.c | 161 ------------------------- src/friend_area_action_menu.c | 4 +- src/friend_area_action_menu_1.c | 22 ++++ 9 files changed, 215 insertions(+), 308 deletions(-) delete mode 100644 asm/code_8095014.s delete mode 100644 asm/debug_menu_2.s delete mode 100644 src/debug_menu_2.c diff --git a/asm/code_8095014.s b/asm/code_8095014.s deleted file mode 100644 index 5f088844f..000000000 --- a/asm/code_8095014.s +++ /dev/null @@ -1,8 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - .align 2,0 diff --git a/asm/debug_menu_2.s b/asm/debug_menu_2.s deleted file mode 100644 index 19719a6c2..000000000 --- a/asm/debug_menu_2.s +++ /dev/null @@ -1,78 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_803AEB0 -sub_803AEB0: - push {r4-r6,lr} - ldr r4, _0803AEFC - ldr r0, [r4] - adds r0, 0xD0 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r4, [r4] - movs r3, 0 - adds r1, r4, 0 - adds r1, 0x90 - ldr r0, _0803AF00 - str r0, [r1] - adds r5, r4, 0 - adds r5, 0x94 - movs r0, 0x4 - str r0, [r5] - movs r2, 0x1 - adds r1, 0x8 - ldr r0, _0803AF04 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x5 - str r0, [r1] - movs r6, 0x2 - adds r0, r4, 0 - adds r0, 0xA0 - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - adds r0, 0x2C - ldrh r0, [r0] - cmp r0, 0 - bne _0803AF08 - ldr r0, [r5] - str r0, [r4, 0xC] - b _0803AF2C - .align 2, 0 -_0803AEFC: .4byte gUnknown_203B3F8 -_0803AF00: .4byte gDebug_LevelText -_0803AF04: .4byte gUnknown_80E7F2C -_0803AF08: - adds r3, 0x1 - cmp r3, r6 - bge _0803AF2C - ldr r0, _0803AF34 - ldr r2, [r0] - lsls r1, r3, 1 - adds r0, r2, 0 - adds r0, 0xD0 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _0803AF08 - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0x94 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0xC] -_0803AF2C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803AF34: .4byte gUnknown_203B3F8 - thumb_func_end sub_803AEB0 - - .align 2,0 diff --git a/asm/friend_area_action_menu.s b/asm/friend_area_action_menu.s index 0defc5dd3..2db2ec8f6 100644 --- a/asm/friend_area_action_menu.s +++ b/asm/friend_area_action_menu.s @@ -420,56 +420,4 @@ _0802778E: bx r0 thumb_func_end sub_80276A8 - thumb_func_start sub_8027794 -sub_8027794: - push {r4,lr} - ldr r4, _080277F0 - ldr r0, [r4] - movs r1, 0xB6 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - movs r2, 0x14 - bl MemoryFill16 - ldr r4, [r4] - movs r3, 0 - movs r0, 0x8E - lsls r0, 1 - adds r1, r4, r0 - ldr r0, _080277F4 - ldr r0, [r0] - str r0, [r1] - movs r0, 0x90 - lsls r0, 1 - adds r1, r4, r0 - movs r0, 0x2 - str r0, [r1] - movs r2, 0x1 - movs r0, 0x92 - lsls r0, 1 - adds r1, r4, r0 - ldr r0, _080277F8 - ldr r0, [r0] - str r0, [r1] - movs r0, 0x94 - lsls r0, 1 - adds r1, r4, r0 - movs r0, 0x3 - str r0, [r1] - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - str r3, [r0] - adds r1, 0x4 - adds r0, r4, r1 - str r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080277F0: .4byte gUnknown_203B2BC -_080277F4: .4byte gUnknown_80D4920 -_080277F8: .4byte gUnknown_80D4928 - thumb_func_end sub_8027794 - .align 2,0 diff --git a/include/friend_area_action_menu.h b/include/friend_area_action_menu.h index 0bfb48660..399d0b4d4 100644 --- a/include/friend_area_action_menu.h +++ b/include/friend_area_action_menu.h @@ -27,11 +27,7 @@ struct unkStruct_203B2BC u8 fill101[0x11C - 0x104]; struct MenuItem menuItems[4]; u8 fill120[0x16C - 0x13C]; - - // Structure of some sort - u16 unk16C; - u8 fill170[0x180 - 0x170]; - + u16 unk16C[10]; struct UnkTextStruct2 unk180[4]; }; diff --git a/ld_script.txt b/ld_script.txt index 4a7076269..cd453cf52 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -181,8 +181,6 @@ SECTIONS { src/debug_menu.o(.text); src/debug_menu_mid.o(.text); asm/debug_menu_1.o(.text); - src/debug_menu_2.o(.text); - asm/debug_menu_2.o(.text); src/debug_menu_1.o(.text); asm/code_803B050.o(.text); src/code_803B050.o(.text); diff --git a/src/debug_menu_1.c b/src/debug_menu_1.c index cfa79fe38..e19625455 100644 --- a/src/debug_menu_1.c +++ b/src/debug_menu_1.c @@ -1,6 +1,12 @@ #include "global.h" #include "pokemon.h" #include "debug_menu.h" +#include "memory.h" +#include "text.h" +#include "input.h" +#include "menu.h" +#include "menu_input.h" + extern struct unkStruct_203B3F8 *gUnknown_203B3F8; extern u32 sub_8013BBC(u32 *); @@ -13,6 +19,190 @@ extern u32 sub_8023A94(u32); extern s16 sub_8023B44(void); extern void sub_8023C60(void); +extern struct UnkTextStruct2 gUnknown_80E7ED4; +extern struct UnkTextStruct2 gUnknown_80E7EEC; +extern struct UnkTextStruct2 gUnknown_80E7F04; +extern u8 gDebug_NumberText2[]; +extern u8 gDebug_LevelText[]; +extern u8 gUnknown_80E7F2C[]; + +extern void sub_8008C54(u32); +extern void sub_80073B8(u32); +extern void sub_8013C68(u32 *); +extern void sub_80073E0(u32); +extern void sub_8023DA4(void); +extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32); + +extern void sub_803ACE8(); +extern void sub_803AD88(); +extern void sub_803AF38(); +extern void sub_803AF88(); +extern void sub_803AFE8(); +extern void sub_803B034(); +extern void sub_8023868(u32, u32, u32, u32); +extern void sub_8023B7C(u32); +extern void sub_8013AA0(u32 *); +extern void sub_801602C(u32, u8 *); + +extern void sub_803AEB0(); + + +u32 sub_803AC24(void) +{ + gUnknown_203B3F8 = MemoryAlloc(sizeof(struct unkStruct_203B3F8), 8); + sub_803ACD0(0); + return 1; +} + +u32 sub_803AC48(void) +{ + switch(gUnknown_203B3F8->state) + { + case 0: + sub_803ACD0(1); + break; + case 1: + case 2: + sub_803AF38(); + break; + case 3: + sub_803AF88(); + break; + case 5: + sub_803AFE8(); + break; + case 6: + sub_803B034(); + break; + case 4: + case 7: + default: + return 3; + } + return 0; +} + +void sub_803ACB4(void) +{ + if(gUnknown_203B3F8 != NULL) + { + MemoryFree(gUnknown_203B3F8); + gUnknown_203B3F8 = NULL; + } +} + +void sub_803ACD0(u32 newState) +{ + gUnknown_203B3F8->state = newState; + sub_803ACE8(); + sub_803AD88(); +} + +void sub_803ACE8(void) +{ + s32 index; + sub_8006518(gUnknown_203B3F8->unkE0); + switch(gUnknown_203B3F8->state) + { + case 3: + sub_803AEB0(); + gUnknown_203B3F8->unkE0[2] = gUnknown_80E7EEC; + sub_8012CAC(&gUnknown_203B3F8->unkE0[2], gUnknown_203B3F8->unk90); + break; + case 5: + gUnknown_203B3F8->unkE0[3] = gUnknown_80E7F04; + break; + default: + for(index = 0; index < 4; index++) + { + gUnknown_203B3F8->unkE0[index] = gUnknown_80E7ED4; + } + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B3F8->unkE0, 1, 1); +} + +void sub_803AD88(void) +{ + switch(gUnknown_203B3F8->state) + { + case 1: + sub_8023868(1, 0, 0, 10); + break; + case 2: + sub_8023B7C(1); + break; + case 3: + sub_8023DA4(); + sub_8012D60(&gUnknown_203B3F8->unk10, gUnknown_203B3F8->unk90, 0, gUnknown_203B3F8->unkD0, gUnknown_203B3F8->menuAction, 2); + break; + case 5: + gUnknown_203B3F8->unk70 = 3; + gUnknown_203B3F8->unk68 = 1; + gUnknown_203B3F8->unk6C = 0x64; + gUnknown_203B3F8->unk64 = gUnknown_203B3F8->pokemon->unkHasNextStage; + gUnknown_203B3F8->unk74 = 3; + gUnknown_203B3F8->unk78 = &gUnknown_203B3F8->unkE0[3]; + gUnknown_203B3F8->unk7C = 0x2C; + gUnknown_203B3F8->unk80 = 0x12; + sub_8013AA0(&gUnknown_203B3F8->unk60); + sub_803AE58(); + break; + case 6: + sub_801602C(2, gUnknown_203B3F8->pokemon->name); + case 0: + case 4: + case 7: + default: + break; + + } +} + +void sub_803AE58(void) +{ + sub_8008C54(gUnknown_203B3F8->unk74); + sub_80073B8(gUnknown_203B3F8->unk74); + xxx_call_draw_string(4, 0, gDebug_NumberText2, gUnknown_203B3F8->unk74, 0); + sub_8013C68(&gUnknown_203B3F8->unk60); + sub_80073E0(gUnknown_203B3F8->unk74); + sub_8023DA4(); + sub_8012EA4(&gUnknown_203B3F8->unk10, 0); +} + +void sub_803AEB0(void) +{ + + s32 index; + s32 loopMax; + u8 *nullText; + s32 menuAction; + struct unkStruct_203B3F8 *preload; + + MemoryFill16(gUnknown_203B3F8->unkD0,0,sizeof(gUnknown_203B3F8->unkD0)); + + preload = gUnknown_203B3F8; + nullText = NULL; + preload->unk90[0].text = gDebug_LevelText; + preload->unk90[0].menuAction = 4; + menuAction = 1; + preload->unk90[1].text = gUnknown_80E7F2C; + preload->unk90[1].menuAction = 5; + loopMax = 2; + preload->unk90[2].text = nullText; + preload->unk90[2].menuAction = menuAction; + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B3F8->unkD0[index] == 0) + { + gUnknown_203B3F8->menuAction = gUnknown_203B3F8->unk90[index].menuAction; + break; + } + } +} + void sub_803AF38(void) { switch(sub_8023A94(1)) diff --git a/src/debug_menu_2.c b/src/debug_menu_2.c deleted file mode 100644 index 7dc2b191e..000000000 --- a/src/debug_menu_2.c +++ /dev/null @@ -1,161 +0,0 @@ -#include "global.h" -#include "memory.h" -#include "pokemon.h" -#include "text.h" -#include "input.h" -#include "menu.h" -#include "debug_menu.h" -#include "menu_input.h" - -extern struct unkStruct_203B3F8 *gUnknown_203B3F8; -extern struct UnkTextStruct2 gUnknown_80E7ED4; -extern struct UnkTextStruct2 gUnknown_80E7EEC; -extern struct UnkTextStruct2 gUnknown_80E7F04; -extern u8 gDebug_NumberText2[]; - -extern void sub_8008C54(u32); -extern void sub_80073B8(u32); -extern void sub_8013C68(u32 *); -extern void sub_80073E0(u32); -extern void sub_8023DA4(void); -extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32); - -void sub_803ACD0(u32); -extern void sub_803ACE8(); -extern void sub_803AD88(); -extern void sub_803AF38(); -extern void sub_803AF88(); -extern void sub_803AFE8(); -extern void sub_803B034(); -extern void sub_8023868(u32, u32, u32, u32); -extern void sub_8023B7C(u32); -extern void sub_8023DA4(); -extern void sub_8013AA0(u32 *); -extern void sub_803AE58(); -extern void sub_801602C(u32, u8 *); - -extern void sub_803AEB0(); - -u32 sub_803AC24(void) -{ - gUnknown_203B3F8 = MemoryAlloc(sizeof(struct unkStruct_203B3F8), 8); - sub_803ACD0(0); - return 1; -} - -u32 sub_803AC48(void) -{ - switch(gUnknown_203B3F8->state) - { - case 0: - sub_803ACD0(1); - break; - case 1: - case 2: - sub_803AF38(); - break; - case 3: - sub_803AF88(); - break; - case 5: - sub_803AFE8(); - break; - case 6: - sub_803B034(); - break; - case 4: - case 7: - default: - return 3; - } - return 0; -} - -void sub_803ACB4(void) -{ - if(gUnknown_203B3F8 != NULL) - { - MemoryFree(gUnknown_203B3F8); - gUnknown_203B3F8 = NULL; - } -} - -void sub_803ACD0(u32 newState) -{ - gUnknown_203B3F8->state = newState; - sub_803ACE8(); - sub_803AD88(); -} - -void sub_803ACE8(void) -{ - s32 index; - sub_8006518(gUnknown_203B3F8->unkE0); - switch(gUnknown_203B3F8->state) - { - case 3: - sub_803AEB0(); - gUnknown_203B3F8->unkE0[2] = gUnknown_80E7EEC; - sub_8012CAC(&gUnknown_203B3F8->unkE0[2], gUnknown_203B3F8->unk90); - break; - case 5: - gUnknown_203B3F8->unkE0[3] = gUnknown_80E7F04; - break; - default: - for(index = 0; index < 4; index++) - { - gUnknown_203B3F8->unkE0[index] = gUnknown_80E7ED4; - } - break; - } - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B3F8->unkE0, 1, 1); -} - -void sub_803AD88(void) -{ - switch(gUnknown_203B3F8->state) - { - case 1: - sub_8023868(1, 0, 0, 10); - break; - case 2: - sub_8023B7C(1); - break; - case 3: - sub_8023DA4(); - sub_8012D60(&gUnknown_203B3F8->unk10, gUnknown_203B3F8->unk90, 0, gUnknown_203B3F8->unkD0, gUnknown_203B3F8->menuAction, 2); - break; - case 5: - gUnknown_203B3F8->unk70 = 3; - gUnknown_203B3F8->unk68 = 1; - gUnknown_203B3F8->unk6C = 0x64; - gUnknown_203B3F8->unk64 = gUnknown_203B3F8->pokemon->unkHasNextStage; - gUnknown_203B3F8->unk74 = 3; - gUnknown_203B3F8->unk78 = &gUnknown_203B3F8->unkE0[3]; - gUnknown_203B3F8->unk7C = 0x2C; - gUnknown_203B3F8->unk80 = 0x12; - sub_8013AA0(&gUnknown_203B3F8->unk60); - sub_803AE58(); - break; - case 6: - sub_801602C(2, gUnknown_203B3F8->pokemon->name); - case 0: - case 4: - case 7: - default: - break; - - } -} - -void sub_803AE58(void) -{ - sub_8008C54(gUnknown_203B3F8->unk74); - sub_80073B8(gUnknown_203B3F8->unk74); - xxx_call_draw_string(4, 0, gDebug_NumberText2, gUnknown_203B3F8->unk74, 0); - sub_8013C68(&gUnknown_203B3F8->unk60); - sub_80073E0(gUnknown_203B3F8->unk74); - sub_8023DA4(); - sub_8012EA4(&gUnknown_203B3F8->unk10, 0); -} diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index a99dfaead..94ce64b6e 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -247,7 +247,7 @@ void sub_8027274(void) case 3: sub_8027D40(3,&gUnknown_203B2BC->item2); sub_8023DA4(); - sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction1,2); + sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction1,2); break; case 4: sub_8024458(gUnknown_203B2BC->targetPoke,2); @@ -263,7 +263,7 @@ void sub_8027274(void) break; case 0xc: sub_801A9E0(); - sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction2,2); + sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,gUnknown_203B2BC->unk16C,gUnknown_203B2BC->menuAction2,2); break; case 0xd: HeldItemToSlot(&slot, &gUnknown_203B2BC->itemToGive); diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c index 2f8d39e91..29bf3b254 100644 --- a/src/friend_area_action_menu_1.c +++ b/src/friend_area_action_menu_1.c @@ -1,4 +1,5 @@ #include "global.h" +#include "memory.h" #include "text.h" #include "input.h" #include "menu.h" @@ -68,6 +69,27 @@ ALIGNED(4) const u8 gUnknown_80DD958[] = _("Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_ static const u8 filler[] = "pksdir0"; +extern u8 *gUnknown_80D4920[]; +extern u8 *gUnknown_80D4928[]; + +void sub_8027794(void) +{ + struct unkStruct_203B2BC *puVar1; + u8 *nullText; + s32 menuAction; + + MemoryFill16(gUnknown_203B2BC->unk16C,0,sizeof(gUnknown_203B2BC->unk16C)); + puVar1 = gUnknown_203B2BC; + nullText = NULL; + puVar1->menuItems[0].text = *gUnknown_80D4920; + gUnknown_203B2BC->menuItems[0].menuAction = 0x2; + menuAction = 1; + gUnknown_203B2BC->menuItems[1].text = *gUnknown_80D4928; + gUnknown_203B2BC->menuItems[1].menuAction = 3; + gUnknown_203B2BC->menuItems[2].text = nullText; + gUnknown_203B2BC->menuItems[2].menuAction = menuAction; +} + void sub_80277FC(void) { struct PokemonStruct *pokeStruct; From 204dc302be5371f87beccfefe33ab31071d61d8b Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Thu, 18 May 2023 07:45:14 -0700 Subject: [PATCH 04/21] lots of menu cleanup and some menu decomp --- asm/kangaskhan_storage_1.s | 274 --------- asm/kangaskhan_storage_2.s | 359 ----------- asm/kecleon_items.s | 271 --------- ld_script.txt | 4 - src/code_801B3C0.c | 20 +- src/debug_menu_1.c | 23 +- src/debug_menu_mid.c | 22 +- src/kangaskhan_storage_1.c | 1160 +++++++++++++++++++++++++++++++++++- src/kangaskhan_storage_2.c | 633 -------------------- src/kangaskhan_storage_3.c | 348 ----------- src/kecleon_items_1.c | 140 ++++- src/luminous_cave.c | 108 ++-- src/makuhita_dojo_1.c | 27 +- src/options_menu.c | 47 +- src/wonder_mail_3.c | 22 +- src/wonder_mail_3_mid.c | 21 +- 16 files changed, 1411 insertions(+), 2068 deletions(-) delete mode 100644 asm/kangaskhan_storage_1.s delete mode 100644 asm/kangaskhan_storage_2.s delete mode 100644 src/kangaskhan_storage_2.c delete mode 100644 src/kangaskhan_storage_3.c diff --git a/asm/kangaskhan_storage_1.s b/asm/kangaskhan_storage_1.s deleted file mode 100644 index 558b83c84..000000000 --- a/asm/kangaskhan_storage_1.s +++ /dev/null @@ -1,274 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80175FC -sub_80175FC: - push {r4-r7,lr} - ldr r4, _0801767C - ldr r0, [r4] - adds r0, 0x4C - movs r1, 0 - movs r2, 0xA - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _08017680 - ldr r0, [r0] - str r0, [r3, 0x24] - movs r0, 0x2 - str r0, [r3, 0x28] - movs r1, 0x1 - ldr r0, _08017684 - ldr r0, [r0] - str r0, [r3, 0x2C] - movs r0, 0x3 - str r0, [r3, 0x30] - ldr r0, _08017688 - ldr r0, [r0] - str r0, [r3, 0x34] - movs r0, 0x6 - str r0, [r3, 0x38] - ldr r0, _0801768C - ldr r0, [r0] - str r0, [r3, 0x3C] - str r1, [r3, 0x40] - movs r6, 0x4 - str r2, [r3, 0x44] - str r1, [r3, 0x48] - movs r5, 0 - mov r12, r3 - adds r3, 0x28 - mov r2, r12 - adds r2, 0x4C -_08017648: - ldrh r0, [r2] - cmp r0, 0 - bne _08017658 - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x18] - cmp r1, r0 - beq _080176B2 -_08017658: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _08017648 - movs r5, 0 - cmp r5, r6 - bge _080176B2 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4C - ldrh r0, [r0] - cmp r0, 0 - bne _08017690 - ldr r0, [r1, 0x28] - str r0, [r1, 0x18] - b _080176B2 - .align 2, 0 -_0801767C: .4byte gUnknown_203B208 -_08017680: .4byte gUnknown_80D4958 -_08017684: .4byte gUnknown_80D4964 -_08017688: .4byte gUnknown_80D4970 -_0801768C: .4byte gUnknown_80D4934 -_08017690: - adds r5, 0x1 - cmp r5, r6 - bge _080176B2 - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x4C - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08017690 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x28 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x18] -_080176B2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80175FC - - thumb_func_start sub_80176B8 -sub_80176B8: - push {r4-r7,lr} - ldr r4, _08017724 - ldr r0, [r4] - adds r0, 0x4C - movs r1, 0 - movs r2, 0xA - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _08017728 - ldr r0, [r0] - str r0, [r3, 0x24] - movs r0, 0x2 - str r0, [r3, 0x28] - movs r1, 0x1 - ldr r0, _0801772C - ldr r0, [r0] - str r0, [r3, 0x2C] - movs r0, 0x6 - str r0, [r3, 0x30] - movs r6, 0x2 - str r2, [r3, 0x34] - str r1, [r3, 0x38] - movs r5, 0 - mov r12, r3 - adds r3, 0x28 - mov r2, r12 - adds r2, 0x4C -_080176F2: - ldrh r0, [r2] - cmp r0, 0 - bne _08017702 - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x1C] - cmp r1, r0 - beq _08017752 -_08017702: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _080176F2 - movs r5, 0 - cmp r5, r6 - bge _08017752 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4C - ldrh r0, [r0] - cmp r0, 0 - bne _08017730 - ldr r0, [r1, 0x28] - str r0, [r1, 0x1C] - b _08017752 - .align 2, 0 -_08017724: .4byte gUnknown_203B208 -_08017728: .4byte gUnknown_80D4958 -_0801772C: .4byte gUnknown_80D4970 -_08017730: - adds r5, 0x1 - cmp r5, r6 - bge _08017752 - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x4C - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08017730 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x28 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x1C] -_08017752: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80176B8 - - thumb_func_start sub_8017758 -sub_8017758: - push {r4-r7,lr} - ldr r4, _080177C4 - ldr r0, [r4] - adds r0, 0x4C - movs r1, 0 - movs r2, 0xA - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _080177C8 - ldr r0, [r0] - str r0, [r3, 0x24] - movs r0, 0x3 - str r0, [r3, 0x28] - movs r1, 0x1 - ldr r0, _080177CC - ldr r0, [r0] - str r0, [r3, 0x2C] - movs r0, 0x6 - str r0, [r3, 0x30] - movs r6, 0x2 - str r2, [r3, 0x34] - str r1, [r3, 0x38] - movs r5, 0 - mov r12, r3 - adds r3, 0x28 - mov r2, r12 - adds r2, 0x4C -_08017792: - ldrh r0, [r2] - cmp r0, 0 - bne _080177A2 - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x20] - cmp r1, r0 - beq _080177F2 -_080177A2: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _08017792 - movs r5, 0 - cmp r5, r6 - bge _080177F2 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4C - ldrh r0, [r0] - cmp r0, 0 - bne _080177D0 - ldr r0, [r1, 0x28] - str r0, [r1, 0x20] - b _080177F2 - .align 2, 0 -_080177C4: .4byte gUnknown_203B208 -_080177C8: .4byte gUnknown_80D4964 -_080177CC: .4byte gUnknown_80D4970 -_080177D0: - adds r5, 0x1 - cmp r5, r6 - bge _080177F2 - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x4C - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080177D0 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x28 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x20] -_080177F2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8017758 - - .align 2,0 diff --git a/asm/kangaskhan_storage_2.s b/asm/kangaskhan_storage_2.s deleted file mode 100644 index 98fc275d8..000000000 --- a/asm/kangaskhan_storage_2.s +++ /dev/null @@ -1,359 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80182E4 -sub_80182E4: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - ldr r4, _080183DC - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - ldr r0, _080183E0 - ldr r0, [r0] - str r0, [r1, 0x20] - movs r0, 0x2 - str r0, [r1, 0x24] - bl GetNumberOfFilledInventorySlots - cmp r0, 0 - beq _0801831C - movs r0, 0 - bl sub_801CF50 - lsls r0, 24 - cmp r0, 0 - beq _08018324 -_0801831C: - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - strh r1, [r0] -_08018324: - movs r1, 0x1 - add r8, r1 - ldr r4, _080183DC - ldr r2, [r4] - mov r0, r8 - lsls r3, r0, 3 - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r3 - ldr r1, _080183E4 - ldr r1, [r1] - str r1, [r0] - adds r2, 0x24 - adds r2, r3 - movs r0, 0x3 - str r0, [r2] - movs r0, 0x1 - bl sub_801CF14 - lsls r0, 24 - cmp r0, 0 - bne _08018358 - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - ble _08018366 -_08018358: - ldr r0, [r4] - mov r2, r8 - lsls r1, r2, 1 - adds r0, 0x60 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] -_08018366: - movs r0, 0x1 - add r8, r0 - ldr r4, _080183DC - ldr r7, [r4] - mov r2, r8 - lsls r1, r2, 3 - adds r2, r7, 0 - adds r2, 0x20 - adds r3, r2, r1 - ldr r0, _080183E8 - ldr r0, [r0] - str r0, [r3] - adds r6, r7, 0 - adds r6, 0x24 - adds r1, r6, r1 - movs r3, 0x1 - str r3, [r1] - add r8, r3 - mov r1, r8 - lsls r0, r1, 3 - adds r2, r0 - movs r1, 0 - str r1, [r2] - adds r0, r6, r0 - str r3, [r0] - movs r5, 0 - mov r12, r4 - cmp r5, r8 - bge _080183C0 - adds r4, r7, 0 - adds r2, r4, 0 - adds r2, 0x60 - adds r3, r6, 0 -_080183A8: - ldrh r0, [r2] - cmp r0, 0 - bne _080183B6 - ldr r1, [r3] - ldr r0, [r4, 0x14] - cmp r1, r0 - beq _08018410 -_080183B6: - adds r2, 0x2 - adds r3, 0x8 - adds r5, 0x1 - cmp r5, r8 - blt _080183A8 -_080183C0: - movs r5, 0 - cmp r5, r8 - bge _08018410 - mov r2, r12 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x60 - ldrh r0, [r0] - cmp r0, 0 - bne _080183EC - ldr r0, [r1, 0x24] - str r0, [r1, 0x14] - b _08018410 - .align 2, 0 -_080183DC: .4byte gUnknown_203B20C -_080183E0: .4byte gUnknown_80D4958 -_080183E4: .4byte gUnknown_80D4964 -_080183E8: .4byte gUnknown_80D4934 -_080183EC: - adds r5, 0x1 - cmp r5, r8 - bge _08018410 - mov r0, r12 - ldr r2, [r0] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x60 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080183EC - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x24 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x14] -_08018410: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80182E4 - - thumb_func_start sub_801841C -sub_801841C: - push {r4-r7,lr} - ldr r4, _080184A0 - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - ldr r0, _080184A4 - ldr r0, [r0] - str r0, [r1, 0x20] - movs r0, 0x2 - str r0, [r1, 0x24] - ldr r0, [r1, 0xC] - bl sub_801ADA0 - lsls r0, 24 - cmp r0, 0 - bne _0801844C - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - strh r1, [r0] -_0801844C: - ldr r2, [r4] - movs r1, 0x1 - ldr r0, _080184A8 - ldr r0, [r0] - str r0, [r2, 0x28] - movs r0, 0x4 - str r0, [r2, 0x2C] - movs r5, 0x2 - movs r0, 0 - str r0, [r2, 0x30] - str r1, [r2, 0x34] - movs r3, 0 - adds r6, r4, 0 - mov r12, r2 - mov r4, r12 - adds r4, 0x60 - adds r2, 0x24 -_0801846E: - ldrh r0, [r4] - cmp r0, 0 - bne _0801847E - ldr r1, [r2] - mov r7, r12 - ldr r0, [r7, 0x18] - cmp r1, r0 - beq _080184CE -_0801847E: - adds r4, 0x2 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r5 - blt _0801846E - movs r3, 0 - cmp r3, r5 - bge _080184CE - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x60 - ldrh r0, [r0] - cmp r0, 0 - bne _080184AC - ldr r0, [r1, 0x24] - str r0, [r1, 0x18] - b _080184CE - .align 2, 0 -_080184A0: .4byte gUnknown_203B20C -_080184A4: .4byte gUnknown_80D4958 -_080184A8: .4byte gUnknown_80D4970 -_080184AC: - adds r3, 0x1 - cmp r3, r5 - bge _080184CE - ldr r2, [r6] - lsls r0, r3, 1 - adds r1, r2, 0 - adds r1, 0x60 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080184AC - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0x24 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x18] -_080184CE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_801841C - - thumb_func_start sub_80184D4 -sub_80184D4: - push {r4-r7,lr} - ldr r4, _08018554 - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - ldr r0, _08018558 - ldr r0, [r0] - str r0, [r1, 0x20] - movs r0, 0x3 - str r0, [r1, 0x24] - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - ble _08018500 - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - strh r1, [r0] -_08018500: - ldr r2, [r4] - movs r1, 0x1 - ldr r0, _0801855C - ldr r0, [r0] - str r0, [r2, 0x28] - movs r0, 0x4 - str r0, [r2, 0x2C] - movs r5, 0x2 - movs r0, 0 - str r0, [r2, 0x30] - str r1, [r2, 0x34] - movs r3, 0 - adds r6, r4, 0 - mov r12, r2 - mov r4, r12 - adds r4, 0x60 - adds r2, 0x24 -_08018522: - ldrh r0, [r4] - cmp r0, 0 - bne _08018532 - ldr r1, [r2] - mov r7, r12 - ldr r0, [r7, 0x1C] - cmp r1, r0 - beq _08018582 -_08018532: - adds r4, 0x2 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r5 - blt _08018522 - movs r3, 0 - cmp r3, r5 - bge _08018582 - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x60 - ldrh r0, [r0] - cmp r0, 0 - bne _08018560 - ldr r0, [r1, 0x24] - str r0, [r1, 0x1C] - b _08018582 - .align 2, 0 -_08018554: .4byte gUnknown_203B20C -_08018558: .4byte gUnknown_80D4964 -_0801855C: .4byte gUnknown_80D4970 -_08018560: - adds r3, 0x1 - cmp r3, r5 - bge _08018582 - ldr r2, [r6] - lsls r0, r3, 1 - adds r1, r2, 0 - adds r1, 0x60 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08018560 - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0x24 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x1C] -_08018582: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80184D4 - - .align 2,0 diff --git a/asm/kecleon_items.s b/asm/kecleon_items.s index 19dd37240..3ad8b3c1f 100644 --- a/asm/kecleon_items.s +++ b/asm/kecleon_items.s @@ -755,275 +755,4 @@ _080194F0: .4byte gKecleonShopDialogue _080194F4: .4byte 0x0000010d thumb_func_end UpdateKecleonStoreDialogue - thumb_func_start sub_80194F8 -sub_80194F8: - push {r4-r7,lr} - ldr r4, _08019580 - ldr r0, [r4] - adds r0, 0x74 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _08019584 - ldr r0, [r0] - str r0, [r3, 0x34] - movs r0, 0x2 - str r0, [r3, 0x38] - movs r1, 0x1 - ldr r0, _08019588 - ldr r0, [r0] - str r0, [r3, 0x3C] - movs r0, 0x3 - str r0, [r3, 0x40] - ldr r0, _0801958C - str r0, [r3, 0x44] - movs r0, 0x4 - str r0, [r3, 0x48] - ldr r0, _08019590 - ldr r0, [r0] - str r0, [r3, 0x4C] - movs r0, 0x7 - str r0, [r3, 0x50] - ldr r0, _08019594 - ldr r0, [r0] - str r0, [r3, 0x54] - str r1, [r3, 0x58] - movs r6, 0x5 - str r2, [r3, 0x5C] - str r1, [r3, 0x60] - movs r5, 0 - mov r12, r3 - adds r3, 0x38 - mov r2, r12 - adds r2, 0x74 -_0801954C: - ldrh r0, [r2] - cmp r0, 0 - bne _0801955C - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x28] - cmp r1, r0 - beq _080195BA -_0801955C: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _0801954C - movs r5, 0 - cmp r5, r6 - bge _080195BA - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x74 - ldrh r0, [r0] - cmp r0, 0 - bne _08019598 - ldr r0, [r1, 0x38] - str r0, [r1, 0x28] - b _080195BA - .align 2, 0 -_08019580: .4byte gUnknown_203B210 -_08019584: .4byte gUnknown_80D4978 -_08019588: .4byte gUnknown_80D4984 -_0801958C: .4byte gUnknown_80DB8A0 -_08019590: .4byte gUnknown_80D4970 -_08019594: .4byte gUnknown_80D4934 -_08019598: - adds r5, 0x1 - cmp r5, r6 - bge _080195BA - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x74 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08019598 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x38 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x28] -_080195BA: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80194F8 - - thumb_func_start sub_80195C0 -sub_80195C0: - push {r4-r7,lr} - ldr r4, _0801962C - ldr r0, [r4] - adds r0, 0x74 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _08019630 - ldr r0, [r0] - str r0, [r3, 0x34] - movs r0, 0x2 - str r0, [r3, 0x38] - movs r1, 0x1 - ldr r0, _08019634 - ldr r0, [r0] - str r0, [r3, 0x3C] - movs r0, 0x7 - str r0, [r3, 0x40] - movs r6, 0x2 - str r2, [r3, 0x44] - str r1, [r3, 0x48] - movs r5, 0 - mov r12, r3 - adds r3, 0x38 - mov r2, r12 - adds r2, 0x74 -_080195FA: - ldrh r0, [r2] - cmp r0, 0 - bne _0801960A - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x30] - cmp r1, r0 - beq _0801965A -_0801960A: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _080195FA - movs r5, 0 - cmp r5, r6 - bge _0801965A - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x74 - ldrh r0, [r0] - cmp r0, 0 - bne _08019638 - ldr r0, [r1, 0x38] - str r0, [r1, 0x30] - b _0801965A - .align 2, 0 -_0801962C: .4byte gUnknown_203B210 -_08019630: .4byte gUnknown_80D4978 -_08019634: .4byte gUnknown_80D4970 -_08019638: - adds r5, 0x1 - cmp r5, r6 - bge _0801965A - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x74 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08019638 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x38 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x30] -_0801965A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80195C0 - - thumb_func_start sub_8019660 -sub_8019660: - push {r4-r7,lr} - ldr r4, _080196CC - ldr r0, [r4] - adds r0, 0x74 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _080196D0 - ldr r0, [r0] - str r0, [r3, 0x34] - movs r0, 0x3 - str r0, [r3, 0x38] - movs r1, 0x1 - ldr r0, _080196D4 - ldr r0, [r0] - str r0, [r3, 0x3C] - movs r0, 0x7 - str r0, [r3, 0x40] - movs r6, 0x2 - str r2, [r3, 0x44] - str r1, [r3, 0x48] - movs r5, 0 - mov r12, r3 - adds r3, 0x38 - mov r2, r12 - adds r2, 0x74 -_0801969A: - ldrh r0, [r2] - cmp r0, 0 - bne _080196AA - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x2C] - cmp r1, r0 - beq _080196FA -_080196AA: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _0801969A - movs r5, 0 - cmp r5, r6 - bge _080196FA - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x74 - ldrh r0, [r0] - cmp r0, 0 - bne _080196D8 - ldr r0, [r1, 0x38] - str r0, [r1, 0x2C] - b _080196FA - .align 2, 0 -_080196CC: .4byte gUnknown_203B210 -_080196D0: .4byte gUnknown_80D4984 -_080196D4: .4byte gUnknown_80D4970 -_080196D8: - adds r5, 0x1 - cmp r5, r6 - bge _080196FA - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x74 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080196D8 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x38 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x2C] -_080196FA: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8019660 - .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index cd453cf52..4989f1ffa 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -101,10 +101,6 @@ SECTIONS { src/kangaskhan_storage.o(.text); asm/kangaskhan_storage.o(.text); src/kangaskhan_storage_1.o(.text); - asm/kangaskhan_storage_1.o(.text); - src/kangaskhan_storage_2.o(.text); - asm/kangaskhan_storage_2.o(.text); - src/kangaskhan_storage_3.o(.text); src/kecleon_items.o(.text); asm/kecleon_items.o(.text); src/kecleon_items_1.o(.text); diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c index 7c29948cc..f36649b6c 100644 --- a/src/code_801B3C0.c +++ b/src/code_801B3C0.c @@ -501,15 +501,15 @@ void sub_801B874(void) void sub_801BB20(void) { - struct unkStruct_203B234 *preload; - u8 *nullText; + s32 loopMax; - preload = gUnknown_203B234; - nullText = NULL; - preload->unkCC[0].text = gKangaskhanTrashToolboxItem; - preload->unkCC[0].menuAction = 4; - preload->unkCC[1].text = gKangaskhanTrashReceivedItem; - preload->unkCC[1].menuAction = 5; - preload->unkCC[2].text = nullText; - preload->unkCC[2].menuAction = -1; + loopMax = 0; + gUnknown_203B234->unkCC[loopMax].text = gKangaskhanTrashToolboxItem; + gUnknown_203B234->unkCC[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B234->unkCC[loopMax].text = gKangaskhanTrashReceivedItem; + gUnknown_203B234->unkCC[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B234->unkCC[loopMax].text = NULL; + gUnknown_203B234->unkCC[loopMax].menuAction = -1; } diff --git a/src/debug_menu_1.c b/src/debug_menu_1.c index e19625455..a680eacba 100644 --- a/src/debug_menu_1.c +++ b/src/debug_menu_1.c @@ -173,25 +173,20 @@ void sub_803AE58(void) void sub_803AEB0(void) { - s32 index; s32 loopMax; - u8 *nullText; - s32 menuAction; - struct unkStruct_203B3F8 *preload; MemoryFill16(gUnknown_203B3F8->unkD0,0,sizeof(gUnknown_203B3F8->unkD0)); + loopMax = 0; - preload = gUnknown_203B3F8; - nullText = NULL; - preload->unk90[0].text = gDebug_LevelText; - preload->unk90[0].menuAction = 4; - menuAction = 1; - preload->unk90[1].text = gUnknown_80E7F2C; - preload->unk90[1].menuAction = 5; - loopMax = 2; - preload->unk90[2].text = nullText; - preload->unk90[2].menuAction = menuAction; + gUnknown_203B3F8->unk90[loopMax].text = gDebug_LevelText; + gUnknown_203B3F8->unk90[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B3F8->unk90[loopMax].text = gUnknown_80E7F2C; + gUnknown_203B3F8->unk90[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B3F8->unk90[loopMax].text = NULL; + gUnknown_203B3F8->unk90[loopMax].menuAction = 1; for(index = 0; index < loopMax; index++) { diff --git a/src/debug_menu_mid.c b/src/debug_menu_mid.c index 57881392f..8feda8987 100644 --- a/src/debug_menu_mid.c +++ b/src/debug_menu_mid.c @@ -227,23 +227,21 @@ void sub_803A690(void) void sub_803A6F0(void) { - s32 menuAction; - struct unkStruct_203B3F0 *preload; + s32 loopMax = 0; - gUnknown_203B3F0->menuItems[0].text = &gDebug_NumberText; - gUnknown_203B3F0->menuItems[0].menuAction = 2; + gUnknown_203B3F0->menuItems[loopMax].text = &gDebug_NumberText; + gUnknown_203B3F0->menuItems[loopMax].menuAction = 2; gUnknown_203B3F0->menuAction = 2; if (!IsNotMoneyOrUsedTMItem(gUnknown_203B3F0->id)) { - gUnknown_203B3F0->menuItems[0].menuAction = -1; + gUnknown_203B3F0->menuItems[loopMax].menuAction = -1; gUnknown_203B3F0->menuAction = 3; } - preload = gUnknown_203B3F0; - // this var gets loaded in between the sets... very dumb - menuAction = 1; - preload->menuItems[1].text = *gUnknown_80D4970; - preload->menuItems[1].menuAction = 3; - preload->menuItems[2].text = NULL; - preload->menuItems[2].menuAction = menuAction; + loopMax += 1; + gUnknown_203B3F0->menuItems[loopMax].text = *gUnknown_80D4970; + gUnknown_203B3F0->menuItems[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B3F0->menuItems[loopMax].text = NULL; + gUnknown_203B3F0->menuItems[loopMax].menuAction = 1; } void sub_803A740(void) diff --git a/src/kangaskhan_storage_1.c b/src/kangaskhan_storage_1.c index 685beb005..78195283c 100644 --- a/src/kangaskhan_storage_1.c +++ b/src/kangaskhan_storage_1.c @@ -1,22 +1,92 @@ +#include "constants/item.h" #include "global.h" -#include "file_system.h" -#include "pokemon.h" #include "input.h" +#include "memory.h" +#include "text.h" #include "item.h" +#include "team_inventory.h" +#include "input.h" #include "kangaskhan_storage.h" #include "menu_input.h" + extern struct unkStruct_203B208 *gUnknown_203B208; +extern struct unkStruct_203B20C *gUnknown_203B20C; extern u8 gUnknown_80DB7A8; -extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32); -extern void sub_801CCD8(); +extern void sub_8017F10(u32); +extern void sub_8018588(void); +extern void sub_8018620(void); +extern void sub_8018904(void); +extern void sub_8018AC8(void); +extern void sub_80186F8(void); +extern void sub_8018854(void); +extern void sub_80189C8(void); +extern void sub_8018AE4(void); + + +extern void sub_8017F28(); +extern void sub_8018100(); +extern void UpdateKangaskhanStorageState(u32); +extern s32 sub_80144A4(s32 *); +extern void sub_801B450(); +extern u32 sub_801B410(void); + +extern void sub_801CBB8(); + +extern bool8 sub_801ADA0(u32); +extern void sub_8099690(u32); +extern u32 sub_8013BBC(u32 *); +extern void sub_8017598(void); + +extern u32 sub_801CA08(u32); +extern u32 sub_801CFB8(void); +extern u8 sub_801CB24(); extern void sub_801AD34(u32); +extern u32 sub_801A6E8(u32); +extern u32 sub_801AEA8(void); +extern u32 sub_801A8AC(void); +extern void sub_801A928(void); +extern void sub_80182E4(void); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_8013C68(u32 *); extern void sub_80073E0(u32); +extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32); + +extern void sub_801A9E0(); +extern void sub_801841C(); +extern void sub_801CCD8(); +extern void sub_80184D4(); +extern void sub_8018280(); +extern void sub_8013AA0(u32 *); +extern void sub_801B3C0(struct Item *); +extern void sub_801A5D8(u32, u32, u32, u32); +extern void sub_801C8C4(u32, u32, u32, u32); +extern void sub_801CB5C(u32); +extern void sub_801A8D0(u32); +extern u32 sub_801CFE0(u8); +extern void sub_801CF94(void); +extern void sub_801AE84(void); +extern s32 sub_801AED0(s32); +extern u8 sub_801CF14(u32); +extern u8 sub_801CF50(u32); + +extern struct UnkTextStruct2 gUnknown_80DB7B8; +extern struct UnkTextStruct2 gUnknown_80DB7E8; +extern struct UnkTextStruct2 gUnknown_80DB7D0; +extern struct UnkTextStruct2 gUnknown_80DB800; +extern struct UnkTextStruct2 gUnknown_80DB818; +extern u8 gUnknown_80DB830[]; +extern u8 *gUnknown_80D4920[]; +extern u8 *gUnknown_80D4928[]; + +extern u8 *gUnknown_80D4970[]; +extern u8 *gUnknown_80D4964[]; +extern u8 *gUnknown_80D4958[]; +extern u8 *gUnknown_80D4984[]; +extern u8 *gUnknown_80D4934[]; void sub_8017598(void) { @@ -30,3 +100,1085 @@ void sub_8017598(void) sub_801AD34(0); sub_8012EA4(&gUnknown_203B208->unk58,0); } + +void sub_80175FC(void) +{ + int index; + + s32 loopMax; + MemoryFill16(gUnknown_203B208->unk4C,0, sizeof(gUnknown_203B208->unk4C)); + loopMax = 0; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4958; + gUnknown_203B208->unk24[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4964; + gUnknown_203B208->unk24[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4970; + gUnknown_203B208->unk24[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4934; + gUnknown_203B208->unk24[loopMax].menuAction = 1; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = NULL; + gUnknown_203B208->unk24[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B208->unk4C[index] == 0) + { + if(gUnknown_203B208->unk24[index].menuAction == gUnknown_203B208->menuAction1) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B208->unk4C[index] == 0) + { + gUnknown_203B208->menuAction1 = gUnknown_203B208->unk24[index].menuAction; + break; + } + } +} + +void sub_80176B8(void) +{ + int index; + s32 loopMax; + + MemoryFill16(gUnknown_203B208->unk4C,0,sizeof(gUnknown_203B208->unk4C)); + loopMax = 0; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4958; + gUnknown_203B208->unk24[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4970; + gUnknown_203B208->unk24[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = NULL; + gUnknown_203B208->unk24[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B208->unk4C[index] == 0) + { + if(gUnknown_203B208->unk24[index].menuAction == gUnknown_203B208->menuAction2) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B208->unk4C[index] == 0) + { + gUnknown_203B208->menuAction2 = gUnknown_203B208->unk24[index].menuAction; + break; + } + } +} + +void sub_8017758(void) +{ + int index; + s32 loopMax; + + MemoryFill16(gUnknown_203B208->unk4C,0,sizeof(gUnknown_203B208->unk4C)); + loopMax = 0; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4964; + gUnknown_203B208->unk24[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4970; + gUnknown_203B208->unk24[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = NULL; + gUnknown_203B208->unk24[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B208->unk4C[index] == 0) + { + if(gUnknown_203B208->unk24[index].menuAction == gUnknown_203B208->menuAction3) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B208->unk4C[index] == 0) + { + gUnknown_203B208->menuAction3 = gUnknown_203B208->unk24[index].menuAction; + break; + } + } +} + +void sub_80177F8(void) +{ + s32 loopMax; + + loopMax = 0; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4920; + gUnknown_203B208->unk24[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = *gUnknown_80D4928; + gUnknown_203B208->unk24[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B208->unk24[loopMax].text = NULL; + gUnknown_203B208->unk24[loopMax].menuAction = 1; +} + +void sub_8017828(void) +{ + s32 menuAction; + + if (sub_80144A4(&menuAction) == 0) { + if (menuAction != 1) { + gUnknown_203B208->menuAction1 = menuAction; + } + switch(menuAction) + { + case 2: + if (GetNumberOfFilledInventorySlots() == 0) { + UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_NO_INV_ITEMS); + } + else if (sub_801CF50(0) != 0) { + UpdateKangaskhanStorageState(8); + } + else { + UpdateKangaskhanStorageState(0xb); + } + break; + case 3: + if (sub_801CF14(1) != 0) { + UpdateKangaskhanStorageState(7); + } + else if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) { + UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_TOO_MANY_ITEMS); + } + else { + UpdateKangaskhanStorageState(0x14); + } + break; + case 6: + UpdateKangaskhanStorageState(2); + break; + case 1: + UpdateKangaskhanStorageState(3); + break; + } + } +} + +void sub_80178D0(void) +{ + s32 menuAction; + + if (sub_80144A4(&menuAction) == 0) { + switch(menuAction) + { + case 4: + MoveToStorage(&gUnknown_203B208->storedItem); + ShiftItemsDownFrom(gUnknown_203B208->itemIndex); + FillInventoryGaps(); + UpdateKangaskhanStorageState(0x13); + break; + case 1: + case 5: + UpdateKangaskhanStorageState(0xe); + break; + } + } +} + +void sub_8017928(void) +{ + int menuAction; + struct BulkItem item; + + if (sub_80144A4(&menuAction) == 0) { + switch(menuAction) + { + case 4: + gTeamInventory_203B460->teamStorage[gUnknown_203B208->storedItem.id] -= gUnknown_203B208->storedItem.quantity; + item.id = gUnknown_203B208->storedItem.id; + item.quantity = gUnknown_203B208->storedItem.quantity; + AddHeldItemToInventory(&item); + UpdateKangaskhanStorageState(0x1d); + break; + case 1: + case 5: + UpdateKangaskhanStorageState(0x17); + break; + } + } +} + +void sub_80179A8(void) +{ + s32 index; + s32 menuAction; + + if (sub_80144A4(&menuAction) == 0) { + switch(menuAction) + { + case 4: + for(index = 0; index < INVENTORY_SIZE; index++) + { + if (sub_801AED0(index) != 0) { + MoveToStorage(&gTeamInventory_203B460->teamItems[index]); + gTeamInventory_203B460->teamItems[index].id = 0; + gTeamInventory_203B460->teamItems[index].flags = 0; + } + } + FillInventoryGaps(); + sub_801AE84(); + UpdateKangaskhanStorageState(0x13); + break; + case 1: + case 5: + UpdateKangaskhanStorageState(0xe); + break; + } + } +} + +void sub_8017A1C(void) +{ + s32 itemID; + int menuAction; + struct BulkItem item; + + if (sub_80144A4(&menuAction) == 0) { + + switch(menuAction) + { + case 4: + for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++) + { + if(sub_801CFE0(itemID) != 0) + { + item.id = itemID; + if(IsThrowableItem(item.id)) + if(gTeamInventory_203B460->teamStorage[item.id] > 0x63) + { + item.quantity = 0x63; + } + else + { + item.quantity = gTeamInventory_203B460->teamStorage[item.id]; + } + else + { + item.quantity = 1; + } + gTeamInventory_203B460->teamStorage[item.id] -= item.quantity; + AddHeldItemToInventory(&item); + } + } + FillInventoryGaps(); + sub_801CF94(); + UpdateKangaskhanStorageState(0x1d); + break; + case 1: + case 5: + UpdateKangaskhanStorageState(0x17); + break; + } + } +} + +void sub_8017AF8(void) +{ + switch(sub_801A6E8(1)) + { + case 3: + if(sub_801AEA8() != 0) + { + sub_8099690(0); + UpdateKangaskhanStorageState(0x12); + } + else + { + gUnknown_203B208->itemIndex = sub_801A8AC(); + gUnknown_203B208->storedItem = gTeamInventory_203B460->teamItems[gUnknown_203B208->itemIndex]; + UpdateKangaskhanStorageState(0xF); + } + break; + case 4: + gUnknown_203B208->itemIndex = sub_801A8AC(); + gUnknown_203B208->storedItem = gTeamInventory_203B460->teamItems[gUnknown_203B208->itemIndex]; + UpdateKangaskhanStorageState(0x10); + break; + case 2: + sub_801A928(); + UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_MAIN_MENU); + break; + } +} + +void sub_8017B88(void) +{ + switch(sub_801CA08(1)) + { + case 3: + if(sub_801CFB8() != 0){ + UpdateKangaskhanStorageState(0x1C); + } + else + { + gUnknown_203B208->id = sub_801CB24(); + xxx_init_itemslot_8090A8C(&gUnknown_203B208->storedItem, gUnknown_203B208->id, 0); + gUnknown_203B208->storedItem.quantity = 1; + UpdateKangaskhanStorageState(0x19); + } + break; + case 4: + gUnknown_203B208->id = sub_801CB24(); + xxx_init_itemslot_8090A8C(&gUnknown_203B208->storedItem, gUnknown_203B208->id, 0); + gUnknown_203B208->storedItem.quantity = 1; + UpdateKangaskhanStorageState(0x1A); + break; + case 2: + sub_801CBB8(); + UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_MAIN_MENU); + break; + case 1: + sub_801AD34(0); + break; + } +} + +void sub_8017C28(void) +{ + sub_801CA08(0); + sub_8012FD8(&gUnknown_203B208->unk58); + switch(sub_8013BBC(&gUnknown_203B208->unkA8)) + { + case 1: + sub_8017598(); + break; + case 3: + gUnknown_203B208->storedItem.quantity = gUnknown_203B208->unkA8; + UpdateKangaskhanStorageState(0x1B); + break; + case 2: + UpdateKangaskhanStorageState(0x17); + break; + case 0: + default: + break; + } +} + +void sub_8017C7C(void) +{ + s32 menuAction; + menuAction = 0; + sub_801A6E8(0); + if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) { + sub_8013114(&gUnknown_203B208->unk58, &menuAction); + if(menuAction != 1) gUnknown_203B208->menuAction2 = menuAction; + } + + switch(menuAction) + { + case 2: + sub_8099690(0); + if(!IsNotMoneyOrUsedTMItem(gUnknown_203B208->storedItem.id)) + UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_IS_MONEY_USED_TM); + else if(!sub_801ADA0(gUnknown_203B208->itemIndex)) + UpdateKangaskhanStorageState(0xA); + else + UpdateKangaskhanStorageState(0x11); + break; + case 6: + sub_8099690(0); + UpdateKangaskhanStorageState(0x10); + break; + case 1: + UpdateKangaskhanStorageState(0xE); + break; + } +} + +void sub_8017D24(void) +{ + s32 menuAction; + menuAction = 0; + sub_801CA08(0); + if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) { + sub_8013114(&gUnknown_203B208->unk58, &menuAction); + if(menuAction != 1) gUnknown_203B208->menuAction3 = menuAction; + } + + switch(menuAction) + { + case 3: + if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) + { + sub_801CBB8(); + UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_TOO_MANY_ITEMS); + } + else if(IsThrowableItem(gUnknown_203B208->storedItem.id)) + UpdateKangaskhanStorageState(0x18); + else + UpdateKangaskhanStorageState(0x1B); + break; + case 6: + UpdateKangaskhanStorageState(0x1A); + break; + case 1: + UpdateKangaskhanStorageState(0x17); + break; + } +} + +void sub_8017DC0(void) +{ + switch(sub_801B410()) + { + case 0: + case 1: + default: + break; + case 2: + case 3: + sub_801B450(); + UpdateKangaskhanStorageState(0xE); + break; + } +} + +void sub_8017DDC(void) +{ + switch(sub_801B410()) + { + case 0: + case 1: + default: + break; + case 2: + case 3: + sub_801B450(); + UpdateKangaskhanStorageState(0x17); + break; + } +} + +void AdvanceToKangaskhanStorageFallbackState(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + UpdateKangaskhanStorageState(gUnknown_203B208->fallbackState); + } +} + +u32 sub_8017E1C(void) +{ + ResetUnusedInputStruct(); + sub_800641C(NULL, 1, 1); + gUnknown_203B20C = MemoryAlloc(sizeof(struct unkStruct_203B20C), 8); + gUnknown_203B20C->menuAction1 = 0; + gUnknown_203B20C->menuAction2 = 0; + gUnknown_203B20C->menuAction3 = 0; + sub_8017F10(0); + return 1; +} + +u32 sub_8017E54(void) +{ + switch(gUnknown_203B20C->state) + { + case 0: + sub_8017F10(1); + break; + case 1: + sub_8018588(); + break; + case 4: + case 5: + sub_8018620(); + break; + case 6: + sub_8018904(); + break; + case 7: + sub_8018AC8(); + break; + case 10: + case 11: + sub_80186F8(); + break; + case 12: + sub_8018854(); + break; + case 13: + sub_80189C8(); + break; + case 14: + sub_8018AE4(); + break; + case 3: + return 3; + } + return 0; +} + +void sub_8017EF4(void) +{ + if(gUnknown_203B20C != NULL) + { + MemoryFree(gUnknown_203B20C); + gUnknown_203B20C = NULL; + } +} + +void sub_8017F10(u32 newState) +{ + gUnknown_203B20C->state = newState; + sub_8017F28(); + sub_8018100(); +} + +void sub_8017F28(void) +{ + s32 index; + + sub_8006518(gUnknown_203B20C->unkF0); + + switch(gUnknown_203B20C->state) + { + case 1: + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + sub_80182E4(); + gUnknown_203B20C->unkF0[2] = gUnknown_80DB7D0; + sub_8012CAC(&gUnknown_203B20C->unkF0[2], gUnknown_203B20C->unk20); + break; + case 4: + case 5: + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[2] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + break; + case 10: + case 11: + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[2] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[0] = gUnknown_80DB800; + break; + case 12: + gUnknown_203B20C->unkF0[1] = gUnknown_80DB818; + break; + case 6: + case 13: + gUnknown_203B20C->unkF0[2] = gUnknown_80DB7E8; + break; + default: + case 0: + for(index = 0; index < 4; index++) + { + gUnknown_203B20C->unkF0[index] = gUnknown_80DB7B8; + } + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B20C->unkF0, 1, 1); +} + +void sub_8018100(void) +{ + + switch(gUnknown_203B20C->state) + { + case 1: + sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction1, 2); + break; + case 4: + sub_801A5D8(3, 3, 0, 0xA); + break; + case 5: + sub_801A8D0(1); + break; + case 6: + sub_801A9E0(); + sub_801841C(); + sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction2, 2); + break; + case 7: + sub_801B3C0(&gUnknown_203B20C->item); + break; + case 10: + sub_801C8C4(1, 3, 0, 0xA); + sub_801AD34(0); + break; + case 11: + sub_801CB5C(1); + sub_801AD34(0); + break; + case 12: + gUnknown_203B20C->unkD0 = 2; + gUnknown_203B20C->unkC8 = 1; + if(gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] > 99) + gUnknown_203B20C->unkCC = 99; + else + gUnknown_203B20C->unkCC = gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id]; + gUnknown_203B20C->unkC4 = gUnknown_203B20C->unkCC; + gUnknown_203B20C->unkD4 = 1; + gUnknown_203B20C->unkD8 = &gUnknown_203B20C->unkF0[1]; + gUnknown_203B20C->unkDC = 0x28; + gUnknown_203B20C->unkE0 = 0x12; + sub_8013AA0(&gUnknown_203B20C->unkC0); + sub_8018280(); + break; + case 13: + sub_801CCD8(); + sub_801AD34(0); + sub_80184D4(); + sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction3, 2); + break; + case 14: + sub_801B3C0(&gUnknown_203B20C->item); + break; + case 0: + default: + break; + } +} + +void sub_8018280(void) +{ + sub_8008C54(gUnknown_203B20C->unkD4); + sub_80073B8(gUnknown_203B20C->unkD4); + xxx_call_draw_string(4, 0, gUnknown_80DB830, gUnknown_203B20C->unkD4, 0); // Number? + sub_8013C68(&gUnknown_203B20C->unkC0); + sub_80073E0(gUnknown_203B20C->unkD4); + sub_801CCD8(); + sub_801AD34(0); + sub_8012EA4(&gUnknown_203B20C->unk70,0); +} + +void sub_80182E4(void) +{ + int index; + s32 loopMax; + + loopMax = 0; + MemoryFill16(gUnknown_203B20C->unk60,0,sizeof(gUnknown_203B20C->unk60)); + gUnknown_203B20C->unk20[0].text = *gUnknown_80D4958; + gUnknown_203B20C->unk20[0].menuAction = 2; + if ((GetNumberOfFilledInventorySlots() == 0) || (sub_801CF50(0) != 0)) { + gUnknown_203B20C->unk60[0] = 1; + } + loopMax += 1; + gUnknown_203B20C->unk20[loopMax].text = *gUnknown_80D4964; + gUnknown_203B20C->unk20[loopMax].menuAction = 3; + if ((sub_801CF14(1) != 0) || (INVENTORY_SIZE <= GetNumberOfFilledInventorySlots())) { + gUnknown_203B20C->unk60[loopMax] = 1; + } + loopMax += 1; + gUnknown_203B20C->unk20[loopMax].text = *gUnknown_80D4934; + gUnknown_203B20C->unk20[loopMax].menuAction = 1; + loopMax += 1; + gUnknown_203B20C->unk20[loopMax].text = NULL; + gUnknown_203B20C->unk20[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B20C->unk60[index] == 0) { + if(gUnknown_203B20C->unk20[index].menuAction == gUnknown_203B20C->menuAction1) + return; + } + } + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B20C->unk60[index] == 0) { + gUnknown_203B20C->menuAction1 = gUnknown_203B20C->unk20[index].menuAction; + break; + } + } +} + +void sub_801841C(void) +{ + int index; + s32 loopMax; + + loopMax = 0; + MemoryFill16(gUnknown_203B20C->unk60,0,sizeof(gUnknown_203B20C->unk60)); + gUnknown_203B20C->unk20[0].text = *gUnknown_80D4958; + gUnknown_203B20C->unk20[0].menuAction = 2; + if (!sub_801ADA0(gUnknown_203B20C->itemIndex)) { + gUnknown_203B20C->unk60[0] = 1; + } + loopMax += 1; + gUnknown_203B20C->unk20[loopMax].text = *gUnknown_80D4970; + gUnknown_203B20C->unk20[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B20C->unk20[loopMax].text = NULL; + gUnknown_203B20C->unk20[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B20C->unk60[index] == 0) { + if(gUnknown_203B20C->unk20[index].menuAction == gUnknown_203B20C->menuAction2) + return; + } + } + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B20C->unk60[index] == 0) { + gUnknown_203B20C->menuAction2 = gUnknown_203B20C->unk20[index].menuAction; + break; + } + } +} + +void sub_80184D4(void) +{ + int index; + s32 loopMax; + + loopMax = 0; + MemoryFill16(gUnknown_203B20C->unk60,0,sizeof(gUnknown_203B20C->unk60)); + gUnknown_203B20C->unk20[0].text = *gUnknown_80D4964; + gUnknown_203B20C->unk20[0].menuAction = 3; + if ((GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)) { + gUnknown_203B20C->unk60[0] = 1; + } + loopMax += 1; + gUnknown_203B20C->unk20[loopMax].text = *gUnknown_80D4970; + gUnknown_203B20C->unk20[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B20C->unk20[loopMax].text = NULL; + gUnknown_203B20C->unk20[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B20C->unk60[index] == 0) { + if(gUnknown_203B20C->unk20[index].menuAction == gUnknown_203B20C->menuAction3) + return; + } + } + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B20C->unk60[index] == 0) { + gUnknown_203B20C->menuAction3 = gUnknown_203B20C->unk20[index].menuAction; + break; + } + } +} + +void sub_8018588(void) +{ + s32 menuAction; + menuAction = 0; + + if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0) + { + sub_8013114(&gUnknown_203B20C->unk70, &menuAction); + if(menuAction != 1) gUnknown_203B20C->menuAction1 = menuAction; + } + + switch(menuAction) + { + case 2: + if((GetNumberOfFilledInventorySlots() != 0) && sub_801CF50(0) == 0) + sub_8017F10(4); + else + sub_8012EA4(&gUnknown_203B20C->unk70, 1);; + break; + case 3: + if(sub_801CF14(1) != 0) + sub_8012EA4(&gUnknown_203B20C->unk70, 1); + else + sub_8017F10(0xA); + break; + case 1: + sub_8017F10(3); + break; + } +} + +void sub_8018620(void) +{ + s32 index; + switch(sub_801A6E8(1)) + { + case 3: + if(sub_801AEA8() != 0) + { + for(index = 0; index < INVENTORY_SIZE; index++) + { + if(sub_801AED0(index) != 0) + { + MoveToStorage(&gTeamInventory_203B460->teamItems[index]); + gTeamInventory_203B460->teamItems[index].id = 0; + gTeamInventory_203B460->teamItems[index].flags = 0; + } + } + FillInventoryGaps(); + sub_801AE84(); + if(GetNumberOfFilledInventorySlots() == 0) + { + sub_801A928(); + sub_8017F10(1); + } + else + { + sub_8017F10(5); + } + } + else + { + gUnknown_203B20C->itemIndex = sub_801A8AC(); + gUnknown_203B20C->item = gTeamInventory_203B460->teamItems[gUnknown_203B20C->itemIndex]; + sub_8017F10(6); + } + break; + case 4: + gUnknown_203B20C->itemIndex = sub_801A8AC(); + gUnknown_203B20C->item = gTeamInventory_203B460->teamItems[gUnknown_203B20C->itemIndex]; + sub_8017F10(7); + break; + case 2: + sub_801A928(); + sub_8017F10(1); + break; + } +} + +void sub_80186F8(void) +{ + struct BulkItem item; + s32 itemID; + + switch(sub_801CA08(1)) + { + case 3: + if(sub_801CFB8() != 0) + { + for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++) + { + if(sub_801CFE0(itemID) != 0) + { + item.id = itemID; + if(IsThrowableItem(item.id)) + if(gTeamInventory_203B460->teamStorage[item.id] > 0x63) + { + item.quantity = 0x63; + } + else + { + item.quantity = gTeamInventory_203B460->teamStorage[item.id]; + } + else + { + item.quantity = 1; + } + gTeamInventory_203B460->teamStorage[item.id] -= item.quantity; + AddHeldItemToInventory(&item); + } + } + FillInventoryGaps(); + sub_801CF94(); + if((sub_801CF14(1) == 0) && (GetNumberOfFilledInventorySlots() < INVENTORY_SIZE)) + sub_8017F10(0xB); + else + { + sub_801CBB8(); + sub_8017F10(1); + } + } + else + { + gUnknown_203B20C->id = sub_801CB24(); + xxx_init_itemslot_8090A8C(&gUnknown_203B20C->item, gUnknown_203B20C->id, 0); + gUnknown_203B20C->item.quantity = 1; + sub_8017F10(0xD); + } + break; + case 4: + gUnknown_203B20C->id = sub_801CB24(); + xxx_init_itemslot_8090A8C(&gUnknown_203B20C->item, gUnknown_203B20C->id, 0); + gUnknown_203B20C->item.quantity = 1; + sub_8017F10(0xE); + break; + case 2: + sub_801CBB8(); + sub_8017F10(1); + break; + case 1: + sub_801AD34(0); + break; + } +} + +void sub_8018854(void) +{ + struct BulkItem item; + + sub_801CA08(0); + sub_8012FD8(&gUnknown_203B20C->unk70); + + switch(sub_8013BBC(&gUnknown_203B20C->unkC0)) + { + case 3: + gUnknown_203B20C->item.quantity = gUnknown_203B20C->unkC0; + gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] -= gUnknown_203B20C->item.quantity; + item.id = gUnknown_203B20C->item.id; + item.quantity = gUnknown_203B20C->item.quantity; + AddHeldItemToInventory(&item); + if(sub_801CF14(1) == 0) + if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) + { + error: + sub_801CBB8(); + sub_8017F10(0x1); + } + else + sub_8017F10(0xB); + else + goto error; + break; + case 2: + sub_8017F10(0xB); + break; + case 1: + sub_8018280(); + break; + case 0: + break; + } +} + +void sub_8018904(void) +{ + s32 menuAction; + + menuAction = 0; + + sub_801A6E8(0); + if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0) + { + sub_8013114(&gUnknown_203B20C->unk70, &menuAction); + if(menuAction != 1) gUnknown_203B20C->menuAction2 = menuAction; + } + switch(menuAction) + { + case 2: + if(IsNotMoneyOrUsedTMItem(gUnknown_203B20C->item.id)) + if(sub_801ADA0(gUnknown_203B20C->itemIndex) == 0) + error: + sub_8012EA4(&gUnknown_203B20C->unk70, 1); + else + { + MoveToStorage(&gUnknown_203B20C->item); + ShiftItemsDownFrom(gUnknown_203B20C->itemIndex); + FillInventoryGaps(); + if(GetNumberOfFilledInventorySlots() == 0) + { + sub_801A928(); + sub_8017F10(1); + } + else + sub_8017F10(5); + } + else + goto error; + break; + case 4: + sub_8099690(0); + sub_8017F10(7); + break; + case 1: + sub_8017F10(5); + break; + } +} + +void sub_80189C8(void) +{ + struct BulkItem item; + s32 menuAction; + + menuAction = 0; + + sub_801CA08(0); + if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0) + { + sub_8013114(&gUnknown_203B20C->unk70, &menuAction); + if(menuAction != 1) gUnknown_203B20C->menuAction3 = menuAction; + } + switch(menuAction) + { + case 3: + if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) + sub_8012EA4(&gUnknown_203B20C->unk70, 1); + else if(IsThrowableItem(gUnknown_203B20C->item.id)) + sub_8017F10(0xC); + else + { + gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] -= gUnknown_203B20C->item.quantity; + item.id = gUnknown_203B20C->item.id; + item.quantity = gUnknown_203B20C->item.quantity; + AddHeldItemToInventory(&item); + if(sub_801CF14(1) == 0) + if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) + { + error: + sub_801CBB8(); + sub_8017F10(1); + } + else + { + sub_8017F10(0xB); + } + else + goto error; + } + break; + case 4: + sub_8017F10(0xE); + break; + case 1: + sub_8017F10(0xB); + break; + } +} + +void sub_8018AC8(void) +{ + switch(sub_801B410()) + { + case 2: + case 3: + sub_801B450(); + sub_8017F10(0x5); + break; + case 0: + case 1: + default: + break; + } +} + +void sub_8018AE4(void) +{ + switch(sub_801B410()) + { + case 2: + case 3: + sub_801B450(); + sub_8017F10(0xB); + break; + case 0: + case 1: + default: + break; + } +} diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c deleted file mode 100644 index 71599820f..000000000 --- a/src/kangaskhan_storage_2.c +++ /dev/null @@ -1,633 +0,0 @@ -#include "constants/item.h" -#include "global.h" -#include "input.h" -#include "memory.h" -#include "text.h" -#include "item.h" -#include "team_inventory.h" -#include "input.h" -#include "kangaskhan_storage.h" -#include "menu_input.h" - -extern struct unkStruct_203B208 *gUnknown_203B208; - -extern struct unkStruct_203B20C *gUnknown_203B20C; - -extern void sub_8017F10(u32); -extern void sub_8018588(void); -extern void sub_8018620(void); -extern void sub_8018904(void); -extern void sub_8018AC8(void); -extern void sub_80186F8(void); -extern void sub_8018854(void); -extern void sub_80189C8(void); -extern void sub_8018AE4(void); - - -extern void sub_8017F28(); -extern void sub_8018100(); -extern void UpdateKangaskhanStorageState(u32); -extern s32 sub_80144A4(s32 *); -extern void sub_801B450(); -extern u32 sub_801B410(void); - -extern void sub_801CBB8(); - -extern bool8 sub_801ADA0(u32); -extern void sub_8099690(u32); -extern u32 sub_8013BBC(u32 *); -extern void sub_8017598(void); - -extern u32 sub_801CA08(u32); -extern u32 sub_801CFB8(void); -extern u8 sub_801CB24(); -extern void sub_801AD34(u32); -extern u32 sub_801A6E8(u32); -extern u32 sub_801AEA8(void); -extern u32 sub_801A8AC(void); -extern void sub_801A928(void); -extern void sub_80182E4(void); -extern void sub_8008C54(u32); -extern void sub_80073B8(u32); -extern void sub_8013C68(u32 *); -extern void sub_80073E0(u32); -extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32); - -extern void sub_801A9E0(); -extern void sub_801841C(); -extern void sub_801CCD8(); -extern void sub_80184D4(); -extern void sub_8018280(); -extern void sub_8013AA0(u32 *); -extern void sub_801B3C0(struct Item *); -extern void sub_801A5D8(u32, u32, u32, u32); -extern void sub_801C8C4(u32, u32, u32, u32); -extern void sub_801CB5C(u32); -extern void sub_801A8D0(u32); -extern u32 sub_801CFE0(u8); -extern void sub_801CF94(void); -extern void sub_801AE84(void); -extern s32 sub_801AED0(s32); -extern u8 sub_801CF14(u32); -extern u8 sub_801CF50(u32); - -extern struct UnkTextStruct2 gUnknown_80DB7B8; -extern struct UnkTextStruct2 gUnknown_80DB7E8; -extern struct UnkTextStruct2 gUnknown_80DB7D0; -extern struct UnkTextStruct2 gUnknown_80DB800; -extern struct UnkTextStruct2 gUnknown_80DB818; -extern u8 gUnknown_80DB830[]; -extern u8 *gUnknown_80D4920[]; -extern u8 *gUnknown_80D4928[]; - -void sub_80177F8(void) -{ - struct unkStruct_203B208 *preload; - u8 *nullText; - u32 defaultAction; - - preload = gUnknown_203B208; - nullText = NULL; - preload->unk24[0].text = *gUnknown_80D4920; - preload->unk24[0].menuAction = 4; - defaultAction = 1; - preload->unk24[1].text = *gUnknown_80D4928; - preload->unk24[1].menuAction = 5; - preload->unk24[2].text = nullText; - preload->unk24[2].menuAction = defaultAction; -} - -void sub_8017828(void) -{ - s32 menuAction; - - if (sub_80144A4(&menuAction) == 0) { - if (menuAction != 1) { - gUnknown_203B208->menuAction1 = menuAction; - } - switch(menuAction) - { - case 2: - if (GetNumberOfFilledInventorySlots() == 0) { - UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_NO_INV_ITEMS); - } - else if (sub_801CF50(0) != 0) { - UpdateKangaskhanStorageState(8); - } - else { - UpdateKangaskhanStorageState(0xb); - } - break; - case 3: - if (sub_801CF14(1) != 0) { - UpdateKangaskhanStorageState(7); - } - else if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) { - UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_TOO_MANY_ITEMS); - } - else { - UpdateKangaskhanStorageState(0x14); - } - break; - case 6: - UpdateKangaskhanStorageState(2); - break; - case 1: - UpdateKangaskhanStorageState(3); - break; - } - } -} - -void sub_80178D0(void) -{ - s32 menuAction; - - if (sub_80144A4(&menuAction) == 0) { - switch(menuAction) - { - case 4: - MoveToStorage(&gUnknown_203B208->storedItem); - ShiftItemsDownFrom(gUnknown_203B208->itemIndex); - FillInventoryGaps(); - UpdateKangaskhanStorageState(0x13); - break; - case 1: - case 5: - UpdateKangaskhanStorageState(0xe); - break; - } - } -} - -void sub_8017928(void) -{ - int menuAction; - struct BulkItem item; - - if (sub_80144A4(&menuAction) == 0) { - switch(menuAction) - { - case 4: - gTeamInventory_203B460->teamStorage[gUnknown_203B208->storedItem.id] -= gUnknown_203B208->storedItem.quantity; - item.id = gUnknown_203B208->storedItem.id; - item.quantity = gUnknown_203B208->storedItem.quantity; - AddHeldItemToInventory(&item); - UpdateKangaskhanStorageState(0x1d); - break; - case 1: - case 5: - UpdateKangaskhanStorageState(0x17); - break; - } - } -} - -void sub_80179A8(void) -{ - s32 index; - s32 menuAction; - - if (sub_80144A4(&menuAction) == 0) { - switch(menuAction) - { - case 4: - for(index = 0; index < INVENTORY_SIZE; index++) - { - if (sub_801AED0(index) != 0) { - MoveToStorage(&gTeamInventory_203B460->teamItems[index]); - gTeamInventory_203B460->teamItems[index].id = 0; - gTeamInventory_203B460->teamItems[index].flags = 0; - } - } - FillInventoryGaps(); - sub_801AE84(); - UpdateKangaskhanStorageState(0x13); - break; - case 1: - case 5: - UpdateKangaskhanStorageState(0xe); - break; - } - } -} - -void sub_8017A1C(void) -{ - s32 itemID; - int menuAction; - struct BulkItem item; - - if (sub_80144A4(&menuAction) == 0) { - - switch(menuAction) - { - case 4: - for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++) - { - if(sub_801CFE0(itemID) != 0) - { - item.id = itemID; - if(IsThrowableItem(item.id)) - if(gTeamInventory_203B460->teamStorage[item.id] > 0x63) - { - item.quantity = 0x63; - } - else - { - item.quantity = gTeamInventory_203B460->teamStorage[item.id]; - } - else - { - item.quantity = 1; - } - gTeamInventory_203B460->teamStorage[item.id] -= item.quantity; - AddHeldItemToInventory(&item); - } - } - FillInventoryGaps(); - sub_801CF94(); - UpdateKangaskhanStorageState(0x1d); - break; - case 1: - case 5: - UpdateKangaskhanStorageState(0x17); - break; - } - } -} - -void sub_8017AF8(void) -{ - switch(sub_801A6E8(1)) - { - case 3: - if(sub_801AEA8() != 0) - { - sub_8099690(0); - UpdateKangaskhanStorageState(0x12); - } - else - { - gUnknown_203B208->itemIndex = sub_801A8AC(); - gUnknown_203B208->storedItem = gTeamInventory_203B460->teamItems[gUnknown_203B208->itemIndex]; - UpdateKangaskhanStorageState(0xF); - } - break; - case 4: - gUnknown_203B208->itemIndex = sub_801A8AC(); - gUnknown_203B208->storedItem = gTeamInventory_203B460->teamItems[gUnknown_203B208->itemIndex]; - UpdateKangaskhanStorageState(0x10); - break; - case 2: - sub_801A928(); - UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_MAIN_MENU); - break; - } -} - -void sub_8017B88(void) -{ - switch(sub_801CA08(1)) - { - case 3: - if(sub_801CFB8() != 0){ - UpdateKangaskhanStorageState(0x1C); - } - else - { - gUnknown_203B208->id = sub_801CB24(); - xxx_init_itemslot_8090A8C(&gUnknown_203B208->storedItem, gUnknown_203B208->id, 0); - gUnknown_203B208->storedItem.quantity = 1; - UpdateKangaskhanStorageState(0x19); - } - break; - case 4: - gUnknown_203B208->id = sub_801CB24(); - xxx_init_itemslot_8090A8C(&gUnknown_203B208->storedItem, gUnknown_203B208->id, 0); - gUnknown_203B208->storedItem.quantity = 1; - UpdateKangaskhanStorageState(0x1A); - break; - case 2: - sub_801CBB8(); - UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_MAIN_MENU); - break; - case 1: - sub_801AD34(0); - break; - } -} - -void sub_8017C28(void) -{ - sub_801CA08(0); - sub_8012FD8(&gUnknown_203B208->unk58); - switch(sub_8013BBC(&gUnknown_203B208->unkA8)) - { - case 1: - sub_8017598(); - break; - case 3: - gUnknown_203B208->storedItem.quantity = gUnknown_203B208->unkA8; - UpdateKangaskhanStorageState(0x1B); - break; - case 2: - UpdateKangaskhanStorageState(0x17); - break; - case 0: - default: - break; - } -} - -void sub_8017C7C(void) -{ - s32 menuAction; - menuAction = 0; - sub_801A6E8(0); - if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) { - sub_8013114(&gUnknown_203B208->unk58, &menuAction); - if(menuAction != 1) gUnknown_203B208->menuAction2 = menuAction; - } - - switch(menuAction) - { - case 2: - sub_8099690(0); - if(!IsNotMoneyOrUsedTMItem(gUnknown_203B208->storedItem.id)) - UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_IS_MONEY_USED_TM); - else if(!sub_801ADA0(gUnknown_203B208->itemIndex)) - UpdateKangaskhanStorageState(0xA); - else - UpdateKangaskhanStorageState(0x11); - break; - case 6: - sub_8099690(0); - UpdateKangaskhanStorageState(0x10); - break; - case 1: - UpdateKangaskhanStorageState(0xE); - break; - } -} - -void sub_8017D24(void) -{ - s32 menuAction; - menuAction = 0; - sub_801CA08(0); - if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) { - sub_8013114(&gUnknown_203B208->unk58, &menuAction); - if(menuAction != 1) gUnknown_203B208->menuAction3 = menuAction; - } - - switch(menuAction) - { - case 3: - if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) - { - sub_801CBB8(); - UpdateKangaskhanStorageState(KANGASKHAN_STORAGE_TOO_MANY_ITEMS); - } - else if(IsThrowableItem(gUnknown_203B208->storedItem.id)) - UpdateKangaskhanStorageState(0x18); - else - UpdateKangaskhanStorageState(0x1B); - break; - case 6: - UpdateKangaskhanStorageState(0x1A); - break; - case 1: - UpdateKangaskhanStorageState(0x17); - break; - } -} - -void sub_8017DC0(void) -{ - switch(sub_801B410()) - { - case 0: - case 1: - default: - break; - case 2: - case 3: - sub_801B450(); - UpdateKangaskhanStorageState(0xE); - break; - } -} - -void sub_8017DDC(void) -{ - switch(sub_801B410()) - { - case 0: - case 1: - default: - break; - case 2: - case 3: - sub_801B450(); - UpdateKangaskhanStorageState(0x17); - break; - } -} - -void AdvanceToKangaskhanStorageFallbackState(void) -{ - s32 temp; - if(sub_80144A4(&temp) == 0) - { - UpdateKangaskhanStorageState(gUnknown_203B208->fallbackState); - } -} - -u32 sub_8017E1C(void) -{ - ResetUnusedInputStruct(); - sub_800641C(NULL, 1, 1); - gUnknown_203B20C = MemoryAlloc(sizeof(struct unkStruct_203B20C), 8); - gUnknown_203B20C->menuAction1 = 0; - gUnknown_203B20C->menuAction2 = 0; - gUnknown_203B20C->menuAction3 = 0; - sub_8017F10(0); - return 1; -} - -u32 sub_8017E54(void) -{ - switch(gUnknown_203B20C->state) - { - case 0: - sub_8017F10(1); - break; - case 1: - sub_8018588(); - break; - case 4: - case 5: - sub_8018620(); - break; - case 6: - sub_8018904(); - break; - case 7: - sub_8018AC8(); - break; - case 10: - case 11: - sub_80186F8(); - break; - case 12: - sub_8018854(); - break; - case 13: - sub_80189C8(); - break; - case 14: - sub_8018AE4(); - break; - case 3: - return 3; - } - return 0; -} - -void sub_8017EF4(void) -{ - if(gUnknown_203B20C != NULL) - { - MemoryFree(gUnknown_203B20C); - gUnknown_203B20C = NULL; - } -} - -void sub_8017F10(u32 newState) -{ - gUnknown_203B20C->state = newState; - sub_8017F28(); - sub_8018100(); -} - -void sub_8017F28(void) -{ - s32 index; - - sub_8006518(gUnknown_203B20C->unkF0); - - switch(gUnknown_203B20C->state) - { - case 1: - gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; - gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; - gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; - sub_80182E4(); - gUnknown_203B20C->unkF0[2] = gUnknown_80DB7D0; - sub_8012CAC(&gUnknown_203B20C->unkF0[2], gUnknown_203B20C->unk20); - break; - case 4: - case 5: - gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; - gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; - gUnknown_203B20C->unkF0[2] = gUnknown_80DB7B8; - gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; - break; - case 10: - case 11: - gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; - gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; - gUnknown_203B20C->unkF0[2] = gUnknown_80DB7B8; - gUnknown_203B20C->unkF0[0] = gUnknown_80DB800; - break; - case 12: - gUnknown_203B20C->unkF0[1] = gUnknown_80DB818; - break; - case 6: - case 13: - gUnknown_203B20C->unkF0[2] = gUnknown_80DB7E8; - break; - default: - case 0: - for(index = 0; index < 4; index++) - { - gUnknown_203B20C->unkF0[index] = gUnknown_80DB7B8; - } - break; - } - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B20C->unkF0, 1, 1); -} - -void sub_8018100(void) -{ - - switch(gUnknown_203B20C->state) - { - case 1: - sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction1, 2); - break; - case 4: - sub_801A5D8(3, 3, 0, 0xA); - break; - case 5: - sub_801A8D0(1); - break; - case 6: - sub_801A9E0(); - sub_801841C(); - sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction2, 2); - break; - case 7: - sub_801B3C0(&gUnknown_203B20C->item); - break; - case 10: - sub_801C8C4(1, 3, 0, 0xA); - sub_801AD34(0); - break; - case 11: - sub_801CB5C(1); - sub_801AD34(0); - break; - case 12: - gUnknown_203B20C->unkD0 = 2; - gUnknown_203B20C->unkC8 = 1; - if(gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] > 99) - gUnknown_203B20C->unkCC = 99; - else - gUnknown_203B20C->unkCC = gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id]; - gUnknown_203B20C->unkC4 = gUnknown_203B20C->unkCC; - gUnknown_203B20C->unkD4 = 1; - gUnknown_203B20C->unkD8 = &gUnknown_203B20C->unkF0[1]; - gUnknown_203B20C->unkDC = 0x28; - gUnknown_203B20C->unkE0 = 0x12; - sub_8013AA0(&gUnknown_203B20C->unkC0); - sub_8018280(); - break; - case 13: - sub_801CCD8(); - sub_801AD34(0); - sub_80184D4(); - sub_8012D60(&gUnknown_203B20C->unk70, gUnknown_203B20C->unk20, 0, gUnknown_203B20C->unk60, gUnknown_203B20C->menuAction3, 2); - break; - case 14: - sub_801B3C0(&gUnknown_203B20C->item); - break; - case 0: - default: - break; - } -} - -void sub_8018280(void) -{ - sub_8008C54(gUnknown_203B20C->unkD4); - sub_80073B8(gUnknown_203B20C->unkD4); - xxx_call_draw_string(4, 0, gUnknown_80DB830, gUnknown_203B20C->unkD4, 0); // Number? - sub_8013C68(&gUnknown_203B20C->unkC0); - sub_80073E0(gUnknown_203B20C->unkD4); - sub_801CCD8(); - sub_801AD34(0); - sub_8012EA4(&gUnknown_203B20C->unk70,0); -} diff --git a/src/kangaskhan_storage_3.c b/src/kangaskhan_storage_3.c deleted file mode 100644 index 890cfa6bc..000000000 --- a/src/kangaskhan_storage_3.c +++ /dev/null @@ -1,348 +0,0 @@ -#include "global.h" -#include "item.h" -#include "kangaskhan_storage.h" -#include "team_inventory.h" -#include "menu_input.h" - -extern struct unkStruct_203B20C *gUnknown_203B20C; - -extern u32 sub_801B410(); -extern void sub_801B450(); -extern void sub_8017F10(u32); - -extern u8 sub_801CF14(u32); - -extern void sub_801CBB8(void); -extern void sub_8017F10(u32); - -extern u8 sub_801ADA0(s32); -extern void sub_801A928(void); -extern void sub_8099690(u32); -extern u32 sub_801A6E8(u32); - -extern u32 sub_8013BBC(u32 *); -extern u32 sub_801CA08(u32); -extern void sub_8018280(void); - -extern void sub_801CF94(void); -extern u8 sub_801CB24(); -extern u32 sub_801CFB8(void); -extern void sub_801AD34(u32); -extern u32 sub_801CFE0(u8); - -extern u32 sub_801A8AC(void); -extern u32 sub_801AEA8(void); -extern u32 sub_801AED0(u32); -extern void sub_801AE84(void); -extern u8 sub_801CF50(u32); - - -void sub_8018588(void) -{ - s32 menuAction; - menuAction = 0; - - if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0) - { - sub_8013114(&gUnknown_203B20C->unk70, &menuAction); - if(menuAction != 1) gUnknown_203B20C->menuAction1 = menuAction; - } - - switch(menuAction) - { - case 2: - if((GetNumberOfFilledInventorySlots() != 0) && sub_801CF50(0) == 0) - sub_8017F10(4); - else - sub_8012EA4(&gUnknown_203B20C->unk70, 1);; - break; - case 3: - if(sub_801CF14(1) != 0) - sub_8012EA4(&gUnknown_203B20C->unk70, 1); - else - sub_8017F10(0xA); - break; - case 1: - sub_8017F10(3); - break; - } -} - -void sub_8018620(void) -{ - s32 index; - switch(sub_801A6E8(1)) - { - case 3: - if(sub_801AEA8() != 0) - { - for(index = 0; index < INVENTORY_SIZE; index++) - { - if(sub_801AED0(index) != 0) - { - MoveToStorage(&gTeamInventory_203B460->teamItems[index]); - gTeamInventory_203B460->teamItems[index].id = 0; - gTeamInventory_203B460->teamItems[index].flags = 0; - } - } - FillInventoryGaps(); - sub_801AE84(); - if(GetNumberOfFilledInventorySlots() == 0) - { - sub_801A928(); - sub_8017F10(1); - } - else - { - sub_8017F10(5); - } - } - else - { - gUnknown_203B20C->itemIndex = sub_801A8AC(); - gUnknown_203B20C->item = gTeamInventory_203B460->teamItems[gUnknown_203B20C->itemIndex]; - sub_8017F10(6); - } - break; - case 4: - gUnknown_203B20C->itemIndex = sub_801A8AC(); - gUnknown_203B20C->item = gTeamInventory_203B460->teamItems[gUnknown_203B20C->itemIndex]; - sub_8017F10(7); - break; - case 2: - sub_801A928(); - sub_8017F10(1); - break; - } -} - -void sub_80186F8(void) -{ - struct BulkItem item; - s32 itemID; - - switch(sub_801CA08(1)) - { - case 3: - if(sub_801CFB8() != 0) - { - for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++) - { - if(sub_801CFE0(itemID) != 0) - { - item.id = itemID; - if(IsThrowableItem(item.id)) - if(gTeamInventory_203B460->teamStorage[item.id] > 0x63) - { - item.quantity = 0x63; - } - else - { - item.quantity = gTeamInventory_203B460->teamStorage[item.id]; - } - else - { - item.quantity = 1; - } - gTeamInventory_203B460->teamStorage[item.id] -= item.quantity; - AddHeldItemToInventory(&item); - } - } - FillInventoryGaps(); - sub_801CF94(); - if((sub_801CF14(1) == 0) && (GetNumberOfFilledInventorySlots() < INVENTORY_SIZE)) - sub_8017F10(0xB); - else - { - sub_801CBB8(); - sub_8017F10(1); - } - } - else - { - gUnknown_203B20C->id = sub_801CB24(); - xxx_init_itemslot_8090A8C(&gUnknown_203B20C->item, gUnknown_203B20C->id, 0); - gUnknown_203B20C->item.quantity = 1; - sub_8017F10(0xD); - } - break; - case 4: - gUnknown_203B20C->id = sub_801CB24(); - xxx_init_itemslot_8090A8C(&gUnknown_203B20C->item, gUnknown_203B20C->id, 0); - gUnknown_203B20C->item.quantity = 1; - sub_8017F10(0xE); - break; - case 2: - sub_801CBB8(); - sub_8017F10(1); - break; - case 1: - sub_801AD34(0); - break; - } -} - -void sub_8018854(void) -{ - struct BulkItem item; - - sub_801CA08(0); - sub_8012FD8(&gUnknown_203B20C->unk70); - - switch(sub_8013BBC(&gUnknown_203B20C->unkC0)) - { - case 3: - gUnknown_203B20C->item.quantity = gUnknown_203B20C->unkC0; - gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] -= gUnknown_203B20C->item.quantity; - item.id = gUnknown_203B20C->item.id; - item.quantity = gUnknown_203B20C->item.quantity; - AddHeldItemToInventory(&item); - if(sub_801CF14(1) == 0) - if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) - { - error: - sub_801CBB8(); - sub_8017F10(0x1); - } - else - sub_8017F10(0xB); - else - goto error; - break; - case 2: - sub_8017F10(0xB); - break; - case 1: - sub_8018280(); - break; - case 0: - break; - } -} - -void sub_8018904(void) -{ - s32 menuAction; - - menuAction = 0; - - sub_801A6E8(0); - if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0) - { - sub_8013114(&gUnknown_203B20C->unk70, &menuAction); - if(menuAction != 1) gUnknown_203B20C->menuAction2 = menuAction; - } - switch(menuAction) - { - case 2: - if(IsNotMoneyOrUsedTMItem(gUnknown_203B20C->item.id)) - if(sub_801ADA0(gUnknown_203B20C->itemIndex) == 0) - error: - sub_8012EA4(&gUnknown_203B20C->unk70, 1); - else - { - MoveToStorage(&gUnknown_203B20C->item); - ShiftItemsDownFrom(gUnknown_203B20C->itemIndex); - FillInventoryGaps(); - if(GetNumberOfFilledInventorySlots() == 0) - { - sub_801A928(); - sub_8017F10(1); - } - else - sub_8017F10(5); - } - else - goto error; - break; - case 4: - sub_8099690(0); - sub_8017F10(7); - break; - case 1: - sub_8017F10(5); - break; - } -} - -void sub_80189C8(void) -{ - struct BulkItem item; - s32 menuAction; - - menuAction = 0; - - sub_801CA08(0); - if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0) - { - sub_8013114(&gUnknown_203B20C->unk70, &menuAction); - if(menuAction != 1) gUnknown_203B20C->menuAction3 = menuAction; - } - switch(menuAction) - { - case 3: - if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) - sub_8012EA4(&gUnknown_203B20C->unk70, 1); - else if(IsThrowableItem(gUnknown_203B20C->item.id)) - sub_8017F10(0xC); - else - { - gTeamInventory_203B460->teamStorage[gUnknown_203B20C->item.id] -= gUnknown_203B20C->item.quantity; - item.id = gUnknown_203B20C->item.id; - item.quantity = gUnknown_203B20C->item.quantity; - AddHeldItemToInventory(&item); - if(sub_801CF14(1) == 0) - if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) - { - error: - sub_801CBB8(); - sub_8017F10(1); - } - else - { - sub_8017F10(0xB); - } - else - goto error; - } - break; - case 4: - sub_8017F10(0xE); - break; - case 1: - sub_8017F10(0xB); - break; - } -} - -void sub_8018AC8(void) -{ - switch(sub_801B410()) - { - case 2: - case 3: - sub_801B450(); - sub_8017F10(0x5); - break; - case 0: - case 1: - default: - break; - } -} - -void sub_8018AE4(void) -{ - switch(sub_801B410()) - { - case 2: - case 3: - sub_801B450(); - sub_8017F10(0xB); - break; - case 0: - case 1: - default: - break; - } -} diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index d12d90502..54de26d19 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -111,21 +111,135 @@ extern void PlaySound(u16 songIndex); u32 CountKecleonItems(void); +extern u8 *gUnknown_80D4984[]; +extern u8 *gUnknown_80D4970[]; +extern u8 * gUnknown_80D4978[]; +extern u8 gUnknown_80DB8A0[]; +extern u8 *gUnknown_80D4934[]; + +void sub_80194F8(void) +{ + int index; + + s32 loopMax; + MemoryFill16(gUnknown_203B210->unk74,0,sizeof(gUnknown_203B210->unk74)); + loopMax = 0; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4978; + gUnknown_203B210->menuItems[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4984; + gUnknown_203B210->menuItems[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = gUnknown_80DB8A0; + gUnknown_203B210->menuItems[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4970; + gUnknown_203B210->menuItems[loopMax].menuAction = 7; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4934; + gUnknown_203B210->menuItems[loopMax].menuAction = 1; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = NULL; + gUnknown_203B210->menuItems[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B210->unk74[index] == 0) + { + if(gUnknown_203B210->menuItems[index].menuAction == gUnknown_203B210->menuAction1) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B210->unk74[index] == 0) + { + gUnknown_203B210->menuAction1 = gUnknown_203B210->menuItems[index].menuAction; + break; + } + } +} + +void sub_80195C0(void) +{ + int index; + + s32 loopMax; + MemoryFill16(gUnknown_203B210->unk74,0,sizeof(gUnknown_203B210->unk74)); + loopMax = 0; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4978; + gUnknown_203B210->menuItems[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4970; + gUnknown_203B210->menuItems[loopMax].menuAction = 7; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = NULL; + gUnknown_203B210->menuItems[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B210->unk74[index] == 0) + { + if(gUnknown_203B210->menuItems[index].menuAction == gUnknown_203B210->menuAction3) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B210->unk74[index] == 0) + { + gUnknown_203B210->menuAction3 = gUnknown_203B210->menuItems[index].menuAction; + break; + } + } +} + + +void sub_8019660(void) +{ + int index; + + s32 loopMax; + MemoryFill16(gUnknown_203B210->unk74,0, sizeof(gUnknown_203B210->unk74)); + loopMax = 0; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4984; + gUnknown_203B210->menuItems[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4970; + gUnknown_203B210->menuItems[loopMax].menuAction = 7; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = NULL; + gUnknown_203B210->menuItems[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B210->unk74[index] == 0) + { + if(gUnknown_203B210->menuItems[index].menuAction == gUnknown_203B210->menuAction2) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B210->unk74[index] == 0) + { + gUnknown_203B210->menuAction2 = gUnknown_203B210->menuItems[index].menuAction; + break; + } + } +} + void sub_8019700(void) { - u32 menuAction; - struct unkStruct_203B210 *preload; - u8 *nullText; - - preload = gUnknown_203B210; - nullText = NULL; - preload->menuItems[0].text = *gUnknown_80D4920; - preload->menuItems[0].menuAction = 5; - menuAction = 1; - preload->menuItems[1].text = *gUnknown_80D4928; - preload->menuItems[1].menuAction = 6; - preload->menuItems[2].text = nullText; - preload->menuItems[2].menuAction = menuAction; + s32 loopMax = 0; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4920; + gUnknown_203B210->menuItems[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = *gUnknown_80D4928; + gUnknown_203B210->menuItems[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B210->menuItems[loopMax].text = NULL; + gUnknown_203B210->menuItems[loopMax].menuAction = 1; } void sub_8019730(void) diff --git a/src/luminous_cave.c b/src/luminous_cave.c index fbaaeb723..48c0aab5c 100644 --- a/src/luminous_cave.c +++ b/src/luminous_cave.c @@ -464,47 +464,40 @@ void UpdateLuminousCaveDialogue(void) void sub_8024CFC(void) { - u8 *nullString; - struct unkStruct_203B2B0 *preload; - u32 defaultAction; + s32 loopMax = 0; MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74)); - preload = gUnknown_203B2B0; - nullString = NULL; - preload->unk34[0].text = gUnknown_80DCA18; - preload->unk34[0].menuAction = 3; - defaultAction = 1; - preload->unk34[1].text = *gUnknown_80D4970; - preload->unk34[1].menuAction = 2; - preload->unk34[2].text = *gUnknown_80D4934; - preload->unk34[2].menuAction = defaultAction; - preload->unk34[3].text = nullString; - preload->unk34[3].menuAction = defaultAction; + gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA18; + gUnknown_203B2B0->unk34[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4970; + gUnknown_203B2B0->unk34[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4934; + gUnknown_203B2B0->unk34[loopMax].menuAction = 1; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = NULL; + gUnknown_203B2B0->unk34[loopMax].menuAction = 1; } void sub_8024D48(void) { - u8 *nullString; - struct unkStruct_203B2B0 *preload; - u32 defaultAction; s32 index; s32 loopMax; + loopMax = 0; MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74)); - preload = gUnknown_203B2B0; - nullString = NULL; - preload->unk34[0].text = gUnknown_80DCA24; - preload->unk34[0].menuAction = 4; - defaultAction = 1; - preload->unk34[1].text = gUnknown_80DCA2C; - preload->unk34[1].menuAction = 5; - preload->unk34[2].text = *gUnknown_80D4934; - preload->unk34[2].menuAction = defaultAction; - - loopMax = 3; - - preload->unk34[3].text = nullString; - preload->unk34[3].menuAction = defaultAction; + gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA24; + gUnknown_203B2B0->unk34[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA2C; + gUnknown_203B2B0->unk34[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4934; + gUnknown_203B2B0->unk34[loopMax].menuAction = 1; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = NULL; + gUnknown_203B2B0->unk34[loopMax].menuAction = 1; for(index = 0; index < loopMax; index++) { @@ -520,27 +513,22 @@ void sub_8024D48(void) void sub_8024DBC(void) { - u8 *nullString; - struct unkStruct_203B2B0 *preload; - u32 defaultAction; s32 index; s32 loopMax; + loopMax = 0; MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74)); - preload = gUnknown_203B2B0; - nullString = NULL; - preload->unk34[0].text = gUnknown_80DCA24; - preload->unk34[0].menuAction = 4; - defaultAction = 1; - preload->unk34[1].text = gUnknown_80DCA2C; - preload->unk34[1].menuAction = 5; - preload->unk34[2].text = *gUnknown_80D4934; - preload->unk34[2].menuAction = defaultAction; - - loopMax = 3; - - preload->unk34[3].text = nullString; - preload->unk34[3].menuAction = defaultAction; + gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA24; + gUnknown_203B2B0->unk34[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA2C; + gUnknown_203B2B0->unk34[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4934; + gUnknown_203B2B0->unk34[loopMax].menuAction = 1; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = NULL; + gUnknown_203B2B0->unk34[loopMax].menuAction = 1; for(index = 0; index < loopMax; index++) { @@ -556,25 +544,19 @@ void sub_8024DBC(void) void sub_8024E30(void) { - u8 *nullString; - struct unkStruct_203B2B0 *preload; - u32 defaultAction; s32 index; s32 loopMax; + loopMax = 0; MemoryFill16(gUnknown_203B2B0->unk74, 0, sizeof(gUnknown_203B2B0->unk74)); - preload = gUnknown_203B2B0; - nullString = NULL; - preload->unk34[0].text = gUnknown_80DCA2C; - preload->unk34[0].menuAction = 5; - defaultAction = 1; - preload->unk34[1].text = *gUnknown_80D4970; - preload->unk34[1].menuAction = 2; - - loopMax = 2; - - preload->unk34[2].text = nullString; - preload->unk34[2].menuAction = defaultAction; + gUnknown_203B2B0->unk34[loopMax].text = gUnknown_80DCA2C; + gUnknown_203B2B0->unk34[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = *gUnknown_80D4970; + gUnknown_203B2B0->unk34[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B2B0->unk34[loopMax].text = NULL; + gUnknown_203B2B0->unk34[loopMax].menuAction = 1; for(index = 0; index < loopMax; index++) { diff --git a/src/makuhita_dojo_1.c b/src/makuhita_dojo_1.c index 5529d44a5..e2b7536b7 100644 --- a/src/makuhita_dojo_1.c +++ b/src/makuhita_dojo_1.c @@ -95,25 +95,26 @@ extern void sub_8030480(void); void DrawMakuhitaMainMenu(void) { - s32 menuAction; - struct unkStruct_203B318 *preload; + s32 loopMax; gUnknown_203B318->menuAction = 2; - gUnknown_203B318->unk18[0].text = gMakuhitaDojoGoTrain; - gUnknown_203B318->unk18[0].menuAction = 2; + loopMax = 0; + gUnknown_203B318->unk18[loopMax].text = gMakuhitaDojoGoTrain; + gUnknown_203B318->unk18[loopMax].menuAction = 2; if(sub_80306A4()) { - gUnknown_203B318->unk18[0].menuAction = -1; + gUnknown_203B318->unk18[loopMax].menuAction = -1; gUnknown_203B318->menuAction = 1; } - preload = gUnknown_203B318; - menuAction = 1; - preload->unk18[1].text = *gUnknown_80D4970; - preload->unk18[1].menuAction = 3; - preload->unk18[2].text = *gUnknown_80D4934; - preload->unk18[2].menuAction = menuAction; - preload->unk18[3].text = NULL; - preload->unk18[3].menuAction = menuAction; + loopMax += 1; + gUnknown_203B318->unk18[loopMax].text = *gUnknown_80D4970; + gUnknown_203B318->unk18[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B318->unk18[loopMax].text = *gUnknown_80D4934; + gUnknown_203B318->unk18[loopMax].menuAction = 1; + loopMax += 1; + gUnknown_203B318->unk18[loopMax].text = NULL; + gUnknown_203B318->unk18[loopMax].menuAction = 1; } void sub_8030208(void) { diff --git a/src/options_menu.c b/src/options_menu.c index 4379a990c..a5dd399b9 100644 --- a/src/options_menu.c +++ b/src/options_menu.c @@ -420,42 +420,37 @@ void sub_801DED0(void) void CreateOthersMenu(void) { - const char *blankText; - s32 defaultAction; - struct unkStruct_203B25C *preload; + s32 loopMax; MemoryFill16(gUnknown_203B25C->unkAC,0,sizeof(gUnknown_203B25C->unkAC)); - // This is dumb that I have to squeeze this in like this - preload = gUnknown_203B25C; - blankText = NULL; - preload->menuItems[0].text = gOthers_GameOptions; - preload->menuItems[0].menuAction = MENU_OPTION_GAMEOPTIONS; - defaultAction = MENU_OPTION_DEFAULT; - preload->menuItems[1].text = gOthers_Hints; - preload->menuItems[1].menuAction = MENU_OPTION_HINTS; - preload->menuItems[2].text = blankText; - preload->menuItems[2].menuAction = defaultAction; + loopMax = 0; + + gUnknown_203B25C->menuItems[loopMax].text = gOthers_GameOptions; + gUnknown_203B25C->menuItems[loopMax].menuAction = MENU_OPTION_GAMEOPTIONS; + loopMax += 1; + gUnknown_203B25C->menuItems[loopMax].text = gOthers_Hints; + gUnknown_203B25C->menuItems[loopMax].menuAction = MENU_OPTION_HINTS; + loopMax += 1; + gUnknown_203B25C->menuItems[loopMax].text = NULL; + gUnknown_203B25C->menuItems[loopMax].menuAction = MENU_OPTION_DEFAULT; } void CreateChangeSettingsConfirmMenu(void) { - const char *blankText; - s32 defaultAction; - struct unkStruct_203B25C *preload; + s32 loopMax; MemoryFill16(gUnknown_203B25C->unkAC,0,sizeof(gUnknown_203B25C->unkAC)); + loopMax = 0; - // This is dumb that I have to squeeze this in like this - preload = gUnknown_203B25C; - blankText = NULL; - preload->menuItems[0].text = *gUnknown_80D4920; // Yes - preload->menuItems[0].menuAction = MENU_OPTION_YES; - defaultAction = MENU_OPTION_DEFAULT; - preload->menuItems[1].text = *gUnknown_80D4928; // No - preload->menuItems[1].menuAction = MENU_OPTION_NO; - preload->menuItems[2].text = blankText; - preload->menuItems[2].menuAction = defaultAction; + gUnknown_203B25C->menuItems[loopMax].text = *gUnknown_80D4920; // Yes + gUnknown_203B25C->menuItems[loopMax].menuAction = MENU_OPTION_YES; + loopMax += 1; + gUnknown_203B25C->menuItems[loopMax].text = *gUnknown_80D4928; // No + gUnknown_203B25C->menuItems[loopMax].menuAction = MENU_OPTION_NO; + loopMax += 1; + gUnknown_203B25C->menuItems[loopMax].text = NULL; + gUnknown_203B25C->menuItems[loopMax].menuAction = MENU_OPTION_DEFAULT; } void HandleOthersMenu(void) diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index 88fbfa0d4..19f3ce1c2 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -186,19 +186,17 @@ extern u8 *gUnknown_80D4928[]; void sub_802CBAC(void) { - u8 *text; - s32 menuAction; - struct unkStruct_203B2F0 *preload; + s32 loopMax; + loopMax = 0; - preload = gUnknown_203B2F0; - text = NULL; - preload->unk14C[0].text = *gUnknown_80D4920; - preload->unk14C[0].menuAction = 5; - menuAction = 1; - preload->unk14C[1].text = *gUnknown_80D4928; - preload->unk14C[1].menuAction = 6; - preload->unk14C[2].text = text; - preload->unk14C[2].menuAction = menuAction; + gUnknown_203B2F0->unk14C[loopMax].text = *gUnknown_80D4920; + gUnknown_203B2F0->unk14C[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B2F0->unk14C[loopMax].text = *gUnknown_80D4928; + gUnknown_203B2F0->unk14C[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B2F0->unk14C[loopMax].text = NULL; + gUnknown_203B2F0->unk14C[loopMax].menuAction = 1; } void sub_802CC00(void) diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 0ef10864d..8a315afb9 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -381,19 +381,16 @@ void sub_802F088(void) void sub_802F108(void) { - struct unkStruct_203B30C *preload; - const u8 *blankText; - s32 action_1; + s32 loopMax = 0; - preload = gUnknown_203B30C; - blankText = NULL; - preload->unkB0[0].text = gUnknown_80E040C; - preload->unkB0[0].menuAction = 2; - action_1 = 1; - preload->unkB0[1].text = *gUnknown_80D4970; - preload->unkB0[1].menuAction = 3; - preload->unkB0[2].text = blankText; - preload->unkB0[2].menuAction = action_1; + gUnknown_203B30C->unkB0[loopMax].text = gUnknown_80E040C; + gUnknown_203B30C->unkB0[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B30C->unkB0[loopMax].text = *gUnknown_80D4970; + gUnknown_203B30C->unkB0[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B30C->unkB0[loopMax].text = NULL; + gUnknown_203B30C->unkB0[loopMax].menuAction = 1; } void sub_802F148(void) From 2d01cbd025bc03b284d6c2d9ae0e4cba97a4d826 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 19 May 2023 08:43:33 -0700 Subject: [PATCH 05/21] more decomp of menus and combining files --- asm/mailbox.s | 271 ---------------------------- asm/pelipper_board.s | 210 ---------------------- include/mailbox.h | 2 +- include/pelipper_board.h | 2 +- ld_script.txt | 4 - src/mailbox.c | 378 +++++++++++++++++++++++++++++++++++++-- src/mailbox_1.c | 263 --------------------------- src/pelipper_board.c | 278 +++++++++++++++++++++++++++- src/pelipper_board_1.c | 200 --------------------- 9 files changed, 638 insertions(+), 970 deletions(-) delete mode 100644 asm/mailbox.s delete mode 100644 asm/pelipper_board.s delete mode 100644 src/mailbox_1.c delete mode 100644 src/pelipper_board_1.c diff --git a/asm/mailbox.s b/asm/mailbox.s deleted file mode 100644 index 4fed67893..000000000 --- a/asm/mailbox.s +++ /dev/null @@ -1,271 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start CreateMailboxMenu -CreateMailboxMenu: - push {r4-r7,lr} - ldr r4, _0802E380 - ldr r0, [r4] - adds r0, 0xFC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xBC - ldr r0, _0802E384 - str r0, [r2] - adds r1, 0xC0 - movs r0, 0x2 - str r0, [r1] - bl HasNoMailinMailbox - lsls r0, 24 - cmp r0, 0 - beq _0802E2E6 - ldr r0, [r4] - adds r0, 0xFC - movs r1, 0x1 - strh r1, [r0] -_0802E2E6: - movs r5, 0x1 - ldr r1, [r4] - movs r6, 0x1 - adds r2, r1, 0 - adds r2, 0xC4 - ldr r0, _0802E388 - str r0, [r2] - adds r1, 0xC8 - movs r0, 0x3 - str r0, [r1] - bl HasNoAcceptedJobs - lsls r0, 24 - cmp r0, 0 - beq _0802E30A - ldr r0, [r4] - adds r0, 0xFE - strh r5, [r0] -_0802E30A: - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xCC - ldr r0, _0802E38C - str r0, [r2] - adds r1, 0xD0 - movs r0, 0x4 - str r0, [r1] - bl HasNoPKMNNews - lsls r0, 24 - cmp r0, 0 - beq _0802E32E - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r6, [r0] -_0802E32E: - movs r5, 0x3 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0xD4 - movs r1, 0 - str r1, [r0] - adds r0, 0x4 - str r6, [r0] - movs r3, 0 - adds r6, r4, 0 - mov r12, r2 - mov r4, r12 - adds r4, 0xFC - adds r2, 0xC0 -_0802E34A: - ldrh r0, [r4] - cmp r0, 0 - bne _0802E35A - ldr r1, [r2] - mov r7, r12 - ldr r0, [r7, 0x64] - cmp r1, r0 - beq _0802E3B2 -_0802E35A: - adds r4, 0x2 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r5 - blt _0802E34A - movs r3, 0 - cmp r3, r5 - bge _0802E3B2 - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xFC - ldrh r0, [r0] - cmp r0, 0 - bne _0802E390 - adds r0, r1, 0 - adds r0, 0xC0 - ldr r0, [r0] - str r0, [r1, 0x64] - b _0802E3B2 - .align 2, 0 -_0802E380: .4byte gUnknown_203B304 -_0802E384: .4byte gMailboxCheckMail -_0802E388: .4byte gMailboxJobList -_0802E38C: .4byte gMailboxPKMNNews -_0802E390: - adds r3, 0x1 - cmp r3, r5 - bge _0802E3B2 - ldr r2, [r6] - lsls r0, r3, 1 - adds r1, r2, 0 - adds r1, 0xFC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _0802E390 - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0xC0 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x64] -_0802E3B2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CreateMailboxMenu - - thumb_func_start CreateMailActionMenu -CreateMailActionMenu: - push {r4-r7,lr} - movs r5, 0 - ldr r4, _0802E3F0 - ldr r0, [r4] - ldrb r0, [r0, 0x8] - bl GetMailboxSlotInfo - adds r7, r0, 0 - ldrb r0, [r7] - cmp r0, 0x1 - bne _0802E3FC - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0xBC - ldr r0, _0802E3F4 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x6 - str r0, [r1] - adds r1, 0x4 - ldr r0, _0802E3F8 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x7 - str r0, [r1] - movs r5, 0x2 - b _0802E44A - .align 2, 0 -_0802E3F0: .4byte gUnknown_203B304 -_0802E3F4: .4byte gMailActionStore -_0802E3F8: .4byte gMailActionRead -_0802E3FC: - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xBC - ldr r0, _0802E494 - ldr r0, [r0] - str r0, [r2] - adds r1, 0xC0 - movs r0, 0x5 - str r0, [r1] - adds r0, r7, 0 - bl IsMailinJobSlot - lsls r0, 24 - cmp r0, 0 - bne _0802E422 - bl GetNumAcceptedJobs - cmp r0, 0x7 - ble _0802E42C -_0802E422: - ldr r0, [r4] - adds r0, 0xC0 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] -_0802E42C: - adds r5, 0x1 - ldr r4, _0802E498 - ldr r2, [r4] - lsls r3, r5, 3 - adds r0, r2, 0 - adds r0, 0xBC - adds r0, r3 - ldr r1, _0802E49C - ldr r1, [r1] - str r1, [r0] - adds r2, 0xC0 - adds r2, r3 - movs r0, 0x8 - str r0, [r2] - adds r5, 0x1 -_0802E44A: - mov r12, r4 - mov r0, r12 - ldr r4, [r0] - lsls r2, r5, 3 - adds r0, r4, 0 - adds r0, 0xBC - adds r0, r2 - movs r1, 0 - str r1, [r0] - adds r1, r4, 0 - adds r1, 0xC0 - adds r2, r1, r2 - movs r0, 0x1 - str r0, [r2] - movs r3, 0 - cmp r3, r5 - bge _0802E486 - movs r6, 0x1 - negs r6, r6 - adds r2, r1, 0 -_0802E472: - ldr r1, [r2] - cmp r1, r6 - beq _0802E47E - ldr r0, [r4, 0x68] - cmp r1, r0 - beq _0802E4A8 -_0802E47E: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r5 - blt _0802E472 -_0802E486: - ldrb r0, [r7] - cmp r0, 0x1 - bne _0802E4A0 - mov r0, r12 - ldr r1, [r0] - movs r0, 0x7 - b _0802E4A6 - .align 2, 0 -_0802E494: .4byte gUnknown_80D4990 -_0802E498: .4byte gUnknown_203B304 -_0802E49C: .4byte gUnknown_80D4970 -_0802E4A0: - mov r0, r12 - ldr r1, [r0] - movs r0, 0x8 -_0802E4A6: - str r0, [r1, 0x68] -_0802E4A8: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CreateMailActionMenu - - .align 2,0 diff --git a/asm/pelipper_board.s b/asm/pelipper_board.s deleted file mode 100644 index eed973567..000000000 --- a/asm/pelipper_board.s +++ /dev/null @@ -1,210 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start CreatePelipperBoardMenu -CreatePelipperBoardMenu: - push {r4-r7,lr} - ldr r4, _0802EBDC - ldr r0, [r4] - adds r0, 0xFC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xBC - ldr r0, _0802EBE0 - str r0, [r2] - adds r1, 0xC0 - movs r0, 0x2 - str r0, [r1] - bl HasNoPelipperBoardJobs - lsls r0, 24 - cmp r0, 0 - beq _0802EB66 - ldr r0, [r4] - adds r0, 0xFC - movs r1, 0x1 - strh r1, [r0] -_0802EB66: - movs r5, 0x1 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xC4 - ldr r0, _0802EBE4 - str r0, [r2] - adds r1, 0xC8 - movs r0, 0x3 - str r0, [r1] - bl HasNoAcceptedJobs - lsls r0, 24 - cmp r0, 0 - beq _0802EB88 - ldr r0, [r4] - adds r0, 0xFE - strh r5, [r0] -_0802EB88: - movs r5, 0x2 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0xCC - movs r0, 0 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x1 - str r0, [r1] - movs r3, 0 - adds r6, r4, 0 - mov r12, r2 - mov r4, r12 - adds r4, 0xFC - adds r2, 0xC0 -_0802EBA6: - ldrh r0, [r4] - cmp r0, 0 - bne _0802EBB6 - ldr r1, [r2] - mov r7, r12 - ldr r0, [r7, 0x64] - cmp r1, r0 - beq _0802EC0A -_0802EBB6: - adds r4, 0x2 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r5 - blt _0802EBA6 - movs r3, 0 - cmp r3, r5 - bge _0802EC0A - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xFC - ldrh r0, [r0] - cmp r0, 0 - bne _0802EBE8 - adds r0, r1, 0 - adds r0, 0xC0 - ldr r0, [r0] - str r0, [r1, 0x64] - b _0802EC0A - .align 2, 0 -_0802EBDC: .4byte gPelipperBoard -_0802EBE0: .4byte gPelipperBoard_BulletinBoard -_0802EBE4: .4byte gPelipperBoard_JobList -_0802EBE8: - adds r3, 0x1 - cmp r3, r5 - bge _0802EC0A - ldr r2, [r6] - lsls r0, r3, 1 - adds r1, r2, 0 - adds r1, 0xFC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _0802EBE8 - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0xC0 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x64] -_0802EC0A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CreatePelipperBoardMenu - - thumb_func_start sub_802EC10 -sub_802EC10: - push {r4-r7,lr} - movs r6, 0 - ldr r4, _0802ECA8 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0xBC - ldr r0, _0802ECAC - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x4 - str r0, [r1] - ldrb r0, [r2, 0x8] - bl GetPelipperBoardSlotInfo - bl IsMailinJobSlot - lsls r0, 24 - cmp r0, 0 - bne _0802EC40 - bl GetNumAcceptedJobs - cmp r0, 0x7 - ble _0802EC4A -_0802EC40: - ldr r0, [r4] - adds r0, 0xC0 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] -_0802EC4A: - adds r6, 0x1 - ldr r4, _0802ECA8 - ldr r5, [r4] - lsls r1, r6, 3 - adds r2, r5, 0 - adds r2, 0xBC - adds r3, r2, r1 - ldr r0, _0802ECB0 - ldr r0, [r0] - str r0, [r3] - adds r3, r5, 0 - adds r3, 0xC0 - adds r1, r3, r1 - movs r0, 0x5 - str r0, [r1] - adds r6, 0x1 - lsls r1, r6, 3 - adds r2, r1 - movs r0, 0 - str r0, [r2] - adds r1, r3, r1 - movs r0, 0x1 - str r0, [r1] - movs r2, 0 - adds r7, r4, 0 - cmp r2, r6 - bge _0802EC9C - adds r4, r5, 0 - movs r5, 0x1 - negs r5, r5 - adds r1, r3, 0 -_0802EC88: - ldr r3, [r1] - cmp r3, r5 - beq _0802EC94 - ldr r0, [r4, 0x68] - cmp r3, r0 - beq _0802ECA2 -_0802EC94: - adds r1, 0x8 - adds r2, 0x1 - cmp r2, r6 - blt _0802EC88 -_0802EC9C: - ldr r1, [r7] - movs r0, 0x5 - str r0, [r1, 0x68] -_0802ECA2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802ECA8: .4byte gPelipperBoard -_0802ECAC: .4byte gUnknown_80D4990 -_0802ECB0: .4byte gUnknown_80D4970 - thumb_func_end sub_802EC10 - - .align 2,0 diff --git a/include/mailbox.h b/include/mailbox.h index dcde0ba71..ef91f7ee0 100644 --- a/include/mailbox.h +++ b/include/mailbox.h @@ -19,7 +19,7 @@ struct unkStruct_203B304 u32 menuAction1; u32 menuAction2; struct MenuStruct unk6C; - struct MenuItem unkBC[8]; + struct MenuItem menuItems[8]; u16 unkFC[8]; struct UnkTextStruct2 unk10C[4]; }; diff --git a/include/pelipper_board.h b/include/pelipper_board.h index e20f24878..80ba03b87 100644 --- a/include/pelipper_board.h +++ b/include/pelipper_board.h @@ -13,7 +13,7 @@ struct unkStruct_203B308 u32 menuAction1; u32 menuAction2; struct MenuStruct unk6C; - struct MenuItem unkBC[8]; + struct MenuItem menuItems[8]; u16 unkFC[8]; struct UnkTextStruct2 unk10C[4]; }; diff --git a/ld_script.txt b/ld_script.txt index 4989f1ffa..e5e1c9772 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -139,11 +139,7 @@ SECTIONS { asm/wonder_mail_3.o(.text); src/wonder_mail_802DF88.o(.text); src/mailbox.o(.text); - asm/mailbox.o(.text); - src/mailbox_1.o(.text); src/pelipper_board.o(.text); - asm/pelipper_board.o(.text); - src/pelipper_board_1.o(.text); src/wonder_mail_3_mid.o(.text); asm/wonder_mail_3_mid.o(.text); src/wonder_mail_3_1.o(.text); diff --git a/src/mailbox.c b/src/mailbox.c index 817b10a3c..4922eabc4 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -8,18 +8,21 @@ #include "menu_input.h" -extern void HandleMailboxMenu(void); -extern void nullsub_133(void); -extern void sub_802E578(void); -extern void HandleMailActionMenu(void); -extern void sub_802E73C(void); -extern void sub_802E758(void); -extern void sub_802E774(void); -extern void sub_802E7D0(void); +extern u8 *gUnknown_80D4990[]; +extern u8 *gUnknown_80D4970[]; +extern bool8 IsMailinJobSlot(struct WonderMail *mail); -extern void sub_802E0A0(void); -extern void sub_802E1AC(void); +void sub_802E578(void); +void HandleMailActionMenu(void); +void HandleMailboxMenu(void); +void nullsub_133(void); +void sub_802E0A0(void); +void sub_802E1AC(void); +void sub_802E73C(void); +void sub_802E758(void); +void sub_802E774(void); +void sub_802E7D0(void); const struct UnkTextStruct2 gUnknown_80E0284 = { @@ -79,13 +82,41 @@ extern void sub_802BD14(u32, u32, u32); extern void sub_802BE94(u32); extern void CreateMailMenu(void); extern void CreateMailAcceptedStatusBox(u32); -extern struct WonderMail * GetMailboxSlotInfo(u32); extern void sub_803B35C(struct WonderMail *, u32 *); extern void sub_802DE84(u32 *); extern void InitializeJobListMenu(u32); extern void sub_802B640(u32, u32, u32); extern void sub_802B7D0(u32); extern void sub_802B9FC(u8); +extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32); +extern void sub_8008C54(u32); +extern void sub_80073B8(u32); +extern void sub_80073E0(u32); +extern u32 sub_802BA8C(void); +extern void sub_802BACC(void); +extern u8 GetPokemonNewsIndex(void); +extern void sub_802B81C(void); +extern u32 sub_802B720(u32); +extern u32 sub_802C898(void); +extern void sub_802C8F4(void); +extern u32 sub_802DEE0(void); +extern void sub_802DF24(void); +extern struct WonderMail *GetMailboxSlotInfo(u8); +extern u8 HasNoMailinMailbox(void); +extern u32 sub_802BDEC(u32); +extern void AcceptJob(struct WonderMail *); +extern void sub_8096C80(void); +extern void sub_8096D24(void); +extern void ResetMailboxSlot(u8); +extern void ReceivePKMNNews(u8); +extern void sub_8096078(void); +extern void PlayMenuSoundEffect(u32); +extern void PlaySound(u32); +extern void sub_802BEDC(void); +extern u8 sub_802BE74(void); +extern u8 HasNoAcceptedJobs(void); +extern u8 HasNoPelipperBoardJobs(void); +extern u8 HasNoPKMNNews(void); u32 sub_802DFB0(void) { @@ -165,12 +196,12 @@ void sub_802E0A0(void) } CreateMailboxMenu(); gUnknown_203B304->unk10C[2] = gUnknown_80E029C; - sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC); + sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->menuItems); break; case MAIL_ACTION_MENU: CreateMailActionMenu(); gUnknown_203B304->unk10C[2] = gUnknown_80E02B4; - sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC); + sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->menuItems); gUnknown_203B304->unk10C[2].unkC = 6; gUnknown_203B304->unk10C[3] = gUnknown_80E02CC; break; @@ -190,7 +221,7 @@ void sub_802E1AC(void) switch(gUnknown_203B304->state) { case MAIN_MAILBOX_MENU: - sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, gUnknown_203B304->unkFC, gUnknown_203B304->menuAction1, 2); + sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->menuItems, 0, gUnknown_203B304->unkFC, gUnknown_203B304->menuAction1, 2); break; case MAIL_MENU: sub_802BD14(0, 0, 4); @@ -201,7 +232,7 @@ void sub_802E1AC(void) case MAIL_ACTION_MENU: CreateMailMenu(); CreateMailAcceptedStatusBox(3); - sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, 0, gUnknown_203B304->menuAction2, 2); + sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->menuItems, 0, 0, gUnknown_203B304->menuAction2, 2); break; case MAIL_INFO: sub_803B35C(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex), &gUnknown_203B304->unkC); @@ -227,3 +258,320 @@ void sub_802E1AC(void) break; } } + +void CreateMailboxMenu(void) +{ + int index; + s32 loopMax; + + loopMax = 0; + MemoryFill16(gUnknown_203B304->unkFC,0,0x10); + gUnknown_203B304->menuItems[0].text = gMailboxCheckMail; + gUnknown_203B304->menuItems[0].menuAction = 2; + if ((HasNoMailinMailbox())) { + gUnknown_203B304->unkFC[0] = 1; + } + loopMax += 1; + + gUnknown_203B304->menuItems[loopMax].text = gMailboxJobList; + gUnknown_203B304->menuItems[loopMax].menuAction = 3; + if(HasNoAcceptedJobs()) + { + gUnknown_203B304->unkFC[loopMax] = 1; + } + loopMax += 1; + + gUnknown_203B304->menuItems[loopMax].text = gMailboxPKMNNews; + gUnknown_203B304->menuItems[loopMax].menuAction = 4; + if(HasNoPKMNNews()) + { + gUnknown_203B304->unkFC[loopMax] = 1; + } + loopMax += 1; + + gUnknown_203B304->menuItems[loopMax].text = NULL; + gUnknown_203B304->menuItems[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B304->unkFC[index] == 0) { + if(gUnknown_203B304->menuItems[index].menuAction == gUnknown_203B304->menuAction1) + return; + } + } + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B304->unkFC[index] == 0) { + gUnknown_203B304->menuAction1 = gUnknown_203B304->menuItems[index].menuAction; + break; + } + } +} + +void CreateMailActionMenu(void) { + s32 index; + struct WonderMail *mail; + s32 loopMax = 0; + mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex); + if(mail->mailType == 1) + { + gUnknown_203B304->menuItems[loopMax].text = gMailActionStore; + gUnknown_203B304->menuItems[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B304->menuItems[loopMax].text = gMailActionRead; + gUnknown_203B304->menuItems[loopMax].menuAction = 7; + loopMax += 1; + } + else + { + gUnknown_203B304->menuItems[loopMax].text = *gUnknown_80D4990; // Accept + gUnknown_203B304->menuItems[loopMax].menuAction = 5; + + if(IsMailinJobSlot(mail) || GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS) + { + gUnknown_203B304->menuItems[loopMax].menuAction = -1; + } + loopMax += 1; + + gUnknown_203B304->menuItems[loopMax].text = *gUnknown_80D4970; // Info + gUnknown_203B304->menuItems[loopMax].menuAction = 8; + loopMax += 1; + } + gUnknown_203B304->menuItems[loopMax].text = NULL; + gUnknown_203B304->menuItems[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B304->menuItems[index].menuAction != -1) { + if(gUnknown_203B304->menuItems[index].menuAction == gUnknown_203B304->menuAction2) + return; + } + } + if(mail->mailType == 1) + gUnknown_203B304->menuAction2 = 7; + else + gUnknown_203B304->menuAction2 = 8; +} + +void HandleMailboxMenu(void) +{ + s32 menuAction = 0; + + if(!sub_8012FD8(&gUnknown_203B304->unk6C)) + { + sub_8013114(&gUnknown_203B304->unk6C, &menuAction); + if(menuAction != 1) gUnknown_203B304->menuAction1 = menuAction; + } + switch(menuAction) + { + // Check Mail + case 2: + if(!HasNoMailinMailbox()) + SetMailboxState(MAIL_MENU); + else + sub_8012EA4(&gUnknown_203B304->unk6C, 1); + break; + // Job List + case 3: + if(!HasNoAcceptedJobs()) + SetMailboxState(JOB_LIST_MENU); + else + sub_8012EA4(&gUnknown_203B304->unk6C, 1); + break; + case 4: + if(!HasNoPKMNNews()) + SetMailboxState(PKMN_NEWS_MENU); + else + sub_8012EA4(&gUnknown_203B304->unk6C, 1); + break; + case 8: + SetMailboxState(2); + break; + case 1: + SetMailboxState(MAILBOX_EXIT); + break; + } +} + +void sub_802E578(void) +{ + struct WonderMail *mail; + + switch(sub_802BDEC(1)) + { + + case 3: + gUnknown_203B304->mailboxIndex = sub_802BE74(); + SetMailboxState(MAIL_ACTION_MENU); + break; + case 4: + gUnknown_203B304->mailboxIndex = sub_802BE74(); + mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex); + if(mail->mailType == 1) + { + gUnknown_203B304->mailIndex = mail->dungeon.floor; + gUnknown_203B304->fallbackState = MAIL_MENU_1; + SetMailboxState(DISPLAY_SEL_PKMN_NEWS); + } + else + SetMailboxState(MAIL_INFO); + break; + case 2: + sub_802BEDC(); + SetMailboxState(MAIN_MAILBOX_MENU); + break; + case 0: + case 1: + break; + } +} + +void HandleMailActionMenu(void) +{ + s32 menuAction = 0; + struct WonderMail *mail; + + + sub_802BDEC(0); + if(!sub_8012FD8(&gUnknown_203B304->unk6C)) + { + sub_8013114(&gUnknown_203B304->unk6C, &menuAction); + if(menuAction != 1) gUnknown_203B304->menuAction2 = menuAction; + } + switch(menuAction) + { + case 2: + case 3: + case 4: + break; + + // Accept + case 5: + PlaySound(0x133); + AcceptJob(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex)); + sub_8096C80(); + sub_8096D24(); + ResetMailboxSlot(gUnknown_203B304->mailboxIndex); + sub_8096078(); + if(HasNoMailinMailbox()) + { + sub_802BEDC(); + SetMailboxState(MAIN_MAILBOX_MENU); + } + else + SetMailboxState(MAIL_MENU_1); + break; + + // Info + case 8: + SetMailboxState(MAIL_INFO); + break; + + // Store + case 6: + PlaySound(0x133); + mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex); + ReceivePKMNNews(mail->dungeon.floor); + ResetMailboxSlot(gUnknown_203B304->mailboxIndex); + sub_8096078(); + if(HasNoMailinMailbox()) + { + sub_802BEDC(); + SetMailboxState(MAIN_MAILBOX_MENU); + } + else + SetMailboxState(MAIL_MENU_1); + break; + + // Read + case 7: + PlayMenuSoundEffect(0); + mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex); + gUnknown_203B304->mailIndex = mail->dungeon.floor; + gUnknown_203B304->fallbackState = MAIL_MENU_1; + SetMailboxState(DISPLAY_SEL_PKMN_NEWS); + break; + case 1: + SetMailboxState(MAIL_MENU_1); + break; + } +} + +void sub_802E73C(void) +{ + switch(sub_802DEE0()) + { + case 2: + case 3: + sub_802DF24(); + SetMailboxState(MAIL_MENU_1); + case 0: + case 1: + break; + } +} + +void sub_802E758(void) +{ + switch(sub_802C898()) + { + case 2: + case 3: + sub_802C8F4(); + SetMailboxState(MAIN_MAILBOX_MENU); + case 0: + case 1: + break; + } +} + +void sub_802E774(void) +{ + switch(sub_802B720(1)) + { + case 0: + case 1: + break; + case 3: + case 4: + gUnknown_203B304->mailIndex = GetPokemonNewsIndex(); + gUnknown_203B304->fallbackState = PKMN_NEWS_MENU_1; + SetMailboxState(DISPLAY_SEL_PKMN_NEWS); + break; + case 2: + sub_802B81C(); + SetMailboxState(MAIN_MAILBOX_MENU); + break; + } +} + +void sub_802E7D0(void) +{ + switch(sub_802BA8C()) + { + case 2: + case 3: + sub_802BACC(); + SetMailboxState(gUnknown_203B304->fallbackState); + case 0: + case 1: + break; + } +} + +void nullsub_133(void) +{ +} + +void CreateMailAcceptedStatusBox(u32 r0) +{ + sub_8008C54(r0); + sub_80073B8(r0); + xxx_call_draw_string(3, 0, gMailAccepted, r0, 0); + sub_8012BC4(0x12, 0xD, GetNumAcceptedJobs(), 2, 7, r0); + xxx_call_draw_string(0x16, 0xD, gUnknown_80E0324, r0, 0); // "/" + sub_8012BC4(0x23, 0xD, MAX_ACCEPTED_JOBS, 2, 7, r0); + sub_80073E0(r0); +} + diff --git a/src/mailbox_1.c b/src/mailbox_1.c deleted file mode 100644 index 59e0c6ce1..000000000 --- a/src/mailbox_1.c +++ /dev/null @@ -1,263 +0,0 @@ -#include "global.h" -#include "memory.h" -#include "text.h" -#include "menu.h" -#include "input.h" -#include "mailbox.h" -#include "wonder_mail.h" -#include "menu_input.h" - -extern struct unkStruct_203B304 *gUnknown_203B304; - -extern u8 gMailAccepted[]; -extern u8 gUnknown_80E0324[]; - -extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32); -extern void sub_8008C54(u32); -extern void sub_80073B8(u32); -extern void sub_80073E0(u32); -extern u32 sub_802BA8C(void); -extern void sub_802BACC(void); -extern u8 GetPokemonNewsIndex(void); -extern void sub_802B81C(void); -extern u32 sub_802B720(u32); -extern u32 sub_802C898(void); -extern void sub_802C8F4(void); -extern u32 sub_802DEE0(void); -extern void sub_802DF24(void); -extern struct WonderMail *GetMailboxSlotInfo(u8); -extern u8 HasNoMailinMailbox(void); -extern u32 sub_802BDEC(u32); -extern void AcceptJob(struct WonderMail *); -extern void sub_8096C80(void); -extern void sub_8096D24(void); -extern void ResetMailboxSlot(u8); -extern void ReceivePKMNNews(u8); -extern void sub_8096078(void); -extern void PlayMenuSoundEffect(u32); -extern void PlaySound(u32); -extern void sub_802BEDC(void); -extern u8 sub_802BE74(void); -extern u8 HasNoAcceptedJobs(void); -extern u8 HasNoPKMNNews(void); - -void HandleMailboxMenu(void) -{ - s32 menuAction = 0; - - if(!sub_8012FD8(&gUnknown_203B304->unk6C)) - { - sub_8013114(&gUnknown_203B304->unk6C, &menuAction); - if(menuAction != 1) gUnknown_203B304->menuAction1 = menuAction; - } - switch(menuAction) - { - // Check Mail - case 2: - if(!HasNoMailinMailbox()) - SetMailboxState(MAIL_MENU); - else - sub_8012EA4(&gUnknown_203B304->unk6C, 1); - break; - // Job List - case 3: - if(!HasNoAcceptedJobs()) - SetMailboxState(JOB_LIST_MENU); - else - sub_8012EA4(&gUnknown_203B304->unk6C, 1); - break; - case 4: - if(!HasNoPKMNNews()) - SetMailboxState(PKMN_NEWS_MENU); - else - sub_8012EA4(&gUnknown_203B304->unk6C, 1); - break; - case 8: - SetMailboxState(2); - break; - case 1: - SetMailboxState(MAILBOX_EXIT); - break; - } -} - -void sub_802E578(void) -{ - struct WonderMail *mail; - - switch(sub_802BDEC(1)) - { - - case 3: - gUnknown_203B304->mailboxIndex = sub_802BE74(); - SetMailboxState(MAIL_ACTION_MENU); - break; - case 4: - gUnknown_203B304->mailboxIndex = sub_802BE74(); - mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex); - if(mail->mailType == 1) - { - gUnknown_203B304->mailIndex = mail->dungeon.floor; - gUnknown_203B304->fallbackState = MAIL_MENU_1; - SetMailboxState(DISPLAY_SEL_PKMN_NEWS); - } - else - SetMailboxState(MAIL_INFO); - break; - case 2: - sub_802BEDC(); - SetMailboxState(MAIN_MAILBOX_MENU); - break; - case 0: - case 1: - break; - } -} - -void HandleMailActionMenu(void) -{ - s32 menuAction = 0; - struct WonderMail *mail; - - - sub_802BDEC(0); - if(!sub_8012FD8(&gUnknown_203B304->unk6C)) - { - sub_8013114(&gUnknown_203B304->unk6C, &menuAction); - if(menuAction != 1) gUnknown_203B304->menuAction2 = menuAction; - } - switch(menuAction) - { - case 2: - case 3: - case 4: - break; - - // Accept - case 5: - PlaySound(0x133); - AcceptJob(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex)); - sub_8096C80(); - sub_8096D24(); - ResetMailboxSlot(gUnknown_203B304->mailboxIndex); - sub_8096078(); - if(HasNoMailinMailbox()) - { - sub_802BEDC(); - SetMailboxState(MAIN_MAILBOX_MENU); - } - else - SetMailboxState(MAIL_MENU_1); - break; - - // Info - case 8: - SetMailboxState(MAIL_INFO); - break; - - // Store - case 6: - PlaySound(0x133); - mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex); - ReceivePKMNNews(mail->dungeon.floor); - ResetMailboxSlot(gUnknown_203B304->mailboxIndex); - sub_8096078(); - if(HasNoMailinMailbox()) - { - sub_802BEDC(); - SetMailboxState(MAIN_MAILBOX_MENU); - } - else - SetMailboxState(MAIL_MENU_1); - break; - - // Read - case 7: - PlayMenuSoundEffect(0); - mail = GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex); - gUnknown_203B304->mailIndex = mail->dungeon.floor; - gUnknown_203B304->fallbackState = MAIL_MENU_1; - SetMailboxState(DISPLAY_SEL_PKMN_NEWS); - break; - case 1: - SetMailboxState(MAIL_MENU_1); - break; - } -} - -void sub_802E73C(void) -{ - switch(sub_802DEE0()) - { - case 2: - case 3: - sub_802DF24(); - SetMailboxState(MAIL_MENU_1); - case 0: - case 1: - break; - } -} - -void sub_802E758(void) -{ - switch(sub_802C898()) - { - case 2: - case 3: - sub_802C8F4(); - SetMailboxState(MAIN_MAILBOX_MENU); - case 0: - case 1: - break; - } -} - -void sub_802E774(void) -{ - switch(sub_802B720(1)) - { - case 0: - case 1: - break; - case 3: - case 4: - gUnknown_203B304->mailIndex = GetPokemonNewsIndex(); - gUnknown_203B304->fallbackState = PKMN_NEWS_MENU_1; - SetMailboxState(DISPLAY_SEL_PKMN_NEWS); - break; - case 2: - sub_802B81C(); - SetMailboxState(MAIN_MAILBOX_MENU); - break; - } -} - -void sub_802E7D0(void) -{ - switch(sub_802BA8C()) - { - case 2: - case 3: - sub_802BACC(); - SetMailboxState(gUnknown_203B304->fallbackState); - case 0: - case 1: - break; - } -} - -void nullsub_133(void) -{ -} - -void CreateMailAcceptedStatusBox(u32 r0) -{ - sub_8008C54(r0); - sub_80073B8(r0); - xxx_call_draw_string(3, 0, gMailAccepted, r0, 0); - sub_8012BC4(0x12, 0xD, GetNumAcceptedJobs(), 2, 7, r0); - xxx_call_draw_string(0x16, 0xD, gUnknown_80E0324, r0, 0); // "/" - sub_8012BC4(0x23, 0xD, MAX_ACCEPTED_JOBS, 2, 7, r0); - sub_80073E0(r0); -} diff --git a/src/pelipper_board.c b/src/pelipper_board.c index 3e8878183..eccc2fe35 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -1,9 +1,14 @@ #include "global.h" +#include "mailbox.h" +#include "pokemon.h" +#include "item.h" #include "memory.h" #include "text.h" #include "menu.h" #include "input.h" +#include "wonder_mail.h" #include "menu_input.h" +#include "team_inventory.h" #include "pelipper_board.h" EWRAM_DATA_2 struct unkStruct_203B308 *gPelipperBoard = {0}; @@ -70,11 +75,37 @@ extern void sub_802C10C(u32, u32, u32); extern void sub_802C28C(u32); extern void DrawPelipperBoardJobMenu(void); extern void CreatePelipperAcceptedStatusBox(u32); -extern struct WonderMail *GetPelipperBoardSlotInfo(u32); extern void sub_803B35C(struct WonderMail *, u32 *); extern void sub_802DE84(u32 *); extern void InitializeJobListMenu(u32); +extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32); +extern void sub_8008C54(u32); +extern void sub_80073B8(u32); +extern void sub_80073E0(u32); +extern u32 sub_802C898(void); +extern void sub_802C8F4(void); +extern u32 sub_802DEE0(void); +extern void sub_802DF24(void); +extern struct WonderMail *GetPelipperBoardSlotInfo(u8); +extern u8 HasNoPelipperBoardJobs(void); +extern void sub_8096C80(void); +extern void sub_8096D24(void); +extern void AcceptJob(struct WonderMail*); +extern void ResetPelipperBoardSlot(u8); +extern void sub_80965F4(void); +extern void sub_802C2D4(void); +extern u32 sub_802C1E4(u32); +extern void PlaySound(u32); +extern u8 sub_802C26C(void); +extern u8 HasNoAcceptedJobs(void); +extern bool8 IsMailinJobSlot(struct WonderMail *mail); + +extern u8 *gUnknown_80D4990[]; +extern u8 *gUnknown_80D4970[]; + +void SetPelipperBoardState(u32); + u32 sub_802E864(void) { gPelipperBoard = MemoryAlloc(sizeof(struct unkStruct_203B308), 8); @@ -152,12 +183,12 @@ void sub_802E94C(void) } CreatePelipperBoardMenu(); gPelipperBoard->unk10C[2] = gUnknown_80E0348; - sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->unkBC); + sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->menuItems); break; case 6: sub_802EC10(); gPelipperBoard->unk10C[2] = gUnknown_80E0360; - sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->unkBC); + sub_8012CAC(&gPelipperBoard->unk10C[2], gPelipperBoard->menuItems); gPelipperBoard->unk10C[2].unkC = 6; gPelipperBoard->unk10C[3] = gUnknown_80E0378; break; @@ -177,7 +208,7 @@ void sub_802EA58(void) switch(gPelipperBoard->state) { case MAIN_PELIPPER_BOARD_MENU: - sub_8012D60(&gPelipperBoard->unk6C, gPelipperBoard->unkBC, 0, gPelipperBoard->unkFC, gPelipperBoard->menuAction1, 2); + sub_8012D60(&gPelipperBoard->unk6C, gPelipperBoard->menuItems, 0, gPelipperBoard->unkFC, gPelipperBoard->menuAction1, 2); break; case 4: sub_802C10C(0, 0, 4); @@ -188,7 +219,7 @@ void sub_802EA58(void) case 6: DrawPelipperBoardJobMenu(); CreatePelipperAcceptedStatusBox(3); - sub_8012D60(&gPelipperBoard->unk6C, gPelipperBoard->unkBC, 0, 0, gPelipperBoard->menuAction2, 2); + sub_8012D60(&gPelipperBoard->unk6C, gPelipperBoard->menuItems, 0, 0, gPelipperBoard->menuAction2, 2); break; case PELIPPER_JOB_INFO: sub_803B35C(GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex), &gPelipperBoard->unkC); @@ -205,3 +236,240 @@ void sub_802EA58(void) break; } } + +void CreatePelipperBoardMenu(void) +{ + int index; + s32 loopMax; + + loopMax = 0; + MemoryFill16(gPelipperBoard->unkFC,0,0x10); + gPelipperBoard->menuItems[0].text = gPelipperBoard_BulletinBoard; + gPelipperBoard->menuItems[0].menuAction = 2; + if ((HasNoPelipperBoardJobs())) { + gPelipperBoard->unkFC[0] = 1; + } + loopMax += 1; + gPelipperBoard->menuItems[loopMax].text = gPelipperBoard_JobList; + gPelipperBoard->menuItems[loopMax].menuAction = 3; + + if(HasNoAcceptedJobs()) + { + gPelipperBoard->unkFC[loopMax] = 1; + } + + loopMax += 1; + gPelipperBoard->menuItems[loopMax].text = NULL; + gPelipperBoard->menuItems[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if (gPelipperBoard->unkFC[index] == 0) { + if(gPelipperBoard->menuItems[index].menuAction == gPelipperBoard->menuAction1) + return; + } + } + + for(index = 0; index < loopMax; index++) + { + if (gPelipperBoard->unkFC[index] == 0) { + gPelipperBoard->menuAction1 = gPelipperBoard->menuItems[index].menuAction; + break; + } + } +} + +void sub_802EC10(void) { + + s32 index; + s32 loopMax = 0; + gPelipperBoard->menuItems[loopMax].text = *gUnknown_80D4990; + gPelipperBoard->menuItems[loopMax].menuAction = 4; + + if((IsMailinJobSlot(GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex))) || (GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS)) + { + gPelipperBoard->menuItems[loopMax].menuAction = -1; + } + + loopMax += 1; + gPelipperBoard->menuItems[loopMax].text = *gUnknown_80D4970; + gPelipperBoard->menuItems[loopMax].menuAction = 5; + loopMax += 1; + gPelipperBoard->menuItems[loopMax].text = NULL; + gPelipperBoard->menuItems[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gPelipperBoard->menuItems[index].menuAction != -1) + if(gPelipperBoard->menuItems[index].menuAction == gPelipperBoard->menuAction2) + return; + } + + gPelipperBoard->menuAction2 = 5; +} + +void sub_802ECB4(void) +{ + s32 menuAction = 0; + + if(!sub_8012FD8(&gPelipperBoard->unk6C)) + { + sub_8013114(&gPelipperBoard->unk6C, &menuAction); + if(menuAction != 1) gPelipperBoard->menuAction1 = menuAction; + } + + switch(menuAction) + { + // Bulletin Board + case 2: + if(!HasNoPelipperBoardJobs()) + SetPelipperBoardState(4); + else + sub_8012EA4(&gPelipperBoard->unk6C, 1); + break; + // Job List + case 3: + if(!HasNoAcceptedJobs()) + SetPelipperBoardState(PELIPPER_JOB_LIST_MENU); + else + sub_8012EA4(&gPelipperBoard->unk6C, 1); + break; + case 5: + SetPelipperBoardState(2); + break; + case 1: + SetPelipperBoardState(PELIPPER_BOARD_EXIT); + break; + } +} + +void sub_802ED4C(void) +{ + switch(sub_802C1E4(1)) + { + case 3: + gPelipperBoard->jobIndex = sub_802C26C(); + SetPelipperBoardState(6); + break; + case 4: + gPelipperBoard->jobIndex = sub_802C26C(); + SetPelipperBoardState(7); + break; + case 2: + sub_802C2D4(); + SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU); + break; + case 0: + case 1: + break; + } +} + +void sub_802EDBC(void) +{ + struct WonderMail *mail; + s32 menuAction = 0; + + sub_802C1E4(0); + if(!sub_8012FD8(&gPelipperBoard->unk6C)) + { + sub_8013114(&gPelipperBoard->unk6C, &menuAction); + if(menuAction != 1) gPelipperBoard->menuAction2 = menuAction; + } + switch(menuAction) + { + // Accept + case 4: + PlaySound(0x133); + mail = GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex); + switch(mail->mailType) + { + case 2: + gPelipperBoard->unk4 = 1; + ResetPelipperBoardSlot(gPelipperBoard->jobIndex); + sub_80965F4(); + sub_802C2D4(); + SetPelipperBoardState(PELIPPER_BOARD_EXIT); + break; + case 3: + gPelipperBoard->unk4 = 2; + ResetPelipperBoardSlot(gPelipperBoard->jobIndex); + sub_80965F4(); + sub_802C2D4(); + SetPelipperBoardState(PELIPPER_BOARD_EXIT); + break; + case 4: + gPelipperBoard->unk4 = 3; + ResetPelipperBoardSlot(gPelipperBoard->jobIndex); + sub_80965F4(); + sub_802C2D4(); + SetPelipperBoardState(PELIPPER_BOARD_EXIT); + break; + default: + AcceptJob(mail); + sub_8096C80(); + sub_8096D24(); + if(HasNoPelipperBoardJobs()) + { + sub_802C2D4(); + SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU); + } + else + SetPelipperBoardState(5); + break; + } + break; + // Info + case 5: + SetPelipperBoardState(PELIPPER_JOB_INFO); + break; + case 1: + SetPelipperBoardState(5); + break; + } +} + +void sub_802EEA0(void) +{ + switch(sub_802DEE0()) + { + case 2: + case 3: + sub_802DF24(); + SetPelipperBoardState(5); + case 0: + case 1: + break; + } +} + +void sub_802EEBC(void) +{ + switch(sub_802C898()) + { + case 2: + case 3: + sub_802C8F4(); + SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU); + case 0: + case 1: + break; + } +} + + +void nullsub_134(void) +{ +} + +void CreatePelipperAcceptedStatusBox(u32 r0) +{ + sub_8008C54(r0); + sub_80073B8(r0); + xxx_call_draw_string(3, 0, gPelipperBoard_Accepted, r0, 0); + sub_8012BC4(0x12, 0xD, GetNumAcceptedJobs(), 2, 7, r0); + xxx_call_draw_string(0x16, 0xD, gPelipperStatusSlash, r0, 0); // "/" + sub_8012BC4(0x23, 0xD, MAX_ACCEPTED_JOBS, 2, 7, r0); + sub_80073E0(r0); +} + diff --git a/src/pelipper_board_1.c b/src/pelipper_board_1.c deleted file mode 100644 index 2ae3924ab..000000000 --- a/src/pelipper_board_1.c +++ /dev/null @@ -1,200 +0,0 @@ -#include "global.h" -#include "mailbox.h" -#include "pokemon.h" -#include "item.h" -#include "memory.h" -#include "menu.h" -#include "text.h" -#include "team_inventory.h" -#include "wonder_mail.h" -#include "menu_input.h" -#include "pelipper_board.h" - -extern u8 gPelipperBoard_Accepted[]; -extern u8 gPelipperStatusSlash[]; -extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32); -extern void sub_8008C54(u32); -extern void sub_80073B8(u32); -extern void sub_80073E0(u32); -extern u32 sub_802C898(void); -extern void sub_802C8F4(void); -extern u32 sub_802DEE0(void); -extern void sub_802DF24(void); -extern struct WonderMail *GetPelipperBoardSlotInfo(u8); -extern u8 HasNoPelipperBoardJobs(void); -extern void sub_8096C80(void); -extern void sub_8096D24(void); -extern void AcceptJob(struct WonderMail*); -extern void ResetPelipperBoardSlot(u8); -extern void sub_80965F4(void); -extern void sub_802C2D4(void); -extern u32 sub_802C1E4(u32); -extern void PlaySound(u32); -extern void SetPelipperBoardState(u32); -extern u8 sub_802C26C(void); -extern u8 HasNoAcceptedJobs(void); - -void sub_802ECB4(void) -{ - s32 menuAction = 0; - - if(!sub_8012FD8(&gPelipperBoard->unk6C)) - { - sub_8013114(&gPelipperBoard->unk6C, &menuAction); - if(menuAction != 1) gPelipperBoard->menuAction1 = menuAction; - } - - switch(menuAction) - { - // Bulletin Board - case 2: - if(!HasNoPelipperBoardJobs()) - SetPelipperBoardState(4); - else - sub_8012EA4(&gPelipperBoard->unk6C, 1); - break; - // Job List - case 3: - if(!HasNoAcceptedJobs()) - SetPelipperBoardState(PELIPPER_JOB_LIST_MENU); - else - sub_8012EA4(&gPelipperBoard->unk6C, 1); - break; - case 5: - SetPelipperBoardState(2); - break; - case 1: - SetPelipperBoardState(PELIPPER_BOARD_EXIT); - break; - } -} - -void sub_802ED4C(void) -{ - switch(sub_802C1E4(1)) - { - case 3: - gPelipperBoard->jobIndex = sub_802C26C(); - SetPelipperBoardState(6); - break; - case 4: - gPelipperBoard->jobIndex = sub_802C26C(); - SetPelipperBoardState(7); - break; - case 2: - sub_802C2D4(); - SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU); - break; - case 0: - case 1: - break; - } -} - -void sub_802EDBC(void) -{ - struct WonderMail *mail; - s32 menuAction = 0; - - sub_802C1E4(0); - if(!sub_8012FD8(&gPelipperBoard->unk6C)) - { - sub_8013114(&gPelipperBoard->unk6C, &menuAction); - if(menuAction != 1) gPelipperBoard->menuAction2 = menuAction; - } - switch(menuAction) - { - // Accept - case 4: - PlaySound(0x133); - mail = GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex); - switch(mail->mailType) - { - case 2: - gPelipperBoard->unk4 = 1; - ResetPelipperBoardSlot(gPelipperBoard->jobIndex); - sub_80965F4(); - sub_802C2D4(); - SetPelipperBoardState(PELIPPER_BOARD_EXIT); - break; - case 3: - gPelipperBoard->unk4 = 2; - ResetPelipperBoardSlot(gPelipperBoard->jobIndex); - sub_80965F4(); - sub_802C2D4(); - SetPelipperBoardState(PELIPPER_BOARD_EXIT); - break; - case 4: - gPelipperBoard->unk4 = 3; - ResetPelipperBoardSlot(gPelipperBoard->jobIndex); - sub_80965F4(); - sub_802C2D4(); - SetPelipperBoardState(PELIPPER_BOARD_EXIT); - break; - default: - AcceptJob(mail); - sub_8096C80(); - sub_8096D24(); - if(HasNoPelipperBoardJobs()) - { - sub_802C2D4(); - SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU); - } - else - SetPelipperBoardState(5); - break; - } - break; - // Info - case 5: - SetPelipperBoardState(PELIPPER_JOB_INFO); - break; - case 1: - SetPelipperBoardState(5); - break; - } -} - -void sub_802EEA0(void) -{ - switch(sub_802DEE0()) - { - case 2: - case 3: - sub_802DF24(); - SetPelipperBoardState(5); - case 0: - case 1: - break; - } -} - -void sub_802EEBC(void) -{ - switch(sub_802C898()) - { - case 2: - case 3: - sub_802C8F4(); - SetPelipperBoardState(MAIN_PELIPPER_BOARD_MENU); - case 0: - case 1: - break; - } -} - - -void nullsub_134(void) -{ -} - -void CreatePelipperAcceptedStatusBox(u32 r0) -{ - sub_8008C54(r0); - sub_80073B8(r0); - xxx_call_draw_string(3, 0, gPelipperBoard_Accepted, r0, 0); - sub_8012BC4(0x12, 0xD, GetNumAcceptedJobs(), 2, 7, r0); - xxx_call_draw_string(0x16, 0xD, gPelipperStatusSlash, r0, 0); // "/" - sub_8012BC4(0x23, 0xD, MAX_ACCEPTED_JOBS, 2, 7, r0); - sub_80073E0(r0); -} From fae8e0cbfbf9935da3050efaca43a8ffffbe642b Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 19 May 2023 10:50:27 -0700 Subject: [PATCH 06/21] more menu decomp and merging of files --- asm/wonder_mail_3.s | 297 --------------------------------- include/code_802C39C.h | 2 +- include/mailbox.h | 6 +- include/pelipper_board.h | 5 +- include/wonder_mail.h | 5 +- include/wonder_mail_2_1.h | 4 +- include/wonder_mail_3.h | 7 +- ld_script.txt | 1 - src/mailbox.c | 10 +- src/menu_input.c | 4 +- src/pelipper_board.c | 10 +- src/thank_you_wonder_mail.c | 2 +- src/wonder_mail_2.c | 2 +- src/wonder_mail_2_1.c | 8 +- src/wonder_mail_3.c | 322 ++++++++++++++++++++++++++++++++++-- src/wonder_mail_3_mid.c | 2 +- src/wonder_mail_4.c | 6 +- src/wonder_mail_5.c | 2 +- src/wonder_mail_802DF88.c | 218 +----------------------- 19 files changed, 344 insertions(+), 569 deletions(-) delete mode 100644 asm/wonder_mail_3.s diff --git a/asm/wonder_mail_3.s b/asm/wonder_mail_3.s deleted file mode 100644 index 59c7c8fe9..000000000 --- a/asm/wonder_mail_3.s +++ /dev/null @@ -1,297 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_802D5A4 -sub_802D5A4: - push {r4-r7,lr} - ldr r4, _0802D630 - ldr r0, [r4] - movs r5, 0xCC - lsls r5, 1 - adds r0, r5 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r0, [r4] - mov r12, r0 - movs r3, 0 - movs r1, 0x8C - lsls r1, 1 - add r1, r12 - ldr r0, _0802D634 - ldr r0, [r0] - str r0, [r1] - movs r1, 0x8E - lsls r1, 1 - add r1, r12 - movs r0, 0x2 - str r0, [r1] - movs r2, 0x1 - movs r1, 0x90 - lsls r1, 1 - add r1, r12 - ldr r0, _0802D638 - ldr r0, [r0] - str r0, [r1] - movs r1, 0x92 - lsls r1, 1 - add r1, r12 - movs r0, 0x5 - str r0, [r1] - movs r7, 0x2 - movs r0, 0x94 - lsls r0, 1 - add r0, r12 - str r3, [r0] - movs r0, 0x96 - lsls r0, 1 - add r0, r12 - str r2, [r0] - movs r6, 0 - movs r3, 0x8E - lsls r3, 1 - add r3, r12 - mov r0, r12 - adds r2, r0, r5 -_0802D60A: - ldrh r0, [r2] - cmp r0, 0 - bne _0802D61A - ldr r1, [r3] - mov r5, r12 - ldr r0, [r5, 0x6C] - cmp r1, r0 - beq _0802D62A -_0802D61A: - adds r3, 0x8 - adds r2, 0x2 - adds r6, 0x1 - cmp r6, r7 - blt _0802D60A - ldr r1, [r4] - movs r0, 0x2 - str r0, [r1, 0x6C] -_0802D62A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D630: .4byte gUnknown_203B2F8 -_0802D634: .4byte gUnknown_80D494C -_0802D638: .4byte gUnknown_80D4970 - thumb_func_end sub_802D5A4 - - thumb_func_start sub_802D63C -sub_802D63C: - ldr r0, _0802D684 - ldr r0, [r0] - mov r12, r0 - movs r3, 0 - movs r1, 0xAC - lsls r1, 1 - add r1, r12 - ldr r0, _0802D688 - ldr r0, [r0] - str r0, [r1] - movs r1, 0xAE - lsls r1, 1 - add r1, r12 - movs r0, 0x3 - str r0, [r1] - movs r2, 0x1 - movs r1, 0xB0 - lsls r1, 1 - add r1, r12 - ldr r0, _0802D68C - ldr r0, [r0] - str r0, [r1] - movs r1, 0xB2 - lsls r1, 1 - add r1, r12 - movs r0, 0x4 - str r0, [r1] - movs r0, 0xB4 - lsls r0, 1 - add r0, r12 - str r3, [r0] - movs r0, 0xB6 - lsls r0, 1 - add r0, r12 - str r2, [r0] - bx lr - .align 2, 0 -_0802D684: .4byte gUnknown_203B2F8 -_0802D688: .4byte gUnknown_80D4920 -_0802D68C: .4byte gUnknown_80D4928 - thumb_func_end sub_802D63C - - thumb_func_start sub_802D690 -sub_802D690: - push {r4,r5,lr} - ldr r2, _0802D728 - ldr r0, [r2] - mov r12, r0 - movs r4, 0 - movs r1, 0xAC - lsls r1, 1 - add r1, r12 - ldr r0, _0802D72C - ldr r0, [r0] - str r0, [r1] - movs r1, 0xAE - lsls r1, 1 - add r1, r12 - movs r0, 0x3 - str r0, [r1] - movs r3, 0x1 - movs r1, 0xB0 - lsls r1, 1 - add r1, r12 - ldr r0, _0802D730 - ldr r0, [r0] - str r0, [r1] - movs r1, 0xB2 - lsls r1, 1 - add r1, r12 - movs r0, 0x4 - str r0, [r1] - movs r1, 0xB4 - lsls r1, 1 - add r1, r12 - ldr r0, _0802D734 - str r0, [r1] - movs r1, 0xB6 - lsls r1, 1 - add r1, r12 - movs r0, 0x6 - str r0, [r1] - movs r1, 0xB8 - lsls r1, 1 - add r1, r12 - ldr r0, _0802D738 - str r0, [r1] - movs r1, 0xBA - lsls r1, 1 - add r1, r12 - movs r0, 0x7 - str r0, [r1] - movs r5, 0x4 - movs r0, 0xBC - lsls r0, 1 - add r0, r12 - str r4, [r0] - movs r0, 0xBE - lsls r0, 1 - add r0, r12 - str r3, [r0] - movs r3, 0 - mov r0, r12 - ldr r4, [r0, 0x74] - movs r1, 0xAE - lsls r1, 1 - add r1, r12 -_0802D70E: - ldr r0, [r1] - cmp r0, r4 - beq _0802D722 - adds r1, 0x8 - adds r3, 0x1 - cmp r3, r5 - blt _0802D70E - ldr r1, [r2] - movs r0, 0x4 - str r0, [r1, 0x74] -_0802D722: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802D728: .4byte gUnknown_203B2F8 -_0802D72C: .4byte gUnknown_80D4920 -_0802D730: .4byte gUnknown_80D4928 -_0802D734: .4byte gUnknown_80E014C -_0802D738: .4byte gUnknown_80E0158 - thumb_func_end sub_802D690 - - thumb_func_start sub_802D73C -sub_802D73C: - push {r4,r5,lr} - ldr r3, _0802D7C0 - ldr r0, [r3] - mov r12, r0 - movs r4, 0 - movs r1, 0xAC - lsls r1, 1 - add r1, r12 - ldr r0, _0802D7C4 - ldr r0, [r0] - str r0, [r1] - movs r1, 0xAE - lsls r1, 1 - add r1, r12 - movs r0, 0x3 - str r0, [r1] - movs r2, 0x1 - movs r1, 0xB0 - lsls r1, 1 - add r1, r12 - ldr r0, _0802D7C8 - ldr r0, [r0] - str r0, [r1] - movs r1, 0xB2 - lsls r1, 1 - add r1, r12 - movs r0, 0x4 - str r0, [r1] - movs r1, 0xB4 - lsls r1, 1 - add r1, r12 - ldr r0, _0802D7CC - str r0, [r1] - movs r1, 0xB6 - lsls r1, 1 - add r1, r12 - movs r0, 0x6 - str r0, [r1] - movs r5, 0x3 - movs r0, 0xB8 - lsls r0, 1 - add r0, r12 - str r4, [r0] - movs r0, 0xBA - lsls r0, 1 - add r0, r12 - str r2, [r0] - movs r2, 0 - mov r0, r12 - ldr r4, [r0, 0x70] - movs r1, 0xAE - lsls r1, 1 - add r1, r12 -_0802D7A6: - ldr r0, [r1] - cmp r0, r4 - beq _0802D7BA - adds r1, 0x8 - adds r2, 0x1 - cmp r2, r5 - blt _0802D7A6 - ldr r1, [r3] - movs r0, 0x4 - str r0, [r1, 0x70] -_0802D7BA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802D7C0: .4byte gUnknown_203B2F8 -_0802D7C4: .4byte gUnknown_80D4920 -_0802D7C8: .4byte gUnknown_80D4928 -_0802D7CC: .4byte gUnknown_80E014C - thumb_func_end sub_802D73C - - .align 2,0 diff --git a/include/code_802C39C.h b/include/code_802C39C.h index 6b478760a..18b50f1cc 100644 --- a/include/code_802C39C.h +++ b/include/code_802C39C.h @@ -5,7 +5,7 @@ struct unkStruct_802C39C /* 0xC */ u8 *playerName; /* 0x10 */ s16 clientSpecies; /* 0x12 */ s16 targetSpecies; - /* 0x14 */ u8 unk14; + /* 0x14 */ u8 targetItem; /* 0x15 */ u8 fill15[0x2E - 0x15]; u8 unk2E; u8 fill2F[0x34 - 0x2F]; diff --git a/include/mailbox.h b/include/mailbox.h index ef91f7ee0..a79913dc9 100644 --- a/include/mailbox.h +++ b/include/mailbox.h @@ -4,6 +4,7 @@ #include "menu.h" #include "text.h" #include "constants/mailbox.h" +#include "code_802C39C.h" struct unkStruct_203B304 { @@ -12,10 +13,7 @@ struct unkStruct_203B304 u32 fallbackState; u8 mailboxIndex; u8 mailIndex; - u32 unkC; - u8 fill10[0x50 - 0x10]; - u8 unk50; - u8 fill51[0x64 - 0x51]; + struct unkStruct_802C39C unkC; u32 menuAction1; u32 menuAction2; struct MenuStruct unk6C; diff --git a/include/pelipper_board.h b/include/pelipper_board.h index 80ba03b87..72b5c0387 100644 --- a/include/pelipper_board.h +++ b/include/pelipper_board.h @@ -6,10 +6,7 @@ struct unkStruct_203B308 u32 state; u32 unk4; u8 jobIndex; - u32 unkC; - u8 fill10[0x50 - 0x10]; - u8 unk50; - u8 fill51[0x64 - 0x51]; + struct unkStruct_802C39C unkC; u32 menuAction1; u32 menuAction2; struct MenuStruct unk6C; diff --git a/include/wonder_mail.h b/include/wonder_mail.h index 255bfb4b2..f59e8235e 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -12,15 +12,14 @@ struct unkStruct_802F204 { - /* 0x0 */ u8 clientName[POKEMON_NAME_LENGTH]; // client name? + /* 0x0 */ u8 clientName[POKEMON_NAME_LENGTH]; /* 0xA */ u8 name2[POKEMON_NAME_LENGTH]; // target name? - /* 0x14 */ s16 unk14; // poke species (client??) + /* 0x14 */ s16 clientSpecies; /* 0x16 */ u8 unk16; /* 0x18 */ s32 moneyReward; /* 0x1C */ u8 itemRewards[MAX_ITEM_REWARDS]; /* 0x1F */ u8 quantity; /* 0x20 */ u8 friendAreaReward; - u8 fill21[0x24 - 0x21]; /* 0x24 */ u32 teamRankPtsReward; }; diff --git a/include/wonder_mail_2_1.h b/include/wonder_mail_2_1.h index d64cc4607..810e8d2ea 100644 --- a/include/wonder_mail_2_1.h +++ b/include/wonder_mail_2_1.h @@ -25,9 +25,7 @@ struct unkStruct_203B2F0 u32 state; u8 unk8[0xC - 0x8]; u8 unkC; - u8 fillD[0x10 - 0xD]; - u32 unk10; - u8 fill14[0x68 - 0x14]; + struct unkStruct_802C39C unk10; u32 menuAction; struct MenuStruct unk6C; struct MenuStruct unkBC; diff --git a/include/wonder_mail_3.h b/include/wonder_mail_3.h index a4761870d..8e1d7097e 100644 --- a/include/wonder_mail_3.h +++ b/include/wonder_mail_3.h @@ -44,12 +44,7 @@ struct unkStruct_203B2F8 struct unkSubStruct_203B2F8 *mail; u8 jobSlotIndex; u8 fill11[0x14 - 0x11]; - u32 unk14; - u8 fill18[0x58 - 0x18]; - u8 unk58; - u8 fill59[0x64 - 0x59]; - u8 *unk64; - u32 unk68; + struct unkStruct_802C39C unk14; u32 menuAction1; u32 menuAction2; u32 menuAction3; diff --git a/ld_script.txt b/ld_script.txt index e5e1c9772..7d485cd68 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -136,7 +136,6 @@ SECTIONS { src/wonder_mail_2_1.o(.text); asm/wonder_mail_802C860.o(.text); src/wonder_mail_3.o(.text); - asm/wonder_mail_3.o(.text); src/wonder_mail_802DF88.o(.text); src/mailbox.o(.text); src/pelipper_board.o(.text); diff --git a/src/mailbox.c b/src/mailbox.c index 4922eabc4..317e79a51 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -82,8 +82,8 @@ extern void sub_802BD14(u32, u32, u32); extern void sub_802BE94(u32); extern void CreateMailMenu(void); extern void CreateMailAcceptedStatusBox(u32); -extern void sub_803B35C(struct WonderMail *, u32 *); -extern void sub_802DE84(u32 *); +extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C *); +extern void sub_802DE84(struct unkStruct_802C39C *); extern void InitializeJobListMenu(u32); extern void sub_802B640(u32, u32, u32); extern void sub_802B7D0(u32); @@ -236,8 +236,8 @@ void sub_802E1AC(void) break; case MAIL_INFO: sub_803B35C(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex), &gUnknown_203B304->unkC); - gUnknown_203B304->unkC = 3; - gUnknown_203B304->unk50 = 0; + gUnknown_203B304->unkC.unk0[0] = 3; + gUnknown_203B304->unkC.unk44 = 0; sub_802DE84(&gUnknown_203B304->unkC); break; case JOB_LIST_MENU: @@ -265,7 +265,7 @@ void CreateMailboxMenu(void) s32 loopMax; loopMax = 0; - MemoryFill16(gUnknown_203B304->unkFC,0,0x10); + MemoryFill16(gUnknown_203B304->unkFC,0,sizeof(gUnknown_203B304->unkFC)); gUnknown_203B304->menuItems[0].text = gMailboxCheckMail; gUnknown_203B304->menuItems[0].menuAction = 2; if ((HasNoMailinMailbox())) { diff --git a/src/menu_input.c b/src/menu_input.c index 0cf69b78b..0798fc4a5 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -23,7 +23,7 @@ void MoveMenuCursorUp(u32 *); void MoveMenuCursorDown(u32 *); extern void sub_80073B8(u32); extern s32 sub_8008ED0(const u8 *); -extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32); +extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32); extern s32 sub_8013800(u32 *, s32); extern void sub_80073E0(u32); extern void sub_8013660(u32 *); @@ -316,7 +316,7 @@ void sub_8012EBC(struct MenuStruct *param_1) sub_8006518(textStack); x = sub_8008ED0(param_1->unk0); xxx_format_and_draw((((ptr_text2->unk14[2]) * 8 - x) /2) + 8, - 0,*(u8 **)param_1, param_1->index, 0); + 0,param_1->unk0, param_1->index, 0); } colorArray = param_1->menuTextColorArray; menuItemsPtr = param_1->menuItems; diff --git a/src/pelipper_board.c b/src/pelipper_board.c index eccc2fe35..339e39896 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -75,8 +75,8 @@ extern void sub_802C10C(u32, u32, u32); extern void sub_802C28C(u32); extern void DrawPelipperBoardJobMenu(void); extern void CreatePelipperAcceptedStatusBox(u32); -extern void sub_803B35C(struct WonderMail *, u32 *); -extern void sub_802DE84(u32 *); +extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C *); +extern void sub_802DE84(struct unkStruct_802C39C *); extern void InitializeJobListMenu(u32); extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32); @@ -223,8 +223,8 @@ void sub_802EA58(void) break; case PELIPPER_JOB_INFO: sub_803B35C(GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex), &gPelipperBoard->unkC); - gPelipperBoard->unkC = 3; - gPelipperBoard->unk50 = 0; + gPelipperBoard->unkC.unk0[0] = 3; + gPelipperBoard->unkC.unk44 = 0; sub_802DE84(&gPelipperBoard->unkC); break; case PELIPPER_JOB_LIST_MENU: @@ -243,7 +243,7 @@ void CreatePelipperBoardMenu(void) s32 loopMax; loopMax = 0; - MemoryFill16(gPelipperBoard->unkFC,0,0x10); + MemoryFill16(gPelipperBoard->unkFC,0,sizeof(gPelipperBoard->unkFC)); gPelipperBoard->menuItems[0].text = gPelipperBoard_BulletinBoard; gPelipperBoard->menuItems[0].menuAction = 2; if ((HasNoPelipperBoardJobs())) { diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index 45797e0f5..303243c45 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -1404,7 +1404,7 @@ void UpdateThankYouMailText(void) case 0x22: monName = GetMonSpecies(MONSTER_PELIPPER); strcpy(gUnknown_203B2C4->unk53C.clientName,monName); // 0x53C - gUnknown_203B2C4->unk53C.unk14 = MONSTER_PELIPPER; // 0x550 + gUnknown_203B2C4->unk53C.clientSpecies = MONSTER_PELIPPER; // 0x550 gUnknown_203B2C4->unk53C.unk16 = 2; // 0x552 gUnknown_203B2C4->unk53C.moneyReward = 0; // 0x554 mailIndex = GetMailIndex(6,gUnknown_203B2C4->unk430); diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index cfbbfde0c..3250431a2 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -176,7 +176,7 @@ void sub_802B3E0(void) case 1: monName = GetMonSpecies(MONSTER_PELIPPER); strcpy(gUnknown_203B2C8->unk114.clientName, monName); - gUnknown_203B2C8->unk114.unk14 = MONSTER_PELIPPER; + gUnknown_203B2C8->unk114.clientSpecies = MONSTER_PELIPPER; gUnknown_203B2C8->unk114.unk16 = 2; gUnknown_203B2C8->unk114.moneyReward = 0; sub_8097790(); diff --git a/src/wonder_mail_2_1.c b/src/wonder_mail_2_1.c index 3dbb6b2f8..8392a2325 100644 --- a/src/wonder_mail_2_1.c +++ b/src/wonder_mail_2_1.c @@ -102,7 +102,7 @@ extern void sub_8013C68(u32 *); extern void sub_80073E0(u32); extern struct WonderMail* GetJobSlotInfo(u8); extern s32 sub_8013800(void *, u32); -extern void sub_803B35C(void *, u32 *); +extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C *); extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32); extern void CreateRescueTitle(struct unkStruct_802C39C *); @@ -123,7 +123,7 @@ extern void sub_802CD38(void); extern void sub_802CDB8(void); extern void sub_802C928(void); extern void sub_802C9D8(void); -extern void sub_802DE84(u32 *); +extern void sub_802DE84(struct unkStruct_802C39C *); extern void sub_802CBAC(void); s32 CountAcceptedJobs(void); @@ -328,7 +328,7 @@ void DrawJobListMenu(void) mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + index]); local.unk0[0] = gUnknown_203B2E8->unk3C; local.y = sub_8013800(&gUnknown_203B2E8->unk8,index); - sub_803B35C(mail,local.unk0); + sub_803B35C(mail,&local); CreateRescueTitle(&local); } sub_80073E0(gUnknown_203B2E8->unk3C); @@ -463,7 +463,7 @@ void sub_802C9D8(void) break; case 4: sub_803B35C(GetJobSlotInfo(gUnknown_203B2F0->unkC), &gUnknown_203B2F0->unk10); - gUnknown_203B2F0->unk10 = 3; + gUnknown_203B2F0->unk10.unk0[0] = 3; sub_802DE84(&gUnknown_203B2F0->unk10); break; case 5: diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index 19f3ce1c2..aa06f0bc2 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -9,11 +9,10 @@ #include "menu.h" #include "wonder_mail.h" #include "wonder_mail_3.h" -#include "code_802C39C.h" #include "menu_input.h" +#include "code_80958E8.h" #include "wonder_mail_2_1.h" - const struct UnkTextStruct2 gUnknown_80DFDD4 = { 0x00, 0x00, 0x00, 0x00, @@ -135,8 +134,8 @@ extern u8 *sub_8096DD8(void); extern u8 sub_8096C08(u8 *); extern void DrawJobListMenu(void); extern struct WonderMail* GetJobSlotInfo(u8); -extern void sub_803B35C(void *, u32*); -extern void sub_802DE84(u32 *); +extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C*); +extern void sub_802DE84(struct unkStruct_802C39C *); extern void sub_802D73C(void); extern void sub_802C640(u32); extern void sub_802C4C8(u32, u32, u32); @@ -183,6 +182,8 @@ extern struct unkStruct_203B2F0 *gUnknown_203B2F0; extern u8 *gUnknown_80D4920[]; extern u8 *gUnknown_80D4928[]; +extern u8 *gUnknown_80D494C[]; +extern u8 *gUnknown_80D4970[]; void sub_802CBAC(void) { @@ -464,7 +465,7 @@ void sub_802CFD0(void) iVar1 = sub_803B344(gUnknown_203B2F4->unk1E * gUnknown_203B2F4->unk1C + r5); local.unk0[0] = gUnknown_203B2F4->unk34; local.y = sub_8013800(gUnknown_203B2F4, r5); - sub_803B35C(iVar1,local.unk0); + sub_803B35C(&iVar1->mail,&local); local.unk43 = 1; local.unk4C = iVar1->unk14; CreateRescueTitle(&local); @@ -682,15 +683,316 @@ void sub_802D2A8(void) break; case 0xf: sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->jobSlotIndex),&gUnknown_203B2F8->unk14); - gUnknown_203B2F8->unk14 = 3; + gUnknown_203B2F8->unk14.unk0[0] = 3; sub_802DE84(&gUnknown_203B2F8->unk14); break; case 0x10: - sub_803B35C(gUnknown_203B2F8->mail,&gUnknown_203B2F8->unk14); - gUnknown_203B2F8->unk14 = 3; - gUnknown_203B2F8->unk58 = 0; - gUnknown_203B2F8->unk64 = gUnknown_203B2F8->mail->unk18; + sub_803B35C(&gUnknown_203B2F8->mail->wonderMail,&gUnknown_203B2F8->unk14); + gUnknown_203B2F8->unk14.unk0[0] = 3; + gUnknown_203B2F8->unk14.unk44 = 0; + gUnknown_203B2F8->unk14.unk50[0] = gUnknown_203B2F8->mail->unk18; sub_802DE84(&gUnknown_203B2F8->unk14); break; } } + +void sub_802D5A4(void) { + s32 loopMax; + s32 index; + + loopMax = 0; + MemoryFill16(gUnknown_203B2F8->unk198, 0, sizeof(gUnknown_203B2F8->unk198)); + gUnknown_203B2F8->unk118[loopMax].text = *gUnknown_80D494C; + gUnknown_203B2F8->unk118[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B2F8->unk118[loopMax].text = *gUnknown_80D4970; + gUnknown_203B2F8->unk118[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B2F8->unk118[loopMax].text = NULL; + gUnknown_203B2F8->unk118[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if (gUnknown_203B2F8->unk198[index] == 0) { + if(gUnknown_203B2F8->unk118[index].menuAction == gUnknown_203B2F8->menuAction1) + return; + } + } + gUnknown_203B2F8->menuAction1 = 2; +} + +void sub_802D63C(void) { + s32 loopMax = 0; + gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4920; + gUnknown_203B2F8->unk158[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4928; + gUnknown_203B2F8->unk158[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = NULL; + gUnknown_203B2F8->unk158[loopMax].menuAction = 1; +} + +void sub_802D690(void) { + s32 loopMax; + s32 index; + + loopMax = 0; + gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4920; + gUnknown_203B2F8->unk158[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4928; + gUnknown_203B2F8->unk158[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = gUnknown_80E014C; + gUnknown_203B2F8->unk158[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = gUnknown_80E0158; + gUnknown_203B2F8->unk158[loopMax].menuAction = 7; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = NULL; + gUnknown_203B2F8->unk158[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2F8->unk158[index].menuAction == gUnknown_203B2F8->menuAction3) + return; + } + gUnknown_203B2F8->menuAction3 = 4; +} + +void sub_802D73C(void) { + s32 loopMax; + s32 index; + + loopMax = 0; + gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4920; + gUnknown_203B2F8->unk158[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4928; + gUnknown_203B2F8->unk158[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = gUnknown_80E014C; + gUnknown_203B2F8->unk158[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B2F8->unk158[loopMax].text = NULL; + gUnknown_203B2F8->unk158[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2F8->unk158[index].menuAction == gUnknown_203B2F8->menuAction2) + return; + } + gUnknown_203B2F8->menuAction2 = 4; +} + +extern s32 sub_80144A4(s32 *); + + +void sub_802D7D0(void) +{ + s32 menuAction; + + if (sub_80144A4(&menuAction) == 0) { + if (menuAction != 1) { + gUnknown_203B2F8->menuAction2 = menuAction; + } + switch(menuAction) { + // Yes + case 3: + sub_802D1A0(WONDER_MAIL_EXIT); + break; + // New Mail + case 6: + gUnknown_203B2F8->fallbackState = 1; + sub_802D1A0(0x10); + break; + // No + case 4: + case 2: + default: + sub_802D1A0(INITIAL_WONDER_MAIL_CHECK); + break; + } + } +} + +void sub_802D82C(void) +{ + s32 menuAction; + + if (sub_80144A4(&menuAction) == 0) { + if (menuAction != 1) { + gUnknown_203B2F8->menuAction3 = menuAction; + } + switch(menuAction) { + // Yes + case 3: + ResetJobSlot(gUnknown_203B2F8->jobSlotIndex); + sub_8096C80(); + sub_802D1A0(RECEIVE_WONDER_MAIL); + break; + // New Mail + case 6: + gUnknown_203B2F8->fallbackState = 9; + sub_802D1A0(0x10); + break; + // Old Mail + case 7: + gUnknown_203B2F8->fallbackState = 9; + sub_802D1A0(0xf); + break; + // No + default: + case 1: + case 2: + case 4: + sub_802D1A0(1); + break; + } + } +} + +void sub_802D8CC(void) +{ + switch(sub_802C598(1)) { + case 0: + case 1: + break; + case 3: + gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex(); + sub_802D1A0(0xd); + break; + case 4: + gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex(); + gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1; + sub_802D1A0(0xf); + break; + case 2: + sub_802C688(); + sub_802D1A0(1); + break; + } +} + +void sub_802D940(void) +{ + struct WonderMail *mail; + s32 menuAction; + + menuAction = 0; + sub_802C598(0); + if ((sub_8012FD8(&gUnknown_203B2F8->unk78) == 0) && (sub_8013114(&gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) { + gUnknown_203B2F8->menuAction1 = menuAction; + } + + switch(menuAction) + { + // Delete + case 2: + if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > 5) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id))) + { + sub_802D1A0(7); + } + else { + sub_802D1A0(0xE); + } + break; + // Info + case 5: + gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1; + sub_802D1A0(0xf); + break; + case 1: + sub_802D1A0(DRAW_JOB_LIST_1); + break; + } +} + +void sub_802D9F0(void) +{ + s32 menuAction; + + menuAction = 0; + sub_802C598(0); + sub_8012FD8(&gUnknown_203B2F8->unk78); + if (sub_8012FD8(&gUnknown_203B2F8->unkC8) == 0) { + sub_8013114(&gUnknown_203B2F8->unkC8,&menuAction); + } + + switch(menuAction) + { + // No + case 1: + case 4: + sub_802D1A0(DRAW_JOB_LIST_1); + break; + // Yes + case 3: + sub_802C688(); + ResetJobSlot(gUnknown_203B2F8->jobSlotIndex); + sub_8096C80(); + sub_802D1A0(RECEIVE_WONDER_MAIL); + break; + } +} + +void sub_802DA60(void) +{ + switch(sub_802DEE0()) + { + case 2: + case 3: + sub_802DF24(); + sub_802D1A0(gUnknown_203B2F8->fallbackState); + break; + case 0: + case 1: + break; + } +} + +void AdvancetoFallbackWonderMailRescueState(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802D1A0(gUnknown_203B2F8->fallbackState); + } +} + +bool8 sub_802DAA8(void) +{ + struct WonderMail *mail; + + mail = GetJobSlotInfo(gUnknown_203B2F8->jobSlotIndex); + if (!gUnknown_203B2F8->unk9) { + return TRUE; + } + else { + if ( (mail->mailType != WONDER_MAIL_TYPE_THANK_YOU) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)) return FALSE; + return TRUE; + } +} + +bool8 sub_802DADC(void) +{ + u8 mailType; + struct WonderMail *mail; + s32 counter; + + if (!gUnknown_203B2F8->unk9) { +_0802DAE8: + return TRUE; + } + else { + for( mail = &gUnknown_203B490->jobSlots[0], counter = 0; counter < MAX_ACCEPTED_JOBS; mail++, counter++) + { + mailType = mail->mailType; + if (((mailType == 0) || (mailType == WONDER_MAIL_TYPE_THANK_YOU)) || + ((WONDER_MAIL_TYPE_THANK_YOU < mailType && (gUnknown_203B2F8->dungeonID != mail->dungeon.id)))) goto _0802DAE8; + } + return FALSE; + } +} + diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 8a315afb9..2e1ead4a6 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -470,7 +470,7 @@ u32 sub_802F204(struct unkStruct_802F204 *r0, bool8 displayClientSprite) strcpy(gUnknown_202E5D8, preload->unk10->clientName); PrintPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct()); - gUnknown_203B310->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B310->unk10->unk14); + gUnknown_203B310->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B310->unk10->clientSpecies); gUnknown_203B310->faceData = NULL; gUnknown_203B310->unk20 = 0; diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 3bbdac56c..8a975dda3 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -294,9 +294,9 @@ void sub_803092C(void) local.dungeon = &mail->dungeon; local.playerName = mail->playerName; - local.clientSpecies = (mail->clientSpecies); - local.targetSpecies = (mail->clientSpecies); - local.unk14 = 0; + local.clientSpecies = mail->clientSpecies; + local.targetSpecies = mail->clientSpecies; + local.targetItem = ITEM_NOTHING; local.unk2E = 5; switch(mail->mailType) diff --git a/src/wonder_mail_5.c b/src/wonder_mail_5.c index 016db8b64..7c6183cc6 100644 --- a/src/wonder_mail_5.c +++ b/src/wonder_mail_5.c @@ -127,7 +127,7 @@ void sub_8030E48(void) stack.playerName = mail->playerName; stack.clientSpecies = mail->clientSpecies; stack.targetSpecies = mail->clientSpecies; - stack.unk14 = 0; + stack.targetItem = ITEM_NOTHING; if (mail->unk20.id == ITEM_NOTHING) { stack.unk2E = 5; } diff --git a/src/wonder_mail_802DF88.c b/src/wonder_mail_802DF88.c index 2a730cefb..7074764fe 100644 --- a/src/wonder_mail_802DF88.c +++ b/src/wonder_mail_802DF88.c @@ -1,16 +1,9 @@ #include "global.h" -#include "constants/wonder_mail.h" #include "exclusive_pokemon.h" #include "input.h" -#include "item.h" #include "memory.h" -#include "menu.h" -#include "text.h" -#include "wonder_mail.h" -#include "wonder_mail_3.h" -#include "code_80958E8.h" -#include "menu_input.h" #include "code_802C39C.h" +#include "wonder_mail.h" struct unkStruct_203B2FC { @@ -141,215 +134,6 @@ void sub_802D1A0(u32); u32 sub_802DEE0(void); void sub_802DF24(void); -void sub_802D7D0(void) -{ - s32 menuAction; - - if (sub_80144A4(&menuAction) == 0) { - if (menuAction != 1) { - gUnknown_203B2F8->menuAction2 = menuAction; - } - switch(menuAction) { - // Yes - case 3: - sub_802D1A0(WONDER_MAIL_EXIT); - break; - // New Mail - case 6: - gUnknown_203B2F8->fallbackState = 1; - sub_802D1A0(0x10); - break; - // No - case 4: - case 2: - default: - sub_802D1A0(INITIAL_WONDER_MAIL_CHECK); - break; - } - } -} - -void sub_802D82C(void) -{ - s32 menuAction; - - if (sub_80144A4(&menuAction) == 0) { - if (menuAction != 1) { - gUnknown_203B2F8->menuAction3 = menuAction; - } - switch(menuAction) { - // Yes - case 3: - ResetJobSlot(gUnknown_203B2F8->jobSlotIndex); - sub_8096C80(); - sub_802D1A0(RECEIVE_WONDER_MAIL); - break; - // New Mail - case 6: - gUnknown_203B2F8->fallbackState = 9; - sub_802D1A0(0x10); - break; - // Old Mail - case 7: - gUnknown_203B2F8->fallbackState = 9; - sub_802D1A0(0xf); - break; - // No - default: - case 1: - case 2: - case 4: - sub_802D1A0(1); - break; - } - } -} - -void sub_802D8CC(void) -{ - switch(sub_802C598(1)) { - case 0: - case 1: - break; - case 3: - gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex(); - sub_802D1A0(0xd); - break; - case 4: - gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex(); - gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1; - sub_802D1A0(0xf); - break; - case 2: - sub_802C688(); - sub_802D1A0(1); - break; - } -} - -void sub_802D940(void) -{ - struct WonderMail *mail; - s32 menuAction; - - menuAction = 0; - sub_802C598(0); - if ((sub_8012FD8(&gUnknown_203B2F8->unk78) == 0) && (sub_8013114(&gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) { - gUnknown_203B2F8->menuAction1 = menuAction; - } - - switch(menuAction) - { - // Delete - case 2: - if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > 5) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id))) - { - sub_802D1A0(7); - } - else { - sub_802D1A0(0xE); - } - break; - // Info - case 5: - gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1; - sub_802D1A0(0xf); - break; - case 1: - sub_802D1A0(DRAW_JOB_LIST_1); - break; - } -} - -void sub_802D9F0(void) -{ - s32 menuAction; - - menuAction = 0; - sub_802C598(0); - sub_8012FD8(&gUnknown_203B2F8->unk78); - if (sub_8012FD8(&gUnknown_203B2F8->unkC8) == 0) { - sub_8013114(&gUnknown_203B2F8->unkC8,&menuAction); - } - - switch(menuAction) - { - // No - case 1: - case 4: - sub_802D1A0(DRAW_JOB_LIST_1); - break; - // Yes - case 3: - sub_802C688(); - ResetJobSlot(gUnknown_203B2F8->jobSlotIndex); - sub_8096C80(); - sub_802D1A0(RECEIVE_WONDER_MAIL); - break; - } -} - -void sub_802DA60(void) -{ - switch(sub_802DEE0()) - { - case 2: - case 3: - sub_802DF24(); - sub_802D1A0(gUnknown_203B2F8->fallbackState); - break; - case 0: - case 1: - break; - } -} - -void AdvancetoFallbackWonderMailRescueState(void) -{ - s32 temp; - if(sub_80144A4(&temp) == 0) - { - sub_802D1A0(gUnknown_203B2F8->fallbackState); - } -} - -bool8 sub_802DAA8(void) -{ - struct WonderMail *mail; - - mail = GetJobSlotInfo(gUnknown_203B2F8->jobSlotIndex); - if (!gUnknown_203B2F8->unk9) { - return TRUE; - } - else { - if ( (mail->mailType != WONDER_MAIL_TYPE_THANK_YOU) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)) return FALSE; - return TRUE; - } -} - -bool8 sub_802DADC(void) -{ - u8 mailType; - struct WonderMail *mail; - s32 counter; - - if (!gUnknown_203B2F8->unk9) { -_0802DAE8: - return TRUE; - } - else { - for( mail = &gUnknown_203B490->jobSlots[0], counter = 0; counter < 8; mail++, counter++) - { - mailType = mail->mailType; - if (((mailType == 0) || (mailType == WONDER_MAIL_TYPE_THANK_YOU)) || - ((WONDER_MAIL_TYPE_THANK_YOU < mailType && (gUnknown_203B2F8->dungeonID != mail->dungeon.id)))) goto _0802DAE8; - } - return FALSE; - } -} - -// TODO: merge above with wonder_mail_3.c - bool8 sub_802DB28(u8 jobSlotIndex, u8 dungeon) { char local_18 [8]; From 5cf2c9effc728d80ac9999c0579d5de98d67c828 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 21 May 2023 17:09:53 -0700 Subject: [PATCH 07/21] more menu work and more documentation --- asm/code_801EE10.s | 170 ------------------------------------ asm/wonder_mail_802C860.s | 147 ------------------------------- include/constants/mailbox.h | 14 +++ include/subStruct_203B240.h | 5 +- include/wonder_mail_3.h | 1 - ld_script.txt | 1 - src/code_801B3C0.c | 7 +- src/code_801C620.c | 3 +- src/code_8023144.c | 59 ++++++++++++- src/code_80958E8_1.c | 63 ++++++------- src/code_80958E8_mid.c | 6 +- src/gulpin_shop_1.c | 3 +- src/mailbox_8095F8C.c | 6 +- src/pelipper_board.c | 6 +- src/pokemon_3.c | 4 +- src/pokemon_mid.c | 2 +- src/post_office_guide.c | 2 +- src/wonder_mail_2_mid.c | 2 +- src/wonder_mail_3.c | 62 ++++++++++++- 19 files changed, 183 insertions(+), 380 deletions(-) delete mode 100644 asm/wonder_mail_802C860.s diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s index 4bbae13c2..b274b8295 100644 --- a/asm/code_801EE10.s +++ b/asm/code_801EE10.s @@ -7753,174 +7753,4 @@ _08022D22: bx r0 thumb_func_end sub_8022A10 - thumb_func_start sub_8022D2C -sub_8022D2C: - push {r4-r7,lr} - movs r6, 0 - ldr r4, _08022D78 - ldr r0, [r4] - movs r1, 0x9C - lsls r1, 1 - adds r0, r1 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r2, [r4] - ldr r0, [r2, 0x48] - cmp r0, 0 - beq _08022D80 - adds r1, r2, 0 - adds r1, 0xF8 - ldr r0, _08022D7C - str r0, [r1] - adds r1, 0x4 - movs r0, 0x5 - str r0, [r1] - adds r0, r2, 0 - adds r0, 0x52 - ldrb r0, [r0] - bl IsGummiItem - lsls r0, 24 - cmp r0, 0 - bne _08022D74 - ldr r0, [r4] - movs r2, 0x9C - lsls r2, 1 - adds r0, r2 - movs r1, 0x1 - strh r1, [r0] -_08022D74: - movs r6, 0x1 - b _08022DBE - .align 2, 0 -_08022D78: .4byte gUnknown_203B294 -_08022D7C: .4byte gUnknown_80DC8F0 -_08022D80: - adds r0, r2, 0 - adds r0, 0x52 - ldrb r0, [r0] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _08022DA4 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xF8 - ldr r0, _08022E38 - str r0, [r2] - adds r1, 0xFC - movs r0, 0x6 - str r0, [r1] - movs r6, 0x1 -_08022DA4: - ldr r2, [r4] - lsls r3, r6, 3 - adds r0, r2, 0 - adds r0, 0xF8 - adds r0, r3 - ldr r1, _08022E3C - ldr r1, [r1] - str r1, [r0] - adds r2, 0xFC - adds r2, r3 - movs r0, 0x4 - str r0, [r2] - adds r6, 0x1 -_08022DBE: - ldr r4, _08022E40 - ldr r0, [r4] - mov r12, r0 - lsls r1, r6, 3 - mov r2, r12 - adds r2, 0xF8 - adds r3, r2, r1 - ldr r0, _08022E44 - ldr r0, [r0] - str r0, [r3] - mov r3, r12 - adds r3, 0xFC - adds r1, r3, r1 - movs r0, 0x7 - str r0, [r1] - adds r6, 0x1 - lsls r1, r6, 3 - adds r2, r1 - movs r0, 0 - str r0, [r2] - adds r1, r3, r1 - movs r0, 0x1 - str r0, [r1] - movs r5, 0 - adds r7, r4, 0 - cmp r5, r6 - bge _08022E16 - mov r4, r12 - adds r4, 0xF4 - movs r2, 0x9C - lsls r2, 1 - add r2, r12 -_08022DFE: - ldrh r0, [r2] - cmp r0, 0 - bne _08022E0C - ldr r1, [r3] - ldr r0, [r4] - cmp r1, r0 - beq _08022E70 -_08022E0C: - adds r2, 0x2 - adds r3, 0x8 - adds r5, 0x1 - cmp r5, r6 - blt _08022DFE -_08022E16: - movs r5, 0 - cmp r5, r6 - bge _08022E70 - ldr r1, [r7] - movs r2, 0x9C - lsls r2, 1 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _08022E48 - adds r0, r1, 0 - adds r0, 0xF4 - adds r1, 0xFC - ldr r1, [r1] - str r1, [r0] - b _08022E70 - .align 2, 0 -_08022E38: .4byte gUnknown_80DC8F8 -_08022E3C: .4byte gUnknown_80D4940 -_08022E40: .4byte gUnknown_203B294 -_08022E44: .4byte gUnknown_80D4970 -_08022E48: - adds r5, 0x1 - cmp r5, r6 - bge _08022E70 - ldr r3, [r7] - lsls r0, r5, 1 - movs r2, 0x9C - lsls r2, 1 - adds r1, r3, r2 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08022E48 - adds r2, r3, 0 - adds r2, 0xF4 - lsls r1, r5, 3 - adds r0, r3, 0 - adds r0, 0xFC - adds r0, r1 - ldr r0, [r0] - str r0, [r2] -_08022E70: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8022D2C - .align 2,0 diff --git a/asm/wonder_mail_802C860.s b/asm/wonder_mail_802C860.s deleted file mode 100644 index c571c3491..000000000 --- a/asm/wonder_mail_802C860.s +++ /dev/null @@ -1,147 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_802CAA4 -sub_802CAA4: - push {r4-r7,lr} - movs r7, 0 - ldr r5, _0802CAC8 - ldr r0, [r5] - ldrb r0, [r0, 0xC] - bl GetJobSlotInfo - adds r4, r0, 0 - ldr r2, [r5] - ldr r0, [r2] - cmp r0, 0 - bne _0802CB26 - ldrb r0, [r4] - cmp r0, 0x5 - beq _0802CACC - cmp r0, 0x6 - beq _0802CB10 - b _0802CB26 - .align 2, 0 -_0802CAC8: .4byte gUnknown_203B2F0 -_0802CACC: - movs r0, 0x86 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, _0802CAFC - str r0, [r1] - adds r0, r4, 0 - bl sub_809693C - lsls r0, 24 - cmp r0, 0 - bne _0802CAEE - ldrb r0, [r4, 0x4] - bl sub_80A2824 - lsls r0, 24 - cmp r0, 0 - bne _0802CB00 -_0802CAEE: - ldr r0, [r5] - movs r1, 0x88 - lsls r1, 1 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - b _0802CB0A - .align 2, 0 -_0802CAFC: .4byte gUnknown_80DFD70 -_0802CB00: - ldr r0, [r5] - movs r1, 0x88 - lsls r1, 1 - adds r0, r1 - movs r1, 0x2 -_0802CB0A: - str r1, [r0] - adds r7, 0x1 - b _0802CB26 -_0802CB10: - movs r0, 0x86 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, _0802CB9C - str r0, [r1] - movs r0, 0x88 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0x3 - str r0, [r1] - movs r7, 0x1 -_0802CB26: - ldr r4, _0802CBA0 - ldr r6, [r4] - lsls r1, r7, 3 - movs r0, 0x86 - lsls r0, 1 - adds r3, r6, r0 - adds r2, r3, r1 - ldr r0, _0802CBA4 - ldr r0, [r0] - str r0, [r2] - movs r0, 0x88 - lsls r0, 1 - adds r5, r6, r0 - adds r1, r5, r1 - movs r0, 0x4 - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r2, r3, r1 - ldr r0, _0802CBA8 - ldr r0, [r0] - str r0, [r2] - adds r1, r5, r1 - movs r0, 0x7 - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r3, r1 - movs r0, 0 - str r0, [r3] - adds r1, r5, r1 - movs r0, 0x1 - str r0, [r1] - movs r3, 0 - mov r12, r4 - cmp r3, r7 - bge _0802CB8C - adds r4, r6, 0 - adds r1, r5, 0 - movs r5, 0x1 - negs r5, r5 -_0802CB78: - ldr r2, [r1] - cmp r2, r5 - beq _0802CB84 - ldr r0, [r4, 0x68] - cmp r2, r0 - beq _0802CB94 -_0802CB84: - adds r1, 0x8 - adds r3, 0x1 - cmp r3, r7 - blt _0802CB78 -_0802CB8C: - mov r0, r12 - ldr r1, [r0] - movs r0, 0x7 - str r0, [r1, 0x68] -_0802CB94: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802CB9C: .4byte gUnknown_80DFD7C -_0802CBA0: .4byte gUnknown_203B2F0 -_0802CBA4: .4byte gUnknown_80D494C -_0802CBA8: .4byte gUnknown_80D4970 - thumb_func_end sub_802CAA4 - - .align 2,0 diff --git a/include/constants/mailbox.h b/include/constants/mailbox.h index 8f961f501..8d57c1f6e 100644 --- a/include/constants/mailbox.h +++ b/include/constants/mailbox.h @@ -4,4 +4,18 @@ #define MAX_ACCEPTED_JOBS 8 #define NUM_MAILBOX_SLOTS 4 +enum JOB_LIST_MAIL_TYPES +{ + MAIL_TYPE_NONE = 0, + MAIL_TYPE_UNK1, + MAIL_TYPE_UNK2, + MAIL_TYPE_UNK3, + MAIL_TYPE_UNK4, + MAIL_TYPE_SUSPENDED_JOB = 5, + MAIL_TYPE_TAKEN_JOB, + MAIL_TYPE_UNK7, + MAIL_TYPE_UNK8, + MAIL_TYPE_UNK9, +}; + #endif // GUARD_CONSTANTS_MAILBOX_H diff --git a/include/subStruct_203B240.h b/include/subStruct_203B240.h index 040eb66e8..882102e1f 100644 --- a/include/subStruct_203B240.h +++ b/include/subStruct_203B240.h @@ -3,8 +3,9 @@ struct subStruct_203B240 { - char * unk0; + char * pokeName; char * unk4; }; -#endif \ No newline at end of file + +#endif diff --git a/include/wonder_mail_3.h b/include/wonder_mail_3.h index 8e1d7097e..47689a8dd 100644 --- a/include/wonder_mail_3.h +++ b/include/wonder_mail_3.h @@ -43,7 +43,6 @@ struct unkStruct_203B2F8 u8 unkB; struct unkSubStruct_203B2F8 *mail; u8 jobSlotIndex; - u8 fill11[0x14 - 0x11]; struct unkStruct_802C39C unk14; u32 menuAction1; u32 menuAction2; diff --git a/ld_script.txt b/ld_script.txt index 7d485cd68..4c667feb0 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -134,7 +134,6 @@ SECTIONS { src/pokemon_news.o(.text); src/wonder_mail_2_mid.o(.text); src/wonder_mail_2_1.o(.text); - asm/wonder_mail_802C860.o(.text); src/wonder_mail_3.o(.text); src/wonder_mail_802DF88.o(.text); src/mailbox.o(.text); diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c index f36649b6c..adbe68178 100644 --- a/src/code_801B3C0.c +++ b/src/code_801B3C0.c @@ -8,12 +8,7 @@ #include "pokemon.h" #include "team_inventory.h" #include "menu_input.h" - -struct subStruct_203B240 -{ - char * pokeName; - char * unk4; -}; +#include "subStruct_203B240.h" // based off of 203B240.. struct unkStruct_203B230 diff --git a/src/code_801C620.c b/src/code_801C620.c index 5a6c79adb..0af5935df 100644 --- a/src/code_801C620.c +++ b/src/code_801C620.c @@ -121,7 +121,6 @@ struct unk_203B250 u8 unk7; u8 unk8; u8 unk9; - u8 fillA[0xC - 0xA]; struct PokemonStruct *unkC; u32 state; u32 menuAction; @@ -914,7 +913,7 @@ void sub_801C6E4(void) sub_8008C54(gUnknown_203B240->unk24); sub_80073B8(gUnknown_203B240->unk24); preload = gUnknown_203B240->unk10[gUnknown_203B240->unk8]; - strcpy(gAvailablePokemonNames,preload->unk0); + strcpy(gAvailablePokemonNames,preload->pokeName); xxx_format_and_draw(16,0,gUnknown_80DBE30,gUnknown_203B240->unk24,0); // {ARG_POKEMON_0} xxx_format_and_draw(4,16,gUnknown_203B240->unk10[gUnknown_203B240->unk8]->unk4, gUnknown_203B240->unk24,0); sub_80073E0(gUnknown_203B240->unk24); diff --git a/src/code_8023144.c b/src/code_8023144.c index 8ea1fa449..709606e06 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -71,20 +71,25 @@ struct unkStruct_203B294 struct MenuStruct unk54; struct MenuStruct unkA4; u32 menuAction; - u32 unkF8; - u16 unkFC; + struct MenuItem unkF8[0x8]; + u16 unk138[0x8]; }; struct unkStruct_203B294 *gUnknown_203B294; extern u8 gUnknown_80DC5EC[]; extern u8 gUnknown_202DE58[]; +extern u8 gUnknown_80DC8F0[]; +extern u8 gUnknown_80DC8F8[]; +extern u8 *gUnknown_80D4940[]; +extern u8 *gUnknown_80D4970[]; extern void sub_8022924(s32); extern s32 sub_80144A4(s32 *); extern u32 sub_801B00C(void); extern void sub_801B048(void); extern u32 sub_801B410(void); extern void sub_801B450(void); + void GetGummiItemStatBoost(struct PokemonStruct* pokemon, u8 id, bool8 checkBoostFlags, struct Gummi* gummi); extern u32 sub_801A6E8(u32); @@ -93,6 +98,56 @@ extern void sub_801A928(void); s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ); extern u32 sub_801A8AC(void); +void sub_8022D2C(void) { + s32 index; + s32 loopMax = 0; + MemoryFill16(gUnknown_203B294->unk138, 0, sizeof(gUnknown_203B294->unk138)); + if(gUnknown_203B294->pokeStruct) + { + gUnknown_203B294->unkF8[loopMax].text = gUnknown_80DC8F0; + gUnknown_203B294->unkF8[loopMax].menuAction = 5; + if(!IsGummiItem(gUnknown_203B294->item.id)) + { + gUnknown_203B294->unk138[loopMax] = 1; + } + loopMax += 1; + } + else { + if(GetItemCategory(gUnknown_203B294->item.id) == 5) + { + gUnknown_203B294->unkF8[loopMax].text = gUnknown_80DC8F8; + gUnknown_203B294->unkF8[loopMax].menuAction = 6; + loopMax += 1; + } + gUnknown_203B294->unkF8[loopMax].text = *gUnknown_80D4940; + gUnknown_203B294->unkF8[loopMax].menuAction = 4; + loopMax += 1; + } + gUnknown_203B294->unkF8[loopMax].text = *gUnknown_80D4970; + gUnknown_203B294->unkF8[loopMax].menuAction = 7; + loopMax += 1; + gUnknown_203B294->unkF8[loopMax].text = NULL; + gUnknown_203B294->unkF8[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B294->unk138[index] == 0) + { + if(gUnknown_203B294->unkF8[index].menuAction == gUnknown_203B294->menuAction) + return; + } + } + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B294->unk138[index] == 0) + { + gUnknown_203B294->menuAction = gUnknown_203B294->unkF8[index].menuAction; + break; + } + } +} + void sub_8022E78(void) { switch(sub_801A6E8(1)) diff --git a/src/code_80958E8_1.c b/src/code_80958E8_1.c index c75b0a26b..e4a14c907 100644 --- a/src/code_80958E8_1.c +++ b/src/code_80958E8_1.c @@ -1,3 +1,4 @@ +#include "constants/mailbox.h" #include "global.h" #include "constants/dungeon.h" #include "constants/monster.h" @@ -35,11 +36,11 @@ void SortPelipperJobs(void) struct WonderMail mail; - for(index1 = 0; index1 < 7; index1++) + for(index1 = 0; index1 < MAX_ACCEPTED_JOBS - 1; index1++) { - for(index2 = index1 + 1; index2 < 8; index2++) + for(index2 = index1 + 1; index2 < MAX_ACCEPTED_JOBS; index2++) { - if(gUnknown_203B490->pelipperBoardJobs[index2].mailType != WONDER_MAIL_TYPE_NONE) + if(gUnknown_203B490->pelipperBoardJobs[index2].mailType != MAIL_TYPE_NONE) { if((gUnknown_203B490->pelipperBoardJobs[index1].dungeon.id > gUnknown_203B490->pelipperBoardJobs[index2].dungeon.id) || ((gUnknown_203B490->pelipperBoardJobs[index1].dungeon.id == gUnknown_203B490->pelipperBoardJobs[index2].dungeon.id) && (gUnknown_203B490->pelipperBoardJobs[index1].dungeon.floor > gUnknown_203B490->pelipperBoardJobs[index2].dungeon.floor))) @@ -60,15 +61,15 @@ void GeneratePelipperJobs(void) s32 index; range = RandRange(4,8); - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { - gUnknown_203B490->pelipperBoardJobs[index].mailType = WONDER_MAIL_TYPE_NONE; + gUnknown_203B490->pelipperBoardJobs[index].mailType = MAIL_TYPE_NONE; } index = 0; if (sub_8097318(0xe) != 0) { mail = GetPelipperBoardSlotInfo(0); - mail->mailType = 2; + mail->mailType = MAIL_TYPE_UNK2; mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6; mail->unk2 = 1; mail->dungeon.id = DUNGEON_UPROAR_FOREST; @@ -86,7 +87,7 @@ void GeneratePelipperJobs(void) if (sub_8097318(0xf) != 0) { mail = GetPelipperBoardSlotInfo(index); - mail->mailType = 3; + mail->mailType = MAIL_TYPE_UNK3; mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6; mail->unk2 = 2; mail->dungeon.id = DUNGEON_HOWLING_FOREST; @@ -103,7 +104,7 @@ void GeneratePelipperJobs(void) if (sub_8097318(0x1c) != 0) { mail = GetPelipperBoardSlotInfo(index); - mail->mailType = 4; + mail->mailType = MAIL_TYPE_UNK4; mail->missionType = WONDER_MAIL_MISSION_TYPE_UNK6; mail->unk2 = 3; mail->dungeon.id = DUNGEON_WISH_CAVE; @@ -130,9 +131,9 @@ bool8 IsMailinJobSlot(struct WonderMail *mail) struct WonderMail *jobSlot; s32 index; - for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < 8; jobSlot++, index++) + for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < MAX_ACCEPTED_JOBS; jobSlot++, index++) { - if(jobSlot->mailType != WONDER_MAIL_TYPE_NONE) + if(jobSlot->mailType != MAIL_TYPE_NONE) if(mail->missionType == jobSlot->missionType) if(mail->unk2 == jobSlot->unk2) if(mail->dungeon.id == jobSlot->dungeon.id) @@ -166,9 +167,9 @@ bool8 sub_809693C(struct WonderMail *mail) { if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) escortMission = TRUE; - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { - if ((gUnknown_203B490->jobSlots[index].mailType == 6) && + if ((gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_TAKEN_JOB) && (sub_8095E38(&gUnknown_203B490->jobSlots[index],dungeonIndex,floor,escortMission) != 0)) { return TRUE; @@ -184,7 +185,7 @@ s32 GetNumAcceptedJobs(void) s32 count; count = 0; - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { if (!IsJobSlotEmpty(index)) { count++; @@ -200,11 +201,11 @@ s32 CountJobsinDungeon(u8 dungeon) s32 count; count = 0; - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { mail = GetJobSlotInfo(index); if ((mail->dungeon.id == dungeon) && - (((mail->mailType == 6 || (mail->mailType == 8)) || (mail->mailType == 9)))) { + (((mail->mailType == MAIL_TYPE_TAKEN_JOB || (mail->mailType == MAIL_TYPE_UNK8)) || (mail->mailType == MAIL_TYPE_UNK9)))) { count++; } } @@ -218,11 +219,11 @@ bool8 sub_8096A08(u8 dungeon, s32 param_2) u32 local_14; s32 temp; - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { mail = GetJobSlotInfo(index); if(mail->dungeon.id == dungeon) - if(mail->mailType == 6) + if(mail->mailType == MAIL_TYPE_TAKEN_JOB) if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) { temp = 0xffffff00; @@ -246,9 +247,9 @@ bool8 AcceptJob(struct WonderMail *mail) { s32 index; - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { - if(gUnknown_203B490->jobSlots[index].mailType == WONDER_MAIL_TYPE_NONE) + if(gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_NONE) { gUnknown_203B490->jobSlots[index] = *mail; return FALSE; @@ -264,7 +265,7 @@ struct WonderMail *GetJobSlotInfo(u8 index) bool8 IsJobSlotEmpty(u8 index) { - if(gUnknown_203B490->jobSlots[index].mailType == WONDER_MAIL_TYPE_NONE) + if(gUnknown_203B490->jobSlots[index].mailType == MAIL_TYPE_NONE) return TRUE; else return FALSE; @@ -283,7 +284,7 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon) if (jobSlot->dungeon.id == dungeon) { switch(jobSlot->missionType) { case WONDER_MAIL_MISSION_TYPE_FIND_ITEM: - if (jobSlot->mailType == 6) { + if (jobSlot->mailType == MAIL_TYPE_TAKEN_JOB) { for(index = 0; index < INVENTORY_SIZE; index++) { item = &gTeamInventory_203B460->teamItems[index]; @@ -295,13 +296,13 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon) break; case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT: case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM: - if (jobSlot->mailType == 9) { + if (jobSlot->mailType == MAIL_TYPE_UNK9) { param_1->unk0 = TRUE; } break; case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET: case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT: - if (jobSlot->mailType == 9) { + if (jobSlot->mailType == MAIL_TYPE_UNK9) { param_1->unk0 = TRUE; param_1->targetSpecies = jobSlot->targetSpecies; } @@ -316,10 +317,10 @@ s16 sub_8096B98(u8 dungeon) struct WonderMail *mail; s32 index; - for(index = 0; index < 8; index++) + for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { mail = GetJobSlotInfo(index); - if(mail->mailType == 6) + if(mail->mailType == MAIL_TYPE_TAKEN_JOB) if(mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) if(mail->dungeon.id == dungeon) return mail->targetSpecies; @@ -332,13 +333,13 @@ void sub_8096BD0(void) s32 index; struct WonderMail *mail; - for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < 8; mail++, index++) + for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < MAX_ACCEPTED_JOBS; mail++, index++) { switch(mail->mailType) { - case 7: - case 8: - case 9: + case MAIL_TYPE_UNK7: + case MAIL_TYPE_UNK8: + case MAIL_TYPE_UNK9: ResetJobSlot(index); break; } @@ -352,7 +353,7 @@ bool8 sub_8096C08(u8 *jobIndex) s32 index; struct WonderMail *mail; - for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < 8; mail++, index++) + for(mail = &gUnknown_203B490->jobSlots[0], index = 0; index < MAX_ACCEPTED_JOBS; mail++, index++) { if(mail->mailType > 4 && mail->unk2 == 4) { @@ -366,7 +367,7 @@ bool8 sub_8096C08(u8 *jobIndex) void ResetJobSlot(u8 index) { - gUnknown_203B490->jobSlots[index].mailType = WONDER_MAIL_TYPE_NONE; + gUnknown_203B490->jobSlots[index].mailType = MAIL_TYPE_NONE; gUnknown_203B490->jobSlots[index].dungeon.id = 99; gUnknown_203B490->jobSlots[index].dungeon.floor = 0; gUnknown_203B490->jobSlots[index].rewardType = MONEY1; diff --git a/src/code_80958E8_mid.c b/src/code_80958E8_mid.c index c21da8362..ae4b6cae7 100644 --- a/src/code_80958E8_mid.c +++ b/src/code_80958E8_mid.c @@ -95,7 +95,7 @@ bool8 GenerateMailJobDungeonInfo(struct WonderMail *mail) bool8 sub_8095E38(struct WonderMail *mail, u8 dungeon, u32 floor, u8 param_4) { - if (mail->mailType != 0) { + if (mail->mailType != MAIL_TYPE_NONE) { if ((mail->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) && (param_4 == 1)) { if (mail->dungeon.id == dungeon) { return TRUE; @@ -127,14 +127,14 @@ u8 sub_8095E78(void) for(index = 0; index < 4; index++) { - if((gUnknown_203B490->mailboxSlots[index].mailType != 0) && (gUnknown_203B490->mailboxSlots[index].rewardType == FRIEND_AREA)) + if((gUnknown_203B490->mailboxSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->mailboxSlots[index].rewardType == FRIEND_AREA)) flag = TRUE; } for(index = 0; index < 8; index++) { - if((gUnknown_203B490->jobSlots[index].mailType != 0) && (gUnknown_203B490->jobSlots[index].rewardType == FRIEND_AREA)) + if((gUnknown_203B490->jobSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->jobSlots[index].rewardType == FRIEND_AREA)) flag = TRUE; } diff --git a/src/gulpin_shop_1.c b/src/gulpin_shop_1.c index 1e3df6f10..e41264c5c 100644 --- a/src/gulpin_shop_1.c +++ b/src/gulpin_shop_1.c @@ -17,7 +17,8 @@ extern u32 sub_801F890(void); extern void sub_801F8D0(void); extern u8 IsNextMoveLinked(u32, struct Move *); extern void PlaySound(u32); -extern void sub_801EF38(u32); +extern u32 sub_801EF38(u32); +extern u32 sub_801F194(void); void sub_801ED28(void) { diff --git a/src/mailbox_8095F8C.c b/src/mailbox_8095F8C.c index b07250bfa..e052d5596 100644 --- a/src/mailbox_8095F8C.c +++ b/src/mailbox_8095F8C.c @@ -28,7 +28,7 @@ bool8 sub_8095FB0(struct WonderMail *mail) for(index = 0; index < NUM_MAILBOX_SLOTS; index++) { - if(gUnknown_203B490->mailboxSlots[index].mailType == WONDER_MAIL_TYPE_NONE) + if(gUnknown_203B490->mailboxSlots[index].mailType == MAIL_TYPE_NONE) { gUnknown_203B490->mailboxSlots[index] = *mail; return FALSE; @@ -44,7 +44,7 @@ struct WonderMail *GetMailboxSlotInfo(u8 index) bool8 IsMailSlotEmpty(u8 index) { - if(gUnknown_203B490->mailboxSlots[index].mailType == WONDER_MAIL_TYPE_NONE) + if(gUnknown_203B490->mailboxSlots[index].mailType == MAIL_TYPE_NONE) return TRUE; else return FALSE; @@ -61,7 +61,7 @@ void ResetMailbox(void) void ResetMailboxSlot(u8 index) { - gUnknown_203B490->mailboxSlots[index].mailType = WONDER_MAIL_TYPE_NONE; + gUnknown_203B490->mailboxSlots[index].mailType = MAIL_TYPE_NONE; gUnknown_203B490->mailboxSlots[index].dungeon.id = 99; gUnknown_203B490->mailboxSlots[index].dungeon.floor = 0; gUnknown_203B490->mailboxSlots[index].rewardType = MONEY1; diff --git a/src/pelipper_board.c b/src/pelipper_board.c index 339e39896..fabbf70fe 100644 --- a/src/pelipper_board.c +++ b/src/pelipper_board.c @@ -384,21 +384,21 @@ void sub_802EDBC(void) mail = GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex); switch(mail->mailType) { - case 2: + case MAIL_TYPE_UNK2: gPelipperBoard->unk4 = 1; ResetPelipperBoardSlot(gPelipperBoard->jobIndex); sub_80965F4(); sub_802C2D4(); SetPelipperBoardState(PELIPPER_BOARD_EXIT); break; - case 3: + case MAIL_TYPE_UNK3: gPelipperBoard->unk4 = 2; ResetPelipperBoardSlot(gPelipperBoard->jobIndex); sub_80965F4(); sub_802C2D4(); SetPelipperBoardState(PELIPPER_BOARD_EXIT); break; - case 4: + case MAIL_TYPE_UNK4: gPelipperBoard->unk4 = 3; ResetPelipperBoardSlot(gPelipperBoard->jobIndex); sub_80965F4(); diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 5bacb92f7..de11d4a11 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -6,7 +6,7 @@ #include "constants/iq_skill.h" #include "constants/tactic.h" -extern u32 gIQSkillNames[]; +extern u8 *gIQSkillNames[]; extern u32 gIQSkillDescriptions[]; extern u32 gTacticsDescriptions[]; extern u8 *gTactics[]; @@ -461,7 +461,7 @@ void sub_808E9EC(struct PokemonStruct *r0, struct unkStruct_808E9EC *r1) } #endif -u32 GetIQSkillName(u8 r0) +u8 *GetIQSkillName(u8 r0) { return gIQSkillNames[r0]; } diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c index 8dfaaf30d..644d44ea9 100644 --- a/src/pokemon_mid.c +++ b/src/pokemon_mid.c @@ -923,7 +923,7 @@ char* sub_808E4FC(s32 a1) { struct subStruct_203B240 *result[4]; sub_8097DF0(gFormattedStatusNames[a1], result); - return result[0]->unk0; + return result[0]->pokeName; } char* sub_808E51C(s32 a1) diff --git a/src/post_office_guide.c b/src/post_office_guide.c index 11f3fe530..8b662ecb8 100644 --- a/src/post_office_guide.c +++ b/src/post_office_guide.c @@ -636,7 +636,7 @@ void DisplayMissionObjectives(void) { jobInfo = GetJobSlotInfo(jobSlotIdx); if ((((jobInfo->dungeon.id == gUnknown_203B330->dungeonIndex) && (jobInfo->mailType != 0) - ) && (jobInfo->mailType != 5)) && (jobInfo->mailType != 7)) { + ) && (jobInfo->mailType != MAIL_TYPE_SUSPENDED_JOB)) && (jobInfo->mailType != MAIL_TYPE_UNK7)) { sub_803B6B0(10,yCoord,3,gUnknown_203B330->unk10); if (jobInfo->missionType != WONDER_MAIL_MISSION_TYPE_FIND_ITEM) { sprintfStatic(buffer1,gUnknown_80E1F3C,jobInfo->dungeon.floor); diff --git a/src/wonder_mail_2_mid.c b/src/wonder_mail_2_mid.c index 4ca554b53..345dd3c99 100644 --- a/src/wonder_mail_2_mid.c +++ b/src/wonder_mail_2_mid.c @@ -104,7 +104,7 @@ void CreateMailMenu(void) mail = GetMailboxSlotInfo(gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + index]); local.unk0[0] = gUnknown_203B2D8->unk38; local.y = sub_8013800(&gUnknown_203B2D8->unk4, index); - if (mail->mailType == 1) { + if (mail->mailType == MAIL_TYPE_UNK1) { y = sub_8013800(&gUnknown_203B2D8->unk4, index); sub_803B6B0(10,y,6,gUnknown_203B2D8->unk38); PrintPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct()); diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index aa06f0bc2..53d27058b 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -1,3 +1,4 @@ +#include "constants/mailbox.h" #include "global.h" #include "constants/dungeon.h" #include "constants/input.h" @@ -184,6 +185,61 @@ extern u8 *gUnknown_80D4920[]; extern u8 *gUnknown_80D4928[]; extern u8 *gUnknown_80D494C[]; extern u8 *gUnknown_80D4970[]; +extern u8 gUnknown_80DFD70[]; +extern u8 gUnknown_80DFD7C[]; + +extern bool8 sub_809693C(struct WonderMail *); +extern bool8 sub_80A2824(u8); + +void sub_802CAA4(void) { + s32 loopMax; + struct WonderMail *mail; + s32 index; + + loopMax = 0; + mail = GetJobSlotInfo(gUnknown_203B2F0->unkC); + if(gUnknown_203B2F0->unk0 == 0) + { + switch(mail->mailType) + { + case 5: + gUnknown_203B2F0->unk10C[loopMax].text = gUnknown_80DFD70; // Take Job + if(sub_809693C(mail) || !sub_80A2824(mail->dungeon.id)) + { + gUnknown_203B2F0->unk10C[loopMax].menuAction = -1; + } + else + { + gUnknown_203B2F0->unk10C[loopMax].menuAction = 2; + } + loopMax += 1; + break; + case 6: + gUnknown_203B2F0->unk10C[loopMax].text = gUnknown_80DFD7C; // Suspend + gUnknown_203B2F0->unk10C[loopMax].menuAction = 3; + loopMax += 1; + break; + } + } + gUnknown_203B2F0->unk10C[loopMax].text = *gUnknown_80D494C; + gUnknown_203B2F0->unk10C[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2F0->unk10C[loopMax].text = *gUnknown_80D4970; + gUnknown_203B2F0->unk10C[loopMax].menuAction = 7; + loopMax += 1; + gUnknown_203B2F0->unk10C[loopMax].text = NULL; + gUnknown_203B2F0->unk10C[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2F0->unk10C[index].menuAction != -1) + { + if(gUnknown_203B2F0->unk10C[index].menuAction == gUnknown_203B2F0->menuAction) + return; + } + } + gUnknown_203B2F0->menuAction = 7; +} void sub_802CBAC(void) { @@ -239,13 +295,13 @@ void sub_802CC70(void) case 2: PlaySound(0x133); mail = GetJobSlotInfo(gUnknown_203B2F0->unkC); - mail->mailType = 6; + mail->mailType = MAIL_TYPE_TAKEN_JOB; SetJobListState(1); break; case 3: PlaySound(0x133); mail2 = GetJobSlotInfo(gUnknown_203B2F0->unkC); - mail2->mailType = 5; + mail2->mailType = MAIL_TYPE_SUSPENDED_JOB; SetJobListState(1); break; case 4: @@ -890,7 +946,7 @@ void sub_802D940(void) { // Delete case 2: - if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > 5) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id))) + if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > MAIL_TYPE_SUSPENDED_JOB) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id))) { sub_802D1A0(7); } From caaee601874ed54d55359d7873b5a108ba846877 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 22 May 2023 11:44:13 -0700 Subject: [PATCH 08/21] one more menu decomp and EncoreMoveAction/StatusTarget decomped --- asm/code_80521D0.s | 2 +- asm/code_8077274.s | 118 ------------------------------ asm/friend_area_action_menu.s | 122 -------------------------------- include/status.h | 1 + src/code_8057824.c | 5 +- src/friend_area_action_menu_1.c | 61 ++++++++++++---- src/friend_list_menu_1.c | 3 +- src/other_menus.c | 2 +- src/status.c | 38 ++++++++++ 9 files changed, 93 insertions(+), 259 deletions(-) diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 61f76ebeb..453ebf6e0 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -5299,7 +5299,7 @@ _080551F2: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl sub_8057948 + bl EncoreMoveAction b _080554BA _08055200: adds r0, r7, 0 diff --git a/asm/code_8077274.s b/asm/code_8077274.s index 84678a4c3..5af2088a2 100644 --- a/asm/code_8077274.s +++ b/asm/code_8077274.s @@ -5,124 +5,6 @@ .text - thumb_func_start sub_8078968 -sub_8078968: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - ldr r5, [r4, 0x70] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078A4A - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl HasSafeguardStatus - lsls r0, 24 - cmp r0, 0 - bne _08078A4A - movs r3, 0 - ldr r0, _080789E8 - mov r8, r0 - movs r1, 0x1 - mov r12, r1 - movs r0, 0x8C - lsls r0, 1 - adds r2, r5, r0 - movs r7, 0x10 -_080789A2: - ldrb r1, [r2] - mov r0, r12 - ands r0, r1 - cmp r0, 0 - beq _080789B4 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080789BC -_080789B4: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - ble _080789A2 -_080789BC: - cmp r3, 0x4 - bne _080789F0 - movs r1, 0x9C - lsls r1, 1 - adds r0, r5, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080789F0 - mov r0, r8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _080789EC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078A4A - .align 2, 0 -_080789E8: .4byte gAvailablePokemonNames -_080789EC: .4byte gUnknown_80FBBD4 -_080789F0: - mov r0, r8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x6 - beq _08078A38 - movs r0, 0x6 - strb r0, [r1] - ldr r1, _08078A30 - adds r0, r4, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xBD - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_83 - ldr r0, _08078A34 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078A44 - .align 2, 0 -_08078A30: .4byte gUnknown_80F4EF4 -_08078A34: .4byte gUnknown_80FBB94 -_08078A38: - ldr r0, _08078A54 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08078A44: - adds r0, r4, 0 - bl EntityUpdateStatusSprites -_08078A4A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078A54: .4byte gUnknown_80FBBB8 - thumb_func_end sub_8078968 - thumb_func_start sub_8078A58 sub_8078A58: push {r4-r7,lr} diff --git a/asm/friend_area_action_menu.s b/asm/friend_area_action_menu.s index 2db2ec8f6..f8fe42030 100644 --- a/asm/friend_area_action_menu.s +++ b/asm/friend_area_action_menu.s @@ -298,126 +298,4 @@ _080276A0: bx r0 thumb_func_end CreateFriendActionMenu - thumb_func_start sub_80276A8 -sub_80276A8: - push {r4-r7,lr} - ldr r5, _0802775C - ldr r0, [r5] - movs r7, 0xB6 - lsls r7, 1 - adds r0, r7 - movs r1, 0 - movs r2, 0x14 - bl MemoryFill16 - ldr r2, [r5] - movs r0, 0x8E - lsls r0, 1 - adds r1, r2, r0 - ldr r0, _08027760 - str r0, [r1] - movs r3, 0x90 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0xA - str r0, [r1] - bl GetNumberOfFilledInventorySlots - cmp r0, 0 - bne _080276E4 - ldr r0, [r5] - adds r4, r7, 0 - adds r0, r4 - movs r1, 0x1 - strh r1, [r0] -_080276E4: - ldr r4, [r5] - movs r2, 0x1 - movs r0, 0x92 - lsls r0, 1 - adds r1, r4, r0 - ldr r0, _08027764 - ldr r0, [r0] - str r0, [r1] - movs r3, 0x94 - lsls r3, 1 - adds r1, r4, r3 - movs r0, 0x4 - str r0, [r1] - movs r6, 0x2 - movs r0, 0x96 - lsls r0, 1 - adds r1, r4, r0 - movs r0, 0 - str r0, [r1] - movs r1, 0x98 - lsls r1, 1 - adds r0, r4, r1 - str r2, [r0] - movs r3, 0 - mov r12, r4 - movs r4, 0x90 - lsls r4, 1 - add r4, r12 - mov r0, r12 - adds r2, r0, r7 -_08027720: - ldrh r0, [r2] - cmp r0, 0 - bne _08027730 - ldr r1, [r4] - mov r7, r12 - ldr r0, [r7, 0x74] - cmp r1, r0 - beq _0802778E -_08027730: - adds r4, 0x8 - adds r2, 0x2 - adds r3, 0x1 - cmp r3, r6 - blt _08027720 - movs r3, 0 - cmp r3, r6 - bge _0802778E - ldr r1, [r5] - movs r2, 0xB6 - lsls r2, 1 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _08027768 - movs r3, 0x90 - lsls r3, 1 - adds r0, r1, r3 - ldr r0, [r0] - str r0, [r1, 0x74] - b _0802778E - .align 2, 0 -_0802775C: .4byte gUnknown_203B2BC -_08027760: .4byte gFriendActionGive -_08027764: .4byte gUnknown_80D4970 -_08027768: - adds r3, 0x1 - cmp r3, r6 - bge _0802778E - ldr r2, [r5] - lsls r0, r3, 1 - movs r4, 0xB6 - lsls r4, 1 - adds r1, r2, r4 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08027768 - lsls r0, r3, 3 - movs r7, 0x90 - lsls r7, 1 - adds r1, r2, r7 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x74] -_0802778E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80276A8 - .align 2,0 diff --git a/include/status.h b/include/status.h index abdd59e33..c72583aeb 100644 --- a/include/status.h +++ b/include/status.h @@ -35,5 +35,6 @@ void TauntStatusTarget(struct Entity * pokemon, struct Entity * target); void HandleStockpile(struct Entity * pokemon, struct Entity * target); void InvisibleStatusTarget(struct Entity * pokemon, struct Entity * target); void PerishSongTarget(struct Entity * pokemon, struct Entity * target); +void EncoreStatusTarget(struct Entity * pokemon, struct Entity * target); #endif diff --git a/src/code_8057824.c b/src/code_8057824.c index 8e9e9adb1..77ce4e4b0 100644 --- a/src/code_8057824.c +++ b/src/code_8057824.c @@ -125,7 +125,6 @@ extern u8 sub_807EAA0(u32, u32); extern void sub_80522F4(struct Entity *r1, struct Entity *r2, const char[]); extern s32 sub_80556BC(struct Entity *, struct Entity *, u8, struct Move *, u32, u32); extern bool8 sub_805727C(struct Entity *, struct Entity *, s16); -extern void sub_8078968(struct Entity *r0, struct Entity *r1); extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); extern void SetMessageArgument(char[], struct Entity*, u32); extern u32 sub_8055640(struct Entity *, struct Entity *, struct Move *, u32, u32); @@ -329,9 +328,9 @@ bool32 sub_80578FC(struct Entity *pokemon, struct Entity *target, struct Move * return flag; } -bool32 sub_8057948(struct Entity *pokemon, struct Entity *target) +bool32 EncoreMoveAction(struct Entity *pokemon, struct Entity *target) { - sub_8078968(pokemon, target); + EncoreStatusTarget(pokemon, target); return TRUE; } diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c index 29bf3b254..fa2b1bcf5 100644 --- a/src/friend_area_action_menu_1.c +++ b/src/friend_area_action_menu_1.c @@ -71,23 +71,60 @@ static const u8 filler[] = "pksdir0"; extern u8 *gUnknown_80D4920[]; extern u8 *gUnknown_80D4928[]; +extern u8 *gUnknown_80D4970[]; + +void sub_80276A8(void) +{ + int index; + s32 loopMax; + + loopMax = 0; + MemoryFill16(gUnknown_203B2BC->unk16C,0,sizeof(gUnknown_203B2BC->unk16C)); + gUnknown_203B2BC->menuItems[loopMax].text = gFriendActionGive; + gUnknown_203B2BC->menuItems[loopMax].menuAction = 10; + if (GetNumberOfFilledInventorySlots() == 0) { + gUnknown_203B2BC->unk16C[loopMax] = 1; + } + loopMax += 1; + gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4970; + gUnknown_203B2BC->menuItems[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2BC->menuItems[loopMax].text = 0; + gUnknown_203B2BC->menuItems[loopMax].menuAction = 1; + + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2BC->unk16C[index] == 0) + { + if(gUnknown_203B2BC->menuItems[index].menuAction == gUnknown_203B2BC->menuAction2) + return; + } + } + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2BC->unk16C[index] == 0) + { + gUnknown_203B2BC->menuAction2 = gUnknown_203B2BC->menuItems[index].menuAction; + break; + } + } +} void sub_8027794(void) { - struct unkStruct_203B2BC *puVar1; - u8 *nullText; - s32 menuAction; + s32 loopMax = 0; MemoryFill16(gUnknown_203B2BC->unk16C,0,sizeof(gUnknown_203B2BC->unk16C)); - puVar1 = gUnknown_203B2BC; - nullText = NULL; - puVar1->menuItems[0].text = *gUnknown_80D4920; - gUnknown_203B2BC->menuItems[0].menuAction = 0x2; - menuAction = 1; - gUnknown_203B2BC->menuItems[1].text = *gUnknown_80D4928; - gUnknown_203B2BC->menuItems[1].menuAction = 3; - gUnknown_203B2BC->menuItems[2].text = nullText; - gUnknown_203B2BC->menuItems[2].menuAction = menuAction; + gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4920; + gUnknown_203B2BC->menuItems[loopMax].menuAction = 0x2; + loopMax += 1; + gUnknown_203B2BC->menuItems[loopMax].text = *gUnknown_80D4928; + gUnknown_203B2BC->menuItems[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B2BC->menuItems[loopMax].text = NULL; + gUnknown_203B2BC->menuItems[loopMax].menuAction = 1; } void sub_80277FC(void) diff --git a/src/friend_list_menu_1.c b/src/friend_list_menu_1.c index 313cd5231..e0ccc137b 100644 --- a/src/friend_list_menu_1.c +++ b/src/friend_list_menu_1.c @@ -32,8 +32,7 @@ struct unkStruct_203B2B4 u32 menuAction1; s32 menuAction2; struct MenuStruct unk78; - struct MenuItem unkC8[4]; - u8 fillE8[0x108 - 0xE8]; + struct MenuItem unkC8[8]; u16 unk108[8]; struct UnkTextStruct2 unk118[4]; }; diff --git a/src/other_menus.c b/src/other_menus.c index 851a4a4d6..2310a26a9 100644 --- a/src/other_menus.c +++ b/src/other_menus.c @@ -91,7 +91,7 @@ void sub_8036FDC(s32 param_1) } gUnknown_203B35C->unk0 = param_1; - gUnknown_203B35C->unk4 = 0; + gUnknown_203B35C->linkStatus = 0; gUnknown_203B35C->state = 0; iVar3 = 0; do { diff --git a/src/status.c b/src/status.c index 1a38e9281..4b3c6bb57 100644 --- a/src/status.c +++ b/src/status.c @@ -112,6 +112,10 @@ extern s16 gUnknown_80F4EE4[]; extern s16 gUnknown_80F4EEC[]; extern u8 *gUnknown_80FBB04[]; extern u8 *gUnknown_80FBB28[]; +extern u8 *gUnknown_80FBBD4[]; +extern u8 *gUnknown_80FBBB8[]; +extern u8 *gUnknown_80FBB94[]; +extern s16 gUnknown_80F4EF4[]; extern s32 gUnknown_202DE30[10]; @@ -138,6 +142,7 @@ extern void nullsub_79(struct Entity *); extern void nullsub_80(struct Entity *); extern void nullsub_81(struct Entity *); extern void nullsub_82(struct Entity *); +extern void nullsub_83(struct Entity *); extern void sub_803F580(u32); extern void sub_8040A84(void); extern void sub_8041CA8(struct Entity *); @@ -1187,3 +1192,36 @@ void PerishSongTarget(struct Entity * pokemon, struct Entity * target) EntityUpdateStatusSprites(target); } } + +void EncoreStatusTarget(struct Entity *pokemon,struct Entity *target) +{ + struct Move *movePtr; + int index; + struct EntityInfo *EntityInfo; + + EntityInfo = target->info; + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,TRUE))) { + for(index = 0; index < MAX_MON_MOVES; index++) + { + movePtr = &EntityInfo->moves[index]; + if ((EntityInfo->moves[index].moveFlags & MOVE_FLAG_EXISTS) && (movePtr->moveFlags & MOVE_FLAG_LAST_USED)) break; + } + if ((index == MAX_MON_MOVES) && ((EntityInfo->struggleMoveFlags & MOVE_FLAG_LAST_USED) == 0)) { + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_80522F4(pokemon,target,*gUnknown_80FBBD4); + } + else { + SetMessageArgument(gAvailablePokemonNames,target,0); + if (EntityInfo->volatileStatus != STATUS_ENCORE) { + EntityInfo->volatileStatus = STATUS_ENCORE; + EntityInfo->volatileStatusTurns = CalculateStatusTurns(target,gUnknown_80F4EF4,TRUE) + 1; + nullsub_83(target); + sub_80522F4(pokemon,target,*gUnknown_80FBB94); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FBBB8); + } + EntityUpdateStatusSprites(target); + } + } +} From 515f0871bc651cfea8fc528812dbaee97d19a621 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Thu, 25 May 2023 07:59:14 -0700 Subject: [PATCH 09/21] more decomp --- asm/code_807FCD4.s | 373 --------------------------------------- include/dungeon_entity.h | 2 +- src/code_8083288.c | 188 +++++++++++++++++++- 3 files changed, 187 insertions(+), 376 deletions(-) diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index 6a7bb9261..c20152141 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -6225,377 +6225,4 @@ _08083002: bx r0 thumb_func_end sub_8082FE0 - thumb_func_start nullsub_98 -nullsub_98: - bx lr - thumb_func_end nullsub_98 - - thumb_func_start sub_808300C -sub_808300C: - push {lr} - movs r2, 0x8 - bl sub_8082FA8 - pop {r0} - bx r0 - thumb_func_end sub_808300C - - thumb_func_start sub_8083018 -sub_8083018: - push {lr} - sub sp, 0xC - mov r1, sp - movs r2, 0x8 - bl sub_8082FE0 - mov r1, sp - movs r0, 0 - strb r0, [r1, 0x8] - add sp, 0xC - pop {r0} - bx r0 - thumb_func_end sub_8083018 - - thumb_func_start sub_8083030 -sub_8083030: - push {lr} - sub sp, 0x4 - mov r2, sp - strh r1, [r2] - mov r1, sp - movs r2, 0x2 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8083030 - - thumb_func_start sub_8083048 -sub_8083048: - push {lr} - sub sp, 0x4 - mov r2, sp - strh r1, [r2] - mov r1, sp - movs r2, 0x2 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8083048 - - thumb_func_start sub_8083060 -sub_8083060: - push {lr} - sub sp, 0x4 - mov r2, sp - strb r1, [r2] - mov r1, sp - movs r2, 0x1 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8083060 - - thumb_func_start sub_8083078 -sub_8083078: - push {lr} - sub sp, 0x4 - str r1, [sp] - mov r1, sp - movs r2, 0x4 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8083078 - - thumb_func_start sub_808308C -sub_808308C: - push {lr} - sub sp, 0x4 - str r1, [sp] - mov r1, sp - movs r2, 0x4 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_808308C - - thumb_func_start sub_80830A0 -sub_80830A0: - push {lr} - sub sp, 0x4 - str r1, [sp] - mov r1, sp - movs r2, 0x4 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80830A0 - - thumb_func_start sub_80830B4 -sub_80830B4: - push {lr} - sub sp, 0x4 - adds r3, r0, 0 - lsls r1, 24 - movs r2, 0 - cmp r1, 0 - beq _080830C4 - movs r2, 0xFF -_080830C4: - mov r0, sp - strb r2, [r0] - adds r0, r3, 0 - mov r1, sp - movs r2, 0x1 - bl sub_8082FA8 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80830B4 - - thumb_func_start sub_80830D8 -sub_80830D8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r4, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80830D8 - - thumb_func_start sub_80830F8 -sub_80830F8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r4, 0x4 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r1, r4, 0 - adds r1, 0x8 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r4, 0xC - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80830F8 - - thumb_func_start sub_808312C -sub_808312C: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r4, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808312C - - thumb_func_start sub_808314C -sub_808314C: - push {lr} - bl sub_8082FA8 - pop {r0} - bx r0 - thumb_func_end sub_808314C - - thumb_func_start sub_8083158 -sub_8083158: - push {lr} - sub sp, 0x4 - mov r1, sp - movs r2, 0x2 - bl sub_8082FE0 - mov r0, sp - ldrh r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8083158 - - thumb_func_start sub_8083170 -sub_8083170: - push {lr} - sub sp, 0x4 - mov r1, sp - movs r2, 0x2 - bl sub_8082FE0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8083170 - - thumb_func_start sub_8083188 -sub_8083188: - push {lr} - sub sp, 0x4 - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r0, [r0] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8083188 - - thumb_func_start sub_80831A0 -sub_80831A0: - push {lr} - sub sp, 0x4 - mov r1, sp - movs r2, 0x4 - bl sub_8082FE0 - ldr r0, [sp] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_80831A0 - - thumb_func_start sub_80831B4 -sub_80831B4: - push {lr} - sub sp, 0x4 - mov r1, sp - movs r2, 0x4 - bl sub_8082FE0 - ldr r0, [sp] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_80831B4 - - thumb_func_start sub_80831C8 -sub_80831C8: - push {lr} - sub sp, 0x4 - mov r1, sp - movs r2, 0x4 - bl sub_8082FE0 - ldr r0, [sp] - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_80831C8 - - thumb_func_start sub_80831DC -sub_80831DC: - push {lr} - sub sp, 0x4 - mov r1, sp - movs r2, 0x1 - bl sub_8082FE0 - mov r0, sp - ldrb r1, [r0] - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_80831DC - - thumb_func_start sub_80831F8 -sub_80831F8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - strh r0, [r4] - strh r0, [r4, 0x2] - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r4, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FE0 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80831F8 - - thumb_func_start sub_8083220 -sub_8083220: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - str r0, [r4] - str r0, [r4, 0x4] - str r0, [r4, 0x8] - str r0, [r4, 0xC] - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r1, r4, 0x4 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r1, r4, 0 - adds r1, 0x8 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r4, 0xC - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FE0 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8083220 - - thumb_func_start sub_8083260 -sub_8083260: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - strh r0, [r4] - strh r0, [r4, 0x2] - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FE0 - adds r4, 0x2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FE0 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8083260 - .align 2, 0 diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index 8bc5db5ab..d9572b407 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -227,7 +227,7 @@ struct EntityInfo /* 0x16C */ struct Position targetPos; /* 0x170 */ struct Position pixelPos; u32 unk174; - u8 fill178[0x17A - 0x178]; + u16 unk178; /* 0x17A */ u16 mimicMoveIDs[MAX_MON_MOVES]; // All moves that Mimic has copied (not sure on size...) // Previous value of targetPosition for movement, 1 and 2 moves ago. /* 0x184 */ struct Position previousTargetMovePosition1; diff --git a/src/code_8083288.c b/src/code_8083288.c index 6ea3eb23d..f0f3ac618 100644 --- a/src/code_8083288.c +++ b/src/code_8083288.c @@ -1,8 +1,192 @@ #include "global.h" -extern void sub_8082FE0(u32, u32, u32); +extern void sub_8082FE0(u32, void *, u32); +extern void sub_8082FA8(void *, void *, u32); -void sub_8083288(u32 r0, u32 r1, u32 r2) + +void nullsub_98() +{} + +void sub_808300C(u32 *param_1, u32 *param_2) +{ + sub_8082FA8(param_1, param_2, 8); +} + +void sub_8083018(u32 param_1) +{ + u8 auStack_10 [12]; + + sub_8082FE0(param_1,auStack_10,8); + auStack_10[8] = 0; +} + +void sub_8083030(u32 *param_1, u32 param_2) +{ + u16 uStack_8; + + uStack_8 = param_2; + sub_8082FA8(param_1,&uStack_8,2); +} + +void sub_8083048(u32 *param_1, u32 param_2) +{ + u16 uStack_8; + + uStack_8 = param_2; + sub_8082FA8(param_1,&uStack_8,2); +} + +void sub_8083060(u32 *param_1, u32 param_2) +{ + u8 uStack_8; + + uStack_8 = param_2; + sub_8082FA8(param_1,&uStack_8,1); +} + +void sub_8083078(u32 *param_1, u32 param_2) +{ + u32 uStack_8; + + uStack_8 = param_2; + sub_8082FA8(param_1,&uStack_8,4); +} + +void sub_808308C(u32 *param_1, u32 param_2) +{ + u32 uStack_8; + + uStack_8 = param_2; + sub_8082FA8(param_1,&uStack_8,4); +} + +void sub_80830A0(u32 *param_1, u32 param_2) +{ + u32 uStack_8; + + uStack_8 = param_2; + sub_8082FA8(param_1,&uStack_8,4); +} + +void sub_80830B4(u32 *param_1, u8 param_2) +{ + u8 local_8; + + local_8 = (param_2 != 0) ? -1 : 0; + sub_8082FA8(param_1,&local_8,1); +} + +void sub_80830D8(u32 *param_1, u16 *param_2) +{ + sub_8082FA8(param_1, ¶m_2[0], 1); + sub_8082FA8(param_1, ¶m_2[1], 1); +} + +void sub_80830F8(u32 *param_1, u32 *param_2) +{ + sub_8082FA8(param_1, ¶m_2[0], 1); + sub_8082FA8(param_1, ¶m_2[1], 1); + sub_8082FA8(param_1, ¶m_2[2], 1); + sub_8082FA8(param_1, ¶m_2[3], 1); +} + +void sub_808312C(u32 *param_1, u16 *param_2) +{ + sub_8082FA8(param_1, ¶m_2[0], 1); + sub_8082FA8(param_1, ¶m_2[1], 1); +} + +void sub_808314C(u32 *param_1, u32 *param_2, u32 param_3) +{ + sub_8082FA8(param_1, param_2, param_3); +} + +u16 sub_8083158(u32 param_1) +{ + u16 local_8; + + sub_8082FE0(param_1,&local_8,2); + return local_8; +} + +s16 sub_8083170(u32 param_1) +{ + s16 local_8; + + sub_8082FE0(param_1,&local_8,2); + return local_8; +} + +u8 sub_8083188(u32 param_1) +{ + u8 local_8; + + sub_8082FE0(param_1,&local_8,1); + return local_8; +} + +u32 sub_80831A0(u32 param_1) +{ + u32 local_8; + + sub_8082FE0(param_1,&local_8,4); + return local_8; +} + +u32 sub_80831B4(u32 param_1) +{ + u32 local_8; + + sub_8082FE0(param_1,&local_8,4); + return local_8; +} + +u32 sub_80831C8(u32 param_1) +{ + u32 local_8; + + sub_8082FE0(param_1,&local_8,4); + return local_8; +} + +bool8 sub_80831DC(u32 param_1) +{ + u8 local_8; + + sub_8082FE0(param_1,&local_8,1); + return local_8 != 0; +} + +void sub_80831F8(u32 param_1,u16 *param_2) +{ + param_2[0] = 0; + param_2[1] = 0; + sub_8082FE0(param_1,¶m_2[0],1); + sub_8082FE0(param_1,¶m_2[1],1); +} + + +void sub_8083220(u32 param_1,u32 *param_2) +{ + param_2[0] = 0; + param_2[1] = 0; + param_2[2] = 0; + param_2[3] = 0; + sub_8082FE0(param_1,¶m_2[0],1); + sub_8082FE0(param_1,¶m_2[1],1); + sub_8082FE0(param_1,¶m_2[2],1); + sub_8082FE0(param_1,¶m_2[3],1); +} + +void sub_8083260(u32 param_1,u16 *param_2) +{ + param_2[0] = 0; + param_2[1] = 0; + sub_8082FE0(param_1,¶m_2[0],1); + sub_8082FE0(param_1,¶m_2[1],1); +} + +void sub_8083288(u32 r0, u16 *r1, u32 r2) { sub_8082FE0(r0, r1, r2); } From c7d3ab03b0790bf5f76e6cbbedae3ae53de0b239 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 27 May 2023 09:19:08 -0700 Subject: [PATCH 10/21] more decomp, move of some data, and code cleanup --- asm/friend_list_menu.s | 2185 -------------------------------------- data/data_80D47B8.s | 3 - data/friend_area.inc | 176 --- data/text/party_menu.inc | 109 -- include/moves.h | 4 + include/pokemon.h | 2 +- ld_script.txt | 5 +- src/friend_list_menu.c | 1090 +++++++++++-------- src/friend_list_menu_1.c | 297 ------ src/items.c | 12 +- src/party_list_menu.c | 1081 +++++++++++++++++++ src/pokemon_mid.c | 6 +- 12 files changed, 1772 insertions(+), 3198 deletions(-) delete mode 100644 data/friend_area.inc delete mode 100644 data/text/party_menu.inc delete mode 100644 src/friend_list_menu_1.c create mode 100644 src/party_list_menu.c diff --git a/asm/friend_list_menu.s b/asm/friend_list_menu.s index 42a90fa43..31a39996f 100644 --- a/asm/friend_list_menu.s +++ b/asm/friend_list_menu.s @@ -5,2189 +5,4 @@ .text - - thumb_func_start sub_8025728 -sub_8025728: - push {r4-r7,lr} - ldr r3, _080257CC - ldr r5, _080257D0 - ldr r0, [r5] - movs r1, 0xE - ldrsh r2, [r0, r1] - movs r1, 0x58 - muls r2, r1 - ldr r1, [r3] - adds r7, r1, r2 - movs r2, 0x84 - lsls r2, 1 - adds r0, r2 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r4, [r5] - ldr r0, [r4] - cmp r0, 0 - bne _080257E0 - adds r1, r4, 0 - adds r1, 0xC8 - ldr r0, _080257D4 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xA - str r0, [r1] - bl GetNumberOfFilledInventorySlots - cmp r0, 0 - bne _08025774 - ldr r0, [r5] - movs r4, 0x84 - lsls r4, 1 - adds r0, r4 - movs r1, 0x1 - strh r1, [r0] -_08025774: - movs r6, 0x1 - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0xD0 - ldr r0, _080257D8 - str r0, [r2] - adds r1, 0xD4 - movs r0, 0xB - str r0, [r1] - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - bgt _08025796 - ldr r0, [r5] - ldrb r0, [r0, 0x18] - cmp r0, 0 - bne _080257A0 -_08025796: - ldr r0, [r5] - movs r1, 0x85 - lsls r1, 1 - adds r0, r1 - strh r6, [r0] -_080257A0: - adds r6, 0x1 - adds r0, r7, 0 - bl sub_8025EC4 - lsls r0, 24 - cmp r0, 0 - beq _08025810 - ldr r0, _080257D0 - ldr r2, [r0] - lsls r3, r6, 3 - adds r0, r2, 0 - adds r0, 0xC8 - adds r0, r3 - ldr r1, _080257DC - str r1, [r0] - adds r2, 0xCC - adds r2, r3 - movs r0, 0x9 - str r0, [r2] - adds r6, 0x1 - b _08025810 - .align 2, 0 -_080257CC: .4byte gRecruitedPokemonRef -_080257D0: .4byte gUnknown_203B2B4 -_080257D4: .4byte gUnknown_80DD2B0 -_080257D8: .4byte gUnknown_80DD2B8 -_080257DC: .4byte gUnknown_80DD2C0 -_080257E0: - adds r1, r4, 0 - adds r1, 0xC8 - ldr r0, _080258D4 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x7 - str r0, [r1] - ldr r0, [r4, 0x1C] - movs r2, 0x8 - ldrsh r0, [r0, r2] - bl GetFriendArea - ldrb r1, [r4, 0xC] - lsls r0, 24 - lsrs r0, 24 - cmp r1, r0 - bne _0802580E - ldr r0, [r5] - movs r4, 0x84 - lsls r4, 1 - adds r0, r4 - movs r1, 0x1 - strh r1, [r0] -_0802580E: - movs r6, 0x1 -_08025810: - movs r0, 0x8 - ldrsh r1, [r7, r0] - ldr r0, _080258D8 - cmp r1, r0 - bne _08025840 - adds r0, r7, 0 - bl IsPokemonRenamed - lsls r0, 24 - cmp r0, 0 - beq _08025840 - ldr r0, _080258DC - ldr r2, [r0] - lsls r3, r6, 3 - adds r0, r2, 0 - adds r0, 0xC8 - adds r0, r3 - ldr r1, _080258E0 - str r1, [r0] - adds r2, 0xCC - adds r2, r3 - movs r0, 0x8 - str r0, [r2] - adds r6, 0x1 -_08025840: - ldr r4, _080258DC - ldr r5, [r4] - lsls r1, r6, 3 - adds r3, r5, 0 - adds r3, 0xC8 - adds r2, r3, r1 - ldr r0, _080258E4 - str r0, [r2] - adds r7, r5, 0 - adds r7, 0xCC - adds r1, r7, r1 - movs r0, 0x4 - str r0, [r1] - adds r6, 0x1 - lsls r1, r6, 3 - adds r2, r3, r1 - ldr r0, _080258E8 - str r0, [r2] - adds r1, r7, r1 - movs r0, 0x6 - str r0, [r1] - adds r6, 0x1 - lsls r1, r6, 3 - adds r2, r3, r1 - ldr r0, _080258EC - str r0, [r2] - adds r1, r7, r1 - movs r0, 0x5 - str r0, [r1] - adds r6, 0x1 - lsls r1, r6, 3 - adds r3, r1 - movs r0, 0 - str r0, [r3] - adds r1, r7, r1 - movs r0, 0x1 - str r0, [r1] - movs r3, 0 - mov r12, r4 - cmp r3, r6 - bge _080258B2 - movs r1, 0x84 - lsls r1, 1 - adds r4, r5, r1 - adds r2, r7, 0 -_0802589A: - ldrh r0, [r4] - cmp r0, 0 - bne _080258A8 - ldr r1, [r2] - ldr r0, [r5, 0x70] - cmp r1, r0 - beq _08025916 -_080258A8: - adds r4, 0x2 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r6 - blt _0802589A -_080258B2: - movs r3, 0 - cmp r3, r6 - bge _08025916 - mov r2, r12 - ldr r1, [r2] - movs r4, 0x84 - lsls r4, 1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, 0 - bne _080258F0 - adds r0, r1, 0 - adds r0, 0xCC - ldr r0, [r0] - str r0, [r1, 0x70] - b _08025916 - .align 2, 0 -_080258D4: .4byte gUnknown_80DD2CC -_080258D8: .4byte 0x0000013d -_080258DC: .4byte gUnknown_203B2B4 -_080258E0: .4byte gUnknown_80DD2D4 -_080258E4: .4byte gUnknown_80DD2DC -_080258E8: .4byte gUnknown_80DD2E4 -_080258EC: .4byte gUnknown_80DD2EC -_080258F0: - adds r3, 0x1 - cmp r3, r6 - bge _08025916 - mov r0, r12 - ldr r2, [r0] - lsls r0, r3, 1 - movs r4, 0x84 - lsls r4, 1 - adds r1, r2, r4 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080258F0 - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0xCC - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x70] -_08025916: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8025728 - - thumb_func_start sub_802591C -sub_802591C: - push {r4-r7,lr} - ldr r5, _080259B8 - ldr r0, [r5] - movs r7, 0x84 - lsls r7, 1 - adds r0, r7 - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0xC8 - ldr r0, _080259BC - str r0, [r2] - adds r1, 0xCC - movs r0, 0xA - str r0, [r1] - bl GetNumberOfFilledInventorySlots - cmp r0, 0 - bne _08025952 - ldr r0, [r5] - adds r1, r7, 0 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] -_08025952: - ldr r4, [r5] - movs r2, 0x1 - adds r1, r4, 0 - adds r1, 0xD0 - ldr r0, _080259C0 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x4 - str r0, [r1] - movs r6, 0x2 - adds r1, 0x4 - movs r0, 0 - str r0, [r1] - adds r0, r4, 0 - adds r0, 0xDC - str r2, [r0] - movs r3, 0 - mov r12, r4 - adds r4, r7 - mov r2, r12 - adds r2, 0xCC -_0802597E: - ldrh r0, [r4] - cmp r0, 0 - bne _0802598E - ldr r1, [r2] - mov r7, r12 - ldr r0, [r7, 0x74] - cmp r1, r0 - beq _080259E8 -_0802598E: - adds r4, 0x2 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r6 - blt _0802597E - movs r3, 0 - cmp r3, r6 - bge _080259E8 - ldr r1, [r5] - movs r2, 0x84 - lsls r2, 1 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _080259C4 - adds r0, r1, 0 - adds r0, 0xCC - ldr r0, [r0] - str r0, [r1, 0x74] - b _080259E8 - .align 2, 0 -_080259B8: .4byte gUnknown_203B2B4 -_080259BC: .4byte gUnknown_80DD2B0 -_080259C0: .4byte gUnknown_80D4970 -_080259C4: - adds r3, 0x1 - cmp r3, r6 - bge _080259E8 - ldr r2, [r5] - lsls r0, r3, 1 - movs r4, 0x84 - lsls r4, 1 - adds r1, r2, r4 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080259C4 - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0xCC - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x74] -_080259E8: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802591C - - thumb_func_start sub_80259F0 -sub_80259F0: - push {lr} - movs r0, 0x1 - bl sub_8023A94 - cmp r0, 0x3 - beq _08025A0C - cmp r0, 0x3 - bhi _08025A06 - cmp r0, 0x2 - beq _08025A74 - b _08025A7E -_08025A06: - cmp r0, 0x4 - beq _08025A40 - b _08025A7E -_08025A0C: - bl sub_8023B44 - ldr r1, _08025A38 - ldr r1, [r1] - strh r0, [r1, 0xE] - ldr r3, _08025A3C - movs r0, 0xE - ldrsh r2, [r1, r0] - movs r0, 0x58 - muls r2, r0 - ldr r0, [r3] - adds r0, r2 - str r0, [r1, 0x1C] - movs r2, 0xE - ldrsh r0, [r1, r2] - adds r1, 0x18 - bl PeekPokemonItem - movs r0, 0x3 - bl sub_8025434 - b _08025A7E - .align 2, 0 -_08025A38: .4byte gUnknown_203B2B4 -_08025A3C: .4byte gRecruitedPokemonRef -_08025A40: - bl sub_8023B44 - ldr r1, _08025A6C - ldr r1, [r1] - strh r0, [r1, 0xE] - ldr r3, _08025A70 - movs r0, 0xE - ldrsh r2, [r1, r0] - movs r0, 0x58 - muls r2, r0 - ldr r0, [r3] - adds r0, r2 - str r0, [r1, 0x1C] - movs r2, 0xE - ldrsh r0, [r1, r2] - adds r1, 0x18 - bl PeekPokemonItem - movs r0, 0x4 - bl sub_8025434 - b _08025A7E - .align 2, 0 -_08025A6C: .4byte gUnknown_203B2B4 -_08025A70: .4byte gRecruitedPokemonRef -_08025A74: - bl sub_8023C60 - movs r0, 0x13 - bl sub_8025434 -_08025A7E: - pop {r0} - bx r0 - thumb_func_end sub_80259F0 - - thumb_func_start sub_8025A84 -sub_8025A84: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_8023A94 - ldr r4, _08025AC8 - ldr r0, [r4] - adds r0, 0x78 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _08025AB4 - ldr r0, [r4] - adds r0, 0x78 - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _08025AB4 - ldr r0, [r4] - str r1, [r0, 0x70] -_08025AB4: - ldr r0, [sp] - subs r0, 0x1 - cmp r0, 0xA - bls _08025ABE - b _08025BC2 -_08025ABE: - lsls r0, 2 - ldr r1, _08025ACC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08025AC8: .4byte gUnknown_203B2B4 -_08025ACC: .4byte _08025AD0 - .align 2, 0 -_08025AD0: - .4byte _08025BBC - .4byte _08025BC2 - .4byte _08025BC2 - .4byte _08025BAC - .4byte _08025BB4 - .4byte _08025B9C - .4byte _08025AFC - .4byte _08025BA4 - .4byte _08025B70 - .4byte _08025B20 - .4byte _08025B28 -_08025AFC: - ldr r4, _08025B1C - ldr r0, [r4] - ldr r0, [r0, 0x1C] - movs r1, 0x8 - ldrsh r0, [r0, r1] - bl GetFriendArea - ldr r1, [r4] - strb r0, [r1, 0xD] - bl sub_8023C60 - movs r0, 0x13 - bl sub_8025434 - b _08025BC2 - .align 2, 0 -_08025B1C: .4byte gUnknown_203B2B4 -_08025B20: - movs r0, 0xB - bl sub_8025434 - b _08025BC2 -_08025B28: - ldr r0, _08025B68 - bl PlaySound - ldr r4, _08025B6C - ldr r1, [r4] - ldrb r0, [r1, 0x18] - cmp r0, 0 - beq _08025B40 - adds r0, r1, 0 - adds r0, 0x18 - bl AddHeldItemToInventory -_08025B40: - bl FillInventoryGaps - ldr r0, [r4] - movs r1, 0 - strb r1, [r0, 0x18] - ldr r0, [r4] - strb r1, [r0, 0x19] - ldr r1, [r4] - movs r2, 0xE - ldrsh r0, [r1, r2] - adds r1, 0x18 - bl GivePokemonItem - bl nullsub_104 - movs r0, 0xA - bl sub_8025434 - b _08025BC2 - .align 2, 0 -_08025B68: .4byte 0x0000014d -_08025B6C: .4byte gUnknown_203B2B4 -_08025B70: - ldr r0, _08025B94 - ldr r0, [r0] - ldr r2, [r0, 0x1C] - ldrh r1, [r2] - ldr r0, _08025B98 - ands r0, r1 - strh r0, [r2] - bl nullsub_104 - bl sub_808ED00 - bl sub_8023C60 - movs r0, 0x7 - bl sub_8025434 - b _08025BC2 - .align 2, 0 -_08025B94: .4byte gUnknown_203B2B4 -_08025B98: .4byte 0x0000fffd -_08025B9C: - movs r0, 0xF - bl sub_8025434 - b _08025BC2 -_08025BA4: - movs r0, 0x12 - bl sub_8025434 - b _08025BC2 -_08025BAC: - movs r0, 0x4 - bl sub_8025434 - b _08025BC2 -_08025BB4: - movs r0, 0x5 - bl sub_8025434 - b _08025BC2 -_08025BBC: - movs r0, 0x2 - bl sub_8025434 -_08025BC2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8025A84 - - thumb_func_start sub_8025BCC -sub_8025BCC: - push {lr} - bl sub_80244E4 - cmp r0, 0x1 - bls _08025BE4 - cmp r0, 0x3 - bhi _08025BE4 - bl sub_802453C - movs r0, 0x2 - bl sub_8025434 -_08025BE4: - pop {r0} - bx r0 - thumb_func_end sub_8025BCC - - thumb_func_start sub_8025BE8 -sub_8025BE8: - push {lr} - bl sub_801BF48 - cmp r0, 0x1 - bls _08025C00 - cmp r0, 0x3 - bhi _08025C00 - bl sub_801BF98 - movs r0, 0x2 - bl sub_8025434 -_08025C00: - pop {r0} - bx r0 - thumb_func_end sub_8025BE8 - - thumb_func_start sub_8025C04 -sub_8025C04: - push {r4,lr} - movs r0, 0x1 - bl sub_801A6E8 - cmp r0, 0x4 - bhi _08025CAE - lsls r0, 2 - ldr r1, _08025C1C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08025C1C: .4byte _08025C20 - .align 2, 0 -_08025C20: - .4byte _08025CAE - .4byte _08025CAE - .4byte _08025CA4 - .4byte _08025C34 - .4byte _08025C68 -_08025C34: - bl sub_801A8AC - ldr r4, _08025C60 - ldr r2, [r4] - str r0, [r2, 0x10] - ldr r3, _08025C64 - ldr r1, [r3] - lsls r0, 2 - adds r1, r0 - ldrb r0, [r1, 0x2] - strb r0, [r2, 0x14] - ldr r2, [r4] - ldr r1, [r3] - ldr r0, [r2, 0x10] - lsls r0, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - strb r0, [r2, 0x15] - movs r0, 0xD - bl sub_8025434 - b _08025CAE - .align 2, 0 -_08025C60: .4byte gUnknown_203B2B4 -_08025C64: .4byte gTeamInventory_203B460 -_08025C68: - bl sub_801A8AC - ldr r4, _08025C9C - ldr r2, [r4] - str r0, [r2, 0x10] - ldr r3, _08025CA0 - ldr r1, [r3] - lsls r0, 2 - adds r1, r0 - ldrb r0, [r1, 0x2] - strb r0, [r2, 0x14] - ldr r2, [r4] - ldr r1, [r3] - ldr r0, [r2, 0x10] - lsls r0, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - strb r0, [r2, 0x15] - movs r0, 0 - bl sub_8099690 - movs r0, 0xE - bl sub_8025434 - b _08025CAE - .align 2, 0 -_08025C9C: .4byte gUnknown_203B2B4 -_08025CA0: .4byte gTeamInventory_203B460 -_08025CA4: - bl sub_801A928 - movs r0, 0x2 - bl sub_8025434 -_08025CAE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8025C04 - - thumb_func_start sub_8025CB4 -sub_8025CB4: - push {r4-r6,lr} - sub sp, 0x14 - movs r0, 0 - str r0, [sp, 0xC] - bl sub_801A6E8 - ldr r4, _08025CF4 - ldr r0, [r4] - adds r0, 0x78 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _08025CE4 - ldr r0, [r4] - adds r0, 0x78 - add r1, sp, 0xC - bl sub_8013114 - ldr r1, [sp, 0xC] - cmp r1, 0x1 - beq _08025CE4 - ldr r0, [r4] - str r1, [r0, 0x74] -_08025CE4: - ldr r0, [sp, 0xC] - cmp r0, 0x4 - beq _08025D74 - cmp r0, 0x4 - bgt _08025CF8 - cmp r0, 0x1 - beq _08025D82 - b _08025D88 - .align 2, 0 -_08025CF4: .4byte gUnknown_203B2B4 -_08025CF8: - cmp r0, 0xA - bne _08025D88 - movs r6, 0x8 - ldr r0, _08025D68 - bl PlaySound - ldr r5, _08025D6C - ldr r0, [r5] - ldr r0, [r0, 0x10] - bl ShiftItemsDownFrom - bl FillInventoryGaps - ldr r1, [r5] - ldrb r0, [r1, 0x18] - cmp r0, 0 - beq _08025D24 - adds r0, r1, 0 - adds r0, 0x18 - bl AddHeldItemToInventory - movs r6, 0x9 -_08025D24: - add r4, sp, 0x10 - ldr r1, [r5] - adds r1, 0x14 - adds r0, r4, 0 - bl HeldItemToSlot - movs r1, 0 - str r1, [sp] - mov r0, sp - strb r1, [r0, 0x4] - mov r1, sp - movs r0, 0x1 - strb r0, [r1, 0x8] - strb r0, [r4] - ldr r0, _08025D70 - adds r1, r4, 0 - mov r2, sp - bl sub_8090E14 - ldr r1, [r5] - movs r2, 0xE - ldrsh r0, [r1, r2] - adds r1, 0x14 - bl GivePokemonItem - bl sub_801A928 - bl nullsub_104 - adds r0, r6, 0 - bl sub_8025434 - b _08025D88 - .align 2, 0 -_08025D68: .4byte 0x0000014d -_08025D6C: .4byte gUnknown_203B2B4 -_08025D70: .4byte gUnknown_202DEA8 -_08025D74: - movs r0, 0 - bl sub_8099690 - movs r0, 0xE - bl sub_8025434 - b _08025D88 -_08025D82: - movs r0, 0xC - bl sub_8025434 -_08025D88: - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8025CB4 - - thumb_func_start sub_8025D90 -sub_8025D90: - push {lr} - bl sub_801B410 - cmp r0, 0x1 - bls _08025DA8 - cmp r0, 0x3 - bhi _08025DA8 - bl sub_801B450 - movs r0, 0xC - bl sub_8025434 -_08025DA8: - pop {r0} - bx r0 - thumb_func_end sub_8025D90 - - thumb_func_start sub_8025DAC -sub_8025DAC: - push {lr} - movs r0, 0x1 - bl sub_801EF38 - cmp r0, 0x3 - beq _08025DC6 - cmp r0, 0x3 - bhi _08025DC2 - cmp r0, 0x2 - beq _08025DE4 - b _08025DFE -_08025DC2: - cmp r0, 0x4 - bne _08025DFE -_08025DC6: - bl sub_801F194 - ldr r1, _08025DE0 - ldr r1, [r1] - str r0, [r1, 0x20] - lsls r0, 3 - adds r0, r1, r0 - ldrh r0, [r0, 0x2A] - strh r0, [r1, 0x24] - movs r0, 0x11 - bl sub_8025434 - b _08025DFE - .align 2, 0 -_08025DE0: .4byte gUnknown_203B2B4 -_08025DE4: - bl sub_801F214 - ldr r0, _08025E04 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x28 - ldr r1, [r1, 0x1C] - adds r1, 0x2C - bl sub_8094060 - movs r0, 0x2 - bl sub_8025434 -_08025DFE: - pop {r0} - bx r0 - .align 2, 0 -_08025E04: .4byte gUnknown_203B2B4 - thumb_func_end sub_8025DAC - - thumb_func_start sub_8025E08 -sub_8025E08: - push {lr} - bl sub_801F890 - cmp r0, 0x1 - bls _08025E20 - cmp r0, 0x3 - bhi _08025E20 - bl sub_801F8D0 - movs r0, 0x10 - bl sub_8025434 -_08025E20: - pop {r0} - bx r0 - thumb_func_end sub_8025E08 - - thumb_func_start sub_8025E24 -sub_8025E24: - push {lr} - bl sub_8016080 - cmp r0, 0x3 - bhi _08025E40 - cmp r0, 0x2 - bcc _08025E40 - bl sub_80160D8 - bl nullsub_104 - movs r0, 0x2 - bl sub_8025434 -_08025E40: - pop {r0} - bx r0 - thumb_func_end sub_8025E24 - - thumb_func_start sub_8025E44 -sub_8025E44: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _08025E5C - ldr r0, _08025E64 - ldr r0, [r0] - ldr r0, [r0, 0x8] - bl sub_8025434 -_08025E5C: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08025E64: .4byte gUnknown_203B2B4 - thumb_func_end sub_8025E44 - - thumb_func_start sub_8025E68 -sub_8025E68: - push {r4-r6,lr} - sub sp, 0x14 - adds r6, r0, 0 - adds r5, r1, 0 - bl sub_8008C54 - adds r0, r6, 0 - bl sub_80073B8 - add r4, sp, 0x10 - adds r0, r4, 0 - adds r1, r5, 0 - bl HeldItemToSlot - movs r5, 0 - str r5, [sp, 0x4] - add r0, sp, 0x4 - strb r5, [r0, 0x4] - adds r1, r0, 0 - movs r0, 0x1 - strb r0, [r1, 0x8] - strb r0, [r4] - ldr r0, _08025EBC - adds r1, r4, 0 - add r2, sp, 0x4 - bl sub_8090E14 - ldr r2, _08025EC0 - str r5, [sp] - movs r0, 0x4 - movs r1, 0x3 - adds r3, r6, 0 - bl xxx_format_and_draw - adds r0, r6, 0 - bl sub_80073E0 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08025EBC: .4byte gUnknown_202DE58 -_08025EC0: .4byte gUnknown_80DD2F8 - thumb_func_end sub_8025E68 - - thumb_func_start sub_8025EC4 -sub_8025EC4: - push {lr} - adds r1, r0, 0 - ldrb r0, [r1, 0x2] - cmp r0, 0 - bne _08025EE8 - movs r2, 0 - ldrb r0, [r1, 0x4] - cmp r0, 0x41 - bne _08025ED8 - movs r2, 0x1 -_08025ED8: - cmp r2, 0 - beq _08025EEC - movs r0, 0x8 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _08025EEC -_08025EE8: - movs r0, 0 - b _08025EEE -_08025EEC: - movs r0, 0x1 -_08025EEE: - pop {r1} - bx r1 - thumb_func_end sub_8025EC4 - - thumb_func_start sub_8025EF4 -sub_8025EF4: - push {r4-r6,lr} - adds r4, r0, 0 - ldr r6, _08025F1C - movs r0, 0xA0 - lsls r0, 2 - movs r1, 0x8 - bl MemoryAlloc - adds r1, r0, 0 - str r1, [r6] - str r4, [r1, 0x18] - movs r5, 0 - ldr r0, _08025F20 - ldr r0, [r0] - cmp r4, r0 - bne _08025F24 - strh r5, [r1, 0xA] - adds r4, r6, 0 - b _08025F48 - .align 2, 0 -_08025F1C: .4byte gUnknown_203B2B8 -_08025F20: .4byte gRecruitedPokemonRef -_08025F24: - adds r5, 0x1 - movs r0, 0xCE - lsls r0, 1 - ldr r4, _08025F60 - cmp r5, r0 - bgt _08025F48 - ldr r3, [r4] - ldr r2, _08025F64 - lsls r0, r5, 16 - asrs r0, 16 - movs r1, 0x58 - muls r1, r0 - ldr r0, [r2] - adds r0, r1 - ldr r1, [r3, 0x18] - cmp r1, r0 - bne _08025F24 - strh r5, [r3, 0xA] -_08025F48: - ldr r1, [r4] - movs r0, 0 - str r0, [r1, 0x70] - str r0, [r1, 0x74] - str r0, [r1, 0x78] - strb r0, [r1, 0x8] - bl sub_8026074 - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08025F60: .4byte gUnknown_203B2B8 -_08025F64: .4byte gRecruitedPokemonRef - thumb_func_end sub_8025EF4 - - thumb_func_start sub_8025F68 -sub_8025F68: - push {lr} - ldr r0, _08025F80 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x19 - bhi _0802603A - lsls r0, 2 - ldr r1, _08025F84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08025F80: .4byte gUnknown_203B2B8 -_08025F84: .4byte _08025F88 - .align 2, 0 -_08025F88: - .4byte _08025FF0 - .4byte _08025FF8 - .4byte _08025FF8 - .4byte _08025FFE - .4byte _08026004 - .4byte _0802603A - .4byte _0802603A - .4byte _0802603A - .4byte _0802603A - .4byte _0802603A - .4byte _0802603A - .4byte _0802603A - .4byte _0802600A - .4byte _08026010 - .4byte _08026016 - .4byte _0802603A - .4byte _0802603A - .4byte _0802603A - .4byte _0802601C - .4byte _0802601C - .4byte _08026022 - .4byte _08026028 - .4byte _0802602E - .4byte _0802602E - .4byte _08026034 - .4byte _08026040 -_08025FF0: - movs r0, 0x1 - bl sub_8026074 - b _08026044 -_08025FF8: - bl sub_80268CC - b _08026044 -_08025FFE: - bl sub_8026A78 - b _08026044 -_08026004: - bl sub_8026A94 - b _08026044 -_0802600A: - bl sub_8026AB0 - b _08026044 -_08026010: - bl sub_8026B10 - b _08026044 -_08026016: - bl sub_8026B48 - b _08026044 -_0802601C: - bl sub_8026B64 - b _08026044 -_08026022: - bl sub_8026C14 - b _08026044 -_08026028: - bl sub_8026CF0 - b _08026044 -_0802602E: - bl sub_8026D0C - b _08026044 -_08026034: - bl sub_8026D6C - b _08026044 -_0802603A: - bl sub_8026D88 - b _08026044 -_08026040: - movs r0, 0x3 - b _08026046 -_08026044: - movs r0, 0 -_08026046: - pop {r1} - bx r1 - thumb_func_end sub_8025F68 - - thumb_func_start sub_802604C -sub_802604C: - ldr r0, _08026054 - ldr r0, [r0] - ldrb r0, [r0, 0x8] - bx lr - .align 2, 0 -_08026054: .4byte gUnknown_203B2B8 - thumb_func_end sub_802604C - - thumb_func_start sub_8026058 -sub_8026058: - push {r4,lr} - ldr r4, _08026070 - ldr r0, [r4] - cmp r0, 0 - beq _0802606A - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0802606A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08026070: .4byte gUnknown_203B2B8 - thumb_func_end sub_8026058 - - thumb_func_start sub_8026074 -sub_8026074: - push {lr} - ldr r1, _08026088 - ldr r1, [r1] - str r0, [r1] - bl sub_802608C - bl sub_80261D0 - pop {r0} - bx r0 - .align 2, 0 -_08026088: .4byte gUnknown_203B2B8 - thumb_func_end sub_8026074 - - thumb_func_start sub_802608C -sub_802608C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _080260B8 - ldr r0, [r4] - movs r5, 0x88 - lsls r5, 2 - adds r0, r5 - bl sub_8006518 - ldr r0, [r4] - ldr r0, [r0] - cmp r0, 0x1 - blt _08026178 - cmp r0, 0x2 - ble _080260BC - cmp r0, 0x14 - beq _0802614C - b _08026178 - .align 2, 0 -_080260B8: .4byte gUnknown_203B2B8 -_080260BC: - ldr r0, _0802613C - mov r12, r0 - ldr r1, _08026140 - mov r8, r1 - mov r9, r4 - mov r10, r5 - movs r3, 0 - movs r2, 0x3 -_080260CC: - mov r5, r9 - ldr r1, [r5] - adds r1, r3 - add r1, r10 - ldr r0, _08026144 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _080260CC - ldr r1, [r4] - movs r6, 0x88 - lsls r6, 2 - adds r1, r6 - mov r0, r12 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldr r1, [r4] - movs r0, 0x9A - lsls r0, 2 - adds r1, r0 - mov r0, r8 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - bl sub_80264CC - ldr r2, [r4] - movs r0, 0x94 - lsls r0, 2 - adds r2, r0 - ldr r1, _08026148 - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldr r1, [r4] - adds r0, r1, r0 - movs r6, 0xB6 - lsls r6, 1 - adds r1, r6 - bl sub_8012CAC - ldr r0, [r4] - movs r7, 0x97 - lsls r7, 2 - adds r0, r7 - movs r1, 0x9 - strh r1, [r0] - b _080261A2 - .align 2, 0 -_0802613C: .4byte gUnknown_80DD358 -_08026140: .4byte gUnknown_80DD370 -_08026144: .4byte gUnknown_80DD310 -_08026148: .4byte gUnknown_80DD328 -_0802614C: - bl sub_802678C - ldr r2, [r4] - movs r0, 0x94 - lsls r0, 2 - adds r2, r0 - ldr r1, _08026174 - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldr r1, [r4] - adds r0, r1, r0 - movs r6, 0xB6 - lsls r6, 1 - adds r1, r6 - bl sub_8012CAC - b _080261A2 - .align 2, 0 -_08026174: .4byte gUnknown_80DD340 -_08026178: - ldr r7, _080261C8 - mov r8, r7 - movs r0, 0x88 - lsls r0, 2 - mov r9, r0 - ldr r4, _080261CC - movs r3, 0 - movs r2, 0x3 -_08026188: - mov r5, r8 - ldr r1, [r5] - adds r1, r3 - add r1, r9 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _08026188 -_080261A2: - bl ResetUnusedInputStruct - ldr r0, _080261C8 - ldr r0, [r0] - movs r6, 0x88 - lsls r6, 2 - adds r0, r6 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080261C8: .4byte gUnknown_203B2B8 -_080261CC: .4byte gUnknown_80DD310 - thumb_func_end sub_802608C - - thumb_func_start sub_80261D0 -sub_80261D0: - push {r4,r5,lr} - sub sp, 0x18 - ldr r1, _080261EC - ldr r0, [r1] - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x19 - bls _080261E2 - b _080264BA -_080261E2: - lsls r0, 2 - ldr r1, _080261F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080261EC: .4byte gUnknown_203B2B8 -_080261F0: .4byte _080261F4 - .align 2, 0 -_080261F4: - .4byte _080264BA - .4byte _0802625C - .4byte _080262A8 - .4byte _080262EC - .4byte _080262FA - .4byte _080263F8 - .4byte _0802640C - .4byte _08026420 - .4byte _08026434 - .4byte _08026448 - .4byte _0802648A - .4byte _080264A8 - .4byte _08026392 - .4byte _080263AC - .4byte _08026306 - .4byte _08026464 - .4byte _08026474 - .4byte _08026484 - .4byte _08026310 - .4byte _0802631E - .4byte _08026326 - .4byte _08026350 - .4byte _08026362 - .4byte _08026388 - .4byte _080263E0 - .4byte _080264BA -_0802625C: - movs r0, 0x3 - bl sub_8026E08 - ldr r5, _080262A0 - ldr r1, [r5] - adds r1, 0x14 - movs r0, 0 - bl sub_8026DAC - ldr r4, _080262A4 - ldr r0, [r5] - ldr r1, [r0, 0x18] - adds r0, r4, 0 - movs r2, 0x7 - bl PrintColoredPokeNameToBuffer - adds r4, 0x50 - ldr r0, [r5] - ldr r1, [r0, 0x18] - adds r0, r4, 0 - movs r2, 0x6 - bl PrintColoredPokeNameToBuffer - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x7C - movs r3, 0xB6 - lsls r3, 1 - adds r1, r2, r3 - movs r4, 0x83 - lsls r4, 2 - adds r3, r2, r4 - ldr r2, [r2, 0x70] - b _0802633E - .align 2, 0 -_080262A0: .4byte gUnknown_203B2B8 -_080262A4: .4byte gAvailablePokemonNames -_080262A8: - movs r0, 0x3 - bl sub_8026E08 - ldr r5, _080262E4 - ldr r1, [r5] - adds r1, 0x14 - movs r0, 0 - bl sub_8026DAC - ldr r4, _080262E8 - ldr r0, [r5] - ldr r1, [r0, 0x18] - adds r0, r4, 0 - movs r2, 0x7 - bl PrintColoredPokeNameToBuffer - adds r4, 0x50 - ldr r0, [r5] - ldr r1, [r0, 0x18] - adds r0, r4, 0 - movs r2, 0x6 - bl PrintColoredPokeNameToBuffer - ldr r0, [r5] - adds r0, 0x7C - movs r1, 0x1 - bl sub_8012EA4 - b _080264BA - .align 2, 0 -_080262E4: .4byte gUnknown_203B2B8 -_080262E8: .4byte gAvailablePokemonNames -_080262EC: - ldr r0, [r4] - movs r1, 0xA - ldrsh r0, [r0, r1] - movs r1, 0x2 - bl sub_8024458 - b _080264BA -_080262FA: - ldr r0, [r4] - movs r3, 0xA - ldrsh r0, [r0, r3] - bl sub_801BEEC - b _080264BA -_08026306: - ldr r0, [r4] - ldr r0, [r0, 0x18] - bl sub_80227B8 - b _080264BA -_08026310: - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0xA - bl sub_801A5D8 - b _080264BA -_0802631E: - movs r0, 0x1 - bl sub_801A8D0 - b _080264BA -_08026326: - bl sub_801A9E0 - ldr r0, _0802634C - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xCC - movs r4, 0xB6 - lsls r4, 1 - adds r1, r2, r4 - adds r4, 0xA0 - adds r3, r2, r4 - ldr r2, [r2, 0x74] -_0802633E: - str r2, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - bl sub_8012D60 - b _080264BA - .align 2, 0 -_0802634C: .4byte gUnknown_203B2B8 -_08026350: - ldr r1, [r4] - adds r1, 0x10 - add r0, sp, 0x14 - bl HeldItemToSlot - add r0, sp, 0x14 - bl sub_801B3C0 - b _080264BA -_08026362: - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x28 - ldr r1, [r1, 0x18] - adds r1, 0x2C - bl unk_CopyMoves4To8 - ldr r2, [r4] - movs r0, 0xA - ldrsh r1, [r2, r0] - adds r2, 0x28 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x3 - movs r3, 0 - bl sub_801EE10 - b _080264BA -_08026388: - movs r0, 0x1 - movs r1, 0 - bl sub_801F1B0 - b _080264BA -_08026392: - bl sub_8026878 - ldr r0, _080263A4 - ldr r1, _080263A8 - ldr r3, [r1] - movs r1, 0xDE - lsls r1, 1 - adds r3, r1 - b _080263BC - .align 2, 0 -_080263A4: .4byte gUnknown_80DD388 -_080263A8: .4byte gUnknown_203B2B8 -_080263AC: - bl sub_8026878 - ldr r0, _080263D8 - ldr r1, _080263DC - ldr r3, [r1] - movs r4, 0xDE - lsls r4, 1 - adds r3, r4 -_080263BC: - movs r2, 0 - str r2, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - str r2, [sp, 0xC] - adds r1, 0xFD - str r1, [sp, 0x10] - movs r1, 0 - movs r2, 0x3 - bl sub_8014248 - b _080264BA - .align 2, 0 -_080263D8: .4byte gUnknown_80DD420 -_080263DC: .4byte gUnknown_203B2B8 -_080263E0: - ldr r2, [r4] - ldr r0, [r2, 0x20] - adds r1, r2, 0 - adds r1, 0x28 - adds r2, 0x68 - bl GetLinkedSequence - ldr r0, [r4] - adds r0, 0x68 - bl sub_801F808 - b _080264BA -_080263F8: - ldr r1, [r4] - movs r0, 0x19 - str r0, [r1, 0x4] - movs r0, 0xCF - bl PlaySound - ldr r0, _08026408 - b _08026492 - .align 2, 0 -_08026408: .4byte gUnknown_80DD4C4 -_0802640C: - ldr r1, [r4] - movs r0, 0x19 - str r0, [r1, 0x4] - movs r0, 0xCF - bl PlaySound - ldr r0, _0802641C - b _08026492 - .align 2, 0 -_0802641C: .4byte gUnknown_80DD4F4 -_08026420: - ldr r1, [r4] - movs r0, 0x19 - str r0, [r1, 0x4] - movs r0, 0xCC - bl PlaySound - ldr r0, _08026430 - b _08026492 - .align 2, 0 -_08026430: .4byte gUnknown_80DD534 -_08026434: - ldr r1, [r4] - movs r0, 0x9 - str r0, [r1, 0x4] - movs r0, 0xCA - bl PlaySound - ldr r0, _08026444 - b _08026492 - .align 2, 0 -_08026444: .4byte gUnknown_80DD564 -_08026448: - bl sub_8026FA4 - ldr r4, _08026460 - ldr r0, [r4] - ldr r0, [r0, 0x18] - bl sub_808D31C - ldr r1, [r4] - movs r0, 0x1 - strb r0, [r1, 0x8] - b _080264BA - .align 2, 0 -_08026460: .4byte gUnknown_203B2B8 -_08026464: - ldr r1, [r4] - movs r0, 0x2 - str r0, [r1, 0x4] - ldr r0, _08026470 - b _08026492 - .align 2, 0 -_08026470: .4byte gUnknown_80DD594 -_08026474: - ldr r1, [r4] - movs r0, 0x2 - str r0, [r1, 0x4] - ldr r0, _08026480 - b _08026492 - .align 2, 0 -_08026480: .4byte gUnknown_80DD5B8 -_08026484: - ldr r1, [r4] - movs r0, 0x2 - b _0802648E -_0802648A: - ldr r1, [r4] - movs r0, 0x19 -_0802648E: - str r0, [r1, 0x4] - ldr r0, _080264A0 -_08026492: - ldr r3, _080264A4 - movs r1, 0 - movs r2, 0 - bl sub_80141B4 - b _080264BA - .align 2, 0 -_080264A0: .4byte gUnknown_80DD60C -_080264A4: .4byte 0x00000101 -_080264A8: - ldr r1, [r4] - movs r0, 0x19 - str r0, [r1, 0x4] - ldr r0, _080264C4 - ldr r3, _080264C8 - movs r1, 0 - movs r2, 0 - bl sub_80141B4 -_080264BA: - add sp, 0x18 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080264C4: .4byte gUnknown_80DD63C -_080264C8: .4byte 0x00000101 - thumb_func_end sub_80261D0 - - thumb_func_start sub_80264CC -sub_80264CC: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r3, _08026574 - ldr r4, _08026578 - ldr r0, [r4] - movs r1, 0xA - ldrsh r2, [r0, r1] - movs r1, 0x58 - muls r2, r1 - ldr r1, [r3] - adds r1, r2 - mov r8, r1 - movs r2, 0x83 - lsls r2, 2 - adds r0, r2 - movs r1, 0 - movs r2, 0x14 - bl MemoryFill16 - ldr r1, [r4] - ldr r0, [r1, 0x18] - ldrb r0, [r0, 0x2] - strb r0, [r1, 0x1C] - ldr r1, [r4] - movs r3, 0xA - ldrsh r0, [r1, r3] - adds r1, 0x14 - bl PeekPokemonItem - mov r1, r8 - ldrh r0, [r1] - lsrs r0, 1 - movs r5, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08026584 - ldr r2, [r4] - movs r3, 0xB6 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, _0802657C - str r0, [r1] - movs r0, 0xB8 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0x7 - str r0, [r1] - mov r0, r8 - bl sub_8026E88 - lsls r0, 24 - cmp r0, 0 - bne _08026542 - ldr r0, [r4] - movs r1, 0x83 - lsls r1, 2 - adds r0, r1 - strh r5, [r0] -_08026542: - movs r6, 0x1 - movs r0, 0x8 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _080265B4 - mov r2, r8 - ldrb r0, [r2, 0x2] - cmp r0, 0 - bne _080265B4 - ldr r3, [r4] - movs r2, 0x8 - movs r4, 0xBA - lsls r4, 1 - adds r1, r3, r4 - ldr r0, _08026580 - str r0, [r1] - movs r1, 0xBC - lsls r1, 1 - adds r0, r3, r1 - str r2, [r0] - movs r6, 0x2 - b _080265B4 - .align 2, 0 -_08026574: .4byte gRecruitedPokemonRef -_08026578: .4byte gUnknown_203B2B8 -_0802657C: .4byte gPartyMenuStandBy -_08026580: .4byte gPartyMenuMakeLeader -_08026584: - ldr r2, [r4] - movs r3, 0xB6 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, _08026734 - str r0, [r1] - movs r0, 0xB8 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0x6 - str r0, [r1] - movs r1, 0xA - ldrsh r0, [r2, r1] - bl sub_808D750 - lsls r0, 24 - cmp r0, 0 - bne _080265B2 - ldr r0, [r4] - movs r2, 0x83 - lsls r2, 2 - adds r0, r2 - strh r5, [r0] -_080265B2: - movs r6, 0x1 -_080265B4: - ldr r4, _08026738 - ldr r2, [r4] - lsls r3, r6, 3 - movs r7, 0xB6 - lsls r7, 1 - adds r0, r2, r7 - adds r0, r3 - ldr r1, _0802673C - str r1, [r0] - movs r5, 0xB8 - lsls r5, 1 - adds r2, r5 - adds r2, r3 - movs r0, 0xA - str r0, [r2] - bl HasGummiItem - lsls r0, 24 - cmp r0, 0 - bne _080265EC - ldr r0, [r4] - lsls r1, r6, 1 - movs r3, 0x83 - lsls r3, 2 - adds r0, r3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] -_080265EC: - adds r6, 0x1 - ldr r2, [r4] - lsls r3, r6, 3 - adds r0, r2, r7 - adds r0, r3 - ldr r1, _08026740 - str r1, [r0] - adds r2, r5 - adds r2, r3 - movs r0, 0xB - str r0, [r2] - bl GetNumberOfFilledInventorySlots - cmp r0, 0 - bne _0802661A - ldr r0, [r4] - lsls r1, r6, 1 - movs r2, 0x83 - lsls r2, 2 - adds r0, r2 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] -_0802661A: - adds r6, 0x1 - ldr r2, [r4] - lsls r3, r6, 3 - adds r0, r2, r7 - adds r0, r3 - ldr r1, _08026744 - str r1, [r0] - adds r2, r5 - adds r2, r3 - movs r0, 0xC - str r0, [r2] - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - bgt _08026640 - ldr r0, [r4] - ldrb r0, [r0, 0x14] - cmp r0, 0 - bne _08026650 -_08026640: - ldr r0, [r4] - lsls r1, r6, 1 - movs r3, 0x83 - lsls r3, 2 - adds r0, r3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0] -_08026650: - adds r6, 0x1 - mov r4, r8 - ldrh r0, [r4] - lsrs r0, 1 - movs r5, 0x1 - ands r0, r5 - cmp r0, 0 - bne _0802669A - ldr r4, _08026738 - ldr r3, [r4] - lsls r2, r6, 3 - movs r1, 0xB6 - lsls r1, 1 - adds r0, r3, r1 - adds r0, r2 - ldr r1, _08026748 - str r1, [r0] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r3, r1 - adds r0, r2 - movs r1, 0x9 - str r1, [r0] - mov r0, r8 - bl sub_8026EB8 - lsls r0, 24 - cmp r0, 0 - bne _08026698 - ldr r0, [r4] - lsls r1, r6, 1 - movs r2, 0x83 - lsls r2, 2 - adds r0, r2 - adds r0, r1 - strh r5, [r0] -_08026698: - adds r6, 0x1 -_0802669A: - ldr r4, _08026738 - ldr r5, [r4] - lsls r1, r6, 3 - movs r0, 0xB6 - lsls r0, 1 - adds r3, r5, r0 - adds r2, r3, r1 - ldr r0, _0802674C - str r0, [r2] - movs r2, 0xB8 - lsls r2, 1 - adds r7, r5, r2 - adds r1, r7, r1 - movs r0, 0x4 - str r0, [r1] - adds r6, 0x1 - lsls r1, r6, 3 - adds r2, r3, r1 - ldr r0, _08026750 - str r0, [r2] - adds r1, r7, r1 - movs r0, 0xD - str r0, [r1] - adds r6, 0x1 - lsls r1, r6, 3 - adds r2, r3, r1 - ldr r0, _08026754 - str r0, [r2] - adds r1, r7, r1 - movs r0, 0x5 - str r0, [r1] - adds r6, 0x1 - lsls r1, r6, 3 - adds r3, r1 - movs r0, 0 - str r0, [r3] - adds r1, r7, r1 - movs r0, 0x1 - str r0, [r1] - movs r3, 0 - mov r12, r4 - cmp r3, r6 - bge _08026710 - adds r4, r7, 0 - movs r0, 0x83 - lsls r0, 2 - adds r2, r5, r0 -_080266F8: - ldrh r0, [r2] - cmp r0, 0 - bne _08026706 - ldr r1, [r4] - ldr r0, [r5, 0x70] - cmp r1, r0 - beq _08026780 -_08026706: - adds r4, 0x8 - adds r2, 0x2 - adds r3, 0x1 - cmp r3, r6 - blt _080266F8 -_08026710: - movs r3, 0 - cmp r3, r6 - bge _08026780 - mov r2, r12 - ldr r1, [r2] - movs r4, 0x83 - lsls r4, 2 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, 0 - bne _08026758 - movs r2, 0xB8 - lsls r2, 1 - adds r0, r1, r2 - ldr r0, [r0] - str r0, [r1, 0x70] - b _08026780 - .align 2, 0 -_08026734: .4byte gPartyMenuJoinTeam -_08026738: .4byte gUnknown_203B2B8 -_0802673C: .4byte gPartyMenuGiveGummi -_08026740: .4byte gPartyMenuGive -_08026744: .4byte gPartyMenuTake -_08026748: .4byte gPartyMenuSayFarewell -_0802674C: .4byte gPartyMenuSummary -_08026750: .4byte gPartyMenuMoves -_08026754: .4byte gPartyMenuCheckIQ -_08026758: - adds r3, 0x1 - cmp r3, r6 - bge _08026780 - mov r4, r12 - ldr r2, [r4] - lsls r0, r3, 1 - movs r4, 0x83 - lsls r4, 2 - adds r1, r2, r4 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08026758 - lsls r0, r3, 3 - movs r3, 0xB8 - lsls r3, 1 - adds r1, r2, r3 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x70] -_08026780: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80264CC - - thumb_func_start sub_802678C -sub_802678C: - push {r4-r7,lr} - ldr r5, _08026840 - ldr r0, [r5] - movs r7, 0x83 - lsls r7, 2 - adds r0, r7 - movs r1, 0 - movs r2, 0x14 - bl MemoryFill16 - ldr r2, [r5] - movs r0, 0xB6 - lsls r0, 1 - adds r1, r2, r0 - ldr r0, _08026844 - str r0, [r1] - movs r3, 0xB8 - lsls r3, 1 - adds r1, r2, r3 - movs r0, 0xB - str r0, [r1] - bl GetNumberOfFilledInventorySlots - cmp r0, 0 - bne _080267C8 - ldr r0, [r5] - adds r4, r7, 0 - adds r0, r4 - movs r1, 0x1 - strh r1, [r0] -_080267C8: - ldr r4, [r5] - movs r2, 0x1 - movs r0, 0xBA - lsls r0, 1 - adds r1, r4, r0 - ldr r0, _08026848 - ldr r0, [r0] - str r0, [r1] - movs r3, 0xBC - lsls r3, 1 - adds r1, r4, r3 - movs r0, 0x4 - str r0, [r1] - movs r6, 0x2 - movs r0, 0xBE - lsls r0, 1 - adds r1, r4, r0 - movs r0, 0 - str r0, [r1] - movs r1, 0xC0 - lsls r1, 1 - adds r0, r4, r1 - str r2, [r0] - movs r3, 0 - mov r12, r4 - movs r4, 0xB8 - lsls r4, 1 - add r4, r12 - mov r0, r12 - adds r2, r0, r7 -_08026804: - ldrh r0, [r2] - cmp r0, 0 - bne _08026814 - ldr r1, [r4] - mov r7, r12 - ldr r0, [r7, 0x74] - cmp r1, r0 - beq _08026872 -_08026814: - adds r4, 0x8 - adds r2, 0x2 - adds r3, 0x1 - cmp r3, r6 - blt _08026804 - movs r3, 0 - cmp r3, r6 - bge _08026872 - ldr r1, [r5] - movs r2, 0x83 - lsls r2, 2 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _0802684C - movs r3, 0xB8 - lsls r3, 1 - adds r0, r1, r3 - ldr r0, [r0] - str r0, [r1, 0x74] - b _08026872 - .align 2, 0 -_08026840: .4byte gUnknown_203B2B8 -_08026844: .4byte gPartyMenuGive -_08026848: .4byte gUnknown_80D4970 -_0802684C: - adds r3, 0x1 - cmp r3, r6 - bge _08026872 - ldr r2, [r5] - lsls r0, r3, 1 - movs r4, 0x83 - lsls r4, 2 - adds r1, r2, r4 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _0802684C - lsls r0, r3, 3 - movs r7, 0xB8 - lsls r7, 1 - adds r1, r2, r7 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x74] -_08026872: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802678C - - thumb_func_start sub_8026878 -sub_8026878: - ldr r0, _080268C0 - ldr r0, [r0] - mov r12, r0 - movs r3, 0 - movs r1, 0xDE - lsls r1, 1 - add r1, r12 - ldr r0, _080268C4 - ldr r0, [r0] - str r0, [r1] - movs r1, 0xE0 - lsls r1, 1 - add r1, r12 - movs r0, 0x2 - str r0, [r1] - movs r2, 0x1 - movs r1, 0xE2 - lsls r1, 1 - add r1, r12 - ldr r0, _080268C8 - ldr r0, [r0] - str r0, [r1] - movs r1, 0xE4 - lsls r1, 1 - add r1, r12 - movs r0, 0x3 - str r0, [r1] - movs r0, 0xE6 - lsls r0, 1 - add r0, r12 - str r3, [r0] - movs r0, 0xE8 - lsls r0, 1 - add r0, r12 - str r2, [r0] - bx lr - .align 2, 0 -_080268C0: .4byte gUnknown_203B2B8 -_080268C4: .4byte gUnknown_80D4920 -_080268C8: .4byte gUnknown_80D4928 - thumb_func_end sub_8026878 - .align 2,0 diff --git a/data/data_80D47B8.s b/data/data_80D47B8.s index 800485966..0af023088 100644 --- a/data/data_80D47B8.s +++ b/data/data_80D47B8.s @@ -4614,6 +4614,3 @@ gUnknown_80DCA2C: @ 80DCA2C #include "text/luminous_cave.inc" - #include "friend_area.inc" - - #include "text/party_menu.inc" diff --git a/data/friend_area.inc b/data/friend_area.inc deleted file mode 100644 index 6464510b1..000000000 --- a/data/friend_area.inc +++ /dev/null @@ -1,176 +0,0 @@ - .global gUnknown_80DD148 -gUnknown_80DD148: @ 80DD148 (default friend area warp script) - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DD160 -gUnknown_80DD160: @ 80DD160 (Another friend area warp script) - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x13, 0x00, 0x04, 0x00 - .byte 0x08, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DD178 -gUnknown_80DD178: @ 80DD178 (Another friend area warp script) - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x04, 0x00 - .byte 0x06, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DD190 -gUnknown_80DD190: @ 80DD190 (seems to be Friend Area Warp Script) - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x11, 0x00 - .byte 0x1A, 0x00, 0x02, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DD1A8 -gUnknown_80DD1A8: @ 80DD1A8 - .string "Whom would you like to visit?\0" - .align 2,0 - - .global gUnknown_80DD1C8 -gUnknown_80DD1C8: @ 80DD1C8 - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}handed over. \0" - .align 2,0 - - .global gUnknown_80DD1EC -gUnknown_80DD1EC: @ 80DD1EC - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}handed over.{EXTRA_MSG}" - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}returned to the Toolbox.\0" - .align 2,0 - - .global gUnknown_80DD240 -gUnknown_80DD240: @ 80DD240 - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}returned to the Toolbox.\0" - .align 2,0 - - .global gUnknown_80DD270 -gUnknown_80DD270: @ 80DD270 - .string "{CENTER_ALIGN}{ARG_POKEMON_1} left the team to remain\n" - .string "{CENTER_ALIGN}on standby in the Friend Area.\0" - .align 2,0 - - .global gUnknown_80DD2B0 -gUnknown_80DD2B0: @ 80DD2B0 - .string "Give\0" - .align 2,0 - - .global gUnknown_80DD2B8 -gUnknown_80DD2B8: @ 80DD2B8 - .string "Take\0" - .align 2,0 - - .global gUnknown_80DD2C0 -gUnknown_80DD2C0: @ 80DD2C0 - .string "Stand By\0" - .align 2,0 - - .global gUnknown_80DD2CC -gUnknown_80DD2CC: @ 80DD2CC - .string "Visit\0" - .align 2,0 - - .global gUnknown_80DD2D4 -gUnknown_80DD2D4: @ 80DD2D4 - .string "Name\0" - .align 2,0 - - .global gUnknown_80DD2DC -gUnknown_80DD2DC: @ 80DD2DC - .string "Summary\0" - .align 2,0 - - .global gUnknown_80DD2E4 -gUnknown_80DD2E4: @ 80DD2E4 - .string "Moves\0" - .align 2,0 - - .global gUnknown_80DD2EC -gUnknown_80DD2EC: @ 80DD2EC - .string "Check IQ\0" - .align 2,0 - - .global gUnknown_80DD2F8 -gUnknown_80DD2F8: @ 80DD2F8 - .string "Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} \0" - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_80DD310 -gUnknown_80DD310: @ 80DD310 (default friend area script) - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DD328 -gUnknown_80DD328: @ 80DD328 (another friend area warp script) - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x13, 0x00, 0x03, 0x00 - .byte 0x08, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DD340 -gUnknown_80DD340: @ 80DD340 - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x04, 0x00 - .byte 0x06, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DD358 -gUnknown_80DD358: @ 80DD358 - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x11, 0x00 - .byte 0x1A, 0x00, 0x02, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80DD370 -gUnknown_80DD370: @ 80DD370 - .byte 0x00, 0x00, 0x00, 0x00 - - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x03, 0x00 - .byte 0x0F, 0x00, 0x02, 0x00 - .byte 0x02, 0x00, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00 diff --git a/data/text/party_menu.inc b/data/text/party_menu.inc deleted file mode 100644 index 1afaaae72..000000000 --- a/data/text/party_menu.inc +++ /dev/null @@ -1,109 +0,0 @@ -gUnknown_80DD388:: @ 80DD388 - .string "You have chosen to say farewell\n" - .string "to this Pokémon.{EXTRA_MSG}" - .string "The Pokémon will leave its Friend Area.\n" - .string "It will no longer be available for\n" - .string "adventures. Is that OK?\0" - .align 2, 0 - -gUnknown_80DD420:: @ 80DD420 - .string "If you say farewell to this\n" - .string "Pokémon{COMMA} it will be gone forever.{EXTRA_MSG}" - .string "You will never be able to get another one\n" - .string "like it to join your team.\n" - .string "Will you release it anyway?\0" - .align 2, 0 - -gUnknown_80DD4C4:: @ 80DD4C4 - .string "{CENTER_ALIGN}{ARG_POKEMON_1} joined the\n" - .string "{CENTER_ALIGN}rescue team for adventures!\0" - .align 2, 0 - -gUnknown_80DD4F4:: @ 80DD4F4 - .string "{CENTER_ALIGN}{ARG_POKEMON_1} left the team to remain\n" - .string "{CENTER_ALIGN}on standby in the Friend Area.\0" - .align 2, 0 - -gUnknown_80DD534:: @ 80DD534 - .string "{CENTER_ALIGN}{ARG_POKEMON_1} became the leader\n" - .string "{CENTER_ALIGN}of the rescue team.\0" - .align 2, 0 - -gUnknown_80DD564:: @ 80DD564 - .string "{CENTER_ALIGN}{ARG_POKEMON_1} left\n" - .string "{CENTER_ALIGN}the Friend Area.\n" - .string "{CENTER_ALIGN}Bye-bye{COMMA} {ARG_POKEMON_1}!\0" - .align 2,0 - -gUnknown_80DD594:: @ 80DD594 - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}handed over. \0" - .align 2, 0 - -gUnknown_80DD5B8:: @ 80DD5B8 - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}handed over.{EXTRA_MSG}" - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}returned to the Toolbox.\0" - .align 2, 0 - -gUnknown_80DD60C:: @ 80DD60C - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}returned to the Toolbox.\0" - .align 2, 0 - -gUnknown_80DD63C:: @ 80DD63C - .string "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" - .string "{CENTER_ALIGN}sent to storage.\0" - .align 2, 0 - -gPartyMenuStandBy:: @ 80DD664 - .string "Stand By\0" - .align 2, 0 - -gPartyMenuMakeLeader:: @ 80DD670 - .string "Make Leader\0" - .align 2,0 - -gPartyMenuJoinTeam:: @ 80DD67C - .string "Join Team\0" - .align 2, 0 - -gPartyMenuGiveGummi:: @ 80DD688 - .string "Give Gummi\0" - .align 2, 0 - -gPartyMenuGive:: @ 80DD694 - .string "Give\0" - .align 2, 0 - -gPartyMenuTake:: @ 80DD69C - .string "Take\0" - .align 2, 0 - -gPartyMenuSayFarewell:: @ 80DD6A4 - .string "Say Farewell\0" - .align 2, 0 - -gPartyMenuSummary:: @ 80DD6B4 - .string "Summary\0" - .align 2, 0 - -gPartyMenuMoves:: @ 80DD6BC - .string "Moves\0" - .align 2, 0 - -gPartyMenuCheckIQ:: @ 80DD6C4 - .string "Check IQ\0" - .align 2, 0 - -gPartyMenuItemPlaceholder:: @ 80DD6D0 - .string "Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} \0" - .align 2, 0 - -gUnknown_80DD6E0:: @ 80DD6E0 - .string "%s\0" - .align 2, 0 - - .string "pksdir0\0" - .align 2, 0 diff --git a/include/moves.h b/include/moves.h index ddd4e4c5f..da602015f 100644 --- a/include/moves.h +++ b/include/moves.h @@ -31,6 +31,10 @@ bool8 FailsWhileMuzzled(u16 moveID); bool8 IsSoundMove(struct Move *move); bool8 DoesMoveCharge(u16 move); +int GetLinkedSequence(int index, struct Move* moves, u16* sequenceMoveIDs); +void unk_CopyMoves4To8(struct Move* destMoves, struct Move* srcMoves); +void sub_8094060(struct Move* srcMoves, struct Move* destMoves); + void unk_FixLinkedMovesSetEnabled8_v2(struct Move* move); void sub_8092D54(u8 *buffer, struct Move *move); diff --git a/include/pokemon.h b/include/pokemon.h index 3da0e2439..5385c9b77 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -30,7 +30,7 @@ struct PokemonStruct { // size: 0x58 /* 0x0 */ u16 unk0; // recruited?? - /* 0x1 */ bool8 isTeamLeader; + /* 0x2 */ bool8 isTeamLeader; /* 0x3 */ u8 unkHasNextStage; // set to a random value? /* 0x4 */ struct DungeonLocation dungeonLocation; /* 0x8 */ s16 speciesNum; // species # diff --git a/ld_script.txt b/ld_script.txt index 4c667feb0..1b0c61049 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -122,9 +122,8 @@ SECTIONS { asm/code_801EE10_1.o(.text); src/code_801EE10_1.o(.text); src/luminous_cave.o(.text); - src/friend_list_menu_1.o(.text); - asm/friend_list_menu.o(.text); src/friend_list_menu.o(.text); + src/party_list_menu.o(.text); src/friend_area_action_menu.o(.text); asm/friend_area_action_menu.o(.text); src/friend_area_action_menu_1.o(.text); @@ -415,6 +414,8 @@ SECTIONS { src/save.o(.rodata); src/menu_input.o(.rodata); data/data_80D47B8.o(.rodata); + src/friend_list_menu.o(.rodata); + src/party_list_menu.o(.rodata); src/friend_area_action_menu.o(.rodata); src/friend_area_action_menu_1.o(.rodata); src/wonder_mail.o(.rodata); diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 557157982..b8ade7ed0 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -1,181 +1,592 @@ #include "global.h" -#include "constants/dungeon.h" -#include "item.h" -#include "menu.h" -#include "pokemon.h" +#include "memory.h" #include "text.h" -#include "team_inventory.h" -#include "constants/move.h" -#include "code_800D090.h" +#include "input.h" +#include "menu.h" +#include "item.h" +#include "pokemon.h" +#include "moves.h" #include "menu_input.h" +#include "team_inventory.h" -struct unkStruct_203B2B8 + +// there might be more overlap with unkStruct_203B2BC +// I was working on the moves and put the data that seemed to correspond to that +// into a separate struct +struct unkStruct_203B2B4 { - // size: 0x280 - u32 state; + // size: 0x178 + s32 unk0; + s32 state; u32 fallbackState; - u8 unk8; - /* 0xA */ s16 pokeSpecies; - u32 id; - /* 0x10 */ struct BulkItem item1; - /* 0x14 */ struct BulkItem item2; - struct PokemonStruct *unk18; - bool8 isTeamLeader; - u32 moveIndex; - /* 0x24 */ u16 moveID; + u8 unkC; + u8 unkD; + s16 species; + u32 itemIndex; + struct BulkItem item1; + struct BulkItem item2; + /* 0x1C */ struct PokemonStruct *pokeStruct; + u32 moveIndex; // some sort of move index + u16 moveID; struct Move moves[8]; u16 moveIDs[4]; // some list of move IDs u32 menuAction1; - u32 menuAction2; - u32 unk78; - struct MenuStruct unk7C; - struct MenuStruct unkCC; + s32 menuAction2; + struct MenuStruct unk78; + struct MenuItem unkC8[8]; + u16 unk108[8]; + struct UnkTextStruct2 unk118[4]; }; -extern struct unkStruct_203B2B8 *gUnknown_203B2B8; -extern u8 gAvailablePokemonNames[0x58]; -extern u8 gUnknown_202DEA8[0x58]; -extern u8 gUnknown_202DE58[0x58]; -extern u8 gUnknown_80DD6E0[]; -extern u8 gPartyMenuItemPlaceholder[]; -extern struct UnkTextStruct2 gUnknown_80DD370; +extern struct unkStruct_203B2B4 *gUnknown_203B2B4; -extern u32 sub_8026F04(struct PokemonStruct *); -extern void sub_8026074(u32); -extern void PlaySound(u32); -bool8 CanTakePokemonHeldItem(struct PokemonStruct *r0); -extern bool8 sub_80023E4(u8); -extern struct PokemonStruct *sub_808D3F8(void); -extern struct PokemonStruct *sub_808D3BC(void); -extern void sub_801F214(void); -extern u32 sub_801F194(void); -extern u32 sub_801EF38(u32); +const struct UnkTextStruct2 gUnknown_80DD148 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL +}; +const struct UnkTextStruct2 gUnknown_80DD160 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x13, 0x00, 0x04, 0x00, + 0x08, 0x03, + 0x03, 0x00, + NULL +}; + +const struct UnkTextStruct2 gUnknown_80DD178 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x14, 0x00, 0x04, 0x00, + 0x06, 0x03, + 0x03, 0x00, + NULL +}; + +const struct UnkTextStruct2 gUnknown_80DD190 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x02, 0x00, 0x11, 0x00, + 0x1A, 0x02, + 0x02, 0x00, + NULL +}; + +extern u8 gAvailablePokemonNames[]; +extern u8 gUnknown_202DEA8[]; +extern u8 *gUnknown_80D4970[]; +extern u8 gUnknown_202DE58[]; + +ALIGNED(4) const u8 gUnknown_80DD1A8[] = "Whom would you like to visit?"; + +ALIGNED(4) const u8 gUnknown_80DD1C8[] = _( + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}handed over. "); + +ALIGNED(4) const u8 gUnknown_80DD1EC[] = _( + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}handed over.{EXTRA_MSG}" + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}returned to the Toolbox."); + +ALIGNED(4) const u8 gUnknown_80DD240[] = _( + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}returned to the Toolbox."); + +ALIGNED(4) const u8 gUnknown_80DD270[] = _( + "{CENTER_ALIGN}{ARG_POKEMON_1} left the team to remain\n" + "{CENTER_ALIGN}on standby in the Friend Area."); + +ALIGNED(4) const u8 gUnknown_80DD2B0[] = "Give"; +ALIGNED(4) const u8 gUnknown_80DD2B8[] = "Take"; +ALIGNED(4) const u8 gUnknown_80DD2C0[] = "Stand By"; +ALIGNED(4) const u8 gUnknown_80DD2CC[] = "Visit"; +ALIGNED(4) const u8 gUnknown_80DD2D4[] = "Name"; +ALIGNED(4) const u8 gUnknown_80DD2DC[] = "Summary"; +ALIGNED(4) const u8 gUnknown_80DD2E4[] = "Moves"; +ALIGNED(4) const u8 gUnknown_80DD2EC[] = "Check IQ"; +ALIGNED(4) const u8 gUnknown_80DD2F8[] = _("Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} "); +ALIGNED(4) static const u8 fill0[] = "pksdir0"; extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); -extern void sub_80922B4(u8 *, const u8 *, u32); -extern void sub_808D930(u8 *, s16); -extern s32 sub_8008ED0(u8 *); -extern void xxx_call_draw_string(s32 x, s32 y, u8 *, u32, u32); -extern void xxx_format_and_draw(s32, s32, u8 *, ...); -extern s32 sub_80144A4(s32 *); - -extern u32 sub_801F890(void); -extern void sub_801F8D0(void); -extern u32 sub_801B410(void); -extern void sub_801B450(void); - +extern void xxx_format_and_draw(s32, s32, const u8 *, ...); +bool8 sub_8025EC4(struct PokemonStruct *); +extern u32 sub_8023A94(u32); +extern s16 sub_8023B44(void); +extern void sub_8023C60(void); +extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); +extern s16 sub_80A5728(void); +extern u8 sub_8002658(s16); +extern bool8 sub_8024108(u32); +extern void sub_8025434(s32); +extern void sub_80259F0(void); +extern void sub_8025A84(void); +extern void sub_8025BCC(void); +extern void sub_8025BE8(void); +extern void sub_8025C04(void); +extern void sub_8025CB4(void); +extern void sub_8025D90(void); +extern void sub_8025DAC(void); +extern void sub_8025E08(void); +extern void sub_8025E24(void); +extern void sub_8025E44(void); +extern void sub_802544C(void); +extern void sub_8025518(void); +extern void sub_8025728(void); +extern void sub_802591C(void); +extern u32 sub_801B3C0(struct Item *param_1); +extern void sub_8023868(u32, u32, u32, u32); +extern void sub_801F1B0(u32, u32); +extern void sub_801A5D8(u32,u32, u32, u32); +extern void sub_801A8D0(u32); +extern void sub_801A9E0(void); +extern void PlaySound(u32); +extern void sub_8024458(s16, u32); +extern void sub_801BEEC(s16); +extern void sub_8023B7C(u32); +extern void sub_8023DA4(void); extern void nullsub_104(void); -extern void sub_801A928(void); -extern void sub_8099690(u32); -extern u32 sub_801A6E8(u32); - -extern u32 sub_801A8AC(void); -extern u32 sub_8022860(void); -extern void sub_8022908(void); - -extern void sub_801BF98(void); -extern u32 sub_801BF48(void); -extern void sub_802453C(void); -extern u32 sub_80244E4(void); -extern bool8 sub_808D750(s16 index_); extern void sub_808ED00(void); -extern struct PokemonStruct *GetPlayerPokemonStruct(void); +extern u32 sub_80244E4(void); +extern void sub_802453C(void); +extern u32 sub_801BF48(void); +extern void sub_801BF98(void); +extern void sub_801B450(void); +extern u32 sub_801B410(void); -void sub_80268CC(void) +extern u32 sub_801EF38(u32); +extern u32 sub_801F194(void); +extern void sub_801F214(void); +extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32); +extern void sub_801F808(u16 *); +u32 sub_801602C(u32 r0, u8 *name); +void sub_8025E68(u32 , struct BulkItem *); +extern u32 sub_801A6E8(u32); +extern u32 sub_801A8AC(void); +extern void sub_8099690(u32); +extern void sub_801A928(void); +extern void sub_801F8D0(void); +extern u32 sub_801F890(void); +extern void sub_80160D8(void); +extern u32 sub_8016080(void); +extern s32 sub_80144A4(s32 *); +extern bool8 sub_80023E4(u32); + +bool8 sub_80252F0(s32 param_1) { - struct PokemonStruct *playerPokemon; - struct PokemonStruct *pokeStruct; - struct PokemonStruct *pokeStruct2; - s32 choice; - choice = 0; - if ((sub_8012FD8(&gUnknown_203B2B8->unk7C) == 0) && (sub_8013114(&gUnknown_203B2B8->unk7C,&choice), choice != 1)) { - gUnknown_203B2B8->menuAction1 = choice; + if ((param_1 == 2) && (sub_8024108(4) != '\0')) { + return FALSE; } - switch(choice) { - case 6: - if (sub_808D750(gUnknown_203B2B8->pokeSpecies)) { - -#ifdef NONMATCHING - pokeStruct = &gUnknown_203B2B8->pokeSpecies[gRecruitedPokemonRef->pokemon]; -#else - register size_t offset asm("r1") = offsetof(struct unkStruct_203B45C, pokemon[gUnknown_203B2B8->pokeSpecies]); - struct PokemonStruct* p = gRecruitedPokemonRef->pokemon; - size_t addr = offset + (size_t)p; - pokeStruct = (struct PokemonStruct*)addr; -#endif - - pokeStruct->unk0 |= 2; - nullsub_104(); - } - sub_808ED00(); - sub_8026074(5); - break; - case 7: - gUnknown_203B2B8->unk18->unk0 &= 0xfffd; - nullsub_104(); - sub_808ED00(); - sub_8026074(6); - break; - case 8: - pokeStruct2 = &gRecruitedPokemonRef->pokemon[gUnknown_203B2B8->pokeSpecies]; - playerPokemon = GetPlayerPokemonStruct(); - - if (!pokeStruct2->isTeamLeader) { - playerPokemon->isTeamLeader = FALSE; - pokeStruct2->isTeamLeader = TRUE; - nullsub_104(); - } - sub_808ED00(); - sub_8026074(7); - break; - case 9: - sub_8026074(0xc); - break; - case 0xd: - sub_8026074(0x16); - break; - case 10: - sub_8026074(0xe); - break; - case 0xb: - sub_8026074(0x12); - break; - case 0xc: - PlaySound(0x14d); - if (gUnknown_203B2B8->item2.id != ITEM_NOTHING) { - AddHeldItemToInventory(&gUnknown_203B2B8->item2); - } - FillInventoryGaps(); - gUnknown_203B2B8->item2.id = ITEM_NOTHING; - gUnknown_203B2B8->item2.quantity = 0; - GivePokemonItem(gUnknown_203B2B8->pokeSpecies,&gUnknown_203B2B8->item2); - nullsub_104(); - sub_8026074(0x11); - break; - case 4: - sub_8026074(3); - break; - case 5: - sub_8026074(4); - break; - case 1: - sub_8026074(0x19); - break; - + else { + gUnknown_203B2B4 = MemoryAlloc(sizeof(struct unkStruct_203B2B4),8); + gUnknown_203B2B4->menuAction1 = 0; + gUnknown_203B2B4->unk0 = param_1; + gUnknown_203B2B4->unkC = sub_8002658(sub_80A5728()); + gUnknown_203B2B4->unkD = 0; + if (gUnknown_203B2B4->unk0 == 2) { + sub_8025434(0); + } + else { + sub_8025434(1); + } + return TRUE; } } -void sub_8026A78(void) +u32 sub_8025354(void) +{ + switch(gUnknown_203B2B4->state) { + case 0x13: + return 3; + case 1: + case 2: + sub_80259F0(); + break; + case 3: + sub_8025A84(); + break; + case 4: + sub_8025BCC(); + break; + case 5: + sub_8025BE8(); + break; + case 0xb: + case 0xc: + sub_8025C04(); + break; + case 0xd: + sub_8025CB4(); + break; + case 0xe: + sub_8025D90(); + break; + case 0xf: + case 0x10: + sub_8025DAC(); + break; + case 0x11: + sub_8025E08(); + break; + case 0x12: + sub_8025E24(); + break; + default: + sub_8025E44(); + break; + } + return 0; +} + +u8 sub_802540C(void) +{ + return gUnknown_203B2B4->unkD; +} + +void sub_8025418(void) +{ + if(gUnknown_203B2B4 != NULL) + { + MemoryFree(gUnknown_203B2B4); + gUnknown_203B2B4 = NULL; + } +} + +void sub_8025434(s32 newState) +{ + gUnknown_203B2B4->state = newState; + sub_802544C(); + sub_8025518(); +} + +void sub_802544C(void) +{ + s32 index; + + sub_8006518(gUnknown_203B2B4->unk118); + + switch(gUnknown_203B2B4->state) + { + case 3: + if (gUnknown_203B2B4->unk0 == 0) { + gUnknown_203B2B4->unk118[3] = gUnknown_80DD190; + } + sub_8025728(); + gUnknown_203B2B4->unk118[2] = gUnknown_80DD160; + sub_8012CAC(&gUnknown_203B2B4->unk118[2],gUnknown_203B2B4->unkC8); + break; + case 0xD: + sub_802591C(); + gUnknown_203B2B4->unk118[2] = gUnknown_80DD178; + sub_8012CAC(&gUnknown_203B2B4->unk118[2],gUnknown_203B2B4->unkC8); + break; + default: + for(index = 0; index < 4; index++) + { + gUnknown_203B2B4->unk118[index] = gUnknown_80DD148; + } + break; + + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2B4->unk118,1,1); +} + +void sub_8025518(void) +{ + u32 uVar3; + struct Item item; + + switch(gUnknown_203B2B4->state) + { + case 0: + gUnknown_203B2B4->fallbackState = 1; + sub_80141B4(gUnknown_80DD1A8,0,0,0x301); + break; + case 1: + uVar3 = 4; + if (gUnknown_203B2B4->unk0 == 0) { + uVar3 = 2; + } + sub_8023868(uVar3,0,0,10); + break; + case 2: + sub_8023B7C(1); + break; + case 3: + if (gUnknown_203B2B4->unk0 == 0) { + sub_8025E68(3,&gUnknown_203B2B4->item2); + } + sub_8023DA4(); + PrintColoredPokeNameToBuffer(gAvailablePokemonNames,gUnknown_203B2B4->pokeStruct,7); + PrintColoredPokeNameToBuffer(gAvailablePokemonNames + 0x50,gUnknown_203B2B4->pokeStruct,6); + sub_8012D60(&gUnknown_203B2B4->unk78,gUnknown_203B2B4->unkC8,0,gUnknown_203B2B4->unk108,gUnknown_203B2B4->menuAction1,2); + break; + case 4: + sub_8024458(gUnknown_203B2B4->species,2); + break; + case 5: + sub_801BEEC(gUnknown_203B2B4->species); + break; + case 0xb: + sub_801A5D8(1,0,0,10); + break; + case 0xc: + sub_801A8D0(1); + break; + case 0xd: + sub_801A9E0(); + sub_8012D60(&gUnknown_203B2B4->unk78,gUnknown_203B2B4->unkC8,0,gUnknown_203B2B4->unk108,gUnknown_203B2B4->menuAction2,2); + break; + case 0xe: + HeldItemToSlot(&item, &gUnknown_203B2B4->item1); + sub_801B3C0(&item); + break; + case 8: + gUnknown_203B2B4->fallbackState = 2; + sub_80141B4(gUnknown_80DD1C8,0,0,0x101); + break; + case 9: + gUnknown_203B2B4->fallbackState = 2; + sub_80141B4(gUnknown_80DD1EC,0,0,0x101); + break; + case 10: + gUnknown_203B2B4->fallbackState = 2; + sub_80141B4(gUnknown_80DD240,0,0,0x101); + break; + case 7: + gUnknown_203B2B4->fallbackState = 1; + PlaySound(0xcf); + sub_80141B4(gUnknown_80DD270,0,0,0x101); + break; + case 0xf: + unk_CopyMoves4To8(gUnknown_203B2B4->moves,gUnknown_203B2B4->pokeStruct->moves); + sub_801EE10(3,gUnknown_203B2B4->species,gUnknown_203B2B4->moves,0,0,0); + break; + case 0x10: + sub_801F1B0(1,0); + break; + case 0x11: + GetLinkedSequence(gUnknown_203B2B4->moveIndex,gUnknown_203B2B4->moves, gUnknown_203B2B4->moveIDs); + sub_801F808(gUnknown_203B2B4->moveIDs); + break; + case 0x12: + sub_801602C(2,gUnknown_203B2B4->pokeStruct->name); + break; + case 0x13: + break; + } +} + +void sub_8025728(void) +{ + int index; + struct PokemonStruct *pokeStruct; + s32 loopMax = 0; + + pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2B4->species]; + MemoryFill16(gUnknown_203B2B4->unk108,0,sizeof(gUnknown_203B2B4->unk108)); + if (gUnknown_203B2B4->unk0 == 0) { + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2B0; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 10; + if (GetNumberOfFilledInventorySlots() == 0) { + gUnknown_203B2B4->unk108[loopMax] = 1; + } + loopMax += 1; + + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2B8; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 0xb; + if ((INVENTORY_SIZE <= GetNumberOfFilledInventorySlots()) || (gUnknown_203B2B4->item2.id == ITEM_NOTHING)) { + gUnknown_203B2B4->unk108[loopMax] = 1; + } + loopMax += 1; + + if (sub_8025EC4(pokeStruct)) { + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2C0; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 9; + loopMax += 1; + } + } + else { + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2CC; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 7; + if (gUnknown_203B2B4->unkC == GetFriendArea(gUnknown_203B2B4->pokeStruct->speciesNum)) { + gUnknown_203B2B4->unk108[loopMax] = 1; + } + loopMax += 1; + } + if ((pokeStruct->speciesNum == 0x13d) && + (IsPokemonRenamed(pokeStruct))) { + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2D4; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 8; + loopMax += 1; + } + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2DC; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2E4; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 6; + loopMax += 1; + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2EC; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B2B4->unkC8[loopMax].text = NULL; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2B4->unk108[index] == 0) + { + if (gUnknown_203B2B4->unkC8[index].menuAction == gUnknown_203B2B4->menuAction1) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2B4->unk108[index] == 0) + { + gUnknown_203B2B4->menuAction1 = gUnknown_203B2B4->unkC8[index].menuAction; + break; + } + } +} + +void sub_802591C(void) +{ + int index; + s32 loopMax = 0; + + + MemoryFill16(gUnknown_203B2B4->unk108,0, sizeof(gUnknown_203B2B4->unk108)); + + gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2B0; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 10; + if (GetNumberOfFilledInventorySlots() == 0) { + gUnknown_203B2B4->unk108[loopMax] = 1; + } + loopMax += 1; + gUnknown_203B2B4->unkC8[loopMax].text = *gUnknown_80D4970; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2B4->unkC8[loopMax].text = NULL; + gUnknown_203B2B4->unkC8[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2B4->unk108[index] == 0) + { + if (gUnknown_203B2B4->unkC8[index].menuAction == gUnknown_203B2B4->menuAction2) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2B4->unk108[index] == 0) + { + gUnknown_203B2B4->menuAction2 = gUnknown_203B2B4->unkC8[index].menuAction; + break; + } + } +} + +void sub_80259F0(void) +{ + switch(sub_8023A94(1)) + { + case 3: + gUnknown_203B2B4->species = sub_8023B44(); + gUnknown_203B2B4->pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2B4->species]; + PeekPokemonItem(gUnknown_203B2B4->species, &gUnknown_203B2B4->item2); + sub_8025434(3); + break; + case 4: + gUnknown_203B2B4->species = sub_8023B44(); + gUnknown_203B2B4->pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2B4->species]; + PeekPokemonItem(gUnknown_203B2B4->species, &gUnknown_203B2B4->item2); + sub_8025434(4); + break; + case 2: + sub_8023C60(); + sub_8025434(0x13); + break; + } +} + +void sub_8025A84(void) +{ + s32 menuAction = 0; + + sub_8023A94(0); + if(!sub_8012FD8(&gUnknown_203B2B4->unk78)) + { + sub_8013114(&gUnknown_203B2B4->unk78, &menuAction); + if(menuAction != 1) gUnknown_203B2B4->menuAction1 = menuAction; + } + switch(menuAction) + { + case 7: + gUnknown_203B2B4->unkD = GetFriendArea(gUnknown_203B2B4->pokeStruct->speciesNum); + sub_8023C60(); + sub_8025434(0x13); + break; + case 10: + sub_8025434(0xB); + break; + case 11: + PlaySound(0x14d); + if(gUnknown_203B2B4->item2.id != ITEM_NOTHING) + { + AddHeldItemToInventory(&gUnknown_203B2B4->item2); + } + FillInventoryGaps(); + gUnknown_203B2B4->item2.id = ITEM_NOTHING; + gUnknown_203B2B4->item2.quantity = 0; + GivePokemonItem(gUnknown_203B2B4->species, &gUnknown_203B2B4->item2); + nullsub_104(); + sub_8025434(0xA); + break; + case 9: + gUnknown_203B2B4->pokeStruct->unk0 &= 0xfffd; + nullsub_104(); + sub_808ED00(); + sub_8023C60(); + sub_8025434(0x7); + break; + case 6: + sub_8025434(0xF); + break; + case 8: + sub_8025434(0x12); + break; + case 4: + sub_8025434(0x4); + break; + case 5: + sub_8025434(0x5); + break; + case 1: + sub_8025434(0x2); + break; + case 2: + case 3: + break; + } +} + +void sub_8025BCC(void) { switch(sub_80244E4()) { case 2: case 3: sub_802453C(); - sub_8026074(2); + sub_8025434(2); break; case 0: case 1: @@ -183,14 +594,14 @@ void sub_8026A78(void) } } -void sub_8026A94(void) +void sub_8025BE8(void) { switch(sub_801BF48()) { case 2: case 3: sub_801BF98(); - sub_8026074(2); + sub_8025434(2); break; case 0: case 1: @@ -198,90 +609,26 @@ void sub_8026A94(void) } } - -static inline bool8 sub_8026AB0_sub(void) { - if (gUnknown_203B2B8->unk18->dungeonLocation.id == 0x44 || gUnknown_203B2B8->unk18->dungeonLocation.id == 0x45) - return TRUE; - else - return FALSE; -} - -void sub_8026AB0(void) -{ - s32 temp; - if(sub_80144A4(&temp) == 0) - { - switch(temp) - { - case 1: - case 3: - sub_8026074(2); - break; - case 2: - if (sub_8026AB0_sub()) - sub_8026074(0xD); - else - sub_8026074(8); - break; - } - } -} - -void sub_8026B10(void) -{ - s32 temp; - if(sub_80144A4(&temp) == 0) - { - switch(temp) - { - case 1: - case 3: - sub_8026074(2); - break; - case 2: - sub_8026074(8); - break; - } - } -} - - -void sub_8026B48(void) -{ - switch(sub_8022860()) - { - case 2: - case 3: - sub_8022908(); - sub_8026074(2); - break; - case 0: - case 1: - break; - } -} - - -void sub_8026B64(void) +void sub_8025C04(void) { switch(sub_801A6E8(1)) { case 3: - gUnknown_203B2B8->id = sub_801A8AC(); - gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id; - gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity; - sub_8026074(0x14); + gUnknown_203B2B4->itemIndex = sub_801A8AC(); + gUnknown_203B2B4->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B4->itemIndex].id; + gUnknown_203B2B4->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B4->itemIndex].quantity; + sub_8025434(0xD); break; case 4: - gUnknown_203B2B8->id = sub_801A8AC(); - gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id; - gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity; + gUnknown_203B2B4->itemIndex = sub_801A8AC(); + gUnknown_203B2B4->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B4->itemIndex].id; + gUnknown_203B2B4->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B4->itemIndex].quantity; sub_8099690(0); - sub_8026074(0x15); + sub_8025434(0xE); break; case 2: sub_801A928(); - sub_8026074(2); + sub_8025434(2); break; case 0: case 1: @@ -289,244 +636,155 @@ void sub_8026B64(void) } } -void sub_8026C14(void) +void sub_8025CB4(void) { - u32 nextState; - struct unkStruct_8090F58 temp; - int menuAction; - struct Item slot; - + u32 uVar2; + s32 menuAction; + struct unkStruct_8090F58 a3; + struct Item item; + menuAction = 0; sub_801A6E8(0); - if ((sub_8012FD8(&gUnknown_203B2B8->unkCC) == '\0') && (sub_8013114(&gUnknown_203B2B8->unkCC,&menuAction), menuAction != 1)) { - gUnknown_203B2B8->menuAction2 = menuAction; - } - switch(menuAction) - { - case 0xb: - nextState = 0xF; - PlaySound(0x14d); - ShiftItemsDownFrom(gUnknown_203B2B8->id); - FillInventoryGaps(); - if (gUnknown_203B2B8->item2.id != ITEM_NOTHING) { - AddHeldItemToInventory(&gUnknown_203B2B8->item2); - nextState = 0x10; - } - HeldItemToSlot(&slot,&gUnknown_203B2B8->item1); - temp.unk0 = 0; - temp.unk4 = 0; - temp.unk8 = 1; - slot.flags = ITEM_FLAG_EXISTS; - sub_8090E14(gUnknown_202DEA8,&slot,&temp); - GivePokemonItem(gUnknown_203B2B8->pokeSpecies,&gUnknown_203B2B8->item1); - sub_801A928(); - nullsub_104(); - sub_8026074(nextState); - break; - case 4: - sub_8099690(0); - sub_8026074(0x15); - break; - case 1: - sub_8026074(0x13); - break; + if ((!sub_8012FD8(&gUnknown_203B2B4->unk78)) && (sub_8013114(&gUnknown_203B2B4->unk78,&menuAction), menuAction != 1)) { + gUnknown_203B2B4->menuAction2 = menuAction; } + + switch(menuAction) + { + case 10: + uVar2 = 8; + PlaySound(0x14d); + ShiftItemsDownFrom(gUnknown_203B2B4->itemIndex); + FillInventoryGaps(); + if ((gUnknown_203B2B4->item2).id != 0) { + AddHeldItemToInventory(&gUnknown_203B2B4->item2); + uVar2 = 9; + } + HeldItemToSlot(&item,&gUnknown_203B2B4->item1); + a3.unk0 = 0; + a3.unk4 = 0; + a3.unk8 = 1; + item.flags = ITEM_FLAG_EXISTS; + sub_8090E14(gUnknown_202DEA8,&item,&a3); + GivePokemonItem((int)gUnknown_203B2B4->species,&gUnknown_203B2B4->item1); + sub_801A928(); + nullsub_104(); + sub_8025434(uVar2); + break; + case 4: + sub_8099690(0); + sub_8025434(0xe); + break; + case 1: + sub_8025434(0xc); + break; + } } -void sub_8026CF0(void) +void sub_8025D90(void) { switch(sub_801B410()) { case 2: case 3: sub_801B450(); - sub_8026074(0x13); - break; + sub_8025434(0xC); case 0: case 1: break; } } - -void sub_8026D0C(void) +void sub_8025DAC(void) { switch(sub_801EF38(1)) { - case 0: - case 1: - break; case 3: + gUnknown_203B2B4->moveIndex = sub_801F194(); + gUnknown_203B2B4->moveID = gUnknown_203B2B4->moves[gUnknown_203B2B4->moveIndex].id; + sub_8025434(0x11); + break; case 4: - gUnknown_203B2B8->moveIndex = sub_801F194(); - gUnknown_203B2B8->moveID = gUnknown_203B2B8->moves[gUnknown_203B2B8->moveIndex].id; - sub_8026074(0x18); + gUnknown_203B2B4->moveIndex = sub_801F194(); + gUnknown_203B2B4->moveID = gUnknown_203B2B4->moves[gUnknown_203B2B4->moveIndex].id; + sub_8025434(0x11); break; case 2: sub_801F214(); - sub_8026074(2); + sub_8094060(gUnknown_203B2B4->moves,gUnknown_203B2B4->pokeStruct->moves); + sub_8025434(0x2); break; } } -void sub_8026D6C(void) +void sub_8025E08(void) { switch(sub_801F890()) { case 2: case 3: sub_801F8D0(); - sub_8026074(0x17); - break; + sub_8025434(0x10); case 0: case 1: break; } } -void sub_8026D88(void) +void sub_8025E24(void) { - s32 temp; - if(sub_80144A4(&temp) == 0) + switch(sub_8016080()) { - sub_8026074(gUnknown_203B2B8->fallbackState); - } -} - -void sub_8026DAC(u32 r0, struct BulkItem *item) -{ - struct Item slot; - struct unkStruct_8090F58 temp; - - sub_8008C54(r0); - sub_80073B8(r0); - HeldItemToSlot(&slot, item); - temp.unk0 = 0; - temp.unk4 = 0; - temp.unk8 = 1; - slot.flags = ITEM_FLAG_EXISTS; - sub_8090E14(gUnknown_202DE58, &slot, &temp); - xxx_format_and_draw(4, 3, gPartyMenuItemPlaceholder, r0, 0); - sub_80073E0(r0); -} - -void sub_8026E08(u32 r0) -{ - u8 buffer1[40]; - u8 buffer[20]; - s32 x; - - sub_8008C54(r0); - sub_80073B8(r0); - sub_80922B4(gAvailablePokemonNames, gUnknown_203B2B8->unk18->name, POKEMON_NAME_LENGTH); - sub_808D930(buffer, gUnknown_203B2B8->unk18->speciesNum); - sprintfStatic(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames); - x = sub_8008ED0(buffer1); - xxx_call_draw_string(((gUnknown_80DD370.unkC << 3) - x) / 2, 3, buffer1, r0, 0); - sub_80073E0(r0); -} - -u32 sub_8026E88(struct PokemonStruct *r0) -{ - bool8 flag; - if(!r0->isTeamLeader) - { - flag = (r0->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER); - if(flag) - if(!sub_80023E4(0x8)) - return FALSE; - } - else - return FALSE; - return TRUE; -} - -bool8 sub_8026EB8(struct PokemonStruct *r0) -{ - bool8 flag; - if(sub_808D3BC() != r0) - if(sub_808D3F8() != r0) - if(!r0->isTeamLeader) - { - flag = (r0->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER); - if(flag) - { - if(sub_80023E4(0x8)) - goto check; - } - else - check: - if(sub_8026F04(r0) != 3) - return TRUE; - } - return FALSE; -} - - -u32 sub_8026F04(struct PokemonStruct *r0) -{ - if(r0->heldItem.id == 0) - return 0; - else if(GetNumberOfFilledInventorySlots() < INVENTORY_SIZE) - return 1; - else if(CanTakePokemonHeldItem(r0)) - return 2; - else - return 3; -} - -bool8 CanTakePokemonHeldItem(struct PokemonStruct *r0) -{ - if(IsNotMoneyOrUsedTMItem(r0->heldItem.id)) - { - if(IsThrowableItem(r0->heldItem.id)) - { - if((gTeamInventory_203B460->teamStorage[r0->heldItem.id] + r0->heldItem.quantity) > 999) - return FALSE; - } - else - { - if(gTeamInventory_203B460->teamStorage[r0->heldItem.id] > 998) - return FALSE; - } - } - else - return FALSE; - return TRUE; -} - -void sub_8026FA4(void) -{ - switch(sub_8026F04(gUnknown_203B2B8->unk18)) - { - case 1: - PlaySound(0x14d); - AddHeldItemToInventory(&gUnknown_203B2B8->item2); - FillInventoryGaps(); - gUnknown_203B2B8->item2.id = 0; - gUnknown_203B2B8->item2.quantity = 0; - GivePokemonItem(gUnknown_203B2B8->pokeSpecies, &gUnknown_203B2B8->item2); - sub_8026074(0xA); - break; case 2: - PlaySound(0x14d); - if(IsThrowableItem(gUnknown_203B2B8->item2.id)) - { - gTeamInventory_203B460->teamStorage[gUnknown_203B2B8->item2.id] += gUnknown_203B2B8->item2.quantity; - } - else - { - gTeamInventory_203B460->teamStorage[gUnknown_203B2B8->item2.id] += 1; - } - - gUnknown_203B2B8->item2.id = 0; - gUnknown_203B2B8->item2.quantity = 0; - GivePokemonItem(gUnknown_203B2B8->pokeSpecies, &gUnknown_203B2B8->item2); - sub_8026074(0xB); - break; - case 0: - default: - sub_8026074(0x19); + case 3: + sub_80160D8(); + nullsub_104(); + sub_8025434(0x2); break; } } + +void sub_8025E44(void) +{ + s32 local; + if(sub_80144A4(&local) == 0) + { + sub_8025434(gUnknown_203B2B4->fallbackState); + } +} + +void sub_8025E68(u32 r0, struct BulkItem *heldItem) +{ + struct Item item; + struct unkStruct_8090F58 a3; + + sub_8008C54(r0); + sub_80073B8(r0); + HeldItemToSlot(&item, heldItem); + a3.unk0 = 0; + a3.unk4 = 0; + a3.unk8 = 1; + item.flags = ITEM_FLAG_EXISTS; + sub_8090E14(gUnknown_202DE58, &item, &a3); + xxx_format_and_draw(4, 3, gUnknown_80DD2F8, r0, 0); + sub_80073E0(r0); +} + +bool8 sub_8025EC4(struct PokemonStruct *param_1) +{ + bool32 flag; + if (param_1->isTeamLeader) + { + return FALSE; + } + else + { + flag = FALSE; + if(param_1->dungeonLocation.id == 0x41) + flag = TRUE; + if(flag && !sub_80023E4(8)) + return FALSE; + else + return TRUE; + } +} diff --git a/src/friend_list_menu_1.c b/src/friend_list_menu_1.c deleted file mode 100644 index e0ccc137b..000000000 --- a/src/friend_list_menu_1.c +++ /dev/null @@ -1,297 +0,0 @@ -#include "global.h" -#include "memory.h" -#include "text.h" -#include "input.h" -#include "menu.h" -#include "item.h" -#include "pokemon.h" -#include "moves.h" -#include "menu_input.h" - - -// there might be more overlap with unkStruct_203B2BC -// I was working on the moves and put the data that seemed to correspond to that -// into a separate struct -struct unkStruct_203B2B4 -{ - // size: 0x178 - s32 unk0; - s32 state; - u32 fallbackState; - u8 unkC; - u8 unkD; - s16 species; - u32 unk10; - struct BulkItem item1; - struct BulkItem item2; - /* 0x1C */ struct PokemonStruct *pokeStruct; - u32 moveIndex; // some sort of move index - u16 moveID; - struct Move moves[8]; - u16 moveIDs[4]; // some list of move IDs - u32 menuAction1; - s32 menuAction2; - struct MenuStruct unk78; - struct MenuItem unkC8[8]; - u16 unk108[8]; - struct UnkTextStruct2 unk118[4]; -}; -extern struct unkStruct_203B2B4 *gUnknown_203B2B4; - -extern struct UnkTextStruct2 gUnknown_80DD190; -extern struct UnkTextStruct2 gUnknown_80DD160; -extern struct UnkTextStruct2 gUnknown_80DD148; -extern struct UnkTextStruct2 gUnknown_80DD178; - -extern u8 gAvailablePokemonNames[]; -extern u8 gUnknown_80DD1A8[]; -extern u8 gUnknown_80DD270[]; -extern u8 gUnknown_80DD1C8[]; -extern u8 gUnknown_80DD1EC[]; -extern u8 gUnknown_80DD240[]; - -extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); -extern s16 sub_80A5728(void); -extern u8 sub_8002658(s16); -extern bool8 sub_8024108(u32); -extern void sub_8025434(s32); -extern void sub_80259F0(void); -extern void sub_8025A84(void); -extern void sub_8025BCC(void); -extern void sub_8025BE8(void); -extern void sub_8025C04(void); -extern void sub_8025CB4(void); -extern void sub_8025D90(void); -extern void sub_8025DAC(void); -extern void sub_8025E08(void); -extern void sub_8025E24(void); -extern void sub_8025E44(void); -extern void sub_802544C(void); -extern void sub_8025518(void); -extern void sub_8025728(void); -extern void sub_802591C(void); -extern u32 sub_801B3C0(struct Item *param_1); -extern void sub_8023868(u32, u32, u32, u32); -extern void sub_801F1B0(u32, u32); -extern void sub_801A5D8(u32,u32, u32, u32); -extern void sub_801A8D0(u32); -extern void sub_801A9E0(void); -extern void PlaySound(u32); -extern void sub_8024458(s16, u32); -extern void sub_801BEEC(s16); -extern void sub_8023B7C(u32); -extern void sub_8023DA4(void); - -extern void unk_CopyMoves4To8(struct Move *, struct Move *); -extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32); -extern void GetLinkedSequence(u32, struct Move *, u16*); -extern void sub_801F808(u16 *); -u32 sub_801602C(u32 r0, u8 *name); -extern void sub_8025E68(u32 , struct BulkItem *); - -bool8 sub_80252F0(s32 param_1) -{ - - if ((param_1 == 2) && (sub_8024108(4) != '\0')) { - return FALSE; - } - else { - gUnknown_203B2B4 = MemoryAlloc(sizeof(struct unkStruct_203B2B4),8); - gUnknown_203B2B4->menuAction1 = 0; - gUnknown_203B2B4->unk0 = param_1; - gUnknown_203B2B4->unkC = sub_8002658(sub_80A5728()); - gUnknown_203B2B4->unkD = 0; - if (gUnknown_203B2B4->unk0 == 2) { - sub_8025434(0); - } - else { - sub_8025434(1); - } - return TRUE; - } -} - -u32 sub_8025354(void) -{ - switch(gUnknown_203B2B4->state) { - case 0x13: - return 3; - case 1: - case 2: - sub_80259F0(); - break; - case 3: - sub_8025A84(); - break; - case 4: - sub_8025BCC(); - break; - case 5: - sub_8025BE8(); - break; - case 0xb: - case 0xc: - sub_8025C04(); - break; - case 0xd: - sub_8025CB4(); - break; - case 0xe: - sub_8025D90(); - break; - case 0xf: - case 0x10: - sub_8025DAC(); - break; - case 0x11: - sub_8025E08(); - break; - case 0x12: - sub_8025E24(); - break; - default: - sub_8025E44(); - break; - } - return 0; -} - -u8 sub_802540C(void) -{ - return gUnknown_203B2B4->unkD; -} - -void sub_8025418(void) -{ - if(gUnknown_203B2B4 != NULL) - { - MemoryFree(gUnknown_203B2B4); - gUnknown_203B2B4 = NULL; - } -} - -void sub_8025434(s32 newState) -{ - gUnknown_203B2B4->state = newState; - sub_802544C(); - sub_8025518(); -} - -void sub_802544C(void) -{ - s32 index; - - sub_8006518(gUnknown_203B2B4->unk118); - - switch(gUnknown_203B2B4->state) - { - case 3: - if (gUnknown_203B2B4->unk0 == 0) { - gUnknown_203B2B4->unk118[3] = gUnknown_80DD190; - } - sub_8025728(); - gUnknown_203B2B4->unk118[2] = gUnknown_80DD160; - sub_8012CAC(&gUnknown_203B2B4->unk118[2],gUnknown_203B2B4->unkC8); - break; - case 0xD: - sub_802591C(); - gUnknown_203B2B4->unk118[2] = gUnknown_80DD178; - sub_8012CAC(&gUnknown_203B2B4->unk118[2],gUnknown_203B2B4->unkC8); - break; - default: - for(index = 0; index < 4; index++) - { - gUnknown_203B2B4->unk118[index] = gUnknown_80DD148; - } - break; - - } - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B2B4->unk118,1,1); -} - -void sub_8025518(void) -{ - u32 uVar3; - struct Item item; - - switch(gUnknown_203B2B4->state) - { - case 0: - gUnknown_203B2B4->fallbackState = 1; - sub_80141B4(gUnknown_80DD1A8,0,0,0x301); - break; - case 1: - uVar3 = 4; - if (gUnknown_203B2B4->unk0 == 0) { - uVar3 = 2; - } - sub_8023868(uVar3,0,0,10); - break; - case 2: - sub_8023B7C(1); - break; - case 3: - if (gUnknown_203B2B4->unk0 == 0) { - sub_8025E68(3,&gUnknown_203B2B4->item2); - } - sub_8023DA4(); - PrintColoredPokeNameToBuffer(gAvailablePokemonNames,gUnknown_203B2B4->pokeStruct,7); - PrintColoredPokeNameToBuffer(gAvailablePokemonNames + 0x50,gUnknown_203B2B4->pokeStruct,6); - sub_8012D60(&gUnknown_203B2B4->unk78,gUnknown_203B2B4->unkC8,0,gUnknown_203B2B4->unk108,gUnknown_203B2B4->menuAction1,2); - break; - case 4: - sub_8024458(gUnknown_203B2B4->species,2); - break; - case 5: - sub_801BEEC(gUnknown_203B2B4->species); - break; - case 0xb: - sub_801A5D8(1,0,0,10); - break; - case 0xc: - sub_801A8D0(1); - break; - case 0xd: - sub_801A9E0(); - sub_8012D60(&gUnknown_203B2B4->unk78,gUnknown_203B2B4->unkC8,0,gUnknown_203B2B4->unk108,gUnknown_203B2B4->menuAction2,2); - break; - case 0xe: - HeldItemToSlot(&item, &gUnknown_203B2B4->item1); - sub_801B3C0(&item); - break; - case 8: - gUnknown_203B2B4->fallbackState = 2; - sub_80141B4(gUnknown_80DD1C8,0,0,0x101); - break; - case 9: - gUnknown_203B2B4->fallbackState = 2; - sub_80141B4(gUnknown_80DD1EC,0,0,0x101); - break; - case 10: - gUnknown_203B2B4->fallbackState = 2; - sub_80141B4(gUnknown_80DD240,0,0,0x101); - break; - case 7: - gUnknown_203B2B4->fallbackState = 1; - PlaySound(0xcf); - sub_80141B4(gUnknown_80DD270,0,0,0x101); - break; - case 0xf: - unk_CopyMoves4To8(gUnknown_203B2B4->moves,gUnknown_203B2B4->pokeStruct->moves); - sub_801EE10(3,gUnknown_203B2B4->species,gUnknown_203B2B4->moves,0,0,0); - break; - case 0x10: - sub_801F1B0(1,0); - break; - case 0x11: - GetLinkedSequence(gUnknown_203B2B4->moveIndex,gUnknown_203B2B4->moves, gUnknown_203B2B4->moveIDs); - sub_801F808(gUnknown_203B2B4->moveIDs); - break; - case 0x12: - sub_801602C(2,gUnknown_203B2B4->pokeStruct->name); - break; - case 0x13: - break; - } -} diff --git a/src/items.c b/src/items.c index 83ccac068..5b3c956e9 100644 --- a/src/items.c +++ b/src/items.c @@ -151,7 +151,7 @@ void xxx_init_helditem_8090B08(struct BulkItem *held, u8 id) held->quantity = 0; } else { - held->id = 0; + held->id = ITEM_NOTHING; held->quantity = 0; } } @@ -494,7 +494,7 @@ void FillInventoryGaps() _slot += (size_t)gTeamInventory_203B460->teamItems; slot = (struct Item*)_slot; // &gTeamInventory_203B460->teamItems[end]; #endif - slot->id = 0; + slot->id = ITEM_NOTHING; slot->quantity = 0; slot->flags = 0; } @@ -567,7 +567,7 @@ void ShiftItemsDownFrom(s32 start) for (i = start, j = start + 1; i < INVENTORY_SIZE - 1; i++, j++) { gTeamInventory_203B460->teamItems[i] = gTeamInventory_203B460->teamItems[j]; } - gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].id = 0; + gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].id = ITEM_NOTHING; gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].flags = 0; } @@ -621,7 +621,7 @@ void ConvertMoneyItemToMoney() result = GetMoneyValue(current_slot); AddToTeamMoney(result); - current_slot->id = 0; + current_slot->id = ITEM_NOTHING; current_slot->quantity = 0; current_slot->flags = 0; } @@ -1471,7 +1471,7 @@ void ClearAllItems_8091FB4() { slot->flags &= 0xf7; if (slot->id == ITEM_POKE) { AddToTeamMoney(GetMoneyValue(slot)); - slot->id = 0; + slot->id = ITEM_NOTHING; slot->quantity = 0; slot->flags = 0; } @@ -1493,7 +1493,7 @@ void ClearAllItems_8091FB4() { if (pokemon->heldItem.id) { if (pokemon->heldItem.id == ITEM_POKE) { AddToTeamMoney(GetMoneyValueHeld(&pokemon->heldItem)); - pokemon->heldItem.id = 0; + pokemon->heldItem.id = ITEM_NOTHING; } } } diff --git a/src/party_list_menu.c b/src/party_list_menu.c new file mode 100644 index 000000000..dc80288cd --- /dev/null +++ b/src/party_list_menu.c @@ -0,0 +1,1081 @@ +#include "global.h" +#include "constants/dungeon.h" +#include "item.h" +#include "input.h" +#include "menu.h" +#include "memory.h" +#include "pokemon.h" +#include "text.h" +#include "team_inventory.h" +#include "constants/move.h" +#include "code_800D090.h" +#include "menu_input.h" +#include "moves.h" + +struct unkStruct_203B2B8 +{ + // size: 0x280 + s32 state; + s32 fallbackState; + bool8 unk8; + /* 0xA */ s16 pokeSpecies; + u32 id; + /* 0x10 */ struct BulkItem item1; + /* 0x14 */ struct BulkItem item2; + struct PokemonStruct *pokeStruct; + bool8 isTeamLeader; + u32 moveIndex; + /* 0x24 */ u16 moveID; + struct Move moves[8]; + u16 moveIDs[4]; // some list of move IDs + u32 menuAction1; + u32 menuAction2; + u32 menuAction3; // unused + struct MenuStruct unk7C; + struct MenuStruct unkCC; + struct MenuStruct unk11C; // unused + struct MenuItem unk16C[10]; + struct MenuItem unk1BC[10]; + u16 unk20C[10]; + struct UnkTextStruct2 unk220[4]; +}; +extern struct unkStruct_203B2B8 *gUnknown_203B2B8; + +const struct UnkTextStruct2 gUnknown_80DD310 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL +}; + +const struct UnkTextStruct2 gUnknown_80DD328 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x13, 0x00, 0x03, 0x00, + 0x08, 0x03, + 0x03, 0x00, + NULL +}; + +const struct UnkTextStruct2 gUnknown_80DD340 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x14, 0x00, 0x04, 0x00, + 0x06, 0x03, + 0x03, 0x00, + NULL +}; + +const struct UnkTextStruct2 gUnknown_80DD358 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x02, 0x00, 0x11, 0x00, + 0x1A, 0x02, + 0x02, 0x00, + NULL +}; + +const struct UnkTextStruct2 gUnknown_80DD370 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x02, 0x00, 0x03, 0x00, + 0x0F, 0x02, + 0x02, 0x00, + NULL +}; + +extern u8 gAvailablePokemonNames[0x58]; +extern u8 gUnknown_202DEA8[0x58]; +extern u8 gUnknown_202DE58[0x58]; + +extern u8 *gUnknown_80D4920[]; +extern u8 *gUnknown_80D4928[]; +extern u8 *gUnknown_80D4970[]; +extern u8 *gUnknown_80D4970[]; + +ALIGNED(4) const u8 gUnknown_80DD388[] = _( + "You have chosen to say farewell\n" + "to this Pokémon.{EXTRA_MSG}" + "The Pokémon will leave its Friend Area.\n" + "It will no longer be available for\n" + "adventures. Is that OK?"); + +ALIGNED(4) const u8 gUnknown_80DD420[] = _( + "If you say farewell to this\n" + "Pokémon{COMMA} it will be gone forever.{EXTRA_MSG}" + "You will never be able to get another one\n" + "like it to join your team.\n" + "Will you release it anyway?"); + +ALIGNED(4) const u8 gUnknown_80DD4C4[] = _( + "{CENTER_ALIGN}{ARG_POKEMON_1} joined the\n" + "{CENTER_ALIGN}rescue team for adventures!"); + +ALIGNED(4) const u8 gUnknown_80DD4F4[] = _( + "{CENTER_ALIGN}{ARG_POKEMON_1} left the team to remain\n" + "{CENTER_ALIGN}on standby in the Friend Area."); + +ALIGNED(4) const u8 gBecameLeader[] = _( + "{CENTER_ALIGN}{ARG_POKEMON_1} became the leader\n" + "{CENTER_ALIGN}of the rescue team."); + +ALIGNED(4) const u8 gUnknown_80DD564[] = _( + "{CENTER_ALIGN}{ARG_POKEMON_1} left\n" + "{CENTER_ALIGN}the Friend Area.\n" + "{CENTER_ALIGN}Bye-bye{COMMA} {ARG_POKEMON_1}!"); + +ALIGNED(4) const u8 gUnknown_80DD594[] = _( + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}handed over. "); + +ALIGNED(4) const u8 gUnknown_80DD5B8[] = _( + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_1}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}handed over.{EXTRA_MSG}" + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}returned to the Toolbox."); + +ALIGNED(4) const u8 gUnknown_80DD60C[] = _( + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}returned to the Toolbox."); + +ALIGNED(4) const u8 gUnknown_80DD63C[] = _( + "{CENTER_ALIGN}The {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} was\n" + "{CENTER_ALIGN}sent to storage."); + +ALIGNED(4) const u8 gPartyMenuStandBy[] = "Stand By"; +ALIGNED(4) const u8 gPartyMenuMakeLeader[] = "Make Leader"; +ALIGNED(4) const u8 gPartyMenuJoinTeam[] = "Join Team"; +ALIGNED(4) const u8 gPartyMenuGiveGummi[] = "Give Gummi"; +ALIGNED(4) const u8 gPartyMenuGive[] = "Give"; +ALIGNED(4) const u8 gPartyMenuTake[] = "Take"; +ALIGNED(4) const u8 gPartyMenuSayFarewell[] = "Say Farewell"; +ALIGNED(4) const u8 gPartyMenuSummary[] = "Summary"; +ALIGNED(4) const u8 gPartyMenuMoves[] = "Moves"; +ALIGNED(4) const u8 gPartyMenuCheckIQ[] = "Check IQ"; +ALIGNED(4) const u8 gPartyMenuItemPlaceholder[] = _("Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} "); +ALIGNED(4) const u8 gUnknown_80DD6E0[] = "%s"; +ALIGNED(4) static const u8 fill0[] = "pksdir0"; + +extern u32 sub_8026F04(struct PokemonStruct *); +extern void sub_8026074(s32); +extern void PlaySound(u32); +bool8 CanTakePokemonHeldItem(struct PokemonStruct *r0); +extern bool8 sub_80023E4(u8); +extern struct PokemonStruct *sub_808D3F8(void); +extern struct PokemonStruct *sub_808D3BC(void); +extern void sub_801F214(void); +extern u32 sub_801F194(void); +extern u32 sub_801EF38(u32); +extern void sub_8008C54(u32); +extern void sub_80073B8(u32); +extern void sub_80073E0(u32); +extern void sub_80922B4(u8 *, const u8 *, u32); +extern void sub_808D930(u8 *, s16); +extern s32 sub_8008ED0(u8 *); +extern void xxx_call_draw_string(s32 x, s32 y, u8 *, u32, u32); +extern void xxx_format_and_draw(s32, s32, const u8 *, ...); +extern s32 sub_80144A4(s32 *); +extern u32 sub_801F890(void); +extern void sub_801F8D0(void); +extern u32 sub_801B410(void); +extern void sub_801B450(void); +extern void nullsub_104(void); +extern void sub_801A928(void); +extern void sub_8099690(u32); +extern u32 sub_801A6E8(u32); +extern u32 sub_801A8AC(void); +extern u32 sub_8022860(void); +extern void sub_8022908(void); +extern void sub_801BF98(void); +extern u32 sub_801BF48(void); +extern void sub_802453C(void); +extern u32 sub_80244E4(void); +extern bool8 sub_808D750(s16 index_); +extern void sub_808ED00(void); +extern struct PokemonStruct *GetPlayerPokemonStruct(void); +bool8 sub_8026E88(struct PokemonStruct *r0); +bool8 HasGummiItem(); +bool8 sub_8026EB8(struct PokemonStruct *r0); +extern void sub_801BB20(void); +extern void sub_801A8D0(u32); +extern void sub_801A9E0(void); +extern void sub_801BC24(void); +extern void sub_801A5D8(u32, u32, u32, u32); +extern void sub_8024458(s16, u32); +void sub_8026E08(u32 r0); +void sub_8026DAC(u32 r0, struct BulkItem *item); +bool8 sub_801BEEC(s16 species); +void sub_8026FA4(void); +void sub_8026878(void); +extern void sub_801F808(u16*); +extern void sub_80227B8(struct PokemonStruct *); +extern void sub_801B3C0(struct Item *); +extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32); +extern void sub_801F1B0(u32, u32); +extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32); +extern void sub_80141B4(const u8 *, u32, u32 *, u32); +extern void sub_808D31C(struct PokemonStruct *); + +void sub_802678C(void); +void sub_80264CC(void); +void sub_802608C(void); +void sub_80261D0(void); + +void sub_80268CC(void); +void sub_8026A78(void); +void sub_8026A94(void); +void sub_8026AB0(void); +void sub_8026B10(void); +void sub_8026B48(void); +void sub_8026B64(void); +void sub_8026C14(void); +void sub_8026CF0(void); +void sub_8026D0C(void); +void sub_8026D6C(void); +void sub_8026D88(void); + +u32 sub_8025EF4(struct PokemonStruct *pokeStruct) +{ + s32 index; + gUnknown_203B2B8 = MemoryAlloc(sizeof(struct unkStruct_203B2B8), 0x8); + gUnknown_203B2B8->pokeStruct = pokeStruct; + + for(index = 0; index < NUM_MONSTERS; index++) + { + if(gUnknown_203B2B8->pokeStruct == &gRecruitedPokemonRef->pokemon[(s16)index]) + { + gUnknown_203B2B8->pokeSpecies = index; + break; + } + } + + gUnknown_203B2B8->menuAction1 = 0; + gUnknown_203B2B8->menuAction2 = 0; + gUnknown_203B2B8->menuAction3 = 0; + gUnknown_203B2B8->unk8 = FALSE; + sub_8026074(0); + return 1; +} + +u32 sub_8025F68(void) +{ + switch(gUnknown_203B2B8->state) + { + case 0: + sub_8026074(1); + break; + case 1: + case 2: + sub_80268CC(); + break; + case 3: + sub_8026A78(); + break; + case 4: + sub_8026A94(); + break; + case 0xc: + sub_8026AB0(); + break; + case 0xd: + sub_8026B10(); + break; + case 0xe: + sub_8026B48(); + break; + case 0x12: + case 0x13: + sub_8026B64(); + break; + case 0x14: + sub_8026C14(); + break; + case 0x15: + sub_8026CF0(); + break; + case 0x16: + case 0x17: + sub_8026D0C(); + break; + case 0x18: + sub_8026D6C(); + break; + default: + sub_8026D88(); + break; + case 0x19: + return 3; + } + return 0; +} + +bool8 sub_802604C(void) +{ + return gUnknown_203B2B8->unk8; +} + +void sub_8026058(void) +{ + if(gUnknown_203B2B8) + { + MemoryFree(gUnknown_203B2B8); + gUnknown_203B2B8 = NULL; + } +} + +void sub_8026074(s32 newState) +{ + gUnknown_203B2B8->state = newState; + sub_802608C(); + sub_80261D0(); +} + +void sub_802608C(void) +{ + s32 index; + sub_8006518(gUnknown_203B2B8->unk220); + switch(gUnknown_203B2B8->state) + { + case 1: + case 2: + for(index = 0; index < 4; index++) + { + gUnknown_203B2B8->unk220[index] = gUnknown_80DD310; + } + gUnknown_203B2B8->unk220[0] = gUnknown_80DD358; + gUnknown_203B2B8->unk220[3] = gUnknown_80DD370; + sub_80264CC(); + gUnknown_203B2B8->unk220[2] = gUnknown_80DD328; + sub_8012CAC(&gUnknown_203B2B8->unk220[2], gUnknown_203B2B8->unk16C); + gUnknown_203B2B8->unk220[2].unkC = 9; + break; + case 0x14: + sub_802678C(); + gUnknown_203B2B8->unk220[2] = gUnknown_80DD340; + sub_8012CAC(&gUnknown_203B2B8->unk220[2], gUnknown_203B2B8->unk16C); + break; + default: + for(index = 0; index < 4; index++) + { + gUnknown_203B2B8->unk220[index] = gUnknown_80DD310; + } + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2B8->unk220, 1, 1); +} + +void sub_80261D0(void) +{ + struct Item item; + + switch(gUnknown_203B2B8->state) { + case 1: + sub_8026E08(3); + sub_8026DAC(0,&gUnknown_203B2B8->item2); + PrintColoredPokeNameToBuffer(gAvailablePokemonNames,gUnknown_203B2B8->pokeStruct,7); + PrintColoredPokeNameToBuffer(gAvailablePokemonNames + 0x50,gUnknown_203B2B8->pokeStruct,6); + sub_8012D60(&gUnknown_203B2B8->unk7C,gUnknown_203B2B8->unk16C,0,gUnknown_203B2B8->unk20C,gUnknown_203B2B8->menuAction1,2); + break; + case 2: + sub_8026E08(3); + sub_8026DAC(0,&gUnknown_203B2B8->item2); + PrintColoredPokeNameToBuffer(gAvailablePokemonNames,gUnknown_203B2B8->pokeStruct,7); + PrintColoredPokeNameToBuffer(gAvailablePokemonNames + 0x50,gUnknown_203B2B8->pokeStruct,6); + sub_8012EA4(&gUnknown_203B2B8->unk7C,1); + break; + case 3: + sub_8024458(gUnknown_203B2B8->pokeSpecies,2); + break; + case 4: + sub_801BEEC(gUnknown_203B2B8->pokeSpecies); + break; + case 0xe: + sub_80227B8(gUnknown_203B2B8->pokeStruct); + break; + case 0x12: + sub_801A5D8(1,0,0,10); + break; + case 0x13: + sub_801A8D0(1); + break; + case 0x14: + sub_801A9E0(); + sub_8012D60(&gUnknown_203B2B8->unkCC,gUnknown_203B2B8->unk16C,0,gUnknown_203B2B8->unk20C,gUnknown_203B2B8->menuAction2,2); + break; + case 0x15: + HeldItemToSlot(&item,&gUnknown_203B2B8->item1); + sub_801B3C0(&item); + break; + case 0x16: + unk_CopyMoves4To8(gUnknown_203B2B8->moves,gUnknown_203B2B8->pokeStruct->moves); + sub_801EE10(3,gUnknown_203B2B8->pokeSpecies,gUnknown_203B2B8->moves,0,0,0); + break; + case 0x17: + sub_801F1B0(1,0); + break; + case 0xc: + sub_8026878(); + sub_8014248(gUnknown_80DD388,0,3,gUnknown_203B2B8->unk1BC,0,4,0,0,0x101); + break; + case 0xd: + sub_8026878(); + sub_8014248(gUnknown_80DD420,0,3,gUnknown_203B2B8->unk1BC,0,4,0,0,0x101); + break; + case 0x18: + GetLinkedSequence(gUnknown_203B2B8->moveIndex, gUnknown_203B2B8->moves,gUnknown_203B2B8->moveIDs); + sub_801F808(gUnknown_203B2B8->moveIDs); + break; + case 5: + gUnknown_203B2B8->fallbackState = 0x19; + PlaySound(0xcf); + sub_80141B4(gUnknown_80DD4C4,0,0,0x101); + break; + case 6: + gUnknown_203B2B8->fallbackState = 0x19; + PlaySound(0xcf); + sub_80141B4(gUnknown_80DD4F4,0,0,0x101); + break; + case 7: + gUnknown_203B2B8->fallbackState = 0x19; + PlaySound(0xcc); + sub_80141B4(gBecameLeader,0,0,0x101); + break; + case 8: + gUnknown_203B2B8->fallbackState = 9; + PlaySound(0xca); + sub_80141B4(gUnknown_80DD564,0,0,0x101); + break; + case 9: + sub_8026FA4(); + sub_808D31C(gUnknown_203B2B8->pokeStruct); + gUnknown_203B2B8->unk8 = TRUE; + break; + case 0xf: + gUnknown_203B2B8->fallbackState = 2; + sub_80141B4(gUnknown_80DD594,0,0,0x101); + break; + case 0x10: + gUnknown_203B2B8->fallbackState = 2; + sub_80141B4(gUnknown_80DD5B8,0,0,0x101); + break; + case 0x11: + gUnknown_203B2B8->fallbackState = 2; + sub_80141B4(gUnknown_80DD60C,0,0,0x101); + break; + case 10: + gUnknown_203B2B8->fallbackState = 0x19; + sub_80141B4(gUnknown_80DD60C,0,0,0x101); + break; + case 0xb: + gUnknown_203B2B8->fallbackState = 0x19; + sub_80141B4(gUnknown_80DD63C,0,0,0x101); + break; + case 0: + case 0x19: + break; + } +} + +void sub_80264CC(void) { + struct PokemonStruct *pokeStruct; + s32 index; + s32 one; + u16 temp; + s32 loopMax = 0; + pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2B8->pokeSpecies]; + MemoryFill16(gUnknown_203B2B8->unk20C, 0, sizeof(gUnknown_203B2B8->unk20C)); + gUnknown_203B2B8->isTeamLeader = gUnknown_203B2B8->pokeStruct->isTeamLeader; + + PeekPokemonItem(gUnknown_203B2B8->pokeSpecies, &gUnknown_203B2B8->item2); + + if(temp = pokeStruct->unk0 >> 1, one = 1, temp & one) + { + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuStandBy; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 7; + if(!sub_8026E88(pokeStruct)) + { + gUnknown_203B2B8->unk20C[loopMax] = 1; + } + loopMax += 1; + + if(sub_80023E4(8) && !pokeStruct->isTeamLeader) + { + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuMakeLeader; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 8; + loopMax += 1; + } + } + else + { + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuJoinTeam; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 6; + if(!sub_808D750(gUnknown_203B2B8->pokeSpecies)) + { + gUnknown_203B2B8->unk20C[loopMax] = 1; + } + loopMax += 1; + } + + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuGiveGummi; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 10; + if(!HasGummiItem()) + { + gUnknown_203B2B8->unk20C[loopMax] = 1; + } + loopMax += 1; + + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuGive; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 0xB; + if(GetNumberOfFilledInventorySlots() == 0) + { + gUnknown_203B2B8->unk20C[loopMax] = 1; + } + loopMax += 1; + + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuTake; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 0xC; + if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE || gUnknown_203B2B8->item2.id == ITEM_NOTHING) + { + gUnknown_203B2B8->unk20C[loopMax] = 1; + } + loopMax += 1; + + if((temp = pokeStruct->unk0 >> 1, one = 1, temp & one) == 0) + { + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuSayFarewell; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 9; + if(!sub_8026EB8(pokeStruct)) + { + gUnknown_203B2B8->unk20C[loopMax] = 1; + } + loopMax += 1; + } + + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuSummary; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuMoves; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 0xD; + loopMax += 1; + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuCheckIQ; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 5; + loopMax += 1; + gUnknown_203B2B8->unk16C[loopMax].text = NULL; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2B8->unk20C[index] == 0) + { + if(gUnknown_203B2B8->unk16C[index].menuAction == gUnknown_203B2B8->menuAction1) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2B8->unk20C[index] == 0) + { + gUnknown_203B2B8->menuAction1 = gUnknown_203B2B8->unk16C[index].menuAction; + break; + } + } +} + +void sub_802678C(void) +{ + s32 index; + s32 loopMax = 0; + MemoryFill16(gUnknown_203B2B8->unk20C, 0, sizeof(gUnknown_203B2B8->unk20C)); + gUnknown_203B2B8->unk16C[loopMax].text = gPartyMenuGive; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 0xB; + if(GetNumberOfFilledInventorySlots() == 0) + { + gUnknown_203B2B8->unk20C[0] = 1; + } + loopMax += 1; + gUnknown_203B2B8->unk16C[loopMax].text = *gUnknown_80D4970; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 4; + loopMax += 1; + gUnknown_203B2B8->unk16C[loopMax].text = NULL; + gUnknown_203B2B8->unk16C[loopMax].menuAction = 1; + + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2B8->unk20C[index] == 0) + { + if(gUnknown_203B2B8->unk16C[index].menuAction == gUnknown_203B2B8->menuAction2) + return; + } + } + for(index = 0; index < loopMax; index++) + { + if(gUnknown_203B2B8->unk20C[index] == 0) + { + gUnknown_203B2B8->menuAction2 = gUnknown_203B2B8->unk16C[index].menuAction; + break; + } + } +} + +void sub_8026878(void) { + s32 loopMax = 0; + gUnknown_203B2B8->unk1BC[loopMax].text = *gUnknown_80D4920; + gUnknown_203B2B8->unk1BC[loopMax].menuAction = 2; + loopMax += 1; + gUnknown_203B2B8->unk1BC[loopMax].text = *gUnknown_80D4928; + gUnknown_203B2B8->unk1BC[loopMax].menuAction = 3; + loopMax += 1; + gUnknown_203B2B8->unk1BC[loopMax].text = NULL; + gUnknown_203B2B8->unk1BC[loopMax].menuAction = 1; +} + +void sub_80268CC(void) +{ + struct PokemonStruct *playerPokemon; + struct PokemonStruct *pokeStruct; + struct PokemonStruct *pokeStruct2; + s32 choice; + + choice = 0; + if ((sub_8012FD8(&gUnknown_203B2B8->unk7C) == 0) && (sub_8013114(&gUnknown_203B2B8->unk7C,&choice), choice != 1)) { + gUnknown_203B2B8->menuAction1 = choice; + } + switch(choice) { + case 6: + if (sub_808D750(gUnknown_203B2B8->pokeSpecies)) { + +#ifdef NONMATCHING + pokeStruct = &gUnknown_203B2B8->pokeSpecies[gRecruitedPokemonRef->pokemon]; +#else + register size_t offset asm("r1") = offsetof(struct unkStruct_203B45C, pokemon[gUnknown_203B2B8->pokeSpecies]); + struct PokemonStruct* p = gRecruitedPokemonRef->pokemon; + size_t addr = offset + (size_t)p; + pokeStruct = (struct PokemonStruct*)addr; +#endif + + pokeStruct->unk0 |= 2; + nullsub_104(); + } + sub_808ED00(); + sub_8026074(5); + break; + case 7: + gUnknown_203B2B8->pokeStruct->unk0 &= 0xfffd; + nullsub_104(); + sub_808ED00(); + sub_8026074(6); + break; + case 8: + pokeStruct2 = &gRecruitedPokemonRef->pokemon[gUnknown_203B2B8->pokeSpecies]; + playerPokemon = GetPlayerPokemonStruct(); + + if (!pokeStruct2->isTeamLeader) { + playerPokemon->isTeamLeader = FALSE; + pokeStruct2->isTeamLeader = TRUE; + nullsub_104(); + } + sub_808ED00(); + sub_8026074(7); + break; + case 9: + sub_8026074(0xc); + break; + case 0xd: + sub_8026074(0x16); + break; + case 10: + sub_8026074(0xe); + break; + case 0xb: + sub_8026074(0x12); + break; + case 0xc: + PlaySound(0x14d); + if (gUnknown_203B2B8->item2.id != ITEM_NOTHING) { + AddHeldItemToInventory(&gUnknown_203B2B8->item2); + } + FillInventoryGaps(); + gUnknown_203B2B8->item2.id = ITEM_NOTHING; + gUnknown_203B2B8->item2.quantity = 0; + GivePokemonItem(gUnknown_203B2B8->pokeSpecies,&gUnknown_203B2B8->item2); + nullsub_104(); + sub_8026074(0x11); + break; + case 4: + sub_8026074(3); + break; + case 5: + sub_8026074(4); + break; + case 1: + sub_8026074(0x19); + break; + + } +} + +void sub_8026A78(void) +{ + switch(sub_80244E4()) + { + case 2: + case 3: + sub_802453C(); + sub_8026074(2); + break; + case 0: + case 1: + break; + } +} + +void sub_8026A94(void) +{ + switch(sub_801BF48()) + { + case 2: + case 3: + sub_801BF98(); + sub_8026074(2); + break; + case 0: + case 1: + break; + } +} + + +static inline bool8 sub_8026AB0_sub(void) { + if (gUnknown_203B2B8->pokeStruct->dungeonLocation.id == 0x44 || gUnknown_203B2B8->pokeStruct->dungeonLocation.id == 0x45) + return TRUE; + else + return FALSE; +} + +void sub_8026AB0(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 1: + case 3: + sub_8026074(2); + break; + case 2: + if (sub_8026AB0_sub()) + sub_8026074(0xD); + else + sub_8026074(8); + break; + } + } +} + +void sub_8026B10(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 1: + case 3: + sub_8026074(2); + break; + case 2: + sub_8026074(8); + break; + } + } +} + + +void sub_8026B48(void) +{ + switch(sub_8022860()) + { + case 2: + case 3: + sub_8022908(); + sub_8026074(2); + break; + case 0: + case 1: + break; + } +} + + +void sub_8026B64(void) +{ + switch(sub_801A6E8(1)) + { + case 3: + gUnknown_203B2B8->id = sub_801A8AC(); + gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id; + gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity; + sub_8026074(0x14); + break; + case 4: + gUnknown_203B2B8->id = sub_801A8AC(); + gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id; + gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity; + sub_8099690(0); + sub_8026074(0x15); + break; + case 2: + sub_801A928(); + sub_8026074(2); + break; + case 0: + case 1: + break; + } +} + +void sub_8026C14(void) +{ + u32 nextState; + struct unkStruct_8090F58 temp; + int menuAction; + struct Item slot; + + menuAction = 0; + sub_801A6E8(0); + if ((sub_8012FD8(&gUnknown_203B2B8->unkCC) == '\0') && (sub_8013114(&gUnknown_203B2B8->unkCC,&menuAction), menuAction != 1)) { + gUnknown_203B2B8->menuAction2 = menuAction; + } + switch(menuAction) + { + case 0xb: + nextState = 0xF; + PlaySound(0x14d); + ShiftItemsDownFrom(gUnknown_203B2B8->id); + FillInventoryGaps(); + if (gUnknown_203B2B8->item2.id != ITEM_NOTHING) { + AddHeldItemToInventory(&gUnknown_203B2B8->item2); + nextState = 0x10; + } + HeldItemToSlot(&slot,&gUnknown_203B2B8->item1); + temp.unk0 = 0; + temp.unk4 = 0; + temp.unk8 = 1; + slot.flags = ITEM_FLAG_EXISTS; + sub_8090E14(gUnknown_202DEA8,&slot,&temp); + GivePokemonItem(gUnknown_203B2B8->pokeSpecies,&gUnknown_203B2B8->item1); + sub_801A928(); + nullsub_104(); + sub_8026074(nextState); + break; + case 4: + sub_8099690(0); + sub_8026074(0x15); + break; + case 1: + sub_8026074(0x13); + break; + } +} + +void sub_8026CF0(void) +{ + switch(sub_801B410()) + { + case 2: + case 3: + sub_801B450(); + sub_8026074(0x13); + break; + case 0: + case 1: + break; + } +} + + +void sub_8026D0C(void) +{ + switch(sub_801EF38(1)) + { + case 0: + case 1: + break; + case 3: + case 4: + gUnknown_203B2B8->moveIndex = sub_801F194(); + gUnknown_203B2B8->moveID = gUnknown_203B2B8->moves[gUnknown_203B2B8->moveIndex].id; + sub_8026074(0x18); + break; + case 2: + sub_801F214(); + sub_8026074(2); + break; + } +} + +void sub_8026D6C(void) +{ + switch(sub_801F890()) + { + case 2: + case 3: + sub_801F8D0(); + sub_8026074(0x17); + break; + case 0: + case 1: + break; + } +} + +void sub_8026D88(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_8026074(gUnknown_203B2B8->fallbackState); + } +} + +void sub_8026DAC(u32 r0, struct BulkItem *item) +{ + struct Item slot; + struct unkStruct_8090F58 temp; + + sub_8008C54(r0); + sub_80073B8(r0); + HeldItemToSlot(&slot, item); + temp.unk0 = 0; + temp.unk4 = 0; + temp.unk8 = 1; + slot.flags = ITEM_FLAG_EXISTS; + sub_8090E14(gUnknown_202DE58, &slot, &temp); + xxx_format_and_draw(4, 3, gPartyMenuItemPlaceholder, r0, 0); + sub_80073E0(r0); +} + +void sub_8026E08(u32 r0) +{ + u8 buffer1[40]; + u8 buffer[20]; + s32 x; + + sub_8008C54(r0); + sub_80073B8(r0); + sub_80922B4(gAvailablePokemonNames, gUnknown_203B2B8->pokeStruct->name, POKEMON_NAME_LENGTH); + sub_808D930(buffer, gUnknown_203B2B8->pokeStruct->speciesNum); + sprintfStatic(buffer1, gUnknown_80DD6E0, gAvailablePokemonNames); + x = sub_8008ED0(buffer1); + xxx_call_draw_string(((gUnknown_80DD370.unkC << 3) - x) / 2, 3, buffer1, r0, 0); + sub_80073E0(r0); +} + +bool8 sub_8026E88(struct PokemonStruct *r0) +{ + bool8 flag; + if(!r0->isTeamLeader) + { + flag = (r0->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER); + if(flag) + if(!sub_80023E4(0x8)) + return FALSE; + } + else + return FALSE; + return TRUE; +} + +bool8 sub_8026EB8(struct PokemonStruct *r0) +{ + bool8 flag; + if(sub_808D3BC() != r0) + if(sub_808D3F8() != r0) + if(!r0->isTeamLeader) + { + flag = (r0->dungeonLocation.id == DUNGEON_JOIN_LOCATION_PARTNER); + if(flag) + { + if(sub_80023E4(0x8)) + goto check; + } + else + check: + if(sub_8026F04(r0) != 3) + return TRUE; + } + return FALSE; +} + + +u32 sub_8026F04(struct PokemonStruct *r0) +{ + if(r0->heldItem.id == ITEM_NOTHING) + return 0; + else if(GetNumberOfFilledInventorySlots() < INVENTORY_SIZE) + return 1; + else if(CanTakePokemonHeldItem(r0)) + return 2; + else + return 3; +} + +bool8 CanTakePokemonHeldItem(struct PokemonStruct *r0) +{ + if(IsNotMoneyOrUsedTMItem(r0->heldItem.id)) + { + if(IsThrowableItem(r0->heldItem.id)) + { + if((gTeamInventory_203B460->teamStorage[r0->heldItem.id] + r0->heldItem.quantity) > 999) + return FALSE; + } + else + { + if(gTeamInventory_203B460->teamStorage[r0->heldItem.id] > 998) + return FALSE; + } + } + else + return FALSE; + return TRUE; +} + +void sub_8026FA4(void) +{ + switch(sub_8026F04(gUnknown_203B2B8->pokeStruct)) + { + case 1: + PlaySound(0x14d); + AddHeldItemToInventory(&gUnknown_203B2B8->item2); + FillInventoryGaps(); + gUnknown_203B2B8->item2.id = ITEM_NOTHING; + gUnknown_203B2B8->item2.quantity = 0; + GivePokemonItem(gUnknown_203B2B8->pokeSpecies, &gUnknown_203B2B8->item2); + sub_8026074(0xA); + break; + case 2: + PlaySound(0x14d); + if(IsThrowableItem(gUnknown_203B2B8->item2.id)) + { + gTeamInventory_203B460->teamStorage[gUnknown_203B2B8->item2.id] += gUnknown_203B2B8->item2.quantity; + } + else + { + gTeamInventory_203B460->teamStorage[gUnknown_203B2B8->item2.id] += 1; + } + + gUnknown_203B2B8->item2.id = ITEM_NOTHING; + gUnknown_203B2B8->item2.quantity = 0; + GivePokemonItem(gUnknown_203B2B8->pokeSpecies, &gUnknown_203B2B8->item2); + sub_8026074(0xB); + break; + case 0: + default: + sub_8026074(0x19); + break; + } +} diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c index 644d44ea9..bc56660ac 100644 --- a/src/pokemon_mid.c +++ b/src/pokemon_mid.c @@ -553,7 +553,7 @@ void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2 * a1, struct Po HeldItemToSlot(slot, held); } else { - slot->id = 0; + slot->id = ITEM_NOTHING; slot->quantity = 0; slot->flags = 0; } @@ -601,7 +601,7 @@ void xxx_pokemon2_to_pokemonstruct_808DF44(struct PokemonStruct* pokemon, struct SlotToHeldItem(&pokemon->heldItem, &a2->itemSlot); } else { - pokemon->heldItem.id = 0; + pokemon->heldItem.id = ITEM_NOTHING; } } @@ -613,7 +613,7 @@ void sub_808DFDC(s32 a1, struct PokemonStruct2* a2) SlotToHeldItem(&pokemon->heldItem, &a2->itemSlot); } else { - pokemon->heldItem.id = 0; + pokemon->heldItem.id = ITEM_NOTHING; } } From 456aa703c4fec44dd842793f00c20320465e5e1c Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 28 May 2023 10:45:13 -0700 Subject: [PATCH 11/21] move more data to src --- data/data_80D47B8.s | 2 - data/data_80E6F20.s | 233 --------------------------------- data/data_80E7D40.s | 114 ---------------- data/data_80F59C8.s | 14 +- data/text/luminous_cave.inc | 128 ------------------ ld_script.txt | 5 +- src/debug_menu_1.c | 49 ++++--- src/debug_menu_mid.c | 69 ++++++++-- src/friend_list_menu.c | 2 +- src/luminous_cave.c | 133 +++++++++++++++---- src/party_list_menu.c | 3 +- src/rescue_password_menu.c | 254 ++++++++++++++++++++++++++++++++---- sym_ewram2.txt | 11 +- 13 files changed, 451 insertions(+), 566 deletions(-) delete mode 100644 data/data_80E6F20.s delete mode 100644 data/text/luminous_cave.inc diff --git a/data/data_80D47B8.s b/data/data_80D47B8.s index 0af023088..39ec6be5d 100644 --- a/data/data_80D47B8.s +++ b/data/data_80D47B8.s @@ -4612,5 +4612,3 @@ gUnknown_80DCA2C: @ 80DCA2C .align 2,0 .4byte gUnknown_80DCA2C - #include "text/luminous_cave.inc" - diff --git a/data/data_80E6F20.s b/data/data_80E6F20.s deleted file mode 100644 index 3b966715b..000000000 --- a/data/data_80E6F20.s +++ /dev/null @@ -1,233 +0,0 @@ - .section .rodata - - .global gUnknown_80E71E4 -gUnknown_80E71E4: @ 80E71E4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E71FC -gUnknown_80E71FC: @ 80E71FC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7214 -gUnknown_80E7214: @ 80E7214 - .4byte Error_80E7268, 0xC - .4byte IncorrectPassword_80E7250, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -CheckAgain_80E7234: - .string "{CENTER_ALIGN}Please check it again.\0" - .align 2, 0 - -IncorrectPassword_80E7250: - .string "{CENTER_ALIGN}Incorrect password!\0" - .align 2, 0 - -Error_80E7268: - .string "{CENTER_ALIGN}{COLOR_1 RED}Error!{END_COLOR_TEXT_1} \0" - .align 2, 0 - - .global gUnknown_80E7278 -gUnknown_80E7278: @ 80E7278 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7290 -gUnknown_80E7290: @ 80E7290 - .4byte Success_80E72D8, 0xC - .4byte PasswordAccept_80E72B4, 0xC - .4byte DATA_80E72B0, 0xC - .4byte 0, 0xA - -DATA_80E72B0: - .string " \0" - .align 2, 0 - -PasswordAccept_80E72B4: - .string "{CENTER_ALIGN}The password has been accepted.\0" - .align 2, 0 - -Success_80E72D8: - .string "{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE_2}Success!{END_COLOR_TEXT_1} \0" - .align 2, 0 - - .global gUnknown_80E72EC -gUnknown_80E72EC: @ 80E72EC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7304 -gUnknown_80E7304: @ 80E7304 - .4byte Error_80E7268, 0xC - .4byte NotSOSMail_80E7324, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -NotSOSMail_80E7324: - .string "{CENTER_ALIGN}This is not an {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\0" - .align 2, 0 - - .global gUnknown_80E7344 -gUnknown_80E7344: @ 80E7344 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E735C -gUnknown_80E735C: @ 80E735C - .4byte Error_80E7268, 0xC - .4byte ReceiveSOSMail_80E737C, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -ReceiveSOSMail_80E737C: - .string "{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1} has been received already.\0" - .align 2, 0 - - .global gUnknown_80E73AC -gUnknown_80E73AC: @ 80E73AC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E73C4 -gUnknown_80E73C4: @ 80E73C4 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E73E4, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E73E4: - .string "#+This is not an #CGA-OK Mail#R.\0" - .align 2, 0 - - .global gUnknown_80E7408 -gUnknown_80E7408: @ 80E7408 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7420 -gUnknown_80E7420: @ 80E7420 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E7440, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E7440: - .string "#+This #CGA-OK Mail#R cannot be used.\0" - .align 2, 0 - - .global gUnknown_80E7468 -gUnknown_80E7468: @ 80E7468 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7480 -gUnknown_80E7480: @ 80E7480 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E74A0, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E74A0: - .string "#+This is not a #CGThank-You Mail#R.\0" - .align 2, 0 - - .global gUnknown_80E74C8 -gUnknown_80E74C8: @ 80E74C8 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E74E0 -gUnknown_80E74E0: @ 80E74E0 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E7500, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E7500: - .string "#+This #CGThank-You Mail#R cannot be used.\0" - .align 2, 0 - - .global gUnknown_80E752C -gUnknown_80E752C: @ 80E752C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7544 -gUnknown_80E7544: @ 80E7544 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E7564, 0xC - .4byte CheckAgain_80E7234, 0xC - .4byte 0, 0xA - -sUnknown_80E7564: - .string "#+This is not a #CGWonder Mail#R.\0" - .align 2, 0 - - .global gUnknown_80E7588 -gUnknown_80E7588: @ 80E7588 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x09, 0x00 - .byte 0x17, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E75A0 -gUnknown_80E75A0: @ 80E75A0 - .4byte Error_80E7268, 0xC - .4byte sUnknown_80E75CC, 0xC - .4byte sUnknown_80E75C0, 0xC - .4byte 0, 0xA - -sUnknown_80E75C0: - .string "#+new mail.\0" - .align 2, 0 - -sUnknown_80E75CC: - .string "#+There is no space for receiving\0" - .align 2, 0 - - .string "pksdir0\0" - diff --git a/data/data_80E7D40.s b/data/data_80E7D40.s index 9be009b20..b0e8b0f97 100644 --- a/data/data_80E7D40.s +++ b/data/data_80E7D40.s @@ -1,119 +1,5 @@ .section .rodata - .global gUnknown_80E7E34 -gUnknown_80E7E34: @ 80E7E34 -@ replacing .incbin "baserom.gba", 0x000e7e34, 0x18 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7E4C -gUnknown_80E7E4C: @ 80E7E4C -@ replacing .incbin "baserom.gba", 0x000e7e4c, 0x18 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x04, 0x00 - .byte 0x06, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7E64 -gUnknown_80E7E64: @ 80E7E64 -@ replacing .incbin "baserom.gba", 0x000e7e64, 0x18 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x0e, 0x00 - .byte 0x06, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gDebug_NumberText -gDebug_NumberText: @ 80E7E7C - .string "Number?\0" - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_80E7E8C -gUnknown_80E7E8C: @ 80E7E8C -@ replacing .incbin "baserom.gba", 0x000e7e8c, 0x18 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7EA4 -gUnknown_80E7EA4: @ 80E7EA4 -@ replacing .incbin "baserom.gba", 0x000e7ea4, 0x18 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x15, 0x00, 0x04, 0x00 - .byte 0x06, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - - .global gDebug_CloseText -gDebug_CloseText: @ 80E7EBC - .string "CLOSE\0" - .align 2,0 - - .global gDebug_OpenText -gDebug_OpenText: @ 80E7EC4 - .string "OPEN\0" - .align 2,0 - .string "pksdir0\0" - .align 2,0 - - .global gUnknown_80E7ED4 -gUnknown_80E7ED4: @ 80E7ED4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7EEC -gUnknown_80E7EEC: @ 80E7EEC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x13, 0x00, 0x04, 0x00 - .byte 0x09, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E7F04 -gUnknown_80E7F04: @ 80E7F04 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x13, 0x00, 0x0e, 0x00 - .byte 0x06, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gDebug_NumberText2 -gDebug_NumberText2: @ 80E7F1C - .string "Number?\0" - .align 2,0 - - .global gDebug_LevelText -gDebug_LevelText: @ 80E7F24 - .string "LEVEL\0" - .align 2,0 - - .global gUnknown_80E7F2C -gUnknown_80E7F2C: @ 80E7F2C - .string "Name\0" - .align 2,0 - .string "pksdir0\0" - .align 2,0 - .global gUnknown_80E7F3C gUnknown_80E7F3C: @ 80E7F3C .byte 0x00, 0x00, 0x00, 0x00 diff --git a/data/data_80F59C8.s b/data/data_80F59C8.s index 8708b200a..1f8b44989 100644 --- a/data/data_80F59C8.s +++ b/data/data_80F59C8.s @@ -441,15 +441,23 @@ gUnknown_80F6964: @ 80F6964 .global gUnknown_80F697C gUnknown_80F697C: @ 80F697C - .incbin "baserom.gba", 0xF697C, 0x14 + .byte 0x58, 0x00, 0x00, 0x00 + .string "pksdir0" + .align 2,0 + .string "pksdir0" + .align 2,0 .global gUnknown_80F6990 gUnknown_80F6990: @ 80F6990 - .incbin "baserom.gba", 0xF6990, 0xC + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00 .global gUnknown_80F699C gUnknown_80F699C: @ 80F699C - .incbin "baserom.gba", 0xF699C, 0xC + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00 .global gUnknown_80F69A8 gUnknown_80F69A8: @ 80F69A8 diff --git a/data/text/luminous_cave.inc b/data/text/luminous_cave.inc deleted file mode 100644 index d7136afa8..000000000 --- a/data/text/luminous_cave.inc +++ /dev/null @@ -1,128 +0,0 @@ -gLuminousCaveSeekAwakening:: @ 80DCA34 - .string "{CENTER_ALIGN}...{WAIT_PRESS}A voice emanates from somewhere...{EXTRA_MSG}" - .string "{CENTER_ALIGN}...Ye who seek awakening...{EXTRA_MSG}" - .string "{CENTER_ALIGN}This is Luminous Cave.{WAIT_PRESS}\n" - .string "{CENTER_ALIGN}Do ye seek a new evolution?\0" - .align 2, 0 - -gLuminousCaveAskEvolution:: @ 80DCAB8 - .string "{CENTER_ALIGN}Do ye seek evolution?\0" - .align 2, 0 - -gLuminousCaveEvolutionInfo:: @ 80DCAD0 - .string "{CENTER_ALIGN}There are those among Pokémon\n" - .string "{CENTER_ALIGN}that can evolve.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Such Pokémon can evolve at this very\n" - .string "{CENTER_ALIGN}spot if they satisfy certain conditions.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Evolution brings about changes\n" - .string "{CENTER_ALIGN}in appearance and abilities.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Not only that{COMMA} some Pokémon even change\n" - .string "{CENTER_ALIGN}type and learn different moves.{EXTRA_MSG}" - .string "{CENTER_ALIGN}However...{WAIT_PRESS} The requirements for\n" - .string "{CENTER_ALIGN}evolution differ among Pokémon.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Some become ready for evolution\n" - .string "{CENTER_ALIGN}merely by leveling up.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Still others may need special items\n" - .string "{CENTER_ALIGN}to attain evolution.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye must also be aware of this:{EXTRA_MSG}" - .string "{CENTER_ALIGN}Once it has evolved{COMMA} a Pokémon\n" - .string "{CENTER_ALIGN}can never regain its previous form.{EXTRA_MSG}" - .string "{CENTER_ALIGN}That is why ye must think carefully\n" - .string "{CENTER_ALIGN}before committing to evolution.\0" - .align 2, 0 - -gLuminousCaveYeShallReturn:: @ 80DCD5C - .string "{CENTER_ALIGN}Ye shall return if evolution\n" - .string "{CENTER_ALIGN}is what ye seek...\0" - .align 2, 0 - -gLuminousCaveGiveItem:: @ 80DCD90 - .string "{CENTER_ALIGN}Will ye give an item for evolution?\0" - .align 2, 0 - -gLuminousCaveGiveAnotherItem:: @ 80DCDB8 - .string "{CENTER_ALIGN}Will ye give yet another item?\0" - .align 2, 0 - -gLuminousCaveLackWhatIsNeeded:: @ 80DCDDC - .string "{CENTER_ALIGN}Alas{COMMA} ye seem to lack what is needed\n" - .string "{CENTER_ALIGN}for evolution.\0" - .align 2, 0 - -gLuminousCaveOnlyOneItem:: @ 80DCE18 - .string "{CENTER_ALIGN}Ye seem to have but one item.\0" - .align 2, 0 - -gLuminousCaveLetUsBegin:: @ 80DCE38 - .string "{CENTER_ALIGN}...Ye who seek awakening...\n" - .string "{CENTER_ALIGN}Let us begin.\0" - .align 2, 0 - -gLuminousCaveChangedAppearance:: @ 80DCE68 - .string "{CENTER_ALIGN}...{WAIT_PRESS}$n0 is undergoing changes...{EXTRA_MSG}" - .string "{CENTER_ALIGN}$n0{APOSTROPHE}s appearance changed...{EXTRA_MSG}\0" - .align 2, 0 - -gLuminousCaveEvolved:: @ 80DCEB0 - .string "{CENTER_ALIGN}It evolved from {COLOR_1 GREEN}{ARG_POKEMON_0}{END_COLOR_TEXT_1}\n" - .string "{CENTER_ALIGN}to {COLOR_1 YELLOW}{ARG_POKEMON_1}{END_COLOR_TEXT_1}!\0" - .align 2, 0 - -gLuminousCaveComeAlone:: @ 80DCEDC - .string "{CENTER_ALIGN}...{EXTRA_MSG}" - .string "{CENTER_ALIGN}One cannot evolve if one\n" - .string "{CENTER_ALIGN}is in the company of others.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Come alone if ye wish to evolve.\0" - .align 2, 0 - -gLuminousCaveLackLevel:: @ 80DCF44 - .string "{CENTER_ALIGN}...{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye have not high enough a level.\0" - .align 2, 0 - -gLuminousCaveCantEvolveAnymore:: @ 80DCF88 - .string "{CENTER_ALIGN}...{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye cannot evolve anymore.\0" - .align 2, 0 - -gLuminousCaveLackFriendArea:: @ 80DCFAC - .string "{CENTER_ALIGN}...{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye need your Friend Area to evolve.\0" - .align 2, 0 - -gLuminousCaveLackRoom:: @ 80DCFF4 - .string "{CENTER_ALIGN}...{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" - .string "{CENTER_ALIGN}The Friend Area to which ye shall go\n" - .string "{CENTER_ALIGN}has no room for ye.\0" - .align 2, 0 - -gLuminousCaveLackIQ:: @ 80DD054 - .string "{CENTER_ALIGN}...{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye seem to lack the IQ to evolve.\0" - .align 2, 0 - -gLuminousCaveLackItem:: @ 80DD098 - .string "{CENTER_ALIGN}{CENTER_ALIGN}...{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye seem to lack an item to evolve.\0" - .align 2, 0 - -gLuminousCaveCantEvolveYet:: @ 80DD0E0 - .string "{CENTER_ALIGN}{CENTER_ALIGN}...{EXTRA_MSG}" - .string "{CENTER_ALIGN}Ye cannot evolve yet. \0" - .align 2, 0 - -gLuminousCaveGiveName:: @ 80DD104 - .string "{CENTER_ALIGN}Ye must give a name to\n" - .string "{CENTER_ALIGN}the evolved Pokémon. \0" - .align 2, 0 - - .string "pksdir0\0" - .align 2, 0 - - .string "pksdir0\0" - .align 2, 0 diff --git a/ld_script.txt b/ld_script.txt index 1b0c61049..74463e75d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -414,6 +414,7 @@ SECTIONS { src/save.o(.rodata); src/menu_input.o(.rodata); data/data_80D47B8.o(.rodata); + src/luminous_cave.o(.rodata); src/friend_list_menu.o(.rodata); src/party_list_menu.o(.rodata); src/friend_area_action_menu.o(.rodata); @@ -441,10 +442,12 @@ SECTIONS { src/trade_items_menu.o(.rodata); data/data_80E59A8.o(.rodata); src/save_menu.o(.rodata); - data/data_80E6F20.o(.rodata); + src/rescue_password_menu.o(.rodata); src/load_screen.o(.rodata); src/wonder_mail_main_menu.o(.rodata); src/debug_menu.o(.rodata); + src/debug_menu_mid.o(.rodata); + src/debug_menu_1.o(.rodata); data/data_80E7D40.o(.rodata); src/pokemon_mail.o(.rodata); data/personality_test.o(.rodata); diff --git a/src/debug_menu_1.c b/src/debug_menu_1.c index a680eacba..8a26460f6 100644 --- a/src/debug_menu_1.c +++ b/src/debug_menu_1.c @@ -7,32 +7,53 @@ #include "menu.h" #include "menu_input.h" - extern struct unkStruct_203B3F8 *gUnknown_203B3F8; + +const struct UnkTextStruct2 gUnknown_80E7ED4 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL +}; +const struct UnkTextStruct2 gUnknown_80E7EEC = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x13, 0x00, 0x04, 0x00, + 0x09, 0x03, + 0x03, 0x00, + NULL + +}; +const struct UnkTextStruct2 gUnknown_80E7F04 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x13, 0x00, 0x0e, 0x00, + 0x06, 0x04, + 0x04, 0x00, + NULL + +}; +ALIGNED(4) const u8 gDebug_NumberText2[] = "Number?"; +ALIGNED(4) const u8 gDebug_LevelText[] = "LEVEL"; +ALIGNED(4) const u8 gDebug_Name[] = "Name"; +static const u8 fill0[] = "pksdir0"; + extern u32 sub_8013BBC(u32 *); extern void sub_803AE58(void); extern u32 sub_8016080(void); extern void sub_803ACD0(u32); extern void sub_80160D8(void); - extern u32 sub_8023A94(u32); extern s16 sub_8023B44(void); extern void sub_8023C60(void); - -extern struct UnkTextStruct2 gUnknown_80E7ED4; -extern struct UnkTextStruct2 gUnknown_80E7EEC; -extern struct UnkTextStruct2 gUnknown_80E7F04; -extern u8 gDebug_NumberText2[]; -extern u8 gDebug_LevelText[]; -extern u8 gUnknown_80E7F2C[]; - extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_8013C68(u32 *); extern void sub_80073E0(u32); extern void sub_8023DA4(void); -extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32); - +extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32); extern void sub_803ACE8(); extern void sub_803AD88(); extern void sub_803AF38(); @@ -43,10 +64,8 @@ extern void sub_8023868(u32, u32, u32, u32); extern void sub_8023B7C(u32); extern void sub_8013AA0(u32 *); extern void sub_801602C(u32, u8 *); - extern void sub_803AEB0(); - u32 sub_803AC24(void) { gUnknown_203B3F8 = MemoryAlloc(sizeof(struct unkStruct_203B3F8), 8); @@ -182,7 +201,7 @@ void sub_803AEB0(void) gUnknown_203B3F8->unk90[loopMax].text = gDebug_LevelText; gUnknown_203B3F8->unk90[loopMax].menuAction = 4; loopMax += 1; - gUnknown_203B3F8->unk90[loopMax].text = gUnknown_80E7F2C; + gUnknown_203B3F8->unk90[loopMax].text = gDebug_Name; gUnknown_203B3F8->unk90[loopMax].menuAction = 5; loopMax += 1; gUnknown_203B3F8->unk90[loopMax].text = NULL; diff --git a/src/debug_menu_mid.c b/src/debug_menu_mid.c index 8feda8987..37e0b3344 100644 --- a/src/debug_menu_mid.c +++ b/src/debug_menu_mid.c @@ -6,6 +6,7 @@ #include "menu.h" #include "text.h" #include "menu_input.h" +#include "friend_area.h" struct unkStruct_203B3F0 { @@ -45,19 +46,62 @@ struct unkStruct_203B3F4 extern struct unkStruct_203B3F4 *gUnknown_203B3F4; -extern void sub_801B3C0(struct Item *); -extern void sub_8013AA0(u32 *); -extern struct UnkTextStruct2 gUnknown_80E7E34; -extern struct UnkTextStruct2 gUnknown_80E7E4C; -extern struct UnkTextStruct2 gUnknown_80E7E64; -extern const char gDebug_NumberText; -extern struct UnkTextStruct2 gUnknown_80E7E8C; -extern struct UnkTextStruct2 gUnknown_80E7EA4; +const struct UnkTextStruct2 gUnknown_80E7E34 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL + +}; +const struct UnkTextStruct2 gUnknown_80E7E4C = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x14, 0x00, 0x04, 0x00, + 0x06, 0x03, + 0x03, 0x00, + NULL + +}; +const struct UnkTextStruct2 gUnknown_80E7E64 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x14, 0x00, 0x0e, 0x00, + 0x06, 0x04, + 0x04, 0x00, + NULL + +}; +ALIGNED(4) const char gDebug_NumberText[] = "Number?"; +ALIGNED(4) static const u8 fill0[] = "pksdir0"; +const struct UnkTextStruct2 gUnknown_80E7E8C = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL + +}; +const struct UnkTextStruct2 gUnknown_80E7EA4 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x15, 0x00, 0x04, 0x00, + 0x06, 0x03, + 0x03, 0x00, + NULL + +}; +ALIGNED(4) const u8 gDebug_CloseText[] = "CLOSE"; +ALIGNED(4) const u8 gDebug_OpenText[] = "OPEN"; +ALIGNED(4) static const u8 fill1[] = "pksdir0"; extern bool8 *gFriendAreas; extern const char *gUnknown_80D4970[]; - +extern void sub_801B3C0(struct Item *); +extern void sub_8013AA0(u32 *); extern void sub_801C8C4(u32, u32, u32, u32); extern void sub_801CB5C(u32); extern void sub_801CCD8(); @@ -77,9 +121,6 @@ extern void sub_8021354(u32); extern void sub_8021494(); extern void sub_803AA34(); extern void sub_8021774(u8,u32, u32); -extern u8 gDebug_CloseText[]; -extern u8 gDebug_OpenText[]; -extern void UnlockFriendArea(u8); extern void sub_809249C(u8, u32); extern void sub_8021830(void); extern u32 sub_80217EC(void); @@ -218,7 +259,7 @@ void sub_803A690(void) { sub_8008C54(gUnknown_203B3F0->unkB0); sub_80073B8(gUnknown_203B3F0->unkB0); - xxx_call_draw_string(4, 0, &gDebug_NumberText, gUnknown_203B3F0->unkB0, 0); + xxx_call_draw_string(4, 0, gDebug_NumberText, gUnknown_203B3F0->unkB0, 0); sub_8013C68(&gUnknown_203B3F0->unk9C); sub_80073E0(gUnknown_203B3F0->unkB0); sub_801CCD8(); @@ -229,7 +270,7 @@ void sub_803A6F0(void) { s32 loopMax = 0; - gUnknown_203B3F0->menuItems[loopMax].text = &gDebug_NumberText; + gUnknown_203B3F0->menuItems[loopMax].text = gDebug_NumberText; gUnknown_203B3F0->menuItems[loopMax].menuAction = 2; gUnknown_203B3F0->menuAction = 2; if (!IsNotMoneyOrUsedTMItem(gUnknown_203B3F0->id)) { diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index b8ade7ed0..a481479ef 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -37,7 +37,7 @@ struct unkStruct_203B2B4 u16 unk108[8]; struct UnkTextStruct2 unk118[4]; }; -extern struct unkStruct_203B2B4 *gUnknown_203B2B4; +EWRAM_DATA_2 struct unkStruct_203B2B4 *gUnknown_203B2B4 = {0}; const struct UnkTextStruct2 gUnknown_80DD148 = { 0x00, 0x00, 0x00, 0x00, diff --git a/src/luminous_cave.c b/src/luminous_cave.c index 48c0aab5c..51aeda626 100644 --- a/src/luminous_cave.c +++ b/src/luminous_cave.c @@ -1,3 +1,4 @@ +#include "gba/defines.h" #include "global.h" #include "constants/bg_music.h" #include "constants/colors.h" @@ -45,38 +46,126 @@ struct unkStruct_203B2B0 struct UnkTextStruct2 unk114[4]; }; -extern struct unkStruct_203B2B0 *gUnknown_203B2B0; +EWRAM_DATA_2 struct unkStruct_203B2B0 *gUnknown_203B2B0 = {0}; extern struct UnkTextStruct2 gUnknown_80DCA00; extern struct UnkTextStruct2 gUnknown_80DC9E8; extern u8 gPlayerName[]; extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DFE8[]; -extern u8 gLuminousCaveSeekAwakening[]; -extern u8 gLuminousCaveEvolutionInfo[]; -extern u8 gLuminousCaveAskEvolution[]; -extern u8 gLuminousCaveYeShallReturn[]; -extern u8 gLuminousCaveGiveItem[]; -extern u8 gLuminousCaveGiveAnotherItem[]; -extern u8 gLuminousCaveLackWhatIsNeeded[]; -extern u8 gLuminousCaveOnlyOneItem[]; -extern u8 gLuminousCaveLetUsBegin[]; -extern u8 gLuminousCaveChangedAppearance[]; -extern u8 gLuminousCaveEvolved[]; -extern u8 gLuminousCaveGiveName[]; -extern u8 gLuminousCaveComeAlone[]; -extern u8 gLuminousCaveLackLevel[]; -extern u8 gLuminousCaveCantEvolveAnymore[]; -extern u8 gLuminousCaveLackFriendArea[]; -extern u8 gLuminousCaveLackRoom[]; -extern u8 gLuminousCaveLackIQ[]; -extern u8 gLuminousCaveLackItem[]; -extern u8 gLuminousCaveCantEvolveYet[]; -extern u8 gUnknown_80DCA18[]; + extern u8 *gUnknown_80D4970[]; extern u8 *gUnknown_80D4934[]; + +extern u8 gUnknown_80DCA18[]; extern u8 gUnknown_80DCA24[]; extern u8 gUnknown_80DCA2C[]; +ALIGNED(4) const u8 gLuminousCaveSeekAwakening[] = _( + "{CENTER_ALIGN}...{WAIT_PRESS}A voice emanates from somewhere...{EXTRA_MSG}" + "{CENTER_ALIGN}...Ye who seek awakening...{EXTRA_MSG}" + "{CENTER_ALIGN}This is Luminous Cave.{WAIT_PRESS}\n" + "{CENTER_ALIGN}Do ye seek a new evolution?"); + +ALIGNED(4) const u8 gLuminousCaveAskEvolution[] = _( + "{CENTER_ALIGN}Do ye seek evolution?"); + +ALIGNED(4) const u8 gLuminousCaveEvolutionInfo[] = _( + "{CENTER_ALIGN}There are those among Pokémon\n" + "{CENTER_ALIGN}that can evolve.{EXTRA_MSG}" + "{CENTER_ALIGN}Such Pokémon can evolve at this very\n" + "{CENTER_ALIGN}spot if they satisfy certain conditions.{EXTRA_MSG}" + "{CENTER_ALIGN}Evolution brings about changes\n" + "{CENTER_ALIGN}in appearance and abilities.{EXTRA_MSG}" + "{CENTER_ALIGN}Not only that{COMMA} some Pokémon even change\n" + "{CENTER_ALIGN}type and learn different moves.{EXTRA_MSG}" + "{CENTER_ALIGN}However...{WAIT_PRESS} The requirements for\n" + "{CENTER_ALIGN}evolution differ among Pokémon.{EXTRA_MSG}" + "{CENTER_ALIGN}Some become ready for evolution\n" + "{CENTER_ALIGN}merely by leveling up.{EXTRA_MSG}" + "{CENTER_ALIGN}Still others may need special items\n" + "{CENTER_ALIGN}to attain evolution.{EXTRA_MSG}" + "{CENTER_ALIGN}Ye must also be aware of this:{EXTRA_MSG}" + "{CENTER_ALIGN}Once it has evolved{COMMA} a Pokémon\n" + "{CENTER_ALIGN}can never regain its previous form.{EXTRA_MSG}" + "{CENTER_ALIGN}That is why ye must think carefully\n" + "{CENTER_ALIGN}before committing to evolution."); + +ALIGNED(4) const u8 gLuminousCaveYeShallReturn[] = _( + "{CENTER_ALIGN}Ye shall return if evolution\n" + "{CENTER_ALIGN}is what ye seek..."); + +ALIGNED(4) const u8 gLuminousCaveGiveItem[] = _( + "{CENTER_ALIGN}Will ye give an item for evolution?"); + +ALIGNED(4) const u8 gLuminousCaveGiveAnotherItem[] = _( + "{CENTER_ALIGN}Will ye give yet another item?"); + +ALIGNED(4) const u8 gLuminousCaveLackWhatIsNeeded[] = _( + "{CENTER_ALIGN}Alas{COMMA} ye seem to lack what is needed\n" + "{CENTER_ALIGN}for evolution."); + +ALIGNED(4) const u8 gLuminousCaveOnlyOneItem[] = _( + "{CENTER_ALIGN}Ye seem to have but one item."); + +ALIGNED(4) const u8 gLuminousCaveLetUsBegin[] = _( + "{CENTER_ALIGN}...Ye who seek awakening...\n" + "{CENTER_ALIGN}Let us begin."); + +ALIGNED(4) const u8 gLuminousCaveChangedAppearance[] = _( + "{CENTER_ALIGN}...{WAIT_PRESS}$n0 is undergoing changes...{EXTRA_MSG}" + "{CENTER_ALIGN}$n0{APOSTROPHE}s appearance changed...{EXTRA_MSG}"); + +ALIGNED(4) const u8 gLuminousCaveEvolved[] = _( + "{CENTER_ALIGN}It evolved from {COLOR_1 GREEN}{ARG_POKEMON_0}{END_COLOR_TEXT_1}\n" + "{CENTER_ALIGN}to {COLOR_1 YELLOW}{ARG_POKEMON_1}{END_COLOR_TEXT_1}!"); + +ALIGNED(4) const u8 gLuminousCaveComeAlone[] = _( + "{CENTER_ALIGN}...{EXTRA_MSG}" + "{CENTER_ALIGN}One cannot evolve if one\n" + "{CENTER_ALIGN}is in the company of others.{EXTRA_MSG}" + "{CENTER_ALIGN}Come alone if ye wish to evolve."); + +ALIGNED(4) const u8 gLuminousCaveLackLevel[] = _( + "{CENTER_ALIGN}...{EXTRA_MSG}" + "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" + "{CENTER_ALIGN}Ye have not high enough a level."); + +ALIGNED(4) const u8 gLuminousCaveCantEvolveAnymore[] = _( + "{CENTER_ALIGN}...{EXTRA_MSG}" + "{CENTER_ALIGN}Ye cannot evolve anymore."); + +ALIGNED(4) const u8 gLuminousCaveLackFriendArea[] = _( + "{CENTER_ALIGN}...{EXTRA_MSG}" + "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" + "{CENTER_ALIGN}Ye need your Friend Area to evolve."); + +ALIGNED(4) const u8 gLuminousCaveLackRoom[] = _( + "{CENTER_ALIGN}...{EXTRA_MSG}" + "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" + "{CENTER_ALIGN}The Friend Area to which ye shall go\n" + "{CENTER_ALIGN}has no room for ye."); + +ALIGNED(4) const u8 gLuminousCaveLackIQ[] = _( + "{CENTER_ALIGN}...{EXTRA_MSG}" + "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" + "{CENTER_ALIGN}Ye seem to lack the IQ to evolve."); + +ALIGNED(4) const u8 gLuminousCaveLackItem[] = _( + "{CENTER_ALIGN}{CENTER_ALIGN}...{EXTRA_MSG}" + "{CENTER_ALIGN}Ye cannot evolve yet.{EXTRA_MSG}" + "{CENTER_ALIGN}Ye seem to lack an item to evolve."); + +ALIGNED(4) const u8 gLuminousCaveCantEvolveYet[] = _( + "{CENTER_ALIGN}{CENTER_ALIGN}...{EXTRA_MSG}" + "{CENTER_ALIGN}Ye cannot evolve yet. "); + +ALIGNED(4) const u8 gLuminousCaveGiveName[] = _( + "{CENTER_ALIGN}Ye must give a name to\n" + "{CENTER_ALIGN}the evolved Pokémon. "); + +ALIGNED(4) static const u8 fill0[] = "pksdir0"; +ALIGNED(4) static const u8 fill1[] = "pksdir0"; + extern struct PokemonStruct *GetPlayerPokemonStruct(void); extern void UpdateLuminousCaveState(u32); diff --git a/src/party_list_menu.c b/src/party_list_menu.c index dc80288cd..167cfedb8 100644 --- a/src/party_list_menu.c +++ b/src/party_list_menu.c @@ -1,3 +1,4 @@ +#include "gba/defines.h" #include "global.h" #include "constants/dungeon.h" #include "item.h" @@ -39,7 +40,7 @@ struct unkStruct_203B2B8 u16 unk20C[10]; struct UnkTextStruct2 unk220[4]; }; -extern struct unkStruct_203B2B8 *gUnknown_203B2B8; +EWRAM_DATA_2 struct unkStruct_203B2B8 *gUnknown_203B2B8 = {0}; const struct UnkTextStruct2 gUnknown_80DD310 = { 0x00, 0x00, 0x00, 0x00, diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 7b9dd3704..14a7a8121 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -18,12 +18,239 @@ EWRAM_DATA u32 gUnknown_202EC4C = {0}; EWRAM_DATA u8 gRescuePasswordBuffer[RESCUE_PASSWORD_SIZE] = {0}; extern struct unkStruct_203B484 *gUnknown_203B484; -extern struct UnkTextStruct2 gUnknown_80E71E4; EWRAM_DATA_2 u8 gUnknown_203B368 = {0}; EWRAM_DATA_2 u32 gUnknown_203B36C = {0}; EWRAM_DATA_2 struct RescuePasswordMenu *gRescuePasswordMenu = {0}; +const struct UnkTextStruct2 gUnknown_80E71E4 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL + +}; + +const struct UnkTextStruct2 gUnknown_80E71FC = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 Error_80E7268[]; +const u8 IncorrectPassword_80E7250[]; +const u8 CheckAgain_80E7234[]; + +const struct MenuItem gUnknown_80E7214[4] = { + {Error_80E7268, 0xC}, + {IncorrectPassword_80E7250, 0xC}, + {CheckAgain_80E7234, 0xC}, + {NULL, 0xA}, +}; + +ALIGNED(4) const u8 CheckAgain_80E7234[] = _("{CENTER_ALIGN}Please check it again."); +ALIGNED(4) const u8 IncorrectPassword_80E7250[] = _("{CENTER_ALIGN}Incorrect password!"); +ALIGNED(4) const u8 Error_80E7268[] = _("{CENTER_ALIGN}{COLOR_1 RED}Error!{END_COLOR_TEXT_1} "); + +const struct UnkTextStruct2 gUnknown_80E7278 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 Success_80E72D8[]; +const u8 PasswordAccept_80E72B4[]; +const u8 DATA_80E72B0[]; + +const struct MenuItem gUnknown_80E7290[4] = { + {Success_80E72D8, 0xC}, + {PasswordAccept_80E72B4, 0xC}, + {DATA_80E72B0, 0xC}, + {NULL, 0xA}, +}; + +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_1 LIGHT_BLUE_2}Success!{END_COLOR_TEXT_1} "); + +const struct UnkTextStruct2 gUnknown_80E72EC = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 NotSOSMail_80E7324[]; + +const struct MenuItem gUnknown_80E7304[4] = { + {Error_80E7268, 0xC}, + {NotSOSMail_80E7324, 0xC}, + {CheckAgain_80E7234, 0xC}, + {NULL, 0xA}, +}; + +ALIGNED(4) const u8 NotSOSMail_80E7324[] = _("{CENTER_ALIGN}This is not an {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}."); + +const struct UnkTextStruct2 gUnknown_80E7344 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 ReceiveSOSMail_80E737C[]; + +const struct MenuItem gUnknown_80E735C[4] = { + {Error_80E7268, 0xC}, + {ReceiveSOSMail_80E737C, 0xC}, + {CheckAgain_80E7234, 0xC}, + {NULL, 0xA}, +}; + +ALIGNED(4) const u8 ReceiveSOSMail_80E737C[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1} has been received already."); + +const struct UnkTextStruct2 gUnknown_80E73AC = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 sUnknown_80E73E4[]; + +const struct MenuItem gUnknown_80E73C4[4] = { + {Error_80E7268, 0xC}, + {sUnknown_80E73E4, 0xC}, + {CheckAgain_80E7234, 0xC}, + {NULL, 0xA}, +}; + +ALIGNED(4) const u8 sUnknown_80E73E4[] = _("{CENTER_ALIGN}This is not an #CGA-OK Mail{END_COLOR_TEXT_1}."); + +const struct UnkTextStruct2 gUnknown_80E7408 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 sUnknown_80E7440[]; + +const struct MenuItem gUnknown_80E7420[4] = { + {Error_80E7268, 0xC}, + {sUnknown_80E7440, 0xC}, + {CheckAgain_80E7234, 0xC}, + {NULL, 0xA}, +}; + +ALIGNED(4) const u8 sUnknown_80E7440[] = _("#+This #CGA-OK Mail#R cannot be used."); + +const struct UnkTextStruct2 gUnknown_80E7468 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 sUnknown_80E74A0[]; + +const struct MenuItem gUnknown_80E7480[4] = { + {Error_80E7268, 0xC}, + {sUnknown_80E74A0, 0xC}, + {CheckAgain_80E7234, 0xC}, + {NULL, 0xA}, +}; +ALIGNED(4) const u8 sUnknown_80E74A0[] = _("#+This is not a #CGThank-You Mail#R."); + +const struct UnkTextStruct2 gUnknown_80E74C8 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 sUnknown_80E7500[]; + +const struct MenuItem gUnknown_80E74E0[4] = { + {Error_80E7268, 0xC}, + {sUnknown_80E7500, 0xC}, + {CheckAgain_80E7234, 0xC}, + {NULL, 0xA}, +}; + +ALIGNED(4) const u8 sUnknown_80E7500[] = _("#+This #CGThank-You Mail#R cannot be used."); + +const struct UnkTextStruct2 gUnknown_80E752C = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 sUnknown_80E7564[]; + +const struct MenuItem gUnknown_80E7544[4] = { + {Error_80E7268, 0xC}, + {sUnknown_80E7564, 0xC}, + {CheckAgain_80E7234, 0xC}, + {NULL, 0xA}, +}; +ALIGNED(4) const u8 sUnknown_80E7564[] = _("#+This is not a #CGWonder Mail#R."); + +const struct UnkTextStruct2 gUnknown_80E7588 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x09, 0x00, + 0x17, 0x05, + 0x05, 0x00, + NULL + +}; + +const u8 sUnknown_80E75C0[]; +const u8 sUnknown_80E75CC[]; +const struct MenuItem gUnknown_80E75A0[4] = { + {Error_80E7268, 0xC}, + {sUnknown_80E75CC, 0xC}, + {sUnknown_80E75C0, 0xC}, + {NULL, 0xA}, +}; +ALIGNED(4) const u8 sUnknown_80E75C0[] = _("#+new mail."); +ALIGNED(4) const u8 sUnknown_80E75CC[] = _("#+There is no space for receiving"); + +static const u8 fill0[] = "pksdir0"; + extern s32 sub_8035D74(void); extern void sub_80151C0(u32, u8 *); extern void sub_8031D70(u32, u32); @@ -51,27 +278,6 @@ bool8 sub_8095298(s32); bool8 sub_803D204(u8 *, struct unkStruct_203B480 *); extern s32 GetDungeonFloorCount(u8); -extern struct UnkTextStruct2 gUnknown_80E71FC; -extern struct UnkTextStruct2 gUnknown_80E7278; -extern struct UnkTextStruct2 gUnknown_80E72EC; -extern struct UnkTextStruct2 gUnknown_80E7344; -extern struct UnkTextStruct2 gUnknown_80E73AC; -extern struct UnkTextStruct2 gUnknown_80E7408; -extern struct UnkTextStruct2 gUnknown_80E7468; -extern struct UnkTextStruct2 gUnknown_80E74C8; -extern struct UnkTextStruct2 gUnknown_80E752C; -extern struct UnkTextStruct2 gUnknown_80E7588; - -extern struct MenuItem gUnknown_80E7214[]; -extern struct MenuItem gUnknown_80E7290[]; -extern struct MenuItem gUnknown_80E7304[]; -extern struct MenuItem gUnknown_80E735C[]; -extern struct MenuItem gUnknown_80E73C4[]; -extern struct MenuItem gUnknown_80E7420[]; -extern struct MenuItem gUnknown_80E7480[]; -extern struct MenuItem gUnknown_80E74E0[]; -extern struct MenuItem gUnknown_80E7544[]; -extern struct MenuItem gUnknown_80E75A0[]; void CreateRescuePasswordMenu(u32 currMenu) { @@ -302,7 +508,7 @@ s32 UpdateRescuePasswordMenu(void) } break; case 8: - if (sub_8012FD8(&gRescuePasswordMenu->unk8[0]) == '\0') { + if (!sub_8012FD8(&gRescuePasswordMenu->unk8[0])) { sub_8013114(&gRescuePasswordMenu->unk8[0], &menuAction); } switch(menuAction) @@ -330,7 +536,7 @@ s32 UpdateRescuePasswordMenu(void) } break; case 9: - if (sub_8012FD8(&gRescuePasswordMenu->unk8[0]) == '\0') { + if (!sub_8012FD8(&gRescuePasswordMenu->unk8[0])) { sub_8013114(&gRescuePasswordMenu->unk8[0], &menuAction); } switch(menuAction) diff --git a/sym_ewram2.txt b/sym_ewram2.txt index 113331c7e..ca63191a1 100644 --- a/sym_ewram2.txt +++ b/sym_ewram2.txt @@ -280,14 +280,9 @@ gUnknown_203B2AA: /* 203B2AA */ gUnknown_203B2AC: /* 203B2AC */ .space 0x4 -gUnknown_203B2B0: /* 203B2B0 */ - .space 0x4 - -gUnknown_203B2B4: /* 203B2B4 */ - .space 0x4 - -gUnknown_203B2B8: /* 203B2B8 */ - .space 0x4 +.include "src/luminous_cave.o" +.include "src/friend_list_menu.o" +.include "src/party_list_menu.o" gUnknown_203B2BC: /* 203B2BC */ .space 0x4 From 36942a229c7e2b67960bd366ab65186c5035edc2 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 29 May 2023 21:02:57 -0700 Subject: [PATCH 12/21] fix linker warnings --- src/code_8057824.c | 2 +- src/status_actions.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/code_8057824.c b/src/code_8057824.c index 77ce4e4b0..99971bde4 100644 --- a/src/code_8057824.c +++ b/src/code_8057824.c @@ -27,7 +27,7 @@ struct NaturePowerMove MoveCallback move; }; -struct NaturePowerMove gNaturePowerMoveTable[10]; +extern struct NaturePowerMove gNaturePowerMoveTable[10]; extern u8 gUnknown_202DE58[]; diff --git a/src/status_actions.c b/src/status_actions.c index 0f888366b..28e28fbac 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -162,7 +162,7 @@ struct NaturePowerMove u16 unk2; MoveCallback move; }; -struct NaturePowerMove gUnknown_80F59C8[10]; +extern struct NaturePowerMove gUnknown_80F59C8[10]; bool8 sub_805AFA4(struct Entity * pokemon, struct Entity * target, struct Move *move, u32 param_4) { From 9346ced968174436e26d0e656cb7c128acd363f6 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 29 May 2023 21:03:09 -0700 Subject: [PATCH 13/21] name some strings --- asm/friend_list_menu.s | 8 -------- src/friend_list_menu.c | 40 ++++++++++++++++++++-------------------- 2 files changed, 20 insertions(+), 28 deletions(-) delete mode 100644 asm/friend_list_menu.s diff --git a/asm/friend_list_menu.s b/asm/friend_list_menu.s deleted file mode 100644 index 31a39996f..000000000 --- a/asm/friend_list_menu.s +++ /dev/null @@ -1,8 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - .align 2,0 diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index a481479ef..265a9e38c 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -100,15 +100,15 @@ ALIGNED(4) const u8 gUnknown_80DD270[] = _( "{CENTER_ALIGN}{ARG_POKEMON_1} left the team to remain\n" "{CENTER_ALIGN}on standby in the Friend Area."); -ALIGNED(4) const u8 gUnknown_80DD2B0[] = "Give"; -ALIGNED(4) const u8 gUnknown_80DD2B8[] = "Take"; -ALIGNED(4) const u8 gUnknown_80DD2C0[] = "Stand By"; -ALIGNED(4) const u8 gUnknown_80DD2CC[] = "Visit"; -ALIGNED(4) const u8 gUnknown_80DD2D4[] = "Name"; -ALIGNED(4) const u8 gUnknown_80DD2DC[] = "Summary"; -ALIGNED(4) const u8 gUnknown_80DD2E4[] = "Moves"; -ALIGNED(4) const u8 gUnknown_80DD2EC[] = "Check IQ"; -ALIGNED(4) const u8 gUnknown_80DD2F8[] = _("Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} "); +ALIGNED(4) const u8 gFriendListGive[] = "Give"; +ALIGNED(4) const u8 gFriendListTake[] = "Take"; +ALIGNED(4) const u8 gFriendListStandBy[] = "Stand By"; +ALIGNED(4) const u8 gFriendListVisit[] = "Visit"; +ALIGNED(4) const u8 gFriendListName[] = "Name"; +ALIGNED(4) const u8 gFriendListSummary[] = "Summary"; +ALIGNED(4) const u8 gFriendListMoves[] = "Moves"; +ALIGNED(4) const u8 gFriendListCheckIQ[] = "Check IQ"; +ALIGNED(4) const u8 gFriendListItem[] = _("Item: {COLOR_1 GREEN}{ARG_MOVE_ITEM_0}{END_COLOR_TEXT_1} "); ALIGNED(4) static const u8 fill0[] = "pksdir0"; extern void sub_8008C54(u32); @@ -393,14 +393,14 @@ void sub_8025728(void) pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2B4->species]; MemoryFill16(gUnknown_203B2B4->unk108,0,sizeof(gUnknown_203B2B4->unk108)); if (gUnknown_203B2B4->unk0 == 0) { - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2B0; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListGive; gUnknown_203B2B4->unkC8[loopMax].menuAction = 10; if (GetNumberOfFilledInventorySlots() == 0) { gUnknown_203B2B4->unk108[loopMax] = 1; } loopMax += 1; - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2B8; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListTake; gUnknown_203B2B4->unkC8[loopMax].menuAction = 0xb; if ((INVENTORY_SIZE <= GetNumberOfFilledInventorySlots()) || (gUnknown_203B2B4->item2.id == ITEM_NOTHING)) { gUnknown_203B2B4->unk108[loopMax] = 1; @@ -408,13 +408,13 @@ void sub_8025728(void) loopMax += 1; if (sub_8025EC4(pokeStruct)) { - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2C0; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListStandBy; gUnknown_203B2B4->unkC8[loopMax].menuAction = 9; loopMax += 1; } } else { - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2CC; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListVisit; gUnknown_203B2B4->unkC8[loopMax].menuAction = 7; if (gUnknown_203B2B4->unkC == GetFriendArea(gUnknown_203B2B4->pokeStruct->speciesNum)) { gUnknown_203B2B4->unk108[loopMax] = 1; @@ -423,17 +423,17 @@ void sub_8025728(void) } if ((pokeStruct->speciesNum == 0x13d) && (IsPokemonRenamed(pokeStruct))) { - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2D4; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListName; gUnknown_203B2B4->unkC8[loopMax].menuAction = 8; loopMax += 1; } - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2DC; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListSummary; gUnknown_203B2B4->unkC8[loopMax].menuAction = 4; loopMax += 1; - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2E4; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListMoves; gUnknown_203B2B4->unkC8[loopMax].menuAction = 6; loopMax += 1; - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2EC; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListCheckIQ; gUnknown_203B2B4->unkC8[loopMax].menuAction = 5; loopMax += 1; gUnknown_203B2B4->unkC8[loopMax].text = NULL; @@ -465,7 +465,7 @@ void sub_802591C(void) MemoryFill16(gUnknown_203B2B4->unk108,0, sizeof(gUnknown_203B2B4->unk108)); - gUnknown_203B2B4->unkC8[loopMax].text = gUnknown_80DD2B0; + gUnknown_203B2B4->unkC8[loopMax].text = gFriendListGive; gUnknown_203B2B4->unkC8[loopMax].menuAction = 10; if (GetNumberOfFilledInventorySlots() == 0) { gUnknown_203B2B4->unk108[loopMax] = 1; @@ -666,7 +666,7 @@ void sub_8025CB4(void) a3.unk8 = 1; item.flags = ITEM_FLAG_EXISTS; sub_8090E14(gUnknown_202DEA8,&item,&a3); - GivePokemonItem((int)gUnknown_203B2B4->species,&gUnknown_203B2B4->item1); + GivePokemonItem(gUnknown_203B2B4->species,&gUnknown_203B2B4->item1); sub_801A928(); nullsub_104(); sub_8025434(uVar2); @@ -766,7 +766,7 @@ void sub_8025E68(u32 r0, struct BulkItem *heldItem) a3.unk8 = 1; item.flags = ITEM_FLAG_EXISTS; sub_8090E14(gUnknown_202DE58, &item, &a3); - xxx_format_and_draw(4, 3, gUnknown_80DD2F8, r0, 0); + xxx_format_and_draw(4, 3, gFriendListItem, r0, 0); sub_80073E0(r0); } From e17a9894e3ed5459ebeae12b83c15e0be1dd07cd Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Thu, 1 Jun 2023 21:39:20 -0700 Subject: [PATCH 14/21] split and decomp a little more --- asm/code_801EE10.s | 7118 ---------------------------------------- asm/code_801EE10_mid.s | 6641 +++++++++++++++++++++++++++++++++++++ ld_script.txt | 2 + src/code_801EE10_mid.c | 214 ++ 4 files changed, 6857 insertions(+), 7118 deletions(-) create mode 100644 asm/code_801EE10_mid.s create mode 100644 src/code_801EE10_mid.c diff --git a/asm/code_801EE10.s b/asm/code_801EE10.s index b274b8295..2c059b251 100644 --- a/asm/code_801EE10.s +++ b/asm/code_801EE10.s @@ -634,7123 +634,5 @@ _0801F412: _0801F424: .4byte gUnknown_203B270 thumb_func_end sub_801F3F8 - thumb_func_start sub_801F428 -sub_801F428: - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r4, r0, 0 - mov r9, r1 - lsls r4, 16 - asrs r4, 16 - ldr r5, _0801F50C - movs r0, 0xFA - lsls r0, 2 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] - ldr r3, _0801F510 - movs r1, 0x58 - adds r2, r4, 0 - muls r2, r1 - ldr r1, [r3] - adds r1, r2 - str r1, [r0] - adds r1, r0, 0 - adds r1, 0x8 - str r1, [r0, 0x4] - movs r4, 0xDF - lsls r4, 2 - adds r1, r0, r4 - mov r2, r9 - str r2, [r1] - movs r6, 0xE0 - lsls r6, 2 - adds r2, r0, r6 - mov r3, r9 - lsls r1, r3, 1 - add r1, r9 - lsls r1, 3 - movs r3, 0xE1 - lsls r3, 2 - mov r8, r3 - add r1, r8 - adds r1, r0, r1 - str r1, [r2] - add r0, r8 - bl sub_8006518 - ldr r1, [r5] - adds r4, r1, r4 - ldr r2, [r4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - add r1, r8 - ldr r0, _0801F514 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r1, [r5] - adds r6, r1, r6 - ldr r0, [r6] - movs r4, 0xF9 - lsls r4, 2 - adds r1, r4 - str r1, [r0, 0x14] - movs r2, 0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, [r5] - ldr r1, _0801F518 - adds r0, r1 - strb r2, [r0] - ldr r0, [r5] - ldr r3, _0801F51C - adds r0, r3 - movs r1, 0xC - strb r1, [r0] - ldr r0, [r5] - adds r4, 0x3 - adds r0, r4 - strb r2, [r0] - bl ResetUnusedInputStruct - ldr r0, [r5] - add r0, r8 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r4, [r5] - movs r0, 0xD2 - lsls r0, 2 - adds r4, r0 - bl sub_801F7E4 - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x4 - mov r3, r9 - bl sub_8013818 - bl sub_801F690 - bl sub_801F700 - movs r0, 0x1 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0801F50C: .4byte gUnknown_203B274 -_0801F510: .4byte gRecruitedPokemonRef -_0801F514: .4byte gUnknown_80DC2C4 -_0801F518: .4byte 0x000003e5 -_0801F51C: .4byte 0x000003e6 - thumb_func_end sub_801F428 - - thumb_func_start sub_801F520 -sub_801F520: - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _0801F540 - ldr r0, _0801F53C - ldr r0, [r0] - movs r1, 0xD2 - lsls r1, 2 - adds r0, r1 - bl sub_8013660 - movs r0, 0 - b _0801F5AE - .align 2, 0 -_0801F53C: .4byte gUnknown_203B274 -_0801F540: - ldr r0, _0801F55C - ldr r0, [r0] - movs r1, 0xD2 - lsls r1, 2 - adds r0, r1 - bl GetKeyPress - cmp r0, 0x2 - beq _0801F566 - cmp r0, 0x2 - bgt _0801F560 - cmp r0, 0x1 - beq _0801F570 - b _0801F584 - .align 2, 0 -_0801F55C: .4byte gUnknown_203B274 -_0801F560: - cmp r0, 0x4 - beq _0801F57A - b _0801F584 -_0801F566: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0801F5AE -_0801F570: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _0801F5AE -_0801F57A: - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0x4 - b _0801F5AE -_0801F584: - ldr r0, _0801F5A0 - ldr r0, [r0] - movs r1, 0xD2 - lsls r1, 2 - adds r0, r1 - movs r1, 0x1 - bl sub_80138B8 - lsls r0, 24 - cmp r0, 0 - bne _0801F5A4 - movs r0, 0 - b _0801F5AE - .align 2, 0 -_0801F5A0: .4byte gUnknown_203B274 -_0801F5A4: - bl sub_801F690 - bl sub_801F700 - movs r0, 0x1 -_0801F5AE: - pop {r1} - bx r1 - thumb_func_end sub_801F520 - - thumb_func_start sub_801F5B4 -sub_801F5B4: - push {r4,lr} - ldr r0, _0801F5E8 - ldr r1, [r0] - ldr r2, [r1, 0x4] - ldr r3, _0801F5EC - adds r0, r1, r3 - movs r4, 0 - ldrsh r3, [r0, r4] - movs r4, 0xD9 - lsls r4, 2 - adds r0, r1, r4 - movs r4, 0 - ldrsh r0, [r0, r4] - muls r0, r3 - movs r3, 0xD8 - lsls r3, 2 - adds r1, r3 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r0, r1 - lsls r0, 1 - adds r2, r0 - ldrh r0, [r2] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0801F5E8: .4byte gUnknown_203B274 -_0801F5EC: .4byte 0x00000366 - thumb_func_end sub_801F5B4 - - thumb_func_start sub_801F5F0 -sub_801F5F0: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ResetUnusedInputStruct - ldr r5, _0801F638 - ldr r0, [r5] - movs r1, 0xE1 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - movs r2, 0 - bl sub_800641C - ldr r0, [r5] - movs r1, 0xD2 - lsls r1, 2 - adds r0, r1 - bl sub_8013984 - bl sub_801F690 - bl sub_801F700 - cmp r4, 0 - beq _0801F632 - ldr r0, [r5] - movs r1, 0xD2 - lsls r1, 2 - adds r0, r1 - bl AddMenuCursorSprite -_0801F632: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801F638: .4byte gUnknown_203B274 - thumb_func_end sub_801F5F0 - - thumb_func_start sub_801F63C -sub_801F63C: - push {r4-r6,lr} - ldr r5, _0801F688 - ldr r2, [r5] - cmp r2, 0 - beq _0801F680 - movs r1, 0xDF - lsls r1, 2 - adds r0, r2, r1 - ldr r0, [r0] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - movs r4, 0xE1 - lsls r4, 2 - adds r1, r4 - ldr r0, _0801F68C - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - bl ResetUnusedInputStruct - ldr r0, [r5] - adds r0, r4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r5] - bl MemoryFree - movs r0, 0 - str r0, [r5] -_0801F680: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801F688: .4byte gUnknown_203B274 -_0801F68C: .4byte gUnknown_80DC2AC - thumb_func_end sub_801F63C - - thumb_func_start sub_801F690 -sub_801F690: - push {r4,r5,lr} - ldr r5, _0801F6F4 - ldr r0, [r5] - ldr r1, _0801F6F8 - adds r0, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0xC - bl sub_80095E4 - adds r0, 0x2 - lsls r0, 16 - ldr r3, [r5] - movs r1, 0xDF - lsls r1, 2 - adds r4, r3, r1 - ldr r2, [r4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, r3, r1 - ldr r2, _0801F6FC - adds r1, r2 - asrs r2, r0, 16 - lsrs r0, 16 - strh r0, [r1] - ldr r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r3, r0 - adds r2, 0x2 - movs r0, 0xE5 - lsls r0, 2 - adds r3, r0 - strh r2, [r3] - bl ResetUnusedInputStruct - ldr r0, [r5] - movs r1, 0xE1 - lsls r1, 2 - adds r0, r1 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801F6F4: .4byte gUnknown_203B274 -_0801F6F8: .4byte 0x00000362 -_0801F6FC: .4byte 0x00000392 - thumb_func_end sub_801F690 - - thumb_func_start sub_801F700 -sub_801F700: - push {r4-r7,lr} - sub sp, 0xB4 - ldr r6, _0801F7D4 - ldr r0, [r6] - movs r4, 0xDF - lsls r4, 2 - adds r0, r4 - ldr r0, [r0] - bl sub_8008C54 - ldr r0, [r6] - adds r0, r4 - ldr r0, [r0] - bl sub_80073B8 - add r5, sp, 0x34 - ldr r1, _0801F7D8 - ldr r0, [r6] - ldr r3, _0801F7DC - adds r2, r0, r3 - movs r7, 0 - ldrsh r2, [r2, r7] - adds r2, 0x1 - adds r3, 0x2 - adds r0, r3 - movs r7, 0 - ldrsh r3, [r0, r7] - adds r0, r5, 0 - bl sprintfStatic - ldr r0, [r6] - adds r0, r4 - ldr r3, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x10 - movs r1, 0 - adds r2, r5, 0 - bl xxx_call_draw_string - movs r4, 0 - ldr r0, [r6] - ldr r1, _0801F7E0 - adds r0, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r4, r0 - bge _0801F7BC - adds r5, r6, 0 -_0801F762: - ldr r1, [r5] - ldr r2, [r1, 0x4] - ldr r3, _0801F7DC - adds r0, r1, r3 - movs r6, 0 - ldrsh r3, [r0, r6] - movs r7, 0xD9 - lsls r7, 2 - adds r1, r7 - movs r6, 0 - ldrsh r0, [r1, r6] - muls r0, r3 - adds r0, r4 - lsls r0, 1 - adds r2, r0 - ldrh r1, [r2] - add r0, sp, 0x4 - bl sub_8092C84 - ldr r0, [r5] - subs r7, 0x1C - adds r0, r7 - adds r1, r4, 0 - bl sub_8013800 - adds r1, r0, 0 - ldr r0, [r5] - movs r2, 0xDF - lsls r2, 2 - adds r0, r2 - ldr r3, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - add r2, sp, 0x4 - bl xxx_call_draw_string - adds r4, 0x1 - ldr r0, [r5] - ldr r3, _0801F7E0 - adds r0, r3 - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r4, r0 - blt _0801F762 -_0801F7BC: - ldr r0, _0801F7D4 - ldr r0, [r0] - movs r7, 0xDF - lsls r7, 2 - adds r0, r7 - ldr r0, [r0] - bl sub_80073E0 - add sp, 0xB4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801F7D4: .4byte gUnknown_203B274 -_0801F7D8: .4byte gUnknown_80DC2DC -_0801F7DC: .4byte 0x00000366 -_0801F7E0: .4byte 0x00000362 - thumb_func_end sub_801F700 - - thumb_func_start sub_801F7E4 -sub_801F7E4: - push {r4,lr} - ldr r4, _0801F804 - ldr r1, [r4] - ldr r0, [r1, 0x4] - ldr r1, [r1] - bl sub_808E218 - ldr r0, [r4] - ldr r0, [r0, 0x4] - movs r1, 0xCF - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0801F804: .4byte gUnknown_203B274 - thumb_func_end sub_801F7E4 - - thumb_func_start sub_801F808 -sub_801F808: - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl ResetSprites - ldr r5, _0801F88C - movs r0, 0xD4 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] - movs r1, 0 - str r1, [r0, 0x5C] - adds r1, r0, 0 - adds r1, 0x64 - str r1, [r0, 0x60] - adds r0, r1, 0 - bl sub_80140B4 - bl ResetUnusedInputStruct - ldr r0, [r5] - adds r0, 0x64 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r5] - str r4, [r0, 0x4] - movs r2, 0x4 - ldrh r0, [r4, 0x6] - cmp r0, 0 - bne _0801F862 - adds r3, r5, 0 -_0801F84C: - subs r2, 0x1 - cmp r2, 0x1 - ble _0801F862 - ldr r0, [r3] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r1 - subs r0, 0x2 - ldrh r0, [r0] - cmp r0, 0 - beq _0801F84C -_0801F862: - ldr r4, _0801F88C - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x28 - ldr r3, [r1, 0x5C] - adds r1, r2, 0 - movs r2, 0x1 - bl sub_8013818 - ldr r0, [r4] - adds r0, 0xC8 - bl sub_801317C - movs r0, 0 - bl sub_801F918 - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0801F88C: .4byte gUnknown_203B278 - thumb_func_end sub_801F808 - - thumb_func_start sub_801F890 -sub_801F890: - push {lr} - ldr r0, _0801F8A8 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x1 - beq _0801F8BC - cmp r0, 0x1 - bgt _0801F8AC - cmp r0, 0 - beq _0801F8B6 - b _0801F8C6 - .align 2, 0 -_0801F8A8: .4byte gUnknown_203B278 -_0801F8AC: - cmp r0, 0x2 - beq _0801F8C6 - cmp r0, 0x3 - beq _0801F8C2 - b _0801F8C6 -_0801F8B6: - bl sub_801FA58 - b _0801F8CA -_0801F8BC: - bl sub_801FAD4 - b _0801F8CA -_0801F8C2: - movs r0, 0x3 - b _0801F8CC -_0801F8C6: - movs r0, 0x2 - b _0801F8CC -_0801F8CA: - movs r0, 0 -_0801F8CC: - pop {r1} - bx r1 - thumb_func_end sub_801F890 - - thumb_func_start sub_801F8D0 -sub_801F8D0: - push {r4,r5,lr} - ldr r4, _0801F910 - ldr r2, [r4] - cmp r2, 0 - beq _0801F90A - ldr r0, [r2, 0x5C] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x64 - ldr r0, _0801F914 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x64 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801F90A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801F910: .4byte gUnknown_203B278 -_0801F914: .4byte gUnknown_80DC2F8 - thumb_func_end sub_801F8D0 - - thumb_func_start sub_801F918 -sub_801F918: - push {lr} - ldr r1, _0801F92C - ldr r1, [r1] - str r0, [r1] - bl sub_801F930 - bl sub_801F9A4 - pop {r0} - bx r0 - .align 2, 0 -_0801F92C: .4byte gUnknown_203B278 - thumb_func_end sub_801F918 - - thumb_func_start sub_801F930 -sub_801F930: - push {r4,lr} - ldr r4, _0801F94C - ldr r0, [r4] - adds r0, 0x64 - bl sub_80140B4 - ldr r2, [r4] - ldr r3, [r2] - cmp r3, 0 - beq _0801F950 - cmp r3, 0x1 - beq _0801F98C - b _0801F99C - .align 2, 0 -_0801F94C: .4byte gUnknown_203B278 -_0801F950: - ldr r0, [r2, 0x60] - adds r1, r2, 0 - adds r1, 0xC4 - str r1, [r0, 0x14] - adds r0, r2, 0 - adds r0, 0x48 - ldrh r0, [r0] - strb r0, [r1] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x46 - ldrh r1, [r1] - adds r0, 0xC5 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xC6 - movs r1, 0x10 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xC7 - strb r3, [r0] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x64 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - b _0801F99C -_0801F98C: - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x64 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C -_0801F99C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801F930 - - thumb_func_start sub_801F9A4 -sub_801F9A4: - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _0801F9EC - ldr r0, [r5] - ldr r4, [r0] - cmp r4, 0x1 - beq _0801F9F0 - cmp r4, 0x1 - bgt _0801FA48 - cmp r4, 0 - bne _0801FA48 - ldr r0, [r0, 0x5C] - bl sub_8008C54 - ldr r3, [r5] - adds r2, r3, 0 - adds r2, 0x46 - movs r1, 0 - ldrsh r0, [r2, r1] - ldr r1, [r3, 0x4] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r3, 0x8] - movs r1, 0 - ldrsh r0, [r2, r1] - ldrh r1, [r3, 0x8] - ldr r2, [r3, 0x5C] - adds r3, 0x14 - bl unk_MoveIDPrintMoveDescription - ldr r1, [r5] - str r0, [r1, 0x10] - str r4, [r1, 0x24] - b _0801FA48 - .align 2, 0 -_0801F9EC: .4byte gUnknown_203B278 -_0801F9F0: - ldr r0, [r0, 0x5C] - bl sub_8008C54 - ldr r0, [r5] - ldr r0, [r0, 0x5C] - bl sub_80073B8 - ldr r0, [r5] - ldr r1, [r0, 0xC] - lsls r1, 2 - adds r0, 0x14 - adds r0, r1 - ldr r1, [r0] - ldr r0, _0801FA50 - ldr r1, [r1] - bl strcpy - ldr r2, _0801FA54 - ldr r0, [r5] - ldr r3, [r0, 0x5C] - movs r4, 0 - str r4, [sp] - movs r0, 0x10 - movs r1, 0 - bl xxx_format_and_draw - ldr r3, [r5] - ldr r1, [r3, 0xC] - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x14 - adds r0, r1 - ldr r0, [r0] - ldr r2, [r0, 0x4] - ldr r3, [r3, 0x5C] - str r4, [sp] - movs r0, 0x4 - movs r1, 0x10 - bl xxx_format_and_draw - ldr r0, [r5] - ldr r0, [r0, 0x5C] - bl sub_80073E0 -_0801FA48: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801FA50: .4byte gAvailablePokemonNames -_0801FA54: .4byte gUnknown_80DC310 - thumb_func_end sub_801F9A4 - - thumb_func_start sub_801FA58 -sub_801FA58: - push {r4,lr} - ldr r0, _0801FAA4 - ldr r2, [r0] - ldr r1, [r2, 0x10] - adds r4, r0, 0 - cmp r1, 0 - beq _0801FA7C - ldr r0, [r2, 0x24] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801FA74 - bl sub_8013F84 -_0801FA74: - ldr r1, [r4] - ldr r0, [r1, 0x24] - adds r0, 0x1 - str r0, [r1, 0x24] -_0801FA7C: - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xC8 - ldr r1, [r1, 0x5C] - bl sub_8012A64 - cmp r0, 0x1 - beq _0801FAA8 - cmp r0, 0x2 - beq _0801FAC2 - ldr r0, [r4] - adds r0, 0x28 - bl sub_8013938 - lsls r0, 24 - cmp r0, 0 - beq _0801FACE - movs r0, 0 - b _0801FACA - .align 2, 0 -_0801FAA4: .4byte gUnknown_203B278 -_0801FAA8: - movs r0, 0 - bl PlayMenuSoundEffect - ldr r1, [r4] - ldr r0, [r1, 0x10] - cmp r0, 0 - beq _0801FABE - movs r0, 0 - str r0, [r1, 0xC] - movs r0, 0x1 - b _0801FACA -_0801FABE: - movs r0, 0x3 - b _0801FACA -_0801FAC2: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 -_0801FACA: - bl sub_801F918 -_0801FACE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801FA58 - - thumb_func_start sub_801FAD4 -sub_801FAD4: - push {r4,lr} - ldr r0, _0801FB14 - ldr r3, [r0] - ldr r1, [r3, 0x10] - subs r1, 0x1 - ldr r2, [r3, 0xC] - adds r4, r0, 0 - cmp r2, r1 - bge _0801FAFC - ldr r0, [r3, 0x24] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801FAF4 - bl sub_8013F84 -_0801FAF4: - ldr r1, [r4] - ldr r0, [r1, 0x24] - adds r0, 0x1 - str r0, [r1, 0x24] -_0801FAFC: - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xC8 - ldr r1, [r1, 0x5C] - bl sub_8012A64 - cmp r0, 0x1 - beq _0801FB18 - cmp r0, 0x2 - beq _0801FB3C - b _0801FB48 - .align 2, 0 -_0801FB14: .4byte gUnknown_203B278 -_0801FB18: - movs r0, 0 - bl PlayMenuSoundEffect - ldr r0, [r4] - ldr r1, [r0, 0xC] - adds r1, 0x1 - str r1, [r0, 0xC] - ldr r0, [r0, 0x10] - cmp r1, r0 - bge _0801FB34 - movs r0, 0x1 - bl sub_801F918 - b _0801FB48 -_0801FB34: - movs r0, 0 - bl sub_801F918 - b _0801FB48 -_0801FB3C: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - bl sub_801F918 -_0801FB48: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801FAD4 - - thumb_func_start sub_801FB50 -sub_801FB50: - push {r4-r7,lr} - adds r4, r0, 0 - bl ResetUnusedInputStruct - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r6, _0801FBC0 - movs r0, 0xF0 - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r6] - movs r7, 0 - str r7, [r0, 0x70] - str r7, [r0, 0x74] - str r7, [r0, 0x78] - str r4, [r0] - strb r7, [r0, 0x15] - ldr r0, _0801FBC4 - ldr r4, _0801FBC8 - adds r1, r4, 0 - bl CopyYellowMonsterNametoBuffer - ldr r5, _0801FBCC - adds r0, r5, 0 - adds r1, r4, 0 - bl CopyYellowMonsterNametoBuffer - adds r0, r4, 0 - bl GetMonSpecies - adds r1, r0, 0 - adds r0, r5, 0 - subs r0, 0x50 - bl strcpy - subs r5, 0xF0 - bl GetPlayerPokemonStruct - adds r1, r0, 0 - adds r0, r5, 0 - bl PrintPokeNameToBuffer - ldr r2, [r6] - ldr r0, [r2] - cmp r0, 0x1 - bne _0801FBD0 - movs r1, 0xBE - lsls r1, 1 - adds r0, r2, r1 - str r7, [r0] - b _0801FBDE - .align 2, 0 -_0801FBC0: .4byte gUnknown_203B27C -_0801FBC4: .4byte gUnknown_202E5D8 -_0801FBC8: .4byte 0x00000155 -_0801FBCC: .4byte gUnknown_202E1C8 -_0801FBD0: - movs r3, 0xBE - lsls r3, 1 - adds r1, r2, r3 - movs r4, 0xB6 - lsls r4, 1 - adds r0, r2, r4 - str r0, [r1] -_0801FBDE: - ldr r0, _0801FC34 - bl GetDialogueSpriteDataPtr - ldr r2, _0801FC38 - ldr r3, [r2] - movs r4, 0xB6 - lsls r4, 1 - adds r1, r3, r4 - str r0, [r1] - adds r4, 0x4 - adds r1, r3, r4 - ldr r0, [r0, 0x4] - str r0, [r1] - movs r1, 0xBC - lsls r1, 1 - adds r0, r3, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldr r3, _0801FC3C - adds r0, r3 - strb r1, [r0] - ldr r0, [r2] - adds r4, 0xA - adds r0, r4 - strb r1, [r0] - ldr r2, [r2] - movs r0, 0xBA - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0x2 - strh r0, [r1] - subs r3, 0x3 - adds r1, r2, r3 - movs r0, 0x8 - strh r0, [r1] - movs r0, 0 - bl sub_801FDA8 - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801FC34: .4byte 0x00000155 -_0801FC38: .4byte gUnknown_203B27C -_0801FC3C: .4byte 0x00000179 - thumb_func_end sub_801FB50 - - thumb_func_start sub_801FC40 -sub_801FC40: - push {lr} - ldr r1, _0801FC5C - ldr r0, [r1] - ldr r0, [r0, 0x4] - adds r2, r1, 0 - cmp r0, 0x22 - bls _0801FC50 - b _0801FD70 -_0801FC50: - lsls r0, 2 - ldr r1, _0801FC60 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801FC5C: .4byte gUnknown_203B27C -_0801FC60: .4byte _0801FC64 - .align 2, 0 -_0801FC64: - .4byte _0801FCF0 - .4byte _0801FCF0 - .4byte _0801FCF6 - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FCFC - .4byte _0801FD02 - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FD50 - .4byte _0801FD70 - .4byte _0801FD08 - .4byte _0801FD08 - .4byte _0801FD0E - .4byte _0801FD14 - .4byte _0801FD1A - .4byte _0801FD70 - .4byte _0801FD20 - .4byte _0801FD20 - .4byte _0801FD26 - .4byte _0801FD2C - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FD70 - .4byte _0801FD32 - .4byte _0801FD38 - .4byte _0801FD38 - .4byte _0801FD3E - .4byte _0801FD44 - .4byte _0801FD4A -_0801FCF0: - bl sub_8021154 - b _0801FD74 -_0801FCF6: - bl sub_80209AC - b _0801FD74 -_0801FCFC: - bl sub_80209FC - b _0801FD74 -_0801FD02: - bl sub_8020A34 - b _0801FD74 -_0801FD08: - bl sub_8020A80 - b _0801FD74 -_0801FD0E: - bl sub_8020B38 - b _0801FD74 -_0801FD14: - bl sub_8020C2C - b _0801FD74 -_0801FD1A: - bl sub_8020C48 - b _0801FD74 -_0801FD20: - bl sub_8020C64 - b _0801FD74 -_0801FD26: - bl sub_8020CC0 - b _0801FD74 -_0801FD2C: - bl sub_8020D74 - b _0801FD74 -_0801FD32: - bl sub_8020D90 - b _0801FD74 -_0801FD38: - bl sub_8020DCC - b _0801FD74 -_0801FD3E: - bl sub_8020EB4 - b _0801FD74 -_0801FD44: - bl sub_80210C8 - b _0801FD74 -_0801FD4A: - bl sub_80210E4 - b _0801FD74 -_0801FD50: - ldr r0, [r2] - ldrb r0, [r0, 0x15] - cmp r0, 0x1 - bne _0801FD68 - ldr r0, _0801FD6C - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - subs r0, 0x96 - str r0, [r1] -_0801FD68: - movs r0, 0x3 - b _0801FD76 - .align 2, 0 -_0801FD6C: .4byte gTeamInventory_203B460 -_0801FD70: - bl sub_8021130 -_0801FD74: - movs r0, 0 -_0801FD76: - pop {r1} - bx r1 - thumb_func_end sub_801FC40 - - thumb_func_start sub_801FD7C -sub_801FD7C: - push {r4,lr} - ldr r4, _0801FDA4 - ldr r0, [r4] - cmp r0, 0 - beq _0801FD9C - movs r1, 0xB6 - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801FD9C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801FDA4: .4byte gUnknown_203B27C - thumb_func_end sub_801FD7C - - thumb_func_start sub_801FDA8 -sub_801FDA8: - push {lr} - ldr r1, _0801FDBC - ldr r1, [r1] - str r0, [r1, 0x4] - bl sub_801FDC0 - bl sub_801FF28 - pop {r0} - bx r0 - .align 2, 0 -_0801FDBC: .4byte gUnknown_203B27C - thumb_func_end sub_801FDA8 - - thumb_func_start sub_801FDC0 -sub_801FDC0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _0801FDE8 - ldr r0, [r4] - movs r5, 0xC0 - lsls r5, 1 - adds r0, r5 - bl sub_8006518 - ldr r0, [r4] - ldr r1, [r0, 0x4] - cmp r1, 0x11 - beq _0801FE38 - cmp r1, 0x11 - bgt _0801FDEC - cmp r1, 0x2 - beq _0801FDF6 - b _0801FED4 - .align 2, 0 -_0801FDE8: .4byte gUnknown_203B27C -_0801FDEC: - cmp r1, 0x17 - beq _0801FE6C - cmp r1, 0x20 - beq _0801FE88 - b _0801FED4 -_0801FDF6: - adds r0, r5 - movs r1, 0x80 - strb r1, [r0] - ldr r0, [r4] - movs r2, 0xCC - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - ldr r0, [r4] - movs r3, 0xD8 - lsls r3, 1 - adds r0, r3 - strb r1, [r0] - ldr r1, [r4] - movs r6, 0xE4 - lsls r6, 1 - adds r1, r6 - ldr r0, _0801FE34 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl sub_800641C - b _0801FF14 - .align 2, 0 -_0801FE34: .4byte gUnknown_80DC37C -_0801FE38: - bl sub_80205D0 - ldr r2, [r4] - movs r0, 0xD8 - lsls r0, 1 - adds r2, r0 - ldr r1, _0801FE68 - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldr r1, [r4] - adds r0, r1, r0 - adds r1, 0x7C - bl sub_8012CAC - bl ResetUnusedInputStruct - ldr r0, [r4] - movs r6, 0xC0 - lsls r6, 1 - adds r0, r6 - b _0801FEC2 - .align 2, 0 -_0801FE68: .4byte gUnknown_80DC334 -_0801FE6C: - bl sub_802069C - ldr r2, [r4] - movs r0, 0xD8 - lsls r0, 1 - adds r2, r0 - ldr r1, _0801FE84 - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - b _0801FEB0 - .align 2, 0 -_0801FE84: .4byte gUnknown_80DC334 -_0801FE88: - bl CreateGulpinLinkMenu - ldr r1, [r4] - movs r7, 0xCC - lsls r7, 1 - adds r1, r7 - ldr r0, _0801FECC - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldr r2, [r4] - movs r0, 0xD8 - lsls r0, 1 - adds r2, r0 - ldr r1, _0801FED0 - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} -_0801FEB0: - ldr r1, [r4] - adds r0, r1, r0 - adds r1, 0x7C - bl sub_8012CAC - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, r5 -_0801FEC2: - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - b _0801FF14 - .align 2, 0 -_0801FECC: .4byte gUnknown_80DC31C -_0801FED0: .4byte gUnknown_80DC34C -_0801FED4: - ldr r5, _0801FF20 - mov r12, r5 - movs r6, 0xC0 - lsls r6, 1 - mov r8, r6 - ldr r4, _0801FF24 - movs r3, 0 - movs r2, 0x3 -_0801FEE4: - mov r7, r12 - ldr r1, [r7] - adds r1, r3 - add r1, r8 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _0801FEE4 - bl ResetUnusedInputStruct - ldr r0, _0801FF20 - ldr r0, [r0] - movs r1, 0xC0 - lsls r1, 1 - adds r0, r1 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C -_0801FF14: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801FF20: .4byte gUnknown_203B27C -_0801FF24: .4byte gUnknown_80DC31C - thumb_func_end sub_801FDC0 - - thumb_func_start sub_801FF28 -sub_801FF28: - push {r4,r5,lr} - sub sp, 0x14 - ldr r1, _0801FF44 - ldr r0, [r1] - ldr r0, [r0, 0x4] - adds r5, r1, 0 - cmp r0, 0x23 - bls _0801FF3A - b _08020562 -_0801FF3A: - lsls r0, 2 - ldr r1, _0801FF48 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801FF44: .4byte gUnknown_203B27C -_0801FF48: .4byte _0801FF4C - .align 2, 0 -_0801FF4C: - .4byte _0801FFDC - .4byte _08020018 - .4byte _08020064 - .4byte _0802006C - .4byte _08020090 - .4byte _080200B4 - .4byte _080200D8 - .4byte _080200FC - .4byte _08020144 - .4byte _0802018C - .4byte _080201B0 - .4byte _080201D4 - .4byte _080201F8 - .4byte _08020562 - .4byte _0802021C - .4byte _08020240 - .4byte _0802024E - .4byte _08020256 - .4byte _08020274 - .4byte _08020282 - .4byte _0802028E - .4byte _080202B0 - .4byte _080202BE - .4byte _080202C6 - .4byte _080202E4 - .4byte _08020304 - .4byte _08020344 - .4byte _080203B0 - .4byte _080203D4 - .4byte _0802038C - .4byte _080203F8 - .4byte _08020428 - .4byte _08020434 - .4byte _08020460 - .4byte _08020478 - .4byte _08020500 -_0801FFDC: - ldr r0, [r5] - movs r4, 0x2 - str r4, [r0, 0x6C] - bl CreateGulpinShopMenu - ldr r5, [r5] - str r4, [r5, 0x8] - ldr r2, _08020014 - ldr r1, [r5] - movs r0, 0x64 - muls r0, r1 - adds r0, r2 - ldr r0, [r0] - ldr r2, [r5, 0x6C] - adds r3, r5, 0 - adds r3, 0x7C - adds r1, r5, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r4, 0xBE - lsls r4, 1 - adds r1, r5, r4 - b _0802004C - .align 2, 0 -_08020014: .4byte gGulpinDialogue -_08020018: - bl CreateGulpinShopMenu - ldr r0, _0802005C - ldr r4, [r0] - movs r0, 0x2 - str r0, [r4, 0x8] - ldr r1, _08020060 - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - ldr r2, [r4, 0x6C] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r5, 0xBE - lsls r5, 1 - adds r1, r4, r5 -_0802004C: - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - bl sub_8014248 - b _08020562 - .align 2, 0 -_0802005C: .4byte gUnknown_203B27C -_08020060: .4byte gGulpinDialogue -_08020064: - movs r0, 0x3 - bl DrawTeamMoneyBox - b _08020562 -_0802006C: - ldr r2, [r5] - movs r0, 0x1F - str r0, [r2, 0x8] - ldr r1, _0802008C - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x8 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_0802008C: .4byte gGulpinDialogue -_08020090: - ldr r2, [r5] - movs r0, 0x1F - str r0, [r2, 0x8] - ldr r1, _080200B0 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0xC - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080200B0: .4byte gGulpinDialogue -_080200B4: - ldr r2, [r5] - movs r0, 0x1F - str r0, [r2, 0x8] - ldr r1, _080200D4 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x10 - adds r0, r1 - ldr r0, [r0] - movs r5, 0xBE - lsls r5, 1 - adds r2, r5 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080200D4: .4byte gGulpinDialogue -_080200D8: - ldr r2, [r5] - movs r0, 0x1F - str r0, [r2, 0x8] - ldr r1, _080200F8 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x14 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080200F8: .4byte gGulpinDialogue -_080200FC: - bl sub_8020900 - ldr r1, _0802013C - ldr r0, _08020140 - ldr r4, [r0] - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x18 - adds r0, r1 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r2, 0xBE - lsls r2, 1 - adds r1, r4, r2 - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - movs r2, 0x10 - bl sub_8014248 - b _08020562 - .align 2, 0 -_0802013C: .4byte gGulpinDialogue -_08020140: .4byte gUnknown_203B27C -_08020144: - bl sub_8020950 - ldr r1, _08020184 - ldr r0, _08020188 - ldr r4, [r0] - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x54 - adds r0, r1 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r5, 0xBE - lsls r5, 1 - adds r1, r4, r5 - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - movs r2, 0xD - bl sub_8014248 - b _08020562 - .align 2, 0 -_08020184: .4byte gGulpinDialogue -_08020188: .4byte gUnknown_203B27C -_0802018C: - ldr r2, [r5] - movs r0, 0x1 - str r0, [r2, 0x8] - ldr r1, _080201AC - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x58 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080201AC: .4byte gGulpinDialogue -_080201B0: - ldr r2, [r5] - movs r0, 0x1 - str r0, [r2, 0x8] - ldr r1, _080201D0 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x5C - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080201D0: .4byte gGulpinDialogue -_080201D4: - ldr r2, [r5] - movs r0, 0x1 - str r0, [r2, 0x8] - ldr r1, _080201F4 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x60 - adds r0, r1 - ldr r0, [r0] - movs r5, 0xBE - lsls r5, 1 - adds r2, r5 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080201F4: .4byte gGulpinDialogue -_080201F8: - ldr r2, [r5] - movs r0, 0xD - str r0, [r2, 0x8] - ldr r1, _08020218 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x1C - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_08020218: .4byte gGulpinDialogue -_0802021C: - ldr r2, [r5] - movs r0, 0xF - str r0, [r2, 0x8] - ldr r1, _0802023C - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x20 - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_0802023C: .4byte gGulpinDialogue -_08020240: - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0xA - bl sub_8023868 - b _08020562 -_0802024E: - movs r0, 0x1 - bl sub_8023B7C - b _08020562 -_08020256: - bl sub_8023DA4 - ldr r0, _08020270 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xCC - adds r1, r2, 0 - adds r1, 0x7C - adds r3, r2, 0 - adds r3, 0xBC - ldr r2, [r2, 0x70] - b _0802044C - .align 2, 0 -_08020270: .4byte gUnknown_203B27C -_08020274: - ldr r0, [r5] - movs r5, 0xC - ldrsh r0, [r0, r5] - movs r1, 0x2 - bl sub_8024458 - b _08020562 -_08020282: - ldr r0, [r5] - movs r1, 0xC - ldrsh r0, [r0, r1] - bl sub_801BEEC - b _08020562 -_0802028E: - ldr r2, [r5] - movs r0, 0x15 - str r0, [r2, 0x8] - ldr r1, _080202AC - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x24 - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080202AC: .4byte gGulpinDialogue -_080202B0: - ldr r0, [r5] - movs r5, 0xC - ldrsh r0, [r0, r5] - movs r1, 0 - bl sub_801F428 - b _08020562 -_080202BE: - movs r0, 0x1 - bl sub_801F5F0 - b _08020562 -_080202C6: - bl sub_801F700 - ldr r0, _080202E0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xCC - adds r1, r2, 0 - adds r1, 0x7C - adds r3, r2, 0 - adds r3, 0xBC - ldr r2, [r2, 0x74] - b _0802044C - .align 2, 0 -_080202E0: .4byte gUnknown_203B27C -_080202E4: - ldr r0, [r5] - ldrh r1, [r0, 0x1C] - adds r0, 0x64 - strh r1, [r0] - movs r2, 0x1 - adds r4, r5, 0 - movs r3, 0 -_080202F2: - ldr r0, [r4] - lsls r1, r2, 1 - adds r0, 0x64 - adds r0, r1 - strh r3, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _080202F2 - b _0802046E -_08020304: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl sub_8094060 - ldr r1, [r5] - movs r0, 0x10 - str r0, [r1, 0x8] - ldr r0, _0802033C - ldrh r1, [r1, 0x1E] - bl sub_8092C84 - ldr r1, _08020340 - ldr r2, [r5] - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x28 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_0802033C: .4byte gAvailablePokemonNames -_08020340: .4byte gGulpinDialogue -_08020344: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl sub_8094060 - ldr r3, [r5] - movs r0, 0x10 - str r0, [r3, 0x8] - ldrb r0, [r3, 0x14] - cmp r0, 0 - beq _08020370 - ldr r1, _0802036C - ldr r2, [r3] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x38 - b _08020520 - .align 2, 0 -_0802036C: .4byte gGulpinDialogue -_08020370: - ldr r1, _08020388 - ldr r2, [r3] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x34 - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r1, r3, r4 - b _0802052A - .align 2, 0 -_08020388: .4byte gGulpinDialogue -_0802038C: - ldr r2, [r5] - ldr r0, [r2] - cmp r0, 0 - bne _080203A2 - movs r5, 0xC - ldrsh r1, [r2, r5] - adds r2, 0x24 - movs r0, 0 - bl DisplayGulpinDialogueSprite - b _08020562 -_080203A2: - movs r0, 0xC - ldrsh r1, [r2, r0] - adds r2, 0x24 - movs r0, 0x1 - bl DisplayGulpinDialogueSprite - b _08020562 -_080203B0: - ldr r2, [r5] - movs r0, 0x10 - str r0, [r2, 0x8] - ldr r1, _080203D0 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x3C - adds r0, r1 - ldr r0, [r0] - movs r1, 0xBE - lsls r1, 1 - adds r2, r1 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080203D0: .4byte gGulpinDialogue -_080203D4: - ldr r2, [r5] - movs r0, 0x10 - str r0, [r2, 0x8] - ldr r1, _080203F4 - ldr r3, [r2] - movs r0, 0x64 - muls r0, r3 - adds r1, 0x40 - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r2, r4 - ldr r2, [r2] - b _0802052C - .align 2, 0 -_080203F4: .4byte gGulpinDialogue -_080203F8: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl unk_CopyMoves4To8 - ldr r0, [r5] - movs r5, 0xC - ldrsh r1, [r0, r5] - adds r2, r0, 0 - adds r2, 0x24 - ldrb r3, [r0, 0x15] - ldr r0, _08020424 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0x1 - bl sub_801EE10 - b _08020562 - .align 2, 0 -_08020424: .4byte gUnknown_80DC394 -_08020428: - ldr r0, [r5] - ldrb r1, [r0, 0x15] - movs r0, 0x1 - bl sub_801F1B0 - b _08020562 -_08020434: - movs r0, 0 - bl sub_801F280 - ldr r0, _0802045C - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xCC - adds r1, r2, 0 - adds r1, 0x7C - adds r3, r2, 0 - adds r3, 0xBC - ldr r2, [r2, 0x78] -_0802044C: - str r2, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - bl sub_8012D60 - b _08020562 - .align 2, 0 -_0802045C: .4byte gUnknown_203B27C -_08020460: - ldr r2, [r5] - ldr r0, [r2, 0x18] - adds r1, r2, 0 - adds r1, 0x24 - adds r2, 0x64 - bl GetLinkedSequence -_0802046E: - ldr r0, [r5] - adds r0, 0x64 - bl sub_801F808 - b _08020562 -_08020478: - bl sub_80208B0 - ldr r0, _080204B8 - ldr r4, _080204BC - ldr r1, [r4] - ldrh r1, [r1, 0x20] - bl sub_8092C84 - ldr r4, [r4] - ldrb r5, [r4, 0x14] - cmp r5, 0 - beq _080204C4 - ldr r1, _080204C0 - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x48 - adds r0, r1 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r2, 0xBE - lsls r2, 1 - adds r1, r4, r2 - b _080204E8 - .align 2, 0 -_080204B8: .4byte gUnknown_202DFE8 -_080204BC: .4byte gUnknown_203B27C -_080204C0: .4byte gGulpinDialogue -_080204C4: - ldr r1, _080204FC - ldr r2, [r4] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x44 - adds r0, r1 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x7C - adds r1, r4, 0 - adds r1, 0xBC - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - str r5, [sp, 0x8] - movs r5, 0xBE - lsls r5, 1 - adds r1, r4, r5 -_080204E8: - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - movs r2, 0x11 - bl sub_8014248 - b _08020562 - .align 2, 0 -_080204FC: .4byte gGulpinDialogue -_08020500: - ldr r1, [r5] - movs r0, 0x1F - str r0, [r1, 0x8] - ldr r0, _08020538 - ldrh r1, [r1, 0x20] - bl sub_8092C84 - ldr r3, [r5] - ldrb r0, [r3, 0x14] - cmp r0, 0 - beq _08020544 - ldr r1, _0802053C - ldr r2, [r3] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x50 -_08020520: - adds r0, r1 - ldr r0, [r0] - movs r2, 0xBE - lsls r2, 1 - adds r1, r3, r2 -_0802052A: - ldr r2, [r1] -_0802052C: - ldr r3, _08020540 - movs r1, 0 - bl sub_80141B4 - b _08020562 - .align 2, 0 -_08020538: .4byte gUnknown_202DFE8 -_0802053C: .4byte gGulpinDialogue -_08020540: .4byte 0x0000010d -_08020544: - ldr r1, _0802056C - ldr r2, [r3] - movs r0, 0x64 - muls r0, r2 - adds r1, 0x4C - adds r0, r1 - ldr r0, [r0] - movs r4, 0xBE - lsls r4, 1 - adds r1, r3, r4 - ldr r2, [r1] - ldr r3, _08020570 - movs r1, 0 - bl sub_80141B4 -_08020562: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802056C: .4byte gGulpinDialogue -_08020570: .4byte 0x0000010d - thumb_func_end sub_801FF28 - - thumb_func_start CreateGulpinShopMenu -CreateGulpinShopMenu: - push {r4,lr} - ldr r4, _080205C0 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r4, [r4] - movs r3, 0 - ldr r0, _080205C4 - str r0, [r4, 0x7C] - adds r1, r4, 0 - adds r1, 0x80 - movs r0, 0x2 - str r0, [r1] - movs r2, 0x1 - adds r1, 0x4 - ldr r0, _080205C8 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xB - str r0, [r1] - adds r1, 0x4 - ldr r0, _080205CC - ldr r0, [r0] - str r0, [r1] - adds r0, r4, 0 - adds r0, 0x90 - str r2, [r0] - adds r0, 0x4 - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080205C0: .4byte gUnknown_203B27C -_080205C4: .4byte gGulpinProceed -_080205C8: .4byte gGulpinInfo -_080205CC: .4byte gUnknown_80D4934 - thumb_func_end CreateGulpinShopMenu - - thumb_func_start sub_80205D0 -sub_80205D0: - push {r4-r7,lr} - ldr r4, _08020660 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r0, [r4] - mov r12, r0 - movs r5, 0 - ldr r0, _08020664 - mov r1, r12 - str r0, [r1, 0x7C] - mov r2, r12 - adds r2, 0x80 - movs r0, 0x4 - str r0, [r2] - movs r3, 0x1 - adds r1, 0x84 - ldr r0, _08020668 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xB - str r0, [r1] - adds r1, 0x4 - ldr r0, _0802066C - str r0, [r1] - adds r1, 0x4 - movs r0, 0xC - str r0, [r1] - movs r6, 0x3 - adds r1, 0x4 - ldr r0, _08020670 - str r0, [r1] - mov r0, r12 - adds r0, 0x98 - str r6, [r0] - movs r6, 0x4 - adds r0, 0x4 - str r5, [r0] - adds r0, 0x4 - str r3, [r0] - mov r3, r12 - adds r3, 0xBC -_0802062A: - ldrh r0, [r3] - cmp r0, 0 - bne _0802063A - ldr r1, [r2] - mov r7, r12 - ldr r0, [r7, 0x70] - cmp r1, r0 - beq _08020696 -_0802063A: - adds r2, 0x8 - adds r3, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _0802062A - movs r5, 0 - cmp r5, r6 - bge _08020696 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xBC - ldrh r0, [r0] - cmp r0, 0 - bne _08020674 - adds r0, r1, 0 - adds r0, 0x80 - ldr r0, [r0] - str r0, [r1, 0x70] - b _08020696 - .align 2, 0 -_08020660: .4byte gUnknown_203B27C -_08020664: .4byte gUnknown_80DC3D8 -_08020668: .4byte gUnknown_80DC3E0 -_0802066C: .4byte gUnknown_80DC3E8 -_08020670: .4byte gUnknown_80DC3F4 -_08020674: - adds r5, 0x1 - cmp r5, r6 - bge _08020696 - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0xBC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08020674 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x80 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x70] -_08020696: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80205D0 - - thumb_func_start sub_802069C -sub_802069C: - push {r4-r7,lr} - ldr r4, _08020718 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r0, [r4] - mov r12, r0 - movs r5, 0 - ldr r0, _0802071C - mov r1, r12 - str r0, [r1, 0x7C] - mov r3, r12 - adds r3, 0x80 - movs r0, 0x3 - str r0, [r3] - movs r2, 0x1 - adds r1, 0x84 - ldr r0, _08020720 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0xB - str r0, [r1] - movs r6, 0x2 - mov r0, r12 - adds r0, 0x8C - str r5, [r0] - adds r0, 0x4 - str r2, [r0] - mov r2, r12 - adds r2, 0xBC -_080206E0: - ldrh r0, [r2] - cmp r0, 0 - bne _080206F0 - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x74] - cmp r1, r0 - beq _08020746 -_080206F0: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _080206E0 - movs r5, 0 - cmp r5, r6 - bge _08020746 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0xBC - ldrh r0, [r0] - cmp r0, 0 - bne _08020724 - adds r0, r1, 0 - adds r0, 0x80 - ldr r0, [r0] - str r0, [r1, 0x74] - b _08020746 - .align 2, 0 -_08020718: .4byte gUnknown_203B27C -_0802071C: .4byte gUnknown_80DC3F4 -_08020720: .4byte gUnknown_80D4970 -_08020724: - adds r5, 0x1 - cmp r5, r6 - bge _08020746 - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0xBC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08020724 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x80 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x74] -_08020746: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_802069C - - thumb_func_start CreateGulpinLinkMenu -CreateGulpinLinkMenu: - push {r4-r7,lr} - movs r7, 0 - ldr r4, _08020780 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - ldrb r0, [r1, 0x16] - cmp r0, 0 - beq _0802079C - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl IsMoveSet - lsls r0, 24 - cmp r0, 0 - beq _08020788 - ldr r0, [r4] - ldr r1, _08020784 - str r1, [r0, 0x7C] - adds r0, 0x80 - movs r1, 0x6 - b _08020792 - .align 2, 0 -_08020780: .4byte gUnknown_203B27C -_08020784: .4byte gGulpinDeselect -_08020788: - ldr r0, [r4] - ldr r1, _08020798 - str r1, [r0, 0x7C] - adds r0, 0x80 - movs r1, 0x5 -_08020792: - str r1, [r0] - mov r12, r4 - b _080207CA - .align 2, 0 -_08020798: .4byte gGulpinSet -_0802079C: - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl IsMoveEnabled - lsls r0, 24 - cmp r0, 0 - beq _080207B4 - ldr r1, [r4] - ldr r0, _080207B0 - b _080207B8 - .align 2, 0 -_080207B0: .4byte gGulpinDeselect -_080207B4: - ldr r1, [r4] - ldr r0, _0802086C -_080207B8: - str r0, [r1, 0x7C] - ldr r2, _08020870 - ldr r0, [r2] - lsls r1, r7, 3 - adds r0, 0x80 - adds r0, r1 - movs r1, 0x7 - str r1, [r0] - mov r12, r2 -_080207CA: - adds r7, 0x1 - mov r0, r12 - ldr r4, [r0] - lsls r1, r7, 3 - adds r3, r4, 0 - adds r3, 0x7C - adds r2, r3, r1 - ldr r0, _08020874 - str r0, [r2] - adds r6, r4, 0 - adds r6, 0x80 - adds r1, r6, r1 - movs r0, 0x8 - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r2, r3, r1 - ldr r0, _08020878 - str r0, [r2] - adds r1, r6, r1 - movs r0, 0x9 - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r2, r3, r1 - ldr r0, _0802087C - str r0, [r2] - adds r1, r6, r1 - movs r0, 0xA - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r2, r3, r1 - ldr r0, _08020880 - ldr r0, [r0] - str r0, [r2] - adds r1, r6, r1 - movs r0, 0xB - str r0, [r1] - adds r7, 0x1 - lsls r1, r7, 3 - adds r3, r1 - movs r0, 0 - str r0, [r3] - adds r1, r6, r1 - movs r0, 0x1 - str r0, [r1] - movs r3, 0 - cmp r3, r7 - bge _0802084C - adds r5, r4, 0 - adds r4, 0xBC - adds r2, r6, 0 -_08020834: - ldrh r0, [r4] - cmp r0, 0 - bne _08020842 - ldr r1, [r2] - ldr r0, [r5, 0x78] - cmp r1, r0 - beq _080208A8 -_08020842: - adds r4, 0x2 - adds r2, 0x8 - adds r3, 0x1 - cmp r3, r7 - blt _08020834 -_0802084C: - movs r3, 0 - cmp r3, r7 - bge _080208A8 - mov r0, r12 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xBC - ldrh r0, [r0] - cmp r0, 0 - bne _08020884 - adds r0, r1, 0 - adds r0, 0x80 - ldr r0, [r0] - str r0, [r1, 0x78] - b _080208A8 - .align 2, 0 -_0802086C: .4byte gGulpinSet -_08020870: .4byte gUnknown_203B27C -_08020874: .4byte gGulpinLink -_08020878: .4byte gGulpinDelink -_0802087C: .4byte gGulpinForget -_08020880: .4byte gUnknown_80D4970 -_08020884: - adds r3, 0x1 - cmp r3, r7 - bge _080208A8 - mov r0, r12 - ldr r2, [r0] - lsls r0, r3, 1 - adds r1, r2, 0 - adds r1, 0xBC - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08020884 - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0x80 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x78] -_080208A8: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CreateGulpinLinkMenu - - thumb_func_start sub_80208B0 -sub_80208B0: - push {r4,lr} - ldr r4, _080208F4 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r4, [r4] - movs r3, 0 - ldr r0, _080208F8 - ldr r0, [r0] - str r0, [r4, 0x7C] - adds r1, r4, 0 - adds r1, 0x80 - movs r0, 0x10 - str r0, [r1] - movs r2, 0x1 - adds r1, 0x4 - ldr r0, _080208FC - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x11 - str r0, [r1] - adds r0, r4, 0 - adds r0, 0x8C - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080208F4: .4byte gUnknown_203B27C -_080208F8: .4byte gUnknown_80D4920 -_080208FC: .4byte gUnknown_80D4928 - thumb_func_end sub_80208B0 - - thumb_func_start sub_8020900 -sub_8020900: - push {r4,lr} - ldr r4, _08020944 - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _08020948 - ldr r0, [r0] - str r0, [r3, 0x7C] - adds r1, r3, 0 - adds r1, 0x80 - movs r0, 0x10 - str r0, [r1] - adds r1, 0x4 - ldr r0, _0802094C - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x11 - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x8C - str r2, [r0] - adds r1, 0x8 - movs r0, 0x1 - negs r0, r0 - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08020944: .4byte gUnknown_203B27C -_08020948: .4byte gUnknown_80D4920 -_0802094C: .4byte gUnknown_80D4928 - thumb_func_end sub_8020900 - - thumb_func_start sub_8020950 -sub_8020950: - push {r4,lr} - ldr r4, _0802099C - ldr r0, [r4] - adds r0, 0xBC - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r4, [r4] - movs r3, 0 - ldr r0, _080209A0 - str r0, [r4, 0x7C] - adds r1, r4, 0 - adds r1, 0x80 - movs r0, 0xD - str r0, [r1] - movs r2, 0x1 - adds r1, 0x4 - ldr r0, _080209A4 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xE - str r0, [r1] - adds r1, 0x4 - ldr r0, _080209A8 - str r0, [r1] - adds r1, 0x4 - movs r0, 0xF - str r0, [r1] - adds r0, r4, 0 - adds r0, 0x94 - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802099C: .4byte gUnknown_203B27C -_080209A0: .4byte gUnknown_80DC428 -_080209A4: .4byte gUnknown_80DC438 -_080209A8: .4byte gUnknown_80DC448 - thumb_func_end sub_8020950 - - thumb_func_start sub_80209AC -sub_80209AC: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _080209F4 - ldr r0, _080209D4 - ldr r1, [r0] - ldr r0, [sp] - str r0, [r1, 0x6C] - ldr r0, [sp] - cmp r0, 0x2 - beq _080209DE - cmp r0, 0x2 - bgt _080209D8 - cmp r0, 0x1 - beq _080209EE - b _080209F4 - .align 2, 0 -_080209D4: .4byte gUnknown_203B27C -_080209D8: - cmp r0, 0xB - beq _080209E6 - b _080209F4 -_080209DE: - movs r0, 0xE - bl sub_801FDA8 - b _080209F4 -_080209E6: - movs r0, 0x8 - bl sub_801FDA8 - b _080209F4 -_080209EE: - movs r0, 0xC - bl sub_801FDA8 -_080209F4: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80209AC - - thumb_func_start sub_80209FC -sub_80209FC: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _08020A2E - ldr r0, [sp] - cmp r0, 0x10 - beq _08020A20 - cmp r0, 0x10 - bgt _08020A1A - cmp r0, 0x1 - beq _08020A28 - b _08020A2E -_08020A1A: - cmp r0, 0x11 - beq _08020A28 - b _08020A2E -_08020A20: - movs r0, 0xE - bl sub_801FDA8 - b _08020A2E -_08020A28: - movs r0, 0xC - bl sub_801FDA8 -_08020A2E: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80209FC - - thumb_func_start sub_8020A34 -sub_8020A34: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _08020A7A - ldr r0, [sp] - cmp r0, 0xD - beq _08020A5C - cmp r0, 0xD - bgt _08020A52 - cmp r0, 0x1 - beq _08020A74 - b _08020A7A -_08020A52: - cmp r0, 0xE - beq _08020A64 - cmp r0, 0xF - beq _08020A6C - b _08020A7A -_08020A5C: - movs r0, 0x9 - bl sub_801FDA8 - b _08020A7A -_08020A64: - movs r0, 0xA - bl sub_801FDA8 - b _08020A7A -_08020A6C: - movs r0, 0xB - bl sub_801FDA8 - b _08020A7A -_08020A74: - movs r0, 0x1 - bl sub_801FDA8 -_08020A7A: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8020A34 - - thumb_func_start sub_8020A80 -sub_8020A80: - push {r4,lr} - movs r0, 0x1 - bl sub_8023A94 - cmp r0, 0x4 - bhi _08020B32 - lsls r0, 2 - ldr r1, _08020A98 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08020A98: .4byte _08020A9C - .align 2, 0 -_08020A9C: - .4byte _08020B32 - .4byte _08020B32 - .4byte _08020B28 - .4byte _08020AB0 - .4byte _08020AEC -_08020AB0: - bl sub_8023B44 - ldr r4, _08020AE0 - ldr r1, [r4] - strh r0, [r1, 0xC] - ldr r3, _08020AE4 - movs r0, 0xC - ldrsh r2, [r1, r0] - movs r0, 0x58 - muls r2, r0 - ldr r0, [r3] - adds r0, r2 - str r0, [r1, 0x10] - ldrb r0, [r0, 0x2] - strb r0, [r1, 0x16] - ldr r0, _08020AE8 - ldr r1, [r4] - ldr r1, [r1, 0x10] - bl PrintPokeNameToBuffer - movs r0, 0x11 - bl sub_801FDA8 - b _08020B32 - .align 2, 0 -_08020AE0: .4byte gUnknown_203B27C -_08020AE4: .4byte gRecruitedPokemonRef -_08020AE8: .4byte gUnknown_202E128 -_08020AEC: - bl sub_8023B44 - ldr r4, _08020B1C - ldr r1, [r4] - strh r0, [r1, 0xC] - ldr r3, _08020B20 - movs r0, 0xC - ldrsh r2, [r1, r0] - movs r0, 0x58 - muls r2, r0 - ldr r0, [r3] - adds r0, r2 - str r0, [r1, 0x10] - ldrb r0, [r0, 0x2] - strb r0, [r1, 0x16] - ldr r0, _08020B24 - ldr r1, [r4] - ldr r1, [r1, 0x10] - bl PrintPokeNameToBuffer - movs r0, 0x12 - bl sub_801FDA8 - b _08020B32 - .align 2, 0 -_08020B1C: .4byte gUnknown_203B27C -_08020B20: .4byte gRecruitedPokemonRef -_08020B24: .4byte gUnknown_202E128 -_08020B28: - bl sub_8023C60 - movs r0, 0x7 - bl sub_801FDA8 -_08020B32: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8020A80 - - thumb_func_start sub_8020B38 -sub_8020B38: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_8023A94 - ldr r4, _08020B7C - ldr r0, [r4] - adds r0, 0xCC - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _08020B68 - ldr r0, [r4] - adds r0, 0xCC - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _08020B68 - ldr r0, [r4] - str r1, [r0, 0x70] -_08020B68: - ldr r0, [sp] - subs r0, 0x1 - cmp r0, 0x10 - bhi _08020C24 - lsls r0, 2 - ldr r1, _08020B80 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08020B7C: .4byte gUnknown_203B27C -_08020B80: .4byte _08020B84 - .align 2, 0 -_08020B84: - .4byte _08020BC8 - .4byte _08020C24 - .4byte _08020BD0 - .4byte _08020C0E - .4byte _08020C24 - .4byte _08020C24 - .4byte _08020C24 - .4byte _08020C24 - .4byte _08020C24 - .4byte _08020C24 - .4byte _08020C16 - .4byte _08020C1E - .4byte _08020C24 - .4byte _08020C24 - .4byte _08020C24 - .4byte _08020C24 - .4byte _08020BC8 -_08020BC8: - movs r0, 0x10 - bl sub_801FDA8 - b _08020C24 -_08020BD0: - ldr r0, _08020BF0 - ldr r0, [r0] - ldr r0, [r0, 0x10] - movs r1, 0x8 - ldrsh r0, [r0, r1] - bl GetBaseSpeciesNoUnown - lsls r0, 16 - movs r1, 0xCF - lsls r1, 17 - cmp r0, r1 - bne _08020BF4 - movs r0, 0x1C - bl sub_801FDA8 - b _08020C24 - .align 2, 0 -_08020BF0: .4byte gUnknown_203B27C -_08020BF4: - bl sub_8021178 - lsls r0, 24 - cmp r0, 0 - beq _08020C06 - movs r0, 0x1B - bl sub_801FDA8 - b _08020C24 -_08020C06: - movs r0, 0x14 - bl sub_801FDA8 - b _08020C24 -_08020C0E: - movs r0, 0x1E - bl sub_801FDA8 - b _08020C24 -_08020C16: - movs r0, 0x12 - bl sub_801FDA8 - b _08020C24 -_08020C1E: - movs r0, 0x13 - bl sub_801FDA8 -_08020C24: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8020B38 - - thumb_func_start sub_8020C2C -sub_8020C2C: - push {lr} - bl sub_80244E4 - cmp r0, 0x1 - bls _08020C44 - cmp r0, 0x3 - bhi _08020C44 - bl sub_802453C - movs r0, 0x10 - bl sub_801FDA8 -_08020C44: - pop {r0} - bx r0 - thumb_func_end sub_8020C2C - - thumb_func_start sub_8020C48 -sub_8020C48: - push {lr} - bl sub_801BF48 - cmp r0, 0x1 - bls _08020C60 - cmp r0, 0x3 - bhi _08020C60 - bl sub_801BF98 - movs r0, 0x10 - bl sub_801FDA8 -_08020C60: - pop {r0} - bx r0 - thumb_func_end sub_8020C48 - - thumb_func_start sub_8020C64 -sub_8020C64: - push {lr} - movs r0, 0x1 - bl sub_801F520 - cmp r0, 0x3 - beq _08020C80 - cmp r0, 0x3 - bhi _08020C7A - cmp r0, 0x2 - beq _08020CB0 - b _08020CBA -_08020C7A: - cmp r0, 0x4 - beq _08020C98 - b _08020CBA -_08020C80: - bl sub_801F5B4 - ldr r1, _08020C94 - ldr r1, [r1] - strh r0, [r1, 0x1C] - strh r0, [r1, 0x1E] - movs r0, 0x17 - bl sub_801FDA8 - b _08020CBA - .align 2, 0 -_08020C94: .4byte gUnknown_203B27C -_08020C98: - bl sub_801F5B4 - ldr r1, _08020CAC - ldr r1, [r1] - strh r0, [r1, 0x1C] - strh r0, [r1, 0x1E] - movs r0, 0x18 - bl sub_801FDA8 - b _08020CBA - .align 2, 0 -_08020CAC: .4byte gUnknown_203B27C -_08020CB0: - bl sub_801F63C - movs r0, 0x10 - bl sub_801FDA8 -_08020CBA: - pop {r0} - bx r0 - thumb_func_end sub_8020C64 - - thumb_func_start sub_8020CC0 -sub_8020CC0: - push {r4-r6,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_801F520 - ldr r4, _08020D00 - ldr r0, [r4] - adds r0, 0xCC - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _08020CF0 - ldr r0, [r4] - adds r0, 0xCC - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _08020CF0 - ldr r0, [r4] - str r1, [r0, 0x74] -_08020CF0: - ldr r0, [sp] - cmp r0, 0x3 - beq _08020D14 - cmp r0, 0x3 - bgt _08020D04 - cmp r0, 0x1 - beq _08020D0C - b _08020D6C - .align 2, 0 -_08020D00: .4byte gUnknown_203B27C -_08020D04: - cmp r0, 0xB - beq _08020D66 - cmp r0, 0x11 - bne _08020D6C -_08020D0C: - movs r0, 0x16 - bl sub_801FDA8 - b _08020D6C -_08020D14: - bl sub_801F63C - ldr r4, _08020D30 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl unk_CopyMoves4To8 - movs r5, 0 - adds r6, r4, 0 - movs r4, 0x24 - b _08020D38 - .align 2, 0 -_08020D30: .4byte gUnknown_203B27C -_08020D34: - adds r4, 0x8 - adds r5, 0x1 -_08020D38: - cmp r5, 0x7 - bgt _08020D52 - ldr r3, [r6] - adds r2, r3, r4 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08020D34 - ldrh r1, [r3, 0x1E] - adds r0, r2, 0 - bl InitZeroedPPPokemonMove -_08020D52: - cmp r5, 0x3 - ble _08020D5E - movs r0, 0x1D - bl sub_801FDA8 - b _08020D6C -_08020D5E: - movs r0, 0x19 - bl sub_801FDA8 - b _08020D6C -_08020D66: - movs r0, 0x18 - bl sub_801FDA8 -_08020D6C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8020CC0 - - thumb_func_start sub_8020D74 -sub_8020D74: - push {lr} - bl sub_801F890 - cmp r0, 0x1 - bls _08020D8C - cmp r0, 0x3 - bhi _08020D8C - bl sub_801F8D0 - movs r0, 0x16 - bl sub_801FDA8 -_08020D8C: - pop {r0} - bx r0 - thumb_func_end sub_8020D74 - - thumb_func_start sub_8020D90 -sub_8020D90: - push {lr} - bl sub_801E8C0 - cmp r0, 0x2 - beq _08020DBC - cmp r0, 0x2 - bcc _08020DC6 - cmp r0, 0x3 - bne _08020DC6 - bl GulpinIsNextMoveLinked - ldr r1, _08020DB8 - ldr r1, [r1] - strb r0, [r1, 0x14] - bl sub_801E93C - movs r0, 0x1A - bl sub_801FDA8 - b _08020DC6 - .align 2, 0 -_08020DB8: .4byte gUnknown_203B27C -_08020DBC: - bl sub_801E93C - movs r0, 0x10 - bl sub_801FDA8 -_08020DC6: - pop {r0} - bx r0 - thumb_func_end sub_8020D90 - - thumb_func_start sub_8020DCC -sub_8020DCC: - push {lr} - movs r0, 0x1 - bl sub_801EF38 - cmp r0, 0x4 - bhi _08020EAA - lsls r0, 2 - ldr r1, _08020DE4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08020DE4: .4byte _08020DE8 - .align 2, 0 -_08020DE8: - .4byte _08020EAA - .4byte _08020E98 - .4byte _08020E64 - .4byte _08020DFC - .4byte _08020E30 -_08020DFC: - bl sub_801F1A4 - lsls r0, 24 - cmp r0, 0 - beq _08020E0E - ldr r0, _08020E2C - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x15] -_08020E0E: - bl sub_801F194 - ldr r1, _08020E2C - ldr r2, [r1] - str r0, [r2, 0x18] - lsls r0, 3 - adds r0, r2, r0 - ldrh r1, [r0, 0x26] - strh r1, [r2, 0x1C] - ldrh r0, [r0, 0x26] - strh r0, [r2, 0x20] - movs r0, 0x20 - bl sub_801FDA8 - b _08020EAA - .align 2, 0 -_08020E2C: .4byte gUnknown_203B27C -_08020E30: - bl sub_801F1A4 - lsls r0, 24 - cmp r0, 0 - beq _08020E42 - ldr r0, _08020E60 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x15] -_08020E42: - bl sub_801F194 - ldr r1, _08020E60 - ldr r2, [r1] - str r0, [r2, 0x18] - lsls r0, 3 - adds r0, r2, r0 - ldrh r1, [r0, 0x26] - strh r1, [r2, 0x1C] - ldrh r0, [r0, 0x26] - strh r0, [r2, 0x20] - movs r0, 0x21 - bl sub_801FDA8 - b _08020EAA - .align 2, 0 -_08020E60: .4byte gUnknown_203B27C -_08020E64: - bl sub_801F1A4 - lsls r0, 24 - cmp r0, 0 - beq _08020E76 - ldr r0, _08020E94 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x15] -_08020E76: - bl sub_801F214 - ldr r0, _08020E94 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl sub_8094060 - movs r0, 0x10 - bl sub_801FDA8 - b _08020EAA - .align 2, 0 -_08020E94: .4byte gUnknown_203B27C -_08020E98: - bl sub_801F1A4 - lsls r0, 24 - cmp r0, 0 - beq _08020EAA - ldr r0, _08020EB0 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x15] -_08020EAA: - pop {r0} - bx r0 - .align 2, 0 -_08020EB0: .4byte gUnknown_203B27C - thumb_func_end sub_8020DCC - - thumb_func_start sub_8020EB4 -sub_8020EB4: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_801EF38 - ldr r4, _08020EF8 - ldr r0, [r4] - adds r0, 0xCC - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _08020EE4 - ldr r0, [r4] - adds r0, 0xCC - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _08020EE4 - ldr r0, [r4] - str r1, [r0, 0x78] -_08020EE4: - ldr r0, [sp] - subs r0, 0x1 - cmp r0, 0x10 - bls _08020EEE - b _080210BE -_08020EEE: - lsls r0, 2 - ldr r1, _08020EFC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08020EF8: .4byte gUnknown_203B27C -_08020EFC: .4byte _08020F00 - .align 2, 0 -_08020F00: - .4byte _08021068 - .4byte _080210BE - .4byte _080210BE - .4byte _080210BE - .4byte _08020F44 - .4byte _08020F70 - .4byte _08020F8C - .4byte _08020FB8 - .4byte _08021034 - .4byte _08021074 - .4byte _080210B8 - .4byte _080210BE - .4byte _080210BE - .4byte _080210BE - .4byte _080210BE - .4byte _080210BE - .4byte _08021068 -_08020F44: - ldr r0, _08020F60 - ldr r1, [r0] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl ToggleSetMove - lsls r0, 24 - cmp r0, 0 - beq _08020F68 - ldr r0, _08020F64 - bl PlaySound - b _08021068 - .align 2, 0 -_08020F60: .4byte gUnknown_203B27C -_08020F64: .4byte 0x00000133 -_08020F68: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _08021068 -_08020F70: - ldr r0, _08020F84 - bl PlaySound - ldr r0, _08020F88 - ldr r1, [r0] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl UnSetMove - b _08021068 - .align 2, 0 -_08020F84: .4byte 0x00000133 -_08020F88: .4byte gUnknown_203B27C -_08020F8C: - ldr r0, _08020FA8 - ldr r1, [r0] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl ToggleMoveEnabled - lsls r0, 24 - cmp r0, 0 - beq _08020FB0 - ldr r0, _08020FAC - bl PlaySound - b _08021068 - .align 2, 0 -_08020FA8: .4byte gUnknown_203B27C -_08020FAC: .4byte 0x00000133 -_08020FB0: - movs r0, 0x2 - bl PlayMenuSoundEffect - b _08021068 -_08020FB8: - ldr r0, _08020FD8 - ldr r0, [r0] - movs r1, 0x98 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x95 - bgt _08020FDC - movs r0, 0x2 - bl PlayMenuSoundEffect - movs r0, 0x3 - bl sub_801FDA8 - b _080210BE - .align 2, 0 -_08020FD8: .4byte gTeamInventory_203B460 -_08020FDC: - ldr r4, _08020FFC - ldr r1, [r4] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl sub_8093318 - lsls r0, 24 - cmp r0, 0 - bne _08021000 - movs r0, 0x2 - bl PlayMenuSoundEffect - movs r0, 0x4 - bl sub_801FDA8 - b _080210BE - .align 2, 0 -_08020FFC: .4byte gUnknown_203B27C -_08021000: - ldr r1, [r4] - ldrb r0, [r1, 0x15] - cmp r0, 0 - bne _08021016 - movs r0, 0x1 - strb r0, [r1, 0x15] - movs r0, 0xA6 - lsls r0, 1 - bl PlaySound - b _0802101C -_08021016: - ldr r0, _0802102C - bl PlaySound -_0802101C: - ldr r0, _08021030 - ldr r1, [r0] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl TryLinkMovesAfter - b _08021068 - .align 2, 0 -_0802102C: .4byte 0x00000133 -_08021030: .4byte gUnknown_203B27C -_08021034: - ldr r4, _08021054 - ldr r1, [r4] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl sub_809333C - lsls r0, 24 - cmp r0, 0 - bne _08021058 - movs r0, 0x2 - bl PlayMenuSoundEffect - movs r0, 0x5 - bl sub_801FDA8 - b _080210BE - .align 2, 0 -_08021054: .4byte gUnknown_203B27C -_08021058: - ldr r0, _08021070 - bl PlaySound - ldr r1, [r4] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl UnlinkMovesAfter -_08021068: - movs r0, 0x1F - bl sub_801FDA8 - b _080210BE - .align 2, 0 -_08021070: .4byte 0x00000133 -_08021074: - ldr r4, _08021094 - ldr r1, [r4] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl IsAnyMoveLinked - lsls r0, 24 - cmp r0, 0 - bne _08021098 - movs r0, 0x2 - bl PlayMenuSoundEffect - movs r0, 0x6 - bl sub_801FDA8 - b _080210BE - .align 2, 0 -_08021094: .4byte gUnknown_203B27C -_08021098: - ldr r0, _080210B4 - bl PlaySound - ldr r1, [r4] - ldr r0, [r1, 0x18] - adds r1, 0x24 - bl IsNextMoveLinked - ldr r1, [r4] - strb r0, [r1, 0x14] - movs r0, 0x22 - bl sub_801FDA8 - b _080210BE - .align 2, 0 -_080210B4: .4byte 0x00000133 -_080210B8: - movs r0, 0x21 - bl sub_801FDA8 -_080210BE: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8020EB4 - - thumb_func_start sub_80210C8 -sub_80210C8: - push {lr} - bl sub_801F890 - cmp r0, 0x1 - bls _080210E0 - cmp r0, 0x3 - bhi _080210E0 - bl sub_801F8D0 - movs r0, 0x1F - bl sub_801FDA8 -_080210E0: - pop {r0} - bx r0 - thumb_func_end sub_80210C8 - - thumb_func_start sub_80210E4 -sub_80210E4: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802112A - ldr r0, [sp] - cmp r0, 0x10 - beq _08021108 - cmp r0, 0x10 - bgt _08021102 - cmp r0, 0x1 - beq _08021124 - b _0802112A -_08021102: - cmp r0, 0x11 - beq _08021124 - b _0802112A -_08021108: - ldr r0, _08021120 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x18] - bl RemoveLinkSequenceFromMoves8 - movs r0, 0x23 - bl sub_801FDA8 - b _0802112A - .align 2, 0 -_08021120: .4byte gUnknown_203B27C -_08021124: - movs r0, 0x1F - bl sub_801FDA8 -_0802112A: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80210E4 - - thumb_func_start sub_8021130 -sub_8021130: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _08021148 - ldr r0, _08021150 - ldr r0, [r0] - ldr r0, [r0, 0x8] - bl sub_801FDA8 -_08021148: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08021150: .4byte gUnknown_203B27C - thumb_func_end sub_8021130 - - thumb_func_start sub_8021154 -sub_8021154: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0x4 - bne _0802116C - ldr r0, _08021174 - ldr r0, [r0] - ldr r0, [r0, 0x8] - bl sub_801FDA8 -_0802116C: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08021174: .4byte gUnknown_203B27C - thumb_func_end sub_8021154 - - thumb_func_start sub_8021178 -sub_8021178: - push {lr} - mov r12, r4 - ldr r4, _08021198 - add sp, r4 - mov r4, r12 - ldr r0, _0802119C - ldr r0, [r0] - ldr r1, [r0, 0x10] - mov r0, sp - bl sub_808E218 - cmp r0, 0 - beq _080211A0 - movs r0, 0 - b _080211A2 - .align 2, 0 -_08021198: .4byte 0xfffffcc0 -_0802119C: .4byte gUnknown_203B27C -_080211A0: - movs r0, 0x1 -_080211A2: - movs r3, 0xD0 - lsls r3, 2 - add sp, r3 - pop {r1} - bx r1 - thumb_func_end sub_8021178 - - thumb_func_start sub_80211AC -sub_80211AC: - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r1, 0 - bl sub_8021700 - lsls r0, 24 - cmp r0, 0 - beq _080211C0 - movs r0, 0 - b _08021258 -_080211C0: - ldr r5, _08021260 - movs r0, 0xE0 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] - str r4, [r0, 0x3C] - str r6, [r0, 0x74] - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 3 - adds r1, 0x7C - adds r1, r0, r1 - str r1, [r0, 0x78] - adds r0, 0x7C - bl sub_8006518 - ldr r1, [r5] - ldr r2, [r1, 0x74] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, 0x7C - ldr r0, _08021264 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r5] - ldr r1, [r0, 0x78] - adds r0, 0xDC - str r0, [r1, 0x14] - bl ResetUnusedInputStruct - ldr r0, [r5] - adds r0, 0x7C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r4, [r5] - adds r4, 0x40 - bl sub_8021664 - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0xA - adds r3, r6, 0 - bl sub_8013818 - ldr r0, _08021268 - ldr r2, [r5] - ldr r1, [r0] - ldr r0, [r2, 0x3C] - cmp r1, r0 - bne _0802124E - ldr r0, _0802126C - ldrh r1, [r0] - adds r0, r2, 0 - adds r0, 0x58 - strh r1, [r0] - ldr r0, _08021270 - ldrh r0, [r0] - adds r1, r2, 0 - adds r1, 0x5E - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x40 - bl sub_8013984 -_0802124E: - bl sub_8021410 - bl sub_8021494 - movs r0, 0x1 -_08021258: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08021260: .4byte gUnknown_203B280 -_08021264: .4byte gUnknown_80DC47C -_08021268: .4byte gUnknown_203B284 -_0802126C: .4byte gUnknown_203B288 -_08021270: .4byte gUnknown_203B28A - thumb_func_end sub_80211AC - - thumb_func_start sub_8021274 -sub_8021274: - push {r4,lr} - lsls r0, 24 - cmp r0, 0 - bne _08021290 - ldr r0, _0802128C - ldr r0, [r0] - adds r0, 0x40 - bl sub_8013660 - movs r0, 0 - b _08021326 - .align 2, 0 -_0802128C: .4byte gUnknown_203B280 -_08021290: - ldr r4, _080212A8 - ldr r0, [r4] - adds r0, 0x40 - bl GetKeyPress - cmp r0, 0x2 - beq _080212B2 - cmp r0, 0x2 - bgt _080212AC - cmp r0, 0x1 - beq _080212BC - b _08021300 - .align 2, 0 -_080212A8: .4byte gUnknown_203B280 -_080212AC: - cmp r0, 0x4 - beq _080212F6 - b _08021300 -_080212B2: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _08021326 -_080212BC: - ldr r0, [r4] - ldr r0, [r0, 0x3C] - cmp r0, 0x2 - bne _080212EC - bl sub_802132C - lsls r0, 24 - lsrs r0, 24 - bl GetFriendAreaPrice - ldr r1, _080212E8 - ldr r1, [r1] - movs r2, 0x98 - lsls r2, 2 - adds r1, r2 - ldr r1, [r1] - cmp r0, r1 - ble _080212EC - movs r0, 0x2 - bl PlayMenuSoundEffect - b _080212F2 - .align 2, 0 -_080212E8: .4byte gTeamInventory_203B460 -_080212EC: - movs r0, 0 - bl PlayMenuSoundEffect -_080212F2: - movs r0, 0x3 - b _08021326 -_080212F6: - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0x4 - b _08021326 -_08021300: - ldr r0, _08021318 - ldr r0, [r0] - adds r0, 0x40 - movs r1, 0x1 - bl sub_80138B8 - lsls r0, 24 - cmp r0, 0 - bne _0802131C - movs r0, 0 - b _08021326 - .align 2, 0 -_08021318: .4byte gUnknown_203B280 -_0802131C: - bl sub_8021410 - bl sub_8021494 - movs r0, 0x1 -_08021326: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8021274 - - thumb_func_start sub_802132C -sub_802132C: - ldr r0, _08021350 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x5E - movs r3, 0 - ldrsh r1, [r0, r3] - subs r0, 0x2 - movs r3, 0 - ldrsh r0, [r0, r3] - muls r0, r1 - adds r1, r2, 0 - adds r1, 0x58 - movs r3, 0 - ldrsh r1, [r1, r3] - adds r0, r1 - adds r0, r2, r0 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08021350: .4byte gUnknown_203B280 - thumb_func_end sub_802132C - - thumb_func_start sub_8021354 -sub_8021354: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ResetUnusedInputStruct - ldr r5, _0802139C - ldr r0, [r5] - adds r0, 0x7C - movs r1, 0 - movs r2, 0 - bl sub_800641C - bl sub_8021664 - adds r1, r0, 0 - ldr r0, [r5] - adds r2, r0, 0 - adds r2, 0x62 - strh r1, [r2] - adds r0, 0x40 - bl sub_8013984 - bl sub_8021410 - bl sub_8021494 - cmp r4, 0 - beq _08021396 - ldr r0, [r5] - adds r0, 0x40 - bl AddMenuCursorSprite -_08021396: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802139C: .4byte gUnknown_203B280 - thumb_func_end sub_8021354 - - thumb_func_start sub_80213A0 -sub_80213A0: - push {r4,r5,lr} - ldr r4, _080213FC - ldr r2, [r4] - cmp r2, 0 - beq _080213F4 - ldr r1, _08021400 - ldr r0, [r2, 0x3C] - str r0, [r1] - ldr r1, _08021404 - adds r0, r2, 0 - adds r0, 0x58 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, _08021408 - adds r0, r2, 0 - adds r0, 0x5E - ldrh r0, [r0] - strh r0, [r1] - ldr r0, [r2, 0x74] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x7C - ldr r0, _0802140C - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_080213F4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080213FC: .4byte gUnknown_203B280 -_08021400: .4byte gUnknown_203B284 -_08021404: .4byte gUnknown_203B288 -_08021408: .4byte gUnknown_203B28A -_0802140C: .4byte gUnknown_80DC464 - thumb_func_end sub_80213A0 - - thumb_func_start sub_8021410 -sub_8021410: - push {r4,lr} - ldr r4, _08021490 - ldr r0, [r4] - adds r0, 0xDC - movs r2, 0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xDD - strb r2, [r0] - ldr r0, [r4] - adds r0, 0xDE - movs r1, 0xC - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xDF - strb r2, [r0] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - adds r0, 0x5A - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0xC - bl sub_80095E4 - adds r0, 0x2 - lsls r0, 16 - ldr r2, [r4] - ldr r3, [r2, 0x74] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x8A - asrs r3, r0, 16 - lsrs r0, 16 - strh r0, [r1] - ldr r1, [r2, 0x74] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r2, r0 - adds r3, 0x2 - adds r2, 0x8C - strh r3, [r2] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08021490: .4byte gUnknown_203B280 - thumb_func_end sub_8021410 - - thumb_func_start sub_8021494 -sub_8021494: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xA8 - ldr r4, _08021568 - ldr r0, [r4] - ldr r0, [r0, 0x74] - bl sub_8008C54 - ldr r0, [r4] - ldr r0, [r0, 0x74] - bl sub_80073B8 - ldr r2, _0802156C - ldr r0, [r4] - ldr r3, [r0, 0x74] - movs r0, 0 - str r0, [sp] - movs r0, 0xA - movs r1, 0 - bl xxx_call_draw_string - ldr r3, [r4] - adds r0, r3, 0 - adds r0, 0xDE - ldrb r0, [r0] - lsls r0, 3 - adds r0, 0x4 - adds r1, r3, 0 - adds r1, 0x5E - movs r5, 0 - ldrsh r2, [r1, r5] - adds r2, 0x1 - movs r1, 0x7 - str r1, [sp] - ldr r1, [r3, 0x74] - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x1 - bl sub_8012BC4 - movs r0, 0 - mov r9, r0 - ldr r0, [r4] - adds r0, 0x5A - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r9, r0 - blt _080214FC - b _08021646 -_080214FC: - mov r8, r4 - add r2, sp, 0x58 - mov r10, r2 -_08021502: - mov r3, r8 - ldr r2, [r3] - adds r0, r2, 0 - adds r0, 0x5E - movs r5, 0 - ldrsh r1, [r0, r5] - subs r0, 0x2 - movs r3, 0 - ldrsh r0, [r0, r3] - muls r0, r1 - add r0, r9 - adds r0, r2, r0 - ldrb r5, [r0] - adds r7, r5, 0 - ldr r6, [r2, 0x3C] - cmp r6, 0x2 - bne _0802159C - add r0, sp, 0x8 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_8092578 - adds r0, r5, 0 - bl GetFriendAreaPrice - ldr r1, _08021570 - ldr r1, [r1] - movs r5, 0x98 - lsls r5, 2 - adds r1, r5 - ldr r1, [r1] - cmp r0, r1 - bgt _08021574 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x40 - mov r1, r9 - bl sub_8013800 - adds r1, r0, 0 - mov r2, r8 - ldr r0, [r2] - ldr r3, [r0, 0x74] - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - add r2, sp, 0x8 - bl xxx_call_draw_string - b _08021632 - .align 2, 0 -_08021568: .4byte gUnknown_203B280 -_0802156C: .4byte gUnknown_80DC494 -_08021570: .4byte gTeamInventory_203B460 -_08021574: - mov r0, r10 - ldr r1, _08021598 - add r2, sp, 0x8 - bl sprintfStatic - mov r3, r8 - ldr r0, [r3] - adds r0, 0x40 - mov r1, r9 - bl sub_8013800 - adds r1, r0, 0 - mov r5, r8 - ldr r0, [r5] - ldr r3, [r0, 0x74] - movs r0, 0 - str r0, [sp] - b _080215FE - .align 2, 0 -_08021598: .4byte gUnknown_80DC4A4 -_0802159C: - cmp r6, 0 - bne _0802160C - ldr r0, _080215D4 - ldr r0, [r0] - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080215D8 - adds r0, r2, 0 - adds r0, 0x40 - mov r1, r9 - bl sub_8013800 - adds r4, r0, 0 - adds r0, r5, 0 - bl GetFriendAreaName - adds r2, r0, 0 - mov r1, r8 - ldr r0, [r1] - ldr r3, [r0, 0x74] - str r6, [sp] - movs r0, 0x8 - adds r1, r4, 0 - bl xxx_call_draw_string - b _08021632 - .align 2, 0 -_080215D4: .4byte gFriendAreas -_080215D8: - adds r0, r5, 0 - bl GetFriendAreaName - adds r2, r0, 0 - mov r0, r10 - ldr r1, _08021608 - bl sprintfStatic - mov r2, r8 - ldr r0, [r2] - adds r0, 0x40 - mov r1, r9 - bl sub_8013800 - adds r1, r0, 0 - mov r3, r8 - ldr r0, [r3] - ldr r3, [r0, 0x74] - str r6, [sp] -_080215FE: - movs r0, 0x8 - mov r2, r10 - bl xxx_call_draw_string - b _08021632 - .align 2, 0 -_08021608: .4byte gUnknown_80DC4AC -_0802160C: - adds r0, r2, 0 - adds r0, 0x40 - mov r1, r9 - bl sub_8013800 - adds r4, r0, 0 - adds r0, r7, 0 - bl GetFriendAreaName - adds r2, r0, 0 - mov r5, r8 - ldr r0, [r5] - ldr r3, [r0, 0x74] - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - adds r1, r4, 0 - bl xxx_call_draw_string -_08021632: - movs r0, 0x1 - add r9, r0 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x5A - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r9, r0 - bge _08021646 - b _08021502 -_08021646: - ldr r0, _08021660 - ldr r0, [r0] - ldr r0, [r0, 0x74] - bl sub_80073E0 - add sp, 0xA8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08021660: .4byte gUnknown_203B280 - thumb_func_end sub_8021494 - - thumb_func_start sub_8021664 -sub_8021664: - push {r4-r6,lr} - movs r5, 0 - ldr r1, _0802167C - ldr r0, [r1] - ldr r0, [r0, 0x3C] - cmp r0, 0x1 - beq _08021692 - cmp r0, 0x1 - bcc _08021680 - cmp r0, 0x2 - beq _080216B4 - b _080216F2 - .align 2, 0 -_0802167C: .4byte gUnknown_203B280 -_08021680: - movs r4, 0x1 -_08021682: - ldr r0, [r1] - adds r0, r5 - strb r4, [r0] - adds r5, 0x1 - adds r4, 0x1 - cmp r4, 0x39 - ble _08021682 - b _080216F2 -_08021692: - movs r4, 0x1 - ldr r2, _080216B0 -_08021696: - ldr r0, [r2] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080216A8 - ldr r0, [r1] - adds r0, r5 - strb r4, [r0] - adds r5, 0x1 -_080216A8: - adds r4, 0x1 - cmp r4, 0x39 - ble _08021696 - b _080216F2 - .align 2, 0 -_080216B0: .4byte gFriendAreas -_080216B4: - movs r4, 0x1 - adds r6, r1, 0 -_080216B8: - ldr r0, _080216FC - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080216EC - lsls r0, r4, 24 - lsrs r0, 24 - bl GetFriendAreaUnlockCondition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080216E4 - cmp r0, 0x1 - bne _080216EC - movs r0, 0x6 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _080216EC -_080216E4: - ldr r0, [r6] - adds r0, r5 - strb r4, [r0] - adds r5, 0x1 -_080216EC: - adds r4, 0x1 - cmp r4, 0x39 - ble _080216B8 -_080216F2: - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080216FC: .4byte gFriendAreas - thumb_func_end sub_8021664 - - thumb_func_start sub_8021700 -sub_8021700: - push {r4,lr} - cmp r0, 0x1 - beq _08021710 - cmp r0, 0x1 - bcc _08021754 - cmp r0, 0x2 - beq _0802172C - b _0802176A -_08021710: - movs r4, 0x1 - ldr r0, _08021728 - ldr r1, [r0] -_08021716: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08021754 - adds r4, 0x1 - cmp r4, 0x39 - ble _08021716 - b _0802176A - .align 2, 0 -_08021728: .4byte gFriendAreas -_0802172C: - movs r4, 0x1 -_0802172E: - ldr r0, _08021750 - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _08021764 - lsls r0, r4, 24 - lsrs r0, 24 - bl GetFriendAreaUnlockCondition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08021754 - cmp r0, 0x1 - beq _08021758 - b _08021764 - .align 2, 0 -_08021750: .4byte gFriendAreas -_08021754: - movs r0, 0 - b _0802176C -_08021758: - movs r0, 0x6 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _08021754 -_08021764: - adds r4, 0x1 - cmp r4, 0x39 - ble _0802172E -_0802176A: - movs r0, 0x1 -_0802176C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8021700 - - thumb_func_start sub_8021774 -sub_8021774: - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - adds r5, r1, 0 - mov r8, r2 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _080217E4 - movs r0, 0xE0 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r6] - strb r4, [r0, 0xC] - ldr r0, [r6] - strb r5, [r0, 0xD] - ldr r0, [r6] - bl sub_801317C - bl sub_8021A60 - ldr r0, [r6] - mov r1, r8 - str r1, [r0, 0x74] - lsls r1, 1 - add r1, r8 - lsls r1, 3 - adds r1, 0x7C - adds r1, r0, r1 - str r1, [r0, 0x78] - adds r0, 0x7C - bl sub_8006518 - ldr r1, [r6] - ldr r2, [r1, 0x74] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, 0x7C - ldr r0, _080217E8 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - bl sub_8021820 - movs r0, 0x1 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080217E4: .4byte gUnknown_203B28C -_080217E8: .4byte gUnknown_80DC4D8 - thumb_func_end sub_8021774 - - thumb_func_start sub_80217EC -sub_80217EC: - push {lr} - ldr r0, _0802180C - ldr r0, [r0] - ldr r1, [r0, 0x74] - bl sub_8012A64 - cmp r0, 0x1 - beq _08021810 - cmp r0, 0x2 - bne _0802181A - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0802181C - .align 2, 0 -_0802180C: .4byte gUnknown_203B28C -_08021810: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _0802181C -_0802181A: - movs r0, 0 -_0802181C: - pop {r1} - bx r1 - thumb_func_end sub_80217EC - - thumb_func_start sub_8021820 -sub_8021820: - push {lr} - bl sub_8021878 - bl sub_8021894 - pop {r0} - bx r0 - thumb_func_end sub_8021820 - - thumb_func_start sub_8021830 -sub_8021830: - push {r4,r5,lr} - ldr r4, _08021870 - ldr r2, [r4] - cmp r2, 0 - beq _0802186A - ldr r0, [r2, 0x74] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x7C - ldr r0, _08021874 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x7C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0802186A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08021870: .4byte gUnknown_203B28C -_08021874: .4byte gUnknown_80DC4BC - thumb_func_end sub_8021830 - - thumb_func_start sub_8021878 -sub_8021878: - push {lr} - bl ResetUnusedInputStruct - ldr r0, _08021890 - ldr r0, [r0] - adds r0, 0x7C - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r0} - bx r0 - .align 2, 0 -_08021890: .4byte gUnknown_203B28C - thumb_func_end sub_8021878 - - thumb_func_start sub_8021894 -sub_8021894: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x168 - ldr r4, _080218F8 - ldr r0, [r4] - ldr r0, [r0, 0x74] - bl sub_80073B8 - ldr r0, [r4] - ldrb r1, [r0, 0xC] - add r0, sp, 0x4 - movs r2, 0 - bl sub_8092578 - ldr r0, [r4] - ldr r3, [r0, 0x74] - movs r5, 0 - str r5, [sp] - movs r0, 0x14 - movs r1, 0 - add r2, sp, 0x4 - bl xxx_call_draw_string - ldr r0, [r4] - ldrb r0, [r0, 0xC] - bl GetFriendAreaDescription - adds r2, r0, 0 - ldr r0, [r4] - ldr r3, [r0, 0x74] - str r5, [sp] - movs r0, 0xA - movs r1, 0x14 - bl xxx_call_draw_string - ldr r4, [r4] - ldrb r0, [r4, 0xD] - cmp r0, 0 - beq _08021900 - ldr r2, _080218FC - ldr r3, [r4, 0x74] - str r5, [sp] - movs r0, 0x20 - movs r1, 0x3C - bl xxx_call_draw_string - b _0802190E - .align 2, 0 -_080218F8: .4byte gUnknown_203B28C -_080218FC: .4byte gUnknown_80DC4F0 -_08021900: - ldr r2, _0802193C - ldr r3, [r4, 0x74] - str r0, [sp] - movs r0, 0x20 - movs r1, 0x3C - bl xxx_call_draw_string -_0802190E: - ldr r4, _08021940 - ldr r0, [r4] - ldr r0, [r0, 0x74] - movs r5, 0x4 - str r5, [sp] - movs r1, 0x4 - movs r2, 0x40 - movs r3, 0x14 - bl sub_800792C - ldr r4, [r4] - ldrb r0, [r4, 0xD] - cmp r0, 0 - beq _08021944 - ldr r0, [r4, 0x74] - str r5, [sp] - movs r1, 0xB8 - movs r2, 0x40 - movs r3, 0x14 - bl sub_800792C - b _08021952 - .align 2, 0 -_0802193C: .4byte gUnknown_80DC518 -_08021940: .4byte gUnknown_203B28C -_08021944: - ldr r0, [r4, 0x74] - str r5, [sp] - movs r1, 0x5E - movs r2, 0x40 - movs r3, 0x6E - bl sub_800792C -_08021952: - ldr r5, _080219E8 - ldr r0, [r5] - ldr r0, [r0, 0x74] - movs r4, 0x4 - str r4, [sp] - movs r1, 0x4 - movs r2, 0x82 - movs r3, 0xC8 - bl sub_800792C - ldr r0, [r5] - ldr r0, [r0, 0x74] - str r4, [sp] - movs r1, 0x3 - movs r2, 0x40 - movs r3, 0x43 - bl sub_8007A78 - ldr r0, [r5] - ldr r0, [r0, 0x74] - str r4, [sp] - movs r1, 0xCC - movs r2, 0x40 - movs r3, 0x43 - bl sub_8007A78 - movs r6, 0 - ldr r0, [r5] - ldr r0, [r0, 0x70] - cmp r6, r0 - bge _08021A40 - add r7, sp, 0x104 - mov r8, r5 - mov r9, r6 -_08021996: - adds r0, r6, 0 - movs r1, 0x3 - bl __modsi3 - lsls r1, r0, 6 - subs r1, r0 - adds r5, r1, 0x7 - adds r0, r6, 0 - movs r1, 0x3 - bl __divsi3 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r4, r1, 0 - adds r4, 0x47 - mov r1, r8 - ldr r0, [r1] - lsls r1, r6, 1 - adds r0, 0xE - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r7, 0 - bl sub_808D930 - mov r0, r8 - ldr r3, [r0] - lsls r1, r6, 2 - adds r0, r3, 0 - adds r0, 0x30 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - beq _08021A04 - cmp r0, 0x1 - bcc _080219EC - cmp r0, 0x2 - beq _08021A16 - b _08021A34 - .align 2, 0 -_080219E8: .4byte gUnknown_203B28C -_080219EC: - ldr r0, _08021A00 - ldr r2, [r0] - ldr r3, [r3, 0x74] - mov r1, r9 - str r1, [sp] - adds r0, r5, 0 - adds r1, r4, 0 - bl xxx_call_draw_string - b _08021A34 - .align 2, 0 -_08021A00: .4byte gUnknown_80D49BC -_08021A04: - ldr r3, [r3, 0x74] - mov r2, r9 - str r2, [sp] - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r7, 0 - bl xxx_call_draw_string - b _08021A34 -_08021A16: - add r0, sp, 0x4 - ldr r1, _08021A58 - adds r2, r7, 0 - bl sprintfStatic - mov r1, r8 - ldr r0, [r1] - ldr r3, [r0, 0x74] - mov r2, r9 - str r2, [sp] - adds r0, r5, 0 - adds r1, r4, 0 - add r2, sp, 0x4 - bl xxx_call_draw_string -_08021A34: - adds r6, 0x1 - mov r1, r8 - ldr r0, [r1] - ldr r0, [r0, 0x70] - cmp r6, r0 - blt _08021996 -_08021A40: - ldr r0, _08021A5C - ldr r0, [r0] - ldr r0, [r0, 0x74] - bl sub_80073E0 - add sp, 0x168 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08021A58: .4byte gUnknown_80DC524 -_08021A5C: .4byte gUnknown_203B28C - thumb_func_end sub_8021894 - - thumb_func_start sub_8021A60 -sub_8021A60: - push {r4-r7,lr} - ldr r2, _08021B4C - ldr r1, [r2] - movs r0, 0 - str r0, [r1, 0x70] - movs r6, 0 - adds r4, r2, 0 - movs r3, 0 -_08021A70: - ldr r1, [r4] - lsls r2, r6, 1 - adds r0, r1, 0 - adds r0, 0xE - adds r0, r2 - strh r3, [r0] - lsls r0, r6, 2 - adds r1, 0x30 - adds r1, r0 - str r3, [r1] - adds r6, 0x1 - cmp r6, 0xF - ble _08021A70 - movs r6, 0 - ldr r7, _08021B4C -_08021A8E: - lsls r0, r6, 16 - asrs r5, r0, 16 - ldr r4, [r7] - adds r0, r5, 0 - bl GetFriendArea - ldrb r1, [r4, 0xC] - lsls r0, 24 - lsrs r0, 24 - cmp r1, r0 - bne _08021AC4 - adds r0, r5, 0 - bl GetBaseSpeciesNoUnown - lsls r0, 16 - asrs r0, 16 - cmp r5, r0 - bne _08021AC4 - ldr r3, [r7] - ldr r1, [r3, 0x70] - lsls r2, r1, 1 - adds r0, r3, 0 - adds r0, 0xE - adds r0, r2 - strh r5, [r0] - adds r1, 0x1 - str r1, [r3, 0x70] -_08021AC4: - adds r6, 0x1 - ldr r0, _08021B50 - cmp r6, r0 - ble _08021A8E - movs r6, 0 -_08021ACE: - lsls r0, r6, 16 - asrs r4, r0, 16 - adds r0, r4, 0 - bl sub_8098134 - lsls r0, 24 - cmp r0, 0 - beq _08021AFC - adds r0, r4, 0 - bl sub_8021B58 - adds r2, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _08021AFC - ldr r0, _08021B4C - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, 0x30 - adds r1, r0 - movs r0, 0x1 - str r0, [r1] -_08021AFC: - adds r6, 0x1 - ldr r0, _08021B50 - cmp r6, r0 - ble _08021ACE - movs r6, 0 - ldr r4, _08021B54 -_08021B08: - movs r0, 0x58 - adds r1, r6, 0 - muls r1, r0 - ldr r0, [r4] - adds r2, r0, r1 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08021B3C - movs r1, 0x8 - ldrsh r0, [r2, r1] - bl sub_8021B58 - adds r2, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _08021B3C - ldr r0, _08021B4C - ldr r1, [r0] - lsls r0, r2, 2 - adds r1, 0x30 - adds r1, r0 - movs r0, 0x2 - str r0, [r1] -_08021B3C: - adds r6, 0x1 - movs r0, 0xCE - lsls r0, 1 - cmp r6, r0 - ble _08021B08 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08021B4C: .4byte gUnknown_203B28C -_08021B50: .4byte 0x000001a7 -_08021B54: .4byte gRecruitedPokemonRef - thumb_func_end sub_8021A60 - - thumb_func_start sub_8021B58 -sub_8021B58: - push {r4,r5,lr} - lsls r0, 16 - asrs r0, 16 - bl GetBaseSpeciesNoUnown - lsls r0, 16 - asrs r4, r0, 16 - movs r2, 0 - ldr r0, _08021B84 - ldr r0, [r0] - ldr r1, [r0, 0x70] - cmp r2, r1 - bge _08021B90 - adds r3, r1, 0 - adds r1, r0, 0 - adds r1, 0xE -_08021B78: - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r4, r0 - bne _08021B88 - adds r0, r2, 0 - b _08021B94 - .align 2, 0 -_08021B84: .4byte gUnknown_203B28C -_08021B88: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, r3 - blt _08021B78 -_08021B90: - movs r0, 0x1 - negs r0, r0 -_08021B94: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8021B58 - - thumb_func_start CreateWigglytuffShop -CreateWigglytuffShop: - push {r4-r6,lr} - adds r4, r0, 0 - bl ResetUnusedInputStruct - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r5, _08021BF8 - movs r0, 0x9C - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] - movs r6, 0 - str r6, [r0, 0x14] - str r6, [r0, 0x18] - str r4, [r0] - ldr r0, _08021BFC - movs r1, 0x28 - bl CopyYellowMonsterNametoBuffer - ldr r4, _08021C00 - adds r0, r4, 0 - movs r1, 0x28 - bl CopyYellowMonsterNametoBuffer - movs r0, 0x28 - bl GetMonSpecies - adds r1, r0, 0 - subs r4, 0x50 - adds r0, r4, 0 - bl strcpy - ldr r5, [r5] - ldr r0, [r5] - cmp r0, 0x1 - bne _08021C04 - adds r0, r5, 0 - adds r0, 0xCC - str r6, [r0] - b _08021C0E - .align 2, 0 -_08021BF8: .4byte gUnknown_203B290 -_08021BFC: .4byte gUnknown_202E5D8 -_08021C00: .4byte gUnknown_202E1C8 -_08021C04: - adds r1, r5, 0 - adds r1, 0xCC - adds r0, r5, 0 - adds r0, 0xBC - str r0, [r1] -_08021C0E: - movs r0, 0x28 - bl GetDialogueSpriteDataPtr - ldr r2, _08021C58 - ldr r3, [r2] - adds r1, r3, 0 - adds r1, 0xBC - str r0, [r1] - adds r1, 0x4 - ldr r0, [r0, 0x4] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0xC8 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xC9 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xCA - strb r1, [r0] - ldr r1, [r2] - adds r2, r1, 0 - adds r2, 0xC4 - movs r0, 0x2 - strh r0, [r2] - adds r1, 0xC6 - movs r0, 0x8 - strh r0, [r1] - movs r0, 0 - bl sub_8021D44 - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08021C58: .4byte gUnknown_203B290 - thumb_func_end CreateWigglytuffShop - - thumb_func_start sub_8021C5C -sub_8021C5C: - push {lr} - ldr r0, _08021C74 - ldr r0, [r0] - ldr r0, [r0, 0x4] - cmp r0, 0x17 - bhi _08021D10 - lsls r0, 2 - ldr r1, _08021C78 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08021C74: .4byte gUnknown_203B290 -_08021C78: .4byte _08021C7C - .align 2, 0 -_08021C7C: - .4byte _08021CDC - .4byte _08021CDC - .4byte _08021D10 - .4byte _08021D10 - .4byte _08021D0C - .4byte _08021D10 - .4byte _08021D10 - .4byte _08021D10 - .4byte _08021D10 - .4byte _08021CE2 - .4byte _08021CE2 - .4byte _08021CE8 - .4byte _08021D10 - .4byte _08021CF4 - .4byte _08021CFA - .4byte _08021D10 - .4byte _08021D00 - .4byte _08021CEE - .4byte _08021D10 - .4byte _08021D10 - .4byte _08021D10 - .4byte _08021D10 - .4byte _08021D06 - .4byte _08021D06 -_08021CDC: - bl sub_8022460 - b _08021D14 -_08021CE2: - bl sub_8022538 - b _08021D14 -_08021CE8: - bl sub_80225C8 - b _08021D14 -_08021CEE: - bl sub_80224D4 - b _08021D14 -_08021CF4: - bl sub_80226F0 - b _08021D14 -_08021CFA: - bl sub_8022790 - b _08021D14 -_08021D00: - bl sub_8022668 - b _08021D14 -_08021D06: - bl sub_8022684 - b _08021D14 -_08021D0C: - movs r0, 0x3 - b _08021D16 -_08021D10: - bl sub_80226CC -_08021D14: - movs r0, 0 -_08021D16: - pop {r1} - bx r1 - thumb_func_end sub_8021C5C - - thumb_func_start sub_8021D1C -sub_8021D1C: - push {r4,lr} - ldr r4, _08021D40 - ldr r0, [r4] - cmp r0, 0 - beq _08021D38 - adds r0, 0xBC - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_08021D38: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08021D40: .4byte gUnknown_203B290 - thumb_func_end sub_8021D1C - - thumb_func_start sub_8021D44 -sub_8021D44: - push {lr} - ldr r1, _08021D58 - ldr r1, [r1] - str r0, [r1, 0x4] - bl sub_8021D5C - bl UpdateWigglytuffDialogue - pop {r0} - bx r0 - .align 2, 0 -_08021D58: .4byte gUnknown_203B290 - thumb_func_end sub_8021D44 - - thumb_func_start sub_8021D5C -sub_8021D5C: - push {r4-r7,lr} - ldr r4, _08021D7C - ldr r0, [r4] - adds r0, 0xD0 - bl sub_8006518 - ldr r1, [r4] - ldr r0, [r1, 0x4] - cmp r0, 0x9 - blt _08021DC8 - cmp r0, 0xA - ble _08021D80 - cmp r0, 0xB - beq _08021DB0 - b _08021DC8 - .align 2, 0 -_08021D7C: .4byte gUnknown_203B290 -_08021D80: - ldr r2, _08021DA8 - adds r1, 0xD0 - adds r0, r2, 0 - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldm r0!, {r3,r5,r7} - stm r1!, {r3,r5,r7} - ldr r0, [r4] - movs r6, 0x80 - lsls r6, 1 - adds r0, r6 - ldm r2!, {r1,r3,r7} - stm r0!, {r1,r3,r7} - ldm r2!, {r5-r7} - stm r0!, {r5-r7} - ldr r1, [r4] - adds r1, 0xE8 - ldr r0, _08021DAC - b _08021DB8 - .align 2, 0 -_08021DA8: .4byte gUnknown_80DC534 -_08021DAC: .4byte gUnknown_80DC564 -_08021DB0: - movs r0, 0x80 - lsls r0, 1 - adds r1, r0 - ldr r0, _08021DC4 -_08021DB8: - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - b _08021DEC - .align 2, 0 -_08021DC4: .4byte gUnknown_80DC54C -_08021DC8: - ldr r0, _08021E04 - mov r12, r0 - ldr r4, _08021E08 - movs r3, 0 - movs r2, 0x3 -_08021DD2: - mov r5, r12 - ldr r1, [r5] - adds r1, r3 - adds r1, 0xD0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _08021DD2 -_08021DEC: - bl ResetUnusedInputStruct - ldr r0, _08021E04 - ldr r0, [r0] - adds r0, 0xD0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08021E04: .4byte gUnknown_203B290 -_08021E08: .4byte gUnknown_80DC534 - thumb_func_end sub_8021D5C - - thumb_func_start UpdateWigglytuffDialogue -UpdateWigglytuffDialogue: - push {r4,lr} - sub sp, 0x20 - ldr r1, _08021E28 - ldr r0, [r1] - ldr r0, [r0, 0x4] - adds r4, r1, 0 - cmp r0, 0x1C - bls _08021E1E - b _080222B6 -_08021E1E: - lsls r0, 2 - ldr r1, _08021E2C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08021E28: .4byte gUnknown_203B290 -_08021E2C: .4byte _08021E30 - .align 2, 0 -_08021E30: - .4byte _08021EA4 - .4byte _08021EC0 - .4byte _08021F38 - .4byte _08021F50 - .4byte _080222B6 - .4byte _08021F78 - .4byte _08021F90 - .4byte _08021F08 - .4byte _08021F20 - .4byte _08021FD8 - .4byte _08021FE2 - .4byte _08021FF0 - .4byte _0802208E - .4byte _080220B8 - .4byte _080220D8 - .4byte _080220EA - .4byte _08022080 - .4byte _08022024 - .4byte _08021FA8 - .4byte _08021FC0 - .4byte _08022138 - .4byte _08022150 - .4byte _08022168 - .4byte _08022176 - .4byte _0802217E - .4byte _08022238 - .4byte _08022250 - .4byte _08022268 - .4byte _08022294 -_08021EA4: - bl sub_80222C8 - ldr r2, _08021EB8 - ldr r0, _08021EBC - ldr r4, [r0] - ldr r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - b _08021ED4 - .align 2, 0 -_08021EB8: .4byte gWigglytuffDialogue -_08021EBC: .4byte gUnknown_203B290 -_08021EC0: - bl sub_80222C8 - ldr r2, _08021F00 - ldr r0, _08021F04 - ldr r4, [r0] - ldr r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x4 -_08021ED4: - adds r0, r2 - ldr r0, [r0] - ldr r2, [r4, 0x14] - adds r3, r4, 0 - adds r3, 0x1C - adds r1, r4, 0 - adds r1, 0x5C - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - adds r1, r4, 0 - adds r1, 0xCC - ldr r1, [r1] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - bl sub_8014248 - b _080222B6 - .align 2, 0 -_08021F00: .4byte gWigglytuffDialogue -_08021F04: .4byte gUnknown_203B290 -_08021F08: - ldr r3, [r4] - movs r0, 0x9 - str r0, [r3, 0x8] - ldr r2, _08021F1C - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0xC - b _0802227A - .align 2, 0 -_08021F1C: .4byte gWigglytuffDialogue -_08021F20: - ldr r3, [r4] - movs r0, 0xA - str r0, [r3, 0x8] - ldr r2, _08021F34 - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x10 - b _0802227A - .align 2, 0 -_08021F34: .4byte gWigglytuffDialogue -_08021F38: - ldr r3, [r4] - movs r0, 0x1 - str r0, [r3, 0x8] - ldr r2, _08021F4C - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x4C - b _0802227A - .align 2, 0 -_08021F4C: .4byte gWigglytuffDialogue -_08021F50: - ldr r3, [r4] - movs r0, 0x4 - str r0, [r3, 0x8] - ldr r2, _08021F70 - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x8 - adds r0, r2 - ldr r0, [r0] - adds r3, 0xCC - ldr r2, [r3] - ldr r3, _08021F74 - b _08022284 - .align 2, 0 -_08021F70: .4byte gWigglytuffDialogue -_08021F74: .4byte 0x0000030d -_08021F78: - ldr r3, [r4] - movs r0, 0x3 - str r0, [r3, 0x8] - ldr r2, _08021F8C - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x20 - b _0802227A - .align 2, 0 -_08021F8C: .4byte gWigglytuffDialogue -_08021F90: - ldr r3, [r4] - movs r0, 0xA - str r0, [r3, 0x8] - ldr r2, _08021FA4 - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x24 - b _0802227A - .align 2, 0 -_08021FA4: .4byte gWigglytuffDialogue -_08021FA8: - ldr r3, [r4] - movs r0, 0x3 - str r0, [r3, 0x8] - ldr r2, _08021FBC - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x28 - b _0802227A - .align 2, 0 -_08021FBC: .4byte gWigglytuffDialogue -_08021FC0: - ldr r3, [r4] - movs r0, 0xA - str r0, [r3, 0x8] - ldr r2, _08021FD4 - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x2C - b _0802227A - .align 2, 0 -_08021FD4: .4byte gWigglytuffDialogue -_08021FD8: - movs r0, 0x2 - movs r1, 0x3 - bl sub_80211AC - b _08021FE8 -_08021FE2: - movs r0, 0x1 - bl sub_8021354 -_08021FE8: - movs r0, 0x1 - bl DrawTeamMoneyBox - b _080222B6 -_08021FF0: - bl sub_8021494 - movs r0, 0x1 - bl DrawTeamMoneyBox - bl sub_8022380 - ldr r0, _08022020 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x6C - adds r1, r2, 0 - adds r1, 0x1C - adds r3, r2, 0 - adds r3, 0x5C - ldr r2, [r2, 0x18] - str r2, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - bl sub_8012D60 - b _080222B6 - .align 2, 0 -_08022020: .4byte gUnknown_203B290 -_08022024: - bl sub_8022420 - ldr r0, _08022070 - ldr r4, _08022074 - ldr r1, [r4] - ldrb r1, [r1, 0x10] - movs r2, 0 - bl sub_8092578 - ldr r1, _08022078 - ldr r4, [r4] - ldr r0, [r4, 0xC] - str r0, [r1] - ldr r2, _0802207C - ldr r1, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x14 - adds r0, r2 - ldr r0, [r0] - adds r3, r4, 0 - adds r3, 0x1C - movs r2, 0 - str r2, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - adds r4, 0xCC - ldr r1, [r4] - str r1, [sp, 0xC] - movs r1, 0xC - str r1, [sp, 0x10] - movs r1, 0 - movs r2, 0x5 - bl sub_8014248 - b _080222B6 - .align 2, 0 -_08022070: .4byte gUnknown_202E628 -_08022074: .4byte gUnknown_203B290 -_08022078: .4byte gUnknown_202DE30 -_0802207C: .4byte gWigglytuffDialogue -_08022080: - ldr r0, [r4] - ldrb r0, [r0, 0x10] - movs r1, 0 - movs r2, 0x2 - bl sub_8021774 - b _080222B6 -_0802208E: - ldr r1, [r4] - movs r0, 0xD - str r0, [r1, 0x8] - ldr r0, _080220B0 - ldrb r1, [r1, 0x10] - movs r2, 0 - bl sub_8092578 - ldr r2, _080220B4 - ldr r3, [r4] - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x18 - b _0802227A - .align 2, 0 -_080220B0: .4byte gUnknown_202E628 -_080220B4: .4byte gWigglytuffDialogue -_080220B8: - ldr r1, [r4] - movs r0, 0xE - str r0, [r1, 0x8] - ldr r0, _080220D4 - bl PlaySound - ldr r0, [r4] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0x1 - str r1, [r0] - b _080222B6 - .align 2, 0 -_080220D4: .4byte 0x0000025b -_080220D8: - ldr r0, [r4] - movs r1, 0xF - str r1, [r0, 0x8] - movs r1, 0x9A - lsls r1, 1 - adds r0, r1 - movs r1, 0x1E - str r1, [r0] - b _080222B6 -_080220EA: - movs r0, 0x2 - bl sub_8021700 - lsls r0, 24 - cmp r0, 0 - beq _08022108 - bl sub_80213A0 - ldr r0, _08022104 - ldr r1, [r0] - movs r0, 0x12 - b _0802210E - .align 2, 0 -_08022104: .4byte gUnknown_203B290 -_08022108: - ldr r0, _08022130 - ldr r1, [r0] - movs r0, 0x8 -_0802210E: - str r0, [r1, 0x8] - movs r0, 0xCE - bl PlaySound - ldr r3, _08022134 - ldr r0, _08022130 - ldr r2, [r0] - ldr r1, [r2] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r3, 0x1C - adds r0, r3 - ldr r0, [r0] - adds r2, 0xCC - ldr r2, [r2] - b _08022282 - .align 2, 0 -_08022130: .4byte gUnknown_203B290 -_08022134: .4byte gWigglytuffDialogue -_08022138: - ldr r3, [r4] - movs r0, 0x16 - str r0, [r3, 0x8] - ldr r2, _0802214C - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x30 - b _0802227A - .align 2, 0 -_0802214C: .4byte gWigglytuffDialogue -_08022150: - ldr r3, [r4] - movs r0, 0x17 - str r0, [r3, 0x8] - ldr r2, _08022164 - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x34 - b _0802227A - .align 2, 0 -_08022164: .4byte gWigglytuffDialogue -_08022168: - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - movs r3, 0xA - bl sub_8023144 - b _080222B6 -_08022176: - movs r0, 0x1 - bl sub_8023354 - b _080222B6 -_0802217E: - ldr r4, _080221A0 - ldr r0, [r4] - ldrb r0, [r0, 0x10] - add r1, sp, 0x14 - movs r2, 0 - movs r3, 0 - bl sub_8092638 - add r0, sp, 0x14 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080221A4 - ldr r1, [r4] - movs r0, 0x19 - str r0, [r1, 0x8] - b _080221FA - .align 2, 0 -_080221A0: .4byte gUnknown_203B290 -_080221A4: - ldr r0, [r4] - ldrb r0, [r0, 0x10] - bl GetFriendAreaUnlockCondition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080221E0 - cmp r0, 0x2 - bgt _080221BE - cmp r0, 0x1 - beq _080221C4 - b _080221F0 -_080221BE: - cmp r0, 0x3 - beq _080221E8 - b _080221F0 -_080221C4: - movs r0, 0x6 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _080221D8 - ldr r1, [r4] - movs r0, 0x15 - str r0, [r1, 0x8] - b _080221FA -_080221D8: - ldr r1, [r4] - movs r0, 0x1A - str r0, [r1, 0x8] - b _080221FA -_080221E0: - ldr r1, [r4] - movs r0, 0x1B - str r0, [r1, 0x8] - b _080221FA -_080221E8: - ldr r1, [r4] - movs r0, 0x1C - str r0, [r1, 0x8] - b _080221FA -_080221F0: - ldr r2, _08022228 - ldr r1, [r2] - movs r0, 0x15 - str r0, [r1, 0x8] - adds r4, r2, 0 -_080221FA: - ldr r0, [r4] - movs r1, 0x12 - ldrsh r0, [r0, r1] - bl GetMonSpecies - adds r1, r0, 0 - ldr r0, _0802222C - bl strcpy - ldr r0, _08022230 - ldr r1, [r4] - ldrb r1, [r1, 0x10] - movs r2, 0 - bl sub_8092578 - ldr r2, _08022234 - ldr r3, [r4] - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x38 - b _0802227A - .align 2, 0 -_08022228: .4byte gUnknown_203B290 -_0802222C: .4byte gAvailablePokemonNames -_08022230: .4byte gUnknown_202E628 -_08022234: .4byte gWigglytuffDialogue -_08022238: - ldr r3, [r4] - movs r0, 0x15 - str r0, [r3, 0x8] - ldr r2, _0802224C - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x3C - b _0802227A - .align 2, 0 -_0802224C: .4byte gWigglytuffDialogue -_08022250: - ldr r3, [r4] - movs r0, 0x15 - str r0, [r3, 0x8] - ldr r2, _08022264 - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x40 - b _0802227A - .align 2, 0 -_08022264: .4byte gWigglytuffDialogue -_08022268: - ldr r3, [r4] - movs r0, 0x15 - str r0, [r3, 0x8] - ldr r2, _0802228C - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x44 -_0802227A: - adds r0, r2 - ldr r0, [r0] - adds r3, 0xCC - ldr r2, [r3] -_08022282: - ldr r3, _08022290 -_08022284: - movs r1, 0 - bl sub_80141B4 - b _080222B6 - .align 2, 0 -_0802228C: .4byte gWigglytuffDialogue -_08022290: .4byte 0x0000010d -_08022294: - ldr r3, [r4] - movs r0, 0x15 - str r0, [r3, 0x8] - ldr r2, _080222C0 - ldr r1, [r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - adds r2, 0x48 - adds r0, r2 - ldr r0, [r0] - adds r3, 0xCC - ldr r2, [r3] - ldr r3, _080222C4 - movs r1, 0 - bl sub_80141B4 -_080222B6: - add sp, 0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080222C0: .4byte gWigglytuffDialogue -_080222C4: .4byte 0x0000010d - thumb_func_end UpdateWigglytuffDialogue - - thumb_func_start sub_80222C8 -sub_80222C8: - push {r4-r7,lr} - ldr r4, _08022344 - ldr r0, [r4] - adds r0, 0x5C - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - movs r5, 0 - ldr r0, _08022348 - ldr r0, [r0] - str r0, [r1, 0x1C] - adds r3, r1, 0 - adds r3, 0x20 - movs r0, 0x2 - str r0, [r1, 0x20] - movs r2, 0x1 - ldr r0, _0802234C - ldr r0, [r0] - str r0, [r1, 0x24] - movs r0, 0x3 - str r0, [r1, 0x28] - ldr r0, _08022350 - ldr r0, [r0] - str r0, [r1, 0x2C] - movs r0, 0x4 - str r0, [r1, 0x30] - ldr r0, _08022354 - ldr r0, [r0] - str r0, [r1, 0x34] - str r2, [r1, 0x38] - movs r7, 0x4 - str r5, [r1, 0x3C] - str r2, [r3, 0x20] - adds r6, r1, 0 - adds r2, r6, 0 - adds r2, 0x5C -_08022314: - ldrh r0, [r2] - cmp r0, 0 - bne _08022322 - ldr r1, [r3] - ldr r0, [r6, 0x14] - cmp r1, r0 - beq _0802237A -_08022322: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r7 - blt _08022314 - movs r5, 0 - cmp r5, r7 - bge _0802237A - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x5C - ldrh r0, [r0] - cmp r0, 0 - bne _08022358 - ldr r0, [r1, 0x20] - str r0, [r1, 0x14] - b _0802237A - .align 2, 0 -_08022344: .4byte gUnknown_203B290 -_08022348: .4byte gUnknown_80D4978 -_0802234C: .4byte gWigglytuffCheck -_08022350: .4byte gUnknown_80D4970 -_08022354: .4byte gUnknown_80D4934 -_08022358: - adds r5, 0x1 - cmp r5, r7 - bge _0802237A - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x5C - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _08022358 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x20 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x14] -_0802237A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80222C8 - - thumb_func_start sub_8022380 -sub_8022380: - push {r4-r7,lr} - ldr r4, _080223EC - ldr r0, [r4] - adds r0, 0x5C - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r3, [r4] - movs r2, 0 - ldr r0, _080223F0 - ldr r0, [r0] - str r0, [r3, 0x1C] - movs r0, 0x2 - str r0, [r3, 0x20] - movs r1, 0x1 - ldr r0, _080223F4 - ldr r0, [r0] - str r0, [r3, 0x24] - movs r0, 0x4 - str r0, [r3, 0x28] - movs r6, 0x2 - str r2, [r3, 0x2C] - str r1, [r3, 0x30] - movs r5, 0 - mov r12, r3 - adds r3, 0x20 - mov r2, r12 - adds r2, 0x5C -_080223BA: - ldrh r0, [r2] - cmp r0, 0 - bne _080223CA - ldr r1, [r3] - mov r7, r12 - ldr r0, [r7, 0x18] - cmp r1, r0 - beq _0802241A -_080223CA: - adds r3, 0x8 - adds r2, 0x2 - adds r5, 0x1 - cmp r5, r6 - blt _080223BA - movs r5, 0 - cmp r5, r6 - bge _0802241A - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x5C - ldrh r0, [r0] - cmp r0, 0 - bne _080223F8 - ldr r0, [r1, 0x20] - str r0, [r1, 0x18] - b _0802241A - .align 2, 0 -_080223EC: .4byte gUnknown_203B290 -_080223F0: .4byte gUnknown_80D4978 -_080223F4: .4byte gUnknown_80D4970 -_080223F8: - adds r5, 0x1 - cmp r5, r6 - bge _0802241A - ldr r2, [r4] - lsls r0, r5, 1 - adds r1, r2, 0 - adds r1, 0x5C - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080223F8 - lsls r0, r5, 3 - adds r1, r2, 0 - adds r1, 0x20 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x18] -_0802241A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8022380 - - thumb_func_start sub_8022420 -sub_8022420: - push {r4,lr} - ldr r4, _08022454 - ldr r0, [r4] - adds r0, 0x5C - movs r1, 0 - movs r2, 0x10 - bl MemoryFill16 - ldr r1, [r4] - movs r3, 0 - ldr r0, _08022458 - ldr r0, [r0] - str r0, [r1, 0x1C] - movs r0, 0x5 - str r0, [r1, 0x20] - movs r2, 0x1 - ldr r0, _0802245C - ldr r0, [r0] - str r0, [r1, 0x24] - movs r0, 0x6 - str r0, [r1, 0x28] - str r3, [r1, 0x2C] - str r2, [r1, 0x30] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08022454: .4byte gUnknown_203B290 -_08022458: .4byte gUnknown_80D4920 -_0802245C: .4byte gUnknown_80D4928 - thumb_func_end sub_8022420 - - thumb_func_start sub_8022460 -sub_8022460: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _080224CC - ldr r1, [sp] - cmp r1, 0x1 - beq _0802247A - ldr r0, _0802248C - ldr r0, [r0] - str r1, [r0, 0x14] -_0802247A: - ldr r0, [sp] - cmp r0, 0x2 - beq _0802249A - cmp r0, 0x2 - bgt _08022490 - cmp r0, 0x1 - beq _080224C6 - b _080224CC - .align 2, 0 -_0802248C: .4byte gUnknown_203B290 -_08022490: - cmp r0, 0x3 - beq _080224B6 - cmp r0, 0x4 - beq _080224BE - b _080224CC -_0802249A: - movs r0, 0x2 - bl sub_8021700 - lsls r0, 24 - cmp r0, 0 - beq _080224AE - movs r0, 0x5 - bl sub_8021D44 - b _080224CC -_080224AE: - movs r0, 0x7 - bl sub_8021D44 - b _080224CC -_080224B6: - movs r0, 0x14 - bl sub_8021D44 - b _080224CC -_080224BE: - movs r0, 0x2 - bl sub_8021D44 - b _080224CC -_080224C6: - movs r0, 0x3 - bl sub_8021D44 -_080224CC: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8022460 - - thumb_func_start sub_80224D4 -sub_80224D4: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _08022532 - ldr r0, [sp] - cmp r0, 0x5 - beq _080224F8 - cmp r0, 0x5 - bgt _080224F2 - cmp r0, 0x1 - beq _0802252C - b _08022532 -_080224F2: - cmp r0, 0x6 - beq _0802252C - b _08022532 -_080224F8: - ldr r0, _08022524 - ldr r2, [r0] - movs r0, 0x98 - lsls r0, 2 - adds r2, r0 - ldr r0, _08022528 - ldr r3, [r0] - ldr r0, [r2] - ldr r1, [r3, 0xC] - subs r0, r1 - str r0, [r2] - ldrb r0, [r3, 0x10] - bl UnlockFriendArea - movs r0, 0xA6 - lsls r0, 1 - bl PlaySound - movs r0, 0xC - bl sub_8021D44 - b _08022532 - .align 2, 0 -_08022524: .4byte gTeamInventory_203B460 -_08022528: .4byte gUnknown_203B290 -_0802252C: - movs r0, 0xA - bl sub_8021D44 -_08022532: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80224D4 - - thumb_func_start sub_8022538 -sub_8022538: - push {r4,lr} - movs r0, 0x1 - bl sub_8021274 - cmp r0, 0x4 - bhi _080225BC - lsls r0, 2 - ldr r1, _08022550 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08022550: .4byte _08022554 - .align 2, 0 -_08022554: - .4byte _080225C2 - .4byte _080225BC - .4byte _080225B0 - .4byte _08022568 - .4byte _0802258C -_08022568: - bl sub_802132C - ldr r4, _08022588 - ldr r1, [r4] - strb r0, [r1, 0x10] - ldr r0, [r4] - ldrb r0, [r0, 0x10] - bl GetFriendAreaPrice - ldr r1, [r4] - str r0, [r1, 0xC] - movs r0, 0xB - bl sub_8021D44 - b _080225C2 - .align 2, 0 -_08022588: .4byte gUnknown_203B290 -_0802258C: - bl sub_802132C - ldr r4, _080225AC - ldr r1, [r4] - strb r0, [r1, 0x10] - ldr r0, [r4] - ldrb r0, [r0, 0x10] - bl GetFriendAreaPrice - ldr r1, [r4] - str r0, [r1, 0xC] - movs r0, 0x10 - bl sub_8021D44 - b _080225C2 - .align 2, 0 -_080225AC: .4byte gUnknown_203B290 -_080225B0: - bl sub_80213A0 - movs r0, 0x1 - bl sub_8021D44 - b _080225C2 -_080225BC: - movs r0, 0x1 - bl DrawTeamMoneyBox -_080225C2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8022538 - - thumb_func_start sub_80225C8 -sub_80225C8: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_8021274 - ldr r4, _08022608 - ldr r0, [r4] - adds r0, 0x6C - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _080225F8 - ldr r0, [r4] - adds r0, 0x6C - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _080225F8 - ldr r0, [r4] - str r1, [r0, 0x18] -_080225F8: - ldr r0, [sp] - cmp r0, 0x2 - beq _08022612 - cmp r0, 0x2 - bgt _0802260C - cmp r0, 0x1 - beq _08022658 - b _0802265E - .align 2, 0 -_08022608: .4byte gUnknown_203B290 -_0802260C: - cmp r0, 0x4 - beq _08022650 - b _0802265E -_08022612: - ldr r0, _0802262C - ldr r0, [r0] - movs r1, 0x98 - lsls r1, 2 - adds r0, r1 - ldr r1, [r0] - cmp r1, 0 - bne _08022630 - movs r0, 0x6 - bl sub_8021D44 - b _0802265E - .align 2, 0 -_0802262C: .4byte gTeamInventory_203B460 -_08022630: - ldr r0, _08022644 - ldr r0, [r0] - ldr r0, [r0, 0xC] - cmp r0, r1 - ble _08022648 - movs r0, 0x13 - bl sub_8021D44 - b _0802265E - .align 2, 0 -_08022644: .4byte gUnknown_203B290 -_08022648: - movs r0, 0x11 - bl sub_8021D44 - b _0802265E -_08022650: - movs r0, 0x10 - bl sub_8021D44 - b _0802265E -_08022658: - movs r0, 0xA - bl sub_8021D44 -_0802265E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80225C8 - - thumb_func_start sub_8022668 -sub_8022668: - push {lr} - bl sub_80217EC - cmp r0, 0x1 - bls _08022680 - cmp r0, 0x3 - bhi _08022680 - bl sub_8021830 - movs r0, 0xA - bl sub_8021D44 -_08022680: - pop {r0} - bx r0 - thumb_func_end sub_8022668 - - thumb_func_start sub_8022684 -sub_8022684: - push {r4,lr} - movs r0, 0x1 - bl sub_8023278 - cmp r0, 0x2 - beq _080226BC - cmp r0, 0x2 - bcc _080226C6 - cmp r0, 0x3 - bne _080226C6 - bl sub_802331C - ldr r4, _080226B8 - ldr r1, [r4] - strh r0, [r1, 0x12] - movs r2, 0x12 - ldrsh r0, [r1, r2] - bl GetFriendArea - ldr r1, [r4] - strb r0, [r1, 0x10] - movs r0, 0x18 - bl sub_8021D44 - b _080226C6 - .align 2, 0 -_080226B8: .4byte gUnknown_203B290 -_080226BC: - bl sub_80233A0 - movs r0, 0x1 - bl sub_8021D44 -_080226C6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8022684 - - thumb_func_start sub_80226CC -sub_80226CC: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _080226E4 - ldr r0, _080226EC - ldr r0, [r0] - ldr r0, [r0, 0x8] - bl sub_8021D44 -_080226E4: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080226EC: .4byte gUnknown_203B290 - thumb_func_end sub_80226CC - - thumb_func_start sub_80226F0 -sub_80226F0: - push {r4,lr} - sub sp, 0x4 - mov r1, sp - movs r2, 0 - movs r0, 0x80 - strb r0, [r1] - strb r0, [r1, 0x1] - movs r0, 0x10 - strb r0, [r1, 0x2] - strb r2, [r1, 0x3] - bl sub_8099B94 - lsls r0, 24 - cmp r0, 0 - bne _08022782 - ldr r0, _08022728 - ldr r0, [r0] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x4 - bhi _0802275C - lsls r0, 2 - ldr r1, _0802272C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08022728: .4byte gUnknown_203B290 -_0802272C: .4byte _08022730 - .align 2, 0 -_08022730: - .4byte _0802275C - .4byte _08022744 - .4byte _08022750 - .4byte _08022744 - .4byte _08022750 -_08022744: - movs r0, 0x5 - movs r1, 0x2 - ldr r2, [sp] - bl sub_8099AFC - b _08022772 -_08022750: - movs r0, 0x5 - movs r1, 0x2 - ldr r2, [sp] - bl sub_8099A5C - b _08022772 -_0802275C: - ldr r4, _0802278C - ldr r0, [r4] - ldr r0, [r0, 0x8] - bl sub_8021D44 - ldr r0, [r4] - movs r1, 0x98 - lsls r1, 1 - adds r0, r1 - movs r1, 0 - str r1, [r0] -_08022772: - ldr r0, _0802278C - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - adds r1, r0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_08022782: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802278C: .4byte gUnknown_203B290 - thumb_func_end sub_80226F0 - - thumb_func_start sub_8022790 -sub_8022790: - push {lr} - ldr r0, _080227A8 - ldr r2, [r0] - movs r0, 0x9A - lsls r0, 1 - adds r1, r2, r0 - ldr r0, [r1] - cmp r0, 0 - beq _080227AC - subs r0, 0x1 - str r0, [r1] - b _080227B2 - .align 2, 0 -_080227A8: .4byte gUnknown_203B290 -_080227AC: - ldr r0, [r2, 0x8] - bl sub_8021D44 -_080227B2: - pop {r0} - bx r0 - thumb_func_end sub_8022790 - - thumb_func_start sub_80227B8 -sub_80227B8: - push {r4,r5,lr} - adds r5, r0, 0 - bl ResetUnusedInputStruct - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r4, _08022810 - movs r0, 0xD4 - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - adds r2, r0, 0 - adds r2, 0xF4 - movs r1, 0 - str r1, [r2] - str r5, [r0, 0x48] - cmp r5, 0 - beq _08022820 - ldr r4, _08022814 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x7 - bl PrintColoredPokeNameToBuffer - adds r4, 0x50 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x6 - bl PrintColoredPokeNameToBuffer - bl HasGummiItem - lsls r0, 24 - cmp r0, 0 - beq _08022818 - movs r0, 0 - bl sub_8022924 - b _08022856 - .align 2, 0 -_08022810: .4byte gUnknown_203B294 -_08022814: .4byte gAvailablePokemonNames -_08022818: - movs r0, 0x11 - bl sub_8022924 - b _08022856 -_08022820: - ldr r4, _08022848 - ldr r5, _0802284C - adds r0, r4, 0 - adds r1, r5, 0 - bl strcpy - adds r4, 0x50 - adds r0, r4, 0 - adds r1, r5, 0 - bl strcpy - bl GetNumberOfFilledInventorySlots - cmp r0, 0 - bne _08022850 - movs r0, 0x12 - bl sub_8022924 - b _08022856 - .align 2, 0 -_08022848: .4byte gAvailablePokemonNames -_0802284C: .4byte gUnknown_80DC5EC -_08022850: - movs r0, 0 - bl sub_8022924 -_08022856: - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80227B8 - - thumb_func_start sub_8022860 -sub_8022860: - push {lr} - ldr r0, _08022878 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x16 - bhi _080228FE - lsls r0, 2 - ldr r1, _0802287C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08022878: .4byte gUnknown_203B294 -_0802287C: .4byte _08022880 - .align 2, 0 -_08022880: - .4byte _080228DC - .4byte _080228DC - .4byte _080228E2 - .4byte _080228E8 - .4byte _080228EE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228FE - .4byte _080228F4 - .4byte _080228FA -_080228DC: - bl sub_8022E78 - b _08022902 -_080228E2: - bl sub_8022EF4 - b _08022902 -_080228E8: - bl sub_8023068 - b _08022902 -_080228EE: - bl sub_80230E8 - b _08022902 -_080228F4: - bl sub_8023104 - b _08022902 -_080228FA: - movs r0, 0x3 - b _08022904 -_080228FE: - bl sub_8023120 -_08022902: - movs r0, 0 -_08022904: - pop {r1} - bx r1 - thumb_func_end sub_8022860 - - thumb_func_start sub_8022908 -sub_8022908: - push {r4,lr} - ldr r4, _08022920 - ldr r0, [r4] - cmp r0, 0 - beq _0802291A - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0802291A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08022920: .4byte gUnknown_203B294 - thumb_func_end sub_8022908 - - thumb_func_start sub_8022924 -sub_8022924: - push {lr} - ldr r1, _08022938 - ldr r1, [r1] - str r0, [r1] - bl sub_802293C - bl sub_8022A10 - pop {r0} - bx r0 - .align 2, 0 -_08022938: .4byte gUnknown_203B294 - thumb_func_end sub_8022924 - - thumb_func_start sub_802293C -sub_802293C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _08022964 - ldr r0, [r4] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r1 - bl sub_8006518 - ldr r1, [r4] - ldr r0, [r1] - cmp r0, 0x3 - beq _080229A4 - cmp r0, 0x3 - bgt _08022968 - cmp r0, 0x2 - beq _08022972 - b _080229BC - .align 2, 0 -_08022964: .4byte gUnknown_203B294 -_08022968: - cmp r0, 0x10 - bgt _080229BC - cmp r0, 0xA - blt _080229BC - b _080229E6 -_08022972: - bl sub_8022D2C - ldr r2, [r4] - movs r0, 0xBC - lsls r0, 1 - adds r2, r0 - ldr r1, _080229A0 - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldr r1, [r4] - adds r0, r1, r0 - adds r1, 0xF8 - bl sub_8012CAC - ldr r0, [r4] - movs r6, 0xC2 - lsls r6, 1 - adds r0, r6 - movs r1, 0x6 - strh r1, [r0] - b _080229E6 - .align 2, 0 -_080229A0: .4byte gUnknown_80DC5BC -_080229A4: - movs r7, 0xB0 - lsls r7, 1 - adds r1, r7 - ldr r0, _080229B8 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - b _080229E6 - .align 2, 0 -_080229B8: .4byte gUnknown_80DC5D4 -_080229BC: - ldr r0, _08022A08 - mov r12, r0 - movs r1, 0xA4 - lsls r1, 1 - mov r8, r1 - ldr r4, _08022A0C - movs r3, 0 - movs r2, 0x3 -_080229CC: - mov r5, r12 - ldr r1, [r5] - adds r1, r3 - add r1, r8 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _080229CC -_080229E6: - bl ResetUnusedInputStruct - ldr r0, _08022A08 - ldr r0, [r0] - movs r6, 0xA4 - lsls r6, 1 - adds r0, r6 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08022A08: .4byte gUnknown_203B294 -_08022A0C: .4byte gUnknown_80DC5A4 - thumb_func_end sub_802293C - - thumb_func_start sub_8022A10 -sub_8022A10: - push {r4-r7,lr} - sub sp, 0x8 - ldr r1, _08022A2C - ldr r0, [r1] - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x16 - bls _08022A22 - b _08022D1E -_08022A22: - lsls r0, 2 - ldr r1, _08022A30 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08022A2C: .4byte gUnknown_203B294 -_08022A30: .4byte _08022A34 - .align 2, 0 -_08022A34: - .4byte _08022A90 - .4byte _08022AAA - .4byte _08022AB2 - .4byte _08022AE0 - .4byte _08022B10 - .4byte _08022B1A - .4byte _08022B24 - .4byte _08022B34 - .4byte _08022B44 - .4byte _08022B54 - .4byte _08022B64 - .4byte _08022C28 - .4byte _08022CA0 - .4byte _08022CA8 - .4byte _08022CB0 - .4byte _08022CB8 - .4byte _08022CC0 - .4byte _08022CC8 - .4byte _08022CD8 - .4byte _08022CE8 - .4byte _08022CF8 - .4byte _08022D14 - .4byte _08022D1E -_08022A90: - ldr r0, [r4] - ldr r0, [r0, 0x48] - cmp r0, 0 - beq _08022A9C - movs r0, 0x5 - b _08022A9E -_08022A9C: - movs r0, 0x1 -_08022A9E: - movs r1, 0x3 - movs r2, 0 - movs r3, 0xA - bl sub_801A5D8 - b _08022D22 -_08022AAA: - movs r0, 0x1 - bl sub_801A8D0 - b _08022D22 -_08022AB2: - bl sub_801A9E0 - ldr r0, _08022ADC - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x54 - adds r1, r2, 0 - adds r1, 0xF8 - movs r4, 0x9C - lsls r4, 1 - adds r3, r2, r4 - adds r2, 0xF4 - ldr r2, [r2] - str r2, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - bl sub_8012D60 - b _08022D22 - .align 2, 0 -_08022ADC: .4byte gUnknown_203B294 -_08022AE0: - bl sub_801A9E0 - ldr r4, _08022B08 - ldr r0, [r4] - adds r0, 0x54 - movs r1, 0 - bl sub_8012EA4 - ldr r0, [r4] - adds r0, 0xA4 - ldr r1, _08022B0C - movs r2, 0x3 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_8012D60 - b _08022D22 - .align 2, 0 -_08022B08: .4byte gUnknown_203B294 -_08022B0C: .4byte gUnknown_80DC584 -_08022B10: - ldr r0, [r4] - adds r0, 0x50 - bl sub_801B3C0 - b _08022D22 -_08022B1A: - ldr r0, _08022B20 - b _08022D00 - .align 2, 0 -_08022B20: .4byte gUnknown_80DC5F4 -_08022B24: - ldr r0, _08022B2C - ldr r3, _08022B30 - b _08022D02 - .align 2, 0 -_08022B2C: .4byte gUnknown_80DC618 -_08022B30: .4byte 0x00000101 -_08022B34: - ldr r0, _08022B3C - ldr r3, _08022B40 - b _08022D02 - .align 2, 0 -_08022B3C: .4byte gUnknown_80DC674 -_08022B40: .4byte 0x00000101 -_08022B44: - ldr r0, _08022B4C - ldr r3, _08022B50 - b _08022D02 - .align 2, 0 -_08022B4C: .4byte gUnknown_80DC6CC -_08022B50: .4byte 0x00000101 -_08022B54: - ldr r0, _08022B5C - ldr r3, _08022B60 - b _08022D02 - .align 2, 0 -_08022B5C: .4byte gUnknown_80DC728 -_08022B60: .4byte 0x00000101 -_08022B64: - ldr r7, _08022B68 - b _08022B78 - .align 2, 0 -_08022B68: .4byte gUnknown_203B294 -_08022B6C: - ldr r1, [r4] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - cmp r0, 0x17 - bgt _08022C10 -_08022B78: - movs r5, 0 - movs r6, 0 - movs r3, 0 - ldr r2, [r4] - ldr r0, [r2, 0x38] - cmp r5, r0 - bge _08022BA4 - ldrb r1, [r2, 0x8] - b _08022B9C -_08022B8A: - adds r3, 0x1 - ldr r2, [r4] - ldr r0, [r2, 0x38] - cmp r3, r0 - bge _08022BA4 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r3 - ldrb r1, [r0] -_08022B9C: - ldr r0, [r2, 0x40] - cmp r1, r0 - bne _08022B8A - movs r5, 0x1 -_08022BA4: - movs r3, 0 - ldr r2, [r4] - ldr r0, [r2, 0x3C] - cmp r3, r0 - bge _08022BCE - adds r0, r2, 0 - adds r0, 0x20 - b _08022BC4 -_08022BB4: - adds r3, 0x1 - ldr r2, [r4] - ldr r0, [r2, 0x3C] - cmp r3, r0 - bge _08022BCE - adds r0, r2, 0 - adds r0, 0x20 - adds r0, r3 -_08022BC4: - ldrb r1, [r0] - ldr r0, [r2, 0x40] - cmp r1, r0 - bne _08022BB4 - movs r6, 0x1 -_08022BCE: - cmp r5, r6 - beq _08022B6C - ldr r1, [r7] - movs r0, 0xA - str r0, [r1, 0x4] - ldr r0, [r1, 0x40] - lsls r0, 24 - lsrs r0, 24 - bl GetIQSkillName - adds r1, r0, 0 - ldr r0, _08022C18 - bl strcpy - movs r0, 0xCB - bl PlaySound - ldr r0, _08022C1C - movs r1, 0 - movs r2, 0 - ldr r3, _08022C20 - bl sub_80141B4 - ldr r1, [r7] - ldr r0, [r1, 0x40] - adds r0, 0x1 - str r0, [r1, 0x40] - ldr r0, _08022C24 - ldr r0, [r0] - ldr r0, [r0, 0x40] - cmp r0, 0x17 - bgt _08022C10 - b _08022D22 -_08022C10: - movs r0, 0xB - bl sub_8022924 - b _08022D22 - .align 2, 0 -_08022C18: .4byte gUnknown_202DEA8 -_08022C1C: .4byte gUnknown_80DC788 -_08022C20: .4byte 0x00000101 -_08022C24: .4byte gUnknown_203B294 -_08022C28: - ldr r1, [r4] - movs r0, 0x16 - str r0, [r1, 0x4] - bl nullsub_104 - ldr r0, [r4] - adds r0, 0x46 - ldrh r0, [r0] - cmp r0, 0x8 - bhi _08022C98 - lsls r0, 2 - ldr r1, _08022C48 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08022C48: .4byte _08022C4C - .align 2, 0 -_08022C4C: - .4byte _08022C70 - .4byte _08022C78 - .4byte _08022C80 - .4byte _08022C98 - .4byte _08022C88 - .4byte _08022C98 - .4byte _08022C98 - .4byte _08022C98 - .4byte _08022C90 -_08022C70: - movs r0, 0x16 - bl sub_8022924 - b _08022D22 -_08022C78: - movs r0, 0xD - bl sub_8022924 - b _08022D22 -_08022C80: - movs r0, 0xE - bl sub_8022924 - b _08022D22 -_08022C88: - movs r0, 0xF - bl sub_8022924 - b _08022D22 -_08022C90: - movs r0, 0x10 - bl sub_8022924 - b _08022D22 -_08022C98: - movs r0, 0xC - bl sub_8022924 - b _08022D22 -_08022CA0: - ldr r0, _08022CA4 - b _08022D00 - .align 2, 0 -_08022CA4: .4byte gUnknown_80DC7B4 -_08022CA8: - ldr r0, _08022CAC - b _08022D00 - .align 2, 0 -_08022CAC: .4byte gUnknown_80DC7FC -_08022CB0: - ldr r0, _08022CB4 - b _08022D00 - .align 2, 0 -_08022CB4: .4byte gUnknown_80DC81C -_08022CB8: - ldr r0, _08022CBC - b _08022D00 - .align 2, 0 -_08022CBC: .4byte gUnknown_80DC844 -_08022CC0: - ldr r0, _08022CC4 - b _08022D00 - .align 2, 0 -_08022CC4: .4byte gUnknown_80DC864 -_08022CC8: - ldr r1, [r4] - movs r0, 0x16 - str r0, [r1, 0x4] - ldr r0, _08022CD4 - b _08022D00 - .align 2, 0 -_08022CD4: .4byte gUnknown_80DC88C -_08022CD8: - ldr r1, [r4] - movs r0, 0x16 - str r0, [r1, 0x4] - ldr r0, _08022CE4 - b _08022D00 - .align 2, 0 -_08022CE4: .4byte gUnknown_80DC8AC -_08022CE8: - ldr r1, [r4] - movs r0, 0x16 - str r0, [r1, 0x4] - ldr r0, _08022CF4 - b _08022D00 - .align 2, 0 -_08022CF4: .4byte gUnknown_80DC8C8 -_08022CF8: - ldr r1, [r4] - movs r0, 0x16 - str r0, [r1, 0x4] - ldr r0, _08022D0C -_08022D00: - ldr r3, _08022D10 -_08022D02: - movs r1, 0 - movs r2, 0 - bl sub_80141B4 - b _08022D22 - .align 2, 0 -_08022D0C: .4byte gUnknown_80DC8DC -_08022D10: .4byte 0x00000301 -_08022D14: - ldr r0, [r4] - ldr r0, [r0, 0x4C] - bl sub_801AFA4 - b _08022D22 -_08022D1E: - bl sub_801A928 -_08022D22: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8022A10 .align 2,0 diff --git a/asm/code_801EE10_mid.s b/asm/code_801EE10_mid.s new file mode 100644 index 000000000..fd7740bd4 --- /dev/null +++ b/asm/code_801EE10_mid.s @@ -0,0 +1,6641 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_801F808 +sub_801F808: + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x1 + bl ResetSprites + ldr r5, _0801F88C + movs r0, 0xD4 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r5] + movs r1, 0 + str r1, [r0, 0x5C] + adds r1, r0, 0 + adds r1, 0x64 + str r1, [r0, 0x60] + adds r0, r1, 0 + bl sub_80140B4 + bl ResetUnusedInputStruct + ldr r0, [r5] + adds r0, 0x64 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, [r5] + str r4, [r0, 0x4] + movs r2, 0x4 + ldrh r0, [r4, 0x6] + cmp r0, 0 + bne _0801F862 + adds r3, r5, 0 +_0801F84C: + subs r2, 0x1 + cmp r2, 0x1 + ble _0801F862 + ldr r0, [r3] + ldr r1, [r0, 0x4] + lsls r0, r2, 1 + adds r0, r1 + subs r0, 0x2 + ldrh r0, [r0] + cmp r0, 0 + beq _0801F84C +_0801F862: + ldr r4, _0801F88C + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x28 + ldr r3, [r1, 0x5C] + adds r1, r2, 0 + movs r2, 0x1 + bl sub_8013818 + ldr r0, [r4] + adds r0, 0xC8 + bl sub_801317C + movs r0, 0 + bl sub_801F918 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0801F88C: .4byte gUnknown_203B278 + thumb_func_end sub_801F808 + + thumb_func_start sub_801F890 +sub_801F890: + push {lr} + ldr r0, _0801F8A8 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0x1 + beq _0801F8BC + cmp r0, 0x1 + bgt _0801F8AC + cmp r0, 0 + beq _0801F8B6 + b _0801F8C6 + .align 2, 0 +_0801F8A8: .4byte gUnknown_203B278 +_0801F8AC: + cmp r0, 0x2 + beq _0801F8C6 + cmp r0, 0x3 + beq _0801F8C2 + b _0801F8C6 +_0801F8B6: + bl sub_801FA58 + b _0801F8CA +_0801F8BC: + bl sub_801FAD4 + b _0801F8CA +_0801F8C2: + movs r0, 0x3 + b _0801F8CC +_0801F8C6: + movs r0, 0x2 + b _0801F8CC +_0801F8CA: + movs r0, 0 +_0801F8CC: + pop {r1} + bx r1 + thumb_func_end sub_801F890 + + thumb_func_start sub_801F8D0 +sub_801F8D0: + push {r4,r5,lr} + ldr r4, _0801F910 + ldr r2, [r4] + cmp r2, 0 + beq _0801F90A + ldr r0, [r2, 0x5C] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, r2, r1 + adds r1, 0x64 + ldr r0, _0801F914 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x64 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0801F90A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801F910: .4byte gUnknown_203B278 +_0801F914: .4byte gUnknown_80DC2F8 + thumb_func_end sub_801F8D0 + + thumb_func_start sub_801F918 +sub_801F918: + push {lr} + ldr r1, _0801F92C + ldr r1, [r1] + str r0, [r1] + bl sub_801F930 + bl sub_801F9A4 + pop {r0} + bx r0 + .align 2, 0 +_0801F92C: .4byte gUnknown_203B278 + thumb_func_end sub_801F918 + + thumb_func_start sub_801F930 +sub_801F930: + push {r4,lr} + ldr r4, _0801F94C + ldr r0, [r4] + adds r0, 0x64 + bl sub_80140B4 + ldr r2, [r4] + ldr r3, [r2] + cmp r3, 0 + beq _0801F950 + cmp r3, 0x1 + beq _0801F98C + b _0801F99C + .align 2, 0 +_0801F94C: .4byte gUnknown_203B278 +_0801F950: + ldr r0, [r2, 0x60] + adds r1, r2, 0 + adds r1, 0xC4 + str r1, [r0, 0x14] + adds r0, r2, 0 + adds r0, 0x48 + ldrh r0, [r0] + strb r0, [r1] + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x46 + ldrh r1, [r1] + adds r0, 0xC5 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xC6 + movs r1, 0x10 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xC7 + strb r3, [r0] + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x64 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + b _0801F99C +_0801F98C: + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x64 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C +_0801F99C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_801F930 + + thumb_func_start sub_801F9A4 +sub_801F9A4: + push {r4,r5,lr} + sub sp, 0x4 + ldr r5, _0801F9EC + ldr r0, [r5] + ldr r4, [r0] + cmp r4, 0x1 + beq _0801F9F0 + cmp r4, 0x1 + bgt _0801FA48 + cmp r4, 0 + bne _0801FA48 + ldr r0, [r0, 0x5C] + bl sub_8008C54 + ldr r3, [r5] + adds r2, r3, 0 + adds r2, 0x46 + movs r1, 0 + ldrsh r0, [r2, r1] + ldr r1, [r3, 0x4] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r3, 0x8] + movs r1, 0 + ldrsh r0, [r2, r1] + ldrh r1, [r3, 0x8] + ldr r2, [r3, 0x5C] + adds r3, 0x14 + bl unk_MoveIDPrintMoveDescription + ldr r1, [r5] + str r0, [r1, 0x10] + str r4, [r1, 0x24] + b _0801FA48 + .align 2, 0 +_0801F9EC: .4byte gUnknown_203B278 +_0801F9F0: + ldr r0, [r0, 0x5C] + bl sub_8008C54 + ldr r0, [r5] + ldr r0, [r0, 0x5C] + bl sub_80073B8 + ldr r0, [r5] + ldr r1, [r0, 0xC] + lsls r1, 2 + adds r0, 0x14 + adds r0, r1 + ldr r1, [r0] + ldr r0, _0801FA50 + ldr r1, [r1] + bl strcpy + ldr r2, _0801FA54 + ldr r0, [r5] + ldr r3, [r0, 0x5C] + movs r4, 0 + str r4, [sp] + movs r0, 0x10 + movs r1, 0 + bl xxx_format_and_draw + ldr r3, [r5] + ldr r1, [r3, 0xC] + lsls r1, 2 + adds r0, r3, 0 + adds r0, 0x14 + adds r0, r1 + ldr r0, [r0] + ldr r2, [r0, 0x4] + ldr r3, [r3, 0x5C] + str r4, [sp] + movs r0, 0x4 + movs r1, 0x10 + bl xxx_format_and_draw + ldr r0, [r5] + ldr r0, [r0, 0x5C] + bl sub_80073E0 +_0801FA48: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801FA50: .4byte gAvailablePokemonNames +_0801FA54: .4byte gUnknown_80DC310 + thumb_func_end sub_801F9A4 + + thumb_func_start sub_801FA58 +sub_801FA58: + push {r4,lr} + ldr r0, _0801FAA4 + ldr r2, [r0] + ldr r1, [r2, 0x10] + adds r4, r0, 0 + cmp r1, 0 + beq _0801FA7C + ldr r0, [r2, 0x24] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0801FA74 + bl sub_8013F84 +_0801FA74: + ldr r1, [r4] + ldr r0, [r1, 0x24] + adds r0, 0x1 + str r0, [r1, 0x24] +_0801FA7C: + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0xC8 + ldr r1, [r1, 0x5C] + bl sub_8012A64 + cmp r0, 0x1 + beq _0801FAA8 + cmp r0, 0x2 + beq _0801FAC2 + ldr r0, [r4] + adds r0, 0x28 + bl sub_8013938 + lsls r0, 24 + cmp r0, 0 + beq _0801FACE + movs r0, 0 + b _0801FACA + .align 2, 0 +_0801FAA4: .4byte gUnknown_203B278 +_0801FAA8: + movs r0, 0 + bl PlayMenuSoundEffect + ldr r1, [r4] + ldr r0, [r1, 0x10] + cmp r0, 0 + beq _0801FABE + movs r0, 0 + str r0, [r1, 0xC] + movs r0, 0x1 + b _0801FACA +_0801FABE: + movs r0, 0x3 + b _0801FACA +_0801FAC2: + movs r0, 0x1 + bl PlayMenuSoundEffect + movs r0, 0x2 +_0801FACA: + bl sub_801F918 +_0801FACE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_801FA58 + + thumb_func_start sub_801FAD4 +sub_801FAD4: + push {r4,lr} + ldr r0, _0801FB14 + ldr r3, [r0] + ldr r1, [r3, 0x10] + subs r1, 0x1 + ldr r2, [r3, 0xC] + adds r4, r0, 0 + cmp r2, r1 + bge _0801FAFC + ldr r0, [r3, 0x24] + movs r1, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0801FAF4 + bl sub_8013F84 +_0801FAF4: + ldr r1, [r4] + ldr r0, [r1, 0x24] + adds r0, 0x1 + str r0, [r1, 0x24] +_0801FAFC: + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0xC8 + ldr r1, [r1, 0x5C] + bl sub_8012A64 + cmp r0, 0x1 + beq _0801FB18 + cmp r0, 0x2 + beq _0801FB3C + b _0801FB48 + .align 2, 0 +_0801FB14: .4byte gUnknown_203B278 +_0801FB18: + movs r0, 0 + bl PlayMenuSoundEffect + ldr r0, [r4] + ldr r1, [r0, 0xC] + adds r1, 0x1 + str r1, [r0, 0xC] + ldr r0, [r0, 0x10] + cmp r1, r0 + bge _0801FB34 + movs r0, 0x1 + bl sub_801F918 + b _0801FB48 +_0801FB34: + movs r0, 0 + bl sub_801F918 + b _0801FB48 +_0801FB3C: + movs r0, 0x1 + bl PlayMenuSoundEffect + movs r0, 0x2 + bl sub_801F918 +_0801FB48: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_801FAD4 + + thumb_func_start sub_801FB50 +sub_801FB50: + push {r4-r7,lr} + adds r4, r0, 0 + bl ResetUnusedInputStruct + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r6, _0801FBC0 + movs r0, 0xF0 + lsls r0, 1 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r6] + movs r7, 0 + str r7, [r0, 0x70] + str r7, [r0, 0x74] + str r7, [r0, 0x78] + str r4, [r0] + strb r7, [r0, 0x15] + ldr r0, _0801FBC4 + ldr r4, _0801FBC8 + adds r1, r4, 0 + bl CopyYellowMonsterNametoBuffer + ldr r5, _0801FBCC + adds r0, r5, 0 + adds r1, r4, 0 + bl CopyYellowMonsterNametoBuffer + adds r0, r4, 0 + bl GetMonSpecies + adds r1, r0, 0 + adds r0, r5, 0 + subs r0, 0x50 + bl strcpy + subs r5, 0xF0 + bl GetPlayerPokemonStruct + adds r1, r0, 0 + adds r0, r5, 0 + bl PrintPokeNameToBuffer + ldr r2, [r6] + ldr r0, [r2] + cmp r0, 0x1 + bne _0801FBD0 + movs r1, 0xBE + lsls r1, 1 + adds r0, r2, r1 + str r7, [r0] + b _0801FBDE + .align 2, 0 +_0801FBC0: .4byte gUnknown_203B27C +_0801FBC4: .4byte gUnknown_202E5D8 +_0801FBC8: .4byte 0x00000155 +_0801FBCC: .4byte gUnknown_202E1C8 +_0801FBD0: + movs r3, 0xBE + lsls r3, 1 + adds r1, r2, r3 + movs r4, 0xB6 + lsls r4, 1 + adds r0, r2, r4 + str r0, [r1] +_0801FBDE: + ldr r0, _0801FC34 + bl GetDialogueSpriteDataPtr + ldr r2, _0801FC38 + ldr r3, [r2] + movs r4, 0xB6 + lsls r4, 1 + adds r1, r3, r4 + str r0, [r1] + adds r4, 0x4 + adds r1, r3, r4 + ldr r0, [r0, 0x4] + str r0, [r1] + movs r1, 0xBC + lsls r1, 1 + adds r0, r3, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + ldr r3, _0801FC3C + adds r0, r3 + strb r1, [r0] + ldr r0, [r2] + adds r4, 0xA + adds r0, r4 + strb r1, [r0] + ldr r2, [r2] + movs r0, 0xBA + lsls r0, 1 + adds r1, r2, r0 + movs r0, 0x2 + strh r0, [r1] + subs r3, 0x3 + adds r1, r2, r3 + movs r0, 0x8 + strh r0, [r1] + movs r0, 0 + bl sub_801FDA8 + movs r0, 0x1 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801FC34: .4byte 0x00000155 +_0801FC38: .4byte gUnknown_203B27C +_0801FC3C: .4byte 0x00000179 + thumb_func_end sub_801FB50 + + thumb_func_start sub_801FC40 +sub_801FC40: + push {lr} + ldr r1, _0801FC5C + ldr r0, [r1] + ldr r0, [r0, 0x4] + adds r2, r1, 0 + cmp r0, 0x22 + bls _0801FC50 + b _0801FD70 +_0801FC50: + lsls r0, 2 + ldr r1, _0801FC60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801FC5C: .4byte gUnknown_203B27C +_0801FC60: .4byte _0801FC64 + .align 2, 0 +_0801FC64: + .4byte _0801FCF0 + .4byte _0801FCF0 + .4byte _0801FCF6 + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FCFC + .4byte _0801FD02 + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FD50 + .4byte _0801FD70 + .4byte _0801FD08 + .4byte _0801FD08 + .4byte _0801FD0E + .4byte _0801FD14 + .4byte _0801FD1A + .4byte _0801FD70 + .4byte _0801FD20 + .4byte _0801FD20 + .4byte _0801FD26 + .4byte _0801FD2C + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FD70 + .4byte _0801FD32 + .4byte _0801FD38 + .4byte _0801FD38 + .4byte _0801FD3E + .4byte _0801FD44 + .4byte _0801FD4A +_0801FCF0: + bl sub_8021154 + b _0801FD74 +_0801FCF6: + bl sub_80209AC + b _0801FD74 +_0801FCFC: + bl sub_80209FC + b _0801FD74 +_0801FD02: + bl sub_8020A34 + b _0801FD74 +_0801FD08: + bl sub_8020A80 + b _0801FD74 +_0801FD0E: + bl sub_8020B38 + b _0801FD74 +_0801FD14: + bl sub_8020C2C + b _0801FD74 +_0801FD1A: + bl sub_8020C48 + b _0801FD74 +_0801FD20: + bl sub_8020C64 + b _0801FD74 +_0801FD26: + bl sub_8020CC0 + b _0801FD74 +_0801FD2C: + bl sub_8020D74 + b _0801FD74 +_0801FD32: + bl sub_8020D90 + b _0801FD74 +_0801FD38: + bl sub_8020DCC + b _0801FD74 +_0801FD3E: + bl sub_8020EB4 + b _0801FD74 +_0801FD44: + bl sub_80210C8 + b _0801FD74 +_0801FD4A: + bl sub_80210E4 + b _0801FD74 +_0801FD50: + ldr r0, [r2] + ldrb r0, [r0, 0x15] + cmp r0, 0x1 + bne _0801FD68 + ldr r0, _0801FD6C + ldr r1, [r0] + movs r0, 0x98 + lsls r0, 2 + adds r1, r0 + ldr r0, [r1] + subs r0, 0x96 + str r0, [r1] +_0801FD68: + movs r0, 0x3 + b _0801FD76 + .align 2, 0 +_0801FD6C: .4byte gTeamInventory_203B460 +_0801FD70: + bl sub_8021130 +_0801FD74: + movs r0, 0 +_0801FD76: + pop {r1} + bx r1 + thumb_func_end sub_801FC40 + + thumb_func_start sub_801FD7C +sub_801FD7C: + push {r4,lr} + ldr r4, _0801FDA4 + ldr r0, [r4] + cmp r0, 0 + beq _0801FD9C + movs r1, 0xB6 + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + bl CloseFile + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0801FD9C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801FDA4: .4byte gUnknown_203B27C + thumb_func_end sub_801FD7C + + thumb_func_start sub_801FDA8 +sub_801FDA8: + push {lr} + ldr r1, _0801FDBC + ldr r1, [r1] + str r0, [r1, 0x4] + bl sub_801FDC0 + bl sub_801FF28 + pop {r0} + bx r0 + .align 2, 0 +_0801FDBC: .4byte gUnknown_203B27C + thumb_func_end sub_801FDA8 + + thumb_func_start sub_801FDC0 +sub_801FDC0: + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _0801FDE8 + ldr r0, [r4] + movs r5, 0xC0 + lsls r5, 1 + adds r0, r5 + bl sub_8006518 + ldr r0, [r4] + ldr r1, [r0, 0x4] + cmp r1, 0x11 + beq _0801FE38 + cmp r1, 0x11 + bgt _0801FDEC + cmp r1, 0x2 + beq _0801FDF6 + b _0801FED4 + .align 2, 0 +_0801FDE8: .4byte gUnknown_203B27C +_0801FDEC: + cmp r1, 0x17 + beq _0801FE6C + cmp r1, 0x20 + beq _0801FE88 + b _0801FED4 +_0801FDF6: + adds r0, r5 + movs r1, 0x80 + strb r1, [r0] + ldr r0, [r4] + movs r2, 0xCC + lsls r2, 1 + adds r0, r2 + strb r1, [r0] + ldr r0, [r4] + movs r3, 0xD8 + lsls r3, 1 + adds r0, r3 + strb r1, [r0] + ldr r1, [r4] + movs r6, 0xE4 + lsls r6, 1 + adds r1, r6 + ldr r0, _0801FE34 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, r5 + movs r1, 0x1 + movs r2, 0 + bl sub_800641C + b _0801FF14 + .align 2, 0 +_0801FE34: .4byte gUnknown_80DC37C +_0801FE38: + bl sub_80205D0 + ldr r2, [r4] + movs r0, 0xD8 + lsls r0, 1 + adds r2, r0 + ldr r1, _0801FE68 + ldm r1!, {r3,r5,r6} + stm r2!, {r3,r5,r6} + ldm r1!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + ldr r1, [r4] + adds r0, r1, r0 + adds r1, 0x7C + bl sub_8012CAC + bl ResetUnusedInputStruct + ldr r0, [r4] + movs r6, 0xC0 + lsls r6, 1 + adds r0, r6 + b _0801FEC2 + .align 2, 0 +_0801FE68: .4byte gUnknown_80DC334 +_0801FE6C: + bl sub_802069C + ldr r2, [r4] + movs r0, 0xD8 + lsls r0, 1 + adds r2, r0 + ldr r1, _0801FE84 + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + b _0801FEB0 + .align 2, 0 +_0801FE84: .4byte gUnknown_80DC334 +_0801FE88: + bl CreateGulpinLinkMenu + ldr r1, [r4] + movs r7, 0xCC + lsls r7, 1 + adds r1, r7 + ldr r0, _0801FECC + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldr r2, [r4] + movs r0, 0xD8 + lsls r0, 1 + adds r2, r0 + ldr r1, _0801FED0 + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} +_0801FEB0: + ldr r1, [r4] + adds r0, r1, r0 + adds r1, 0x7C + bl sub_8012CAC + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, r5 +_0801FEC2: + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + b _0801FF14 + .align 2, 0 +_0801FECC: .4byte gUnknown_80DC31C +_0801FED0: .4byte gUnknown_80DC34C +_0801FED4: + ldr r5, _0801FF20 + mov r12, r5 + movs r6, 0xC0 + lsls r6, 1 + mov r8, r6 + ldr r4, _0801FF24 + movs r3, 0 + movs r2, 0x3 +_0801FEE4: + mov r7, r12 + ldr r1, [r7] + adds r1, r3 + add r1, r8 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _0801FEE4 + bl ResetUnusedInputStruct + ldr r0, _0801FF20 + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 1 + adds r0, r1 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C +_0801FF14: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801FF20: .4byte gUnknown_203B27C +_0801FF24: .4byte gUnknown_80DC31C + thumb_func_end sub_801FDC0 + + thumb_func_start sub_801FF28 +sub_801FF28: + push {r4,r5,lr} + sub sp, 0x14 + ldr r1, _0801FF44 + ldr r0, [r1] + ldr r0, [r0, 0x4] + adds r5, r1, 0 + cmp r0, 0x23 + bls _0801FF3A + b _08020562 +_0801FF3A: + lsls r0, 2 + ldr r1, _0801FF48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801FF44: .4byte gUnknown_203B27C +_0801FF48: .4byte _0801FF4C + .align 2, 0 +_0801FF4C: + .4byte _0801FFDC + .4byte _08020018 + .4byte _08020064 + .4byte _0802006C + .4byte _08020090 + .4byte _080200B4 + .4byte _080200D8 + .4byte _080200FC + .4byte _08020144 + .4byte _0802018C + .4byte _080201B0 + .4byte _080201D4 + .4byte _080201F8 + .4byte _08020562 + .4byte _0802021C + .4byte _08020240 + .4byte _0802024E + .4byte _08020256 + .4byte _08020274 + .4byte _08020282 + .4byte _0802028E + .4byte _080202B0 + .4byte _080202BE + .4byte _080202C6 + .4byte _080202E4 + .4byte _08020304 + .4byte _08020344 + .4byte _080203B0 + .4byte _080203D4 + .4byte _0802038C + .4byte _080203F8 + .4byte _08020428 + .4byte _08020434 + .4byte _08020460 + .4byte _08020478 + .4byte _08020500 +_0801FFDC: + ldr r0, [r5] + movs r4, 0x2 + str r4, [r0, 0x6C] + bl CreateGulpinShopMenu + ldr r5, [r5] + str r4, [r5, 0x8] + ldr r2, _08020014 + ldr r1, [r5] + movs r0, 0x64 + muls r0, r1 + adds r0, r2 + ldr r0, [r0] + ldr r2, [r5, 0x6C] + adds r3, r5, 0 + adds r3, 0x7C + adds r1, r5, 0 + adds r1, 0xBC + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r4, 0xBE + lsls r4, 1 + adds r1, r5, r4 + b _0802004C + .align 2, 0 +_08020014: .4byte gGulpinDialogue +_08020018: + bl CreateGulpinShopMenu + ldr r0, _0802005C + ldr r4, [r0] + movs r0, 0x2 + str r0, [r4, 0x8] + ldr r1, _08020060 + ldr r2, [r4] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x4 + adds r0, r1 + ldr r0, [r0] + ldr r2, [r4, 0x6C] + adds r3, r4, 0 + adds r3, 0x7C + adds r1, r4, 0 + adds r1, 0xBC + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r5, 0xBE + lsls r5, 1 + adds r1, r4, r5 +_0802004C: + ldr r1, [r1] + str r1, [sp, 0xC] + movs r1, 0xC + str r1, [sp, 0x10] + movs r1, 0 + bl sub_8014248 + b _08020562 + .align 2, 0 +_0802005C: .4byte gUnknown_203B27C +_08020060: .4byte gGulpinDialogue +_08020064: + movs r0, 0x3 + bl DrawTeamMoneyBox + b _08020562 +_0802006C: + ldr r2, [r5] + movs r0, 0x1F + str r0, [r2, 0x8] + ldr r1, _0802008C + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x8 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 1 + adds r2, r1 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_0802008C: .4byte gGulpinDialogue +_08020090: + ldr r2, [r5] + movs r0, 0x1F + str r0, [r2, 0x8] + ldr r1, _080200B0 + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0xC + adds r0, r1 + ldr r0, [r0] + movs r4, 0xBE + lsls r4, 1 + adds r2, r4 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080200B0: .4byte gGulpinDialogue +_080200B4: + ldr r2, [r5] + movs r0, 0x1F + str r0, [r2, 0x8] + ldr r1, _080200D4 + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x10 + adds r0, r1 + ldr r0, [r0] + movs r5, 0xBE + lsls r5, 1 + adds r2, r5 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080200D4: .4byte gGulpinDialogue +_080200D8: + ldr r2, [r5] + movs r0, 0x1F + str r0, [r2, 0x8] + ldr r1, _080200F8 + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x14 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 1 + adds r2, r1 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080200F8: .4byte gGulpinDialogue +_080200FC: + bl sub_8020900 + ldr r1, _0802013C + ldr r0, _08020140 + ldr r4, [r0] + ldr r2, [r4] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x18 + adds r0, r1 + ldr r0, [r0] + adds r3, r4, 0 + adds r3, 0x7C + adds r1, r4, 0 + adds r1, 0xBC + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r2, 0xBE + lsls r2, 1 + adds r1, r4, r2 + ldr r1, [r1] + str r1, [sp, 0xC] + movs r1, 0xC + str r1, [sp, 0x10] + movs r1, 0 + movs r2, 0x10 + bl sub_8014248 + b _08020562 + .align 2, 0 +_0802013C: .4byte gGulpinDialogue +_08020140: .4byte gUnknown_203B27C +_08020144: + bl sub_8020950 + ldr r1, _08020184 + ldr r0, _08020188 + ldr r4, [r0] + ldr r2, [r4] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x54 + adds r0, r1 + ldr r0, [r0] + adds r3, r4, 0 + adds r3, 0x7C + adds r1, r4, 0 + adds r1, 0xBC + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r5, 0xBE + lsls r5, 1 + adds r1, r4, r5 + ldr r1, [r1] + str r1, [sp, 0xC] + movs r1, 0xC + str r1, [sp, 0x10] + movs r1, 0 + movs r2, 0xD + bl sub_8014248 + b _08020562 + .align 2, 0 +_08020184: .4byte gGulpinDialogue +_08020188: .4byte gUnknown_203B27C +_0802018C: + ldr r2, [r5] + movs r0, 0x1 + str r0, [r2, 0x8] + ldr r1, _080201AC + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x58 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 1 + adds r2, r1 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080201AC: .4byte gGulpinDialogue +_080201B0: + ldr r2, [r5] + movs r0, 0x1 + str r0, [r2, 0x8] + ldr r1, _080201D0 + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x5C + adds r0, r1 + ldr r0, [r0] + movs r4, 0xBE + lsls r4, 1 + adds r2, r4 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080201D0: .4byte gGulpinDialogue +_080201D4: + ldr r2, [r5] + movs r0, 0x1 + str r0, [r2, 0x8] + ldr r1, _080201F4 + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x60 + adds r0, r1 + ldr r0, [r0] + movs r5, 0xBE + lsls r5, 1 + adds r2, r5 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080201F4: .4byte gGulpinDialogue +_080201F8: + ldr r2, [r5] + movs r0, 0xD + str r0, [r2, 0x8] + ldr r1, _08020218 + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x1C + adds r0, r1 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 1 + adds r2, r1 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_08020218: .4byte gGulpinDialogue +_0802021C: + ldr r2, [r5] + movs r0, 0xF + str r0, [r2, 0x8] + ldr r1, _0802023C + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x20 + adds r0, r1 + ldr r0, [r0] + movs r4, 0xBE + lsls r4, 1 + adds r2, r4 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_0802023C: .4byte gGulpinDialogue +_08020240: + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + movs r3, 0xA + bl sub_8023868 + b _08020562 +_0802024E: + movs r0, 0x1 + bl sub_8023B7C + b _08020562 +_08020256: + bl sub_8023DA4 + ldr r0, _08020270 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0xCC + adds r1, r2, 0 + adds r1, 0x7C + adds r3, r2, 0 + adds r3, 0xBC + ldr r2, [r2, 0x70] + b _0802044C + .align 2, 0 +_08020270: .4byte gUnknown_203B27C +_08020274: + ldr r0, [r5] + movs r5, 0xC + ldrsh r0, [r0, r5] + movs r1, 0x2 + bl sub_8024458 + b _08020562 +_08020282: + ldr r0, [r5] + movs r1, 0xC + ldrsh r0, [r0, r1] + bl sub_801BEEC + b _08020562 +_0802028E: + ldr r2, [r5] + movs r0, 0x15 + str r0, [r2, 0x8] + ldr r1, _080202AC + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x24 + adds r0, r1 + ldr r0, [r0] + movs r4, 0xBE + lsls r4, 1 + adds r2, r4 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080202AC: .4byte gGulpinDialogue +_080202B0: + ldr r0, [r5] + movs r5, 0xC + ldrsh r0, [r0, r5] + movs r1, 0 + bl sub_801F428 + b _08020562 +_080202BE: + movs r0, 0x1 + bl sub_801F5F0 + b _08020562 +_080202C6: + bl sub_801F700 + ldr r0, _080202E0 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0xCC + adds r1, r2, 0 + adds r1, 0x7C + adds r3, r2, 0 + adds r3, 0xBC + ldr r2, [r2, 0x74] + b _0802044C + .align 2, 0 +_080202E0: .4byte gUnknown_203B27C +_080202E4: + ldr r0, [r5] + ldrh r1, [r0, 0x1C] + adds r0, 0x64 + strh r1, [r0] + movs r2, 0x1 + adds r4, r5, 0 + movs r3, 0 +_080202F2: + ldr r0, [r4] + lsls r1, r2, 1 + adds r0, 0x64 + adds r0, r1 + strh r3, [r0] + adds r2, 0x1 + cmp r2, 0x3 + ble _080202F2 + b _0802046E +_08020304: + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x24 + ldr r1, [r1, 0x10] + adds r1, 0x2C + bl sub_8094060 + ldr r1, [r5] + movs r0, 0x10 + str r0, [r1, 0x8] + ldr r0, _0802033C + ldrh r1, [r1, 0x1E] + bl sub_8092C84 + ldr r1, _08020340 + ldr r2, [r5] + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x28 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 1 + adds r2, r1 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_0802033C: .4byte gAvailablePokemonNames +_08020340: .4byte gGulpinDialogue +_08020344: + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x24 + ldr r1, [r1, 0x10] + adds r1, 0x2C + bl sub_8094060 + ldr r3, [r5] + movs r0, 0x10 + str r0, [r3, 0x8] + ldrb r0, [r3, 0x14] + cmp r0, 0 + beq _08020370 + ldr r1, _0802036C + ldr r2, [r3] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x38 + b _08020520 + .align 2, 0 +_0802036C: .4byte gGulpinDialogue +_08020370: + ldr r1, _08020388 + ldr r2, [r3] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x34 + adds r0, r1 + ldr r0, [r0] + movs r4, 0xBE + lsls r4, 1 + adds r1, r3, r4 + b _0802052A + .align 2, 0 +_08020388: .4byte gGulpinDialogue +_0802038C: + ldr r2, [r5] + ldr r0, [r2] + cmp r0, 0 + bne _080203A2 + movs r5, 0xC + ldrsh r1, [r2, r5] + adds r2, 0x24 + movs r0, 0 + bl DisplayGulpinDialogueSprite + b _08020562 +_080203A2: + movs r0, 0xC + ldrsh r1, [r2, r0] + adds r2, 0x24 + movs r0, 0x1 + bl DisplayGulpinDialogueSprite + b _08020562 +_080203B0: + ldr r2, [r5] + movs r0, 0x10 + str r0, [r2, 0x8] + ldr r1, _080203D0 + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x3C + adds r0, r1 + ldr r0, [r0] + movs r1, 0xBE + lsls r1, 1 + adds r2, r1 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080203D0: .4byte gGulpinDialogue +_080203D4: + ldr r2, [r5] + movs r0, 0x10 + str r0, [r2, 0x8] + ldr r1, _080203F4 + ldr r3, [r2] + movs r0, 0x64 + muls r0, r3 + adds r1, 0x40 + adds r0, r1 + ldr r0, [r0] + movs r4, 0xBE + lsls r4, 1 + adds r2, r4 + ldr r2, [r2] + b _0802052C + .align 2, 0 +_080203F4: .4byte gGulpinDialogue +_080203F8: + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x24 + ldr r1, [r1, 0x10] + adds r1, 0x2C + bl unk_CopyMoves4To8 + ldr r0, [r5] + movs r5, 0xC + ldrsh r1, [r0, r5] + adds r2, r0, 0 + adds r2, 0x24 + ldrb r3, [r0, 0x15] + ldr r0, _08020424 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + movs r0, 0x1 + bl sub_801EE10 + b _08020562 + .align 2, 0 +_08020424: .4byte gUnknown_80DC394 +_08020428: + ldr r0, [r5] + ldrb r1, [r0, 0x15] + movs r0, 0x1 + bl sub_801F1B0 + b _08020562 +_08020434: + movs r0, 0 + bl sub_801F280 + ldr r0, _0802045C + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0xCC + adds r1, r2, 0 + adds r1, 0x7C + adds r3, r2, 0 + adds r3, 0xBC + ldr r2, [r2, 0x78] +_0802044C: + str r2, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + movs r2, 0 + bl sub_8012D60 + b _08020562 + .align 2, 0 +_0802045C: .4byte gUnknown_203B27C +_08020460: + ldr r2, [r5] + ldr r0, [r2, 0x18] + adds r1, r2, 0 + adds r1, 0x24 + adds r2, 0x64 + bl GetLinkedSequence +_0802046E: + ldr r0, [r5] + adds r0, 0x64 + bl sub_801F808 + b _08020562 +_08020478: + bl sub_80208B0 + ldr r0, _080204B8 + ldr r4, _080204BC + ldr r1, [r4] + ldrh r1, [r1, 0x20] + bl sub_8092C84 + ldr r4, [r4] + ldrb r5, [r4, 0x14] + cmp r5, 0 + beq _080204C4 + ldr r1, _080204C0 + ldr r2, [r4] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x48 + adds r0, r1 + ldr r0, [r0] + adds r3, r4, 0 + adds r3, 0x7C + adds r1, r4, 0 + adds r1, 0xBC + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + movs r2, 0xBE + lsls r2, 1 + adds r1, r4, r2 + b _080204E8 + .align 2, 0 +_080204B8: .4byte gUnknown_202DFE8 +_080204BC: .4byte gUnknown_203B27C +_080204C0: .4byte gGulpinDialogue +_080204C4: + ldr r1, _080204FC + ldr r2, [r4] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x44 + adds r0, r1 + ldr r0, [r0] + adds r3, r4, 0 + adds r3, 0x7C + adds r1, r4, 0 + adds r1, 0xBC + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + str r5, [sp, 0x8] + movs r5, 0xBE + lsls r5, 1 + adds r1, r4, r5 +_080204E8: + ldr r1, [r1] + str r1, [sp, 0xC] + movs r1, 0xC + str r1, [sp, 0x10] + movs r1, 0 + movs r2, 0x11 + bl sub_8014248 + b _08020562 + .align 2, 0 +_080204FC: .4byte gGulpinDialogue +_08020500: + ldr r1, [r5] + movs r0, 0x1F + str r0, [r1, 0x8] + ldr r0, _08020538 + ldrh r1, [r1, 0x20] + bl sub_8092C84 + ldr r3, [r5] + ldrb r0, [r3, 0x14] + cmp r0, 0 + beq _08020544 + ldr r1, _0802053C + ldr r2, [r3] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x50 +_08020520: + adds r0, r1 + ldr r0, [r0] + movs r2, 0xBE + lsls r2, 1 + adds r1, r3, r2 +_0802052A: + ldr r2, [r1] +_0802052C: + ldr r3, _08020540 + movs r1, 0 + bl sub_80141B4 + b _08020562 + .align 2, 0 +_08020538: .4byte gUnknown_202DFE8 +_0802053C: .4byte gGulpinDialogue +_08020540: .4byte 0x0000010d +_08020544: + ldr r1, _0802056C + ldr r2, [r3] + movs r0, 0x64 + muls r0, r2 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + movs r4, 0xBE + lsls r4, 1 + adds r1, r3, r4 + ldr r2, [r1] + ldr r3, _08020570 + movs r1, 0 + bl sub_80141B4 +_08020562: + add sp, 0x14 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802056C: .4byte gGulpinDialogue +_08020570: .4byte 0x0000010d + thumb_func_end sub_801FF28 + + thumb_func_start CreateGulpinShopMenu +CreateGulpinShopMenu: + push {r4,lr} + ldr r4, _080205C0 + ldr r0, [r4] + adds r0, 0xBC + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r4, [r4] + movs r3, 0 + ldr r0, _080205C4 + str r0, [r4, 0x7C] + adds r1, r4, 0 + adds r1, 0x80 + movs r0, 0x2 + str r0, [r1] + movs r2, 0x1 + adds r1, 0x4 + ldr r0, _080205C8 + str r0, [r1] + adds r1, 0x4 + movs r0, 0xB + str r0, [r1] + adds r1, 0x4 + ldr r0, _080205CC + ldr r0, [r0] + str r0, [r1] + adds r0, r4, 0 + adds r0, 0x90 + str r2, [r0] + adds r0, 0x4 + str r3, [r0] + adds r0, 0x4 + str r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080205C0: .4byte gUnknown_203B27C +_080205C4: .4byte gGulpinProceed +_080205C8: .4byte gGulpinInfo +_080205CC: .4byte gUnknown_80D4934 + thumb_func_end CreateGulpinShopMenu + + thumb_func_start sub_80205D0 +sub_80205D0: + push {r4-r7,lr} + ldr r4, _08020660 + ldr r0, [r4] + adds r0, 0xBC + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r0, [r4] + mov r12, r0 + movs r5, 0 + ldr r0, _08020664 + mov r1, r12 + str r0, [r1, 0x7C] + mov r2, r12 + adds r2, 0x80 + movs r0, 0x4 + str r0, [r2] + movs r3, 0x1 + adds r1, 0x84 + ldr r0, _08020668 + str r0, [r1] + adds r1, 0x4 + movs r0, 0xB + str r0, [r1] + adds r1, 0x4 + ldr r0, _0802066C + str r0, [r1] + adds r1, 0x4 + movs r0, 0xC + str r0, [r1] + movs r6, 0x3 + adds r1, 0x4 + ldr r0, _08020670 + str r0, [r1] + mov r0, r12 + adds r0, 0x98 + str r6, [r0] + movs r6, 0x4 + adds r0, 0x4 + str r5, [r0] + adds r0, 0x4 + str r3, [r0] + mov r3, r12 + adds r3, 0xBC +_0802062A: + ldrh r0, [r3] + cmp r0, 0 + bne _0802063A + ldr r1, [r2] + mov r7, r12 + ldr r0, [r7, 0x70] + cmp r1, r0 + beq _08020696 +_0802063A: + adds r2, 0x8 + adds r3, 0x2 + adds r5, 0x1 + cmp r5, r6 + blt _0802062A + movs r5, 0 + cmp r5, r6 + bge _08020696 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0xBC + ldrh r0, [r0] + cmp r0, 0 + bne _08020674 + adds r0, r1, 0 + adds r0, 0x80 + ldr r0, [r0] + str r0, [r1, 0x70] + b _08020696 + .align 2, 0 +_08020660: .4byte gUnknown_203B27C +_08020664: .4byte gUnknown_80DC3D8 +_08020668: .4byte gUnknown_80DC3E0 +_0802066C: .4byte gUnknown_80DC3E8 +_08020670: .4byte gUnknown_80DC3F4 +_08020674: + adds r5, 0x1 + cmp r5, r6 + bge _08020696 + ldr r2, [r4] + lsls r0, r5, 1 + adds r1, r2, 0 + adds r1, 0xBC + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _08020674 + lsls r0, r5, 3 + adds r1, r2, 0 + adds r1, 0x80 + adds r1, r0 + ldr r0, [r1] + str r0, [r2, 0x70] +_08020696: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80205D0 + + thumb_func_start sub_802069C +sub_802069C: + push {r4-r7,lr} + ldr r4, _08020718 + ldr r0, [r4] + adds r0, 0xBC + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r0, [r4] + mov r12, r0 + movs r5, 0 + ldr r0, _0802071C + mov r1, r12 + str r0, [r1, 0x7C] + mov r3, r12 + adds r3, 0x80 + movs r0, 0x3 + str r0, [r3] + movs r2, 0x1 + adds r1, 0x84 + ldr r0, _08020720 + ldr r0, [r0] + str r0, [r1] + adds r1, 0x4 + movs r0, 0xB + str r0, [r1] + movs r6, 0x2 + mov r0, r12 + adds r0, 0x8C + str r5, [r0] + adds r0, 0x4 + str r2, [r0] + mov r2, r12 + adds r2, 0xBC +_080206E0: + ldrh r0, [r2] + cmp r0, 0 + bne _080206F0 + ldr r1, [r3] + mov r7, r12 + ldr r0, [r7, 0x74] + cmp r1, r0 + beq _08020746 +_080206F0: + adds r3, 0x8 + adds r2, 0x2 + adds r5, 0x1 + cmp r5, r6 + blt _080206E0 + movs r5, 0 + cmp r5, r6 + bge _08020746 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0xBC + ldrh r0, [r0] + cmp r0, 0 + bne _08020724 + adds r0, r1, 0 + adds r0, 0x80 + ldr r0, [r0] + str r0, [r1, 0x74] + b _08020746 + .align 2, 0 +_08020718: .4byte gUnknown_203B27C +_0802071C: .4byte gUnknown_80DC3F4 +_08020720: .4byte gUnknown_80D4970 +_08020724: + adds r5, 0x1 + cmp r5, r6 + bge _08020746 + ldr r2, [r4] + lsls r0, r5, 1 + adds r1, r2, 0 + adds r1, 0xBC + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _08020724 + lsls r0, r5, 3 + adds r1, r2, 0 + adds r1, 0x80 + adds r1, r0 + ldr r0, [r1] + str r0, [r2, 0x74] +_08020746: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_802069C + + thumb_func_start CreateGulpinLinkMenu +CreateGulpinLinkMenu: + push {r4-r7,lr} + movs r7, 0 + ldr r4, _08020780 + ldr r0, [r4] + adds r0, 0xBC + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r1, [r4] + ldrb r0, [r1, 0x16] + cmp r0, 0 + beq _0802079C + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl IsMoveSet + lsls r0, 24 + cmp r0, 0 + beq _08020788 + ldr r0, [r4] + ldr r1, _08020784 + str r1, [r0, 0x7C] + adds r0, 0x80 + movs r1, 0x6 + b _08020792 + .align 2, 0 +_08020780: .4byte gUnknown_203B27C +_08020784: .4byte gGulpinDeselect +_08020788: + ldr r0, [r4] + ldr r1, _08020798 + str r1, [r0, 0x7C] + adds r0, 0x80 + movs r1, 0x5 +_08020792: + str r1, [r0] + mov r12, r4 + b _080207CA + .align 2, 0 +_08020798: .4byte gGulpinSet +_0802079C: + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl IsMoveEnabled + lsls r0, 24 + cmp r0, 0 + beq _080207B4 + ldr r1, [r4] + ldr r0, _080207B0 + b _080207B8 + .align 2, 0 +_080207B0: .4byte gGulpinDeselect +_080207B4: + ldr r1, [r4] + ldr r0, _0802086C +_080207B8: + str r0, [r1, 0x7C] + ldr r2, _08020870 + ldr r0, [r2] + lsls r1, r7, 3 + adds r0, 0x80 + adds r0, r1 + movs r1, 0x7 + str r1, [r0] + mov r12, r2 +_080207CA: + adds r7, 0x1 + mov r0, r12 + ldr r4, [r0] + lsls r1, r7, 3 + adds r3, r4, 0 + adds r3, 0x7C + adds r2, r3, r1 + ldr r0, _08020874 + str r0, [r2] + adds r6, r4, 0 + adds r6, 0x80 + adds r1, r6, r1 + movs r0, 0x8 + str r0, [r1] + adds r7, 0x1 + lsls r1, r7, 3 + adds r2, r3, r1 + ldr r0, _08020878 + str r0, [r2] + adds r1, r6, r1 + movs r0, 0x9 + str r0, [r1] + adds r7, 0x1 + lsls r1, r7, 3 + adds r2, r3, r1 + ldr r0, _0802087C + str r0, [r2] + adds r1, r6, r1 + movs r0, 0xA + str r0, [r1] + adds r7, 0x1 + lsls r1, r7, 3 + adds r2, r3, r1 + ldr r0, _08020880 + ldr r0, [r0] + str r0, [r2] + adds r1, r6, r1 + movs r0, 0xB + str r0, [r1] + adds r7, 0x1 + lsls r1, r7, 3 + adds r3, r1 + movs r0, 0 + str r0, [r3] + adds r1, r6, r1 + movs r0, 0x1 + str r0, [r1] + movs r3, 0 + cmp r3, r7 + bge _0802084C + adds r5, r4, 0 + adds r4, 0xBC + adds r2, r6, 0 +_08020834: + ldrh r0, [r4] + cmp r0, 0 + bne _08020842 + ldr r1, [r2] + ldr r0, [r5, 0x78] + cmp r1, r0 + beq _080208A8 +_08020842: + adds r4, 0x2 + adds r2, 0x8 + adds r3, 0x1 + cmp r3, r7 + blt _08020834 +_0802084C: + movs r3, 0 + cmp r3, r7 + bge _080208A8 + mov r0, r12 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0xBC + ldrh r0, [r0] + cmp r0, 0 + bne _08020884 + adds r0, r1, 0 + adds r0, 0x80 + ldr r0, [r0] + str r0, [r1, 0x78] + b _080208A8 + .align 2, 0 +_0802086C: .4byte gGulpinSet +_08020870: .4byte gUnknown_203B27C +_08020874: .4byte gGulpinLink +_08020878: .4byte gGulpinDelink +_0802087C: .4byte gGulpinForget +_08020880: .4byte gUnknown_80D4970 +_08020884: + adds r3, 0x1 + cmp r3, r7 + bge _080208A8 + mov r0, r12 + ldr r2, [r0] + lsls r0, r3, 1 + adds r1, r2, 0 + adds r1, 0xBC + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _08020884 + lsls r0, r3, 3 + adds r1, r2, 0 + adds r1, 0x80 + adds r1, r0 + ldr r0, [r1] + str r0, [r2, 0x78] +_080208A8: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end CreateGulpinLinkMenu + + thumb_func_start sub_80208B0 +sub_80208B0: + push {r4,lr} + ldr r4, _080208F4 + ldr r0, [r4] + adds r0, 0xBC + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r4, [r4] + movs r3, 0 + ldr r0, _080208F8 + ldr r0, [r0] + str r0, [r4, 0x7C] + adds r1, r4, 0 + adds r1, 0x80 + movs r0, 0x10 + str r0, [r1] + movs r2, 0x1 + adds r1, 0x4 + ldr r0, _080208FC + ldr r0, [r0] + str r0, [r1] + adds r1, 0x4 + movs r0, 0x11 + str r0, [r1] + adds r0, r4, 0 + adds r0, 0x8C + str r3, [r0] + adds r0, 0x4 + str r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080208F4: .4byte gUnknown_203B27C +_080208F8: .4byte gUnknown_80D4920 +_080208FC: .4byte gUnknown_80D4928 + thumb_func_end sub_80208B0 + + thumb_func_start sub_8020900 +sub_8020900: + push {r4,lr} + ldr r4, _08020944 + ldr r0, [r4] + adds r0, 0xBC + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r3, [r4] + movs r2, 0 + ldr r0, _08020948 + ldr r0, [r0] + str r0, [r3, 0x7C] + adds r1, r3, 0 + adds r1, 0x80 + movs r0, 0x10 + str r0, [r1] + adds r1, 0x4 + ldr r0, _0802094C + ldr r0, [r0] + str r0, [r1] + adds r1, 0x4 + movs r0, 0x11 + str r0, [r1] + adds r0, r3, 0 + adds r0, 0x8C + str r2, [r0] + adds r1, 0x8 + movs r0, 0x1 + negs r0, r0 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08020944: .4byte gUnknown_203B27C +_08020948: .4byte gUnknown_80D4920 +_0802094C: .4byte gUnknown_80D4928 + thumb_func_end sub_8020900 + + thumb_func_start sub_8020950 +sub_8020950: + push {r4,lr} + ldr r4, _0802099C + ldr r0, [r4] + adds r0, 0xBC + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r4, [r4] + movs r3, 0 + ldr r0, _080209A0 + str r0, [r4, 0x7C] + adds r1, r4, 0 + adds r1, 0x80 + movs r0, 0xD + str r0, [r1] + movs r2, 0x1 + adds r1, 0x4 + ldr r0, _080209A4 + str r0, [r1] + adds r1, 0x4 + movs r0, 0xE + str r0, [r1] + adds r1, 0x4 + ldr r0, _080209A8 + str r0, [r1] + adds r1, 0x4 + movs r0, 0xF + str r0, [r1] + adds r0, r4, 0 + adds r0, 0x94 + str r3, [r0] + adds r0, 0x4 + str r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802099C: .4byte gUnknown_203B27C +_080209A0: .4byte gUnknown_80DC428 +_080209A4: .4byte gUnknown_80DC438 +_080209A8: .4byte gUnknown_80DC448 + thumb_func_end sub_8020950 + + thumb_func_start sub_80209AC +sub_80209AC: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _080209F4 + ldr r0, _080209D4 + ldr r1, [r0] + ldr r0, [sp] + str r0, [r1, 0x6C] + ldr r0, [sp] + cmp r0, 0x2 + beq _080209DE + cmp r0, 0x2 + bgt _080209D8 + cmp r0, 0x1 + beq _080209EE + b _080209F4 + .align 2, 0 +_080209D4: .4byte gUnknown_203B27C +_080209D8: + cmp r0, 0xB + beq _080209E6 + b _080209F4 +_080209DE: + movs r0, 0xE + bl sub_801FDA8 + b _080209F4 +_080209E6: + movs r0, 0x8 + bl sub_801FDA8 + b _080209F4 +_080209EE: + movs r0, 0xC + bl sub_801FDA8 +_080209F4: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_80209AC + + thumb_func_start sub_80209FC +sub_80209FC: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _08020A2E + ldr r0, [sp] + cmp r0, 0x10 + beq _08020A20 + cmp r0, 0x10 + bgt _08020A1A + cmp r0, 0x1 + beq _08020A28 + b _08020A2E +_08020A1A: + cmp r0, 0x11 + beq _08020A28 + b _08020A2E +_08020A20: + movs r0, 0xE + bl sub_801FDA8 + b _08020A2E +_08020A28: + movs r0, 0xC + bl sub_801FDA8 +_08020A2E: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_80209FC + + thumb_func_start sub_8020A34 +sub_8020A34: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _08020A7A + ldr r0, [sp] + cmp r0, 0xD + beq _08020A5C + cmp r0, 0xD + bgt _08020A52 + cmp r0, 0x1 + beq _08020A74 + b _08020A7A +_08020A52: + cmp r0, 0xE + beq _08020A64 + cmp r0, 0xF + beq _08020A6C + b _08020A7A +_08020A5C: + movs r0, 0x9 + bl sub_801FDA8 + b _08020A7A +_08020A64: + movs r0, 0xA + bl sub_801FDA8 + b _08020A7A +_08020A6C: + movs r0, 0xB + bl sub_801FDA8 + b _08020A7A +_08020A74: + movs r0, 0x1 + bl sub_801FDA8 +_08020A7A: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_8020A34 + + thumb_func_start sub_8020A80 +sub_8020A80: + push {r4,lr} + movs r0, 0x1 + bl sub_8023A94 + cmp r0, 0x4 + bhi _08020B32 + lsls r0, 2 + ldr r1, _08020A98 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08020A98: .4byte _08020A9C + .align 2, 0 +_08020A9C: + .4byte _08020B32 + .4byte _08020B32 + .4byte _08020B28 + .4byte _08020AB0 + .4byte _08020AEC +_08020AB0: + bl sub_8023B44 + ldr r4, _08020AE0 + ldr r1, [r4] + strh r0, [r1, 0xC] + ldr r3, _08020AE4 + movs r0, 0xC + ldrsh r2, [r1, r0] + movs r0, 0x58 + muls r2, r0 + ldr r0, [r3] + adds r0, r2 + str r0, [r1, 0x10] + ldrb r0, [r0, 0x2] + strb r0, [r1, 0x16] + ldr r0, _08020AE8 + ldr r1, [r4] + ldr r1, [r1, 0x10] + bl PrintPokeNameToBuffer + movs r0, 0x11 + bl sub_801FDA8 + b _08020B32 + .align 2, 0 +_08020AE0: .4byte gUnknown_203B27C +_08020AE4: .4byte gRecruitedPokemonRef +_08020AE8: .4byte gUnknown_202E128 +_08020AEC: + bl sub_8023B44 + ldr r4, _08020B1C + ldr r1, [r4] + strh r0, [r1, 0xC] + ldr r3, _08020B20 + movs r0, 0xC + ldrsh r2, [r1, r0] + movs r0, 0x58 + muls r2, r0 + ldr r0, [r3] + adds r0, r2 + str r0, [r1, 0x10] + ldrb r0, [r0, 0x2] + strb r0, [r1, 0x16] + ldr r0, _08020B24 + ldr r1, [r4] + ldr r1, [r1, 0x10] + bl PrintPokeNameToBuffer + movs r0, 0x12 + bl sub_801FDA8 + b _08020B32 + .align 2, 0 +_08020B1C: .4byte gUnknown_203B27C +_08020B20: .4byte gRecruitedPokemonRef +_08020B24: .4byte gUnknown_202E128 +_08020B28: + bl sub_8023C60 + movs r0, 0x7 + bl sub_801FDA8 +_08020B32: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8020A80 + + thumb_func_start sub_8020B38 +sub_8020B38: + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + bl sub_8023A94 + ldr r4, _08020B7C + ldr r0, [r4] + adds r0, 0xCC + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + bne _08020B68 + ldr r0, [r4] + adds r0, 0xCC + mov r1, sp + bl sub_8013114 + ldr r1, [sp] + cmp r1, 0x1 + beq _08020B68 + ldr r0, [r4] + str r1, [r0, 0x70] +_08020B68: + ldr r0, [sp] + subs r0, 0x1 + cmp r0, 0x10 + bhi _08020C24 + lsls r0, 2 + ldr r1, _08020B80 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08020B7C: .4byte gUnknown_203B27C +_08020B80: .4byte _08020B84 + .align 2, 0 +_08020B84: + .4byte _08020BC8 + .4byte _08020C24 + .4byte _08020BD0 + .4byte _08020C0E + .4byte _08020C24 + .4byte _08020C24 + .4byte _08020C24 + .4byte _08020C24 + .4byte _08020C24 + .4byte _08020C24 + .4byte _08020C16 + .4byte _08020C1E + .4byte _08020C24 + .4byte _08020C24 + .4byte _08020C24 + .4byte _08020C24 + .4byte _08020BC8 +_08020BC8: + movs r0, 0x10 + bl sub_801FDA8 + b _08020C24 +_08020BD0: + ldr r0, _08020BF0 + ldr r0, [r0] + ldr r0, [r0, 0x10] + movs r1, 0x8 + ldrsh r0, [r0, r1] + bl GetBaseSpeciesNoUnown + lsls r0, 16 + movs r1, 0xCF + lsls r1, 17 + cmp r0, r1 + bne _08020BF4 + movs r0, 0x1C + bl sub_801FDA8 + b _08020C24 + .align 2, 0 +_08020BF0: .4byte gUnknown_203B27C +_08020BF4: + bl sub_8021178 + lsls r0, 24 + cmp r0, 0 + beq _08020C06 + movs r0, 0x1B + bl sub_801FDA8 + b _08020C24 +_08020C06: + movs r0, 0x14 + bl sub_801FDA8 + b _08020C24 +_08020C0E: + movs r0, 0x1E + bl sub_801FDA8 + b _08020C24 +_08020C16: + movs r0, 0x12 + bl sub_801FDA8 + b _08020C24 +_08020C1E: + movs r0, 0x13 + bl sub_801FDA8 +_08020C24: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8020B38 + + thumb_func_start sub_8020C2C +sub_8020C2C: + push {lr} + bl sub_80244E4 + cmp r0, 0x1 + bls _08020C44 + cmp r0, 0x3 + bhi _08020C44 + bl sub_802453C + movs r0, 0x10 + bl sub_801FDA8 +_08020C44: + pop {r0} + bx r0 + thumb_func_end sub_8020C2C + + thumb_func_start sub_8020C48 +sub_8020C48: + push {lr} + bl sub_801BF48 + cmp r0, 0x1 + bls _08020C60 + cmp r0, 0x3 + bhi _08020C60 + bl sub_801BF98 + movs r0, 0x10 + bl sub_801FDA8 +_08020C60: + pop {r0} + bx r0 + thumb_func_end sub_8020C48 + + thumb_func_start sub_8020C64 +sub_8020C64: + push {lr} + movs r0, 0x1 + bl sub_801F520 + cmp r0, 0x3 + beq _08020C80 + cmp r0, 0x3 + bhi _08020C7A + cmp r0, 0x2 + beq _08020CB0 + b _08020CBA +_08020C7A: + cmp r0, 0x4 + beq _08020C98 + b _08020CBA +_08020C80: + bl sub_801F5B4 + ldr r1, _08020C94 + ldr r1, [r1] + strh r0, [r1, 0x1C] + strh r0, [r1, 0x1E] + movs r0, 0x17 + bl sub_801FDA8 + b _08020CBA + .align 2, 0 +_08020C94: .4byte gUnknown_203B27C +_08020C98: + bl sub_801F5B4 + ldr r1, _08020CAC + ldr r1, [r1] + strh r0, [r1, 0x1C] + strh r0, [r1, 0x1E] + movs r0, 0x18 + bl sub_801FDA8 + b _08020CBA + .align 2, 0 +_08020CAC: .4byte gUnknown_203B27C +_08020CB0: + bl sub_801F63C + movs r0, 0x10 + bl sub_801FDA8 +_08020CBA: + pop {r0} + bx r0 + thumb_func_end sub_8020C64 + + thumb_func_start sub_8020CC0 +sub_8020CC0: + push {r4-r6,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + bl sub_801F520 + ldr r4, _08020D00 + ldr r0, [r4] + adds r0, 0xCC + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + bne _08020CF0 + ldr r0, [r4] + adds r0, 0xCC + mov r1, sp + bl sub_8013114 + ldr r1, [sp] + cmp r1, 0x1 + beq _08020CF0 + ldr r0, [r4] + str r1, [r0, 0x74] +_08020CF0: + ldr r0, [sp] + cmp r0, 0x3 + beq _08020D14 + cmp r0, 0x3 + bgt _08020D04 + cmp r0, 0x1 + beq _08020D0C + b _08020D6C + .align 2, 0 +_08020D00: .4byte gUnknown_203B27C +_08020D04: + cmp r0, 0xB + beq _08020D66 + cmp r0, 0x11 + bne _08020D6C +_08020D0C: + movs r0, 0x16 + bl sub_801FDA8 + b _08020D6C +_08020D14: + bl sub_801F63C + ldr r4, _08020D30 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x24 + ldr r1, [r1, 0x10] + adds r1, 0x2C + bl unk_CopyMoves4To8 + movs r5, 0 + adds r6, r4, 0 + movs r4, 0x24 + b _08020D38 + .align 2, 0 +_08020D30: .4byte gUnknown_203B27C +_08020D34: + adds r4, 0x8 + adds r5, 0x1 +_08020D38: + cmp r5, 0x7 + bgt _08020D52 + ldr r3, [r6] + adds r2, r3, r4 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08020D34 + ldrh r1, [r3, 0x1E] + adds r0, r2, 0 + bl InitZeroedPPPokemonMove +_08020D52: + cmp r5, 0x3 + ble _08020D5E + movs r0, 0x1D + bl sub_801FDA8 + b _08020D6C +_08020D5E: + movs r0, 0x19 + bl sub_801FDA8 + b _08020D6C +_08020D66: + movs r0, 0x18 + bl sub_801FDA8 +_08020D6C: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8020CC0 + + thumb_func_start sub_8020D74 +sub_8020D74: + push {lr} + bl sub_801F890 + cmp r0, 0x1 + bls _08020D8C + cmp r0, 0x3 + bhi _08020D8C + bl sub_801F8D0 + movs r0, 0x16 + bl sub_801FDA8 +_08020D8C: + pop {r0} + bx r0 + thumb_func_end sub_8020D74 + + thumb_func_start sub_8020D90 +sub_8020D90: + push {lr} + bl sub_801E8C0 + cmp r0, 0x2 + beq _08020DBC + cmp r0, 0x2 + bcc _08020DC6 + cmp r0, 0x3 + bne _08020DC6 + bl GulpinIsNextMoveLinked + ldr r1, _08020DB8 + ldr r1, [r1] + strb r0, [r1, 0x14] + bl sub_801E93C + movs r0, 0x1A + bl sub_801FDA8 + b _08020DC6 + .align 2, 0 +_08020DB8: .4byte gUnknown_203B27C +_08020DBC: + bl sub_801E93C + movs r0, 0x10 + bl sub_801FDA8 +_08020DC6: + pop {r0} + bx r0 + thumb_func_end sub_8020D90 + + thumb_func_start sub_8020DCC +sub_8020DCC: + push {lr} + movs r0, 0x1 + bl sub_801EF38 + cmp r0, 0x4 + bhi _08020EAA + lsls r0, 2 + ldr r1, _08020DE4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08020DE4: .4byte _08020DE8 + .align 2, 0 +_08020DE8: + .4byte _08020EAA + .4byte _08020E98 + .4byte _08020E64 + .4byte _08020DFC + .4byte _08020E30 +_08020DFC: + bl sub_801F1A4 + lsls r0, 24 + cmp r0, 0 + beq _08020E0E + ldr r0, _08020E2C + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x15] +_08020E0E: + bl sub_801F194 + ldr r1, _08020E2C + ldr r2, [r1] + str r0, [r2, 0x18] + lsls r0, 3 + adds r0, r2, r0 + ldrh r1, [r0, 0x26] + strh r1, [r2, 0x1C] + ldrh r0, [r0, 0x26] + strh r0, [r2, 0x20] + movs r0, 0x20 + bl sub_801FDA8 + b _08020EAA + .align 2, 0 +_08020E2C: .4byte gUnknown_203B27C +_08020E30: + bl sub_801F1A4 + lsls r0, 24 + cmp r0, 0 + beq _08020E42 + ldr r0, _08020E60 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x15] +_08020E42: + bl sub_801F194 + ldr r1, _08020E60 + ldr r2, [r1] + str r0, [r2, 0x18] + lsls r0, 3 + adds r0, r2, r0 + ldrh r1, [r0, 0x26] + strh r1, [r2, 0x1C] + ldrh r0, [r0, 0x26] + strh r0, [r2, 0x20] + movs r0, 0x21 + bl sub_801FDA8 + b _08020EAA + .align 2, 0 +_08020E60: .4byte gUnknown_203B27C +_08020E64: + bl sub_801F1A4 + lsls r0, 24 + cmp r0, 0 + beq _08020E76 + ldr r0, _08020E94 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x15] +_08020E76: + bl sub_801F214 + ldr r0, _08020E94 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x24 + ldr r1, [r1, 0x10] + adds r1, 0x2C + bl sub_8094060 + movs r0, 0x10 + bl sub_801FDA8 + b _08020EAA + .align 2, 0 +_08020E94: .4byte gUnknown_203B27C +_08020E98: + bl sub_801F1A4 + lsls r0, 24 + cmp r0, 0 + beq _08020EAA + ldr r0, _08020EB0 + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0x15] +_08020EAA: + pop {r0} + bx r0 + .align 2, 0 +_08020EB0: .4byte gUnknown_203B27C + thumb_func_end sub_8020DCC + + thumb_func_start sub_8020EB4 +sub_8020EB4: + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + bl sub_801EF38 + ldr r4, _08020EF8 + ldr r0, [r4] + adds r0, 0xCC + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + bne _08020EE4 + ldr r0, [r4] + adds r0, 0xCC + mov r1, sp + bl sub_8013114 + ldr r1, [sp] + cmp r1, 0x1 + beq _08020EE4 + ldr r0, [r4] + str r1, [r0, 0x78] +_08020EE4: + ldr r0, [sp] + subs r0, 0x1 + cmp r0, 0x10 + bls _08020EEE + b _080210BE +_08020EEE: + lsls r0, 2 + ldr r1, _08020EFC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08020EF8: .4byte gUnknown_203B27C +_08020EFC: .4byte _08020F00 + .align 2, 0 +_08020F00: + .4byte _08021068 + .4byte _080210BE + .4byte _080210BE + .4byte _080210BE + .4byte _08020F44 + .4byte _08020F70 + .4byte _08020F8C + .4byte _08020FB8 + .4byte _08021034 + .4byte _08021074 + .4byte _080210B8 + .4byte _080210BE + .4byte _080210BE + .4byte _080210BE + .4byte _080210BE + .4byte _080210BE + .4byte _08021068 +_08020F44: + ldr r0, _08020F60 + ldr r1, [r0] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl ToggleSetMove + lsls r0, 24 + cmp r0, 0 + beq _08020F68 + ldr r0, _08020F64 + bl PlaySound + b _08021068 + .align 2, 0 +_08020F60: .4byte gUnknown_203B27C +_08020F64: .4byte 0x00000133 +_08020F68: + movs r0, 0x2 + bl PlayMenuSoundEffect + b _08021068 +_08020F70: + ldr r0, _08020F84 + bl PlaySound + ldr r0, _08020F88 + ldr r1, [r0] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl UnSetMove + b _08021068 + .align 2, 0 +_08020F84: .4byte 0x00000133 +_08020F88: .4byte gUnknown_203B27C +_08020F8C: + ldr r0, _08020FA8 + ldr r1, [r0] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl ToggleMoveEnabled + lsls r0, 24 + cmp r0, 0 + beq _08020FB0 + ldr r0, _08020FAC + bl PlaySound + b _08021068 + .align 2, 0 +_08020FA8: .4byte gUnknown_203B27C +_08020FAC: .4byte 0x00000133 +_08020FB0: + movs r0, 0x2 + bl PlayMenuSoundEffect + b _08021068 +_08020FB8: + ldr r0, _08020FD8 + ldr r0, [r0] + movs r1, 0x98 + lsls r1, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x95 + bgt _08020FDC + movs r0, 0x2 + bl PlayMenuSoundEffect + movs r0, 0x3 + bl sub_801FDA8 + b _080210BE + .align 2, 0 +_08020FD8: .4byte gTeamInventory_203B460 +_08020FDC: + ldr r4, _08020FFC + ldr r1, [r4] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl sub_8093318 + lsls r0, 24 + cmp r0, 0 + bne _08021000 + movs r0, 0x2 + bl PlayMenuSoundEffect + movs r0, 0x4 + bl sub_801FDA8 + b _080210BE + .align 2, 0 +_08020FFC: .4byte gUnknown_203B27C +_08021000: + ldr r1, [r4] + ldrb r0, [r1, 0x15] + cmp r0, 0 + bne _08021016 + movs r0, 0x1 + strb r0, [r1, 0x15] + movs r0, 0xA6 + lsls r0, 1 + bl PlaySound + b _0802101C +_08021016: + ldr r0, _0802102C + bl PlaySound +_0802101C: + ldr r0, _08021030 + ldr r1, [r0] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl TryLinkMovesAfter + b _08021068 + .align 2, 0 +_0802102C: .4byte 0x00000133 +_08021030: .4byte gUnknown_203B27C +_08021034: + ldr r4, _08021054 + ldr r1, [r4] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl sub_809333C + lsls r0, 24 + cmp r0, 0 + bne _08021058 + movs r0, 0x2 + bl PlayMenuSoundEffect + movs r0, 0x5 + bl sub_801FDA8 + b _080210BE + .align 2, 0 +_08021054: .4byte gUnknown_203B27C +_08021058: + ldr r0, _08021070 + bl PlaySound + ldr r1, [r4] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl UnlinkMovesAfter +_08021068: + movs r0, 0x1F + bl sub_801FDA8 + b _080210BE + .align 2, 0 +_08021070: .4byte 0x00000133 +_08021074: + ldr r4, _08021094 + ldr r1, [r4] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl IsAnyMoveLinked + lsls r0, 24 + cmp r0, 0 + bne _08021098 + movs r0, 0x2 + bl PlayMenuSoundEffect + movs r0, 0x6 + bl sub_801FDA8 + b _080210BE + .align 2, 0 +_08021094: .4byte gUnknown_203B27C +_08021098: + ldr r0, _080210B4 + bl PlaySound + ldr r1, [r4] + ldr r0, [r1, 0x18] + adds r1, 0x24 + bl IsNextMoveLinked + ldr r1, [r4] + strb r0, [r1, 0x14] + movs r0, 0x22 + bl sub_801FDA8 + b _080210BE + .align 2, 0 +_080210B4: .4byte 0x00000133 +_080210B8: + movs r0, 0x21 + bl sub_801FDA8 +_080210BE: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8020EB4 + + thumb_func_start sub_80210C8 +sub_80210C8: + push {lr} + bl sub_801F890 + cmp r0, 0x1 + bls _080210E0 + cmp r0, 0x3 + bhi _080210E0 + bl sub_801F8D0 + movs r0, 0x1F + bl sub_801FDA8 +_080210E0: + pop {r0} + bx r0 + thumb_func_end sub_80210C8 + + thumb_func_start sub_80210E4 +sub_80210E4: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _0802112A + ldr r0, [sp] + cmp r0, 0x10 + beq _08021108 + cmp r0, 0x10 + bgt _08021102 + cmp r0, 0x1 + beq _08021124 + b _0802112A +_08021102: + cmp r0, 0x11 + beq _08021124 + b _0802112A +_08021108: + ldr r0, _08021120 + ldr r1, [r0] + adds r0, r1, 0 + adds r0, 0x24 + ldr r1, [r1, 0x18] + bl RemoveLinkSequenceFromMoves8 + movs r0, 0x23 + bl sub_801FDA8 + b _0802112A + .align 2, 0 +_08021120: .4byte gUnknown_203B27C +_08021124: + movs r0, 0x1F + bl sub_801FDA8 +_0802112A: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_80210E4 + + thumb_func_start sub_8021130 +sub_8021130: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _08021148 + ldr r0, _08021150 + ldr r0, [r0] + ldr r0, [r0, 0x8] + bl sub_801FDA8 +_08021148: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08021150: .4byte gUnknown_203B27C + thumb_func_end sub_8021130 + + thumb_func_start sub_8021154 +sub_8021154: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0x4 + bne _0802116C + ldr r0, _08021174 + ldr r0, [r0] + ldr r0, [r0, 0x8] + bl sub_801FDA8 +_0802116C: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08021174: .4byte gUnknown_203B27C + thumb_func_end sub_8021154 + + thumb_func_start sub_8021178 +sub_8021178: + push {lr} + mov r12, r4 + ldr r4, _08021198 + add sp, r4 + mov r4, r12 + ldr r0, _0802119C + ldr r0, [r0] + ldr r1, [r0, 0x10] + mov r0, sp + bl sub_808E218 + cmp r0, 0 + beq _080211A0 + movs r0, 0 + b _080211A2 + .align 2, 0 +_08021198: .4byte 0xfffffcc0 +_0802119C: .4byte gUnknown_203B27C +_080211A0: + movs r0, 0x1 +_080211A2: + movs r3, 0xD0 + lsls r3, 2 + add sp, r3 + pop {r1} + bx r1 + thumb_func_end sub_8021178 + + thumb_func_start sub_80211AC +sub_80211AC: + push {r4-r6,lr} + adds r4, r0, 0 + adds r6, r1, 0 + bl sub_8021700 + lsls r0, 24 + cmp r0, 0 + beq _080211C0 + movs r0, 0 + b _08021258 +_080211C0: + ldr r5, _08021260 + movs r0, 0xE0 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r5] + str r4, [r0, 0x3C] + str r6, [r0, 0x74] + lsls r1, r6, 1 + adds r1, r6 + lsls r1, 3 + adds r1, 0x7C + adds r1, r0, r1 + str r1, [r0, 0x78] + adds r0, 0x7C + bl sub_8006518 + ldr r1, [r5] + ldr r2, [r1, 0x74] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r1, 0x7C + ldr r0, _08021264 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r0, [r5] + ldr r1, [r0, 0x78] + adds r0, 0xDC + str r0, [r1, 0x14] + bl ResetUnusedInputStruct + ldr r0, [r5] + adds r0, 0x7C + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r4, [r5] + adds r4, 0x40 + bl sub_8021664 + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0xA + adds r3, r6, 0 + bl sub_8013818 + ldr r0, _08021268 + ldr r2, [r5] + ldr r1, [r0] + ldr r0, [r2, 0x3C] + cmp r1, r0 + bne _0802124E + ldr r0, _0802126C + ldrh r1, [r0] + adds r0, r2, 0 + adds r0, 0x58 + strh r1, [r0] + ldr r0, _08021270 + ldrh r0, [r0] + adds r1, r2, 0 + adds r1, 0x5E + strh r0, [r1] + adds r0, r2, 0 + adds r0, 0x40 + bl sub_8013984 +_0802124E: + bl sub_8021410 + bl sub_8021494 + movs r0, 0x1 +_08021258: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08021260: .4byte gUnknown_203B280 +_08021264: .4byte gUnknown_80DC47C +_08021268: .4byte gUnknown_203B284 +_0802126C: .4byte gUnknown_203B288 +_08021270: .4byte gUnknown_203B28A + thumb_func_end sub_80211AC + + thumb_func_start sub_8021274 +sub_8021274: + push {r4,lr} + lsls r0, 24 + cmp r0, 0 + bne _08021290 + ldr r0, _0802128C + ldr r0, [r0] + adds r0, 0x40 + bl sub_8013660 + movs r0, 0 + b _08021326 + .align 2, 0 +_0802128C: .4byte gUnknown_203B280 +_08021290: + ldr r4, _080212A8 + ldr r0, [r4] + adds r0, 0x40 + bl GetKeyPress + cmp r0, 0x2 + beq _080212B2 + cmp r0, 0x2 + bgt _080212AC + cmp r0, 0x1 + beq _080212BC + b _08021300 + .align 2, 0 +_080212A8: .4byte gUnknown_203B280 +_080212AC: + cmp r0, 0x4 + beq _080212F6 + b _08021300 +_080212B2: + movs r0, 0x1 + bl PlayMenuSoundEffect + movs r0, 0x2 + b _08021326 +_080212BC: + ldr r0, [r4] + ldr r0, [r0, 0x3C] + cmp r0, 0x2 + bne _080212EC + bl sub_802132C + lsls r0, 24 + lsrs r0, 24 + bl GetFriendAreaPrice + ldr r1, _080212E8 + ldr r1, [r1] + movs r2, 0x98 + lsls r2, 2 + adds r1, r2 + ldr r1, [r1] + cmp r0, r1 + ble _080212EC + movs r0, 0x2 + bl PlayMenuSoundEffect + b _080212F2 + .align 2, 0 +_080212E8: .4byte gTeamInventory_203B460 +_080212EC: + movs r0, 0 + bl PlayMenuSoundEffect +_080212F2: + movs r0, 0x3 + b _08021326 +_080212F6: + movs r0, 0x4 + bl PlayMenuSoundEffect + movs r0, 0x4 + b _08021326 +_08021300: + ldr r0, _08021318 + ldr r0, [r0] + adds r0, 0x40 + movs r1, 0x1 + bl sub_80138B8 + lsls r0, 24 + cmp r0, 0 + bne _0802131C + movs r0, 0 + b _08021326 + .align 2, 0 +_08021318: .4byte gUnknown_203B280 +_0802131C: + bl sub_8021410 + bl sub_8021494 + movs r0, 0x1 +_08021326: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8021274 + + thumb_func_start sub_802132C +sub_802132C: + ldr r0, _08021350 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x5E + movs r3, 0 + ldrsh r1, [r0, r3] + subs r0, 0x2 + movs r3, 0 + ldrsh r0, [r0, r3] + muls r0, r1 + adds r1, r2, 0 + adds r1, 0x58 + movs r3, 0 + ldrsh r1, [r1, r3] + adds r0, r1 + adds r0, r2, r0 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08021350: .4byte gUnknown_203B280 + thumb_func_end sub_802132C + + thumb_func_start sub_8021354 +sub_8021354: + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl ResetUnusedInputStruct + ldr r5, _0802139C + ldr r0, [r5] + adds r0, 0x7C + movs r1, 0 + movs r2, 0 + bl sub_800641C + bl sub_8021664 + adds r1, r0, 0 + ldr r0, [r5] + adds r2, r0, 0 + adds r2, 0x62 + strh r1, [r2] + adds r0, 0x40 + bl sub_8013984 + bl sub_8021410 + bl sub_8021494 + cmp r4, 0 + beq _08021396 + ldr r0, [r5] + adds r0, 0x40 + bl AddMenuCursorSprite +_08021396: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802139C: .4byte gUnknown_203B280 + thumb_func_end sub_8021354 + + thumb_func_start sub_80213A0 +sub_80213A0: + push {r4,r5,lr} + ldr r4, _080213FC + ldr r2, [r4] + cmp r2, 0 + beq _080213F4 + ldr r1, _08021400 + ldr r0, [r2, 0x3C] + str r0, [r1] + ldr r1, _08021404 + adds r0, r2, 0 + adds r0, 0x58 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _08021408 + adds r0, r2, 0 + adds r0, 0x5E + ldrh r0, [r0] + strh r0, [r1] + ldr r0, [r2, 0x74] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, r2, r1 + adds r1, 0x7C + ldr r0, _0802140C + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x7C + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_080213F4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080213FC: .4byte gUnknown_203B280 +_08021400: .4byte gUnknown_203B284 +_08021404: .4byte gUnknown_203B288 +_08021408: .4byte gUnknown_203B28A +_0802140C: .4byte gUnknown_80DC464 + thumb_func_end sub_80213A0 + + thumb_func_start sub_8021410 +sub_8021410: + push {r4,lr} + ldr r4, _08021490 + ldr r0, [r4] + adds r0, 0xDC + movs r2, 0 + movs r1, 0x1 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xDD + strb r2, [r0] + ldr r0, [r4] + adds r0, 0xDE + movs r1, 0xC + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xDF + strb r2, [r0] + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x7C + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, [r4] + adds r0, 0x5A + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0xC + bl sub_80095E4 + adds r0, 0x2 + lsls r0, 16 + ldr r2, [r4] + ldr r3, [r2, 0x74] + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 3 + adds r1, r2, r1 + adds r1, 0x8A + asrs r3, r0, 16 + lsrs r0, 16 + strh r0, [r1] + ldr r1, [r2, 0x74] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r2, r0 + adds r3, 0x2 + adds r2, 0x8C + strh r3, [r2] + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x7C + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08021490: .4byte gUnknown_203B280 + thumb_func_end sub_8021410 + + thumb_func_start sub_8021494 +sub_8021494: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xA8 + ldr r4, _08021568 + ldr r0, [r4] + ldr r0, [r0, 0x74] + bl sub_8008C54 + ldr r0, [r4] + ldr r0, [r0, 0x74] + bl sub_80073B8 + ldr r2, _0802156C + ldr r0, [r4] + ldr r3, [r0, 0x74] + movs r0, 0 + str r0, [sp] + movs r0, 0xA + movs r1, 0 + bl xxx_call_draw_string + ldr r3, [r4] + adds r0, r3, 0 + adds r0, 0xDE + ldrb r0, [r0] + lsls r0, 3 + adds r0, 0x4 + adds r1, r3, 0 + adds r1, 0x5E + movs r5, 0 + ldrsh r2, [r1, r5] + adds r2, 0x1 + movs r1, 0x7 + str r1, [sp] + ldr r1, [r3, 0x74] + str r1, [sp, 0x4] + movs r1, 0 + movs r3, 0x1 + bl sub_8012BC4 + movs r0, 0 + mov r9, r0 + ldr r0, [r4] + adds r0, 0x5A + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r9, r0 + blt _080214FC + b _08021646 +_080214FC: + mov r8, r4 + add r2, sp, 0x58 + mov r10, r2 +_08021502: + mov r3, r8 + ldr r2, [r3] + adds r0, r2, 0 + adds r0, 0x5E + movs r5, 0 + ldrsh r1, [r0, r5] + subs r0, 0x2 + movs r3, 0 + ldrsh r0, [r0, r3] + muls r0, r1 + add r0, r9 + adds r0, r2, r0 + ldrb r5, [r0] + adds r7, r5, 0 + ldr r6, [r2, 0x3C] + cmp r6, 0x2 + bne _0802159C + add r0, sp, 0x8 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_8092578 + adds r0, r5, 0 + bl GetFriendAreaPrice + ldr r1, _08021570 + ldr r1, [r1] + movs r5, 0x98 + lsls r5, 2 + adds r1, r5 + ldr r1, [r1] + cmp r0, r1 + bgt _08021574 + mov r1, r8 + ldr r0, [r1] + adds r0, 0x40 + mov r1, r9 + bl sub_8013800 + adds r1, r0, 0 + mov r2, r8 + ldr r0, [r2] + ldr r3, [r0, 0x74] + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + add r2, sp, 0x8 + bl xxx_call_draw_string + b _08021632 + .align 2, 0 +_08021568: .4byte gUnknown_203B280 +_0802156C: .4byte gUnknown_80DC494 +_08021570: .4byte gTeamInventory_203B460 +_08021574: + mov r0, r10 + ldr r1, _08021598 + add r2, sp, 0x8 + bl sprintfStatic + mov r3, r8 + ldr r0, [r3] + adds r0, 0x40 + mov r1, r9 + bl sub_8013800 + adds r1, r0, 0 + mov r5, r8 + ldr r0, [r5] + ldr r3, [r0, 0x74] + movs r0, 0 + str r0, [sp] + b _080215FE + .align 2, 0 +_08021598: .4byte gUnknown_80DC4A4 +_0802159C: + cmp r6, 0 + bne _0802160C + ldr r0, _080215D4 + ldr r0, [r0] + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080215D8 + adds r0, r2, 0 + adds r0, 0x40 + mov r1, r9 + bl sub_8013800 + adds r4, r0, 0 + adds r0, r5, 0 + bl GetFriendAreaName + adds r2, r0, 0 + mov r1, r8 + ldr r0, [r1] + ldr r3, [r0, 0x74] + str r6, [sp] + movs r0, 0x8 + adds r1, r4, 0 + bl xxx_call_draw_string + b _08021632 + .align 2, 0 +_080215D4: .4byte gFriendAreas +_080215D8: + adds r0, r5, 0 + bl GetFriendAreaName + adds r2, r0, 0 + mov r0, r10 + ldr r1, _08021608 + bl sprintfStatic + mov r2, r8 + ldr r0, [r2] + adds r0, 0x40 + mov r1, r9 + bl sub_8013800 + adds r1, r0, 0 + mov r3, r8 + ldr r0, [r3] + ldr r3, [r0, 0x74] + str r6, [sp] +_080215FE: + movs r0, 0x8 + mov r2, r10 + bl xxx_call_draw_string + b _08021632 + .align 2, 0 +_08021608: .4byte gUnknown_80DC4AC +_0802160C: + adds r0, r2, 0 + adds r0, 0x40 + mov r1, r9 + bl sub_8013800 + adds r4, r0, 0 + adds r0, r7, 0 + bl GetFriendAreaName + adds r2, r0, 0 + mov r5, r8 + ldr r0, [r5] + ldr r3, [r0, 0x74] + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + adds r1, r4, 0 + bl xxx_call_draw_string +_08021632: + movs r0, 0x1 + add r9, r0 + mov r1, r8 + ldr r0, [r1] + adds r0, 0x5A + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r9, r0 + bge _08021646 + b _08021502 +_08021646: + ldr r0, _08021660 + ldr r0, [r0] + ldr r0, [r0, 0x74] + bl sub_80073E0 + add sp, 0xA8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08021660: .4byte gUnknown_203B280 + thumb_func_end sub_8021494 + + thumb_func_start sub_8021664 +sub_8021664: + push {r4-r6,lr} + movs r5, 0 + ldr r1, _0802167C + ldr r0, [r1] + ldr r0, [r0, 0x3C] + cmp r0, 0x1 + beq _08021692 + cmp r0, 0x1 + bcc _08021680 + cmp r0, 0x2 + beq _080216B4 + b _080216F2 + .align 2, 0 +_0802167C: .4byte gUnknown_203B280 +_08021680: + movs r4, 0x1 +_08021682: + ldr r0, [r1] + adds r0, r5 + strb r4, [r0] + adds r5, 0x1 + adds r4, 0x1 + cmp r4, 0x39 + ble _08021682 + b _080216F2 +_08021692: + movs r4, 0x1 + ldr r2, _080216B0 +_08021696: + ldr r0, [r2] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _080216A8 + ldr r0, [r1] + adds r0, r5 + strb r4, [r0] + adds r5, 0x1 +_080216A8: + adds r4, 0x1 + cmp r4, 0x39 + ble _08021696 + b _080216F2 + .align 2, 0 +_080216B0: .4byte gFriendAreas +_080216B4: + movs r4, 0x1 + adds r6, r1, 0 +_080216B8: + ldr r0, _080216FC + ldr r0, [r0] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _080216EC + lsls r0, r4, 24 + lsrs r0, 24 + bl GetFriendAreaUnlockCondition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080216E4 + cmp r0, 0x1 + bne _080216EC + movs r0, 0x6 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080216EC +_080216E4: + ldr r0, [r6] + adds r0, r5 + strb r4, [r0] + adds r5, 0x1 +_080216EC: + adds r4, 0x1 + cmp r4, 0x39 + ble _080216B8 +_080216F2: + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080216FC: .4byte gFriendAreas + thumb_func_end sub_8021664 + + thumb_func_start sub_8021700 +sub_8021700: + push {r4,lr} + cmp r0, 0x1 + beq _08021710 + cmp r0, 0x1 + bcc _08021754 + cmp r0, 0x2 + beq _0802172C + b _0802176A +_08021710: + movs r4, 0x1 + ldr r0, _08021728 + ldr r1, [r0] +_08021716: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _08021754 + adds r4, 0x1 + cmp r4, 0x39 + ble _08021716 + b _0802176A + .align 2, 0 +_08021728: .4byte gFriendAreas +_0802172C: + movs r4, 0x1 +_0802172E: + ldr r0, _08021750 + ldr r0, [r0] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _08021764 + lsls r0, r4, 24 + lsrs r0, 24 + bl GetFriendAreaUnlockCondition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08021754 + cmp r0, 0x1 + beq _08021758 + b _08021764 + .align 2, 0 +_08021750: .4byte gFriendAreas +_08021754: + movs r0, 0 + b _0802176C +_08021758: + movs r0, 0x6 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + bne _08021754 +_08021764: + adds r4, 0x1 + cmp r4, 0x39 + ble _0802172E +_0802176A: + movs r0, 0x1 +_0802176C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8021700 + + thumb_func_start sub_8021774 +sub_8021774: + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r4, r0, 0 + adds r5, r1, 0 + mov r8, r2 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _080217E4 + movs r0, 0xE0 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r6] + strb r4, [r0, 0xC] + ldr r0, [r6] + strb r5, [r0, 0xD] + ldr r0, [r6] + bl sub_801317C + bl sub_8021A60 + ldr r0, [r6] + mov r1, r8 + str r1, [r0, 0x74] + lsls r1, 1 + add r1, r8 + lsls r1, 3 + adds r1, 0x7C + adds r1, r0, r1 + str r1, [r0, 0x78] + adds r0, 0x7C + bl sub_8006518 + ldr r1, [r6] + ldr r2, [r1, 0x74] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r1, 0x7C + ldr r0, _080217E8 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + bl sub_8021820 + movs r0, 0x1 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080217E4: .4byte gUnknown_203B28C +_080217E8: .4byte gUnknown_80DC4D8 + thumb_func_end sub_8021774 + + thumb_func_start sub_80217EC +sub_80217EC: + push {lr} + ldr r0, _0802180C + ldr r0, [r0] + ldr r1, [r0, 0x74] + bl sub_8012A64 + cmp r0, 0x1 + beq _08021810 + cmp r0, 0x2 + bne _0802181A + movs r0, 0x1 + bl PlayMenuSoundEffect + movs r0, 0x2 + b _0802181C + .align 2, 0 +_0802180C: .4byte gUnknown_203B28C +_08021810: + movs r0, 0 + bl PlayMenuSoundEffect + movs r0, 0x3 + b _0802181C +_0802181A: + movs r0, 0 +_0802181C: + pop {r1} + bx r1 + thumb_func_end sub_80217EC + + thumb_func_start sub_8021820 +sub_8021820: + push {lr} + bl sub_8021878 + bl sub_8021894 + pop {r0} + bx r0 + thumb_func_end sub_8021820 + + thumb_func_start sub_8021830 +sub_8021830: + push {r4,r5,lr} + ldr r4, _08021870 + ldr r2, [r4] + cmp r2, 0 + beq _0802186A + ldr r0, [r2, 0x74] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, r2, r1 + adds r1, 0x7C + ldr r0, _08021874 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x7C + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0802186A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08021870: .4byte gUnknown_203B28C +_08021874: .4byte gUnknown_80DC4BC + thumb_func_end sub_8021830 + + thumb_func_start sub_8021878 +sub_8021878: + push {lr} + bl ResetUnusedInputStruct + ldr r0, _08021890 + ldr r0, [r0] + adds r0, 0x7C + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + pop {r0} + bx r0 + .align 2, 0 +_08021890: .4byte gUnknown_203B28C + thumb_func_end sub_8021878 + + thumb_func_start sub_8021894 +sub_8021894: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x168 + ldr r4, _080218F8 + ldr r0, [r4] + ldr r0, [r0, 0x74] + bl sub_80073B8 + ldr r0, [r4] + ldrb r1, [r0, 0xC] + add r0, sp, 0x4 + movs r2, 0 + bl sub_8092578 + ldr r0, [r4] + ldr r3, [r0, 0x74] + movs r5, 0 + str r5, [sp] + movs r0, 0x14 + movs r1, 0 + add r2, sp, 0x4 + bl xxx_call_draw_string + ldr r0, [r4] + ldrb r0, [r0, 0xC] + bl GetFriendAreaDescription + adds r2, r0, 0 + ldr r0, [r4] + ldr r3, [r0, 0x74] + str r5, [sp] + movs r0, 0xA + movs r1, 0x14 + bl xxx_call_draw_string + ldr r4, [r4] + ldrb r0, [r4, 0xD] + cmp r0, 0 + beq _08021900 + ldr r2, _080218FC + ldr r3, [r4, 0x74] + str r5, [sp] + movs r0, 0x20 + movs r1, 0x3C + bl xxx_call_draw_string + b _0802190E + .align 2, 0 +_080218F8: .4byte gUnknown_203B28C +_080218FC: .4byte gUnknown_80DC4F0 +_08021900: + ldr r2, _0802193C + ldr r3, [r4, 0x74] + str r0, [sp] + movs r0, 0x20 + movs r1, 0x3C + bl xxx_call_draw_string +_0802190E: + ldr r4, _08021940 + ldr r0, [r4] + ldr r0, [r0, 0x74] + movs r5, 0x4 + str r5, [sp] + movs r1, 0x4 + movs r2, 0x40 + movs r3, 0x14 + bl sub_800792C + ldr r4, [r4] + ldrb r0, [r4, 0xD] + cmp r0, 0 + beq _08021944 + ldr r0, [r4, 0x74] + str r5, [sp] + movs r1, 0xB8 + movs r2, 0x40 + movs r3, 0x14 + bl sub_800792C + b _08021952 + .align 2, 0 +_0802193C: .4byte gUnknown_80DC518 +_08021940: .4byte gUnknown_203B28C +_08021944: + ldr r0, [r4, 0x74] + str r5, [sp] + movs r1, 0x5E + movs r2, 0x40 + movs r3, 0x6E + bl sub_800792C +_08021952: + ldr r5, _080219E8 + ldr r0, [r5] + ldr r0, [r0, 0x74] + movs r4, 0x4 + str r4, [sp] + movs r1, 0x4 + movs r2, 0x82 + movs r3, 0xC8 + bl sub_800792C + ldr r0, [r5] + ldr r0, [r0, 0x74] + str r4, [sp] + movs r1, 0x3 + movs r2, 0x40 + movs r3, 0x43 + bl sub_8007A78 + ldr r0, [r5] + ldr r0, [r0, 0x74] + str r4, [sp] + movs r1, 0xCC + movs r2, 0x40 + movs r3, 0x43 + bl sub_8007A78 + movs r6, 0 + ldr r0, [r5] + ldr r0, [r0, 0x70] + cmp r6, r0 + bge _08021A40 + add r7, sp, 0x104 + mov r8, r5 + mov r9, r6 +_08021996: + adds r0, r6, 0 + movs r1, 0x3 + bl __modsi3 + lsls r1, r0, 6 + subs r1, r0 + adds r5, r1, 0x7 + adds r0, r6, 0 + movs r1, 0x3 + bl __divsi3 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r4, r1, 0 + adds r4, 0x47 + mov r1, r8 + ldr r0, [r1] + lsls r1, r6, 1 + adds r0, 0xE + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r7, 0 + bl sub_808D930 + mov r0, r8 + ldr r3, [r0] + lsls r1, r6, 2 + adds r0, r3, 0 + adds r0, 0x30 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + beq _08021A04 + cmp r0, 0x1 + bcc _080219EC + cmp r0, 0x2 + beq _08021A16 + b _08021A34 + .align 2, 0 +_080219E8: .4byte gUnknown_203B28C +_080219EC: + ldr r0, _08021A00 + ldr r2, [r0] + ldr r3, [r3, 0x74] + mov r1, r9 + str r1, [sp] + adds r0, r5, 0 + adds r1, r4, 0 + bl xxx_call_draw_string + b _08021A34 + .align 2, 0 +_08021A00: .4byte gUnknown_80D49BC +_08021A04: + ldr r3, [r3, 0x74] + mov r2, r9 + str r2, [sp] + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r7, 0 + bl xxx_call_draw_string + b _08021A34 +_08021A16: + add r0, sp, 0x4 + ldr r1, _08021A58 + adds r2, r7, 0 + bl sprintfStatic + mov r1, r8 + ldr r0, [r1] + ldr r3, [r0, 0x74] + mov r2, r9 + str r2, [sp] + adds r0, r5, 0 + adds r1, r4, 0 + add r2, sp, 0x4 + bl xxx_call_draw_string +_08021A34: + adds r6, 0x1 + mov r1, r8 + ldr r0, [r1] + ldr r0, [r0, 0x70] + cmp r6, r0 + blt _08021996 +_08021A40: + ldr r0, _08021A5C + ldr r0, [r0] + ldr r0, [r0, 0x74] + bl sub_80073E0 + add sp, 0x168 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08021A58: .4byte gUnknown_80DC524 +_08021A5C: .4byte gUnknown_203B28C + thumb_func_end sub_8021894 + + thumb_func_start sub_8021A60 +sub_8021A60: + push {r4-r7,lr} + ldr r2, _08021B4C + ldr r1, [r2] + movs r0, 0 + str r0, [r1, 0x70] + movs r6, 0 + adds r4, r2, 0 + movs r3, 0 +_08021A70: + ldr r1, [r4] + lsls r2, r6, 1 + adds r0, r1, 0 + adds r0, 0xE + adds r0, r2 + strh r3, [r0] + lsls r0, r6, 2 + adds r1, 0x30 + adds r1, r0 + str r3, [r1] + adds r6, 0x1 + cmp r6, 0xF + ble _08021A70 + movs r6, 0 + ldr r7, _08021B4C +_08021A8E: + lsls r0, r6, 16 + asrs r5, r0, 16 + ldr r4, [r7] + adds r0, r5, 0 + bl GetFriendArea + ldrb r1, [r4, 0xC] + lsls r0, 24 + lsrs r0, 24 + cmp r1, r0 + bne _08021AC4 + adds r0, r5, 0 + bl GetBaseSpeciesNoUnown + lsls r0, 16 + asrs r0, 16 + cmp r5, r0 + bne _08021AC4 + ldr r3, [r7] + ldr r1, [r3, 0x70] + lsls r2, r1, 1 + adds r0, r3, 0 + adds r0, 0xE + adds r0, r2 + strh r5, [r0] + adds r1, 0x1 + str r1, [r3, 0x70] +_08021AC4: + adds r6, 0x1 + ldr r0, _08021B50 + cmp r6, r0 + ble _08021A8E + movs r6, 0 +_08021ACE: + lsls r0, r6, 16 + asrs r4, r0, 16 + adds r0, r4, 0 + bl sub_8098134 + lsls r0, 24 + cmp r0, 0 + beq _08021AFC + adds r0, r4, 0 + bl sub_8021B58 + adds r2, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _08021AFC + ldr r0, _08021B4C + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, 0x30 + adds r1, r0 + movs r0, 0x1 + str r0, [r1] +_08021AFC: + adds r6, 0x1 + ldr r0, _08021B50 + cmp r6, r0 + ble _08021ACE + movs r6, 0 + ldr r4, _08021B54 +_08021B08: + movs r0, 0x58 + adds r1, r6, 0 + muls r1, r0 + ldr r0, [r4] + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08021B3C + movs r1, 0x8 + ldrsh r0, [r2, r1] + bl sub_8021B58 + adds r2, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _08021B3C + ldr r0, _08021B4C + ldr r1, [r0] + lsls r0, r2, 2 + adds r1, 0x30 + adds r1, r0 + movs r0, 0x2 + str r0, [r1] +_08021B3C: + adds r6, 0x1 + movs r0, 0xCE + lsls r0, 1 + cmp r6, r0 + ble _08021B08 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08021B4C: .4byte gUnknown_203B28C +_08021B50: .4byte 0x000001a7 +_08021B54: .4byte gRecruitedPokemonRef + thumb_func_end sub_8021A60 + + thumb_func_start sub_8021B58 +sub_8021B58: + push {r4,r5,lr} + lsls r0, 16 + asrs r0, 16 + bl GetBaseSpeciesNoUnown + lsls r0, 16 + asrs r4, r0, 16 + movs r2, 0 + ldr r0, _08021B84 + ldr r0, [r0] + ldr r1, [r0, 0x70] + cmp r2, r1 + bge _08021B90 + adds r3, r1, 0 + adds r1, r0, 0 + adds r1, 0xE +_08021B78: + movs r5, 0 + ldrsh r0, [r1, r5] + cmp r4, r0 + bne _08021B88 + adds r0, r2, 0 + b _08021B94 + .align 2, 0 +_08021B84: .4byte gUnknown_203B28C +_08021B88: + adds r1, 0x2 + adds r2, 0x1 + cmp r2, r3 + blt _08021B78 +_08021B90: + movs r0, 0x1 + negs r0, r0 +_08021B94: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8021B58 + + thumb_func_start CreateWigglytuffShop +CreateWigglytuffShop: + push {r4-r6,lr} + adds r4, r0, 0 + bl ResetUnusedInputStruct + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r5, _08021BF8 + movs r0, 0x9C + lsls r0, 1 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r5] + movs r6, 0 + str r6, [r0, 0x14] + str r6, [r0, 0x18] + str r4, [r0] + ldr r0, _08021BFC + movs r1, 0x28 + bl CopyYellowMonsterNametoBuffer + ldr r4, _08021C00 + adds r0, r4, 0 + movs r1, 0x28 + bl CopyYellowMonsterNametoBuffer + movs r0, 0x28 + bl GetMonSpecies + adds r1, r0, 0 + subs r4, 0x50 + adds r0, r4, 0 + bl strcpy + ldr r5, [r5] + ldr r0, [r5] + cmp r0, 0x1 + bne _08021C04 + adds r0, r5, 0 + adds r0, 0xCC + str r6, [r0] + b _08021C0E + .align 2, 0 +_08021BF8: .4byte gUnknown_203B290 +_08021BFC: .4byte gUnknown_202E5D8 +_08021C00: .4byte gUnknown_202E1C8 +_08021C04: + adds r1, r5, 0 + adds r1, 0xCC + adds r0, r5, 0 + adds r0, 0xBC + str r0, [r1] +_08021C0E: + movs r0, 0x28 + bl GetDialogueSpriteDataPtr + ldr r2, _08021C58 + ldr r3, [r2] + adds r1, r3, 0 + adds r1, 0xBC + str r0, [r1] + adds r1, 0x4 + ldr r0, [r0, 0x4] + str r0, [r1] + adds r0, r3, 0 + adds r0, 0xC8 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xC9 + strb r1, [r0] + ldr r0, [r2] + adds r0, 0xCA + strb r1, [r0] + ldr r1, [r2] + adds r2, r1, 0 + adds r2, 0xC4 + movs r0, 0x2 + strh r0, [r2] + adds r1, 0xC6 + movs r0, 0x8 + strh r0, [r1] + movs r0, 0 + bl sub_8021D44 + movs r0, 0x1 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08021C58: .4byte gUnknown_203B290 + thumb_func_end CreateWigglytuffShop + + thumb_func_start sub_8021C5C +sub_8021C5C: + push {lr} + ldr r0, _08021C74 + ldr r0, [r0] + ldr r0, [r0, 0x4] + cmp r0, 0x17 + bhi _08021D10 + lsls r0, 2 + ldr r1, _08021C78 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08021C74: .4byte gUnknown_203B290 +_08021C78: .4byte _08021C7C + .align 2, 0 +_08021C7C: + .4byte _08021CDC + .4byte _08021CDC + .4byte _08021D10 + .4byte _08021D10 + .4byte _08021D0C + .4byte _08021D10 + .4byte _08021D10 + .4byte _08021D10 + .4byte _08021D10 + .4byte _08021CE2 + .4byte _08021CE2 + .4byte _08021CE8 + .4byte _08021D10 + .4byte _08021CF4 + .4byte _08021CFA + .4byte _08021D10 + .4byte _08021D00 + .4byte _08021CEE + .4byte _08021D10 + .4byte _08021D10 + .4byte _08021D10 + .4byte _08021D10 + .4byte _08021D06 + .4byte _08021D06 +_08021CDC: + bl sub_8022460 + b _08021D14 +_08021CE2: + bl sub_8022538 + b _08021D14 +_08021CE8: + bl sub_80225C8 + b _08021D14 +_08021CEE: + bl sub_80224D4 + b _08021D14 +_08021CF4: + bl sub_80226F0 + b _08021D14 +_08021CFA: + bl sub_8022790 + b _08021D14 +_08021D00: + bl sub_8022668 + b _08021D14 +_08021D06: + bl sub_8022684 + b _08021D14 +_08021D0C: + movs r0, 0x3 + b _08021D16 +_08021D10: + bl sub_80226CC +_08021D14: + movs r0, 0 +_08021D16: + pop {r1} + bx r1 + thumb_func_end sub_8021C5C + + thumb_func_start sub_8021D1C +sub_8021D1C: + push {r4,lr} + ldr r4, _08021D40 + ldr r0, [r4] + cmp r0, 0 + beq _08021D38 + adds r0, 0xBC + ldr r0, [r0] + bl CloseFile + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_08021D38: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08021D40: .4byte gUnknown_203B290 + thumb_func_end sub_8021D1C + + thumb_func_start sub_8021D44 +sub_8021D44: + push {lr} + ldr r1, _08021D58 + ldr r1, [r1] + str r0, [r1, 0x4] + bl sub_8021D5C + bl UpdateWigglytuffDialogue + pop {r0} + bx r0 + .align 2, 0 +_08021D58: .4byte gUnknown_203B290 + thumb_func_end sub_8021D44 + + thumb_func_start sub_8021D5C +sub_8021D5C: + push {r4-r7,lr} + ldr r4, _08021D7C + ldr r0, [r4] + adds r0, 0xD0 + bl sub_8006518 + ldr r1, [r4] + ldr r0, [r1, 0x4] + cmp r0, 0x9 + blt _08021DC8 + cmp r0, 0xA + ble _08021D80 + cmp r0, 0xB + beq _08021DB0 + b _08021DC8 + .align 2, 0 +_08021D7C: .4byte gUnknown_203B290 +_08021D80: + ldr r2, _08021DA8 + adds r1, 0xD0 + adds r0, r2, 0 + ldm r0!, {r3,r5,r6} + stm r1!, {r3,r5,r6} + ldm r0!, {r3,r5,r7} + stm r1!, {r3,r5,r7} + ldr r0, [r4] + movs r6, 0x80 + lsls r6, 1 + adds r0, r6 + ldm r2!, {r1,r3,r7} + stm r0!, {r1,r3,r7} + ldm r2!, {r5-r7} + stm r0!, {r5-r7} + ldr r1, [r4] + adds r1, 0xE8 + ldr r0, _08021DAC + b _08021DB8 + .align 2, 0 +_08021DA8: .4byte gUnknown_80DC534 +_08021DAC: .4byte gUnknown_80DC564 +_08021DB0: + movs r0, 0x80 + lsls r0, 1 + adds r1, r0 + ldr r0, _08021DC4 +_08021DB8: + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + b _08021DEC + .align 2, 0 +_08021DC4: .4byte gUnknown_80DC54C +_08021DC8: + ldr r0, _08021E04 + mov r12, r0 + ldr r4, _08021E08 + movs r3, 0 + movs r2, 0x3 +_08021DD2: + mov r5, r12 + ldr r1, [r5] + adds r1, r3 + adds r1, 0xD0 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _08021DD2 +_08021DEC: + bl ResetUnusedInputStruct + ldr r0, _08021E04 + ldr r0, [r0] + adds r0, 0xD0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08021E04: .4byte gUnknown_203B290 +_08021E08: .4byte gUnknown_80DC534 + thumb_func_end sub_8021D5C + + thumb_func_start UpdateWigglytuffDialogue +UpdateWigglytuffDialogue: + push {r4,lr} + sub sp, 0x20 + ldr r1, _08021E28 + ldr r0, [r1] + ldr r0, [r0, 0x4] + adds r4, r1, 0 + cmp r0, 0x1C + bls _08021E1E + b _080222B6 +_08021E1E: + lsls r0, 2 + ldr r1, _08021E2C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08021E28: .4byte gUnknown_203B290 +_08021E2C: .4byte _08021E30 + .align 2, 0 +_08021E30: + .4byte _08021EA4 + .4byte _08021EC0 + .4byte _08021F38 + .4byte _08021F50 + .4byte _080222B6 + .4byte _08021F78 + .4byte _08021F90 + .4byte _08021F08 + .4byte _08021F20 + .4byte _08021FD8 + .4byte _08021FE2 + .4byte _08021FF0 + .4byte _0802208E + .4byte _080220B8 + .4byte _080220D8 + .4byte _080220EA + .4byte _08022080 + .4byte _08022024 + .4byte _08021FA8 + .4byte _08021FC0 + .4byte _08022138 + .4byte _08022150 + .4byte _08022168 + .4byte _08022176 + .4byte _0802217E + .4byte _08022238 + .4byte _08022250 + .4byte _08022268 + .4byte _08022294 +_08021EA4: + bl sub_80222C8 + ldr r2, _08021EB8 + ldr r0, _08021EBC + ldr r4, [r0] + ldr r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + b _08021ED4 + .align 2, 0 +_08021EB8: .4byte gWigglytuffDialogue +_08021EBC: .4byte gUnknown_203B290 +_08021EC0: + bl sub_80222C8 + ldr r2, _08021F00 + ldr r0, _08021F04 + ldr r4, [r0] + ldr r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x4 +_08021ED4: + adds r0, r2 + ldr r0, [r0] + ldr r2, [r4, 0x14] + adds r3, r4, 0 + adds r3, 0x1C + adds r1, r4, 0 + adds r1, 0x5C + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0 + str r1, [sp, 0x8] + adds r1, r4, 0 + adds r1, 0xCC + ldr r1, [r1] + str r1, [sp, 0xC] + movs r1, 0xC + str r1, [sp, 0x10] + movs r1, 0 + bl sub_8014248 + b _080222B6 + .align 2, 0 +_08021F00: .4byte gWigglytuffDialogue +_08021F04: .4byte gUnknown_203B290 +_08021F08: + ldr r3, [r4] + movs r0, 0x9 + str r0, [r3, 0x8] + ldr r2, _08021F1C + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0xC + b _0802227A + .align 2, 0 +_08021F1C: .4byte gWigglytuffDialogue +_08021F20: + ldr r3, [r4] + movs r0, 0xA + str r0, [r3, 0x8] + ldr r2, _08021F34 + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x10 + b _0802227A + .align 2, 0 +_08021F34: .4byte gWigglytuffDialogue +_08021F38: + ldr r3, [r4] + movs r0, 0x1 + str r0, [r3, 0x8] + ldr r2, _08021F4C + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x4C + b _0802227A + .align 2, 0 +_08021F4C: .4byte gWigglytuffDialogue +_08021F50: + ldr r3, [r4] + movs r0, 0x4 + str r0, [r3, 0x8] + ldr r2, _08021F70 + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x8 + adds r0, r2 + ldr r0, [r0] + adds r3, 0xCC + ldr r2, [r3] + ldr r3, _08021F74 + b _08022284 + .align 2, 0 +_08021F70: .4byte gWigglytuffDialogue +_08021F74: .4byte 0x0000030d +_08021F78: + ldr r3, [r4] + movs r0, 0x3 + str r0, [r3, 0x8] + ldr r2, _08021F8C + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x20 + b _0802227A + .align 2, 0 +_08021F8C: .4byte gWigglytuffDialogue +_08021F90: + ldr r3, [r4] + movs r0, 0xA + str r0, [r3, 0x8] + ldr r2, _08021FA4 + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x24 + b _0802227A + .align 2, 0 +_08021FA4: .4byte gWigglytuffDialogue +_08021FA8: + ldr r3, [r4] + movs r0, 0x3 + str r0, [r3, 0x8] + ldr r2, _08021FBC + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x28 + b _0802227A + .align 2, 0 +_08021FBC: .4byte gWigglytuffDialogue +_08021FC0: + ldr r3, [r4] + movs r0, 0xA + str r0, [r3, 0x8] + ldr r2, _08021FD4 + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x2C + b _0802227A + .align 2, 0 +_08021FD4: .4byte gWigglytuffDialogue +_08021FD8: + movs r0, 0x2 + movs r1, 0x3 + bl sub_80211AC + b _08021FE8 +_08021FE2: + movs r0, 0x1 + bl sub_8021354 +_08021FE8: + movs r0, 0x1 + bl DrawTeamMoneyBox + b _080222B6 +_08021FF0: + bl sub_8021494 + movs r0, 0x1 + bl DrawTeamMoneyBox + bl sub_8022380 + ldr r0, _08022020 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x6C + adds r1, r2, 0 + adds r1, 0x1C + adds r3, r2, 0 + adds r3, 0x5C + ldr r2, [r2, 0x18] + str r2, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + movs r2, 0 + bl sub_8012D60 + b _080222B6 + .align 2, 0 +_08022020: .4byte gUnknown_203B290 +_08022024: + bl sub_8022420 + ldr r0, _08022070 + ldr r4, _08022074 + ldr r1, [r4] + ldrb r1, [r1, 0x10] + movs r2, 0 + bl sub_8092578 + ldr r1, _08022078 + ldr r4, [r4] + ldr r0, [r4, 0xC] + str r0, [r1] + ldr r2, _0802207C + ldr r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x14 + adds r0, r2 + ldr r0, [r0] + adds r3, r4, 0 + adds r3, 0x1C + movs r2, 0 + str r2, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + adds r4, 0xCC + ldr r1, [r4] + str r1, [sp, 0xC] + movs r1, 0xC + str r1, [sp, 0x10] + movs r1, 0 + movs r2, 0x5 + bl sub_8014248 + b _080222B6 + .align 2, 0 +_08022070: .4byte gUnknown_202E628 +_08022074: .4byte gUnknown_203B290 +_08022078: .4byte gUnknown_202DE30 +_0802207C: .4byte gWigglytuffDialogue +_08022080: + ldr r0, [r4] + ldrb r0, [r0, 0x10] + movs r1, 0 + movs r2, 0x2 + bl sub_8021774 + b _080222B6 +_0802208E: + ldr r1, [r4] + movs r0, 0xD + str r0, [r1, 0x8] + ldr r0, _080220B0 + ldrb r1, [r1, 0x10] + movs r2, 0 + bl sub_8092578 + ldr r2, _080220B4 + ldr r3, [r4] + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x18 + b _0802227A + .align 2, 0 +_080220B0: .4byte gUnknown_202E628 +_080220B4: .4byte gWigglytuffDialogue +_080220B8: + ldr r1, [r4] + movs r0, 0xE + str r0, [r1, 0x8] + ldr r0, _080220D4 + bl PlaySound + ldr r0, [r4] + movs r1, 0x98 + lsls r1, 1 + adds r0, r1 + movs r1, 0x1 + str r1, [r0] + b _080222B6 + .align 2, 0 +_080220D4: .4byte 0x0000025b +_080220D8: + ldr r0, [r4] + movs r1, 0xF + str r1, [r0, 0x8] + movs r1, 0x9A + lsls r1, 1 + adds r0, r1 + movs r1, 0x1E + str r1, [r0] + b _080222B6 +_080220EA: + movs r0, 0x2 + bl sub_8021700 + lsls r0, 24 + cmp r0, 0 + beq _08022108 + bl sub_80213A0 + ldr r0, _08022104 + ldr r1, [r0] + movs r0, 0x12 + b _0802210E + .align 2, 0 +_08022104: .4byte gUnknown_203B290 +_08022108: + ldr r0, _08022130 + ldr r1, [r0] + movs r0, 0x8 +_0802210E: + str r0, [r1, 0x8] + movs r0, 0xCE + bl PlaySound + ldr r3, _08022134 + ldr r0, _08022130 + ldr r2, [r0] + ldr r1, [r2] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r3, 0x1C + adds r0, r3 + ldr r0, [r0] + adds r2, 0xCC + ldr r2, [r2] + b _08022282 + .align 2, 0 +_08022130: .4byte gUnknown_203B290 +_08022134: .4byte gWigglytuffDialogue +_08022138: + ldr r3, [r4] + movs r0, 0x16 + str r0, [r3, 0x8] + ldr r2, _0802214C + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x30 + b _0802227A + .align 2, 0 +_0802214C: .4byte gWigglytuffDialogue +_08022150: + ldr r3, [r4] + movs r0, 0x17 + str r0, [r3, 0x8] + ldr r2, _08022164 + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x34 + b _0802227A + .align 2, 0 +_08022164: .4byte gWigglytuffDialogue +_08022168: + movs r0, 0 + movs r1, 0x3 + movs r2, 0 + movs r3, 0xA + bl sub_8023144 + b _080222B6 +_08022176: + movs r0, 0x1 + bl sub_8023354 + b _080222B6 +_0802217E: + ldr r4, _080221A0 + ldr r0, [r4] + ldrb r0, [r0, 0x10] + add r1, sp, 0x14 + movs r2, 0 + movs r3, 0 + bl sub_8092638 + add r0, sp, 0x14 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _080221A4 + ldr r1, [r4] + movs r0, 0x19 + str r0, [r1, 0x8] + b _080221FA + .align 2, 0 +_080221A0: .4byte gUnknown_203B290 +_080221A4: + ldr r0, [r4] + ldrb r0, [r0, 0x10] + bl GetFriendAreaUnlockCondition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080221E0 + cmp r0, 0x2 + bgt _080221BE + cmp r0, 0x1 + beq _080221C4 + b _080221F0 +_080221BE: + cmp r0, 0x3 + beq _080221E8 + b _080221F0 +_080221C4: + movs r0, 0x6 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080221D8 + ldr r1, [r4] + movs r0, 0x15 + str r0, [r1, 0x8] + b _080221FA +_080221D8: + ldr r1, [r4] + movs r0, 0x1A + str r0, [r1, 0x8] + b _080221FA +_080221E0: + ldr r1, [r4] + movs r0, 0x1B + str r0, [r1, 0x8] + b _080221FA +_080221E8: + ldr r1, [r4] + movs r0, 0x1C + str r0, [r1, 0x8] + b _080221FA +_080221F0: + ldr r2, _08022228 + ldr r1, [r2] + movs r0, 0x15 + str r0, [r1, 0x8] + adds r4, r2, 0 +_080221FA: + ldr r0, [r4] + movs r1, 0x12 + ldrsh r0, [r0, r1] + bl GetMonSpecies + adds r1, r0, 0 + ldr r0, _0802222C + bl strcpy + ldr r0, _08022230 + ldr r1, [r4] + ldrb r1, [r1, 0x10] + movs r2, 0 + bl sub_8092578 + ldr r2, _08022234 + ldr r3, [r4] + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x38 + b _0802227A + .align 2, 0 +_08022228: .4byte gUnknown_203B290 +_0802222C: .4byte gAvailablePokemonNames +_08022230: .4byte gUnknown_202E628 +_08022234: .4byte gWigglytuffDialogue +_08022238: + ldr r3, [r4] + movs r0, 0x15 + str r0, [r3, 0x8] + ldr r2, _0802224C + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x3C + b _0802227A + .align 2, 0 +_0802224C: .4byte gWigglytuffDialogue +_08022250: + ldr r3, [r4] + movs r0, 0x15 + str r0, [r3, 0x8] + ldr r2, _08022264 + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x40 + b _0802227A + .align 2, 0 +_08022264: .4byte gWigglytuffDialogue +_08022268: + ldr r3, [r4] + movs r0, 0x15 + str r0, [r3, 0x8] + ldr r2, _0802228C + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x44 +_0802227A: + adds r0, r2 + ldr r0, [r0] + adds r3, 0xCC + ldr r2, [r3] +_08022282: + ldr r3, _08022290 +_08022284: + movs r1, 0 + bl sub_80141B4 + b _080222B6 + .align 2, 0 +_0802228C: .4byte gWigglytuffDialogue +_08022290: .4byte 0x0000010d +_08022294: + ldr r3, [r4] + movs r0, 0x15 + str r0, [r3, 0x8] + ldr r2, _080222C0 + ldr r1, [r3] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + adds r2, 0x48 + adds r0, r2 + ldr r0, [r0] + adds r3, 0xCC + ldr r2, [r3] + ldr r3, _080222C4 + movs r1, 0 + bl sub_80141B4 +_080222B6: + add sp, 0x20 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080222C0: .4byte gWigglytuffDialogue +_080222C4: .4byte 0x0000010d + thumb_func_end UpdateWigglytuffDialogue + + thumb_func_start sub_80222C8 +sub_80222C8: + push {r4-r7,lr} + ldr r4, _08022344 + ldr r0, [r4] + adds r0, 0x5C + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r1, [r4] + movs r5, 0 + ldr r0, _08022348 + ldr r0, [r0] + str r0, [r1, 0x1C] + adds r3, r1, 0 + adds r3, 0x20 + movs r0, 0x2 + str r0, [r1, 0x20] + movs r2, 0x1 + ldr r0, _0802234C + ldr r0, [r0] + str r0, [r1, 0x24] + movs r0, 0x3 + str r0, [r1, 0x28] + ldr r0, _08022350 + ldr r0, [r0] + str r0, [r1, 0x2C] + movs r0, 0x4 + str r0, [r1, 0x30] + ldr r0, _08022354 + ldr r0, [r0] + str r0, [r1, 0x34] + str r2, [r1, 0x38] + movs r7, 0x4 + str r5, [r1, 0x3C] + str r2, [r3, 0x20] + adds r6, r1, 0 + adds r2, r6, 0 + adds r2, 0x5C +_08022314: + ldrh r0, [r2] + cmp r0, 0 + bne _08022322 + ldr r1, [r3] + ldr r0, [r6, 0x14] + cmp r1, r0 + beq _0802237A +_08022322: + adds r3, 0x8 + adds r2, 0x2 + adds r5, 0x1 + cmp r5, r7 + blt _08022314 + movs r5, 0 + cmp r5, r7 + bge _0802237A + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x5C + ldrh r0, [r0] + cmp r0, 0 + bne _08022358 + ldr r0, [r1, 0x20] + str r0, [r1, 0x14] + b _0802237A + .align 2, 0 +_08022344: .4byte gUnknown_203B290 +_08022348: .4byte gUnknown_80D4978 +_0802234C: .4byte gWigglytuffCheck +_08022350: .4byte gUnknown_80D4970 +_08022354: .4byte gUnknown_80D4934 +_08022358: + adds r5, 0x1 + cmp r5, r7 + bge _0802237A + ldr r2, [r4] + lsls r0, r5, 1 + adds r1, r2, 0 + adds r1, 0x5C + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _08022358 + lsls r0, r5, 3 + adds r1, r2, 0 + adds r1, 0x20 + adds r1, r0 + ldr r0, [r1] + str r0, [r2, 0x14] +_0802237A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80222C8 + + thumb_func_start sub_8022380 +sub_8022380: + push {r4-r7,lr} + ldr r4, _080223EC + ldr r0, [r4] + adds r0, 0x5C + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r3, [r4] + movs r2, 0 + ldr r0, _080223F0 + ldr r0, [r0] + str r0, [r3, 0x1C] + movs r0, 0x2 + str r0, [r3, 0x20] + movs r1, 0x1 + ldr r0, _080223F4 + ldr r0, [r0] + str r0, [r3, 0x24] + movs r0, 0x4 + str r0, [r3, 0x28] + movs r6, 0x2 + str r2, [r3, 0x2C] + str r1, [r3, 0x30] + movs r5, 0 + mov r12, r3 + adds r3, 0x20 + mov r2, r12 + adds r2, 0x5C +_080223BA: + ldrh r0, [r2] + cmp r0, 0 + bne _080223CA + ldr r1, [r3] + mov r7, r12 + ldr r0, [r7, 0x18] + cmp r1, r0 + beq _0802241A +_080223CA: + adds r3, 0x8 + adds r2, 0x2 + adds r5, 0x1 + cmp r5, r6 + blt _080223BA + movs r5, 0 + cmp r5, r6 + bge _0802241A + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x5C + ldrh r0, [r0] + cmp r0, 0 + bne _080223F8 + ldr r0, [r1, 0x20] + str r0, [r1, 0x18] + b _0802241A + .align 2, 0 +_080223EC: .4byte gUnknown_203B290 +_080223F0: .4byte gUnknown_80D4978 +_080223F4: .4byte gUnknown_80D4970 +_080223F8: + adds r5, 0x1 + cmp r5, r6 + bge _0802241A + ldr r2, [r4] + lsls r0, r5, 1 + adds r1, r2, 0 + adds r1, 0x5C + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0 + bne _080223F8 + lsls r0, r5, 3 + adds r1, r2, 0 + adds r1, 0x20 + adds r1, r0 + ldr r0, [r1] + str r0, [r2, 0x18] +_0802241A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8022380 + + thumb_func_start sub_8022420 +sub_8022420: + push {r4,lr} + ldr r4, _08022454 + ldr r0, [r4] + adds r0, 0x5C + movs r1, 0 + movs r2, 0x10 + bl MemoryFill16 + ldr r1, [r4] + movs r3, 0 + ldr r0, _08022458 + ldr r0, [r0] + str r0, [r1, 0x1C] + movs r0, 0x5 + str r0, [r1, 0x20] + movs r2, 0x1 + ldr r0, _0802245C + ldr r0, [r0] + str r0, [r1, 0x24] + movs r0, 0x6 + str r0, [r1, 0x28] + str r3, [r1, 0x2C] + str r2, [r1, 0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08022454: .4byte gUnknown_203B290 +_08022458: .4byte gUnknown_80D4920 +_0802245C: .4byte gUnknown_80D4928 + thumb_func_end sub_8022420 + + thumb_func_start sub_8022460 +sub_8022460: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _080224CC + ldr r1, [sp] + cmp r1, 0x1 + beq _0802247A + ldr r0, _0802248C + ldr r0, [r0] + str r1, [r0, 0x14] +_0802247A: + ldr r0, [sp] + cmp r0, 0x2 + beq _0802249A + cmp r0, 0x2 + bgt _08022490 + cmp r0, 0x1 + beq _080224C6 + b _080224CC + .align 2, 0 +_0802248C: .4byte gUnknown_203B290 +_08022490: + cmp r0, 0x3 + beq _080224B6 + cmp r0, 0x4 + beq _080224BE + b _080224CC +_0802249A: + movs r0, 0x2 + bl sub_8021700 + lsls r0, 24 + cmp r0, 0 + beq _080224AE + movs r0, 0x5 + bl sub_8021D44 + b _080224CC +_080224AE: + movs r0, 0x7 + bl sub_8021D44 + b _080224CC +_080224B6: + movs r0, 0x14 + bl sub_8021D44 + b _080224CC +_080224BE: + movs r0, 0x2 + bl sub_8021D44 + b _080224CC +_080224C6: + movs r0, 0x3 + bl sub_8021D44 +_080224CC: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_8022460 + + thumb_func_start sub_80224D4 +sub_80224D4: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _08022532 + ldr r0, [sp] + cmp r0, 0x5 + beq _080224F8 + cmp r0, 0x5 + bgt _080224F2 + cmp r0, 0x1 + beq _0802252C + b _08022532 +_080224F2: + cmp r0, 0x6 + beq _0802252C + b _08022532 +_080224F8: + ldr r0, _08022524 + ldr r2, [r0] + movs r0, 0x98 + lsls r0, 2 + adds r2, r0 + ldr r0, _08022528 + ldr r3, [r0] + ldr r0, [r2] + ldr r1, [r3, 0xC] + subs r0, r1 + str r0, [r2] + ldrb r0, [r3, 0x10] + bl UnlockFriendArea + movs r0, 0xA6 + lsls r0, 1 + bl PlaySound + movs r0, 0xC + bl sub_8021D44 + b _08022532 + .align 2, 0 +_08022524: .4byte gTeamInventory_203B460 +_08022528: .4byte gUnknown_203B290 +_0802252C: + movs r0, 0xA + bl sub_8021D44 +_08022532: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_80224D4 + + thumb_func_start sub_8022538 +sub_8022538: + push {r4,lr} + movs r0, 0x1 + bl sub_8021274 + cmp r0, 0x4 + bhi _080225BC + lsls r0, 2 + ldr r1, _08022550 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022550: .4byte _08022554 + .align 2, 0 +_08022554: + .4byte _080225C2 + .4byte _080225BC + .4byte _080225B0 + .4byte _08022568 + .4byte _0802258C +_08022568: + bl sub_802132C + ldr r4, _08022588 + ldr r1, [r4] + strb r0, [r1, 0x10] + ldr r0, [r4] + ldrb r0, [r0, 0x10] + bl GetFriendAreaPrice + ldr r1, [r4] + str r0, [r1, 0xC] + movs r0, 0xB + bl sub_8021D44 + b _080225C2 + .align 2, 0 +_08022588: .4byte gUnknown_203B290 +_0802258C: + bl sub_802132C + ldr r4, _080225AC + ldr r1, [r4] + strb r0, [r1, 0x10] + ldr r0, [r4] + ldrb r0, [r0, 0x10] + bl GetFriendAreaPrice + ldr r1, [r4] + str r0, [r1, 0xC] + movs r0, 0x10 + bl sub_8021D44 + b _080225C2 + .align 2, 0 +_080225AC: .4byte gUnknown_203B290 +_080225B0: + bl sub_80213A0 + movs r0, 0x1 + bl sub_8021D44 + b _080225C2 +_080225BC: + movs r0, 0x1 + bl DrawTeamMoneyBox +_080225C2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8022538 + + thumb_func_start sub_80225C8 +sub_80225C8: + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + bl sub_8021274 + ldr r4, _08022608 + ldr r0, [r4] + adds r0, 0x6C + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + bne _080225F8 + ldr r0, [r4] + adds r0, 0x6C + mov r1, sp + bl sub_8013114 + ldr r1, [sp] + cmp r1, 0x1 + beq _080225F8 + ldr r0, [r4] + str r1, [r0, 0x18] +_080225F8: + ldr r0, [sp] + cmp r0, 0x2 + beq _08022612 + cmp r0, 0x2 + bgt _0802260C + cmp r0, 0x1 + beq _08022658 + b _0802265E + .align 2, 0 +_08022608: .4byte gUnknown_203B290 +_0802260C: + cmp r0, 0x4 + beq _08022650 + b _0802265E +_08022612: + ldr r0, _0802262C + ldr r0, [r0] + movs r1, 0x98 + lsls r1, 2 + adds r0, r1 + ldr r1, [r0] + cmp r1, 0 + bne _08022630 + movs r0, 0x6 + bl sub_8021D44 + b _0802265E + .align 2, 0 +_0802262C: .4byte gTeamInventory_203B460 +_08022630: + ldr r0, _08022644 + ldr r0, [r0] + ldr r0, [r0, 0xC] + cmp r0, r1 + ble _08022648 + movs r0, 0x13 + bl sub_8021D44 + b _0802265E + .align 2, 0 +_08022644: .4byte gUnknown_203B290 +_08022648: + movs r0, 0x11 + bl sub_8021D44 + b _0802265E +_08022650: + movs r0, 0x10 + bl sub_8021D44 + b _0802265E +_08022658: + movs r0, 0xA + bl sub_8021D44 +_0802265E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80225C8 + + thumb_func_start sub_8022668 +sub_8022668: + push {lr} + bl sub_80217EC + cmp r0, 0x1 + bls _08022680 + cmp r0, 0x3 + bhi _08022680 + bl sub_8021830 + movs r0, 0xA + bl sub_8021D44 +_08022680: + pop {r0} + bx r0 + thumb_func_end sub_8022668 + + thumb_func_start sub_8022684 +sub_8022684: + push {r4,lr} + movs r0, 0x1 + bl sub_8023278 + cmp r0, 0x2 + beq _080226BC + cmp r0, 0x2 + bcc _080226C6 + cmp r0, 0x3 + bne _080226C6 + bl sub_802331C + ldr r4, _080226B8 + ldr r1, [r4] + strh r0, [r1, 0x12] + movs r2, 0x12 + ldrsh r0, [r1, r2] + bl GetFriendArea + ldr r1, [r4] + strb r0, [r1, 0x10] + movs r0, 0x18 + bl sub_8021D44 + b _080226C6 + .align 2, 0 +_080226B8: .4byte gUnknown_203B290 +_080226BC: + bl sub_80233A0 + movs r0, 0x1 + bl sub_8021D44 +_080226C6: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8022684 + + thumb_func_start sub_80226CC +sub_80226CC: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _080226E4 + ldr r0, _080226EC + ldr r0, [r0] + ldr r0, [r0, 0x8] + bl sub_8021D44 +_080226E4: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_080226EC: .4byte gUnknown_203B290 + thumb_func_end sub_80226CC + + thumb_func_start sub_80226F0 +sub_80226F0: + push {r4,lr} + sub sp, 0x4 + mov r1, sp + movs r2, 0 + movs r0, 0x80 + strb r0, [r1] + strb r0, [r1, 0x1] + movs r0, 0x10 + strb r0, [r1, 0x2] + strb r2, [r1, 0x3] + bl sub_8099B94 + lsls r0, 24 + cmp r0, 0 + bne _08022782 + ldr r0, _08022728 + ldr r0, [r0] + movs r1, 0x98 + lsls r1, 1 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x4 + bhi _0802275C + lsls r0, 2 + ldr r1, _0802272C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022728: .4byte gUnknown_203B290 +_0802272C: .4byte _08022730 + .align 2, 0 +_08022730: + .4byte _0802275C + .4byte _08022744 + .4byte _08022750 + .4byte _08022744 + .4byte _08022750 +_08022744: + movs r0, 0x5 + movs r1, 0x2 + ldr r2, [sp] + bl sub_8099AFC + b _08022772 +_08022750: + movs r0, 0x5 + movs r1, 0x2 + ldr r2, [sp] + bl sub_8099A5C + b _08022772 +_0802275C: + ldr r4, _0802278C + ldr r0, [r4] + ldr r0, [r0, 0x8] + bl sub_8021D44 + ldr r0, [r4] + movs r1, 0x98 + lsls r1, 1 + adds r0, r1 + movs r1, 0 + str r1, [r0] +_08022772: + ldr r0, _0802278C + ldr r1, [r0] + movs r0, 0x98 + lsls r0, 1 + adds r1, r0 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08022782: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802278C: .4byte gUnknown_203B290 + thumb_func_end sub_80226F0 + + thumb_func_start sub_8022790 +sub_8022790: + push {lr} + ldr r0, _080227A8 + ldr r2, [r0] + movs r0, 0x9A + lsls r0, 1 + adds r1, r2, r0 + ldr r0, [r1] + cmp r0, 0 + beq _080227AC + subs r0, 0x1 + str r0, [r1] + b _080227B2 + .align 2, 0 +_080227A8: .4byte gUnknown_203B290 +_080227AC: + ldr r0, [r2, 0x8] + bl sub_8021D44 +_080227B2: + pop {r0} + bx r0 + thumb_func_end sub_8022790 + + thumb_func_start sub_80227B8 +sub_80227B8: + push {r4,r5,lr} + adds r5, r0, 0 + bl ResetUnusedInputStruct + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r4, _08022810 + movs r0, 0xD4 + lsls r0, 1 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r4] + adds r2, r0, 0 + adds r2, 0xF4 + movs r1, 0 + str r1, [r2] + str r5, [r0, 0x48] + cmp r5, 0 + beq _08022820 + ldr r4, _08022814 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x7 + bl PrintColoredPokeNameToBuffer + adds r4, 0x50 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x6 + bl PrintColoredPokeNameToBuffer + bl HasGummiItem + lsls r0, 24 + cmp r0, 0 + beq _08022818 + movs r0, 0 + bl sub_8022924 + b _08022856 + .align 2, 0 +_08022810: .4byte gUnknown_203B294 +_08022814: .4byte gAvailablePokemonNames +_08022818: + movs r0, 0x11 + bl sub_8022924 + b _08022856 +_08022820: + ldr r4, _08022848 + ldr r5, _0802284C + adds r0, r4, 0 + adds r1, r5, 0 + bl strcpy + adds r4, 0x50 + adds r0, r4, 0 + adds r1, r5, 0 + bl strcpy + bl GetNumberOfFilledInventorySlots + cmp r0, 0 + bne _08022850 + movs r0, 0x12 + bl sub_8022924 + b _08022856 + .align 2, 0 +_08022848: .4byte gAvailablePokemonNames +_0802284C: .4byte gUnknown_80DC5EC +_08022850: + movs r0, 0 + bl sub_8022924 +_08022856: + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80227B8 + + thumb_func_start sub_8022860 +sub_8022860: + push {lr} + ldr r0, _08022878 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0x16 + bhi _080228FE + lsls r0, 2 + ldr r1, _0802287C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022878: .4byte gUnknown_203B294 +_0802287C: .4byte _08022880 + .align 2, 0 +_08022880: + .4byte _080228DC + .4byte _080228DC + .4byte _080228E2 + .4byte _080228E8 + .4byte _080228EE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228FE + .4byte _080228F4 + .4byte _080228FA +_080228DC: + bl sub_8022E78 + b _08022902 +_080228E2: + bl sub_8022EF4 + b _08022902 +_080228E8: + bl sub_8023068 + b _08022902 +_080228EE: + bl sub_80230E8 + b _08022902 +_080228F4: + bl sub_8023104 + b _08022902 +_080228FA: + movs r0, 0x3 + b _08022904 +_080228FE: + bl sub_8023120 +_08022902: + movs r0, 0 +_08022904: + pop {r1} + bx r1 + thumb_func_end sub_8022860 + + thumb_func_start sub_8022908 +sub_8022908: + push {r4,lr} + ldr r4, _08022920 + ldr r0, [r4] + cmp r0, 0 + beq _0802291A + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0802291A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08022920: .4byte gUnknown_203B294 + thumb_func_end sub_8022908 + + thumb_func_start sub_8022924 +sub_8022924: + push {lr} + ldr r1, _08022938 + ldr r1, [r1] + str r0, [r1] + bl sub_802293C + bl sub_8022A10 + pop {r0} + bx r0 + .align 2, 0 +_08022938: .4byte gUnknown_203B294 + thumb_func_end sub_8022924 + + thumb_func_start sub_802293C +sub_802293C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _08022964 + ldr r0, [r4] + movs r1, 0xA4 + lsls r1, 1 + adds r0, r1 + bl sub_8006518 + ldr r1, [r4] + ldr r0, [r1] + cmp r0, 0x3 + beq _080229A4 + cmp r0, 0x3 + bgt _08022968 + cmp r0, 0x2 + beq _08022972 + b _080229BC + .align 2, 0 +_08022964: .4byte gUnknown_203B294 +_08022968: + cmp r0, 0x10 + bgt _080229BC + cmp r0, 0xA + blt _080229BC + b _080229E6 +_08022972: + bl sub_8022D2C + ldr r2, [r4] + movs r0, 0xBC + lsls r0, 1 + adds r2, r0 + ldr r1, _080229A0 + ldm r1!, {r3,r5,r6} + stm r2!, {r3,r5,r6} + ldm r1!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + ldr r1, [r4] + adds r0, r1, r0 + adds r1, 0xF8 + bl sub_8012CAC + ldr r0, [r4] + movs r6, 0xC2 + lsls r6, 1 + adds r0, r6 + movs r1, 0x6 + strh r1, [r0] + b _080229E6 + .align 2, 0 +_080229A0: .4byte gUnknown_80DC5BC +_080229A4: + movs r7, 0xB0 + lsls r7, 1 + adds r1, r7 + ldr r0, _080229B8 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + b _080229E6 + .align 2, 0 +_080229B8: .4byte gUnknown_80DC5D4 +_080229BC: + ldr r0, _08022A08 + mov r12, r0 + movs r1, 0xA4 + lsls r1, 1 + mov r8, r1 + ldr r4, _08022A0C + movs r3, 0 + movs r2, 0x3 +_080229CC: + mov r5, r12 + ldr r1, [r5] + adds r1, r3 + add r1, r8 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _080229CC +_080229E6: + bl ResetUnusedInputStruct + ldr r0, _08022A08 + ldr r0, [r0] + movs r6, 0xA4 + lsls r6, 1 + adds r0, r6 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08022A08: .4byte gUnknown_203B294 +_08022A0C: .4byte gUnknown_80DC5A4 + thumb_func_end sub_802293C + + thumb_func_start sub_8022A10 +sub_8022A10: + push {r4-r7,lr} + sub sp, 0x8 + ldr r1, _08022A2C + ldr r0, [r1] + ldr r0, [r0] + adds r4, r1, 0 + cmp r0, 0x16 + bls _08022A22 + b _08022D1E +_08022A22: + lsls r0, 2 + ldr r1, _08022A30 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022A2C: .4byte gUnknown_203B294 +_08022A30: .4byte _08022A34 + .align 2, 0 +_08022A34: + .4byte _08022A90 + .4byte _08022AAA + .4byte _08022AB2 + .4byte _08022AE0 + .4byte _08022B10 + .4byte _08022B1A + .4byte _08022B24 + .4byte _08022B34 + .4byte _08022B44 + .4byte _08022B54 + .4byte _08022B64 + .4byte _08022C28 + .4byte _08022CA0 + .4byte _08022CA8 + .4byte _08022CB0 + .4byte _08022CB8 + .4byte _08022CC0 + .4byte _08022CC8 + .4byte _08022CD8 + .4byte _08022CE8 + .4byte _08022CF8 + .4byte _08022D14 + .4byte _08022D1E +_08022A90: + ldr r0, [r4] + ldr r0, [r0, 0x48] + cmp r0, 0 + beq _08022A9C + movs r0, 0x5 + b _08022A9E +_08022A9C: + movs r0, 0x1 +_08022A9E: + movs r1, 0x3 + movs r2, 0 + movs r3, 0xA + bl sub_801A5D8 + b _08022D22 +_08022AAA: + movs r0, 0x1 + bl sub_801A8D0 + b _08022D22 +_08022AB2: + bl sub_801A9E0 + ldr r0, _08022ADC + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x54 + adds r1, r2, 0 + adds r1, 0xF8 + movs r4, 0x9C + lsls r4, 1 + adds r3, r2, r4 + adds r2, 0xF4 + ldr r2, [r2] + str r2, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + movs r2, 0 + bl sub_8012D60 + b _08022D22 + .align 2, 0 +_08022ADC: .4byte gUnknown_203B294 +_08022AE0: + bl sub_801A9E0 + ldr r4, _08022B08 + ldr r0, [r4] + adds r0, 0x54 + movs r1, 0 + bl sub_8012EA4 + ldr r0, [r4] + adds r0, 0xA4 + ldr r1, _08022B0C + movs r2, 0x3 + str r2, [sp] + movs r2, 0x1 + str r2, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_8012D60 + b _08022D22 + .align 2, 0 +_08022B08: .4byte gUnknown_203B294 +_08022B0C: .4byte gUnknown_80DC584 +_08022B10: + ldr r0, [r4] + adds r0, 0x50 + bl sub_801B3C0 + b _08022D22 +_08022B1A: + ldr r0, _08022B20 + b _08022D00 + .align 2, 0 +_08022B20: .4byte gUnknown_80DC5F4 +_08022B24: + ldr r0, _08022B2C + ldr r3, _08022B30 + b _08022D02 + .align 2, 0 +_08022B2C: .4byte gUnknown_80DC618 +_08022B30: .4byte 0x00000101 +_08022B34: + ldr r0, _08022B3C + ldr r3, _08022B40 + b _08022D02 + .align 2, 0 +_08022B3C: .4byte gUnknown_80DC674 +_08022B40: .4byte 0x00000101 +_08022B44: + ldr r0, _08022B4C + ldr r3, _08022B50 + b _08022D02 + .align 2, 0 +_08022B4C: .4byte gUnknown_80DC6CC +_08022B50: .4byte 0x00000101 +_08022B54: + ldr r0, _08022B5C + ldr r3, _08022B60 + b _08022D02 + .align 2, 0 +_08022B5C: .4byte gUnknown_80DC728 +_08022B60: .4byte 0x00000101 +_08022B64: + ldr r7, _08022B68 + b _08022B78 + .align 2, 0 +_08022B68: .4byte gUnknown_203B294 +_08022B6C: + ldr r1, [r4] + ldr r0, [r1, 0x40] + adds r0, 0x1 + str r0, [r1, 0x40] + cmp r0, 0x17 + bgt _08022C10 +_08022B78: + movs r5, 0 + movs r6, 0 + movs r3, 0 + ldr r2, [r4] + ldr r0, [r2, 0x38] + cmp r5, r0 + bge _08022BA4 + ldrb r1, [r2, 0x8] + b _08022B9C +_08022B8A: + adds r3, 0x1 + ldr r2, [r4] + ldr r0, [r2, 0x38] + cmp r3, r0 + bge _08022BA4 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r3 + ldrb r1, [r0] +_08022B9C: + ldr r0, [r2, 0x40] + cmp r1, r0 + bne _08022B8A + movs r5, 0x1 +_08022BA4: + movs r3, 0 + ldr r2, [r4] + ldr r0, [r2, 0x3C] + cmp r3, r0 + bge _08022BCE + adds r0, r2, 0 + adds r0, 0x20 + b _08022BC4 +_08022BB4: + adds r3, 0x1 + ldr r2, [r4] + ldr r0, [r2, 0x3C] + cmp r3, r0 + bge _08022BCE + adds r0, r2, 0 + adds r0, 0x20 + adds r0, r3 +_08022BC4: + ldrb r1, [r0] + ldr r0, [r2, 0x40] + cmp r1, r0 + bne _08022BB4 + movs r6, 0x1 +_08022BCE: + cmp r5, r6 + beq _08022B6C + ldr r1, [r7] + movs r0, 0xA + str r0, [r1, 0x4] + ldr r0, [r1, 0x40] + lsls r0, 24 + lsrs r0, 24 + bl GetIQSkillName + adds r1, r0, 0 + ldr r0, _08022C18 + bl strcpy + movs r0, 0xCB + bl PlaySound + ldr r0, _08022C1C + movs r1, 0 + movs r2, 0 + ldr r3, _08022C20 + bl sub_80141B4 + ldr r1, [r7] + ldr r0, [r1, 0x40] + adds r0, 0x1 + str r0, [r1, 0x40] + ldr r0, _08022C24 + ldr r0, [r0] + ldr r0, [r0, 0x40] + cmp r0, 0x17 + bgt _08022C10 + b _08022D22 +_08022C10: + movs r0, 0xB + bl sub_8022924 + b _08022D22 + .align 2, 0 +_08022C18: .4byte gUnknown_202DEA8 +_08022C1C: .4byte gUnknown_80DC788 +_08022C20: .4byte 0x00000101 +_08022C24: .4byte gUnknown_203B294 +_08022C28: + ldr r1, [r4] + movs r0, 0x16 + str r0, [r1, 0x4] + bl nullsub_104 + ldr r0, [r4] + adds r0, 0x46 + ldrh r0, [r0] + cmp r0, 0x8 + bhi _08022C98 + lsls r0, 2 + ldr r1, _08022C48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022C48: .4byte _08022C4C + .align 2, 0 +_08022C4C: + .4byte _08022C70 + .4byte _08022C78 + .4byte _08022C80 + .4byte _08022C98 + .4byte _08022C88 + .4byte _08022C98 + .4byte _08022C98 + .4byte _08022C98 + .4byte _08022C90 +_08022C70: + movs r0, 0x16 + bl sub_8022924 + b _08022D22 +_08022C78: + movs r0, 0xD + bl sub_8022924 + b _08022D22 +_08022C80: + movs r0, 0xE + bl sub_8022924 + b _08022D22 +_08022C88: + movs r0, 0xF + bl sub_8022924 + b _08022D22 +_08022C90: + movs r0, 0x10 + bl sub_8022924 + b _08022D22 +_08022C98: + movs r0, 0xC + bl sub_8022924 + b _08022D22 +_08022CA0: + ldr r0, _08022CA4 + b _08022D00 + .align 2, 0 +_08022CA4: .4byte gUnknown_80DC7B4 +_08022CA8: + ldr r0, _08022CAC + b _08022D00 + .align 2, 0 +_08022CAC: .4byte gUnknown_80DC7FC +_08022CB0: + ldr r0, _08022CB4 + b _08022D00 + .align 2, 0 +_08022CB4: .4byte gUnknown_80DC81C +_08022CB8: + ldr r0, _08022CBC + b _08022D00 + .align 2, 0 +_08022CBC: .4byte gUnknown_80DC844 +_08022CC0: + ldr r0, _08022CC4 + b _08022D00 + .align 2, 0 +_08022CC4: .4byte gUnknown_80DC864 +_08022CC8: + ldr r1, [r4] + movs r0, 0x16 + str r0, [r1, 0x4] + ldr r0, _08022CD4 + b _08022D00 + .align 2, 0 +_08022CD4: .4byte gUnknown_80DC88C +_08022CD8: + ldr r1, [r4] + movs r0, 0x16 + str r0, [r1, 0x4] + ldr r0, _08022CE4 + b _08022D00 + .align 2, 0 +_08022CE4: .4byte gUnknown_80DC8AC +_08022CE8: + ldr r1, [r4] + movs r0, 0x16 + str r0, [r1, 0x4] + ldr r0, _08022CF4 + b _08022D00 + .align 2, 0 +_08022CF4: .4byte gUnknown_80DC8C8 +_08022CF8: + ldr r1, [r4] + movs r0, 0x16 + str r0, [r1, 0x4] + ldr r0, _08022D0C +_08022D00: + ldr r3, _08022D10 +_08022D02: + movs r1, 0 + movs r2, 0 + bl sub_80141B4 + b _08022D22 + .align 2, 0 +_08022D0C: .4byte gUnknown_80DC8DC +_08022D10: .4byte 0x00000301 +_08022D14: + ldr r0, [r4] + ldr r0, [r0, 0x4C] + bl sub_801AFA4 + b _08022D22 +_08022D1E: + bl sub_801A928 +_08022D22: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8022A10 + + .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index 74463e75d..3ee420d91 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -118,6 +118,8 @@ SECTIONS { src/gulpin_shop_1.o(.text); src/code_801EE10.o(.text); asm/code_801EE10.o(.text); + src/code_801EE10_mid.o(.text); + asm/code_801EE10_mid.o(.text); src/code_8023144.o(.text); asm/code_801EE10_1.o(.text); src/code_801EE10_1.o(.text); diff --git a/src/code_801EE10_mid.c b/src/code_801EE10_mid.c new file mode 100644 index 000000000..8a3fc1e6e --- /dev/null +++ b/src/code_801EE10_mid.c @@ -0,0 +1,214 @@ +#include "global.h" +#include "memory.h" +#include "text.h" +#include "pokemon.h" +#include "input.h" +#include "code_800D090.h" +#include "moves.h" + +struct unkStruct_203B274 +{ + // size: 0x3e8 + struct PokemonStruct *pokeStruct; + struct unkStruct_808E218_arg *unk4; + struct unkStruct_808E218_arg unk8; + u32 unk348; + u8 fill34C[0x360 - 0x34C]; + s16 unk360; + s16 unk362; + s16 unk364; + s16 unk366; + s16 unk368; + u8 fill36A[0x37C - 0x36A]; + s32 unk37C; + struct UnkTextStruct2 *unk380; + struct UnkTextStruct2 unk384[4]; + u8 unk3E4[4]; +}; +extern struct unkStruct_203B274 *gUnknown_203B274; +extern struct UnkTextStruct2 gUnknown_80DC2C4; +extern struct UnkTextStruct2 gUnknown_80DC2AC; + +extern u8 gUnknown_80DC2DC[]; + +extern void sub_801F690(void); +extern void sub_801F700(void); +extern void sub_8013818(u32 *, u32, u32, u32); +extern u32 sub_801F7E4(void); +extern s32 GetKeyPress(void *); +extern void sub_8013660(void *); +extern void AddMenuCursorSprite(void *); +extern u8 sub_80138B8(u32 *, u32); +extern void PlayMenuSoundEffect(u32); +extern void sub_8013984(void *); +extern void sub_8008C54(u32); +extern void sub_80073B8(u32); +extern void sub_80073E0(u32); +extern s32 sub_8013800(u32 *, s32); +extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32); +extern s32 sub_808E218(struct unkStruct_808E218_arg* a1, struct PokemonStruct* pokemon); + +bool8 sub_801F428(s16 index, s32 param_2) { + + s32 index_s32 = index; + gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8); + gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32]; + gUnknown_203B274->unk4 = &gUnknown_203B274->unk8; + gUnknown_203B274->unk37C = param_2; + gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C]; + sub_8006518(gUnknown_203B274->unk384); + gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2C4; + gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4; + gUnknown_203B274->unk3E4[0] = 1; + gUnknown_203B274->unk3E4[1] = 0; + gUnknown_203B274->unk3E4[2] = 0xC; + gUnknown_203B274->unk3E4[3] = 0; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B274->unk384, 1, 1); + sub_8013818(&gUnknown_203B274->unk348, sub_801F7E4(), 4, param_2); + sub_801F690(); + sub_801F700(); + return 1; +} + +u32 sub_801F520(u8 param_1) +{ + if (param_1 == 0) { + sub_8013660(&gUnknown_203B274->unk348); + return 0; + } + else { + switch(GetKeyPress(&gUnknown_203B274->unk348)) + { + case 2: + PlayMenuSoundEffect(1); + return 2; + case 1: + PlayMenuSoundEffect(0); + return 3; + case 4: + PlayMenuSoundEffect(4); + return 4; + default: + break; + } + if (sub_80138B8(&gUnknown_203B274->unk348,1) != 0) { + sub_801F690(); + sub_801F700(); + return 1; + } + else { + return 0; + } + } +} + +u16 sub_801F5B4(void) +{ + return gUnknown_203B274->unk4->unk0[gUnknown_203B274->unk366 * gUnknown_203B274->unk364 + gUnknown_203B274->unk360]; +} + +void sub_801F5F0(u8 r0) +{ + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B274->unk384, 0, 0); + sub_8013984(&gUnknown_203B274->unk348); + sub_801F690(); + sub_801F700(); + if(r0) + AddMenuCursorSprite(&gUnknown_203B274->unk348); +} + +void sub_801F63C(void) +{ + if(gUnknown_203B274 != NULL) + { + gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = gUnknown_80DC2AC; + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B274->unk384, 1, 1); + MemoryFree(gUnknown_203B274); + gUnknown_203B274 = NULL; + } +} + +NAKED +void sub_801F690(void) +{ + asm_unified( + "\tpush {r4,r5,lr}\n" + "\tldr r5, _0801F6F4\n" + "\tldr r0, [r5]\n" + "\tldr r1, _0801F6F8\n" + "\tadds r0, r1\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r0, r2]\n" + "\tmovs r1, 0xC\n" + "\tbl sub_80095E4\n" + "\tadds r0, 0x2\n" + "\tlsls r0, 16\n" + "\tldr r3, [r5]\n" + "\tmovs r1, 0xDF\n" + "\tlsls r1, 2\n" + "\tadds r4, r3, r1\n" + "\tldr r2, [r4]\n" + "\tlsls r1, r2, 1\n" + "\tadds r1, r2\n" + "\tlsls r1, 3\n" + "\tadds r1, r3, r1\n" + "\tldr r2, _0801F6FC\n" + "\tadds r1, r2\n" + "\tasrs r2, r0, 16\n" + "\tlsrs r0, 16\n" + "\tstrh r0, [r1]\n" + "\tldr r1, [r4]\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tadds r3, r0\n" + "\tadds r2, 0x2\n" + "\tmovs r0, 0xE5\n" + "\tlsls r0, 2\n" + "\tadds r3, r0\n" + "\tstrh r2, [r3]\n" + "\tbl ResetUnusedInputStruct\n" + "\tldr r0, [r5]\n" + "\tmovs r1, 0xE1\n" + "\tlsls r1, 2\n" + "\tadds r0, r1\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x1\n" + "\tbl sub_800641C\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0801F6F4: .4byte gUnknown_203B274\n" +"_0801F6F8: .4byte 0x00000362\n" +"_0801F6FC: .4byte 0x00000392"); +} + +void sub_801F700(void) +{ + u32 y; + int index; + u8 buffer2 [48]; + u8 buffer1 [128]; + + sub_8008C54(gUnknown_203B274->unk37C); + sub_80073B8(gUnknown_203B274->unk37C); + sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->unk366 + 1,gUnknown_203B274->unk368); // Moves Page: %d/%d + xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0); + for(index = 0; index < gUnknown_203B274->unk362; index++) + { + sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->unk366 * gUnknown_203B274->unk364 + index]); + y = sub_8013800(&gUnknown_203B274->unk348, index); + xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0); + } + sub_80073E0(gUnknown_203B274->unk37C); +} + +u32 sub_801F7E4(void) +{ + sub_808E218(gUnknown_203B274->unk4, gUnknown_203B274->pokeStruct); + return gUnknown_203B274->unk4->count; +} From 59c5ea161d01ce884c1456eeb5a9bb545452f3cf Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 2 Jun 2023 16:04:19 -0700 Subject: [PATCH 15/21] Move more data to src --- data/data_80E59A8.s | 522 ----------------------------------------- include/pokemon.h | 1 + ld_script.txt | 3 +- src/code_801EE10_mid.c | 8 +- src/other_menus.c | 430 ++++++++++++++++++++++++++++++--- src/unk_menu_203B360.c | 39 ++- 6 files changed, 440 insertions(+), 563 deletions(-) delete mode 100644 data/data_80E59A8.s diff --git a/data/data_80E59A8.s b/data/data_80E59A8.s deleted file mode 100644 index 0858fac51..000000000 --- a/data/data_80E59A8.s +++ /dev/null @@ -1,522 +0,0 @@ - .section .rodata - - .global gUnknown_80E653C -gUnknown_80E653C: @ 80E653C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6554 -gUnknown_80E6554: @ 80E6554 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - - .global gUnknown_80E656C -gUnknown_80E656C: @ 80E656C - .4byte sUnknown_80E65C4, 0x5 - .4byte sUnknown_80E65AC, 0x5 - .4byte sUnknown_80E658C, 0x5 - .4byte 0, 0x3 - -sUnknown_80E658C: - .string "#+Don~27t turn the power off!\0" - .align 2, 0 - -sUnknown_80E65AC: - .string "#+Item transmitting!\0" - .align 2, 0 - -sUnknown_80E65C4: - .string "#+#C2Caution!#R \0" - .align 2, 0 - - .global gUnknown_80E65D8 -gUnknown_80E65D8: @ 80E65D8 - .4byte sUnknown_80E65C4, 0x5 - .4byte sUnknown_80E65F8, 0x5 - .4byte sUnknown_80E658C, 0x5 - .4byte 0, 0x3 - -sUnknown_80E65F8: - .string "#+Thank-You Mail in transmission!\0" - .align 2, 0 - - .global gUnknown_80E661C -gUnknown_80E661C: @ 80E661C - .4byte sUnknown_80E65C4, 0x5 - .4byte sUnknown_80E663C, 0x5 - .4byte sUnknown_80E658C, 0x5 - .4byte 0, 0x3 - -sUnknown_80E663C: - .string "#+A-OK Mail in transmission!\0" - .align 2, 0 - - .global gUnknown_80E665C -gUnknown_80E665C: @ 80E665C - .4byte sUnknown_80E65C4, 0x5 - .4byte sUnknown_80E65F8, 0x5 - .4byte sUnknown_80E658C, 0x5 - .4byte 0, 0x3 - - .global gUnknown_80E667C -gUnknown_80E667C: @ 80E667C - .4byte sUnknown_80E65C4, 0x5 - .4byte sUnknown_80E669C, 0x5 - .4byte sUnknown_80E658C, 0x5 - .4byte 0, 0x3 - -sUnknown_80E669C: - .string "#+Wonder Mail in transmission!\0" - .align 2, 0 - - .global gUnknown_80E66BC -gUnknown_80E66BC: @ 80E66BC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E66D4 -gUnknown_80E66D4: @ 80E66D4 - .4byte sUnknown_80E6734, 0x5 - .4byte sUnknown_80E6710, 0x5 - .4byte sUnknown_80E66F4, 0x5 - .4byte 0, 0x3 - -sUnknown_80E66F4: - .string "#+Please press any button.\0" - .align 2, 0 - -sUnknown_80E6710: - .string "#+Your adventure will be continued.\0" - .align 2, 0 - -sUnknown_80E6734: - .string "#+#CGSuccess!#R \0" - .align 2, 0 - - .global gUnknown_80E6748 -gUnknown_80E6748: @ 80E6748 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6760 -gUnknown_80E6760: @ 80E6760 - .4byte sUnknown_80E67B4, 0x5 - .4byte sUnknown_80E6794, 0x5 - .4byte sUnknown_80E6780, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6780: - .string "#+please try again.\0" - .align 2, 0 - -sUnknown_80E6794: - .string "#+Check the Game Link cable and\0" - .align 2, 0 - -sUnknown_80E67B4: - .string "#+#C2Communication error!#R \0" - .align 2, 0 - - .global gUnknown_80E67D4 -gUnknown_80E67D4: @ 80E67D4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E67EC -gUnknown_80E67EC: @ 80E67EC - .4byte sUnknown_80E67B4, 0x5 - .4byte sUnknown_80E680C, 0x5 - .4byte sUnknown_80E6780, 0x5 - .4byte 0, 0x3 - -sUnknown_80E680C: - .string "#+Check your communication mode and\0" - .align 2, 0 - - .global gUnknown_80E6830 -gUnknown_80E6830: @ 80E6830 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6848 -gUnknown_80E6848: @ 80E6848 - .4byte sUnknown_80E67B4, 0x5 - .4byte sUnknown_80E6888, 0x5 - .4byte sUnknown_80E6868, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6868: - .string "#+Please inform the programmer.\0" - .align 2, 0 - -sUnknown_80E6888: - .string "#+Check sum error.\0" - .align 2, 0 - - .global gUnknown_80E689C -gUnknown_80E689C: @ 80E689C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E68B4 -gUnknown_80E68B4: @ 80E68B4 - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E68FC, 0x5 - .4byte sUnknown_80E68D4, 0x5 - .4byte 0, 0x3 - -sUnknown_80E68D4: - .string "#+someone~27s storage space was full.\0" - .align 2, 0 - -sUnknown_80E68FC: - .string "#+An item could not be transferred because\0" - .align 2, 0 - -sUnknown_80E6928: - .string "#+#C2Error!#R \0" - .align 2, 0 - - .global gUnknown_80E6938 -gUnknown_80E6938: @ 80E6938 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6950 -gUnknown_80E6950: @ 80E6950 - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E6988, 0x5 - .4byte sUnknown_80E6970, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6970: - .string "#+Please check again.\0" - .align 2, 0 - -sUnknown_80E6988: - .string "#+This #CGSOS Mail#R can~27t be used.\0" - .align 2, 0 - - .global gUnknown_80E69B0 -gUnknown_80E69B0: @ 80E69B0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E69C8 -gUnknown_80E69C8: @ 80E69C8 - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E69E8, 0x5 - .4byte sUnknown_80E6970, 0x5 - .4byte 0, 0x3 - -sUnknown_80E69E8: - .string "#+This #CGA-OK Mail#R can~27t be used.\0" - .align 2, 0 - - .global gUnknown_80E6A10 -gUnknown_80E6A10: @ 80E6A10 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6A28 -gUnknown_80E6A28: @ 80E6A28 - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E6A48, 0x5 - .4byte sUnknown_80E6970, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6A48: - .string "#+This #CGThank-You Mail#R can~27t be used.\0" - .align 2, 0 - - .global gUnknown_80E6A74 -gUnknown_80E6A74: @ 80E6A74 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6A8C -gUnknown_80E6A8C: @ 80E6A8C - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E6AC8, 0x5 - .4byte sUnknown_80E6AAC, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6AAC: - .string "#+It can~27t be received.\0" - .align 2, 0 - -sUnknown_80E6AC8: - .string "#+There is no space for new mail.\0" - .align 2, 0 - - .global gUnknown_80E6AEC -gUnknown_80E6AEC: @ 80E6AEC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6B04 -gUnknown_80E6B04: @ 80E6B04 - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E6B4C, 0x5 - .4byte sUnknown_80E6B24, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6B24: - .string "#+You need to go further in the story.\0" - .align 2, 0 - -sUnknown_80E6B4C: - .string "#+You may not go to that #CGdungeon#R yet.\0" - .align 2, 0 - - .global gUnknown_80E6B78 -gUnknown_80E6B78: @ 80E6B78 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6B90 -gUnknown_80E6B90: @ 80E6B90 - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E6BC4, 0x5 - .4byte sUnknown_80E6BB0, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6BB0: - .string "#+Please try again.\0" - .align 2, 0 - -sUnknown_80E6BC4: - .string "#+There was a problem on your friend~27s end.\0" - .align 2, 0 - - .global gUnknown_80E6BF4 -gUnknown_80E6BF4: @ 80E6BF4 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6C0C -gUnknown_80E6C0C: @ 80E6C0C - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E6C2C, 0x5 - .4byte sUnknown_80E6BB0, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6C2C: - .string "#+Your friend is not responding.\0" - .align 2, 0 - - .global gUnknown_80E6C50 -gUnknown_80E6C50: @ 80E6C50 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6C68 -gUnknown_80E6C68: @ 80E6C68 - .4byte sUnknown_80E6734, 0x5 - .4byte sUnknown_80E6CA8, 0x5 - .4byte sUnknown_80E6C88, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6C88: - .string "#+went through successfully.\0" - .align 2, 0 - -sUnknown_80E6CA8: - .string "#+The item exchange with your friend\0" - .align 2, 0 - - .global gUnknown_80E6CD0 -gUnknown_80E6CD0: @ 80E6CD0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6CE8 -gUnknown_80E6CE8: @ 80E6CE8 - .4byte sUnknown_80E65C4, 0x5 - .4byte sUnknown_80E6D2C, 0x5 - .4byte sUnknown_80E6D08, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6D08: - .string "#+you and your friend are ready.\0" - .align 2, 0 - -sUnknown_80E6D2C: - .string "#+Please communicate only after both\0" - .align 2, 0 - - .global gUnknown_80E6D54 -gUnknown_80E6D54: @ 80E6D54 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6D6C -gUnknown_80E6D6C: @ 80E6D6C - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E6DB0, 0x5 - .4byte sUnknown_80E6D8C, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6D8C: - .string "#+connected. Please check again.\0" - .align 2, 0 - -sUnknown_80E6DB0: - .string "#+An incorrect number of GBA systems are\0" - .align 2, 0 - - .global gUnknown_80E6DDC -gUnknown_80E6DDC: @ 80E6DDC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x08, 0x00 - .byte 0x18, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6DF4 -gUnknown_80E6DF4: @ 80E6DF4 - .4byte sUnknown_80E6928, 0x5 - .4byte sUnknown_80E6E30, 0x5 - .4byte sUnknown_80E6E14, 0x5 - .4byte 0, 0x3 - -sUnknown_80E6E14: - .string "#+Please check it again.\0" - .align 2, 0 - -sUnknown_80E6E30: - .string "#+Communication failed.\0" - .align 2, 0 - - .string "pksdir0\0" - - .global gUnknown_80E6E50 -gUnknown_80E6E50:: @ 80E6E50 - .string "CHUNSOFT\0" - .align 2,0 - - .string "pksdir0\0" - - .string "pksdir0\0" - - .string "pksdir0\0" - - .string "pksdir0\0" - - - .global gUnknown_80E6E7C -gUnknown_80E6E7C: @ 80E6E7C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6E94 -gUnknown_80E6E94: @ 80E6E94 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x09, 0x00 - .byte 0x13, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .global gUnknown_80E6EAC -gUnknown_80E6EAC: @ 80E6EAC - .4byte Caution_80E6F04 - .4byte 3 - .4byte StorageEmpty_80E6EE4 - .4byte 3 - .4byte CheckAgain_80E6ECC - .4byte 3 - .4byte 0 - .4byte 1 - - .global CheckAgain_80E6ECC - CheckAgain_80E6ECC: - .string "{CENTER_ALIGN}Please check again.\0" - .align 2,0 - - .global StorageEmpty_80E6EE4 - StorageEmpty_80E6EE4: - .string "{CENTER_ALIGN}The storage space is empty!\0" - .align 2,0 - - .global Caution_80E6F04 - Caution_80E6F04: - .string "{CENTER_ALIGN}{COLOR_1 RED}Caution!{END_COLOR_TEXT_1} \0" - .align 2,0 - - .asciz "pksdir0" - diff --git a/include/pokemon.h b/include/pokemon.h index 5385c9b77..c2fabef6b 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -234,6 +234,7 @@ s32 GetEvolutionSequence(struct PokemonStruct* pokemon, struct EvolveStage* a2); void xxx_pokemonstruct_to_pokemon2_808DE50(struct PokemonStruct2* r0, struct PokemonStruct *r1, s32 r2); void SavePokemonStruct(struct unkStruct_8094924* a1, struct PokemonStruct* pokemon); void RestorePokemonStruct(struct unkStruct_8094924*, struct PokemonStruct*); +s32 sub_808E218(struct unkStruct_808E218_arg* a1, struct PokemonStruct* pokemon); #endif // GUARD_POKEMON_H diff --git a/ld_script.txt b/ld_script.txt index 3ee420d91..296eafdcf 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -442,7 +442,8 @@ SECTIONS { data/data_80E2068.o(.rodata); src/main_menu.o(.rodata); src/trade_items_menu.o(.rodata); - data/data_80E59A8.o(.rodata); + src/other_menus.o(.rodata); + src/unk_menu_203B360.o(.rodata); src/save_menu.o(.rodata); src/rescue_password_menu.o(.rodata); src/load_screen.o(.rodata); diff --git a/src/code_801EE10_mid.c b/src/code_801EE10_mid.c index 8a3fc1e6e..c9946fbfc 100644 --- a/src/code_801EE10_mid.c +++ b/src/code_801EE10_mid.c @@ -31,10 +31,7 @@ extern struct UnkTextStruct2 gUnknown_80DC2AC; extern u8 gUnknown_80DC2DC[]; -extern void sub_801F690(void); -extern void sub_801F700(void); extern void sub_8013818(u32 *, u32, u32, u32); -extern u32 sub_801F7E4(void); extern s32 GetKeyPress(void *); extern void sub_8013660(void *); extern void AddMenuCursorSprite(void *); @@ -46,7 +43,10 @@ extern void sub_80073B8(u32); extern void sub_80073E0(u32); extern s32 sub_8013800(u32 *, s32); extern void xxx_call_draw_string(s32, s32, u8 *, s32, s32); -extern s32 sub_808E218(struct unkStruct_808E218_arg* a1, struct PokemonStruct* pokemon); + +u32 sub_801F7E4(void); +void sub_801F690(void); +void sub_801F700(void); bool8 sub_801F428(s16 index, s32 param_2) { diff --git a/src/other_menus.c b/src/other_menus.c index 2310a26a9..672d554d6 100644 --- a/src/other_menus.c +++ b/src/other_menus.c @@ -23,36 +23,402 @@ struct unkStruct_203B35C }; extern struct unkStruct_203B35C *gUnknown_203B35C; -extern struct UnkTextStruct2 gUnknown_80E653C; +const struct UnkTextStruct2 gUnknown_80E653C = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL +}; +const struct UnkTextStruct2 gUnknown_80E6554 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; -extern struct UnkTextStruct2 gUnknown_80E66BC; -extern struct MenuItem gUnknown_80E66D4[]; -extern struct UnkTextStruct2 gUnknown_80E6748; -extern struct MenuItem gUnknown_80E6760[]; -extern struct UnkTextStruct2 gUnknown_80E67D4; -extern struct MenuItem gUnknown_80E67EC[]; -extern struct UnkTextStruct2 gUnknown_80E689C; -extern struct MenuItem gUnknown_80E68B4[]; -extern struct UnkTextStruct2 gUnknown_80E6938; -extern struct MenuItem gUnknown_80E6950[]; -extern struct UnkTextStruct2 gUnknown_80E69B0; -extern struct MenuItem gUnknown_80E69C8[]; -extern struct UnkTextStruct2 gUnknown_80E6A10; -extern struct MenuItem gUnknown_80E6A28[]; -extern struct UnkTextStruct2 gUnknown_80E6A74; -extern struct MenuItem gUnknown_80E6A8C[]; -extern struct UnkTextStruct2 gUnknown_80E6B78; -extern struct MenuItem gUnknown_80E6B90[]; -extern struct UnkTextStruct2 gUnknown_80E6BF4; -extern struct MenuItem gUnknown_80E6C0C[]; -extern struct UnkTextStruct2 gUnknown_80E6C50; -extern struct MenuItem gUnknown_80E6C68[]; -extern struct UnkTextStruct2 gUnknown_80E6CD0; -extern struct MenuItem gUnknown_80E6CE8[]; -extern struct UnkTextStruct2 gUnknown_80E6DDC; -extern struct MenuItem gUnknown_80E6DF4[]; -extern struct UnkTextStruct2 gUnknown_80E6D54; -extern struct MenuItem gUnknown_80E6D6C[]; +const u8 sUnknown_80E65C4[]; +const u8 sUnknown_80E65AC[]; +const u8 sUnknown_80E658C[]; +const struct MenuItem gUnknown_80E656C[4] = { + {sUnknown_80E65C4, 0x5}, + {sUnknown_80E65AC, 0x5}, + {sUnknown_80E658C, 0x5}, + {NULL, 0x3}, + +}; +ALIGNED(4) const u8 sUnknown_80E658C[] = _("{CENTER_ALIGN}Don~27t turn the power off!"); +ALIGNED(4) const u8 sUnknown_80E65AC[] = _("{CENTER_ALIGN}Item transmitting!"); +ALIGNED(4) const u8 sUnknown_80E65C4[] = _("{CENTER_ALIGN}{COLOR_1 RED}Caution!{END_COLOR_TEXT_1} "); + +const u8 sUnknown_80E65F8[]; +const struct MenuItem gUnknown_80E65D8[4] = { + {sUnknown_80E65C4, 0x5}, + {sUnknown_80E65F8, 0x5}, + {sUnknown_80E658C, 0x5}, + {NULL, 0x3}, + +}; +ALIGNED(4) const u8 sUnknown_80E65F8[] = _("{CENTER_ALIGN}Thank-You Mail in transmission!"); + +const u8 sUnknown_80E663C[]; +const struct MenuItem gUnknown_80E661C[4] = { + {sUnknown_80E65C4, 0x5}, + {sUnknown_80E663C, 0x5}, + {sUnknown_80E658C, 0x5}, + {NULL, 0x3}, + +}; +ALIGNED(4) const u8 sUnknown_80E663C[] = _("{CENTER_ALIGN}A-OK Mail in transmission!"); + +const struct MenuItem gUnknown_80E665C[4] = { + {sUnknown_80E65C4, 0x5}, + {sUnknown_80E65F8, 0x5}, + {sUnknown_80E658C, 0x5}, + {NULL, 0x3}, + +}; + +const u8 sUnknown_80E669C[]; +const struct MenuItem gUnknown_80E667C[4] = { + {sUnknown_80E65C4, 0x5}, + {sUnknown_80E669C, 0x5}, + {sUnknown_80E658C, 0x5}, + {NULL, 0x3}, + +}; +ALIGNED(4) const u8 sUnknown_80E669C[] = _("{CENTER_ALIGN}Wonder Mail in transmission!"); + +const struct UnkTextStruct2 gUnknown_80E66BC = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6734[]; +const u8 sUnknown_80E6710[]; +const u8 sUnknown_80E66F4[]; +const struct MenuItem gUnknown_80E66D4[4] = { + {sUnknown_80E6734, 0x5}, + {sUnknown_80E6710, 0x5}, + {sUnknown_80E66F4, 0x5}, + {NULL, 0x3}, + +}; +ALIGNED(4) const u8 sUnknown_80E66F4[] = _("{CENTER_ALIGN}Please press any button."); +ALIGNED(4) const u8 sUnknown_80E6710[] = _("{CENTER_ALIGN}Your adventure will be continued."); +ALIGNED(4) const u8 sUnknown_80E6734[] = _("{CENTER_ALIGN}#CGSuccess!#R "); + +const struct UnkTextStruct2 gUnknown_80E6748 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6780[]; +const u8 sUnknown_80E6794[]; +const u8 sUnknown_80E67B4[]; +const struct MenuItem gUnknown_80E6760[4] = { + {sUnknown_80E67B4, 0x5}, + {sUnknown_80E6794, 0x5}, + {sUnknown_80E6780, 0x5}, + {NULL, 0x3}, + +}; +ALIGNED(4) const u8 sUnknown_80E6780[] = _("{CENTER_ALIGN}please try again."); +ALIGNED(4) const u8 sUnknown_80E6794[] = _("{CENTER_ALIGN}Check the Game Link cable and"); +ALIGNED(4) const u8 sUnknown_80E67B4[] = _("{CENTER_ALIGN}#C2Communication error!#R "); + +const struct UnkTextStruct2 gUnknown_80E67D4 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E680C[]; +const struct MenuItem gUnknown_80E67EC[4] = { + {sUnknown_80E67B4, 0x5}, + {sUnknown_80E680C, 0x5}, + {sUnknown_80E6780, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E680C[] = _("{CENTER_ALIGN}Check your communication mode and"); + +const struct UnkTextStruct2 gUnknown_80E6830 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6888[]; +const u8 sUnknown_80E6868[]; +const struct MenuItem gUnknown_80E6848[4] = { + {sUnknown_80E67B4, 0x5}, + {sUnknown_80E6888, 0x5}, + {sUnknown_80E6868, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6868[] = _("{CENTER_ALIGN}Please inform the programmer."); +ALIGNED(4) const u8 sUnknown_80E6888[] = _("{CENTER_ALIGN}Check sum error."); + +const struct UnkTextStruct2 gUnknown_80E689C = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6928[]; +const u8 sUnknown_80E68FC[]; +const u8 sUnknown_80E68D4[]; +const struct MenuItem gUnknown_80E68B4[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E68FC, 0x5}, + {sUnknown_80E68D4, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E68D4[] = _("{CENTER_ALIGN}someone~27s storage space was full."); +ALIGNED(4) const u8 sUnknown_80E68FC[] = _("{CENTER_ALIGN}An item could not be transferred because"); +ALIGNED(4) const u8 sUnknown_80E6928[] = _("{CENTER_ALIGN}#C2Error!#R "); + +const struct UnkTextStruct2 gUnknown_80E6938 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6988[]; +const u8 sUnknown_80E6970[]; +const struct MenuItem gUnknown_80E6950[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E6988, 0x5}, + {sUnknown_80E6970, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6970[] = _("{CENTER_ALIGN}Please check again."); +ALIGNED(4) const u8 sUnknown_80E6988[] = _("{CENTER_ALIGN}This #CGSOS Mail#R can~27t be used."); + +const struct UnkTextStruct2 gUnknown_80E69B0 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E69E8[]; +const struct MenuItem gUnknown_80E69C8[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E69E8, 0x5}, + {sUnknown_80E6970, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E69E8[] = _("{CENTER_ALIGN}This #CGA-OK Mail#R can~27t be used."); + +const struct UnkTextStruct2 gUnknown_80E6A10 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6A48[]; +const struct MenuItem gUnknown_80E6A28[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E6A48, 0x5}, + {sUnknown_80E6970, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6A48[] = _("{CENTER_ALIGN}This #CGThank-You Mail#R can~27t be used."); + +const struct UnkTextStruct2 gUnknown_80E6A74 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6AC8[]; +const u8 sUnknown_80E6AAC[]; +const struct MenuItem gUnknown_80E6A8C[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E6AC8, 0x5}, + {sUnknown_80E6AAC, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6AAC[] = _("{CENTER_ALIGN}It can~27t be received."); +ALIGNED(4) const u8 sUnknown_80E6AC8[] = _("{CENTER_ALIGN}There is no space for new mail."); + +const struct UnkTextStruct2 gUnknown_80E6AEC = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6B4C[]; +const u8 sUnknown_80E6B24[]; +const struct MenuItem gUnknown_80E6B04[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E6B4C, 0x5}, + {sUnknown_80E6B24, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6B24[] = _("{CENTER_ALIGN}You need to go further in the story."); +ALIGNED(4) const u8 sUnknown_80E6B4C[] = _("{CENTER_ALIGN}You may not go to that #CGdungeon#R yet."); + +const struct UnkTextStruct2 gUnknown_80E6B78 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6BC4[]; +const u8 sUnknown_80E6BB0[]; +const struct MenuItem gUnknown_80E6B90[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E6BC4, 0x5}, + {sUnknown_80E6BB0, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6BB0[] = _("{CENTER_ALIGN}Please try again."); +ALIGNED(4) const u8 sUnknown_80E6BC4[] = _("{CENTER_ALIGN}There was a problem on your friend~27s end."); + +const struct UnkTextStruct2 gUnknown_80E6BF4 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6C2C[]; +const struct MenuItem gUnknown_80E6C0C[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E6C2C, 0x5}, + {sUnknown_80E6BB0, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6C2C[] = _("{CENTER_ALIGN}Your friend is not responding."); + +const struct UnkTextStruct2 gUnknown_80E6C50 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6CA8[]; +const u8 sUnknown_80E6C88[]; +const struct MenuItem gUnknown_80E6C68[4] = { + {sUnknown_80E6734, 0x5}, + {sUnknown_80E6CA8, 0x5}, + {sUnknown_80E6C88, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6C88[] = _("{CENTER_ALIGN}went through successfully."); +ALIGNED(4) const u8 sUnknown_80E6CA8[] = _("{CENTER_ALIGN}The item exchange with your friend"); + + +const struct UnkTextStruct2 gUnknown_80E6CD0 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6D2C[]; +const u8 sUnknown_80E6D08[]; +const struct MenuItem gUnknown_80E6CE8[4] = { + {sUnknown_80E65C4, 0x5}, + {sUnknown_80E6D2C, 0x5}, + {sUnknown_80E6D08, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6D08[] = _("{CENTER_ALIGN}you and your friend are ready."); +ALIGNED(4) const u8 sUnknown_80E6D2C[] = _("{CENTER_ALIGN}Please communicate only after both"); + +const struct UnkTextStruct2 gUnknown_80E6D54 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6DB0[]; +const u8 sUnknown_80E6D8C[]; +const struct MenuItem gUnknown_80E6D6C[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E6DB0, 0x5}, + {sUnknown_80E6D8C, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6D8C[] = _("{CENTER_ALIGN}connected. Please check again."); +ALIGNED(4) const u8 sUnknown_80E6DB0[] = _("{CENTER_ALIGN}An incorrect number of GBA systems are"); + +const struct UnkTextStruct2 gUnknown_80E6DDC = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x03, 0x00, 0x08, 0x00, + 0x18, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 sUnknown_80E6E30[]; +const u8 sUnknown_80E6E14[]; +const struct MenuItem gUnknown_80E6DF4[4] = { + {sUnknown_80E6928, 0x5}, + {sUnknown_80E6E30, 0x5}, + {sUnknown_80E6E14, 0x5}, + {NULL, 0x3}, +}; +ALIGNED(4) const u8 sUnknown_80E6E14[] = _("{CENTER_ALIGN}Please check it again."); +ALIGNED(4) const u8 sUnknown_80E6E30[] = _("{CENTER_ALIGN}Communication failed."); + +static const u8 fill0[] = "pksdir0"; +ALIGNED(4) const u8 gUnknown_80E6E50[] = "CHUNSOFT"; +static const u8 fill1[] = "pksdir0"; +static const u8 fill2[] = "pksdir0"; +static const u8 fill3[] = "pksdir0"; +static const u8 fill4[] = "pksdir0"; extern void sub_8037400(void); extern void ResetSprites(u32); @@ -66,7 +432,7 @@ extern void sub_80371B8(void); extern void sub_8037900(void); extern void PlayMenuSoundEffect(u32); extern u32 sub_8037798(void); -extern void SetMenuItems(struct MenuStruct *, void *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); +extern void SetMenuItems(struct MenuStruct *, void *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); extern void sub_8005838(u32, u32); extern void sub_80060EC(); extern void sub_800CB20(); @@ -287,8 +653,8 @@ u32 sub_80370F0(void) void sub_80371B8(void) { struct unkStruct_8035D94 *item; - struct MenuItem *MenuItems; - struct UnkTextStruct2 *puVar5; + const struct MenuItem *MenuItems; + const struct UnkTextStruct2 *puVar5; puVar5 = NULL; MenuItems = NULL; diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index c7bf3ad05..fe31a1132 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -26,14 +26,45 @@ struct unkStruct_203B360 }; extern struct unkStruct_203B360 *gUnknown_203B360; -extern struct UnkTextStruct2 gUnknown_80E6E7C; -extern struct UnkTextStruct2 gUnknown_80E6E94; -extern struct MenuItem gUnknown_80E6EAC[]; +const struct UnkTextStruct2 gUnknown_80E6E7C = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + 0x00, 0x00, + NULL +}; + +const struct UnkTextStruct2 gUnknown_80E6E94 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, + 0x05, 0x00, 0x09, 0x00, + 0x13, 0x05, + 0x05, 0x00, + NULL +}; + +const u8 CheckAgain_80E6ECC[]; +const u8 StorageEmpty_80E6EE4[]; +const u8 Caution_80E6F04[]; + +const struct MenuItem gUnknown_80E6EAC[4] = { + {Caution_80E6F04, 0x3}, + {StorageEmpty_80E6EE4, 0x3}, + {CheckAgain_80E6ECC, 0x3}, + {NULL, 1} +}; + +ALIGNED(4) const u8 CheckAgain_80E6ECC[] = _("{CENTER_ALIGN}Please check again."); +ALIGNED(4) const u8 StorageEmpty_80E6EE4[] = _("{CENTER_ALIGN}The storage space is empty!"); +ALIGNED(4) const u8 Caution_80E6F04[] = _("{CENTER_ALIGN}{COLOR_1 RED}Caution!{END_COLOR_TEXT_1} "); +static const u8 fill0[] = "pksdir0"; + extern void AddSprite(struct unkSprite *, u32, u32, u32); extern void sub_8038440(); extern void sub_8035CF4(struct MenuStruct *, u32, u32); -extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32); +extern void SetMenuItems(struct MenuStruct *, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *, u32, u32, u32); extern void sub_80384D0(); void sub_80382E4(s32 currMenu) From e9c981e1b7b2a77f00beb12f3bf093ef650f23b5 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 3 Jun 2023 13:29:20 -0700 Subject: [PATCH 16/21] simple decomp of nullsub funcs --- asm/code_800D090.s | 98 -------------------------------------------- ld_script.txt | 1 + src/code_800D090_1.c | 63 ++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 98 deletions(-) create mode 100644 src/code_800D090_1.c diff --git a/asm/code_800D090.s b/asm/code_800D090.s index ff13af4b7..a6f1c4b42 100644 --- a/asm/code_800D090.s +++ b/asm/code_800D090.s @@ -1085,102 +1085,4 @@ _0800DA70: .4byte 0x04000004 _0800DA74: .4byte 0x05000004 thumb_func_end sub_800D9B8 - thumb_func_start nullsub_189 -nullsub_189: - bx lr - thumb_func_end nullsub_189 - - thumb_func_start nullsub_190 -nullsub_190: - bx lr - thumb_func_end nullsub_190 - - thumb_func_start nullsub_191 -nullsub_191: - bx lr - thumb_func_end nullsub_191 - - thumb_func_start nullsub_192 -nullsub_192: - bx lr - thumb_func_end nullsub_192 - - thumb_func_start nullsub_193 -nullsub_193: - bx lr - thumb_func_end nullsub_193 - - thumb_func_start nullsub_194 -nullsub_194: - bx lr - thumb_func_end nullsub_194 - - thumb_func_start nullsub_195 -nullsub_195: - bx lr - thumb_func_end nullsub_195 - - thumb_func_start sub_800DA94 -sub_800DA94: - movs r0, 0 - bx lr - thumb_func_end sub_800DA94 - - thumb_func_start sub_800DA98 -sub_800DA98: - movs r0, 0 - bx lr - thumb_func_end sub_800DA98 - - thumb_func_start sub_800DA9C -sub_800DA9C: - movs r0, 0 - bx lr - thumb_func_end sub_800DA9C - - thumb_func_start nullsub_196 -nullsub_196: - bx lr - thumb_func_end nullsub_196 - - thumb_func_start nullsub_197 -nullsub_197: - bx lr - thumb_func_end nullsub_197 - - thumb_func_start nullsub_198 -nullsub_198: - bx lr - thumb_func_end nullsub_198 - - thumb_func_start sub_800DAAC -sub_800DAAC: - movs r0, 0 - bx lr - thumb_func_end sub_800DAAC - - thumb_func_start sub_800DAB0 -sub_800DAB0: - movs r0, 0 - bx lr - thumb_func_end sub_800DAB0 - - thumb_func_start sub_800DAB4 -sub_800DAB4: - movs r0, 0 - bx lr - thumb_func_end sub_800DAB4 - - thumb_func_start sub_800DAB8 -sub_800DAB8: - movs r0, 0 - bx lr - thumb_func_end sub_800DAB8 - - thumb_func_start sub_800DABC -sub_800DABC: - movs r0, 0 - bx lr - thumb_func_end sub_800DABC - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 296eafdcf..f80eb8226 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -85,6 +85,7 @@ SECTIONS { src/flash.o(.text); src/code_800D090.o(.text); asm/code_800D090.o(.text); + src/code_800D090_1.o(.text); src/code_800DAC0.o(.text); asm/code_800DAC0.o(.text); src/code_80118A4.o(.text); diff --git a/src/code_800D090_1.c b/src/code_800D090_1.c new file mode 100644 index 000000000..0bc59cad6 --- /dev/null +++ b/src/code_800D090_1.c @@ -0,0 +1,63 @@ +#include "global.h" + +void nullsub_189(void) +{} + +void nullsub_190(void) +{} + +void nullsub_191(void) +{} + +void nullsub_192(void) +{} + +void nullsub_193(void) +{} + +void nullsub_194(void) +{} + +void nullsub_195(void) +{} + +u32 sub_800DA94(void) { + return 0; +} + +u32 sub_800DA98(void) { + return 0; +} + +u32 sub_800DA9C(void) { + return 0; +} + +void nullsub_196(void) +{} + +void nullsub_197(void) +{} + +void nullsub_198(void) +{} + +u32 sub_800DAAC(void) { + return 0; +} + +u32 sub_800DAB0(void) { + return 0; +} + +u32 sub_800DAB4(void) { + return 0; +} + +u32 sub_800DAB8(void) { + return 0; +} + +u32 sub_800DABC(void) { + return 0; +} From ee7171825afc3855e167be08b6c747acb9692700 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 3 Jun 2023 13:52:44 -0700 Subject: [PATCH 17/21] combine dungeon_movement --- asm/code_807034C.s | 60 ------- include/dungeon_movement.h | 14 +- include/dungeon_movement_1.h | 14 -- ld_script.txt | 2 - src/code_805A120.c | 2 +- src/code_8077274_1.c | 2 +- src/dungeon_action.c | 2 +- src/dungeon_ai_movement.c | 2 +- src/dungeon_engine.c | 2 +- src/dungeon_movement.c | 306 ++++++++++++++++++++++++++++++++++- src/dungeon_movement_1.c | 282 -------------------------------- src/status.c | 2 +- 12 files changed, 323 insertions(+), 367 deletions(-) delete mode 100644 asm/code_807034C.s delete mode 100644 include/dungeon_movement_1.h delete mode 100644 src/dungeon_movement_1.c diff --git a/asm/code_807034C.s b/asm/code_807034C.s deleted file mode 100644 index 3e0985a95..000000000 --- a/asm/code_807034C.s +++ /dev/null @@ -1,60 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_807034C -sub_807034C: - push {r4,lr} - adds r4, r1, 0 - lsls r0, 16 - asrs r2, r0, 16 - ldr r0, [r4, 0x10] - cmp r0, 0 - bne _08070398 - ldrh r1, [r4] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08070398 - adds r0, r2, 0 - bl GetCrossableTerrain - lsls r0, 24 - lsrs r2, r0, 24 - ldrh r0, [r4] - movs r1, 0x3 - ands r1, r0 - cmp r2, 0x1 - beq _08070388 - cmp r2, 0x1 - bgt _08070382 - cmp r2, 0 - beq _0807038C - b _08070390 -_08070382: - cmp r2, 0x2 - beq _08070394 - b _08070390 -_08070388: - cmp r1, 0x2 - beq _08070390 -_0807038C: - cmp r1, 0x1 - bne _08070398 -_08070390: - movs r0, 0 - b _0807039A -_08070394: - cmp r1, 0 - bne _08070390 -_08070398: - movs r0, 0x1 -_0807039A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807034C - - .align 2, 0 diff --git a/include/dungeon_movement.h b/include/dungeon_movement.h index 111d98b54..4e05707be 100644 --- a/include/dungeon_movement.h +++ b/include/dungeon_movement.h @@ -1,6 +1,16 @@ -#ifndef GUARD_DUNGEON_MOVEMENT_H -#define GUARD_DUNGEON_MOVEMENT_H +#ifndef GUARD_DUNGEON_MOVEMENT +#define GUARD_DUNGEON_MOVEMENT + +#include "dungeon_entity.h" u8 GetCrossableTerrain(s16 species); +u8 sub_807034C(s16 id, struct Tile *tile); +u8 sub_80703A0(struct Entity *pokemon, struct Position *pos); +bool8 CanCrossWalls(struct Entity *pokemon); +bool8 sub_807049C(struct Entity *pokemon, struct Position *pos); +bool8 sub_8070564(struct Entity *pokemon, struct Position *pos); +bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos); +bool8 sub_80706A4(struct Entity *pokemon, struct Position *pos); +s32 CalcSpeedStage(struct Entity *pokemon); #endif diff --git a/include/dungeon_movement_1.h b/include/dungeon_movement_1.h deleted file mode 100644 index 5244b08d5..000000000 --- a/include/dungeon_movement_1.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef GUARD_DUNGEON_MOVEMENT_1_H -#define GUARD_DUNGEON_MOVEMENT_1_H - -#include "dungeon_entity.h" - -u8 sub_80703A0(struct Entity *pokemon, struct Position *pos); -bool8 CanCrossWalls(struct Entity *pokemon); -bool8 sub_807049C(struct Entity *pokemon, struct Position *pos); -bool8 sub_8070564(struct Entity *pokemon, struct Position *pos); -bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos); -bool8 sub_80706A4(struct Entity *pokemon, struct Position *pos); -s32 CalcSpeedStage(struct Entity *pokemon); - -#endif diff --git a/ld_script.txt b/ld_script.txt index f80eb8226..be91dbee4 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -228,8 +228,6 @@ SECTIONS { asm/code_806E8B0.o(.text); src/status_checks.o(.text); src/dungeon_movement.o(.text); - asm/code_807034C.o(.text); - src/dungeon_movement_1.o(.text); src/status_checks_1.o(.text); src/dungeon_capabilities.o(.text); asm/code_8070BC0.o(.text); diff --git a/src/code_805A120.c b/src/code_805A120.c index 8b021f699..be9239d3c 100644 --- a/src/code_805A120.c +++ b/src/code_805A120.c @@ -11,7 +11,7 @@ #include "dungeon_pokemon_attributes.h" #include "dungeon_items.h" #include "dungeon_map_access.h" -#include "dungeon_movement_1.h" +#include "dungeon_movement.h" #include "dungeon_random.h" #include "dungeon_util.h" #include "item.h" diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index 47b263c1e..f9f81e35b 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -5,7 +5,7 @@ #include "constants/type.h" #include "dungeon_entity.h" #include "dungeon_global_data.h" -#include "dungeon_movement_1.h" +#include "dungeon_movement.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_items.h" diff --git a/src/dungeon_action.c b/src/dungeon_action.c index a28b352e9..4265273df 100644 --- a/src/dungeon_action.c +++ b/src/dungeon_action.c @@ -7,7 +7,7 @@ #include "dungeon_entity.h" #include "dungeon_global_data.h" #include "dungeon_leader.h" -#include "dungeon_movement_1.h" +#include "dungeon_movement.h" #include "dungeon_util.h" #include "dungeon_pokemon_attributes.h" #include "pokemon.h" diff --git a/src/dungeon_ai_movement.c b/src/dungeon_ai_movement.c index adf30eff5..46c32afd5 100644 --- a/src/dungeon_ai_movement.c +++ b/src/dungeon_ai_movement.c @@ -12,7 +12,7 @@ #include "dungeon_capabilities_1.h" #include "dungeon_global_data.h" #include "dungeon_map_access.h" -#include "dungeon_movement_1.h" +#include "dungeon_movement.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_range.h" diff --git a/src/dungeon_engine.c b/src/dungeon_engine.c index 8dffe466c..e6d8551ad 100644 --- a/src/dungeon_engine.c +++ b/src/dungeon_engine.c @@ -5,7 +5,7 @@ #include "dungeon_global_data.h" #include "dungeon_ai.h" #include "dungeon_leader.h" -#include "dungeon_movement_1.h" +#include "dungeon_movement.h" #include "dungeon_util.h" extern s16 gSpeedTurns[2][25]; diff --git a/src/dungeon_movement.c b/src/dungeon_movement.c index 249d46822..ed16e4491 100644 --- a/src/dungeon_movement.c +++ b/src/dungeon_movement.c @@ -1,7 +1,20 @@ #include "global.h" -#include "dungeon_movement.h" #include "map.h" +#include "dungeon_movement.h" + +#include "constants/item.h" +#include "constants/iq_skill.h" +#include "constants/status.h" +#include "constants/type.h" +#include "constants/weather.h" +#include "dungeon_engine.h" +#include "dungeon_items.h" +#include "dungeon_global_data.h" +#include "dungeon_map_access.h" +#include "dungeon_pokemon_attributes.h" +#include "dungeon_util.h" #include "pokemon.h" +#include "weather.h" extern u8 gWalkableTileToCrossableTerrain[8]; @@ -24,3 +37,294 @@ u8 GetCrossableTerrain(s16 species) return walkableTiles; } } + +u8 sub_807034C(s16 id, struct Tile *tile) +{ + s32 crossableTerrain; + u16 tileFlags; + s32 id_s32; + + id_s32 = id; + + if ((tile->monster == NULL) && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) { + crossableTerrain = GetCrossableTerrain(id_s32); + tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + switch(crossableTerrain) + { + case CROSSABLE_TERRAIN_LIQUID: + if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; + case CROSSABLE_TERRAIN_REGULAR: + if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE; + break; + case CROSSABLE_TERRAIN_WALL: + default: + return FALSE; + case CROSSABLE_TERRAIN_CREVICE: + if(tileFlags != 0) return FALSE; + } + } + return TRUE; +} + +u8 sub_80703A0(struct Entity *pokemon, struct Position *pos) +{ + u8 crossableTerrain; + struct Tile *tile; + u16 tileFlags; + struct EntityInfo *entityInfo; + + entityInfo = pokemon->info; + tile = GetTile(pos->x,pos->y); + if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && + (DUNGEON_MAX_SIZE_Y > pos->y) && (tile->monster == NULL) && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) { + if ((IsCurrentFixedRoomBossFight()) || ((entityInfo->transformStatus != STATUS_MOBILE && (!HasHeldItem(pokemon, ITEM_MOBILE_SCARF))))) { + crossableTerrain = GetCrossableTerrain(entityInfo->id); + tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) { + crossableTerrain = CROSSABLE_TERRAIN_CREVICE; + } + if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) { + crossableTerrain = CROSSABLE_TERRAIN_WALL; + } + switch(crossableTerrain) + { + case CROSSABLE_TERRAIN_LIQUID: + if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; + case CROSSABLE_TERRAIN_REGULAR: + if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE; + break; + case CROSSABLE_TERRAIN_WALL: + default: + return FALSE; + case CROSSABLE_TERRAIN_CREVICE: + if(tileFlags != 0) return FALSE; + } + } else return FALSE; + } + return TRUE; +} + +bool8 CanCrossWalls(struct Entity *pokemon) +{ + struct EntityInfo *pokemonInfo = pokemon->info; + struct EntityInfo *pokemonInfo2 = pokemonInfo; + if (pokemonInfo2->transformStatus == STATUS_MOBILE) + { + return TRUE; + } + if (HasHeldItem(pokemon, ITEM_MOBILE_SCARF)) + { + return TRUE; + } + if (GetCrossableTerrain(pokemonInfo2->id) == CROSSABLE_TERRAIN_WALL) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_807049C(struct Entity *pokemon, struct Position *pos) +{ + s32 crossableTerrain; + struct Tile *tile; + u16 tileFlags; + struct EntityInfo *entityInfo; + + entityInfo = pokemon->info; + tile = GetTile(pos->x, pos->y); + if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && + (DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) && + (tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) { + if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) { + crossableTerrain = GetCrossableTerrain(entityInfo->id); + tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) { + crossableTerrain = CROSSABLE_TERRAIN_CREVICE; + } + if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) { + crossableTerrain = CROSSABLE_TERRAIN_WALL; + } + switch(crossableTerrain) + { + case CROSSABLE_TERRAIN_LIQUID: + if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; + case CROSSABLE_TERRAIN_REGULAR: + if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE; + break; + case CROSSABLE_TERRAIN_WALL: + default: + return FALSE; + case CROSSABLE_TERRAIN_CREVICE: + if(tileFlags != 0) return FALSE; + } + } + else return FALSE; + } + return TRUE; +} + +bool8 sub_8070564(struct Entity *pokemon, struct Position *pos) +{ + u8 crossableTerrain; + struct Tile *tile; + u16 tileFlags; + struct EntityInfo *entityInfo; +#ifndef NONMATCHING + register s32 tileFlags_0 asm("r0"); + register s32 crossableTerrain2 asm("r3"); +#else + s32 tileFlags_0; + s32 crossableTerrain2; +#endif + + entityInfo = pokemon->info; + tile = GetTile(pos->x, pos->y); + if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && + (DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) && + (tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) { + crossableTerrain2 = crossableTerrain = GetCrossableTerrain(entityInfo->id); + tileFlags_0 = tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + switch(crossableTerrain) + { + case CROSSABLE_TERRAIN_WALL: // 3 + case CROSSABLE_TERRAIN_CREVICE: // 2 + case 4 ... INT_MAX: + if (crossableTerrain2 > CROSSABLE_TERRAIN_WALL) return FALSE; + if(tileFlags != 0) + return FALSE; + break; + case CROSSABLE_TERRAIN_REGULAR: // 0 + if(tileFlags == TERRAIN_TYPE_NORMAL) + default: + return FALSE; + break; + case CROSSABLE_TERRAIN_LIQUID: // 1 + if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; + if (tileFlags_0 == TERRAIN_TYPE_NORMAL) return FALSE; + return TRUE; + } + } + return TRUE; +} + +bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos) +{ + s32 crossableTerrain; + struct Tile *tile; + u16 tileFlags; + struct EntityInfo *entityInfo; + + entityInfo = pokemon->info; + tile = GetTile(pos->x, pos->y); + if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && + (DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) && + ((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER)))) { + if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) { + crossableTerrain = GetCrossableTerrain(entityInfo->id); + tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) { + crossableTerrain = CROSSABLE_TERRAIN_CREVICE; + } + if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) { + crossableTerrain = CROSSABLE_TERRAIN_WALL; + } + + switch(crossableTerrain) + { + case CROSSABLE_TERRAIN_WALL: + default: + return FALSE; + case CROSSABLE_TERRAIN_REGULAR: + case CROSSABLE_TERRAIN_LIQUID: + case CROSSABLE_TERRAIN_CREVICE: + if(tileFlags != 0) return FALSE; + } + } + else return FALSE; + } + return TRUE; +} + +bool8 sub_80706A4(struct Entity *pokemon, struct Position *pos) +{ + s32 crossableTerrain; + struct Tile *tile; + u16 tileFlags; + struct EntityInfo *entityInfo; + + entityInfo = pokemon->info; + tile = GetTile(pos->x, pos->y); + if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && + (DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) && + ((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER) && (tile->monster->info == entityInfo)))) { + if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) { + crossableTerrain = GetCrossableTerrain(entityInfo->id); + tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) { + crossableTerrain = CROSSABLE_TERRAIN_CREVICE; + } + if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) { + crossableTerrain = CROSSABLE_TERRAIN_WALL; + } + switch(crossableTerrain) + { + case CROSSABLE_TERRAIN_LIQUID: + if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; + case CROSSABLE_TERRAIN_REGULAR: + if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE; + break; + case CROSSABLE_TERRAIN_WALL: + default: + return FALSE; + case CROSSABLE_TERRAIN_CREVICE: + if(tileFlags != 0) return FALSE; + } + } + else return FALSE; + } + return TRUE; +} + +s32 CalcSpeedStage(struct Entity *pokemon) +{ + s32 index; + s32 speed; + struct EntityInfo * entityInfo; + + entityInfo = pokemon->info; + speed = 0; + + for(index = 0; index < NUM_SPEED_COUNTERS; index++) + { + if (entityInfo->speedUpCounters[index + NUM_SPEED_COUNTERS] != 0) { + speed--; + } + if (entityInfo->speedUpCounters[index] != 0) { + speed++; + } + } + + if (entityInfo->nonVolatileStatus == STATUS_PARALYSIS) { + speed--; + } + + speed += GetMovementSpeed(entityInfo->id); + if ((MonsterIsType(pokemon, TYPE_ICE)) && (GetApparentWeather(pokemon) == WEATHER_SNOW)) { + speed++; + } + if (entityInfo->apparentID == MONSTER_DEOXYS_SPEED) { + speed++; + } + if ((entityInfo->id == MONSTER_KECLEON) && entityInfo->isNotTeamMember && + gDungeon->unk66E) { + speed++; + } + if (speed < 0) { + speed = 0; + } + if (MAX_SPEED_STAGE < speed) { + speed = MAX_SPEED_STAGE; + } + entityInfo->speedStage = speed; + return speed; +} diff --git a/src/dungeon_movement_1.c b/src/dungeon_movement_1.c deleted file mode 100644 index b612ca79e..000000000 --- a/src/dungeon_movement_1.c +++ /dev/null @@ -1,282 +0,0 @@ -#include "global.h" -#include "dungeon_movement_1.h" - -#include "constants/item.h" -#include "constants/iq_skill.h" -#include "constants/status.h" -#include "constants/type.h" -#include "constants/weather.h" -#include "dungeon_engine.h" -#include "dungeon_items.h" -#include "dungeon_global_data.h" -#include "dungeon_movement.h" -#include "dungeon_map_access.h" -#include "dungeon_pokemon_attributes.h" -#include "dungeon_util.h" -#include "map.h" -#include "pokemon.h" -#include "weather.h" - - -u8 sub_80703A0(struct Entity *pokemon, struct Position *pos) -{ - u8 crossableTerrain; - struct Tile *tile; - u16 tileFlags; - struct EntityInfo *entityInfo; - - entityInfo = pokemon->info; - tile = GetTile(pos->x,pos->y); - if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && - (DUNGEON_MAX_SIZE_Y > pos->y) && (tile->monster == NULL) && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) { - if ((IsCurrentFixedRoomBossFight()) || ((entityInfo->transformStatus != STATUS_MOBILE && (!HasHeldItem(pokemon, ITEM_MOBILE_SCARF))))) { - crossableTerrain = GetCrossableTerrain(entityInfo->id); - tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); - if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) { - crossableTerrain = CROSSABLE_TERRAIN_CREVICE; - } - if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) { - crossableTerrain = CROSSABLE_TERRAIN_WALL; - } - switch(crossableTerrain) - { - case CROSSABLE_TERRAIN_LIQUID: - if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; - case CROSSABLE_TERRAIN_REGULAR: - if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE; - break; - case CROSSABLE_TERRAIN_WALL: - default: - return FALSE; - case CROSSABLE_TERRAIN_CREVICE: - if(tileFlags != 0) return FALSE; - } - } else return FALSE; - } - return TRUE; -} - -bool8 CanCrossWalls(struct Entity *pokemon) -{ - struct EntityInfo *pokemonInfo = pokemon->info; - struct EntityInfo *pokemonInfo2 = pokemonInfo; - if (pokemonInfo2->transformStatus == STATUS_MOBILE) - { - return TRUE; - } - if (HasHeldItem(pokemon, ITEM_MOBILE_SCARF)) - { - return TRUE; - } - if (GetCrossableTerrain(pokemonInfo2->id) == CROSSABLE_TERRAIN_WALL) - { - return TRUE; - } - return FALSE; -} - -bool8 sub_807049C(struct Entity *pokemon, struct Position *pos) -{ - s32 crossableTerrain; - struct Tile *tile; - u16 tileFlags; - struct EntityInfo *entityInfo; - - entityInfo = pokemon->info; - tile = GetTile(pos->x, pos->y); - if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && - (DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) && - (tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) { - if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) { - crossableTerrain = GetCrossableTerrain(entityInfo->id); - tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); - if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) { - crossableTerrain = CROSSABLE_TERRAIN_CREVICE; - } - if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) { - crossableTerrain = CROSSABLE_TERRAIN_WALL; - } - switch(crossableTerrain) - { - case CROSSABLE_TERRAIN_LIQUID: - if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; - case CROSSABLE_TERRAIN_REGULAR: - if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE; - break; - case CROSSABLE_TERRAIN_WALL: - default: - return FALSE; - case CROSSABLE_TERRAIN_CREVICE: - if(tileFlags != 0) return FALSE; - } - } - else return FALSE; - } - return TRUE; -} - -bool8 sub_8070564(struct Entity *pokemon, struct Position *pos) -{ - u8 crossableTerrain; - struct Tile *tile; - u16 tileFlags; - struct EntityInfo *entityInfo; -#ifndef NONMATCHING - register s32 tileFlags_0 asm("r0"); - register s32 crossableTerrain2 asm("r3"); -#else - s32 tileFlags_0; - s32 crossableTerrain2; -#endif - - entityInfo = pokemon->info; - tile = GetTile(pos->x, pos->y); - if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && - (DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) && - (tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) { - crossableTerrain2 = crossableTerrain = GetCrossableTerrain(entityInfo->id); - tileFlags_0 = tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); - switch(crossableTerrain) - { - case CROSSABLE_TERRAIN_WALL: // 3 - case CROSSABLE_TERRAIN_CREVICE: // 2 - case 4 ... INT_MAX: - if (crossableTerrain2 > CROSSABLE_TERRAIN_WALL) return FALSE; - if(tileFlags != 0) - return FALSE; - break; - case CROSSABLE_TERRAIN_REGULAR: // 0 - if(tileFlags == TERRAIN_TYPE_NORMAL) - default: - return FALSE; - break; - case CROSSABLE_TERRAIN_LIQUID: // 1 - if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; - if (tileFlags_0 == TERRAIN_TYPE_NORMAL) return FALSE; - return TRUE; - } - } - return TRUE; -} - -bool8 sub_80705F0(struct Entity *pokemon, struct Position *pos) -{ - s32 crossableTerrain; - struct Tile *tile; - u16 tileFlags; - struct EntityInfo *entityInfo; - - entityInfo = pokemon->info; - tile = GetTile(pos->x, pos->y); - if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && - (DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) && - ((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER)))) { - if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) { - crossableTerrain = GetCrossableTerrain(entityInfo->id); - tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); - if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) { - crossableTerrain = CROSSABLE_TERRAIN_CREVICE; - } - if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) { - crossableTerrain = CROSSABLE_TERRAIN_WALL; - } - - switch(crossableTerrain) - { - case CROSSABLE_TERRAIN_WALL: - default: - return FALSE; - case CROSSABLE_TERRAIN_REGULAR: - case CROSSABLE_TERRAIN_LIQUID: - case CROSSABLE_TERRAIN_CREVICE: - if(tileFlags != 0) return FALSE; - } - } - else return FALSE; - } - return TRUE; -} - -bool8 sub_80706A4(struct Entity *pokemon, struct Position *pos) -{ - s32 crossableTerrain; - struct Tile *tile; - u16 tileFlags; - struct EntityInfo *entityInfo; - - entityInfo = pokemon->info; - tile = GetTile(pos->x, pos->y); - if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) && - (DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) && - ((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER) && (tile->monster->info == entityInfo)))) { - if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) { - crossableTerrain = GetCrossableTerrain(entityInfo->id); - tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); - if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) { - crossableTerrain = CROSSABLE_TERRAIN_CREVICE; - } - if (IQSkillIsEnabled(pokemon, IQ_SUPER_MOBILE)) { - crossableTerrain = CROSSABLE_TERRAIN_WALL; - } - switch(crossableTerrain) - { - case CROSSABLE_TERRAIN_LIQUID: - if(tileFlags == TERRAIN_TYPE_SECONDARY) return FALSE; - case CROSSABLE_TERRAIN_REGULAR: - if(tileFlags == TERRAIN_TYPE_NORMAL) return FALSE; - break; - case CROSSABLE_TERRAIN_WALL: - default: - return FALSE; - case CROSSABLE_TERRAIN_CREVICE: - if(tileFlags != 0) return FALSE; - } - } - else return FALSE; - } - return TRUE; -} - -s32 CalcSpeedStage(struct Entity *pokemon) -{ - s32 index; - s32 speed; - struct EntityInfo * entityInfo; - - entityInfo = pokemon->info; - speed = 0; - - for(index = 0; index < NUM_SPEED_COUNTERS; index++) - { - if (entityInfo->speedUpCounters[index + NUM_SPEED_COUNTERS] != 0) { - speed--; - } - if (entityInfo->speedUpCounters[index] != 0) { - speed++; - } - } - - if (entityInfo->nonVolatileStatus == STATUS_PARALYSIS) { - speed--; - } - - speed += GetMovementSpeed(entityInfo->id); - if ((MonsterIsType(pokemon, TYPE_ICE)) && (GetApparentWeather(pokemon) == WEATHER_SNOW)) { - speed++; - } - if (entityInfo->apparentID == MONSTER_DEOXYS_SPEED) { - speed++; - } - if ((entityInfo->id == MONSTER_KECLEON) && entityInfo->isNotTeamMember && - gDungeon->unk66E) { - speed++; - } - if (speed < 0) { - speed = 0; - } - if (MAX_SPEED_STAGE < speed) { - speed = MAX_SPEED_STAGE; - } - entityInfo->speedStage = speed; - return speed; -} diff --git a/src/status.c b/src/status.c index 4b3c6bb57..67f015b6c 100644 --- a/src/status.c +++ b/src/status.c @@ -12,7 +12,7 @@ #include "dungeon_items.h" #include "code_808417C.h" #include "code_8077274_1.h" -#include "dungeon_movement_1.h" +#include "dungeon_movement.h" #include "map.h" extern u8 gAvailablePokemonNames[]; From f3be2cd40731c1d4d8d232d502f58f678982ad00 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 3 Jun 2023 19:59:48 -0700 Subject: [PATCH 18/21] more decomp --- asm/code_8048480.s | 560 ----------------------------- include/constants/dungeon_action.h | 4 + include/dungeon_entity.h | 3 +- src/code_8048480.c | 169 +++++++++ src/code_8048DB8.c | 144 +++++++- 5 files changed, 317 insertions(+), 563 deletions(-) diff --git a/asm/code_8048480.s b/asm/code_8048480.s index c7747b791..a269780cd 100644 --- a/asm/code_8048480.s +++ b/asm/code_8048480.s @@ -5,349 +5,6 @@ .text - thumb_func_start sub_80487E0 -sub_80487E0: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - mov r9, r0 - mov r8, r1 - lsls r3, r2, 24 - ldr r5, [r1, 0x70] - ldr r4, _08048858 - lsrs r3, 23 - adds r0, r5, 0 - adds r0, 0x5C - ldrb r0, [r0] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r3, r1 - adds r0, r1, r4 - movs r2, 0 - ldrsh r6, [r0, r2] - adds r0, r5, 0 - adds r0, 0x5D - ldrb r2, [r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0 - adds r4, r3, r4 - movs r2, 0 - ldrsh r0, [r4, r2] - adds r6, r0 - ldr r0, _0804885C - adds r1, r0 - movs r4, 0 - ldrsh r2, [r1, r4] - adds r3, r0 - movs r1, 0 - ldrsh r0, [r3, r1] - adds r2, r0 - movs r0, 0x1 - str r0, [sp] - mov r0, r9 - mov r1, r8 - movs r3, 0 - bl sub_8078B5C - ldrb r0, [r5, 0x6] - cmp r0, 0 - bne _08048906 - adds r0, r5, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - beq _08048852 - cmp r0, 0x47 - bne _08048860 -_08048852: - movs r0, 0x1 - b _08048862 - .align 2, 0 -_08048858: .4byte gTypeGummiIQBoost -_0804885C: .4byte gUnknown_810A808 -_08048860: - movs r0, 0 -_08048862: - cmp r0, 0 - bne _08048906 - movs r2, 0xC - ldrsh r7, [r5, r2] - ldrh r0, [r5, 0xC] - adds r0, r6 - strh r0, [r5, 0xC] - adds r2, r7, r6 - lsls r0, 16 - cmp r0, 0 - bgt _0804887C - movs r0, 0x1 - strh r0, [r5, 0xC] -_0804887C: - movs r4, 0xC - ldrsh r0, [r5, r4] - ldr r1, _080488A0 - cmp r0, r1 - ble _08048888 - strh r1, [r5, 0xC] -_08048888: - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r7, r0 - bne _080488A8 - ldr r0, _080488A4 - ldr r2, [r0] - mov r0, r9 - mov r1, r8 - bl sub_80522F4 - b _08048906 - .align 2, 0 -_080488A0: .4byte 0x000003e7 -_080488A4: .4byte gUnknown_80FD644 -_080488A8: - subs r0, r2, r7 - movs r2, 0 - cmp r0, 0x8 - bgt _080488BE - movs r2, 0x1 - cmp r0, 0x4 - bgt _080488BE - movs r2, 0x3 - cmp r0, 0x2 - ble _080488BE - movs r2, 0x2 -_080488BE: - movs r4, 0xC - ldrsh r0, [r5, r4] - subs r0, r7 - movs r4, 0 - cmp r0, 0x8 - bgt _080488D8 - movs r4, 0x1 - cmp r0, 0x4 - bgt _080488D8 - movs r4, 0x3 - cmp r0, 0x2 - ble _080488D8 - movs r4, 0x2 -_080488D8: - ldr r1, _08048914 - lsls r0, r2, 2 - adds r0, r1 - ldr r2, [r0] - mov r0, r9 - mov r1, r8 - bl sub_80522F4 - ldr r1, _08048918 - lsls r0, r4, 2 - adds r0, r1 - ldr r2, [r0] - mov r0, r9 - mov r1, r8 - bl sub_80522F4 - mov r0, r8 - bl LoadIQSkills - adds r0, r5, 0 - adds r1, r7, 0 - bl sub_806A7E8 -_08048906: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08048914: .4byte gUnknown_80FD648 -_08048918: .4byte gUnknown_80FD6E8 - thumb_func_end sub_80487E0 - - thumb_func_start sub_804891C -sub_804891C: - push {lr} - movs r2, 0x3 - bl RaiseAtkStatTarget - pop {r0} - bx r0 - thumb_func_end sub_804891C - - thumb_func_start sub_8048928 -sub_8048928: - push {lr} - movs r2, 0x3 - bl RaiseSpAtkStatTarget - pop {r0} - bx r0 - thumb_func_end sub_8048928 - - thumb_func_start sub_8048934 -sub_8048934: - push {lr} - movs r2, 0x3 - bl RaiseDefStatTarget - pop {r0} - bx r0 - thumb_func_end sub_8048934 - - thumb_func_start sub_8048940 -sub_8048940: - push {lr} - movs r2, 0x3 - bl RaiseSpDefStatTarget - pop {r0} - bx r0 - thumb_func_end sub_8048940 - - thumb_func_start nullsub_94 -nullsub_94: - bx lr - thumb_func_end nullsub_94 - - thumb_func_start sub_8048950 -sub_8048950: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - mov r8, r1 - ldrb r0, [r1, 0x2] - bl GetItemMoveID - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08048988 - ldr r0, _08048984 -_08048978: - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage - b _08048A58 - .align 2, 0 -_08048984: .4byte gUnknown_80FE3E8 -_08048988: - mov r1, r8 - ldrb r0, [r1, 0x2] - bl IsHMItem - lsls r0, 24 - cmp r0, 0 - beq _080489A0 - ldr r0, _0804899C - b _08048978 - .align 2, 0 -_0804899C: .4byte gPtrCantUseInDungeonMessage -_080489A0: - movs r7, 0 -_080489A2: - ldr r0, _080489FC - ldr r0, [r0] - lsls r1, r7, 2 - ldr r2, _08048A00 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08048A12 - ldr r6, [r4, 0x70] - movs r0, 0x2 - ldrsh r1, [r6, r0] - mov r0, r9 - bl CanMonLearnMove - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0 - bl CannotMove - lsls r0, 24 - cmp r0, 0 - beq _080489DC - movs r5, 0 -_080489DC: - adds r0, r6, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080489E8 - movs r5, 0 -_080489E8: - adds r0, r6, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - beq _080489F6 - cmp r0, 0x47 - bne _08048A04 -_080489F6: - movs r0, 0x1 - b _08048A06 - .align 2, 0 -_080489FC: .4byte gDungeon -_08048A00: .4byte 0x0001357c -_08048A04: - movs r0, 0 -_08048A06: - cmp r0, 0 - beq _08048A0C - movs r5, 0 -_08048A0C: - ldr r1, _08048A50 - adds r0, r6, r1 - strb r5, [r0] -_08048A12: - adds r7, 0x1 - cmp r7, 0x3 - ble _080489A2 - movs r0, 0 - movs r1, 0x1 - bl DrawFieldGiveItemMenu - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08048A58 - mov r0, r10 - mov r1, r8 - bl sub_804245C - adds r0, r4, 0 - mov r1, r9 - bl sub_8072938 - lsls r0, 24 - cmp r0, 0 - beq _08048A58 - ldr r2, _08048A54 - mov r0, r10 - movs r1, 0 - bl sub_8044E24 - movs r0, 0x1 - b _08048A5A - .align 2, 0 -_08048A50: .4byte 0x00000157 -_08048A54: .4byte 0x00000141 -_08048A58: - movs r0, 0 -_08048A5A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8048950 - thumb_func_start sub_8048A68 sub_8048A68: push {r4-r7,lr} @@ -506,221 +163,4 @@ _08048B8E: bx r1 thumb_func_end sub_8048A68 - thumb_func_start sub_8048B9C -sub_8048B9C: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x20 - mov r9, r0 - movs r0, 0 - mov r8, r0 - mov r2, r9 - ldr r0, [r2, 0x70] - adds r6, r0, 0 - adds r6, 0x44 - ldrb r1, [r1] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08048BD4 - ldr r0, _08048BD0 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage - movs r0, 0 - b _08048D40 - .align 2, 0 -_08048BD0: .4byte gUnknown_80FE3E8 -_08048BD4: - movs r2, 0 -_08048BD6: - ldr r0, _08048C28 - ldr r0, [r0] - lsls r1, r2, 2 - ldr r3, _08048C2C - adds r0, r3 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - str r2, [sp, 0x1C] - bl EntityExists - lsls r0, 24 - ldr r2, [sp, 0x1C] - cmp r0, 0 - beq _08048C3E - ldr r5, [r4, 0x70] - movs r7, 0x1 - adds r0, r4, 0 - movs r1, 0 - bl CannotMove - lsls r0, 24 - ldr r2, [sp, 0x1C] - cmp r0, 0 - beq _08048C0A - movs r7, 0 -_08048C0A: - adds r0, r5, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08048C16 - movs r7, 0 -_08048C16: - adds r0, r5, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - beq _08048C24 - cmp r0, 0x47 - bne _08048C30 -_08048C24: - movs r0, 0x1 - b _08048C32 - .align 2, 0 -_08048C28: .4byte gDungeon -_08048C2C: .4byte 0x0001357c -_08048C30: - movs r0, 0 -_08048C32: - cmp r0, 0 - beq _08048C38 - movs r7, 0 -_08048C38: - ldr r4, _08048C5C - adds r0, r5, r4 - strb r7, [r0] -_08048C3E: - adds r2, 0x1 - cmp r2, 0x3 - ble _08048BD6 - movs r0, 0 - movs r1, 0x1 - bl DrawFieldGiveItemMenu - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08048C60 - movs r0, 0 - b _08048D40 - .align 2, 0 -_08048C5C: .4byte 0x00000157 -_08048C60: - add r1, sp, 0x4 - adds r0, r6, 0 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - b _08048CE2 -_08048C6E: - ldrh r0, [r6] - cmp r0, 0x1D - bne _08048C7C - adds r0, r6, 0 - bl sub_80637E8 - b _08048CE2 -_08048C7C: - cmp r0, 0x20 - bne _08048C9A - movs r0, 0 - movs r1, 0 - bl sub_803EAF0 - adds r0, r6, 0 - bl sub_8063BB4 - movs r0, 0x1 - bl sub_8044C10 - movs r5, 0x1 - mov r8, r5 - b _08048CE2 -_08048C9A: - cmp r0, 0x21 - bne _08048CB6 - movs r0, 0 - movs r1, 0 - bl sub_803EAF0 - adds r0, r6, 0 - movs r1, 0 - bl sub_8063CF0 - movs r0, 0x1 - bl sub_8044C10 - b _08048CE2 -_08048CB6: - cmp r0, 0x1E - beq _08048CBE - cmp r0, 0x33 - bne _08048CD0 -_08048CBE: - movs r0, 0 - movs r1, 0 - bl sub_803EAF0 - adds r0, r6, 0 - movs r1, 0 - bl sub_8063A70 - b _08048CE2 -_08048CD0: - cmp r0, 0x1F - bne _08048CE2 - movs r0, 0 - movs r1, 0 - bl sub_803EAF0 - adds r0, r6, 0 - bl sub_8063B54 -_08048CE2: - adds r0, r6, 0 - bl ClearMonsterActionFields - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - movs r3, 0 - bl sub_8062F90 - lsls r0, 24 - cmp r0, 0 - beq _08048C6E - mov r0, r8 - cmp r0, 0 - beq _08048D38 - ldr r0, _08048D34 - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl sub_8052B8C - cmp r0, 0x1 - bne _08048C6E - adds r1, r6, 0 - add r0, sp, 0x4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - mov r0, r9 - movs r1, 0 - movs r2, 0x6E - bl sub_8044DF0 - adds r0, r6, 0 - movs r1, 0x2C - bl SetMonsterActionFields - b _08048D3E - .align 2, 0 -_08048D34: .4byte gUnknown_80FECA0 -_08048D38: - movs r0, 0x1 - bl sub_8044C10 -_08048D3E: - mov r0, r8 -_08048D40: - add sp, 0x20 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8048B9C - .align 2, 0 diff --git a/include/constants/dungeon_action.h b/include/constants/dungeon_action.h index 0d5a867cf..32a10ae9f 100644 --- a/include/constants/dungeon_action.h +++ b/include/constants/dungeon_action.h @@ -23,7 +23,11 @@ enum Action ACTION_CHANGE_TACTICS = 0x1A, ACTION_CHECK_SUMMARY = 0x1B, ACTION_TALK_MENU = 0x1C, // Talking to another Pokémon via the menu. + ACTION_UNK1D = 0x1D, ACTION_SET_MOVE = 0x1E, // Registering a move. + ACTION_UNK1F = 0x1F, + ACTION_UNK20 = 0x20, + ACTION_UNK21 = 0x21, ACTION_EAT_AI = 0x23, ACTION_THROW_ITEM_AI = 0x24, ACTION_THROW_STRAIGHT_PLAYER = 0x27, diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index d9572b407..435304f03 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -208,7 +208,8 @@ struct EntityInfo u8 unk153; u8 unk154; u8 unk155; - u8 fill158[0x158 - 0x156]; + u8 unk156; + bool8 unk157; u8 unk158; u8 unk159; u8 unk15A; diff --git a/src/code_8048480.c b/src/code_8048480.c index 2aae38ccb..f77925de5 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -2,13 +2,16 @@ #include "constants/iq_skill.h" #include "constants/status.h" #include "dungeon_entity.h" +#include "dungeon_util.h" #include "dungeon_global_data.h" #include "move_effects_target.h" +#include "dungeon_capabilities.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "number_util.h" #include "moves.h" #include "code_8077274_1.h" +#include "pokemon.h" #include "position.h" #include "status.h" @@ -35,7 +38,20 @@ extern u8 *gUnknown_80FE454[]; extern u8 *gPtrSelfHealPreventedHungerMessage[]; extern u8 *gUnknown_80F9740[]; extern u8 *gUnknown_80F9760[]; +extern u8 *gUnknown_80FD644[]; +extern u8 *gUnknown_80FD648[]; +extern u8 *gUnknown_80FD6E8[]; +extern u8 *gPtrCantUseInDungeonMessage[]; +extern u8 *gUnknown_80FE3E8[]; +extern s16 gTypeGummiIQBoost[0x12][NUMBER_OF_GUMMIS]; +extern s16 gUnknown_810A808[0x12][NUMBER_OF_GUMMIS]; + +struct Entity *DrawFieldGiveItemMenu(u32, u32); +extern void PrintFieldMessage(u32, u8 *, u32); +extern void sub_8044E24(u32, u32, u32); +extern void sub_804245C(u32, struct Item *); +extern u8 sub_8072938(struct Entity *, u16); extern void sub_807D148(struct Entity *pokemon, struct Entity *r1, u32 r2, struct Position *r3); extern void sub_8072008(struct Entity *pokemon, struct Entity *r1, u32 r2, u8 r3, u32); extern void LevelDownTarget(struct Entity *pokemon, struct Entity *r1, u32 r2); @@ -48,6 +64,8 @@ extern s32 sub_8042520(struct Entity *); struct Entity *sub_80696FC(struct Entity *); extern void sub_80943A0(void*, s32); extern void sub_803E708(u32 r0, u32 r1); +extern void sub_806A7E8(struct EntityInfo *, s32); + void sub_8048340(struct Entity *pokemon, struct Entity *target, u32 r2) { @@ -294,3 +312,154 @@ void sub_80487CC(struct Entity *pokemon, struct Entity * target, u32 param_3, u3 { sub_8078B5C(pokemon, target, param_3, param_4, 1); } + +static inline bool8 sub_80487E0_sub(struct EntityInfo *pokemonInfo) +{ + if (pokemonInfo->joinedAt == 0x4A) + { + return TRUE; + } + if (pokemonInfo->joinedAt == 0x47) + { + return TRUE; + } + return FALSE; +} + +void sub_80487E0(struct Entity *pokemon, struct Entity *target, u8 gummiIndex) +{ + s32 iVar3; + struct EntityInfo *targetInfo; + s32 gummiBoost; + s32 baseIQ; + s32 iVar4; + s32 iVar5; + s32 currIQ; + + targetInfo = target->info; + gummiBoost = gTypeGummiIQBoost[targetInfo->types[0]][gummiIndex]; + gummiBoost += gTypeGummiIQBoost[targetInfo->types[1]][gummiIndex]; + sub_8078B5C(pokemon,target, + gUnknown_810A808[targetInfo->types[0]][gummiIndex] + + gUnknown_810A808[targetInfo->types[1]][gummiIndex],0,1); + if (!targetInfo->isNotTeamMember) { + if (!sub_80487E0_sub(targetInfo)) { + baseIQ = targetInfo->IQ; + targetInfo->IQ += gummiBoost; + currIQ = baseIQ + gummiBoost; + if (targetInfo->IQ <= 0) { + targetInfo->IQ = 1; + } + if (999 < targetInfo->IQ) { + targetInfo->IQ = 999; + } + if (baseIQ == targetInfo->IQ) { + sub_80522F4(pokemon,target,*gUnknown_80FD644); + } + else { + iVar5 = currIQ - baseIQ; + iVar4 = 0; + if (((iVar5 < 9) && (iVar4 = 1, iVar5 < 5)) && (iVar4 = 3, 2 < iVar5)) { + iVar4 = 2; + } + iVar5 = targetInfo->IQ - baseIQ; + iVar3 = 0; + if (((iVar5 < 9) && (iVar3 = 1, iVar5 < 5)) && (iVar3 = 3, 2 < iVar5)) { + iVar3 = 2; + } + sub_80522F4(pokemon,target,gUnknown_80FD648[iVar4]); + sub_80522F4(pokemon,target,gUnknown_80FD6E8[iVar3]); + LoadIQSkills(target); + sub_806A7E8(targetInfo,baseIQ); + } + } + } +} + +void sub_804891C(struct Entity *pokemon, struct Entity *target) +{ + RaiseAtkStatTarget(pokemon, target, 3); +} + +void sub_8048928(struct Entity *pokemon, struct Entity *target) +{ + RaiseSpAtkStatTarget(pokemon, target, 3); +} + +void sub_8048934(struct Entity *pokemon, struct Entity *target) +{ + RaiseDefStatTarget(pokemon, target, 3); +} + +void sub_8048940(struct Entity *pokemon, struct Entity *target) +{ + RaiseSpDefStatTarget(pokemon, target, 3); +} + +void nullsub_94(void) +{} + +static inline bool8 sub_8048950_sub(struct EntityInfo *pokemonInfo) +{ + if (pokemonInfo->joinedAt == 0x4A) + { + return TRUE; + } + if (pokemonInfo->joinedAt == 0x47) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_8048950(u32 param_1,struct Item *item) +{ + u8 flag; + u16 moveID; + struct Entity *entity2; + struct Entity *entity; + struct EntityInfo *entityInfo; + int index; + + moveID = GetItemMoveID(item->id); + if ((item->flags & ITEM_FLAG_STICKY)) { + PrintFieldMessage(0,*gUnknown_80FE3E8,1); + return FALSE; + } + else if (IsHMItem(item->id)) { + PrintFieldMessage(0,*gPtrCantUseInDungeonMessage,1); + return FALSE; + } + else + { + for(index = 0; index < MAX_TEAM_MEMBERS; index++) + { + entity = gDungeon->teamPokemon[index]; + if (EntityExists(entity)) { + entityInfo = entity->info; + flag = CanMonLearnMove(moveID, entityInfo->id); + if (CannotMove(entity, FALSE)) { + flag = FALSE; + } + if (entityInfo->clientType == CLIENT_TYPE_CLIENT) { + flag = FALSE; + } + if (sub_8048950_sub(entityInfo)) { + flag = FALSE; + } + entityInfo->unk157 = flag; + } + } + entity2 = DrawFieldGiveItemMenu(0,1); + if (!EntityExists(entity2)) { + return FALSE; + } + sub_804245C(param_1,item); + if (sub_8072938(entity2,moveID) == 0) { + return FALSE; + } + sub_8044E24(param_1,0,0x141); + return TRUE; + } + return FALSE; +} diff --git a/src/code_8048DB8.c b/src/code_8048DB8.c index 61804d262..d03bf36fb 100644 --- a/src/code_8048DB8.c +++ b/src/code_8048DB8.c @@ -1,8 +1,13 @@ +#include "constants/dungeon_action.h" #include "global.h" #include "constants/status.h" #include "code_80521D0.h" #include "move_effects_target.h" +#include "dungeon_global_data.h" +#include "dungeon_action.h" +#include "dungeon_capabilities.h" #include "dungeon_random.h" +#include "dungeon_util.h" #include "item.h" #include "status.h" @@ -18,16 +23,151 @@ extern u8 *gPtrWishStoneCrumbledMessage[]; extern u8 *gPtrIcePartCrumbledMessage[]; extern u8 *gPtrRockPartCrumbledMessage[]; extern u8 *gPtrSteelPartCrumbledMessage[]; +extern u8 *gUnknown_80FDCA4[]; +extern u8 *gUnknown_80FE3E8[]; +extern u8 *gUnknown_80FECA0[]; + extern u32 gUnknown_8106A4C; extern u32 gUnknown_8106A50; extern s16 gUnknown_80F4FAC; + extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); extern void sub_8051E7C(struct Entity *pokemon); extern void sub_8045BF8(u8 *, struct Item *); extern void SetMessageArgument(char[], struct Entity*, u32); +struct Entity *DrawFieldGiveItemMenu(u32, u32); +extern void PrintFieldMessage(u32, u8 *, u32); +extern void sub_8063B54(struct ActionContainer *); +extern void sub_80637E8(struct ActionContainer *); +extern void sub_8063BB4(struct ActionContainer *); +extern void sub_8063CF0(struct ActionContainer *, u32); +extern void sub_8063A70(struct ActionContainer *, u32); +extern u8 sub_8062F90(struct Entity *, u32, u32, u32, u32); +extern void sub_8044DF0(struct Entity *, u32, u32); +extern s32 sub_8052B8C(u32, u8 *, u32); +extern void sub_803EAF0(u32, u32); +extern void sub_8044C10(bool8); -extern u8 *gUnknown_80FDCA4[]; -extern u8 *gUnknown_80FE3E8[]; + +static inline bool8 sub_8048B9C_sub(struct EntityInfo *pokemonInfo) +{ + if (pokemonInfo->joinedAt == 0x4A) + { + return TRUE; + } + if (pokemonInfo->joinedAt == 0x47) + { + return TRUE; + } + return FALSE; +} + +// TODO: should be bool8 +bool32 sub_8048B9C(struct Entity *entity,struct Item *param_2) +{ +#ifndef NONMATCHING + register bool32 bVar2 asm("r8"); +#else + bool32 bVar2; +#endif + bool8 flag; + struct EntityInfo *entityInfo; + struct Entity * entity2; + int index; + struct Entity *entity1; + struct EntityInfo *entity1Info; + struct ActionContainer *actionPointer; + struct ActionContainer actionContainer; + u16 action; + + bVar2 = FALSE; + entityInfo = entity->info; + actionPointer = &(entityInfo->action); + if ((param_2->flags & ITEM_FLAG_STICKY)) { + PrintFieldMessage(0,*gUnknown_80FE3E8,1); + return FALSE; + } + else + { + for(index = 0; index < MAX_TEAM_MEMBERS; index++) + { + entity1 = gDungeon->teamPokemon[index]; + if (EntityExists(entity1)) { + entity1Info = entity1->info; + flag = TRUE; + if(CannotMove(entity1, FALSE)) + { + flag = FALSE; + } + if(entity1Info->clientType == CLIENT_TYPE_CLIENT) + { + flag = FALSE; + } + if(sub_8048B9C_sub(entity1Info)) + { + flag = FALSE; + } + entity1Info->unk157 = flag; + } + } + entity2 = DrawFieldGiveItemMenu(0,1); + if (!EntityExists(entity2)) { + return FALSE; + } + else + { + while( TRUE ) { + entityInfo = entity2->info; + actionContainer = *actionPointer; + goto _clear; +_load: + action = actionPointer->action; + if (action == ACTION_UNK1D) { + sub_80637E8(actionPointer); + } + else if (action == ACTION_UNK20) { + sub_803EAF0(0,0); + sub_8063BB4(actionPointer); + sub_8044C10(TRUE); + bVar2 = TRUE; + } + else if (action == ACTION_UNK21) { + sub_803EAF0(0,0); + sub_8063CF0(actionPointer,0); + sub_8044C10(TRUE); + } + else if ((action == ACTION_SET_MOVE) || (action == ACTION_UNSET_MOVE)) { + sub_803EAF0(0,0); + sub_8063A70(actionPointer,0); + } + else if (action == ACTION_UNK1F) { + sub_803EAF0(0,0); + sub_8063B54(actionPointer); + } +_clear: + ClearMonsterActionFields(actionPointer); + if (sub_8062F90(entity2,1,0,0,1) != 0) { + if (bVar2) + { + if (sub_8052B8C(0,*gUnknown_80FECA0,1) == 1) { + *actionPointer = actionContainer; + sub_8044DF0(entity,0,0x6e); + SetMonsterActionFields(actionPointer,0x2c); + break; + } + } + else + { + sub_8044C10(TRUE); + break; + } + } + goto _load; + } + } + } + return bVar2; +} bool8 sub_8048D50(struct Entity * pokemon, struct Item *item) { From 6ecb88d3d277c69939c8fe1216f9b29fd7edfa6d Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 4 Jun 2023 07:31:44 -0700 Subject: [PATCH 19/21] matched sub_8048A68 thanks to @YohannDR --- asm/code_8048480.s | 166 ----------------- include/dungeon_global_data.h | 2 +- include/pokemon.h | 2 +- ld_script.txt | 2 - src/code_8048480.c | 323 ++++++++++++++++++++++++++++++++++ src/code_8048DB8.c | 253 -------------------------- 6 files changed, 325 insertions(+), 423 deletions(-) delete mode 100644 asm/code_8048480.s delete mode 100644 src/code_8048DB8.c diff --git a/asm/code_8048480.s b/asm/code_8048480.s deleted file mode 100644 index a269780cd..000000000 --- a/asm/code_8048480.s +++ /dev/null @@ -1,166 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8048A68 -sub_8048A68: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - mov r8, r1 - ldrb r1, [r1] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08048A90 - ldr r0, _08048A8C -_08048A80: - ldr r1, [r0] - movs r0, 0 - movs r2, 0x1 - bl PrintFieldMessage - b _08048B8C - .align 2, 0 -_08048A8C: .4byte gUnknown_80FE3E8 -_08048A90: - ldr r0, _08048AA4 - ldr r0, [r0] - ldr r1, _08048AA8 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08048AB0 - ldr r0, _08048AAC - b _08048A80 - .align 2, 0 -_08048AA4: .4byte gDungeon -_08048AA8: .4byte 0x0000065c -_08048AAC: .4byte gUnknown_80F9BD8 -_08048AB0: - movs r7, 0 -_08048AB2: - ldr r0, _08048B24 - ldr r0, [r0] - lsls r1, r7, 2 - ldr r2, _08048B28 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08048B4A - ldr r5, [r4, 0x70] - movs r6, 0x1 - ldrb r0, [r5, 0xA] - cmp r0, 0x3 - bhi _08048AF4 - ldr r2, _08048B2C - ldrb r1, [r5, 0xA] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08048B30 - adds r1, r0 - ldr r0, [r2] - adds r0, r1 - movs r1, 0xA - ldrsh r0, [r0, r1] - bl sub_806A538 - lsls r0, 24 - cmp r0, 0 - beq _08048AF6 -_08048AF4: - movs r6, 0 -_08048AF6: - adds r0, r4, 0 - movs r1, 0 - bl CannotMove - lsls r0, 24 - cmp r0, 0 - beq _08048B06 - movs r6, 0 -_08048B06: - adds r0, r5, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08048B12 - movs r6, 0 -_08048B12: - adds r0, r5, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - beq _08048B20 - cmp r0, 0x47 - bne _08048B34 -_08048B20: - movs r0, 0x1 - b _08048B36 - .align 2, 0 -_08048B24: .4byte gDungeon -_08048B28: .4byte 0x0001357c -_08048B2C: .4byte gRecruitedPokemonRef -_08048B30: .4byte 0x00008df8 -_08048B34: - movs r0, 0 -_08048B36: - cmp r0, 0 - beq _08048B3C - movs r6, 0 -_08048B3C: - ldrb r0, [r5, 0x7] - cmp r0, 0 - beq _08048B44 - movs r6, 0 -_08048B44: - ldr r2, _08048B84 - adds r0, r5, r2 - strb r6, [r0] -_08048B4A: - adds r7, 0x1 - cmp r7, 0x3 - ble _08048AB2 - movs r0, 0 - movs r1, 0x1 - bl DrawFieldGiveItemMenu - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08048B8C - mov r0, r9 - mov r1, r8 - bl sub_804245C - ldr r0, _08048B88 - ldr r0, [r0] - adds r0, 0xBC - str r4, [r0] - movs r2, 0xA1 - lsls r2, 1 - mov r0, r9 - movs r1, 0 - bl sub_8044E24 - movs r0, 0x1 - b _08048B8E - .align 2, 0 -_08048B84: .4byte 0x00000157 -_08048B88: .4byte gDungeon -_08048B8C: - movs r0, 0 -_08048B8E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8048A68 - - .align 2, 0 diff --git a/include/dungeon_global_data.h b/include/dungeon_global_data.h index e9e0b36de..a46ceddea 100644 --- a/include/dungeon_global_data.h +++ b/include/dungeon_global_data.h @@ -78,7 +78,7 @@ struct Dungeon s16 unk12; u8 fill14[0xB8 - 0x14]; struct Entity *unkB8; - u32 unkBC; + struct Entity *unkBC; u8 fillC0[0x16D - 0xC0]; u8 unk16D; u8 fill16E[0x179 - 0x16E]; diff --git a/include/pokemon.h b/include/pokemon.h index c2fabef6b..e2e19709f 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -75,7 +75,7 @@ struct PokemonStruct2 /* 0x3 */ u8 unkHasNextStage; // unk3 /* 0x4 */ struct DungeonLocation dungeonLocation; // unk4 /* 0x8 */ u16 IQ; // IQ (other offset) - /* 0xA */ u16 unkA; + /* 0xA */ s16 unkA; /* 0xC */ u16 unkC; /* 0xE */ s16 speciesNum; // speciesNum (other offset) /* 0x10 */ u16 unk10; // pokeHP diff --git a/ld_script.txt b/ld_script.txt index be91dbee4..897757750 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -200,8 +200,6 @@ SECTIONS { src/dungeon_items.o(.text); asm/code_8046CE4.o(.text); src/code_8048480.o(.text); - asm/code_8048480.o(.text); - src/code_8048DB8.o(.text); src/dungeon_ai_item_weight.o(.text); src/dungeon_map_access.o(.text); asm/code_80495E4.o(.text); diff --git a/src/code_8048480.c b/src/code_8048480.c index f77925de5..0db39440a 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -1,6 +1,8 @@ #include "global.h" +#include "constants/dungeon_action.h" #include "constants/iq_skill.h" #include "constants/status.h" +#include "dungeon_action.h" #include "dungeon_entity.h" #include "dungeon_util.h" #include "dungeon_global_data.h" @@ -11,6 +13,7 @@ #include "number_util.h" #include "moves.h" #include "code_8077274_1.h" +#include "code_80521D0.h" #include "pokemon.h" #include "position.h" #include "status.h" @@ -463,3 +466,323 @@ bool8 sub_8048950(u32 param_1,struct Item *item) } return FALSE; } + +extern void sub_803E708(u32, u32); +extern void sub_80421C0(struct Entity *r0, u16 r1); +extern void sub_8078B5C(struct Entity *, struct Entity *, u32, u32, u32); + +extern u8 gAvailablePokemonNames[]; +extern u8 gUnknown_202DE58[]; + +extern u8 *gPtrMusicBoxPlayedCrumbledMessage[]; +extern u8 *gPtrWishStoneCrumbledMessage[]; +extern u8 *gPtrIcePartCrumbledMessage[]; +extern u8 *gPtrRockPartCrumbledMessage[]; +extern u8 *gPtrSteelPartCrumbledMessage[]; +extern u8 *gUnknown_80FDCA4[]; +extern u8 *gUnknown_80FE3E8[]; +extern u8 *gUnknown_80FECA0[]; +extern u8 *gUnknown_80FE3E8[]; +extern u8 *gUnknown_80F9BD8[]; + +extern u32 gUnknown_8106A4C; +extern u32 gUnknown_8106A50; +extern s16 gUnknown_80F4FAC; + +extern u8 sub_806A538(s32); +extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); +extern void sub_8051E7C(struct Entity *pokemon); +extern void sub_8045BF8(u8 *, struct Item *); +struct Entity *DrawFieldGiveItemMenu(u32, u32); +extern void PrintFieldMessage(u32, u8 *, u32); +extern void sub_8063B54(struct ActionContainer *); +extern void sub_80637E8(struct ActionContainer *); +extern void sub_8063BB4(struct ActionContainer *); +extern void sub_8063CF0(struct ActionContainer *, u32); +extern void sub_8063A70(struct ActionContainer *, u32); +extern u8 sub_8062F90(struct Entity *, u32, u32, u32, u32); +extern void sub_8044DF0(struct Entity *, u32, u32); +extern s32 sub_8052B8C(u32, u8 *, u32); +extern void sub_803EAF0(u32, u32); +extern void sub_8044C10(bool8); +extern void sub_8044E24(u32, u32, u32); +extern void sub_804245C(u32, struct Item *); + +static inline bool8 sub_8048A68_sub(struct EntityInfo *pokemonInfo) +{ + if (pokemonInfo->joinedAt == 0x4A) + { + return TRUE; + } + if (pokemonInfo->joinedAt == 0x47) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_8048A68(u32 param_1,struct Item *item) +{ + u8 flag; + struct Entity *entity2; + struct Entity *entity; + struct EntityInfo *pEVar6; + s32 index; + struct PokemonStruct2 *pokemon; + + if ((item->flags & ITEM_FLAG_STICKY)) { + PrintFieldMessage(0,*gUnknown_80FE3E8,1); + return FALSE; + } + else + { + if (gDungeon->unk65C == 0) { + PrintFieldMessage(0,*gUnknown_80F9BD8,1); + return FALSE; + } + else + { + for(index = 0; index < MAX_TEAM_MEMBERS; index++) + { + entity = gDungeon->teamPokemon[index]; + if (EntityExists(entity)) { + pEVar6 = entity->info; + flag = TRUE; + if(((MAX_TEAM_MEMBERS - 1) < pEVar6->teamIndex)) + flag = FALSE; + else + { + pokemon = &gRecruitedPokemonRef->pokemon2[pEVar6->teamIndex]; + if (sub_806A538(pokemon->unkA)) + flag = FALSE; + } + + if (CannotMove(entity, FALSE)) { + flag = FALSE; + } + if (pEVar6->clientType == CLIENT_TYPE_CLIENT) { + flag = FALSE; + } + if (sub_8048A68_sub(pEVar6)) { + flag = FALSE; + } + if (pEVar6->isTeamLeader) { + flag = FALSE; + } + pEVar6->unk157 = flag; + } + } + entity2 = DrawFieldGiveItemMenu(0,1); + if (!EntityExists(entity2)) { + return FALSE; + } + sub_804245C(param_1,item); + gDungeon->unkBC = entity2; + sub_8044E24(param_1,0,0x142); + return TRUE; + } + } + return FALSE; +} + +static inline bool8 sub_8048B9C_sub(struct EntityInfo *pokemonInfo) +{ + if (pokemonInfo->joinedAt == 0x4A) + { + return TRUE; + } + if (pokemonInfo->joinedAt == 0x47) + { + return TRUE; + } + return FALSE; +} + +// TODO: should be bool8 +bool32 sub_8048B9C(struct Entity *entity,struct Item *param_2) +{ +#ifndef NONMATCHING + register bool32 bVar2 asm("r8"); +#else + bool32 bVar2; +#endif + bool8 flag; + struct EntityInfo *entityInfo; + struct Entity * entity2; + int index; + struct Entity *entity1; + struct EntityInfo *entity1Info; + struct ActionContainer *actionPointer; + struct ActionContainer actionContainer; + u16 action; + + bVar2 = FALSE; + entityInfo = entity->info; + actionPointer = &(entityInfo->action); + if ((param_2->flags & ITEM_FLAG_STICKY)) { + PrintFieldMessage(0,*gUnknown_80FE3E8,1); + return FALSE; + } + else + { + for(index = 0; index < MAX_TEAM_MEMBERS; index++) + { + entity1 = gDungeon->teamPokemon[index]; + if (EntityExists(entity1)) { + entity1Info = entity1->info; + flag = TRUE; + if(CannotMove(entity1, FALSE)) + { + flag = FALSE; + } + if(entity1Info->clientType == CLIENT_TYPE_CLIENT) + { + flag = FALSE; + } + if(sub_8048B9C_sub(entity1Info)) + { + flag = FALSE; + } + entity1Info->unk157 = flag; + } + } + entity2 = DrawFieldGiveItemMenu(0,1); + if (!EntityExists(entity2)) { + return FALSE; + } + else + { + while( TRUE ) { + entityInfo = entity2->info; + actionContainer = *actionPointer; + goto _clear; +_load: + action = actionPointer->action; + if (action == ACTION_UNK1D) { + sub_80637E8(actionPointer); + } + else if (action == ACTION_UNK20) { + sub_803EAF0(0,0); + sub_8063BB4(actionPointer); + sub_8044C10(TRUE); + bVar2 = TRUE; + } + else if (action == ACTION_UNK21) { + sub_803EAF0(0,0); + sub_8063CF0(actionPointer,0); + sub_8044C10(TRUE); + } + else if ((action == ACTION_SET_MOVE) || (action == ACTION_UNSET_MOVE)) { + sub_803EAF0(0,0); + sub_8063A70(actionPointer,0); + } + else if (action == ACTION_UNK1F) { + sub_803EAF0(0,0); + sub_8063B54(actionPointer); + } +_clear: + ClearMonsterActionFields(actionPointer); + if (sub_8062F90(entity2,1,0,0,1) != 0) { + if (bVar2) + { + if (sub_8052B8C(0,*gUnknown_80FECA0,1) == 1) { + *actionPointer = actionContainer; + sub_8044DF0(entity,0,0x6e); + SetMonsterActionFields(actionPointer,0x2c); + break; + } + } + else + { + sub_8044C10(TRUE); + break; + } + } + goto _load; + } + } + } + return bVar2; +} + +bool8 sub_8048D50(struct Entity * pokemon, struct Item *item) +{ + struct EntityInfo *entityInfo; + + entityInfo = pokemon->info; + + if ((item->flags & ITEM_FLAG_STICKY) != 0) { + sub_8045BF8(gUnknown_202DE58, item); + SendMessage(pokemon,*gUnknown_80FE3E8); + return FALSE; + } + else + { + if ((entityInfo->muzzled == TRUE) && (IsEdibleItem(item->id))) { + SetMessageArgument(gAvailablePokemonNames,pokemon,0); + SendMessage(pokemon,*gUnknown_80FDCA4); + return FALSE; + } + } + return TRUE; +} + +void sub_8048DB8(struct Entity *pokemon, struct Entity *target, u8 r2) +{ + u8 temp; + if(r2 != 0) + sub_806F370(pokemon, target, gUnknown_80F4FAC, 1, &temp, 0, 0x217, 0, 0, 0); + else + sub_8051E7C(pokemon); +} + +void sub_8048E04(struct Entity *pokemon, struct Entity * target) +{ + sub_8078B5C(pokemon, target, 0x1E, 0, 1); + switch(DungeonRandInt(5)) + { + case 0: + PoisonedStatusTarget(pokemon, target, TRUE); + break; + case 1: + ImmobilizedStatusTarget(pokemon, target); + break; + case 2: + BurnedStatusTarget(pokemon, target, 1, TRUE); + break; + case 3: + ParalyzeStatusTarget(pokemon, target, TRUE); + break; + case 4: + LowerAttackStageTarget(pokemon, target, gUnknown_8106A4C, 3, 1, TRUE); + LowerAttackStageTarget(pokemon, target, gUnknown_8106A50, 3, 1, TRUE); + break; + } +} + +void sub_8048EB0(struct Entity *pokemon) +{ + SendMessage(pokemon, *gPtrIcePartCrumbledMessage); +} + +void sub_8048EC4(struct Entity *pokemon) +{ + SendMessage(pokemon, *gPtrRockPartCrumbledMessage); +} + +void sub_8048ED8(struct Entity *pokemon) +{ + SendMessage(pokemon, *gPtrSteelPartCrumbledMessage); +} + +void sub_8048EEC(struct Entity *pokemon) +{ + SendMessage(pokemon, *gPtrWishStoneCrumbledMessage); +} + +void sub_8048F00(struct Entity *pokemon) +{ + sub_80421C0(pokemon, 0xD6); + SendMessage(pokemon, *gPtrMusicBoxPlayedCrumbledMessage); + sub_803E708(0x3C, 0x46); +} diff --git a/src/code_8048DB8.c b/src/code_8048DB8.c deleted file mode 100644 index d03bf36fb..000000000 --- a/src/code_8048DB8.c +++ /dev/null @@ -1,253 +0,0 @@ -#include "constants/dungeon_action.h" -#include "global.h" -#include "constants/status.h" -#include "code_80521D0.h" -#include "move_effects_target.h" -#include "dungeon_global_data.h" -#include "dungeon_action.h" -#include "dungeon_capabilities.h" -#include "dungeon_random.h" -#include "dungeon_util.h" -#include "item.h" -#include "status.h" - -extern void sub_803E708(u32, u32); -extern void sub_80421C0(struct Entity *r0, u16 r1); -extern void sub_8078B5C(struct Entity *, struct Entity *, u32, u32, u32); - -extern u8 gAvailablePokemonNames[]; -extern u8 gUnknown_202DE58[]; - -extern u8 *gPtrMusicBoxPlayedCrumbledMessage[]; -extern u8 *gPtrWishStoneCrumbledMessage[]; -extern u8 *gPtrIcePartCrumbledMessage[]; -extern u8 *gPtrRockPartCrumbledMessage[]; -extern u8 *gPtrSteelPartCrumbledMessage[]; -extern u8 *gUnknown_80FDCA4[]; -extern u8 *gUnknown_80FE3E8[]; -extern u8 *gUnknown_80FECA0[]; - -extern u32 gUnknown_8106A4C; -extern u32 gUnknown_8106A50; -extern s16 gUnknown_80F4FAC; - -extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); -extern void sub_8051E7C(struct Entity *pokemon); -extern void sub_8045BF8(u8 *, struct Item *); -extern void SetMessageArgument(char[], struct Entity*, u32); -struct Entity *DrawFieldGiveItemMenu(u32, u32); -extern void PrintFieldMessage(u32, u8 *, u32); -extern void sub_8063B54(struct ActionContainer *); -extern void sub_80637E8(struct ActionContainer *); -extern void sub_8063BB4(struct ActionContainer *); -extern void sub_8063CF0(struct ActionContainer *, u32); -extern void sub_8063A70(struct ActionContainer *, u32); -extern u8 sub_8062F90(struct Entity *, u32, u32, u32, u32); -extern void sub_8044DF0(struct Entity *, u32, u32); -extern s32 sub_8052B8C(u32, u8 *, u32); -extern void sub_803EAF0(u32, u32); -extern void sub_8044C10(bool8); - - -static inline bool8 sub_8048B9C_sub(struct EntityInfo *pokemonInfo) -{ - if (pokemonInfo->joinedAt == 0x4A) - { - return TRUE; - } - if (pokemonInfo->joinedAt == 0x47) - { - return TRUE; - } - return FALSE; -} - -// TODO: should be bool8 -bool32 sub_8048B9C(struct Entity *entity,struct Item *param_2) -{ -#ifndef NONMATCHING - register bool32 bVar2 asm("r8"); -#else - bool32 bVar2; -#endif - bool8 flag; - struct EntityInfo *entityInfo; - struct Entity * entity2; - int index; - struct Entity *entity1; - struct EntityInfo *entity1Info; - struct ActionContainer *actionPointer; - struct ActionContainer actionContainer; - u16 action; - - bVar2 = FALSE; - entityInfo = entity->info; - actionPointer = &(entityInfo->action); - if ((param_2->flags & ITEM_FLAG_STICKY)) { - PrintFieldMessage(0,*gUnknown_80FE3E8,1); - return FALSE; - } - else - { - for(index = 0; index < MAX_TEAM_MEMBERS; index++) - { - entity1 = gDungeon->teamPokemon[index]; - if (EntityExists(entity1)) { - entity1Info = entity1->info; - flag = TRUE; - if(CannotMove(entity1, FALSE)) - { - flag = FALSE; - } - if(entity1Info->clientType == CLIENT_TYPE_CLIENT) - { - flag = FALSE; - } - if(sub_8048B9C_sub(entity1Info)) - { - flag = FALSE; - } - entity1Info->unk157 = flag; - } - } - entity2 = DrawFieldGiveItemMenu(0,1); - if (!EntityExists(entity2)) { - return FALSE; - } - else - { - while( TRUE ) { - entityInfo = entity2->info; - actionContainer = *actionPointer; - goto _clear; -_load: - action = actionPointer->action; - if (action == ACTION_UNK1D) { - sub_80637E8(actionPointer); - } - else if (action == ACTION_UNK20) { - sub_803EAF0(0,0); - sub_8063BB4(actionPointer); - sub_8044C10(TRUE); - bVar2 = TRUE; - } - else if (action == ACTION_UNK21) { - sub_803EAF0(0,0); - sub_8063CF0(actionPointer,0); - sub_8044C10(TRUE); - } - else if ((action == ACTION_SET_MOVE) || (action == ACTION_UNSET_MOVE)) { - sub_803EAF0(0,0); - sub_8063A70(actionPointer,0); - } - else if (action == ACTION_UNK1F) { - sub_803EAF0(0,0); - sub_8063B54(actionPointer); - } -_clear: - ClearMonsterActionFields(actionPointer); - if (sub_8062F90(entity2,1,0,0,1) != 0) { - if (bVar2) - { - if (sub_8052B8C(0,*gUnknown_80FECA0,1) == 1) { - *actionPointer = actionContainer; - sub_8044DF0(entity,0,0x6e); - SetMonsterActionFields(actionPointer,0x2c); - break; - } - } - else - { - sub_8044C10(TRUE); - break; - } - } - goto _load; - } - } - } - return bVar2; -} - -bool8 sub_8048D50(struct Entity * pokemon, struct Item *item) -{ - struct EntityInfo *entityInfo; - - entityInfo = pokemon->info; - - if ((item->flags & ITEM_FLAG_STICKY) != 0) { - sub_8045BF8(gUnknown_202DE58, item); - SendMessage(pokemon,*gUnknown_80FE3E8); - return FALSE; - } - else - { - if ((entityInfo->muzzled == TRUE) && (IsEdibleItem(item->id))) { - SetMessageArgument(gAvailablePokemonNames,pokemon,0); - SendMessage(pokemon,*gUnknown_80FDCA4); - return FALSE; - } - } - return TRUE; -} - -void sub_8048DB8(struct Entity *pokemon, struct Entity *target, u8 r2) -{ - u8 temp; - if(r2 != 0) - sub_806F370(pokemon, target, gUnknown_80F4FAC, 1, &temp, 0, 0x217, 0, 0, 0); - else - sub_8051E7C(pokemon); -} - -void sub_8048E04(struct Entity *pokemon, struct Entity * target) -{ - sub_8078B5C(pokemon, target, 0x1E, 0, 1); - switch(DungeonRandInt(5)) - { - case 0: - PoisonedStatusTarget(pokemon, target, TRUE); - break; - case 1: - ImmobilizedStatusTarget(pokemon, target); - break; - case 2: - BurnedStatusTarget(pokemon, target, 1, TRUE); - break; - case 3: - ParalyzeStatusTarget(pokemon, target, TRUE); - break; - case 4: - LowerAttackStageTarget(pokemon, target, gUnknown_8106A4C, 3, 1, TRUE); - LowerAttackStageTarget(pokemon, target, gUnknown_8106A50, 3, 1, TRUE); - break; - } -} - -void sub_8048EB0(struct Entity *pokemon) -{ - SendMessage(pokemon, *gPtrIcePartCrumbledMessage); -} - -void sub_8048EC4(struct Entity *pokemon) -{ - SendMessage(pokemon, *gPtrRockPartCrumbledMessage); -} - -void sub_8048ED8(struct Entity *pokemon) -{ - SendMessage(pokemon, *gPtrSteelPartCrumbledMessage); -} - -void sub_8048EEC(struct Entity *pokemon) -{ - SendMessage(pokemon, *gPtrWishStoneCrumbledMessage); -} - -void sub_8048F00(struct Entity *pokemon) -{ - sub_80421C0(pokemon, 0xD6); - SendMessage(pokemon, *gPtrMusicBoxPlayedCrumbledMessage); - sub_803E708(0x3C, 0x46); -} - From 028102655e40e1a1cf3c101835453ca3dc2062c0 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 4 Jun 2023 07:45:43 -0700 Subject: [PATCH 20/21] minor: code cleanup --- src/code_8048480.c | 86 +++++++++++++++----------------- src/dungeon_pokemon_attributes.c | 8 ++- src/move_util.c | 5 ++ src/status.c | 2 +- 4 files changed, 51 insertions(+), 50 deletions(-) diff --git a/src/code_8048480.c b/src/code_8048480.c index 0db39440a..1eadb0d12 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -18,8 +18,13 @@ #include "position.h" #include "status.h" +extern u8 gAvailablePokemonNames[]; +extern u8 gUnknown_202DE58[]; + +extern s16 gTypeGummiIQBoost[0x12][NUMBER_OF_GUMMIS]; +extern s16 gUnknown_810A808[0x12][NUMBER_OF_GUMMIS]; + extern u8 *gUnknown_80F89F4[]; -extern u8 gAvailablePokemonNames[0x58]; extern u8 *gUnknown_80FB580[]; extern s16 gUnknown_80F4FB6; extern s16 gUnknown_80F4FB8; @@ -31,7 +36,9 @@ extern s16 gUnknown_80F4FAA; // 0x1E extern s16 gUnknown_80F4FA8; // 0xF extern s16 gUnknown_80F4FA4; // 0x14 extern s16 gUnknown_80F4FA6; // 0x2D - +extern u32 gUnknown_8106A4C; +extern u32 gUnknown_8106A50; +extern s16 gUnknown_80F4FAC; extern u8 *gUnknown_80FEAE8[]; extern u8 *gUnknown_80FDBA0[]; @@ -46,10 +53,32 @@ extern u8 *gUnknown_80FD648[]; extern u8 *gUnknown_80FD6E8[]; extern u8 *gPtrCantUseInDungeonMessage[]; extern u8 *gUnknown_80FE3E8[]; +extern u8 *gPtrMusicBoxPlayedCrumbledMessage[]; +extern u8 *gPtrWishStoneCrumbledMessage[]; +extern u8 *gPtrIcePartCrumbledMessage[]; +extern u8 *gPtrRockPartCrumbledMessage[]; +extern u8 *gPtrSteelPartCrumbledMessage[]; +extern u8 *gUnknown_80FDCA4[]; +extern u8 *gUnknown_80FE3E8[]; +extern u8 *gUnknown_80FECA0[]; +extern u8 *gUnknown_80FE3E8[]; +extern u8 *gUnknown_80F9BD8[]; -extern s16 gTypeGummiIQBoost[0x12][NUMBER_OF_GUMMIS]; -extern s16 gUnknown_810A808[0x12][NUMBER_OF_GUMMIS]; - +extern void sub_80421C0(struct Entity *r0, u16 r1); +extern void sub_8078B5C(struct Entity *, struct Entity *, u32, u32, u32); +extern u8 sub_806A538(s32); +extern void sub_8051E7C(struct Entity *pokemon); +extern void sub_8045BF8(u8 *, struct Item *); +extern void sub_8063B54(struct ActionContainer *); +extern void sub_80637E8(struct ActionContainer *); +extern void sub_8063BB4(struct ActionContainer *); +extern void sub_8063CF0(struct ActionContainer *, u32); +extern void sub_8063A70(struct ActionContainer *, u32); +extern u8 sub_8062F90(struct Entity *, u32, u32, u32, u32); +extern void sub_8044DF0(struct Entity *, u32, u32); +extern s32 sub_8052B8C(u32, u8 *, u32); +extern void sub_803EAF0(u32, u32); +extern void sub_8044C10(bool8); struct Entity *DrawFieldGiveItemMenu(u32, u32); extern void PrintFieldMessage(u32, u8 *, u32); extern void sub_8044E24(u32, u32, u32); @@ -58,7 +87,6 @@ extern u8 sub_8072938(struct Entity *, u16); extern void sub_807D148(struct Entity *pokemon, struct Entity *r1, u32 r2, struct Position *r3); extern void sub_8072008(struct Entity *pokemon, struct Entity *r1, u32 r2, u8 r3, u32); extern void LevelDownTarget(struct Entity *pokemon, struct Entity *r1, u32 r2); -extern void sub_8078B5C(struct Entity *, struct Entity *, u32, u32, u32); extern void SetMessageArgument(u8 *buffer, struct Entity *r1, u32); extern void sub_80522F4(struct Entity *pokemon, struct Entity *r1, const char[]); extern void sub_806F370(struct Entity *pokemon, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); @@ -221,8 +249,13 @@ void sub_80485B0(struct Entity *pokemon, struct Entity * target) bool8 isMoveBoosted; s32 moveIndex; struct EntityInfo *entityInfo; +#ifndef NONMATCHING register struct Move *movePtr1 asm("r4"); // r4 register struct Move *movePtr2 asm("r5"); // r5 +#else + struct Move *movePtr1; // r4 + struct Move *movePtr2; // r5 +#endif u8 moveBoost; s32 movePowerBoost; s32 maxPowerBoost; @@ -467,47 +500,6 @@ bool8 sub_8048950(u32 param_1,struct Item *item) return FALSE; } -extern void sub_803E708(u32, u32); -extern void sub_80421C0(struct Entity *r0, u16 r1); -extern void sub_8078B5C(struct Entity *, struct Entity *, u32, u32, u32); - -extern u8 gAvailablePokemonNames[]; -extern u8 gUnknown_202DE58[]; - -extern u8 *gPtrMusicBoxPlayedCrumbledMessage[]; -extern u8 *gPtrWishStoneCrumbledMessage[]; -extern u8 *gPtrIcePartCrumbledMessage[]; -extern u8 *gPtrRockPartCrumbledMessage[]; -extern u8 *gPtrSteelPartCrumbledMessage[]; -extern u8 *gUnknown_80FDCA4[]; -extern u8 *gUnknown_80FE3E8[]; -extern u8 *gUnknown_80FECA0[]; -extern u8 *gUnknown_80FE3E8[]; -extern u8 *gUnknown_80F9BD8[]; - -extern u32 gUnknown_8106A4C; -extern u32 gUnknown_8106A50; -extern s16 gUnknown_80F4FAC; - -extern u8 sub_806A538(s32); -extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); -extern void sub_8051E7C(struct Entity *pokemon); -extern void sub_8045BF8(u8 *, struct Item *); -struct Entity *DrawFieldGiveItemMenu(u32, u32); -extern void PrintFieldMessage(u32, u8 *, u32); -extern void sub_8063B54(struct ActionContainer *); -extern void sub_80637E8(struct ActionContainer *); -extern void sub_8063BB4(struct ActionContainer *); -extern void sub_8063CF0(struct ActionContainer *, u32); -extern void sub_8063A70(struct ActionContainer *, u32); -extern u8 sub_8062F90(struct Entity *, u32, u32, u32, u32); -extern void sub_8044DF0(struct Entity *, u32, u32); -extern s32 sub_8052B8C(u32, u8 *, u32); -extern void sub_803EAF0(u32, u32); -extern void sub_8044C10(bool8); -extern void sub_8044E24(u32, u32, u32); -extern void sub_804245C(u32, struct Item *); - static inline bool8 sub_8048A68_sub(struct EntityInfo *pokemonInfo) { if (pokemonInfo->joinedAt == 0x4A) diff --git a/src/dungeon_pokemon_attributes.c b/src/dungeon_pokemon_attributes.c index 36f123547..1281d60fd 100644 --- a/src/dungeon_pokemon_attributes.c +++ b/src/dungeon_pokemon_attributes.c @@ -62,7 +62,7 @@ bool8 sub_8071728(struct Entity * pokemon, struct Entity * target, bool8 display bool8 sub_80717A4(struct Entity *pokemon, u16 moveID) { struct EntityInfo * entityInfo; - s32 iVar3; + s32 index; entityInfo = pokemon->info; if ((entityInfo->sleep != STATUS_SLEEP) && (entityInfo->sleep != STATUS_NAPPING) && (entityInfo->sleep != STATUS_NIGHTMARE)) { @@ -71,11 +71,15 @@ bool8 sub_80717A4(struct Entity *pokemon, u16 moveID) else { // Pin this register to match +#ifndef NONMATCHING register struct Move *pokeMove asm("r4"); +#else + struct Move *pokeMove; +#endif struct Move *pokeMove2; // some reason uses another pointer to same struct - for(iVar3 = 0, pokeMove = entityInfo->moves, pokeMove2 = pokeMove; iVar3 < MAX_MON_MOVES; pokeMove++, pokeMove2++, iVar3++) + for(index = 0, pokeMove = entityInfo->moves, pokeMove2 = pokeMove; index < MAX_MON_MOVES; pokeMove++, pokeMove2++, index++) { if (((pokeMove->moveFlags & MOVE_FLAG_EXISTS)) && (entityInfo->isTeamLeader || ((pokeMove->moveFlags & MOVE_FLAG_ENABLED_FOR_AI)))) if((sub_805744C(pokemon, pokeMove2, TRUE) != 0) && (pokeMove->PP != 0)) diff --git a/src/move_util.c b/src/move_util.c index 6ef3db892..09f638352 100644 --- a/src/move_util.c +++ b/src/move_util.c @@ -27,8 +27,13 @@ u32 sub_8057144(struct Entity * pokemon) s32 counter; struct Move *moveStack [80]; struct Move **local_20; +#ifndef NONMATCING register s32 counter_1 asm("r0"); register struct Move** move_1 asm("r1"); +#else + s32 counter_1; + struct Move** move_1; +#endif counter = 0; diff --git a/src/status.c b/src/status.c index 67f015b6c..c0126be35 100644 --- a/src/status.c +++ b/src/status.c @@ -424,7 +424,7 @@ void CringeStatusTarget(struct Entity * pokemon,struct Entity * target, bool8 di void ParalyzeStatusTarget(struct Entity * pokemon, struct Entity * target, bool8 displayMessage) { struct Tile *mapTile; - register struct EntityInfo *entityInfo; + struct EntityInfo *entityInfo; struct Entity *mapPokemonEntity; int index; bool8 bVar6; From 5e521b74131f64fec809e39f27a00b4f2cb5dc5f Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Tue, 6 Jun 2023 20:59:03 -0700 Subject: [PATCH 21/21] address review comments --- src/code_8023144.c | 2 +- src/code_8048480.c | 38 ++++++++++++++++++++------------------ src/move_util.c | 2 +- src/other_menus.c | 22 +++++++++++----------- src/party_list_menu.c | 2 +- src/rescue_password_menu.c | 14 +++++++------- 6 files changed, 41 insertions(+), 39 deletions(-) diff --git a/src/code_8023144.c b/src/code_8023144.c index 709606e06..05f3b6f93 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -113,7 +113,7 @@ void sub_8022D2C(void) { loopMax += 1; } else { - if(GetItemCategory(gUnknown_203B294->item.id) == 5) + if(GetItemCategory(gUnknown_203B294->item.id) == CATEGORY_TMS_HMS) { gUnknown_203B294->unkF8[loopMax].text = gUnknown_80DC8F8; gUnknown_203B294->unkF8[loopMax].menuAction = 6; diff --git a/src/code_8048480.c b/src/code_8048480.c index 1eadb0d12..0790cf543 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -1,7 +1,9 @@ #include "global.h" +#include "constants/dungeon.h" #include "constants/dungeon_action.h" #include "constants/iq_skill.h" #include "constants/status.h" +#include "constants/type.h" #include "dungeon_action.h" #include "dungeon_entity.h" #include "dungeon_util.h" @@ -21,8 +23,8 @@ extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DE58[]; -extern s16 gTypeGummiIQBoost[0x12][NUMBER_OF_GUMMIS]; -extern s16 gUnknown_810A808[0x12][NUMBER_OF_GUMMIS]; +extern s16 gTypeGummiIQBoost[NUM_TYPES][NUMBER_OF_GUMMIS]; +extern s16 gUnknown_810A808[NUM_TYPES][NUMBER_OF_GUMMIS]; extern u8 *gUnknown_80F89F4[]; extern u8 *gUnknown_80FB580[]; @@ -349,13 +351,13 @@ void sub_80487CC(struct Entity *pokemon, struct Entity * target, u32 param_3, u3 sub_8078B5C(pokemon, target, param_3, param_4, 1); } -static inline bool8 sub_80487E0_sub(struct EntityInfo *pokemonInfo) +static inline bool8 JoinLocationCannotUseItems_1(struct EntityInfo *pokemonInfo) { - if (pokemonInfo->joinedAt == 0x4A) + if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON) { return TRUE; } - if (pokemonInfo->joinedAt == 0x47) + if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE) { return TRUE; } @@ -379,7 +381,7 @@ void sub_80487E0(struct Entity *pokemon, struct Entity *target, u8 gummiIndex) gUnknown_810A808[targetInfo->types[0]][gummiIndex] + gUnknown_810A808[targetInfo->types[1]][gummiIndex],0,1); if (!targetInfo->isNotTeamMember) { - if (!sub_80487E0_sub(targetInfo)) { + if (!JoinLocationCannotUseItems_1(targetInfo)) { baseIQ = targetInfo->IQ; targetInfo->IQ += gummiBoost; currIQ = baseIQ + gummiBoost; @@ -435,13 +437,13 @@ void sub_8048940(struct Entity *pokemon, struct Entity *target) void nullsub_94(void) {} -static inline bool8 sub_8048950_sub(struct EntityInfo *pokemonInfo) +static inline bool8 JoinLocationCannotUseItems_2(struct EntityInfo *pokemonInfo) { - if (pokemonInfo->joinedAt == 0x4A) + if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON) { return TRUE; } - if (pokemonInfo->joinedAt == 0x47) + if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE) { return TRUE; } @@ -480,7 +482,7 @@ bool8 sub_8048950(u32 param_1,struct Item *item) if (entityInfo->clientType == CLIENT_TYPE_CLIENT) { flag = FALSE; } - if (sub_8048950_sub(entityInfo)) { + if (JoinLocationCannotUseItems_2(entityInfo)) { flag = FALSE; } entityInfo->unk157 = flag; @@ -500,13 +502,13 @@ bool8 sub_8048950(u32 param_1,struct Item *item) return FALSE; } -static inline bool8 sub_8048A68_sub(struct EntityInfo *pokemonInfo) +static inline bool8 JoinLocationCannotUseItems_3(struct EntityInfo *pokemonInfo) { - if (pokemonInfo->joinedAt == 0x4A) + if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON) { return TRUE; } - if (pokemonInfo->joinedAt == 0x47) + if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE) { return TRUE; } @@ -555,7 +557,7 @@ bool8 sub_8048A68(u32 param_1,struct Item *item) if (pEVar6->clientType == CLIENT_TYPE_CLIENT) { flag = FALSE; } - if (sub_8048A68_sub(pEVar6)) { + if (JoinLocationCannotUseItems_3(pEVar6)) { flag = FALSE; } if (pEVar6->isTeamLeader) { @@ -577,13 +579,13 @@ bool8 sub_8048A68(u32 param_1,struct Item *item) return FALSE; } -static inline bool8 sub_8048B9C_sub(struct EntityInfo *pokemonInfo) +static inline bool8 JoinLocationCannotUseItems_4(struct EntityInfo *pokemonInfo) { - if (pokemonInfo->joinedAt == 0x4A) + if (pokemonInfo->joinedAt == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON) { return TRUE; } - if (pokemonInfo->joinedAt == 0x47) + if (pokemonInfo->joinedAt == DUNGEON_RESCUE_TEAM_BASE) { return TRUE; } @@ -631,7 +633,7 @@ bool32 sub_8048B9C(struct Entity *entity,struct Item *param_2) { flag = FALSE; } - if(sub_8048B9C_sub(entity1Info)) + if(JoinLocationCannotUseItems_4(entity1Info)) { flag = FALSE; } diff --git a/src/move_util.c b/src/move_util.c index 09f638352..635257fb4 100644 --- a/src/move_util.c +++ b/src/move_util.c @@ -27,7 +27,7 @@ u32 sub_8057144(struct Entity * pokemon) s32 counter; struct Move *moveStack [80]; struct Move **local_20; -#ifndef NONMATCING +#ifndef NONMATCHING register s32 counter_1 asm("r0"); register struct Move** move_1 asm("r1"); #else diff --git a/src/other_menus.c b/src/other_menus.c index 672d554d6..b3dd52903 100644 --- a/src/other_menus.c +++ b/src/other_menus.c @@ -50,7 +50,7 @@ const struct MenuItem gUnknown_80E656C[4] = { {NULL, 0x3}, }; -ALIGNED(4) const u8 sUnknown_80E658C[] = _("{CENTER_ALIGN}Don~27t turn the power off!"); +ALIGNED(4) const u8 sUnknown_80E658C[] = _("{CENTER_ALIGN}Don{APOSTROPHE}t turn the power off!"); ALIGNED(4) const u8 sUnknown_80E65AC[] = _("{CENTER_ALIGN}Item transmitting!"); ALIGNED(4) const u8 sUnknown_80E65C4[] = _("{CENTER_ALIGN}{COLOR_1 RED}Caution!{END_COLOR_TEXT_1} "); @@ -113,7 +113,7 @@ const struct MenuItem gUnknown_80E66D4[4] = { }; ALIGNED(4) const u8 sUnknown_80E66F4[] = _("{CENTER_ALIGN}Please press any button."); ALIGNED(4) const u8 sUnknown_80E6710[] = _("{CENTER_ALIGN}Your adventure will be continued."); -ALIGNED(4) const u8 sUnknown_80E6734[] = _("{CENTER_ALIGN}#CGSuccess!#R "); +ALIGNED(4) const u8 sUnknown_80E6734[] = _("{CENTER_ALIGN}{COLOR_1 LIGHT_BLUE_2}Success!{END_COLOR_TEXT_1} "); const struct UnkTextStruct2 gUnknown_80E6748 = { 0x00, 0x00, 0x00, 0x00, @@ -136,7 +136,7 @@ const struct MenuItem gUnknown_80E6760[4] = { }; ALIGNED(4) const u8 sUnknown_80E6780[] = _("{CENTER_ALIGN}please try again."); ALIGNED(4) const u8 sUnknown_80E6794[] = _("{CENTER_ALIGN}Check the Game Link cable and"); -ALIGNED(4) const u8 sUnknown_80E67B4[] = _("{CENTER_ALIGN}#C2Communication error!#R "); +ALIGNED(4) const u8 sUnknown_80E67B4[] = _("{CENTER_ALIGN}#C2Communication error!{END_COLOR_TEXT_1} "); const struct UnkTextStruct2 gUnknown_80E67D4 = { 0x00, 0x00, 0x00, 0x00, @@ -194,9 +194,9 @@ const struct MenuItem gUnknown_80E68B4[4] = { {sUnknown_80E68D4, 0x5}, {NULL, 0x3}, }; -ALIGNED(4) const u8 sUnknown_80E68D4[] = _("{CENTER_ALIGN}someone~27s storage space was full."); +ALIGNED(4) const u8 sUnknown_80E68D4[] = _("{CENTER_ALIGN}someone{APOSTROPHE}s storage space was full."); ALIGNED(4) const u8 sUnknown_80E68FC[] = _("{CENTER_ALIGN}An item could not be transferred because"); -ALIGNED(4) const u8 sUnknown_80E6928[] = _("{CENTER_ALIGN}#C2Error!#R "); +ALIGNED(4) const u8 sUnknown_80E6928[] = _("{CENTER_ALIGN}#C2Error!{END_COLOR_TEXT_1} "); const struct UnkTextStruct2 gUnknown_80E6938 = { 0x00, 0x00, 0x00, 0x00, @@ -216,7 +216,7 @@ const struct MenuItem gUnknown_80E6950[4] = { {NULL, 0x3}, }; ALIGNED(4) const u8 sUnknown_80E6970[] = _("{CENTER_ALIGN}Please check again."); -ALIGNED(4) const u8 sUnknown_80E6988[] = _("{CENTER_ALIGN}This #CGSOS Mail#R can~27t be used."); +ALIGNED(4) const u8 sUnknown_80E6988[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used."); const struct UnkTextStruct2 gUnknown_80E69B0 = { 0x00, 0x00, 0x00, 0x00, @@ -234,7 +234,7 @@ const struct MenuItem gUnknown_80E69C8[4] = { {sUnknown_80E6970, 0x5}, {NULL, 0x3}, }; -ALIGNED(4) const u8 sUnknown_80E69E8[] = _("{CENTER_ALIGN}This #CGA-OK Mail#R can~27t be used."); +ALIGNED(4) const u8 sUnknown_80E69E8[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used."); const struct UnkTextStruct2 gUnknown_80E6A10 = { 0x00, 0x00, 0x00, 0x00, @@ -252,7 +252,7 @@ const struct MenuItem gUnknown_80E6A28[4] = { {sUnknown_80E6970, 0x5}, {NULL, 0x3}, }; -ALIGNED(4) const u8 sUnknown_80E6A48[] = _("{CENTER_ALIGN}This #CGThank-You Mail#R can~27t be used."); +ALIGNED(4) const u8 sUnknown_80E6A48[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}Thank-You Mail{END_COLOR_TEXT_1} can{APOSTROPHE}t be used."); const struct UnkTextStruct2 gUnknown_80E6A74 = { 0x00, 0x00, 0x00, 0x00, @@ -271,7 +271,7 @@ const struct MenuItem gUnknown_80E6A8C[4] = { {sUnknown_80E6AAC, 0x5}, {NULL, 0x3}, }; -ALIGNED(4) const u8 sUnknown_80E6AAC[] = _("{CENTER_ALIGN}It can~27t be received."); +ALIGNED(4) const u8 sUnknown_80E6AAC[] = _("{CENTER_ALIGN}It can{APOSTROPHE}t be received."); ALIGNED(4) const u8 sUnknown_80E6AC8[] = _("{CENTER_ALIGN}There is no space for new mail."); const struct UnkTextStruct2 gUnknown_80E6AEC = { @@ -292,7 +292,7 @@ const struct MenuItem gUnknown_80E6B04[4] = { {NULL, 0x3}, }; ALIGNED(4) const u8 sUnknown_80E6B24[] = _("{CENTER_ALIGN}You need to go further in the story."); -ALIGNED(4) const u8 sUnknown_80E6B4C[] = _("{CENTER_ALIGN}You may not go to that #CGdungeon#R yet."); +ALIGNED(4) const u8 sUnknown_80E6B4C[] = _("{CENTER_ALIGN}You may not go to that {COLOR_1 LIGHT_BLUE_2}dungeon{END_COLOR_TEXT_1} yet."); const struct UnkTextStruct2 gUnknown_80E6B78 = { 0x00, 0x00, 0x00, 0x00, @@ -312,7 +312,7 @@ const struct MenuItem gUnknown_80E6B90[4] = { {NULL, 0x3}, }; ALIGNED(4) const u8 sUnknown_80E6BB0[] = _("{CENTER_ALIGN}Please try again."); -ALIGNED(4) const u8 sUnknown_80E6BC4[] = _("{CENTER_ALIGN}There was a problem on your friend~27s end."); +ALIGNED(4) const u8 sUnknown_80E6BC4[] = _("{CENTER_ALIGN}There was a problem on your friend{APOSTROPHE}s end."); const struct UnkTextStruct2 gUnknown_80E6BF4 = { 0x00, 0x00, 0x00, 0x00, diff --git a/src/party_list_menu.c b/src/party_list_menu.c index 167cfedb8..810403234 100644 --- a/src/party_list_menu.c +++ b/src/party_list_menu.c @@ -750,7 +750,7 @@ void sub_8026A94(void) static inline bool8 sub_8026AB0_sub(void) { - if (gUnknown_203B2B8->pokeStruct->dungeonLocation.id == 0x44 || gUnknown_203B2B8->pokeStruct->dungeonLocation.id == 0x45) + if (gUnknown_203B2B8->pokeStruct->dungeonLocation.id == DUNGEON_HOWLING_FOREST_2 || gUnknown_203B2B8->pokeStruct->dungeonLocation.id == DUNGEON_POKEMON_SQUARE) return TRUE; else return FALSE; diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 14a7a8121..eb7f8022c 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -144,7 +144,7 @@ const struct MenuItem gUnknown_80E73C4[4] = { {NULL, 0xA}, }; -ALIGNED(4) const u8 sUnknown_80E73E4[] = _("{CENTER_ALIGN}This is not an #CGA-OK Mail{END_COLOR_TEXT_1}."); +ALIGNED(4) const u8 sUnknown_80E73E4[] = _("{CENTER_ALIGN}This is not an {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}."); const struct UnkTextStruct2 gUnknown_80E7408 = { 0x00, 0x00, 0x00, 0x00, @@ -165,7 +165,7 @@ const struct MenuItem gUnknown_80E7420[4] = { {NULL, 0xA}, }; -ALIGNED(4) const u8 sUnknown_80E7440[] = _("#+This #CGA-OK Mail#R cannot be used."); +ALIGNED(4) const u8 sUnknown_80E7440[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1} cannot be used."); const struct UnkTextStruct2 gUnknown_80E7468 = { 0x00, 0x00, 0x00, 0x00, @@ -185,7 +185,7 @@ const struct MenuItem gUnknown_80E7480[4] = { {CheckAgain_80E7234, 0xC}, {NULL, 0xA}, }; -ALIGNED(4) const u8 sUnknown_80E74A0[] = _("#+This is not a #CGThank-You Mail#R."); +ALIGNED(4) const u8 sUnknown_80E74A0[] = _("{CENTER_ALIGN}This is not a {COLOR_1 LIGHT_BLUE_2}Thank-You Mail{END_COLOR_TEXT_1}."); const struct UnkTextStruct2 gUnknown_80E74C8 = { 0x00, 0x00, 0x00, 0x00, @@ -206,7 +206,7 @@ const struct MenuItem gUnknown_80E74E0[4] = { {NULL, 0xA}, }; -ALIGNED(4) const u8 sUnknown_80E7500[] = _("#+This #CGThank-You Mail#R cannot be used."); +ALIGNED(4) const u8 sUnknown_80E7500[] = _("{CENTER_ALIGN}This {COLOR_1 LIGHT_BLUE_2}Thank-You Mail{END_COLOR_TEXT_1} cannot be used."); const struct UnkTextStruct2 gUnknown_80E752C = { 0x00, 0x00, 0x00, 0x00, @@ -226,7 +226,7 @@ const struct MenuItem gUnknown_80E7544[4] = { {CheckAgain_80E7234, 0xC}, {NULL, 0xA}, }; -ALIGNED(4) const u8 sUnknown_80E7564[] = _("#+This is not a #CGWonder Mail#R."); +ALIGNED(4) const u8 sUnknown_80E7564[] = _("{CENTER_ALIGN}This is not a {COLOR_1 LIGHT_BLUE_2}Wonder Mail{END_COLOR_TEXT_1}."); const struct UnkTextStruct2 gUnknown_80E7588 = { 0x00, 0x00, 0x00, 0x00, @@ -246,8 +246,8 @@ const struct MenuItem gUnknown_80E75A0[4] = { {sUnknown_80E75C0, 0xC}, {NULL, 0xA}, }; -ALIGNED(4) const u8 sUnknown_80E75C0[] = _("#+new mail."); -ALIGNED(4) const u8 sUnknown_80E75CC[] = _("#+There is no space for receiving"); +ALIGNED(4) const u8 sUnknown_80E75C0[] = _("{CENTER_ALIGN}new mail."); +ALIGNED(4) const u8 sUnknown_80E75CC[] = _("{CENTER_ALIGN}There is no space for receiving"); static const u8 fill0[] = "pksdir0";