diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s index 0343da63d..d1620fb81 100644 --- a/asm/code_8075BA4.s +++ b/asm/code_8075BA4.s @@ -167,7 +167,7 @@ sub_8075CFC: adds r0, r6, 0 adds r1, r4, 0 adds r2, r5, 0 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08075DAA @@ -633,7 +633,7 @@ sub_8076090: adds r0, r6, 0 adds r1, r4, 0 mov r2, r9 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _0807613A @@ -715,7 +715,7 @@ sub_807614C: adds r0, r6, 0 adds r1, r4, 0 adds r2, r7, 0 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08076206 @@ -814,7 +814,7 @@ _08076238: adds r0, r7, 0 adds r1, r5, 0 mov r2, r10 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 beq _0807624A @@ -1045,7 +1045,7 @@ _0807641A: adds r0, r7, 0 adds r1, r5, 0 mov r2, r10 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 beq _0807642C @@ -1279,7 +1279,7 @@ _08076602: adds r0, r7, 0 adds r1, r5, 0 mov r2, r10 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 beq _08076614 @@ -1510,7 +1510,7 @@ _080767CE: mov r0, r8 adds r1, r5, 0 adds r2, r4, 0 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _080768C8 @@ -1641,7 +1641,7 @@ sub_80768DC: adds r0, r7, 0 adds r1, r5, 0 adds r2, r4, 0 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _080769BE @@ -1748,7 +1748,7 @@ sub_80769CC: adds r0, r7, 0 adds r1, r5, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08076A9A @@ -1933,7 +1933,7 @@ _08076B60: adds r0, r6, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0 @@ -2150,7 +2150,7 @@ sub_8076D10: adds r0, r7, 0 adds r1, r6, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08076E0E diff --git a/asm/code_8077274.s b/asm/code_8077274.s index 684c4b7e6..67aaf86cc 100644 --- a/asm/code_8077274.s +++ b/asm/code_8077274.s @@ -5,1216 +5,6 @@ .text - thumb_func_start sub_8077274 -sub_8077274: - push {r4,r5,lr} - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080772B4 - ldr r0, [r5, 0x70] - adds r4, r0, 0 - ldr r0, _080772BC - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - movs r0, 0x28 - ldrsh r1, [r4, r0] - adds r1, 0x1 - cmp r1, 0x1 - ble _0807729E - movs r1, 0x2 -_0807729E: - movs r2, 0x28 - ldrsh r0, [r4, r2] - cmp r0, r1 - beq _080772AE - strh r1, [r4, 0x28] - adds r0, r5, 0 - bl sub_8041C58 -_080772AE: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080772B4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080772BC: .4byte gAvailablePokemonNames - thumb_func_end sub_8077274 - - thumb_func_start sub_80772C0 -sub_80772C0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - adds r5, r1, 0 - adds r4, r2, 0 - adds r7, r3, 0 - ldr r0, [sp, 0x20] - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080772E6 - b _08077422 -_080772E6: - cmp r4, 0 - beq _08077300 - ldr r0, _080772F8 - ldr r1, _080772FC - ldr r1, [r1] - bl strcpy - b _0807730A - .align 2, 0 -_080772F8: .4byte gUnknown_202DE58 -_080772FC: .4byte gUnknown_80FC0C8 -_08077300: - ldr r0, _08077340 - ldr r1, _08077344 - ldr r1, [r1] - bl strcpy -_0807730A: - cmp r7, 0xFF - bgt _08077320 - mov r0, r9 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8071728 - lsls r0, 24 - cmp r0, 0 - beq _08077320 - b _08077422 -_08077320: - adds r0, r5, 0 - movs r1, 0xB - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _08077350 - cmp r7, 0xFF - bgt _08077350 - ldr r0, _08077348 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0807734C - b _08077376 - .align 2, 0 -_08077340: .4byte gUnknown_202DE58 -_08077344: .4byte gUnknown_80FC0B8 -_08077348: .4byte gAvailablePokemonNames -_0807734C: .4byte gUnknown_80FD550 -_08077350: - adds r0, r5, 0 - movs r1, 0x9 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0807738C - cmp r4, 0 - bne _0807738C - cmp r7, 0xFF - bgt _0807738C - cmp r6, 0 - beq _08077422 - ldr r0, _08077384 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08077388 -_08077376: - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 - b _08077422 - .align 2, 0 -_08077384: .4byte gAvailablePokemonNames -_08077388: .4byte gUnknown_80FCA60 -_0807738C: - ldr r0, [r5, 0x70] - mov r8, r0 - ldr r0, _080773B8 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - lsls r1, r4, 2 - mov r0, r8 - adds r0, 0x2C - adds r0, r1 - ldr r0, [r0] - mov r10, r0 - adds r6, r1, 0 - cmp r7, 0xFF - bgt _080773BC - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8041FD8 - b _080773C4 - .align 2, 0 -_080773B8: .4byte gAvailablePokemonNames -_080773BC: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8041FB4 -_080773C4: - mov r0, r8 - adds r0, 0x2C - adds r4, r0, r6 - ldr r0, [r4] - adds r1, r7, 0 - bl sub_8009DA4 - str r0, [r4] - cmp r0, 0x1 - bgt _080773DC - movs r0, 0x2 - str r0, [r4] -_080773DC: - ldr r0, [r4] - ldr r1, _080773F0 - cmp r0, r1 - ble _080773E6 - str r1, [r4] -_080773E6: - ldr r0, [r4] - cmp r10, r0 - ble _080773F8 - ldr r0, _080773F4 - b _080773FE - .align 2, 0 -_080773F0: .4byte 0x000063fd -_080773F4: .4byte gUnknown_80FC11C -_080773F8: - cmp r10, r0 - bge _08077410 - ldr r0, _0807740C -_080773FE: - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 - b _0807741C - .align 2, 0 -_0807740C: .4byte gUnknown_80FC118 -_08077410: - ldr r0, _08077430 - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 -_0807741C: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08077422: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077430: .4byte gUnknown_80FC184 - thumb_func_end sub_80772C0 - - thumb_func_start sub_8077434 -sub_8077434: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - adds r5, r1, 0 - adds r4, r2, 0 - mov r8, r3 - ldr r0, [sp, 0x20] - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807752E - cmp r4, 0 - beq _08077470 - ldr r0, _08077468 - ldr r1, _0807746C - ldr r1, [r1] - bl strcpy - b _0807747A - .align 2, 0 -_08077468: .4byte gUnknown_202DE58 -_0807746C: .4byte gUnknown_80FC0AC -_08077470: - ldr r0, _080774BC - ldr r1, _080774C0 - ldr r1, [r1] - bl strcpy -_0807747A: - mov r0, r8 - cmp r0, 0xFF - bgt _08077490 - mov r0, r9 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8071728 - lsls r0, 24 - cmp r0, 0 - bne _0807752E -_08077490: - ldr r7, [r5, 0x70] - ldr r0, _080774C4 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - lsls r1, r4, 2 - adds r0, r7, 0 - adds r0, 0x34 - adds r0, r1 - ldr r0, [r0] - mov r10, r0 - adds r6, r1, 0 - mov r0, r8 - cmp r0, 0xFF - bgt _080774C8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_804201C - b _080774D0 - .align 2, 0 -_080774BC: .4byte gUnknown_202DE58 -_080774C0: .4byte gUnknown_80FC09C -_080774C4: .4byte gAvailablePokemonNames -_080774C8: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8041FFC -_080774D0: - adds r0, r7, 0 - adds r0, 0x34 - adds r4, r0, r6 - ldr r0, [r4] - mov r1, r8 - bl sub_8009DA4 - str r0, [r4] - cmp r0, 0x1 - bgt _080774E8 - movs r0, 0x2 - str r0, [r4] -_080774E8: - ldr r0, [r4] - ldr r1, _080774FC - cmp r0, r1 - ble _080774F2 - str r1, [r4] -_080774F2: - ldr r0, [r4] - cmp r10, r0 - ble _08077504 - ldr r0, _08077500 - b _0807750A - .align 2, 0 -_080774FC: .4byte 0x000063fd -_08077500: .4byte gUnknown_80FC114 -_08077504: - cmp r10, r0 - bge _0807751C - ldr r0, _08077518 -_0807750A: - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 - b _08077528 - .align 2, 0 -_08077518: .4byte gUnknown_80FC0FC -_0807751C: - ldr r0, _0807753C - ldr r2, [r0] - mov r0, r9 - adds r1, r5, 0 - bl sub_80522F4 -_08077528: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807752E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807753C: .4byte gUnknown_80FC180 - thumb_func_end sub_8077434 - - thumb_func_start sub_8077540 -sub_8077540: - push {r4-r7,lr} - adds r7, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080775D2 - ldr r6, [r4, 0x70] - ldr r0, _08077578 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8042040 - cmp r5, 0 - beq _08077584 - ldr r0, _0807757C - ldr r1, _08077580 - ldr r1, [r1] - bl strcpy - b _0807758E - .align 2, 0 -_08077578: .4byte gAvailablePokemonNames -_0807757C: .4byte gUnknown_202DE58 -_08077580: .4byte gUnknown_80FC090 -_08077584: - ldr r0, _080775B4 - ldr r1, _080775B8 - ldr r1, [r1] - bl strcpy -_0807758E: - lsls r0, r5, 1 - adds r1, r6, 0 - adds r1, 0x24 - adds r1, r0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0x13 - bgt _080775C0 - adds r0, r2, 0x1 - strh r0, [r1] - ldr r0, _080775BC - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080775CC - .align 2, 0 -_080775B4: .4byte gUnknown_202DE58 -_080775B8: .4byte gUnknown_80FC084 -_080775BC: .4byte gUnknown_80FC1C4 -_080775C0: - ldr r0, _080775D8 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080775CC: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080775D2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080775D8: .4byte gUnknown_80FC218 - thumb_func_end sub_8077540 - - thumb_func_start sub_80775DC -sub_80775DC: - push {r4-r7,lr} - adds r7, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r3, 24 - lsrs r4, r3, 24 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080776B6 - cmp r6, 0 - beq _0807760C - ldr r0, _08077604 - ldr r1, _08077608 - ldr r1, [r1] - bl strcpy - b _08077616 - .align 2, 0 -_08077604: .4byte gUnknown_202DE58 -_08077608: .4byte gUnknown_80FC090 -_0807760C: - ldr r0, _08077654 - ldr r1, _08077658 - ldr r1, [r1] - bl strcpy -_08077616: - adds r0, r7, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8071728 - lsls r0, 24 - cmp r0, 0 - bne _080776B6 - adds r0, r5, 0 - movs r1, 0x1E - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08077664 - cmp r6, 0 - bne _08077664 - cmp r4, 0 - beq _080776B6 - ldr r0, _0807765C - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08077660 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080776B6 - .align 2, 0 -_08077654: .4byte gUnknown_202DE58 -_08077658: .4byte gUnknown_80FC084 -_0807765C: .4byte gAvailablePokemonNames -_08077660: .4byte gUnknown_80FCA64 -_08077664: - ldr r4, [r5, 0x70] - ldr r0, _0807769C - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_8042060 - lsls r0, r6, 1 - adds r4, 0x24 - adds r1, r4, r0 - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _080776A4 - subs r0, r2, 0x1 - strh r0, [r1] - ldr r0, _080776A0 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080776B0 - .align 2, 0 -_0807769C: .4byte gAvailablePokemonNames -_080776A0: .4byte gUnknown_80FC1A4 -_080776A4: - ldr r0, _080776BC - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 -_080776B0: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080776B6: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080776BC: .4byte gUnknown_80FC1F0 - thumb_func_end sub_80775DC - - thumb_func_start sub_80776C0 -sub_80776C0: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077776 - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r6, 0 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08077776 - adds r0, r4, 0 - movs r1, 0x1F - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08077718 - ldr r0, _08077710 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - cmp r6, 0 - beq _08077776 - ldr r0, _08077714 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077776 - .align 2, 0 -_08077710: .4byte gAvailablePokemonNames -_08077714: .4byte gUnknown_80FCC18 -_08077718: - ldr r6, [r4, 0x70] - ldr r0, _08077758 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x1 - beq _08077764 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _0807775C - adds r0, r4, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xBD - strb r0, [r1] - adds r0, r4, 0 - bl sub_80420A0 - ldr r0, _08077760 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077770 - .align 2, 0 -_08077758: .4byte gAvailablePokemonNames -_0807775C: .4byte gUnknown_80F4E3C -_08077760: .4byte gUnknown_80FB2E0 -_08077764: - ldr r0, _0807777C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08077770: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077776: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807777C: .4byte gUnknown_80FB300 - thumb_func_end sub_80776C0 - - thumb_func_start sub_8077780 -sub_8077780: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _080777A2 - b _080778F0 -_080777A2: - adds r0, r7, 0 - adds r1, r5, 0 - mov r2, r10 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - beq _080777B4 - b _080778F0 -_080777B4: - adds r0, r5, 0 - movs r1, 0x16 - bl HasAbility - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080777EC - ldr r0, _080777E4 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - mov r0, r10 - cmp r0, 0 - bne _080777D6 - b _080778F0 -_080777D6: - ldr r0, _080777E8 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080778F0 - .align 2, 0 -_080777E4: .4byte gAvailablePokemonNames -_080777E8: .4byte gUnknown_80FCBF8 -_080777EC: - movs r6, 0x1 - ldr r1, [r5, 0x70] - mov r8, r1 - ldr r0, _08077844 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - mov r1, r8 - adds r1, 0xAC - ldrb r0, [r1] - cmp r0, 0x4 - beq _08077850 - movs r0, 0x4 - strb r0, [r1] - ldr r1, _08077848 - adds r0, r5, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - mov r1, r8 - adds r1, 0xAD - strb r0, [r1] - mov r0, r8 - adds r0, 0xAE - strb r4, [r0] - adds r0, 0x1 - strb r4, [r0] - movs r6, 0 - ldr r0, _0807784C - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 - adds r0, r5, 0 - bl sub_8041C1C - adds r0, r5, 0 - bl GetMovementSpeed - b _0807785C - .align 2, 0 -_08077844: .4byte gAvailablePokemonNames -_08077848: .4byte gUnknown_80F4E50 -_0807784C: .4byte gUnknown_80FB2AC -_08077850: - ldr r0, _08077900 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 -_0807785C: - adds r0, r5, 0 - movs r1, 0x19 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _080778EA - cmp r6, 0 - bne _080778EA - movs r3, 0 - mov r9, r3 - movs r6, 0 -_08077874: - movs r1, 0x4 - ldrsh r0, [r5, r1] - ldr r1, _08077904 - lsls r2, r6, 2 - adds r2, r1 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r3, 0x6 - ldrsh r1, [r5, r3] - movs r3, 0x2 - ldrsh r2, [r2, r3] - adds r1, r2 - bl GetMapTile_1 - ldr r4, [r0, 0x10] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080778E4 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - bne _080778E4 - mov r0, r9 - cmp r0, 0 - bne _080778CA - movs r1, 0x1 - mov r9, r1 - ldr r0, _08077908 - mov r1, r8 - movs r2, 0 - bl SetMessageArgument_2 - ldr r0, _0807790C - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_80522F4 -_080778CA: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807167C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080778E4 - adds r0, r7, 0 - adds r1, r4, 0 - mov r2, r10 - bl sub_8077780 -_080778E4: - adds r6, 0x1 - cmp r6, 0x7 - ble _08077874 -_080778EA: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080778F0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077900: .4byte gUnknown_80FB2CC -_08077904: .4byte gAdjacentTileOffsets -_08077908: .4byte gAvailablePokemonNames -_0807790C: .4byte gUnknown_80FF01C - thumb_func_end sub_8077780 - - thumb_func_start sub_8077910 -sub_8077910: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - adds r5, r1, 0 - adds r4, r2, 0 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080779DE - cmp r4, 0 - bne _08077940 - ldr r1, _08077964 - adds r0, r5, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r4, r0, 0x1 -_08077940: - ldr r6, [r5, 0x70] - ldr r0, _08077968 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - bl GetMovementSpeed - adds r7, r0, 0 - cmp r7, 0x4 - bne _08077970 - mov r0, r9 - cmp r0, 0 - beq _080779D8 - ldr r0, _0807796C - b _0807799E - .align 2, 0 -_08077964: .4byte gUnknown_80F4E40 -_08077968: .4byte gAvailablePokemonNames -_0807796C: .4byte gUnknown_80FC2B8 -_08077970: - movs r2, 0 - movs r0, 0x84 - lsls r0, 1 - adds r1, r6, r0 - b _08077988 -_0807797A: - adds r2, 0x1 - cmp r2, 0x4 - bgt _08077990 - movs r1, 0x84 - lsls r1, 1 - adds r0, r6, r1 - adds r1, r0, r2 -_08077988: - ldrb r0, [r1] - cmp r0, 0 - bne _0807797A - strb r4, [r1] -_08077990: - adds r0, r5, 0 - bl GetMovementSpeed - adds r4, r0, 0 - cmp r7, r4 - bne _080779B0 - ldr r0, _080779AC -_0807799E: - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 - b _080779D8 - .align 2, 0 -_080779AC: .4byte gUnknown_80FC298 -_080779B0: - adds r0, r5, 0 - bl sub_8041CB8 - ldr r1, _080779EC - lsls r0, r4, 2 - adds r0, r1 - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 - adds r1, r6, 0 - adds r1, 0xF8 - movs r2, 0 - movs r0, 0x1 - strb r0, [r1] - movs r1, 0xA4 - lsls r1, 1 - adds r0, r6, r1 - strb r2, [r0] -_080779D8: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_080779DE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080779EC: .4byte gUnknown_80FA124 - thumb_func_end sub_8077910 - - thumb_func_start sub_80779F0 -sub_80779F0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - adds r5, r1, 0 - mov r8, r2 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077AD0 - mov r0, r10 - adds r1, r5, 0 - mov r2, r9 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08077AD0 - ldr r7, [r5, 0x70] - ldr r0, _08077A48 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - bl GetMovementSpeed - str r0, [sp] - cmp r0, 0 - bne _08077A50 - mov r0, r9 - cmp r0, 0 - beq _08077ACA - ldr r0, _08077A4C - b _08077AA2 - .align 2, 0 -_08077A48: .4byte gAvailablePokemonNames -_08077A4C: .4byte gUnknown_80FC2D8 -_08077A50: - movs r0, 0 - cmp r0, r8 - bge _08077A8C -_08077A56: - movs r1, 0 - adds r6, r0, 0x1 -_08077A5A: - ldr r2, _08077A78 - adds r0, r7, r2 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - bne _08077A80 - adds r0, r5, 0 - ldr r1, _08077A7C - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - strb r0, [r4] - b _08077A86 - .align 2, 0 -_08077A78: .4byte 0x0000010d -_08077A7C: .4byte gUnknown_80F4E48 -_08077A80: - adds r1, 0x1 - cmp r1, 0x4 - ble _08077A5A -_08077A86: - adds r0, r6, 0 - cmp r0, r8 - blt _08077A56 -_08077A8C: - adds r0, r5, 0 - bl GetMovementSpeed - adds r4, r0, 0 - ldr r0, [sp] - cmp r0, r4 - bne _08077AB4 - mov r2, r9 - cmp r2, 0 - beq _08077ACA - ldr r0, _08077AB0 -_08077AA2: - ldr r2, [r0] - mov r0, r10 - adds r1, r5, 0 - bl sub_80522F4 - b _08077ACA - .align 2, 0 -_08077AB0: .4byte gUnknown_80FC298 -_08077AB4: - adds r0, r5, 0 - bl sub_8041CCC - ldr r0, _08077AE0 - lsls r1, r4, 2 - adds r1, r0 - ldr r2, [r1] - mov r0, r10 - adds r1, r5, 0 - bl sub_80522F4 -_08077ACA: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08077AD0: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077AE0: .4byte gUnknown_80FA124 - thumb_func_end sub_80779F0 - - thumb_func_start sub_8077AE4 -sub_8077AE4: - push {r4-r7,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r7, r5, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077BAA - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08077BAA - ldr r0, _08077B2C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r4, 0 - movs r1, 0x12 - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _08077B34 - cmp r5, 0 - beq _08077BAA - ldr r0, _08077B30 - b _08077B48 - .align 2, 0 -_08077B2C: .4byte gAvailablePokemonNames -_08077B30: .4byte gUnknown_80FD500 -_08077B34: - adds r0, r4, 0 - movs r1, 0x40 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08077B58 - cmp r7, 0 - beq _08077BAA - ldr r0, _08077B54 -_08077B48: - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077BAA - .align 2, 0 -_08077B54: .4byte gUnknown_80FCDB4 -_08077B58: - adds r0, r4, 0 - bl sub_8041BE8 - ldr r5, [r4, 0x70] - adds r1, r5, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x2 - beq _08077B98 - movs r0, 0x2 - strb r0, [r1] - ldr r1, _08077B90 - adds r0, r4, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xBD - strb r0, [r1] - ldr r0, _08077B94 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077BA4 - .align 2, 0 -_08077B90: .4byte gUnknown_80F4E4C -_08077B94: .4byte gUnknown_80FB25C -_08077B98: - ldr r0, _08077BB0 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08077BA4: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077BAA: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08077BB0: .4byte gUnknown_80FB27C - thumb_func_end sub_8077AE4 - - thumb_func_start sub_8077BB4 -sub_8077BB4: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08077C3A - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_80716E8 - lsls r0, 24 - cmp r0, 0 - bne _08077C3A - ldr r5, [r4, 0x70] - ldr r0, _08077C1C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xBC - ldrb r0, [r1] - cmp r0, 0x4 - beq _08077C28 - movs r0, 0x4 - strb r0, [r1] - ldr r1, _08077C20 - 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 sub_8041BF8 - ldr r0, _08077C24 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08077C34 - .align 2, 0 -_08077C1C: .4byte gAvailablePokemonNames -_08077C20: .4byte gUnknown_80F4ECC -_08077C24: .4byte gUnknown_80FB940 -_08077C28: - ldr r0, _08077C40 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08077C34: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08077C3A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08077C40: .4byte gUnknown_80FB960 - thumb_func_end sub_8077BB4 - thumb_func_start HealTargetHP HealTargetHP: push {r4-r7,lr} @@ -1632,7 +422,7 @@ _08077F88: adds r0, r5, 0 adds r1, r4, 0 mov r2, r9 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08078068 @@ -1985,7 +775,7 @@ sub_807824C: adds r0, r6, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _080782C2 @@ -2174,7 +964,7 @@ _080783E8: adds r0, r5, 0 adds r1, r7, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 beq _080783FA @@ -2396,7 +1186,7 @@ sub_8078594: adds r0, r5, 0 adds r1, r6, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _0807866E @@ -2597,7 +1387,7 @@ sub_8078758: adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _080787DA @@ -2787,7 +1577,7 @@ sub_80788E8: adds r0, r6, 0 adds r1, r5, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _0807895E @@ -2851,7 +1641,7 @@ sub_8078968: adds r0, r6, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08078A4A @@ -3344,7 +2134,7 @@ sub_8078D8C: adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08078E0E @@ -3632,7 +2422,7 @@ sub_8078FDC: adds r0, r6, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _080790B6 @@ -3736,7 +2526,7 @@ sub_80790C8: adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08079134 @@ -3793,7 +2583,7 @@ BlindTarget: adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _080791CE @@ -3863,7 +2653,7 @@ sub_80791D8: adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08079266 diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index 9d544c1d9..83358f573 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -1425,7 +1425,7 @@ sub_80807C0: beq _08080870 mov r0, r8 movs r2, 0x1 - bl sub_80716E8 + bl HasSafeguardStatus lsls r0, 24 cmp r0, 0 bne _08080870 diff --git a/asm/wonder_mail_5.s b/asm/wonder_mail_5.s index ec3a007ad..7cae32e18 100644 --- a/asm/wonder_mail_5.s +++ b/asm/wonder_mail_5.s @@ -139,661 +139,4 @@ _08030F50: .4byte gUnknown_203B324 _08030F54: .4byte gUnknown_80E0938 thumb_func_end sub_8030E48 - thumb_func_start sub_8030F58 -sub_8030F58: - push {r4-r6,lr} - adds r6, r0, 0 - bl ResetUnusedInputStruct - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r5, _08030FF4 - ldr r0, [r5] - cmp r0, 0 - bne _08030F88 - movs r4, 0x8E - lsls r4, 1 - adds r0, r4, 0 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] - movs r1, 0 - adds r2, r4, 0 - bl MemoryFill8 -_08030F88: - ldr r0, [r5] - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - str r6, [r0] - movs r0, 0x98 - lsls r0, 1 - bl GetDialogueSpriteDataPtr - ldr r2, [r5] - movs r4, 0x84 - lsls r4, 1 - adds r1, r2, r4 - str r0, [r1] - movs r3, 0x86 - lsls r3, 1 - adds r1, r2, r3 - ldr r0, [r0, 0x4] - str r0, [r1] - movs r0, 0x8A - lsls r0, 1 - adds r2, r0 - movs r1, 0 - strb r1, [r2] - ldr r0, [r5] - ldr r2, _08030FF8 - adds r0, r2 - strb r1, [r0] - ldr r0, [r5] - adds r3, 0xA - adds r0, r3 - strb r1, [r0] - ldr r2, [r5] - movs r0, 0x88 - lsls r0, 1 - adds r1, r2, r0 - movs r0, 0x2 - strh r0, [r1] - subs r3, 0x4 - adds r1, r2, r3 - movs r0, 0x8 - strh r0, [r1] - adds r0, r6, 0 - bl sub_8030C20 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08031038 - cmp r6, 0x2 - beq _08030FFC - cmp r6, 0x4 - beq _08031014 - b _08031022 - .align 2, 0 -_08030FF4: .4byte gUnknown_203B328 -_08030FF8: .4byte 0x00000115 -_08030FFC: - ldr r0, _0803100C - ldr r2, [r5] - adds r2, r4 - ldr r3, _08031010 - movs r1, 0 - bl sub_80141B4 - b _08031022 - .align 2, 0 -_0803100C: .4byte gUnknown_80E09D8 -_08031010: .4byte 0x00000101 -_08031014: - ldr r0, _0803102C - ldr r2, [r5] - adds r2, r4 - ldr r3, _08031030 - movs r1, 0 - bl sub_80141B4 -_08031022: - ldr r0, _08031034 - ldr r1, [r0] - movs r0, 0x5 - str r0, [r1] - b _08031048 - .align 2, 0 -_0803102C: .4byte gUnknown_80E0A0C -_08031030: .4byte 0x00000101 -_08031034: .4byte gUnknown_203B328 -_08031038: - ldr r0, [r5] - str r1, [r0] - adds r0, r6, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x8 - bl sub_80306A8 -_08031048: - movs r0, 0x1 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8030F58 - - thumb_func_start sub_8031050 -sub_8031050: - push {lr} - ldr r1, _08031068 - ldr r0, [r1] - ldr r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bhi _080310AC - lsls r0, 2 - ldr r1, _0803106C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08031068: .4byte gUnknown_203B328 -_0803106C: .4byte _08031070 - .align 2, 0 -_08031070: - .4byte _0803108C - .4byte _08031092 - .4byte _08031098 - .4byte _08031098 - .4byte _080310A2 - .4byte _080310A8 - .4byte _080310A8 -_0803108C: - bl sub_8031300 - b _080310AC -_08031092: - bl sub_803136C - b _080310AC -_08031098: - ldr r0, [r2] - ldr r0, [r0] - bl sub_80313D8 - b _080310AC -_080310A2: - bl sub_8031498 - b _080310AC -_080310A8: - movs r0, 0x3 - b _080310AE -_080310AC: - movs r0, 0 -_080310AE: - pop {r1} - bx r1 - thumb_func_end sub_8031050 - - thumb_func_start sub_80310B4 -sub_80310B4: - push {r4,lr} - bl sub_803084C - ldr r4, _080310E0 - ldr r0, [r4] - cmp r0, 0 - beq _080310D8 - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_080310D8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080310E0: .4byte gUnknown_203B328 - thumb_func_end sub_80310B4 - - thumb_func_start sub_80310E4 -sub_80310E4: - push {lr} - ldr r1, _080310F8 - ldr r1, [r1] - str r0, [r1] - bl sub_80310FC - bl sub_8031258 - pop {r0} - bx r0 - .align 2, 0 -_080310F8: .4byte gUnknown_203B328 - thumb_func_end sub_80310E4 - - thumb_func_start sub_80310FC -sub_80310FC: - push {r4-r6,lr} - ldr r4, _0803111C - ldr r0, [r4] - adds r0, 0xA8 - bl sub_8006518 - ldr r0, [r4] - ldr r0, [r0] - cmp r0, 0x6 - bls _08031112 - b _0803122C -_08031112: - lsls r0, 2 - ldr r1, _08031120 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0803111C: .4byte gUnknown_203B328 -_08031120: .4byte _08031124 - .align 2, 0 -_08031124: - .4byte _08031140 - .4byte _08031178 - .4byte _080311C0 - .4byte _080311C0 - .4byte _080311E8 - .4byte _0803122C - .4byte _0803122C -_08031140: - ldr r3, _08031170 - ldr r1, [r3] - ldr r2, _08031174 - adds r1, 0xC0 - adds r0, r2, 0 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r1, [r3] - adds r1, 0xD8 - adds r0, r2, 0 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r0, [r3] - adds r0, 0xF0 - ldm r2!, {r1,r3,r4} - stm r0!, {r1,r3,r4} - ldm r2!, {r1,r5,r6} - stm r0!, {r1,r5,r6} - b _0803123A - .align 2, 0 -_08031170: .4byte gUnknown_203B328 -_08031174: .4byte gUnknown_80E0990 -_08031178: - ldr r3, _080311B0 - ldr r1, [r3] - adds r1, 0xC0 - ldr r0, _080311B4 - ldm r0!, {r2,r4,r5} - stm r1!, {r2,r4,r5} - ldm r0!, {r2,r4,r6} - stm r1!, {r2,r4,r6} - ldr r1, [r3] - ldr r2, _080311B8 - adds r1, 0xD8 - adds r0, r2, 0 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r0, [r3] - adds r0, 0xF0 - ldm r2!, {r1,r5,r6} - stm r0!, {r1,r5,r6} - ldm r2!, {r4-r6} - stm r0!, {r4-r6} - ldr r0, [r3] - adds r0, 0xC0 - ldr r1, _080311BC - bl sub_8012CAC - b _0803123A - .align 2, 0 -_080311B0: .4byte gUnknown_203B328 -_080311B4: .4byte gUnknown_80E09A8 -_080311B8: .4byte gUnknown_80E0990 -_080311BC: .4byte gUnknown_80E0968 -_080311C0: - ldr r2, _080311DC - ldr r1, [r2] - adds r1, 0xD8 - ldr r0, _080311E0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldm r0!, {r3,r4,r6} - stm r1!, {r3,r4,r6} - ldr r0, [r2] - adds r0, 0xD8 - ldr r1, _080311E4 - bl sub_8012CAC - b _0803123A - .align 2, 0 -_080311DC: .4byte gUnknown_203B328 -_080311E0: .4byte gUnknown_80E09C0 -_080311E4: .4byte gUnknown_80E0948 -_080311E8: - ldr r3, _08031224 - ldr r1, [r3] - ldr r2, _08031228 - adds r1, 0xA8 - adds r0, r2, 0 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r1, [r3] - adds r1, 0xC0 - adds r0, r2, 0 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r1, [r3] - adds r1, 0xD8 - adds r0, r2, 0 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r0, [r3] - adds r0, 0xF0 - ldm r2!, {r1,r5,r6} - stm r0!, {r1,r5,r6} - ldm r2!, {r3-r5} - stm r0!, {r3-r5} - b _0803123A - .align 2, 0 -_08031224: .4byte gUnknown_203B328 -_08031228: .4byte gUnknown_80E0990 -_0803122C: - bl ResetUnusedInputStruct - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C -_0803123A: - bl ResetUnusedInputStruct - ldr r0, _08031254 - ldr r0, [r0] - adds r0, 0xA8 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08031254: .4byte gUnknown_203B328 - thumb_func_end sub_80310FC - - thumb_func_start sub_8031258 -sub_8031258: - push {r4,lr} - sub sp, 0x8 - ldr r1, _08031274 - ldr r0, [r1] - ldr r0, [r0] - adds r2, r1, 0 - cmp r0, 0x6 - bhi _080312F6 - lsls r0, 2 - ldr r1, _08031278 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08031274: .4byte gUnknown_203B328 -_08031278: .4byte _0803127C - .align 2, 0 -_0803127C: - .4byte _08031298 - .4byte _080312A0 - .4byte _080312BC - .4byte _080312BC - .4byte _080312EC - .4byte _080312F6 - .4byte _080312F6 -_08031298: - movs r0, 0x1 - bl sub_8030810 - b _080312F6 -_080312A0: - bl sub_803092C - ldr r0, _080312B4 - ldr r0, [r0] - adds r0, 0x8 - ldr r1, _080312B8 - movs r2, 0x4 - str r2, [sp] - movs r2, 0x1 - b _080312D8 - .align 2, 0 -_080312B4: .4byte gUnknown_203B328 -_080312B8: .4byte gUnknown_80E0968 -_080312BC: - bl sub_803092C - ldr r4, _080312E4 - ldr r0, [r4] - adds r0, 0x8 - movs r1, 0 - bl sub_8012EA4 - ldr r0, [r4] - adds r0, 0x58 - ldr r1, _080312E8 - movs r2, 0x3 - str r2, [sp] - movs r2, 0x2 -_080312D8: - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_8012D60 - b _080312F6 - .align 2, 0 -_080312E4: .4byte gUnknown_203B328 -_080312E8: .4byte gUnknown_80E0948 -_080312EC: - ldr r0, [r2] - ldrb r0, [r0, 0x4] - movs r1, 0x3 - bl sub_8030D40 -_080312F6: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8031258 - - thumb_func_start sub_8031300 -sub_8031300: - push {lr} - movs r0, 0x1 - bl sub_8030768 - cmp r0, 0x4 - bhi _08031366 - lsls r0, 2 - ldr r1, _08031318 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08031318: .4byte _0803131C - .align 2, 0 -_0803131C: - .4byte _08031366 - .4byte _08031366 - .4byte _08031360 - .4byte _08031330 - .4byte _08031348 -_08031330: - bl sub_80307EC - ldr r1, _08031344 - ldr r1, [r1] - strb r0, [r1, 0x4] - movs r0, 0x1 - bl sub_80310E4 - b _08031366 - .align 2, 0 -_08031344: .4byte gUnknown_203B328 -_08031348: - bl sub_80307EC - ldr r1, _0803135C - ldr r1, [r1] - strb r0, [r1, 0x4] - movs r0, 0x4 - bl sub_80310E4 - b _08031366 - .align 2, 0 -_0803135C: .4byte gUnknown_203B328 -_08031360: - movs r0, 0x6 - bl sub_80310E4 -_08031366: - pop {r0} - bx r0 - thumb_func_end sub_8031300 - - thumb_func_start sub_803136C -sub_803136C: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_8030768 - ldr r4, _080313A4 - ldr r0, [r4] - adds r0, 0x8 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _08031392 - ldr r0, [r4] - adds r0, 0x8 - mov r1, sp - bl sub_8013114 -_08031392: - ldr r0, [sp] - cmp r0, 0x4 - beq _080313C2 - cmp r0, 0x4 - bgt _080313A8 - cmp r0, 0x1 - beq _080313B2 - b _080313D0 - .align 2, 0 -_080313A4: .4byte gUnknown_203B328 -_080313A8: - cmp r0, 0x5 - beq _080313CA - cmp r0, 0x6 - beq _080313BA - b _080313D0 -_080313B2: - movs r0, 0 - bl sub_80310E4 - b _080313D0 -_080313BA: - movs r0, 0x3 - bl sub_80310E4 - b _080313D0 -_080313C2: - movs r0, 0x2 - bl sub_80310E4 - b _080313D0 -_080313CA: - movs r0, 0x4 - bl sub_80310E4 -_080313D0: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_803136C - - thumb_func_start sub_80313D8 -sub_80313D8: - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r0, 0 - str r0, [sp] - bl sub_8030768 - ldr r4, _08031418 - ldr r0, [r4] - adds r0, 0x8 - bl sub_8012FD8 - ldr r0, [r4] - adds r0, 0x58 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _08031408 - ldr r0, [r4] - adds r0, 0x58 - mov r1, sp - bl sub_8013114 -_08031408: - ldr r0, [sp] - cmp r0, 0x2 - beq _08031428 - cmp r0, 0x2 - bgt _0803141C - cmp r0, 0x1 - beq _08031420 - b _0803148E - .align 2, 0 -_08031418: .4byte gUnknown_203B328 -_0803141C: - cmp r0, 0x3 - bne _0803148E -_08031420: - movs r0, 0 - bl sub_80310E4 - b _0803148E -_08031428: - cmp r5, 0x2 - beq _08031432 - cmp r5, 0x3 - beq _0803143C - b _0803145A -_08031432: - ldr r0, [r4] - ldrb r0, [r0, 0x4] - bl sub_8095240 - b _0803145A -_0803143C: - ldr r4, _08031480 - movs r3, 0 - movs r1, 0 - movs r2, 0x1F -_08031444: - ldr r0, [r4] - adds r0, r1 - strb r3, [r0] - ldr r0, [r4] - adds r0, r1 - adds r0, 0x22 - strb r3, [r0] - adds r1, 0x30 - subs r2, 0x1 - cmp r2, 0 - bge _08031444 -_0803145A: - ldr r0, _08031484 - ldr r0, [r0] - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x2 - beq _0803146E - cmp r0, 0x4 - bne _0803148E -_0803146E: - bl sub_8030C20 - lsls r0, 24 - cmp r0, 0 - beq _08031488 - movs r0, 0x5 - bl sub_80310E4 - b _0803148E - .align 2, 0 -_08031480: .4byte gUnknown_203B480 -_08031484: .4byte gUnknown_203B328 -_08031488: - movs r0, 0 - bl sub_80310E4 -_0803148E: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80313D8 - .align 2,0 diff --git a/include/code_808417C.h b/include/code_808417C.h new file mode 100644 index 000000000..336a4a119 --- /dev/null +++ b/include/code_808417C.h @@ -0,0 +1,6 @@ +#ifndef GUARD_808417C_H +#define GUARD_808417C_H + +s32 CalculateStatusTurns(struct DungeonEntity *target, s16 *turnRange, bool8 factorCurerSkills); + +#endif // GUARD_808417C_H diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index 32a0f5e18..210c152f1 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -162,7 +162,8 @@ struct DungeonEntityData /* 0xF5 */ bool8 exposedStatus; /* 0xF6 */ bool8 isColorChanged; /* 0xF7 */ bool8 isBoss; - u8 fillF8[0xFA - 0xF8]; + /* 0xF8 */ u8 unkF8; + /* 0xF8 */ u8 unkF9; /* 0xFA */ u8 terrifiedTurnsLeft; // Doubles as a bool for whether the Pokémon is terrified. u8 unkFB; // Set to true if the player makes a teammate use their held item. diff --git a/include/dungeon_pokemon_attributes.h b/include/dungeon_pokemon_attributes.h index f5b46f98c..eb35abbad 100644 --- a/include/dungeon_pokemon_attributes.h +++ b/include/dungeon_pokemon_attributes.h @@ -3,6 +3,8 @@ #include "dungeon_entity.h" +bool8 HasSafeguardStatus(struct DungeonEntity * param_1, struct DungeonEntity * param_2, bool8 displayMessage); +bool8 sub_80717A4(struct DungeonEntity *pokemon, u16 moveID); bool8 HasAbility(struct DungeonEntity *pokemon, u8 ability); bool8 HasType(struct DungeonEntity *pokemon, u8 type); bool8 CanSeeInvisible(struct DungeonEntity *pokemon); diff --git a/ld_script.txt b/ld_script.txt index 8bf14f9b2..f7db8c482 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -142,7 +142,7 @@ SECTIONS { asm/wonder_mail_4.o(.text); src/wonder_mail_5.o(.text); asm/wonder_mail_5.o(.text); - src/wonder_mail_4_1.o(.text); + src/wonder_mail_6.o(.text); src/post_office_guide.o(.text); asm/code_8031D70.o(.text); src/adventure_log.o(.text); diff --git a/src/dungeon_ai_items.c b/src/dungeon_ai_items.c index 80632dca9..76cb26586 100644 --- a/src/dungeon_ai_items.c +++ b/src/dungeon_ai_items.c @@ -34,7 +34,7 @@ enum ItemTargetFlag ITEM_TARGET_ALLY = 1 << 1 }; -extern void sub_8077274(struct DungeonEntity *, struct DungeonEntity *); +extern void UpdateFlashFireBoost(struct DungeonEntity *, struct DungeonEntity *); extern s32 gNumPotentialTargets; extern u32 gPotentialItemTargetWeights[NUM_DIRECTIONS]; @@ -55,7 +55,7 @@ void sub_807360C(struct DungeonEntity *pokemon) if(entity->entityData->unk152 != 0) { entity->entityData->unk152 = 0; - sub_8077274(entity, entity); + UpdateFlashFireBoost(entity, entity); } } } diff --git a/src/dungeon_pokemon_attributes.c b/src/dungeon_pokemon_attributes.c index 2a0d0c7c4..79b14fabf 100644 --- a/src/dungeon_pokemon_attributes.c +++ b/src/dungeon_pokemon_attributes.c @@ -26,32 +26,32 @@ extern bool8 sub_805744C(struct DungeonEntity *, struct PokemonMove *, u32); extern void SetMessageArgument(char[], struct DungeonEntity*, u32); extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u32); -bool8 sub_80716E8(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3) +bool8 HasSafeguardStatus(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage) { - if (param_2->entityData->protectionStatus == PROTECTION_STATUS_SAFEGUARD) { - if (param_3 != '\0') { - SetMessageArgument(gAvailablePokemonNames,param_2,0); - sub_80522F4(param_1,param_2,gUnknown_80FC2FC); + if (target->entityData->protectionStatus == PROTECTION_STATUS_SAFEGUARD) { + if (displayMessage) { + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_80522F4(pokemon,target,gUnknown_80FC2FC); } return TRUE; } return FALSE; } -bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3) +bool8 sub_8071728(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage) { - if (param_2->entityData->protectionStatus == PROTECTION_STATUS_MIST) { - if (param_3 != '\0') { - SetMessageArgument(gAvailablePokemonNames, param_2, 0); - sub_80522F4(param_1, param_2, gUnknown_80FC31C); + if (target->entityData->protectionStatus == PROTECTION_STATUS_MIST) { + if (displayMessage) { + SetMessageArgument(gAvailablePokemonNames, target, 0); + sub_80522F4(pokemon, target, gUnknown_80FC31C); } return TRUE; } else { - if (HasAbility(param_2, ABILITY_CLEAR_BODY) || HasAbility(param_2, ABILITY_WHITE_SMOKE)) { - if (param_3 != '\0') { - SetMessageArgument(gAvailablePokemonNames, param_2, 0); - sub_80522F4(param_1, param_2, gUnknown_80FCEFC); + if (HasAbility(target, ABILITY_CLEAR_BODY) || HasAbility(target, ABILITY_WHITE_SMOKE)) { + if (displayMessage) { + SetMessageArgument(gAvailablePokemonNames, target, 0); + sub_80522F4(pokemon, target, gUnknown_80FCEFC); } return TRUE; } @@ -59,12 +59,12 @@ bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2 return FALSE; } -bool8 sub_80717A4(struct DungeonEntity *param_1, u16 moveID) +bool8 sub_80717A4(struct DungeonEntity *pokemon, u16 moveID) { struct DungeonEntityData * entityData; s32 iVar3; - entityData = param_1->entityData; + entityData = pokemon->entityData; if ((entityData->sleepStatus != SLEEP_STATUS_SLEEP) && (entityData->sleepStatus != SLEEP_STATUS_NAPPING) && (entityData->sleepStatus != SLEEP_STATUS_NIGHTMARE)) { return FALSE; } @@ -78,7 +78,7 @@ bool8 sub_80717A4(struct DungeonEntity *param_1, u16 moveID) for(iVar3 = 0, pokeMove = entityData->moves, pokeMove2 = pokeMove; iVar3 < MAX_MON_MOVES; pokeMove++, pokeMove2++, iVar3++) { if (((pokeMove->moveFlags & MOVE_FLAG_EXISTS) != 0) && (entityData->isLeader || ((pokeMove->moveFlags & MOVE_FLAG_ENABLED) != 0))) - if((sub_805744C(param_1, pokeMove2, 1) != '\0') && (pokeMove->PP != 0)) + if((sub_805744C(pokemon, pokeMove2, 1) != '\0') && (pokeMove->PP != 0)) if(pokeMove->moveID == moveID) return TRUE; } diff --git a/src/status.c b/src/status.c index dc8a812bc..adbf2c614 100644 --- a/src/status.c +++ b/src/status.c @@ -1,9 +1,85 @@ #include "global.h" #include "status.h" - +#include "constants/status.h" #include "constants/ability.h" #include "dungeon_pokemon_attributes.h" +#include "dungeon_ai_targeting.h" +#include "dungeon_map_access.h" #include "dungeon_util.h" +#include "dungeon_items.h" +#include "code_808417C.h" +#include "map.h" + +extern u8 gAvailablePokemonNames[]; +extern u8 gUnknown_202DE58[]; + +extern u8 *gUnknown_80FC084[]; +extern u8 *gUnknown_80FC090[]; +extern u8 *gUnknown_80FC1C4[]; +extern u8 *gUnknown_80FC218[]; +extern u8 *gUnknown_80FD550[]; +extern u8 *gUnknown_80FCA60[]; +extern u8 *gUnknown_80FC184[]; +extern u8 *gUnknown_80FC0B8[]; +extern u8 *gUnknown_80FC0C8[]; +extern u8 *gUnknown_80FC118[]; +extern u8 *gUnknown_80FC11C[]; +extern u8 *gUnknown_80FC114[]; +extern u8 *gUnknown_80FC180[]; +extern u8 *gUnknown_80FC0FC[]; +extern u8 *gUnknown_80FC0AC[]; +extern u8 *gUnknown_80FC09C[]; +extern u8 *gUnknown_80FC1F0[]; +extern u8 *gUnknown_80FC1A4[]; +extern u8 *gUnknown_80FCA64[]; +extern s16 gUnknown_80F4E3C[]; +extern u8 *gUnknown_80FCC18[]; +extern u8 *gUnknown_80FB2E0[]; +extern u8 *gUnknown_80FB300[]; +extern s16 gUnknown_80F4E50[]; +extern u8 *gUnknown_80FB2CC[]; +extern u8 *gUnknown_80FB2AC[]; +extern u8 *gUnknown_80FF01C[]; +extern u8 *gUnknown_80FCBF8[]; +extern s16 gUnknown_80F4E40[]; +extern u8 *gUnknown_80FA124[]; +extern u8 *gUnknown_80FC2B8[]; +extern u8 *gUnknown_80FC298[]; +extern u8 *gUnknown_80FC2D8[]; +extern u8 *gUnknown_80FC298[]; +extern s16 gUnknown_80F4E48[]; +extern s16 gUnknown_80F4E4C[]; +extern u8 *gUnknown_80FB27C[]; +extern u8 *gUnknown_80FB25C[]; +extern u8 *gUnknown_80FCDB4[]; +extern u8 *gUnknown_80FD500[]; +extern s16 gUnknown_80F4ECC[]; +extern u8 *gUnknown_80FB960[]; +extern u8 *gUnknown_80FB940[]; + +extern void sub_8041BF8(struct DungeonEntity *); +extern void sub_8041BE8(struct DungeonEntity *); +extern void sub_8041CCC(struct DungeonEntity *); +extern void sub_8041CB8(struct DungeonEntity *r0); +extern void sub_8041C1C(struct DungeonEntity *r0); +extern s32 GetMovementSpeed(struct DungeonEntity *); + +extern void sub_8042060(struct DungeonEntity *, s32); +extern bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3); +extern void sub_8041FB4(struct DungeonEntity *r0, u32 r1); +extern void sub_8041FD8(struct DungeonEntity *r0, u32 r1); +extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u8 *); +extern s32 sub_8009DA4(s32, s32); + +extern void sub_804201C(struct DungeonEntity *r0, u32 r1); +extern void sub_8041FFC(struct DungeonEntity *r0, u32 r1); + +extern void SetMessageArgument(char[], struct DungeonEntity*, u32); +extern void SetMessageArgument_2(char[], struct DungeonEntityData*, u32); +extern void sub_8041C58(struct DungeonEntity *r0); +extern void DungeonEntityUpdateStatusSprites(struct DungeonEntity *); +extern void sub_8042040(struct DungeonEntity *, s32); +extern void sub_80420A0(struct DungeonEntity *); u8 GetFlashFireStatus(struct DungeonEntity *pokemon) { @@ -17,3 +93,450 @@ u8 GetFlashFireStatus(struct DungeonEntity *pokemon) } return FLASH_FIRE_STATUS_NOT_MAXED; } + +static inline s32 UpdateFlashFireBoost_sub(struct DungeonEntityData * entityData) +{ + s32 flashFireBoost; + + flashFireBoost = entityData->flashFireBoost; + flashFireBoost++; + if (FLASH_FIRE_STATUS_MAXED < flashFireBoost) { + flashFireBoost = FLASH_FIRE_STATUS_NOT_MAXED; + } + return flashFireBoost; +} + +void UpdateFlashFireBoost(struct DungeonEntity * pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData * entityData; + struct DungeonEntityData * entityData_1; + s32 flashFireBoost; + + if (EntityExists(target)) { + entityData = target->entityData; + entityData_1 = entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + flashFireBoost = UpdateFlashFireBoost_sub(entityData); + if (entityData_1->flashFireBoost != flashFireBoost) { + entityData_1->flashFireBoost = flashFireBoost; + sub_8041C58(target); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_80772C0(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 statStage, s32 param_4, bool8 displayMessage) +{ + struct DungeonEntityData *entityData; + s32 oldMulti; + + if (!EntityExists(target)) { + return; + } + + if (statStage != STAT_STAGE_ATTACK) { + strcpy(gUnknown_202DE58,*gUnknown_80FC0C8); + } + else { + strcpy(gUnknown_202DE58,*gUnknown_80FC0B8); + } + if ((param_4 < 0x100) && sub_8071728(pokemon,target,displayMessage)) { + return; + } + + if ((HasItem(target,ITEM_ID_TWIST_BAND)) && (param_4 < 0x100)) { + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_80522F4(pokemon,target,*gUnknown_80FD550); + return; + } + + if (HasAbility(target, ABILITY_HYPER_CUTTER) && (statStage == STAT_STAGE_ATTACK) && (param_4 < 0x100)) { + if (displayMessage) { + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_80522F4(pokemon,target,*gUnknown_80FCA60); + } + return; + } + + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + oldMulti = entityData->attackMultipliers[statStage]; + + if (param_4 < 0x100) { + sub_8041FD8(target,statStage); + } + else { + sub_8041FB4(target,statStage); + } + + entityData->attackMultipliers[statStage] = sub_8009DA4(entityData->attackMultipliers[statStage],param_4); + + if (entityData->attackMultipliers[statStage] < 2) { + entityData->attackMultipliers[statStage] = 2; + } + if (0x63fd < entityData->attackMultipliers[statStage]) { + entityData->attackMultipliers[statStage] = 0x63fd; // 25597 + } + if (oldMulti > entityData->attackMultipliers[statStage]) { + sub_80522F4(pokemon,target,*gUnknown_80FC11C); + } + else if (oldMulti < entityData->attackMultipliers[statStage]) { + sub_80522F4(pokemon,target,*gUnknown_80FC118); + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FC184); + } + DungeonEntityUpdateStatusSprites(target); +} + +void sub_8077434(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 statStage, s32 param_4, bool8 displayMessage) +{ + struct DungeonEntityData *entityData; + s32 oldMulti; + + if (!EntityExists(target)) { + return; + } + + if (statStage != STAT_STAGE_DEFENSE) { + strcpy(gUnknown_202DE58,*gUnknown_80FC0AC); + } + else { + strcpy(gUnknown_202DE58,*gUnknown_80FC09C); + } + if ((param_4 < 0x100) && sub_8071728(pokemon,target,displayMessage)) { + return; + } + + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + oldMulti = entityData->defenseMultipliers[statStage]; + + if (param_4 < 0x100) { + sub_804201C(target,statStage); + } + else { + sub_8041FFC(target,statStage); + } + + entityData->defenseMultipliers[statStage] = sub_8009DA4(entityData->defenseMultipliers[statStage],param_4); + + if (entityData->defenseMultipliers[statStage] < 2) { + entityData->defenseMultipliers[statStage] = 2; + } + if (0x63fd < entityData->defenseMultipliers[statStage]) { + entityData->defenseMultipliers[statStage] = 0x63fd; // 25597 + } + if (oldMulti > entityData->defenseMultipliers[statStage]) { + sub_80522F4(pokemon,target,*gUnknown_80FC114); + } + else if (oldMulti < entityData->defenseMultipliers[statStage]) { + sub_80522F4(pokemon,target,*gUnknown_80FC0FC); + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FC180); + } + DungeonEntityUpdateStatusSprites(target); +} + +void sub_8077540(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 statStage) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_8042040(target,statStage); + if (statStage != STAT_STAGE_ACCURACY) { + strcpy(gUnknown_202DE58,*gUnknown_80FC090); + } + else { + strcpy(gUnknown_202DE58,*gUnknown_80FC084); + } + if (entityData->accuracyStages[statStage] < MAX_STAT_STAGE) { + entityData->accuracyStages[statStage]++; + sub_80522F4(pokemon,target,*gUnknown_80FC1C4); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FC218); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_80775DC(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 statStage, bool8 displayMessage) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + if (statStage != STAT_STAGE_ACCURACY) { + strcpy(gUnknown_202DE58,*gUnknown_80FC090); + } + else { + strcpy(gUnknown_202DE58,*gUnknown_80FC084); + } + if (!sub_8071728(pokemon,target,displayMessage)) { + if (HasAbility(target, ABILITY_KEEN_EYE) && (statStage == STAT_STAGE_ACCURACY)){ + if(displayMessage) + { + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_80522F4(pokemon,target,*gUnknown_80FCA64); + } + } + else { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_8042060(target,statStage); + if (entityData->accuracyStages[statStage] != 0) { + entityData->accuracyStages[statStage]--; + sub_80522F4(pokemon,target,*gUnknown_80FC1A4); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FC1F0); + } + DungeonEntityUpdateStatusSprites(target); + } + } + } +} + +void sub_80776C0(struct DungeonEntity * pokemon,struct DungeonEntity * target, bool8 displayMessage) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + if (!HasSafeguardStatus(pokemon, target, displayMessage)) { + if (HasAbility(target, ABILITY_INNER_FOCUS)){ + SetMessageArgument(gAvailablePokemonNames,target,0); + if(displayMessage) + sub_80522F4(pokemon,target,*gUnknown_80FCC18); + } + else { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if(entityData->volatileStatus != VOLATILE_STATUS_CRINGING) + { + entityData->volatileStatus = VOLATILE_STATUS_CRINGING; + entityData->volatileStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4E3C, TRUE) + 1; + sub_80420A0(target); + sub_80522F4(pokemon,target,*gUnknown_80FB2E0); + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FB300); + } + DungeonEntityUpdateStatusSprites(target); + } + } + } +} + +void sub_8077780(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage) +{ + struct MapTile *mapTile; + register struct DungeonEntityData *entityData; + struct DungeonEntity *mapPokemonEntity; + int index; + bool8 bVar6; + bool8 bVar7; + + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,displayMessage))) { + if (HasAbility(target, ABILITY_LIMBER)) { + SetMessageArgument(gAvailablePokemonNames,target,0); + if (displayMessage) { + sub_80522F4(pokemon,target,*gUnknown_80FCBF8); + } + } + else + { + bVar6 = TRUE; + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->nonVolatileStatus != NON_VOLATILE_STATUS_PARALYZED) { + entityData->nonVolatileStatus = NON_VOLATILE_STATUS_PARALYZED; + entityData->nonVolatileStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4E50,1) + 1; + entityData->nonVolatileStatusDamageTimer = 0; + entityData->fillAF = 0; + bVar6 = FALSE; + sub_80522F4(pokemon,target,*gUnknown_80FB2AC); + sub_8041C1C(target); + GetMovementSpeed(target); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FB2CC); + } + if ((HasAbility(target, ABILITY_SYNCHRONIZE)) && (!bVar6)) { + bVar7 = FALSE; + + for(index = 0; index < NUM_DIRECTIONS; index++) + { + mapTile = GetMapTile_1(target->posWorld.x + gAdjacentTileOffsets[index].x,target->posWorld.y + gAdjacentTileOffsets[index].y); + mapPokemonEntity = mapTile->pokemon; + if ((EntityExists(mapPokemonEntity)) && (GetEntityType(mapPokemonEntity) == ENTITY_POKEMON)) { + if (!bVar7) { + bVar7 = TRUE; + SetMessageArgument_2(gAvailablePokemonNames,entityData,0); + sub_80522F4(pokemon,target,*gUnknown_80FF01C); + } + if (sub_807167C(target,mapPokemonEntity) == 1) { + sub_8077780(pokemon, mapPokemonEntity, displayMessage); + } + } + } + } + DungeonEntityUpdateStatusSprites(target); + } + } +} + +void sub_8077910(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 turns, bool8 diplayMessage) +{ + s32 movSpeed; + s32 index; + s32 movSpeed_1; + struct DungeonEntityData *entityData; + + if (!EntityExists(target)) { + return; + } + if (turns == 0) { + turns = CalculateStatusTurns(target,gUnknown_80F4E40,0) + 1; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + movSpeed = GetMovementSpeed(target); + if (movSpeed == 4) { + if (diplayMessage) + sub_80522F4(pokemon,target,*gUnknown_80FC2B8); + } + else { + for(index = 0; index < NUM_SPEED_TURN_COUNTERS; index++) + { + if(entityData->speedUpTurnsLeft[index] == 0) + { + entityData->speedUpTurnsLeft[index] = turns; + break; + } + } + movSpeed_1 = GetMovementSpeed(target); + if (movSpeed == movSpeed_1) { + sub_80522F4(pokemon,target,*gUnknown_80FC298); + } + else + { + sub_8041CB8(target); + sub_80522F4(pokemon,target,gUnknown_80FA124[movSpeed_1]); + entityData->unkF8 = 1; + entityData->attacking = FALSE; + } + } + DungeonEntityUpdateStatusSprites(target); +} + +void sub_80779F0(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 param_3, bool8 displayMessage) +{ + s32 movSpeed; + s32 iVar4; + s32 index; + s32 movSpeed_1; + struct DungeonEntityData *entityData; + + if (!EntityExists(target)) { + return; + } + if (HasSafeguardStatus(pokemon,target,displayMessage)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + movSpeed = GetMovementSpeed(target); + if (movSpeed == 0) { + if (displayMessage) + sub_80522F4(pokemon,target,*gUnknown_80FC2D8); + } + else { + for(iVar4 = 0; iVar4 < param_3; iVar4++) + { + for(index = 0; index < NUM_SPEED_TURN_COUNTERS; index++) + { + if (entityData->slowTurnsLeft[index]== 0) { + entityData->slowTurnsLeft[index] = CalculateStatusTurns(target,gUnknown_80F4E48,1) + 1; + break; + } + } + } + movSpeed_1 = GetMovementSpeed(target); + if (movSpeed == movSpeed_1) { + if (displayMessage) + sub_80522F4(pokemon,target,*gUnknown_80FC298); + } + else + { + sub_8041CCC(target); + sub_80522F4(pokemon,target,gUnknown_80FA124[movSpeed_1]); + } + } + DungeonEntityUpdateStatusSprites(target); +} + +void sub_8077AE4(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage) +{ + struct DungeonEntityData *entityData; + + if (!EntityExists(target)) { + return; + } + + if (HasSafeguardStatus(pokemon,target,displayMessage)) { + return; + } + + SetMessageArgument(gAvailablePokemonNames,target,0); + if (HasItem(target,ITEM_ID_PERSIM_BAND)) { + if (displayMessage) + sub_80522F4(pokemon,target,*gUnknown_80FD500); + } + else + { + if (HasAbility(target, ABILITY_OWN_TEMPO)) { + if (displayMessage) + sub_80522F4(pokemon,target,*gUnknown_80FCDB4); + } + else + { + sub_8041BE8(target); + entityData = target->entityData; + if (entityData->volatileStatus != VOLATILE_STATUS_CONFUSED) { + entityData->volatileStatus = VOLATILE_STATUS_CONFUSED; + entityData->volatileStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4E4C,1) + 1; + sub_80522F4(pokemon,target,*gUnknown_80FB25C); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FB27C); + } + DungeonEntityUpdateStatusSprites(target); + } + } +} + +void sub_8077BB4(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage) +{ + struct DungeonEntityData *iVar3; + + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,displayMessage))) { + iVar3 = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (iVar3->volatileStatus != 4) { + iVar3->volatileStatus = 4; + iVar3->volatileStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4ECC,1) + 1; + sub_8041BF8(target); + sub_80522F4(pokemon,target,*gUnknown_80FB940); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FB960); + } + DungeonEntityUpdateStatusSprites(target); + } +} diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 49b4c91bf..af3338e3b 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -10,7 +10,7 @@ struct unkStruct_203B320 // size: 0xC4 u8 unk0[4]; u8 fill4[0x20 - 4]; - u32 unk20; + u32 wonderMailMode; u32 unk24; u8 fill28[0x3C - 0x28]; s16 unk3C; @@ -67,12 +67,12 @@ extern void sub_80073B8(u32); extern void sub_80073E0(u32); extern void CreateRescueTitle(void *); -u32 sub_80306A8(u32 r0, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3) +u32 sub_80306A8(u32 wonderMailMode, u32 r1, struct UnkTextStruct2_sub *r2, u32 r3) { - if(sub_8030C20(r0)) + if(sub_8030C20(wonderMailMode)) return 0; gUnknown_203B320 = MemoryAlloc(sizeof(struct unkStruct_203B320), 0x8); - gUnknown_203B320->unk20 = r0; + gUnknown_203B320->wonderMailMode = wonderMailMode; gUnknown_203B320->unk58 = r1; gUnknown_203B320->unk5C = &gUnknown_203B320->unk60[gUnknown_203B320->unk58]; @@ -246,7 +246,7 @@ void sub_803092C(void) r4 = gUnknown_203B320->unk42 * 8; r5 = r4; r5 += 10; - xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->unk20],gUnknown_203B320->unk58,0); + xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailMode],gUnknown_203B320->unk58,0); r4 += 4; r5 = r4 + gUnknown_203B320->unkC0[2] * 8; sub_8012BC4(r5,0,gUnknown_203B320->unk42 + 1,1,7,gUnknown_203B320->unk58); diff --git a/src/wonder_mail_4_1.c b/src/wonder_mail_4_1.c deleted file mode 100644 index bd0e3ac3d..000000000 --- a/src/wonder_mail_4_1.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "global.h" - -extern u32 sub_8030DA0(void); -extern void sub_8030DE4(); -extern void sub_80310E4(u32); - - -void sub_8031498(void) -{ - switch(sub_8030DA0()) - { - case 0: - case 1: - break; - case 2: - case 3: - sub_8030DE4(); - sub_80310E4(0); - break; - } -} diff --git a/src/wonder_mail_5.c b/src/wonder_mail_5.c index fbd7f03e3..aa5098283 100644 --- a/src/wonder_mail_5.c +++ b/src/wonder_mail_5.c @@ -5,6 +5,7 @@ struct unkStruct_203B324 { + // size: 0x78 u8 fill0[0xC]; u8 unkC; u32 unk10; @@ -26,7 +27,7 @@ void sub_8030E48(void); bool8 sub_8030D40(u8 param_1, s32 param_2) { - gUnknown_203B324 = MemoryAlloc(0x78,8); + gUnknown_203B324 = MemoryAlloc(sizeof(struct unkStruct_203B324), 8); gUnknown_203B324->unkC = param_1; sub_801317C(gUnknown_203B324); gUnknown_203B324->unk10 = param_2; diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c new file mode 100644 index 000000000..cd3b4ab75 --- /dev/null +++ b/src/wonder_mail_6.c @@ -0,0 +1,427 @@ +#include "global.h" +#include "memory.h" +#include "input.h" +#include "file_system.h" +#include "text.h" +#include "pokemon.h" +#include "menu.h" +#include "code_8094F88.h" + +extern bool8 sub_8030C20(u32); + +struct unkStruct_203B328 +{ + // size: 0x11C + u32 state; + u8 unk4; + u32 unk8; + u8 fillC[0x58 - 0xC]; + u32 unk58; + u8 fill5C[0xA8 - 0x5C]; + struct UnkTextStruct2 unkA8[4]; + /* 0x108 */ struct OpenedFile *faceFile; + /* 0x10C */ u8 *faceData; + u16 unk110; + u16 unk112; + /* 0x114 */ u8 unk114; + /* 0x115 */ u8 unk115; + /* 0x116 */ u8 unk116; + u32 wonderMailMode; +}; +extern struct unkStruct_203B328 *gUnknown_203B328; +extern struct unkStruct_203B480 *gUnknown_203B480; + +extern u8 gUnknown_80E0A0C[]; +extern u8 gUnknown_80E09D8[]; + +extern struct UnkTextStruct2 gUnknown_80E0990; +extern struct UnkTextStruct2 gUnknown_80E09A8; +extern struct MenuItem gUnknown_80E0968; +extern struct UnkTextStruct2 gUnknown_80E09C0; +extern struct MenuItem gUnknown_80E0948; + +extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); +extern void sub_80306A8(s32, u32, u32, u32); +extern void sub_80141B4(char *r0, u32, struct OpenedFile **r1, u32); +extern void sub_8031300(void); +extern void sub_803136C(void); +extern void sub_80313D8(u32); +extern void sub_8031498(void); +extern void sub_803084C(void); +extern void sub_80310FC(); +extern void sub_8031258(); +extern u32 sub_8030768(u32); +extern u8 sub_80307EC(void); +extern u32 sub_8030DA0(void); +extern void sub_8030DE4(); + +extern void sub_8030810(u32); +extern void sub_803092C(void); +extern void sub_8030D40(u8, u32); +extern void sub_8012EA4(u32 *, u32); +extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32, u32, u32); +extern u8 sub_8012FD8(u32 *); +extern void sub_8013114(u32 *, s32 *); +extern void sub_8095240(u8); + +bool8 sub_8030F58(u32 wonderMailMode) +{ + struct OpenedFile *iVar3; + + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + if (gUnknown_203B328 == NULL) { + gUnknown_203B328 = MemoryAlloc(sizeof(struct unkStruct_203B328),8); + MemoryFill8((u8 *)gUnknown_203B328,0,sizeof(struct unkStruct_203B328)); + } + gUnknown_203B328->wonderMailMode = wonderMailMode; + iVar3 = GetDialogueSpriteDataPtr(0x130); + gUnknown_203B328->faceFile = iVar3; + gUnknown_203B328->faceData = iVar3->data; + gUnknown_203B328->unk114 = 0; + gUnknown_203B328->unk115 = 0; + gUnknown_203B328->unk116 = 0; + gUnknown_203B328->unk110 = 2; + gUnknown_203B328->unk112 = 8; + + if (sub_8030C20(wonderMailMode)) { + switch(wonderMailMode) + { + case 2: + // "You don{APOSTROPHE}t have any {COLOR_1 LIGHT_BLUE_2}SOS Mail{END_COLOR_TEXT_1}.\0" + sub_80141B4(gUnknown_80E09D8,0,&gUnknown_203B328->faceFile,0x101); + break; + case 4: + // "You don{APOSTROPHE}t have any {COLOR_1 LIGHT_BLUE_2}A-OK Mail{END_COLOR_TEXT_1}.\0" + sub_80141B4(gUnknown_80E0A0C,0,&gUnknown_203B328->faceFile,0x101); + break; + } + gUnknown_203B328->state = 5; + } + else { + gUnknown_203B328->state = 0; + sub_80306A8(wonderMailMode,0,0,8); + } + return 1; +} + +s32 sub_8031050(void) +{ + switch(gUnknown_203B328->state) + { + case 0: + sub_8031300(); + break; + case 1: + sub_803136C(); + break; + case 2: + case 3: + sub_80313D8(gUnknown_203B328->state); + break; + case 4: + sub_8031498(); + break; + case 5: + case 6: + return 3; + } + return 0; +} + +void sub_80310B4(void) +{ + sub_803084C(); + if (gUnknown_203B328 != NULL) { + CloseFile(gUnknown_203B328->faceFile); + MemoryFree(gUnknown_203B328); + gUnknown_203B328 = NULL; + } +} + +void sub_80310E4(u32 newState) +{ + gUnknown_203B328->state = newState; + sub_80310FC(); + sub_8031258(); +} + +void sub_80310FC(void) +{ + sub_8006518(gUnknown_203B328->unkA8); + switch(gUnknown_203B328->state) + { + case 0: + gUnknown_203B328->unkA8[1] = gUnknown_80E0990; + gUnknown_203B328->unkA8[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8[3] = gUnknown_80E0990; + break; + case 1: + gUnknown_203B328->unkA8[1] = gUnknown_80E09A8; + gUnknown_203B328->unkA8[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8[3] = gUnknown_80E0990; + sub_8012CAC(&gUnknown_203B328->unkA8[1], &gUnknown_80E0968); + break; + case 2: + case 3: + gUnknown_203B328->unkA8[2] = gUnknown_80E09C0; + sub_8012CAC(&gUnknown_203B328->unkA8[2], &gUnknown_80E0948); + break; + case 4: + gUnknown_203B328->unkA8[0] = gUnknown_80E0990; + gUnknown_203B328->unkA8[1] = gUnknown_80E0990; + gUnknown_203B328->unkA8[2] = gUnknown_80E0990; + gUnknown_203B328->unkA8[3] = gUnknown_80E0990; + break; + case 5: + case 6: + default: + ResetUnusedInputStruct(); + sub_800641C(0, 1, 1); + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B328->unkA8, 1, 1); +} + +void sub_8031258(void) +{ + switch(gUnknown_203B328->state) + { + case 0: + sub_8030810(1); + break; + case 1: + sub_803092C(); + sub_8012D60(&gUnknown_203B328->unk8, &gUnknown_80E0968, 0, 0, 4, 1); + break; + case 2: + case 3: + sub_803092C(); + sub_8012EA4(&gUnknown_203B328->unk8, 0); + sub_8012D60(&gUnknown_203B328->unk58, &gUnknown_80E0948, 0, 0, 3, 2); + break; + case 4: + sub_8030D40(gUnknown_203B328->unk4, 3); + break; + case 5: + case 6: + default: + break; + } +} + +void sub_8031300(void) +{ + switch(sub_8030768(1)) + { + case 3: + gUnknown_203B328->unk4 = sub_80307EC(); + sub_80310E4(1); + break; + case 4: + gUnknown_203B328->unk4 = sub_80307EC(); + sub_80310E4(4); + break; + case 2: + sub_80310E4(6); + break; + case 0: + case 1: + break; + } +} + +void sub_803136C(void) +{ + s32 local_c; + + local_c = 0; + sub_8030768(0); + if (sub_8012FD8(&gUnknown_203B328->unk8) == '\0') { + sub_8013114(&gUnknown_203B328->unk8,&local_c); + } + + switch(local_c) + { + case 1: + sub_80310E4(0); + break; + case 6: + sub_80310E4(3); + break; + case 4: + sub_80310E4(2); + break; + case 5: + sub_80310E4(4); + break; + + } +} + +#ifdef NONMATCHING +void sub_80313D8(u32 param_1) +{ + s32 iVar2; + s32 local_10; + + local_10 = 0; + sub_8030768(0); + sub_8012FD8(&gUnknown_203B328->unk8); + if (sub_8012FD8(&gUnknown_203B328->unk58) == '\0') { + sub_8013114(&gUnknown_203B328->unk58,&local_10); + } + + switch(local_10) + { + case 1: + case 3: + sub_80310E4(0); + break; + case 2: + switch(param_1) + { + case 2: + sub_8095240(gUnknown_203B328->unk4); + break; + case 3: + for(iVar2 = 0; iVar2 < 0x20; iVar2++) + { + gUnknown_203B480[iVar2].unk0 = 0; + gUnknown_203B480[iVar2].unk22 = 0; + } + break; + } + if ((gUnknown_203B328->wonderMailMode == 2) || (gUnknown_203B328->wonderMailMode == 4)) { + if (sub_8030C20(gUnknown_203B328->wonderMailMode) != '\0') { + sub_80310E4(5); + } + else { + sub_80310E4(0); + } + } + break; + + } +} +#else +NAKED +void sub_80313D8(u32 param_1) +{ + asm_unified( + "\tpush {r4,r5,lr}\n" + "\tsub sp, 0x4\n" + "\tadds r5, r0, 0\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp]\n" + "\tbl sub_8030768\n" + "\tldr r4, _08031418\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x8\n" + "\tbl sub_8012FD8\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x58\n" + "\tbl sub_8012FD8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _08031408\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x58\n" + "\tmov r1, sp\n" + "\tbl sub_8013114\n" +"_08031408:\n" + "\tldr r0, [sp]\n" + "\tcmp r0, 0x2\n" + "\tbeq _08031428\n" + "\tcmp r0, 0x2\n" + "\tbgt _0803141C\n" + "\tcmp r0, 0x1\n" + "\tbeq _08031420\n" + "\tb _0803148E\n" + "\t.align 2, 0\n" +"_08031418: .4byte gUnknown_203B328\n" +"_0803141C:\n" + "\tcmp r0, 0x3\n" + "\tbne _0803148E\n" +"_08031420:\n" + "\tmovs r0, 0\n" + "\tbl sub_80310E4\n" + "\tb _0803148E\n" +"_08031428:\n" + "\tcmp r5, 0x2\n" + "\tbeq _08031432\n" + "\tcmp r5, 0x3\n" + "\tbeq _0803143C\n" + "\tb _0803145A\n" +"_08031432:\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0x4]\n" + "\tbl sub_8095240\n" + "\tb _0803145A\n" +"_0803143C:\n" + "\tldr r4, _08031480\n" + "\tmovs r3, 0\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0x1F\n" +"_08031444:\n" + "\tldr r0, [r4]\n" + "\tadds r0, r1\n" + "\tstrb r3, [r0]\n" + "\tldr r0, [r4]\n" + "\tadds r0, r1\n" + "\tadds r0, 0x22\n" + "\tstrb r3, [r0]\n" + "\tadds r1, 0x30\n" + "\tsubs r2, 0x1\n" + "\tcmp r2, 0\n" + "\tbge _08031444\n" +"_0803145A:\n" + "\tldr r0, _08031484\n" + "\tldr r0, [r0]\n" + "\tmovs r1, 0x8C\n" + "\tlsls r1, 1\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tcmp r0, 0x2\n" + "\tbeq _0803146E\n" + "\tcmp r0, 0x4\n" + "\tbne _0803148E\n" +"_0803146E:\n" + "\tbl sub_8030C20\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08031488\n" + "\tmovs r0, 0x5\n" + "\tbl sub_80310E4\n" + "\tb _0803148E\n" + "\t.align 2, 0\n" +"_08031480: .4byte gUnknown_203B480\n" +"_08031484: .4byte gUnknown_203B328\n" +"_08031488:\n" + "\tmovs r0, 0\n" + "\tbl sub_80310E4\n" +"_0803148E:\n" + "\tadd sp, 0x4\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0" + ); +} +#endif + +void sub_8031498(void) +{ + switch(sub_8030DA0()) + { + case 0: + case 1: + break; + case 2: + case 3: + sub_8030DE4(); + sub_80310E4(0); + break; + } +} +