diff options
86 files changed, 3819 insertions, 9027 deletions
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 7ebc2f256..bdfc3e1e6 100644 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -2163,7 +2163,7 @@ sub_8196D74: @ 8196D74 ldr r0, =gSaveBlock2Ptr ldr r0, [r0] adds r0, 0xA - bl ReadUnalignedWord + bl GetTrainerId adds r6, r0, 0 ldr r0, =0x0000ffff ands r6, r0 diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 6f267bcc1..291ea90c4 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -6,6735 +6,7 @@ .text - thumb_func_start sub_81A1780 -sub_81A1780: @ 81A1780 - push {lr} - ldr r1, =gUnknown_08611C18 - ldr r0, =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1780 - - thumb_func_start sub_81A17A0 -sub_81A17A0: @ 81A17A0 - push {lr} - movs r0, 0x80 - lsls r0, 7 - movs r1, 0xFF - bl VarSet - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000ca8 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _081A1822 - lsls r0, 2 - ldr r1, =_081A17D0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A17D0: - .4byte _081A1822 - .4byte _081A17E4 - .4byte _081A1810 - .4byte _081A17EC - .4byte _081A17E8 -_081A17E4: - movs r0, 0 - b _081A17EE -_081A17E8: - movs r0, 0 - b _081A17EE -_081A17EC: - movs r0, 0x1 -_081A17EE: - bl sub_813A878 - movs r0, 0x80 - lsls r0, 7 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - ldr r2, =0x00000ca8 - adds r1, r2 - ldrb r1, [r1] - bl VarSet - b _081A1822 - .pool -_081A1810: - movs r0, 0x80 - lsls r0, 7 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - ldr r2, =0x00000ca8 - adds r1, r2 - ldrb r1, [r1] - bl VarSet -_081A1822: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A17A0 - - thumb_func_start sub_81A1830 -sub_81A1830: @ 81A1830 - push {r4-r6,lr} - ldr r0, =0x000040cf - bl VarGet - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r6, 0 - bl sub_81A3B30 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bne _081A184C - movs r5, 0x1 -_081A184C: - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0x7 - bls _081A1856 - b _081A1956 -_081A1856: - lsls r0, 2 - ldr r1, =_081A186C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A186C: - .4byte _081A188C - .4byte _081A18A8 - .4byte _081A18C8 - .4byte _081A18E4 - .4byte _081A1956 - .4byte _081A1900 - .4byte _081A1918 - .4byte _081A1938 -_081A188C: - ldr r1, =gSpecialVar_Result - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r2, =0x00000ca8 - adds r0, r2 - ldrb r0, [r0] - strh r0, [r1] - b _081A1956 - .pool -_081A18A8: - ldr r1, =gSpecialVar_Result - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r2, =0x00000ca9 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 30 - lsrs r0, 30 - strh r0, [r1] - b _081A1956 - .pool -_081A18C8: - ldr r1, =gSpecialVar_Result - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r2, =0x00000cb2 - adds r0, r2 - ldrh r0, [r0] - strh r0, [r1] - b _081A1956 - .pool -_081A18E4: - ldr r1, =gSpecialVar_Result - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r2, =0x00000ca9 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 29 - b _081A1926 - .pool -_081A1900: - ldr r2, =gSpecialVar_Result - ldr r1, =gBattleOutcome - ldrb r0, [r1] - strh r0, [r2] - movs r0, 0 - strb r0, [r1] - b _081A1956 - .pool -_081A1918: - ldr r1, =gSpecialVar_Result - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r2, =0x00000ca9 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 28 -_081A1926: - lsrs r0, 31 - strh r0, [r1] - b _081A1956 - .pool -_081A1938: - ldr r4, =gSpecialVar_Result - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - movs r0, 0xD0 - lsls r0, 4 - adds r2, r0 - ldr r3, =gUnknown_08611BFC - lsls r0, r5, 1 - lsls r1, r6, 2 - adds r0, r1 - adds r0, r3 - ldrh r1, [r2] - ldrh r0, [r0] - ands r0, r1 - strh r0, [r4] -_081A1956: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1830 - - thumb_func_start sub_81A1968 -sub_81A1968: @ 81A1968 - push {r4,r5,lr} - ldr r0, =0x000040cf - bl VarGet - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl sub_81A3B30 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bne _081A1984 - movs r4, 0x1 -_081A1984: - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0x7 - bls _081A198E - b _081A1AC4 -_081A198E: - lsls r0, 2 - ldr r1, =_081A19A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A19A4: - .4byte _081A19C4 - .4byte _081A19E0 - .4byte _081A1A0C - .4byte _081A1A28 - .4byte _081A1A50 - .4byte _081A1AC4 - .4byte _081A1A7C - .4byte _081A1AA8 -_081A19C4: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =gSpecialVar_0x8006 - ldrh r1, [r1] - ldr r2, =0x00000ca8 - adds r0, r2 - strb r1, [r0] - b _081A1AC4 - .pool -_081A19E0: - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldr r0, =gSpecialVar_0x8006 - ldrb r0, [r0] - ldr r1, =0x00000ca9 - adds r2, r1 - movs r1, 0x3 - ands r1, r0 - ldrb r3, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - b _081A1AC4 - .pool -_081A1A0C: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =gSpecialVar_0x8006 - ldrh r1, [r1] - ldr r2, =0x00000cb2 - adds r0, r2 - strh r1, [r0] - b _081A1AC4 - .pool -_081A1A28: - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - ldr r0, =gSpecialVar_0x8006 - ldrb r0, [r0] - ldr r1, =0x00000ca9 - adds r3, r1 - movs r1, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - b _081A1A94 - .pool -_081A1A50: - movs r2, 0 - ldr r5, =gSaveBlock2Ptr - ldr r4, =0x00000caa - ldr r3, =gUnknown_0203CEF8 -_081A1A58: - ldr r1, [r5] - lsls r0, r2, 1 - adds r1, r4 - adds r1, r0 - adds r0, r2, r3 - ldrb r0, [r0] - strh r0, [r1] - adds r2, 0x1 - cmp r2, 0x3 - ble _081A1A58 - b _081A1AC4 - .pool -_081A1A7C: - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - ldr r0, =gSpecialVar_0x8006 - ldrb r0, [r0] - ldr r2, =0x00000ca9 - adds r3, r2 - movs r1, 0x1 - ands r1, r0 - lsls r1, 3 - ldrb r2, [r3] - movs r0, 0x9 - negs r0, r0 -_081A1A94: - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _081A1AC4 - .pool -_081A1AA8: - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - movs r0, 0xD0 - lsls r0, 4 - adds r2, r0 - ldr r3, =gUnknown_08611BFC - lsls r1, r4, 1 - lsls r0, r5, 2 - adds r1, r0 - adds r1, r3 - ldrh r0, [r2] - ldrh r1, [r1] - orrs r0, r1 - strh r0, [r2] -_081A1AC4: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1968 - - thumb_func_start sub_81A1AD4 -sub_81A1AD4: @ 81A1AD4 - push {r4-r7,lr} - bl sub_81B8558 - movs r3, 0 - ldr r4, =gSpecialVar_0x8005 - ldrh r0, [r4] - cmp r3, r0 - bge _081A1B00 - ldr r7, =gUnknown_0203CEF8 - ldr r6, =gSaveBlock2Ptr - ldr r5, =0x00000caa -_081A1AEA: - adds r2, r3, r7 - ldr r0, [r6] - lsls r1, r3, 1 - adds r0, r5 - adds r0, r1 - ldrh r0, [r0] - strb r0, [r2] - adds r3, 0x1 - ldrh r0, [r4] - cmp r3, r0 - blt _081A1AEA -_081A1B00: - bl ReducePlayerPartyToThree - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1AD4 - - thumb_func_start sub_81A1B1C -sub_81A1B1C: @ 81A1B1C - push {lr} - bl DoSoftReset - pop {r0} - bx r0 - thumb_func_end sub_81A1B1C - - thumb_func_start sub_81A1B28 -sub_81A1B28: @ 81A1B28 - ldr r1, =gFacilityTrainers - ldr r0, =gBattleFrontierTrainers - str r0, [r1] - bx lr - .pool - thumb_func_end sub_81A1B28 - - thumb_func_start sub_81A1B38 -sub_81A1B38: @ 81A1B38 - push {r4,r5,lr} - movs r4, 0 - movs r5, 0x64 -_081A1B3E: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000caa - adds r0, r2 - adds r1, r0, r1 - ldrh r0, [r1] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5 - bhi _081A1B76 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r1] - subs r1, 0x1 - muls r1, r5 - adds r0, r1 - movs r1, 0x8E - lsls r1, 2 - adds r0, r1 - ldr r2, =gPlayerParty - adds r1, r4, 0 - muls r1, r5 - adds r1, r2 - movs r2, 0x64 - bl memcpy -_081A1B76: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _081A1B3E - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1B38 - - thumb_func_start sub_81A1B98 -sub_81A1B98: @ 81A1B98 - push {lr} - ldr r0, =gSpecialVar_0x8006 - ldrh r1, [r0] - adds r2, r0, 0 - cmp r1, 0x3 - bls _081A1BA8 - movs r0, 0 - strh r0, [r2] -_081A1BA8: - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0x7 - bhi _081A1C1E - lsls r0, 2 - ldr r1, =_081A1BC8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A1BC8: - .4byte _081A1BE8 - .4byte _081A1BF0 - .4byte _081A1BF8 - .4byte _081A1C0E - .4byte _081A1C06 - .4byte _081A1C00 - .4byte _081A1C14 - .4byte _081A1C1A -_081A1BE8: - ldrb r0, [r2] - bl sub_81A1EA8 - b _081A1C1E -_081A1BF0: - ldrb r0, [r2] - bl sub_81A2134 - b _081A1C1E -_081A1BF8: - ldrb r0, [r2] - bl sub_81A2460 - b _081A1C1E -_081A1C00: - bl sub_81A2698 - b _081A1C1E -_081A1C06: - ldrb r0, [r2] - bl sub_81A2C94 - b _081A1C1E -_081A1C0E: - bl sub_81A2968 - b _081A1C1E -_081A1C14: - bl sub_81A2F38 - b _081A1C1E -_081A1C1A: - bl sub_81A2FF8 -_081A1C1E: - pop {r0} - bx r0 - thumb_func_end sub_81A1B98 - - thumb_func_start sub_81A1C24 -sub_81A1C24: @ 81A1C24 - push {lr} - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - ldr r2, =0x00000cdc - adds r1, r2 - ldr r1, [r1] - ands r1, r0 - cmp r1, 0 - bne _081A1C44 - movs r0, 0 - b _081A1C46 - .pool -_081A1C44: - movs r0, 0x1 -_081A1C46: - pop {r1} - bx r1 - thumb_func_end sub_81A1C24 - - thumb_func_start sub_81A1C4C -sub_81A1C4C: @ 81A1C4C - push {r4,r5,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xE0 - bl GetStringCenterAlignXOffset - adds r3, r0, 0 - lsls r0, r5, 3 - adds r5, r0, 0x1 - ldr r0, =gRecordsWindowId - ldrb r0, [r0] - lsls r3, 24 - lsrs r3, 24 - lsls r1, r5, 24 - lsrs r1, 24 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - bl AddTextPrinterParameterized - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1C4C - - thumb_func_start sub_81A1C90 -sub_81A1C90: @ 81A1C90 - push {r4,lr} - sub sp, 0x34 - adds r2, r0, 0 - ldr r3, =gRecordsWindowId - movs r1, 0xAE - mov r0, sp - adds r0, 0x2F -_081A1C9E: - strb r1, [r0] - subs r0, 0x1 - add r4, sp, 0xC - cmp r0, r4 - bge _081A1C9E - add r1, sp, 0x30 - movs r0, 0xFF - strb r0, [r1] - lsls r0, r2, 3 - adds r2, r0, 0x1 - ldrb r0, [r3] - lsls r1, r2, 24 - lsrs r1, 24 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - movs r3, 0x4 - bl AddTextPrinterParameterized - add sp, 0x34 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1C90 - - thumb_func_start sub_81A1CD8 -sub_81A1CD8: @ 81A1CD8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r5, r0, 0 - adds r4, r2, 0 - ldr r0, [sp, 0x30] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0xC] - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r0, =gRecordsWindowId - mov r10, r0 - ldrb r0, [r0] - str r7, [sp] - movs r1, 0xFF - mov r9, r1 - str r1, [sp, 0x4] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - adds r3, r4, 0 - bl AddTextPrinterParameterized - ldr r0, =0x0000270f - cmp r6, r0 - bls _081A1D24 - adds r6, r0, 0 -_081A1D24: - ldr r0, =gStringVar1 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_WinStreak - adds r0, r4, 0 - bl StringExpandPlaceholders - mov r1, r10 - ldrb r0, [r1] - str r7, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - ldr r3, [sp, 0xC] - bl AddTextPrinterParameterized - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1CD8 - - thumb_func_start sub_81A1D78 -sub_81A1D78: @ 81A1D78 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, [sp, 0x10] - lsls r0, 24 - lsls r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r4, =gSaveBlock2Ptr - ldr r4, [r4] - lsrs r1, 23 - lsrs r0, 22 - adds r1, r0 - movs r0, 0xCF - lsls r0, 4 - adds r4, r0 - adds r4, r1 - ldrh r1, [r4] - ldr r0, =gText_Record - str r5, [sp] - bl sub_81A1CD8 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1D78 - - thumb_func_start sub_81A1DBC -sub_81A1DBC: @ 81A1DBC - push {lr} - lsls r0, 24 - lsls r1, 24 - ldr r2, =gSaveBlock2Ptr - ldr r2, [r2] - lsrs r1, 23 - lsrs r0, 22 - adds r1, r0 - movs r0, 0xCE - lsls r0, 4 - adds r2, r0 - adds r2, r1 - ldrh r0, [r2] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A1DDE - adds r0, r1, 0 -_081A1DDE: - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A1DBC - - thumb_func_start sub_81A1DEC -sub_81A1DEC: @ 81A1DEC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r4, [sp, 0x20] - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - lsls r4, 24 - lsrs r7, r4, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_81A1DBC - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x1 - beq _081A1E38 - cmp r5, 0x1 - ble _081A1E2C - cmp r5, 0x2 - beq _081A1E48 - cmp r5, 0x3 - beq _081A1E58 -_081A1E2C: - cmp r6, 0 - beq _081A1E34 - movs r0, 0x2 - b _081A1E66 -_081A1E34: - movs r0, 0x1 - b _081A1E66 -_081A1E38: - cmp r6, 0 - beq _081A1E42 - movs r0, 0x80 - lsls r0, 8 - b _081A1E66 -_081A1E42: - movs r0, 0x80 - lsls r0, 7 - b _081A1E66 -_081A1E48: - cmp r6, 0 - beq _081A1E52 - movs r0, 0x80 - lsls r0, 10 - b _081A1E66 -_081A1E52: - movs r0, 0x80 - lsls r0, 9 - b _081A1E66 -_081A1E58: - cmp r6, 0 - beq _081A1E62 - movs r0, 0x80 - lsls r0, 12 - b _081A1E66 -_081A1E62: - movs r0, 0x80 - lsls r0, 11 -_081A1E66: - bl sub_81A1C24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081A1E88 - ldr r0, =gText_Current - str r7, [sp] - adds r1, r4, 0 - mov r2, r8 - mov r3, r9 - bl sub_81A1CD8 - b _081A1E96 - .pool -_081A1E88: - ldr r0, =gText_Prev - str r7, [sp] - adds r1, r4, 0 - mov r2, r8 - mov r3, r9 - bl sub_81A1CD8 -_081A1E96: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1DEC - - thumb_func_start sub_81A1EA8 -sub_81A1EA8: @ 81A1EA8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, =gRecordsWindowId - ldr r0, =gUnknown_08611C74 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - cmp r7, 0 - bne _081A1EF0 - ldr r0, =gStringVar4 - ldr r1, =gText_SingleBattleRoomResults - bl StringExpandPlaceholders - b _081A1F28 - .pool -_081A1EF0: - cmp r7, 0x1 - bne _081A1F08 - ldr r0, =gStringVar4 - ldr r1, =gText_DoubleBattleRoomResults - bl StringExpandPlaceholders - b _081A1F28 - .pool -_081A1F08: - cmp r7, 0x2 - bne _081A1F20 - ldr r0, =gStringVar4 - ldr r1, =gText_MultiBattleRoomResults - bl StringExpandPlaceholders - b _081A1F28 - .pool -_081A1F20: - ldr r0, =gStringVar4 - ldr r1, =gText_LinkMultiBattleRoomResults - bl StringExpandPlaceholders -_081A1F28: - ldr r0, =gStringVar4 - movs r1, 0x2 - bl sub_81A1C4C - ldr r6, =gRecordsWindowId - ldrb r0, [r6] - ldr r2, =gText_Lv502 - movs r1, 0x31 - mov r8, r1 - str r1, [sp] - movs r5, 0xFF - str r5, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x10 - bl AddTextPrinterParameterized - ldrb r0, [r6] - ldr r2, =gText_OpenLv - movs r1, 0x61 - mov r9, r1 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x10 - bl AddTextPrinterParameterized - movs r0, 0xA - bl sub_81A1C90 - mov r0, r8 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x48 - movs r3, 0x84 - bl sub_81A1DEC - movs r0, 0x41 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x48 - movs r3, 0x84 - bl sub_81A1D78 - mov r1, r9 - str r1, [sp] - adds r0, r7, 0 - movs r1, 0x1 - movs r2, 0x48 - movs r3, 0x84 - bl sub_81A1DEC - movs r0, 0x71 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0x1 - movs r2, 0x48 - movs r3, 0x84 - bl sub_81A1D78 - ldrb r0, [r6] - bl PutWindowTilemap - ldrb r0, [r6] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A1EA8 - - thumb_func_start sub_81A1FD8 -sub_81A1FD8: @ 81A1FD8 - push {lr} - lsls r0, 24 - lsls r1, 24 - ldr r2, =gSaveBlock2Ptr - ldr r2, [r2] - lsrs r1, 23 - lsrs r0, 22 - adds r1, r0 - ldr r0, =0x00000d0c - adds r2, r0 - adds r2, r1 - ldrh r0, [r2] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A1FF8 - adds r0, r1, 0 -_081A1FF8: - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A1FD8 - - thumb_func_start sub_81A2008 -sub_81A2008: @ 81A2008 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r12, r0 - adds r7, r1, 0 - adds r4, r2, 0 - ldr r6, [sp, 0x2C] - ldr r5, [sp, 0x30] - lsls r4, 16 - lsrs r4, 16 - lsls r3, 24 - lsrs r3, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =gRecordsWindowId - mov r10, r0 - ldrb r0, [r0] - str r5, [sp] - movs r1, 0xFF - mov r9, r1 - str r1, [sp, 0x4] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0x8] - movs r1, 0x1 - mov r2, r12 - bl AddTextPrinterParameterized - ldr r0, =gStringVar1 - adds r1, r4, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - adds r0, r4, 0 - adds r1, r7, 0 - bl StringExpandPlaceholders - mov r1, r10 - ldrb r0, [r1] - str r5, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - adds r3, r6, 0 - bl AddTextPrinterParameterized - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2008 - - thumb_func_start sub_81A2094 -sub_81A2094: @ 81A2094 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - ldr r4, [sp, 0x24] - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r7, r3, 24 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_81A1FD8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r5, 0 - beq _081A20CC - cmp r5, 0x1 - beq _081A20D8 -_081A20CC: - cmp r6, 0 - beq _081A20D4 - movs r0, 0x8 - b _081A20E6 -_081A20D4: - movs r0, 0x4 - b _081A20E6 -_081A20D8: - cmp r6, 0 - beq _081A20E2 - movs r0, 0x80 - lsls r0, 14 - b _081A20E6 -_081A20E2: - movs r0, 0x80 - lsls r0, 13 -_081A20E6: - bl sub_81A1C24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081A210C - ldr r0, =gText_Current - ldr r1, =gText_ClearStreak - str r7, [sp] - str r4, [sp, 0x4] - mov r2, r8 - mov r3, r9 - bl sub_81A2008 - b _081A211C - .pool -_081A210C: - ldr r0, =gText_Prev - ldr r1, =gText_ClearStreak - str r7, [sp] - str r4, [sp, 0x4] - mov r2, r8 - mov r3, r9 - bl sub_81A2008 -_081A211C: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2094 - - thumb_func_start sub_81A2134 -sub_81A2134: @ 81A2134 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, =gRecordsWindowId - ldr r0, =gUnknown_08611C74 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - cmp r7, 0 - bne _081A217C - ldr r0, =gStringVar4 - ldr r1, =gText_SingleBattleTourneyResults - bl StringExpandPlaceholders - b _081A2184 - .pool -_081A217C: - ldr r0, =gStringVar4 - ldr r1, =gText_DoubleBattleTourneyResults - bl StringExpandPlaceholders -_081A2184: - ldr r0, =gStringVar4 - movs r1, 0 - bl sub_81A1C4C - ldr r1, =gRecordsWindowId - ldrb r0, [r1] - ldr r2, =gText_Lv502 - movs r6, 0x21 - str r6, [sp] - movs r5, 0xFF - str r5, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - ldr r1, =gRecordsWindowId - ldrb r0, [r1] - ldr r2, =gText_OpenLv - movs r1, 0x61 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - movs r0, 0xA - bl sub_81A1C90 - str r6, [sp] - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x40 - movs r3, 0x79 - bl sub_81A2094 - ldr r4, =gSaveBlock2Ptr - ldr r0, [r4] - lsls r5, r7, 2 - ldr r1, =0x00000d14 - adds r0, r1 - adds r0, r5 - ldrh r2, [r0] - movs r0, 0x79 - mov r9, r0 - str r0, [sp] - movs r0, 0x31 - str r0, [sp, 0x4] - ldr r0, =gText_Record - ldr r1, =gText_ClearStreak - movs r3, 0x40 - bl sub_81A2008 - ldr r1, =gText_Total - mov r10, r1 - ldr r0, =gText_Championships - mov r8, r0 - ldr r0, [r4] - ldr r1, =0x00000d1c - adds r0, r1 - adds r0, r5 - ldrh r2, [r0] - movs r6, 0x70 - str r6, [sp] - movs r0, 0x41 - str r0, [sp, 0x4] - mov r0, r10 - mov r1, r8 - movs r3, 0x40 - bl sub_81A2008 - movs r0, 0x61 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0x1 - movs r2, 0x40 - movs r3, 0x79 - bl sub_81A2094 - ldr r0, [r4] - ldr r1, =0x00000d16 - adds r0, r1 - adds r0, r5 - ldrh r2, [r0] - mov r0, r9 - str r0, [sp] - movs r0, 0x71 - str r0, [sp, 0x4] - ldr r0, =gText_Record - ldr r1, =gText_ClearStreak - movs r3, 0x40 - bl sub_81A2008 - ldr r0, [r4] - ldr r1, =0x00000d1e - adds r0, r1 - adds r0, r5 - ldrh r2, [r0] - str r6, [sp] - movs r0, 0x81 - str r0, [sp, 0x4] - mov r0, r10 - mov r1, r8 - movs r3, 0x40 - bl sub_81A2008 - ldr r1, =gRecordsWindowId - ldrb r0, [r1] - bl PutWindowTilemap - ldr r1, =gRecordsWindowId - ldrb r0, [r1] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2134 - - thumb_func_start sub_81A22B8 -sub_81A22B8: @ 81A22B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r5, r0, 0 - adds r4, r2, 0 - ldr r0, [sp, 0x30] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0xC] - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r0, =gRecordsWindowId - mov r10, r0 - ldrb r0, [r0] - str r7, [sp] - movs r1, 0xFF - mov r9, r1 - str r1, [sp, 0x4] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - adds r3, r4, 0 - bl AddTextPrinterParameterized - ldr r0, =0x0000270f - cmp r6, r0 - bls _081A2304 - adds r6, r0, 0 -_081A2304: - ldr r0, =gStringVar1 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_WinStreak - adds r0, r4, 0 - bl StringExpandPlaceholders - mov r1, r10 - ldrb r0, [r1] - str r7, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - ldr r3, [sp, 0xC] - bl AddTextPrinterParameterized - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A22B8 - - thumb_func_start sub_81A2358 -sub_81A2358: @ 81A2358 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, [sp, 0x10] - lsls r0, 24 - lsls r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r4, =gSaveBlock2Ptr - ldr r4, [r4] - lsrs r1, 23 - lsrs r0, 22 - adds r1, r0 - movs r0, 0xDD - lsls r0, 4 - adds r4, r0 - adds r4, r1 - ldrh r1, [r4] - ldr r0, =gText_Record - str r5, [sp] - bl sub_81A22B8 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2358 - - thumb_func_start sub_81A239C -sub_81A239C: @ 81A239C - push {lr} - lsls r0, 24 - lsls r1, 24 - ldr r2, =gSaveBlock2Ptr - ldr r2, [r2] - lsrs r1, 23 - lsrs r0, 22 - adds r1, r0 - ldr r0, =0x00000dc8 - adds r2, r0 - adds r2, r1 - ldrh r0, [r2] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A23BC - adds r0, r1, 0 -_081A23BC: - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A239C - - thumb_func_start sub_81A23CC -sub_81A23CC: @ 81A23CC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r4, [sp, 0x20] - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - lsls r4, 24 - lsrs r7, r4, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_81A239C - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0 - beq _081A2404 - cmp r5, 0x1 - beq _081A2410 -_081A2404: - cmp r6, 0 - beq _081A240C - movs r0, 0x20 - b _081A241E -_081A240C: - movs r0, 0x10 - b _081A241E -_081A2410: - cmp r6, 0 - beq _081A241A - movs r0, 0x80 - lsls r0, 16 - b _081A241E -_081A241A: - movs r0, 0x80 - lsls r0, 15 -_081A241E: - bl sub_81A1C24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081A2440 - ldr r0, =gText_Current - str r7, [sp] - adds r1, r4, 0 - mov r2, r8 - mov r3, r9 - bl sub_81A22B8 - b _081A244E - .pool -_081A2440: - ldr r0, =gText_Prev - str r7, [sp] - adds r1, r4, 0 - mov r2, r8 - mov r3, r9 - bl sub_81A22B8 -_081A244E: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A23CC - - thumb_func_start sub_81A2460 -sub_81A2460: @ 81A2460 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, =gRecordsWindowId - ldr r0, =gUnknown_08611C74 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - cmp r7, 0 - bne _081A24A8 - ldr r0, =gStringVar4 - ldr r1, =gText_SingleBattleHallResults - bl StringExpandPlaceholders - b _081A24B0 - .pool -_081A24A8: - ldr r0, =gStringVar4 - ldr r1, =gText_DoubleBattleHallResults - bl StringExpandPlaceholders -_081A24B0: - ldr r0, =gStringVar4 - movs r1, 0x2 - bl sub_81A1C4C - ldr r6, =gRecordsWindowId - ldrb r0, [r6] - ldr r2, =gText_Lv502 - movs r1, 0x31 - mov r8, r1 - str r1, [sp] - movs r5, 0xFF - str r5, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x10 - bl AddTextPrinterParameterized - ldrb r0, [r6] - ldr r2, =gText_OpenLv - movs r1, 0x61 - mov r9, r1 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x10 - bl AddTextPrinterParameterized - movs r0, 0xA - bl sub_81A1C90 - mov r0, r8 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x48 - movs r3, 0x83 - bl sub_81A23CC - movs r0, 0x41 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x48 - movs r3, 0x83 - bl sub_81A2358 - mov r1, r9 - str r1, [sp] - adds r0, r7, 0 - movs r1, 0x1 - movs r2, 0x48 - movs r3, 0x83 - bl sub_81A23CC - movs r0, 0x71 - str r0, [sp] - adds r0, r7, 0 - movs r1, 0x1 - movs r2, 0x48 - movs r3, 0x83 - bl sub_81A2358 - ldrb r0, [r6] - bl PutWindowTilemap - ldrb r0, [r6] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2460 - - thumb_func_start sub_81A2560 -sub_81A2560: @ 81A2560 - push {lr} - lsls r0, 24 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - lsrs r0, 23 - ldr r2, =0x00000e04 - adds r1, r2 - adds r1, r0 - ldrh r0, [r1] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A257A - adds r0, r1, 0 -_081A257A: - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A2560 - - thumb_func_start sub_81A258C -sub_81A258C: @ 81A258C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r12, r0 - adds r7, r1, 0 - adds r4, r2, 0 - ldr r6, [sp, 0x2C] - ldr r5, [sp, 0x30] - lsls r4, 16 - lsrs r4, 16 - lsls r3, 24 - lsrs r3, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =gRecordsWindowId - mov r10, r0 - ldrb r0, [r0] - str r5, [sp] - movs r1, 0xFF - mov r9, r1 - str r1, [sp, 0x4] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0x8] - movs r1, 0x1 - mov r2, r12 - bl AddTextPrinterParameterized - ldr r0, =gStringVar1 - adds r1, r4, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - adds r0, r4, 0 - adds r1, r7, 0 - bl StringExpandPlaceholders - mov r1, r10 - ldrb r0, [r1] - str r5, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - adds r3, r6, 0 - bl AddTextPrinterParameterized - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A258C - - thumb_func_start sub_81A2618 -sub_81A2618: @ 81A2618 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r5, r2, 24 - lsls r3, 24 - lsrs r6, r3, 24 - adds r0, r4, 0 - bl sub_81A2560 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r4, 0 - beq _081A2648 - movs r0, 0x80 - lsls r0, 4 - b _081A264C -_081A2648: - movs r0, 0x80 - lsls r0, 3 -_081A264C: - bl sub_81A1C24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081A2674 - ldr r0, =gText_Current - ldr r1, =gText_RoomsCleared - str r5, [sp] - str r6, [sp, 0x4] - adds r2, r7, 0 - mov r3, r8 - bl sub_81A2008 - b _081A2684 - .pool -_081A2674: - ldr r0, =gText_Prev - ldr r1, =gText_RoomsCleared - str r5, [sp] - str r6, [sp, 0x4] - adds r2, r7, 0 - mov r3, r8 - bl sub_81A2008 -_081A2684: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2618 - - thumb_func_start sub_81A2698 -sub_81A2698: @ 81A2698 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - ldr r6, =gRecordsWindowId - ldr r0, =gUnknown_08611C74 - bl AddWindow - strb r0, [r6] - ldrb r0, [r6] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r6] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r4, =gStringVar4 - ldr r1, =gText_BattleChoiceResults - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0 - bl sub_81A1C4C - ldrb r0, [r6] - ldr r2, =gText_Lv502 - movs r1, 0x21 - str r1, [sp] - movs r5, 0xFF - str r5, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - ldrb r0, [r6] - ldr r2, =gText_OpenLv - movs r1, 0x61 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - movs r0, 0xA - bl sub_81A1C90 - movs r0, 0 - movs r1, 0x40 - movs r2, 0x72 - movs r3, 0x21 - bl sub_81A2618 - ldr r0, =gText_Record - mov r10, r0 - ldr r7, =gText_RoomsCleared - ldr r5, =gSaveBlock2Ptr - ldr r0, [r5] - ldr r1, =0x00000e08 - adds r0, r1 - ldrh r2, [r0] - movs r4, 0x72 - str r4, [sp] - movs r0, 0x31 - str r0, [sp, 0x4] - mov r0, r10 - adds r1, r7, 0 - movs r3, 0x40 - bl sub_81A258C - ldr r0, =gText_Total - mov r8, r0 - ldr r1, =gText_TimesCleared - mov r9, r1 - ldr r0, [r5] - ldr r1, =0x00000e0c - adds r0, r1 - ldrh r2, [r0] - str r4, [sp] - movs r0, 0x41 - str r0, [sp, 0x4] - mov r0, r8 - mov r1, r9 - movs r3, 0x40 - bl sub_81A258C - movs r0, 0x1 - movs r1, 0x40 - movs r2, 0x72 - movs r3, 0x61 - bl sub_81A2618 - ldr r0, [r5] - ldr r1, =0x00000e0a - adds r0, r1 - ldrh r2, [r0] - str r4, [sp] - movs r0, 0x71 - str r0, [sp, 0x4] - mov r0, r10 - adds r1, r7, 0 - movs r3, 0x40 - bl sub_81A258C - ldr r0, [r5] - ldr r1, =0x00000e0e - adds r0, r1 - ldrh r2, [r0] - str r4, [sp] - movs r0, 0x81 - str r0, [sp, 0x4] - mov r0, r8 - mov r1, r9 - movs r3, 0x40 - bl sub_81A258C - ldrb r0, [r6] - bl PutWindowTilemap - ldrb r0, [r6] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2698 - - thumb_func_start sub_81A27E8 -sub_81A27E8: @ 81A27E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r5, r0, 0 - adds r4, r2, 0 - ldr r0, [sp, 0x30] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0xC] - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r0, =gRecordsWindowId - mov r10, r0 - ldrb r0, [r0] - str r7, [sp] - movs r1, 0xFF - mov r9, r1 - str r1, [sp, 0x4] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - adds r3, r4, 0 - bl AddTextPrinterParameterized - ldr r0, =0x0000270f - cmp r6, r0 - bls _081A2834 - adds r6, r0, 0 -_081A2834: - ldr r0, =gStringVar1 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_KOsInARow - adds r0, r4, 0 - bl StringExpandPlaceholders - mov r1, r10 - ldrb r0, [r1] - str r7, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - ldr r3, [sp, 0xC] - bl AddTextPrinterParameterized - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A27E8 - - thumb_func_start sub_81A2888 -sub_81A2888: @ 81A2888 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - lsrs r0, 23 - ldr r2, =0x00000dde - adds r1, r2 - adds r1, r0 - ldrh r1, [r1] - ldr r0, =gText_Record - str r3, [sp] - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_81A27E8 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2888 - - thumb_func_start sub_81A28CC -sub_81A28CC: @ 81A28CC - push {lr} - lsls r0, 24 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - lsrs r0, 23 - ldr r2, =0x00000dda - adds r1, r2 - adds r1, r0 - ldrh r0, [r1] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A28E6 - adds r0, r1, 0 -_081A28E6: - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A28CC - - thumb_func_start sub_81A28F8 -sub_81A28F8: @ 81A28F8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r6, r3, 24 - adds r0, r4, 0 - bl sub_81A28CC - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0 - beq _081A2926 - movs r0, 0x80 - b _081A2928 -_081A2926: - movs r0, 0x40 -_081A2928: - bl sub_81A1C24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081A2948 - ldr r0, =gText_Current - str r6, [sp] - adds r1, r5, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_81A27E8 - b _081A2956 - .pool -_081A2948: - ldr r0, =gText_Prev - str r6, [sp] - adds r1, r5, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_81A27E8 -_081A2956: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A28F8 - - thumb_func_start sub_81A2968 -sub_81A2968: @ 81A2968 - push {r4-r6,lr} - sub sp, 0xC - ldr r5, =gRecordsWindowId - ldr r0, =gUnknown_08611C74 - bl AddWindow - strb r0, [r5] - ldrb r0, [r5] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r5] - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r0, 0xA - bl sub_81A1C90 - ldr r4, =gStringVar4 - ldr r1, =gText_SetKOTourneyResults - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x2 - bl sub_81A1C4C - ldrb r0, [r5] - ldr r2, =gText_Lv502 - movs r1, 0x31 - str r1, [sp] - movs r6, 0xFF - str r6, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x10 - bl AddTextPrinterParameterized - ldrb r0, [r5] - ldr r2, =gText_OpenLv - movs r1, 0x61 - str r1, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x10 - bl AddTextPrinterParameterized - movs r0, 0 - movs r1, 0x48 - movs r2, 0x7E - movs r3, 0x31 - bl sub_81A28F8 - movs r0, 0 - movs r1, 0x48 - movs r2, 0x7E - movs r3, 0x41 - bl sub_81A2888 - movs r0, 0x1 - movs r1, 0x48 - movs r2, 0x7E - movs r3, 0x61 - bl sub_81A28F8 - movs r0, 0x1 - movs r1, 0x48 - movs r2, 0x7E - movs r3, 0x71 - bl sub_81A2888 - ldrb r0, [r5] - bl PutWindowTilemap - ldrb r0, [r5] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2968 - - thumb_func_start sub_81A2A28 -sub_81A2A28: @ 81A2A28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - mov r12, r0 - ldr r4, [sp, 0x38] - ldr r5, [sp, 0x3C] - ldr r0, [sp, 0x40] - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0xC] - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x10] - lsls r5, 24 - lsrs r5, 24 - str r5, [sp, 0x14] - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - ldr r0, =gRecordsWindowId - mov r10, r0 - ldrb r0, [r0] - str r6, [sp] - movs r1, 0xFF - mov r9, r1 - str r1, [sp, 0x4] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0x8] - movs r1, 0x1 - mov r2, r12 - bl AddTextPrinterParameterized - ldr r0, =0x0000270f - cmp r7, r0 - bls _081A2A80 - adds r7, r0, 0 -_081A2A80: - ldr r5, =gStringVar1 - adds r0, r5, 0 - adds r1, r7, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_WinStreak - adds r0, r4, 0 - bl StringExpandPlaceholders - mov r1, r10 - ldrb r0, [r1] - str r6, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - ldr r3, [sp, 0x10] - bl AddTextPrinterParameterized - adds r0, r5, 0 - ldr r1, [sp, 0xC] - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r1, =gText_TimesVar1 - adds r0, r4, 0 - bl StringExpandPlaceholders - mov r1, r10 - ldrb r0, [r1] - str r6, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - ldr r3, [sp, 0x14] - bl AddTextPrinterParameterized - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2A28 - - thumb_func_start sub_81A2B04 -sub_81A2B04: @ 81A2B04 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r6, r2, 0 - ldr r4, [sp, 0x24] - ldr r5, [sp, 0x28] - lsls r0, 24 - lsls r1, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r2, =gSaveBlock2Ptr - ldr r2, [r2] - lsrs r1, 23 - lsrs r0, 22 - adds r1, r0 - ldr r7, =0x00000dea - adds r0, r2, r7 - adds r0, r1 - ldrh r0, [r0] - mov r8, r0 - ldr r0, =0x00000dfa - adds r2, r0 - adds r2, r1 - ldrh r2, [r2] - ldr r0, =gText_Record - str r3, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - mov r1, r8 - adds r3, r6, 0 - bl sub_81A2A28 - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2B04 - - thumb_func_start sub_81A2B70 -sub_81A2B70: @ 81A2B70 - push {lr} - lsls r0, 24 - lsls r1, 24 - ldr r2, =gSaveBlock2Ptr - ldr r2, [r2] - lsrs r1, 23 - lsrs r0, 22 - adds r1, r0 - ldr r0, =0x00000de2 - adds r2, r0 - adds r2, r1 - ldrh r0, [r2] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A2B90 - adds r0, r1, 0 -_081A2B90: - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A2B70 - - thumb_func_start sub_81A2BA0 -sub_81A2BA0: @ 81A2BA0 - push {lr} - lsls r0, 24 - lsls r1, 24 - ldr r2, =gSaveBlock2Ptr - ldr r2, [r2] - lsrs r1, 23 - lsrs r0, 22 - adds r1, r0 - ldr r0, =0x00000df2 - adds r2, r0 - adds r2, r1 - ldrh r0, [r2] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A2BC0 - adds r0, r1, 0 -_081A2BC0: - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A2BA0 - - thumb_func_start sub_81A2BD0 -sub_81A2BD0: @ 81A2BD0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r4, [sp, 0x30] - ldr r5, [sp, 0x34] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0xC] - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - lsls r4, 24 - lsrs r4, 24 - mov r9, r4 - lsls r5, 24 - lsrs r5, 24 - mov r10, r5 - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_81A2B70 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_81A2BA0 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r6, 0 - beq _081A2C20 - cmp r6, 0x1 - beq _081A2C30 -_081A2C20: - cmp r7, 0 - beq _081A2C2A - movs r0, 0x80 - lsls r0, 2 - b _081A2C3E -_081A2C2A: - movs r0, 0x80 - lsls r0, 1 - b _081A2C3E -_081A2C30: - cmp r7, 0 - beq _081A2C3A - movs r0, 0x80 - lsls r0, 18 - b _081A2C3E -_081A2C3A: - movs r0, 0x80 - lsls r0, 17 -_081A2C3E: - bl sub_81A1C24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081A2C68 - ldr r0, =gText_Current - mov r1, r8 - str r1, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r10 - str r1, [sp, 0x8] - adds r1, r5, 0 - adds r2, r4, 0 - ldr r3, [sp, 0xC] - bl sub_81A2A28 - b _081A2C80 - .pool -_081A2C68: - ldr r0, =gText_Prev - mov r1, r8 - str r1, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r10 - str r1, [sp, 0x8] - adds r1, r5, 0 - adds r2, r4, 0 - ldr r3, [sp, 0xC] - bl sub_81A2A28 -_081A2C80: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2BD0 - - thumb_func_start sub_81A2C94 -sub_81A2C94: @ 81A2C94 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - ldr r4, =gRecordsWindowId - ldr r0, =gUnknown_08611C74 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - cmp r7, 0 - bne _081A2CD8 - ldr r0, =gStringVar4 - ldr r1, =gText_BattleSwapSingleResults - bl StringExpandPlaceholders - b _081A2CE0 - .pool -_081A2CD8: - ldr r0, =gStringVar4 - ldr r1, =gText_BattleSwapDoubleResults - bl StringExpandPlaceholders -_081A2CE0: - ldr r0, =gStringVar4 - movs r1, 0 - bl sub_81A1C4C - ldr r0, =gRecordsWindowId - mov r8, r0 - ldrb r0, [r0] - ldr r2, =gText_Lv502 - movs r6, 0x21 - str r6, [sp] - movs r5, 0xFF - str r5, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - mov r1, r8 - ldrb r0, [r1] - ldr r2, =gText_RentalSwap - str r6, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x98 - bl AddTextPrinterParameterized - mov r1, r8 - ldrb r0, [r1] - ldr r2, =gText_OpenLv - movs r1, 0x61 - str r1, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - movs r0, 0xA - bl sub_81A1C90 - movs r4, 0x9E - str r4, [sp] - movs r0, 0x31 - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x8 - movs r3, 0x40 - bl sub_81A2BD0 - str r4, [sp] - movs r0, 0x41 - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0 - movs r2, 0x8 - movs r3, 0x40 - bl sub_81A2B04 - str r4, [sp] - movs r0, 0x71 - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x1 - movs r2, 0x8 - movs r3, 0x40 - bl sub_81A2BD0 - str r4, [sp] - movs r0, 0x81 - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x1 - movs r2, 0x8 - movs r3, 0x40 - bl sub_81A2B04 - mov r1, r8 - ldrb r0, [r1] - bl PutWindowTilemap - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2C94 - - thumb_func_start sub_81A2DB4 -sub_81A2DB4: @ 81A2DB4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r5, r0, 0 - adds r4, r2, 0 - ldr r0, [sp, 0x30] - lsls r1, 16 - lsrs r6, r1, 16 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0xC] - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r0, =gRecordsWindowId - mov r10, r0 - ldrb r0, [r0] - str r7, [sp] - movs r1, 0xFF - mov r9, r1 - str r1, [sp, 0x4] - movs r1, 0 - mov r8, r1 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - adds r3, r4, 0 - bl AddTextPrinterParameterized - ldr r0, =0x0000270f - cmp r6, r0 - bls _081A2E00 - adds r6, r0, 0 -_081A2E00: - ldr r0, =gStringVar1 - adds r1, r6, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_FloorsCleared - adds r0, r4, 0 - bl StringExpandPlaceholders - mov r1, r10 - ldrb r0, [r1] - str r7, [sp] - mov r1, r9 - str r1, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - ldr r3, [sp, 0xC] - bl AddTextPrinterParameterized - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2DB4 - - thumb_func_start sub_81A2E54 -sub_81A2E54: @ 81A2E54 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - lsrs r0, 23 - ldr r2, =0x00000e1e - adds r1, r2 - adds r1, r0 - ldrh r1, [r1] - ldr r0, =gText_Record - str r3, [sp] - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_81A2DB4 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2E54 - - thumb_func_start sub_81A2E98 -sub_81A2E98: @ 81A2E98 - push {lr} - lsls r0, 24 - ldr r1, =gSaveBlock2Ptr - ldr r1, [r1] - lsrs r0, 23 - ldr r2, =0x00000e1a - adds r1, r2 - adds r1, r0 - ldrh r0, [r1] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A2EB2 - adds r0, r1, 0 -_081A2EB2: - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A2E98 - - thumb_func_start sub_81A2EC4 -sub_81A2EC4: @ 81A2EC4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r6, r3, 24 - adds r0, r4, 0 - bl sub_81A2E98 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r4, 0 - beq _081A2EF4 - movs r0, 0x80 - lsls r0, 6 - b _081A2EF8 -_081A2EF4: - movs r0, 0x80 - lsls r0, 5 -_081A2EF8: - bl sub_81A1C24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081A2F18 - ldr r0, =gText_Current - str r6, [sp] - adds r1, r5, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_81A2DB4 - b _081A2F26 - .pool -_081A2F18: - ldr r0, =gText_Prev - str r6, [sp] - adds r1, r5, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_81A2DB4 -_081A2F26: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2EC4 - - thumb_func_start sub_81A2F38 -sub_81A2F38: @ 81A2F38 - push {r4-r6,lr} - sub sp, 0xC - ldr r5, =gRecordsWindowId - ldr r0, =gUnknown_08611C74 - bl AddWindow - strb r0, [r5] - ldrb r0, [r5] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r5] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r4, =gStringVar4 - ldr r1, =gText_BattleQuestResults - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x2 - bl sub_81A1C4C - ldrb r0, [r5] - ldr r2, =gText_Lv502 - movs r1, 0x31 - str r1, [sp] - movs r6, 0xFF - str r6, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - ldrb r0, [r5] - ldr r2, =gText_OpenLv - movs r1, 0x61 - str r1, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl AddTextPrinterParameterized - movs r0, 0xA - bl sub_81A1C90 - movs r0, 0 - movs r1, 0x40 - movs r2, 0x6F - movs r3, 0x31 - bl sub_81A2EC4 - movs r0, 0 - movs r1, 0x40 - movs r2, 0x6F - movs r3, 0x41 - bl sub_81A2E54 - movs r0, 0x1 - movs r1, 0x40 - movs r2, 0x6F - movs r3, 0x61 - bl sub_81A2EC4 - movs r0, 0x1 - movs r1, 0x40 - movs r2, 0x6F - movs r3, 0x71 - bl sub_81A2E54 - ldrb r0, [r5] - bl PutWindowTilemap - ldrb r0, [r5] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2F38 - - thumb_func_start sub_81A2FF8 -sub_81A2FF8: @ 81A2FF8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - ldr r4, =gRecordsWindowId - ldr r0, =gUnknown_08611C7C - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gStringVar4 - mov r9, r0 - ldr r1, =gText_LinkContestResults - bl StringExpandPlaceholders - movs r0, 0x1 - mov r1, r9 - movs r2, 0xD0 - bl GetStringCenterAlignXOffset - adds r3, r0, 0 - ldrb r0, [r4] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x1 - str r1, [sp] - movs r6, 0xFF - str r6, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - mov r2, r9 - bl AddTextPrinterParameterized - ldr r7, =gText_1st - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x26 - bl GetStringRightAlignXOffset - adds r3, r0, 0 - adds r3, 0x32 - ldrb r0, [r4] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x19 - mov r8, r1 - str r1, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - adds r2, r7, 0 - bl AddTextPrinterParameterized - ldr r7, =gText_2nd - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x26 - bl GetStringRightAlignXOffset - adds r3, r0, 0 - adds r3, 0x58 - ldrb r0, [r4] - lsls r3, 24 - lsrs r3, 24 - mov r2, r8 - str r2, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - adds r2, r7, 0 - bl AddTextPrinterParameterized - ldr r7, =gText_3rd - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x26 - bl GetStringRightAlignXOffset - adds r3, r0, 0 - adds r3, 0x7E - ldrb r0, [r4] - lsls r3, 24 - lsrs r3, 24 - mov r1, r8 - str r1, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - adds r2, r7, 0 - bl AddTextPrinterParameterized - ldr r7, =gText_4th - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0x26 - bl GetStringRightAlignXOffset - adds r3, r0, 0 - adds r3, 0xA4 - ldrb r0, [r4] - lsls r3, 24 - lsrs r3, 24 - mov r2, r8 - str r2, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - adds r2, r7, 0 - bl AddTextPrinterParameterized - ldrb r0, [r4] - ldr r2, =gText_Cool - movs r1, 0x29 - str r1, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x6 - bl AddTextPrinterParameterized - ldrb r0, [r4] - ldr r2, =gText_Beauty - movs r1, 0x39 - str r1, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x6 - bl AddTextPrinterParameterized - ldrb r0, [r4] - ldr r2, =gText_Cute - movs r1, 0x49 - str r1, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x6 - bl AddTextPrinterParameterized - ldrb r0, [r4] - ldr r2, =gText_Smart - movs r1, 0x59 - str r1, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x6 - bl AddTextPrinterParameterized - ldrb r0, [r4] - ldr r2, =gText_Tough - movs r1, 0x69 - str r1, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x6 - bl AddTextPrinterParameterized - movs r1, 0 -_081A314A: - movs r5, 0 - adds r0, r1, 0x1 - mov r8, r0 - lsls r0, r1, 28 - movs r2, 0xA4 - lsls r2, 22 - adds r0, r2 - lsrs r7, r0, 24 - lsls r4, r1, 3 -_081A315C: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000624 - adds r0, r1 - adds r0, r4 - ldrh r1, [r0] - mov r0, r9 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r6, =gRecordsWindowId - ldrb r0, [r6] - movs r1, 0x26 - adds r3, r5, 0 - muls r3, r1 - adds r3, 0x40 - lsls r3, 24 - lsrs r3, 24 - str r7, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x1 - mov r2, r9 - bl AddTextPrinterParameterized - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _081A315C - mov r1, r8 - cmp r1, 0x4 - ble _081A314A - ldrb r0, [r6] - bl PutWindowTilemap - ldrb r0, [r6] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A2FF8 - - thumb_func_start sub_81A31FC -sub_81A31FC: @ 81A31FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000ca9 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - lsrs r7, r0, 30 - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, =0x000040ce - bl VarGet - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r4, 0x6 - bls _081A3232 - b _081A35CE -_081A3232: - lsls r0, r4, 2 - ldr r1, =_081A3250 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A3250: - .4byte _081A326C - .4byte _081A33A8 - .4byte _081A3414 - .4byte _081A347C - .4byte _081A34CC - .4byte _081A354C - .4byte _081A3594 -_081A326C: - ldr r2, =gSaveBlock2Ptr - mov r9, r2 - ldr r0, [r2] - lsls r3, r7, 1 - mov r10, r3 - mov r2, r8 - lsls r1, r2, 2 - add r1, r10 - str r1, [sp, 0x20] - movs r3, 0xCE - lsls r3, 4 - adds r1, r0, r3 - ldr r2, [sp, 0x20] - adds r1, r2 - adds r3, 0x10 - adds r0, r3 - adds r0, r2 - ldrh r1, [r1] - ldrh r2, [r0] - cmp r1, r2 - bhi _081A3298 - b _081A35CE -_081A3298: - strh r1, [r0] - mov r3, r8 - cmp r3, 0x3 - bne _081A32F2 - ldr r6, =gBattleScripting - adds r6, 0x25 - ldrb r0, [r6] - movs r4, 0x1 - eors r0, r4 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r5, =gLinkPlayers + 8 - adds r1, r5 - mov r0, sp - bl StringCopy - mov r0, sp - bl StripExtCtrlCodes - lsls r1, r7, 3 - ldr r0, =0x00000ee1 - adds r1, r0 - mov r2, r9 - ldr r0, [r2] - adds r0, r1 - mov r1, sp - bl StringCopy - ldrb r0, [r6] - eors r4, r0 - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - subs r5, 0x4 - adds r0, r5 - ldr r0, [r0] - lsls r2, r7, 2 - ldr r1, =0x00000ef1 - adds r2, r1 - mov r3, r9 - ldr r1, [r3] - adds r1, r2 - bl WriteUnalignedWord -_081A32F2: - mov r7, r9 - ldr r0, [r7] - movs r1, 0xCE - lsls r1, 4 - adds r0, r1 - ldr r2, [sp, 0x20] - adds r0, r2 - ldrh r0, [r0] - cmp r0, 0x1 - bhi _081A3308 - b _081A35CE -_081A3308: - bl sub_80EE818 - lsls r0, 24 - cmp r0, 0 - bne _081A3314 - b _081A35CE -_081A3314: - mov r3, r8 - cmp r3, 0x1 - beq _081A335A - cmp r3, 0x1 - bgt _081A3338 - cmp r3, 0 - beq _081A3344 - b _081A35CE - .pool -_081A3338: - mov r7, r8 - cmp r7, 0x2 - beq _081A3374 - cmp r7, 0x3 - beq _081A338E - b _081A35CE -_081A3344: - mov r1, r9 - ldr r0, [r1] - movs r2, 0xCE - lsls r2, 4 - adds r0, r2 - add r0, r10 - ldrh r0, [r0] - movs r1, 0x1 - bl sub_80EE8C8 - b _081A35CE -_081A335A: - mov r3, r9 - ldr r0, [r3] - mov r1, r10 - adds r1, 0x4 - movs r7, 0xCE - lsls r7, 4 - adds r0, r7 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x2 - bl sub_80EE8C8 - b _081A35CE -_081A3374: - mov r1, r9 - ldr r0, [r1] - mov r1, r10 - adds r1, 0x8 - movs r2, 0xCE - lsls r2, 4 - adds r0, r2 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x3 - bl sub_80EE8C8 - b _081A35CE -_081A338E: - mov r3, r9 - ldr r0, [r3] - mov r1, r10 - adds r1, 0xC - movs r7, 0xCE - lsls r7, 4 - adds r0, r7 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x4 - bl sub_80EE8C8 - b _081A35CE -_081A33A8: - ldr r6, =gSaveBlock2Ptr - ldr r0, [r6] - lsls r7, 1 - mov r2, r8 - lsls r1, r2, 2 - adds r4, r7, r1 - ldr r5, =0x00000d0c - adds r1, r0, r5 - adds r1, r4 - ldr r3, =0x00000d14 - adds r0, r3 - adds r0, r4 - ldrh r2, [r1] - ldrh r3, [r0] - cmp r2, r3 - bhi _081A33CA - b _081A35CE -_081A33CA: - strh r2, [r0] - ldrh r0, [r1] - cmp r0, 0x1 - bhi _081A33D4 - b _081A35CE -_081A33D4: - bl sub_80EE818 - lsls r0, 24 - cmp r0, 0 - bne _081A33E0 - b _081A35CE -_081A33E0: - mov r0, r8 - cmp r0, 0 - bne _081A3404 - ldr r0, [r6] - adds r0, r5 - adds r0, r7 - ldrh r0, [r0] - movs r1, 0x5 - bl sub_80EE8C8 - b _081A35CE - .pool -_081A3404: - ldr r0, [r6] - adds r0, r5 - adds r0, r4 - ldrh r0, [r0] - movs r1, 0x6 - bl sub_80EE8C8 - b _081A35CE -_081A3414: - ldr r6, =gSaveBlock2Ptr - ldr r0, [r6] - lsls r7, 1 - mov r2, r8 - lsls r1, r2, 2 - adds r4, r7, r1 - ldr r5, =0x00000dc8 - adds r1, r0, r5 - adds r1, r4 - movs r3, 0xDD - lsls r3, 4 - adds r0, r3 - adds r0, r4 - ldrh r2, [r1] - ldrh r3, [r0] - cmp r2, r3 - bhi _081A3438 - b _081A35CE -_081A3438: - strh r2, [r0] - ldrh r0, [r1] - cmp r0, 0x1 - bhi _081A3442 - b _081A35CE -_081A3442: - bl sub_80EE818 - lsls r0, 24 - cmp r0, 0 - bne _081A344E - b _081A35CE -_081A344E: - mov r0, r8 - cmp r0, 0 - bne _081A346C - ldr r0, [r6] - adds r0, r5 - adds r0, r7 - ldrh r0, [r0] - movs r1, 0xB - bl sub_80EE8C8 - b _081A35CE - .pool -_081A346C: - ldr r0, [r6] - adds r0, r5 - adds r0, r4 - ldrh r0, [r0] - movs r1, 0xC - bl sub_80EE8C8 - b _081A35CE -_081A347C: - ldr r6, =gSaveBlock2Ptr - ldr r1, [r6] - lsls r4, r7, 1 - ldr r5, =0x00000dda - adds r0, r1, r5 - adds r0, r4 - ldr r2, =0x00000dde - adds r1, r2 - adds r1, r4 - ldrh r2, [r0] - ldrh r3, [r1] - cmp r2, r3 - bhi _081A3498 - b _081A35CE -_081A3498: - strh r2, [r1] - ldrh r0, [r0] - cmp r0, 0x1 - bhi _081A34A2 - b _081A35CE -_081A34A2: - bl sub_80EE818 - lsls r0, 24 - cmp r0, 0 - bne _081A34AE - b _081A35CE -_081A34AE: - ldr r0, [r6] - adds r0, r5 - adds r0, r4 - ldrh r0, [r0] - movs r1, 0xA - bl sub_80EE8C8 - b _081A35CE - .pool -_081A34CC: - ldr r6, =gSaveBlock2Ptr - ldr r2, [r6] - lsls r7, 1 - mov r9, r7 - mov r7, r8 - lsls r0, r7, 2 - mov r1, r9 - adds r4, r1, r0 - ldr r5, =0x00000de2 - adds r0, r2, r5 - adds r3, r0, r4 - ldr r7, =0x00000dea - adds r0, r2, r7 - adds r0, r4 - ldrh r1, [r3] - ldrh r7, [r0] - cmp r1, r7 - bls _081A35CE - strh r1, [r0] - ldr r0, =0x00000dfa - adds r1, r2, r0 - adds r1, r4 - ldr r7, =0x00000df2 - adds r0, r2, r7 - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - ldrh r0, [r3] - cmp r0, 0x1 - bls _081A35CE - bl sub_80EE818 - lsls r0, 24 - cmp r0, 0 - beq _081A35CE - mov r0, r8 - cmp r0, 0 - bne _081A353C - ldr r0, [r6] - adds r0, r5 - add r0, r9 - ldrh r0, [r0] - movs r1, 0x7 - bl sub_80EE8C8 - b _081A35CE - .pool -_081A353C: - ldr r0, [r6] - adds r0, r5 - adds r0, r4 - ldrh r0, [r0] - movs r1, 0x8 - bl sub_80EE8C8 - b _081A35CE -_081A354C: - ldr r6, =gSaveBlock2Ptr - ldr r1, [r6] - lsls r4, r7, 1 - ldr r5, =0x00000e04 - adds r0, r1, r5 - adds r0, r4 - ldr r2, =0x00000e08 - adds r1, r2 - adds r1, r4 - ldrh r2, [r0] - ldrh r3, [r1] - cmp r2, r3 - bls _081A35CE - strh r2, [r1] - ldrh r0, [r0] - cmp r0, 0x1 - bls _081A35CE - bl sub_80EE818 - lsls r0, 24 - cmp r0, 0 - beq _081A35CE - ldr r0, [r6] - adds r0, r5 - adds r0, r4 - ldrh r0, [r0] - movs r1, 0x9 - bl sub_80EE8C8 - b _081A35CE - .pool -_081A3594: - ldr r6, =gSaveBlock2Ptr - ldr r1, [r6] - lsls r4, r7, 1 - ldr r5, =0x00000e1a - adds r0, r1, r5 - adds r0, r4 - ldr r7, =0x00000e1e - adds r1, r7 - adds r1, r4 - ldrh r2, [r0] - ldrh r3, [r1] - cmp r2, r3 - bls _081A35CE - strh r2, [r1] - ldrh r0, [r0] - cmp r0, 0x1 - bls _081A35CE - bl sub_80EE818 - lsls r0, 24 - cmp r0, 0 - beq _081A35CE - ldr r0, [r6] - adds r0, r5 - adds r0, r4 - ldrh r0, [r0] - movs r1, 0xD - bl sub_80EE8C8 -_081A35CE: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A31FC - - thumb_func_start sub_81A35EC -sub_81A35EC: @ 81A35EC - push {r4,lr} - ldr r0, =0x000040cf - bl VarGet - ldr r4, =gSpecialVar_Result - bl sub_81A3610 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A35EC - - thumb_func_start sub_81A3610 -sub_81A3610: @ 81A3610 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r0, 0 - mov r8, r0 - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, =0x000040ce - bl VarGet - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl sub_81A39C4 - lsls r0, 16 - ldr r1, =gUnknown_08611550 - mov r9, r1 - lsls r7, r6, 2 - adds r1, 0x3 - adds r1, r7, r1 - lsrs r0, 16 - ldrb r1, [r1] - adds r5, r0, r1 - cmp r4, 0 - beq _081A365C - movs r0, 0 - b _081A36C2 - .pool -_081A365C: - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_81A3B30 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - blt _081A3680 - cmp r1, 0x1 - bgt _081A3680 - adds r0, r1, r7 - add r0, r9 - ldrb r0, [r0] - cmp r5, r0 - bne _081A36BC - adds r1, 0x1 - mov r8, r1 - b _081A36BC -_081A3680: - ldr r1, =gUnknown_08611550 - lsls r2, r6, 2 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r5, r0 - bne _081A3694 - movs r0, 0x3 - b _081A36BA - .pool -_081A3694: - adds r0, r1, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r5, r0 - bne _081A36A4 - movs r1, 0x4 - mov r8, r1 - b _081A36BC -_081A36A4: - cmp r5, r0 - ble _081A36BC - subs r0, r5, r0 - adds r1, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - bl __modsi3 - cmp r0, 0 - bne _081A36BC - movs r0, 0x4 -_081A36BA: - mov r8, r0 -_081A36BC: - mov r1, r8 - lsls r0, r1, 24 - lsrs r0, 24 -_081A36C2: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81A3610 - - thumb_func_start CopyFrontierTrainerText -CopyFrontierTrainerText: @ 81A36D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - lsls r1, 16 - lsrs r3, r1, 16 - cmp r0, 0x1 - beq _081A3766 - cmp r0, 0x1 - bgt _081A36EA - cmp r0, 0 - beq _081A36F2 - b _081A38F8 -_081A36EA: - cmp r2, 0x2 - bne _081A36F0 - b _081A3818 -_081A36F0: - b _081A38F8 -_081A36F2: - movs r0, 0xFA - lsls r0, 1 - cmp r3, r0 - bne _081A370C - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000bfc - b _081A38C4 - .pool -_081A370C: - ldr r0, =0x000003fe - cmp r3, r0 - beq _081A3786 - ldr r0, =0x0000012b - cmp r3, r0 - bhi _081A3738 - ldr r2, =gFacilityTrainers - movs r0, 0x34 - adds r1, r3, 0 - muls r1, r0 - ldr r0, [r2] - adds r0, r1 - adds r0, 0xC - bl FrontierSpeechToString - b _081A38F8 - .pool -_081A3738: - ldr r0, =0x0000018f - cmp r3, r0 - bhi _081A3758 - ldr r1, =gSaveBlock2Ptr - movs r0, 0xEC - muls r0, r3 - ldr r1, [r1] - adds r0, r1 - ldr r1, =0xfffef2b8 - b _081A38C4 - .pool -_081A3758: - adds r0, r3, 0 - adds r0, 0x70 - lsls r0, 24 - lsrs r0, 24 - bl CopyFriendsApprenticeChallengeText - b _081A38F8 -_081A3766: - movs r0, 0xFA - lsls r0, 1 - cmp r3, r0 - bne _081A3780 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000c08 - b _081A38C4 - .pool -_081A3780: - ldr r0, =0x000003fe - cmp r3, r0 - bne _081A3794 -_081A3786: - movs r0, 0 - bl sub_81A51A8 - b _081A38F8 - .pool -_081A3794: - ldr r0, =0x0000012b - cmp r3, r0 - bhi _081A37B8 - ldr r2, =gFacilityTrainers - movs r0, 0x34 - adds r1, r3, 0 - muls r1, r0 - ldr r0, [r2] - adds r0, r1 - adds r0, 0x18 - bl FrontierSpeechToString - b _081A38F8 - .pool -_081A37B8: - ldr r0, =0x0000018f - cmp r3, r0 - bhi _081A37EC - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _081A387C - ldr r1, =gSaveBlock2Ptr - movs r0, 0xEC - muls r0, r3 - ldr r1, [r1] - adds r0, r1 - ldr r1, =0xfffef2c4 - b _081A38C4 - .pool -_081A37EC: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - bne _081A387C - ldr r1, =gSaveBlock2Ptr - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - ldr r1, [r1] - adds r0, r1 - ldr r1, =0xffff96c4 - b _081A38C4 - .pool -_081A3818: - movs r0, 0xFA - lsls r0, 1 - cmp r3, r0 - bne _081A3830 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000c14 - b _081A38C4 - .pool -_081A3830: - ldr r0, =0x000003fe - cmp r3, r0 - bne _081A3844 - movs r0, 0x1 - bl sub_81A51A8 - b _081A38F8 - .pool -_081A3844: - ldr r0, =0x0000012b - cmp r3, r0 - bhi _081A3868 - ldr r2, =gFacilityTrainers - movs r0, 0x34 - adds r1, r3, 0 - muls r1, r0 - ldr r0, [r2] - adds r0, r1 - adds r0, 0x24 - bl FrontierSpeechToString - b _081A38F8 - .pool -_081A3868: - ldr r0, =0x0000018f - cmp r3, r0 - bhi _081A38A8 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _081A3890 -_081A387C: - bl sub_81864E0 - bl FrontierSpeechToString - b _081A38F8 - .pool -_081A3890: - ldr r1, =gSaveBlock2Ptr - movs r0, 0xEC - muls r0, r3 - ldr r1, [r1] - adds r0, r1 - ldr r1, =0xfffef2d0 - b _081A38C4 - .pool -_081A38A8: - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _081A38D4 - bl sub_81864A8 - lsls r0, 24 - lsrs r3, r0, 24 - movs r0, 0x58 - muls r0, r3 - ldr r1, =gApprentices+0x4A -_081A38C4: - adds r0, r1 - bl FrontierSpeechToString - b _081A38F8 - .pool -_081A38D4: - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0xfffffe70 - adds r2, r3, r0 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - adds r1, 0xDC - ldrb r0, [r1] - lsls r0, 27 - lsrs r3, r0, 27 - movs r0, 0x58 - muls r0, r3 - ldr r1, =gApprentices+0x4A - adds r0, r1 - bl FrontierSpeechToString -_081A38F8: - pop {r0} - bx r0 - .pool - thumb_func_end CopyFrontierTrainerText - - thumb_func_start sub_81A3908 -sub_81A3908: @ 81A3908 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r2, =0x00000cdc - adds r1, r2 - movs r2, 0 - str r2, [r1] - movs r4, 0 - mov r9, r0 - mov r8, r9 - movs r6, 0 -_081A3926: - movs r5, 0 - lsls r7, r4, 2 - mov r10, r7 - adds r0, r4, 0x1 - mov r12, r0 -_081A3930: - mov r1, r8 - ldr r2, [r1] - lsls r3, r5, 1 - mov r7, r10 - adds r1, r3, r7 - movs r7, 0xCE - lsls r7, 4 - adds r0, r2, r7 - adds r0, r1 - strh r6, [r0] - cmp r4, 0x1 - bgt _081A3960 - adds r7, 0x2C - adds r0, r2, r7 - adds r0, r1 - strh r6, [r0] - adds r7, 0xBC - adds r0, r2, r7 - adds r0, r1 - strh r6, [r0] - adds r7, 0x1A - adds r0, r2, r7 - adds r0, r1 - strh r6, [r0] -_081A3960: - cmp r4, 0 - bne _081A3980 - mov r1, r8 - ldr r0, [r1] - ldr r2, =0x00000dda - adds r1, r0, r2 - adds r1, r3 - strh r4, [r1] - ldr r7, =0x00000e04 - adds r1, r0, r7 - adds r1, r3 - strh r4, [r1] - ldr r1, =0x00000e1a - adds r0, r1 - adds r0, r3 - strh r4, [r0] -_081A3980: - adds r5, 0x1 - cmp r5, 0x1 - ble _081A3930 - mov r4, r12 - cmp r4, 0x3 - ble _081A3926 - mov r2, r9 - ldr r0, [r2] - ldr r7, =0x00000ca8 - adds r1, r0, r7 - ldrb r0, [r1] - cmp r0, 0 - beq _081A399E - movs r0, 0x1 - strb r0, [r1] -_081A399E: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3908 - - thumb_func_start sub_81A39C4 -sub_81A39C4: @ 81A39C4 - push {r4,r5,lr} - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000ca9 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - lsrs r4, r0, 30 - ldr r0, =0x000040ce - bl VarGet - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x6 - bhi _081A3AC4 - lsls r0, 2 - ldr r1, =_081A3A0C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A3A0C: - .4byte _081A3A28 - .4byte _081A3A3C - .4byte _081A3A54 - .4byte _081A3A6C - .4byte _081A3A80 - .4byte _081A3A98 - .4byte _081A3AAC -_081A3A28: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - lsls r2, r5, 2 - adds r1, r2 - movs r2, 0xCE - lsls r2, 4 - b _081A3AB4 - .pool -_081A3A3C: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - lsls r2, r5, 2 - adds r1, r2 - ldr r2, =0x00000d0c - b _081A3AB4 - .pool -_081A3A54: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - lsls r2, r5, 2 - adds r1, r2 - ldr r2, =0x00000dc8 - b _081A3AB4 - .pool -_081A3A6C: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000dda - b _081A3AB4 - .pool -_081A3A80: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - lsls r2, r5, 2 - adds r1, r2 - ldr r2, =0x00000de2 - b _081A3AB4 - .pool -_081A3A98: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000e04 - b _081A3AB4 - .pool -_081A3AAC: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000e1a -_081A3AB4: - adds r0, r2 - adds r0, r1 - ldrh r0, [r0] - b _081A3AC6 - .pool -_081A3AC4: - movs r0, 0 -_081A3AC6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81A39C4 - - thumb_func_start sub_81A3ACC -sub_81A3ACC: @ 81A3ACC - push {r4,r5,lr} - movs r2, 0 - ldr r5, =gSaveBlock2Ptr - ldr r4, =0x00000cb4 - ldr r0, =0x0000ffff - adds r3, r0, 0 -_081A3AD8: - ldr r0, [r5] - lsls r1, r2, 1 - adds r0, r4 - adds r0, r1 - ldrh r1, [r0] - orrs r1, r3 - strh r1, [r0] - adds r2, 0x1 - cmp r2, 0x13 - ble _081A3AD8 - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3ACC - - thumb_func_start sub_81A3B00 -sub_81A3B00: @ 81A3B00 - push {lr} - ldr r0, =gTrainerBattleOpponent_A - ldrh r1, [r0] - ldr r0, =0x000003fe - cmp r1, r0 - bne _081A3B20 - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - b _081A3B24 - .pool -_081A3B20: - ldr r1, =gSpecialVar_Result - movs r0, 0 -_081A3B24: - strh r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3B00 - - thumb_func_start sub_81A3B30 -sub_81A3B30: @ 81A3B30 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 23 - ldr r1, =0x000008c4 - adds r0, r4, r1 - bl FlagGet - adds r5, r0, 0 - ldr r0, =0x000008c5 - adds r4, r0 - adds r0, r4, 0 - bl FlagGet - adds r5, r0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A3B30 - - thumb_func_start sub_81A3B64 -sub_81A3B64: @ 81A3B64 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r5, 0 - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000ca9 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - lsrs r4, r0, 30 - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, =0x000040ce - bl VarGet - lsls r0, 16 - lsrs r6, r0, 16 - cmp r7, 0x6 - bhi _081A3C78 - lsls r0, r7, 2 - ldr r1, =_081A3BB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A3BB4: - .4byte _081A3BD0 - .4byte _081A3BE4 - .4byte _081A3C00 - .4byte _081A3C18 - .4byte _081A3C2C - .4byte _081A3C44 - .4byte _081A3C60 -_081A3BD0: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - lsls r2, r6, 2 - adds r1, r2 - movs r2, 0xCE - lsls r2, 4 - b _081A3C68 - .pool -_081A3BE4: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - lsls r2, r6, 2 - adds r1, r2 - ldr r2, =0x00000d0c - adds r0, r2 - adds r0, r1 - ldrh r5, [r0] - b _081A3C78 - .pool -_081A3C00: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - lsls r2, r6, 2 - adds r1, r2 - ldr r2, =0x00000dc8 - b _081A3C68 - .pool -_081A3C18: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000dda - b _081A3C68 - .pool -_081A3C2C: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - lsls r2, r6, 2 - adds r1, r2 - ldr r2, =0x00000de2 - b _081A3C68 - .pool -_081A3C44: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000e04 - adds r0, r2 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0xE - b _081A3C70 - .pool -_081A3C60: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000e1a -_081A3C68: - adds r0, r2 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x7 -_081A3C70: - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 -_081A3C78: - cmp r5, 0 - beq _081A3C7E - subs r5, 0x1 -_081A3C7E: - cmp r5, 0x1D - bls _081A3C84 - movs r5, 0x1D -_081A3C84: - ldr r2, =gUnknown_086118B4 - lsls r1, r7, 2 - adds r1, r6, r1 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r1, r0 - adds r7, r1, r2 - ldrb r5, [r7] - ldr r0, =gTrainerBattleOpponent_A - mov r9, r0 - ldrh r0, [r0] - ldr r1, =0x000003fe - mov r8, r1 - cmp r0, r8 - bne _081A3CA6 - adds r5, 0xA -_081A3CA6: - ldr r6, =gSaveBlock2Ptr - ldr r1, [r6] - ldr r4, =0x00000eb8 - adds r1, r4 - ldrh r0, [r1] - adds r0, r5 - strh r0, [r1] - ldr r0, =gStringVar1 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r6] - adds r2, r0, r4 - ldrh r0, [r2] - ldr r1, =0x0000270f - cmp r0, r1 - bls _081A3CCE - strh r1, [r2] -_081A3CCE: - ldr r0, [r6] - ldr r4, =0x00000eba - adds r0, r4 - ldrh r5, [r0] - ldrb r0, [r7] - adds r5, r0 - bl sub_80EED60 - mov r2, r9 - ldrh r0, [r2] - cmp r0, r8 - bne _081A3CEE - adds r5, 0xA - movs r0, 0xA - bl sub_80EED60 -_081A3CEE: - ldr r0, =0x0000ffff - cmp r5, r0 - ble _081A3CF6 - adds r5, r0, 0 -_081A3CF6: - ldr r0, [r6] - adds r0, r4 - strh r5, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3B64 - - thumb_func_start sub_81A3D30 -sub_81A3D30: @ 81A3D30 - push {r4,lr} - ldr r0, =0x000040cf - bl VarGet - ldr r4, =gSpecialVar_Result - lsls r0, 24 - lsrs r0, 24 - bl sub_81A3B30 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3D30 - - thumb_func_start sub_81A3D58 -sub_81A3D58: @ 81A3D58 - push {r4,lr} - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_81A3B30 - lsls r0, 24 - cmp r0, 0 - bne _081A3D88 - lsls r0, r4, 17 - ldr r1, =0x8C4 << 16 - adds r0, r1 - lsrs r0, 16 - bl FlagSet - b _081A3D94 - .pool -_081A3D88: - lsls r0, r4, 17 - ldr r1, =0x8C5 << 16 - adds r0, r1 - lsrs r0, 16 - bl FlagSet -_081A3D94: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3D58 - - thumb_func_start sub_81A3DA0 -sub_81A3DA0: @ 81A3DA0 - push {lr} - ldr r0, =gBattleTypeFlags - ldr r1, =gSpecialVar_0x8005 - ldrh r1, [r1] - ldr r2, [r0] - ands r2, r1 - cmp r2, 0 - beq _081A3DC4 - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] - b _081A3DC8 - .pool -_081A3DC4: - ldr r0, =gSpecialVar_Result - strh r2, [r0] -_081A3DC8: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3DA0 - - thumb_func_start sub_81A3DD0 -sub_81A3DD0: @ 81A3DD0 - push {r4-r6,lr} - adds r5, r2, 0 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - adds r0, r6, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _081A3ED6 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - subs r0, r4, 0x1 - cmp r0, 0xA - bhi _081A3EA0 - lsls r0, 2 - ldr r1, =_081A3E0C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A3E0C: - .4byte _081A3E38 - .4byte _081A3E68 - .4byte _081A3E38 - .4byte _081A3EA0 - .4byte _081A3E38 - .4byte _081A3EA0 - .4byte _081A3E38 - .4byte _081A3EA0 - .4byte _081A3E38 - .4byte _081A3EA0 - .4byte _081A3E38 -_081A3E38: - cmp r5, r4 - bne _081A3E50 - ldr r0, =gStringVar1 - ldr r1, =gText_SpaceAndSpace - bl StringAppend - b _081A3EC8 - .pool -_081A3E50: - cmp r5, r4 - ble _081A3EC8 - ldr r0, =gStringVar1 - ldr r1, =gText_CommaSpace - bl StringAppend - b _081A3EC8 - .pool -_081A3E68: - cmp r4, r5 - bne _081A3E80 - ldr r0, =gStringVar1 - ldr r1, =gText_SpaceAndSpace - bl StringAppend - b _081A3E88 - .pool -_081A3E80: - ldr r0, =gStringVar1 - ldr r1, =gText_CommaSpace - bl StringAppend -_081A3E88: - ldr r0, =gStringVar1 - ldr r1, =gText_NewLine - bl StringAppend - b _081A3EC8 - .pool -_081A3EA0: - cmp r4, r5 - bne _081A3EB8 - ldr r0, =gStringVar1 - ldr r1, =gText_SpaceAndSpace - bl StringAppend - b _081A3EC0 - .pool -_081A3EB8: - ldr r0, =gStringVar1 - ldr r1, =gText_CommaSpace - bl StringAppend -_081A3EC0: - ldr r0, =gStringVar1 - ldr r1, =gText_ScrollTextUp - bl StringAppend -_081A3EC8: - ldr r0, =gStringVar1 - movs r1, 0xB - muls r1, r6 - ldr r2, =gSpeciesNames - adds r1, r2 - bl StringAppend -_081A3ED6: - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A3DD0 - - thumb_func_start sub_81A3EF0 -sub_81A3EF0: @ 81A3EF0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, [sp, 0x20] - ldr r4, [sp, 0x24] - mov r9, r4 - ldr r4, [sp, 0x28] - mov r10, r4 - ldr r7, [sp, 0x2C] - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r3, 24 - lsrs r3, 24 - mov r12, r3 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - movs r2, 0 - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - beq _081A3FBE - cmp r4, 0 - beq _081A3FBE - ldr r0, =gUnknown_08611C9A - ldrh r1, [r0] - ldr r5, =0x0000ffff - adds r3, r0, 0 - cmp r1, r5 - beq _081A3F54 - cmp r1, r4 - beq _081A3F48 - adds r1, r3, 0 -_081A3F3A: - adds r1, 0x2 - adds r2, 0x1 - ldrh r0, [r1] - cmp r0, r5 - beq _081A3F54 - cmp r0, r4 - bne _081A3F3A -_081A3F48: - lsls r0, r2, 1 - adds r0, r3 - ldrh r1, [r0] - ldr r0, =0x0000ffff - cmp r1, r0 - bne _081A3FBE -_081A3F54: - mov r0, r12 - cmp r0, 0 - bne _081A3F60 - mov r1, r8 - cmp r1, 0x32 - bhi _081A3FBE -_081A3F60: - movs r2, 0 - ldrb r3, [r7] - cmp r2, r3 - bge _081A3F80 - mov r1, r9 - ldrh r0, [r1] - cmp r0, r4 - beq _081A3F80 - adds r5, r3, 0 -_081A3F72: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, r5 - bge _081A3F80 - ldrh r0, [r1] - cmp r0, r4 - bne _081A3F72 -_081A3F80: - cmp r2, r3 - bne _081A3FBE - cmp r6, 0 - beq _081A3FAA - movs r2, 0 - cmp r2, r3 - bge _081A3FA6 - mov r1, r10 - ldrh r0, [r1] - cmp r0, r6 - beq _081A3FA6 - adds r5, r3, 0 -_081A3F98: - adds r1, 0x2 - adds r2, 0x1 - cmp r2, r5 - bge _081A3FA6 - ldrh r0, [r1] - cmp r0, r6 - bne _081A3F98 -_081A3FA6: - cmp r2, r3 - bne _081A3FBE -_081A3FAA: - lsls r0, r3, 1 - add r0, r9 - strh r4, [r0] - ldrb r0, [r7] - lsls r0, 1 - add r0, r10 - strh r6, [r0] - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] -_081A3FBE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3EF0 - - thumb_func_start sub_81A3FD4 -sub_81A3FD4: @ 81A3FD4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - movs r0, 0 - str r0, [sp, 0x2C] - add r4, sp, 0x28 - strb r0, [r4] - ldr r0, =0x000040ce - bl VarGet - lsls r0, 16 - lsrs r0, 16 - mov r10, r4 - cmp r0, 0x1 - beq _081A4016 - cmp r0, 0x1 - bgt _081A4008 - cmp r0, 0 - beq _081A4010 - b _081A402A - .pool -_081A4008: - cmp r0, 0x3 - bgt _081A402A - movs r0, 0x2 - b _081A4028 -_081A4010: - movs r1, 0x3 - str r1, [sp, 0x2C] - b _081A402A -_081A4016: - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - movs r1, 0x3 - str r1, [sp, 0x2C] - cmp r0, 0 - bne _081A402A - movs r0, 0x4 -_081A4028: - str r0, [sp, 0x2C] -_081A402A: - movs r1, 0 - mov r9, r1 - b _081A4040 - .pool -_081A4034: - mov r1, r10 - ldrb r0, [r1] - ldr r1, [sp, 0x2C] - cmp r0, r1 - blt _081A4040 - b _081A41E0 -_081A4040: - mov r5, r9 - movs r0, 0 - mov r1, r10 - strb r0, [r1] - mov r0, r9 - adds r0, 0x1 - str r0, [sp, 0x30] -_081A404E: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x6 - bne _081A40C8 - cmp r7, 0 - bne _081A40E4 - ldr r0, =gSpecialVar_Result - ldrb r3, [r0] - str r6, [sp] - add r1, sp, 0x10 - str r1, [sp, 0x4] - add r0, sp, 0x1C - str r0, [sp, 0x8] - mov r0, r10 - str r0, [sp, 0xC] - mov r0, r8 - movs r1, 0 - adds r2, r4, 0 - bl sub_81A3EF0 - b _081A40E4 - .pool -_081A40C8: - ldr r0, =gSpecialVar_Result - ldrb r3, [r0] - str r6, [sp] - add r1, sp, 0x10 - str r1, [sp, 0x4] - add r0, sp, 0x1C - str r0, [sp, 0x8] - mov r0, r10 - str r0, [sp, 0xC] - mov r0, r8 - adds r1, r7, 0 - adds r2, r4, 0 - bl sub_81A3EF0 -_081A40E4: - adds r5, 0x1 - cmp r5, 0x5 - ble _081A40EC - movs r5, 0 -_081A40EC: - cmp r5, r9 - bne _081A404E - ldr r1, [sp, 0x30] - mov r9, r1 - cmp r1, 0x5 - ble _081A4034 - mov r1, r10 - ldrb r0, [r1] - ldr r1, [sp, 0x2C] - cmp r0, r1 - bge _081A41E0 - movs r6, 0 - ldr r0, =gUnknown_08611C9A - ldrh r2, [r0] - ldr r1, =0x0000ffff - mov r8, r0 - cmp r2, r1 - beq _081A4134 - mov r4, r8 -_081A4112: - adds r0, r2, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _081A412A - adds r6, 0x1 -_081A412A: - adds r4, 0x2 - ldrh r2, [r4] - ldr r0, =0x0000ffff - cmp r2, r0 - bne _081A4112 -_081A4134: - ldr r1, =gStringVar1 - movs r0, 0xFF - strb r0, [r1] - ldr r1, =gSpecialVar_0x8004 - movs r0, 0x1 - strh r0, [r1] - movs r0, 0 - mov r1, r10 - strb r0, [r1] - mov r1, r8 - ldrh r0, [r1] - ldr r1, =0x0000ffff - cmp r0, r1 - beq _081A416A - mov r5, r10 - adds r7, r1, 0 - mov r4, r8 -_081A4156: - ldrh r0, [r4] - ldrb r1, [r5] - adds r2, r6, 0 - bl sub_81A3DD0 - strb r0, [r5] - adds r4, 0x2 - ldrh r0, [r4] - cmp r0, r7 - bne _081A4156 -_081A416A: - mov r0, r10 - ldrb r4, [r0] - cmp r4, 0 - bne _081A41A4 - ldr r4, =gStringVar1 - ldr r1, =gText_Space2 - adds r0, r4, 0 - bl StringAppend - ldr r1, =gText_Are - adds r0, r4, 0 - bl StringAppend - b _081A4202 - .pool -_081A41A4: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _081A41C0 - ldr r0, =gStringVar1 - ldr r1, =gText_ScrollTextUp - bl StringAppend - b _081A41C8 - .pool -_081A41C0: - ldr r0, =gStringVar1 - ldr r1, =gText_Space2 - bl StringAppend -_081A41C8: - ldr r0, =gStringVar1 - ldr r1, =gText_Are2 - bl StringAppend - b _081A4202 - .pool -_081A41E0: - ldr r1, =gSpecialVar_0x8004 - movs r0, 0 - strh r0, [r1] - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldr r0, =gSpecialVar_Result - ldrb r0, [r0] - ldr r1, =0x00000ca9 - adds r2, r1 - movs r1, 0x3 - ands r1, r0 - ldrb r3, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] -_081A4202: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A3FD4 - - thumb_func_start sub_81A4224 -sub_81A4224: @ 81A4224 - push {lr} - bl ValidateEReaderTrainer - pop {r0} - bx r0 - thumb_func_end sub_81A4224 - - thumb_func_start sub_81A4230 -sub_81A4230: @ 81A4230 - push {r4-r7,lr} - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, =0x00000ca9 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 30 - lsrs r4, r0, 30 - ldr r0, =0x000040ce - bl VarGet - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x6 - bls _081A425A - b _081A4394 -_081A425A: - lsls r0, 2 - ldr r1, =_081A4278 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_081A4278: - .4byte _081A4294 - .4byte _081A42DC - .4byte _081A431C - .4byte _081A4338 - .4byte _081A434C - .4byte _081A4368 - .4byte _081A437C -_081A4294: - ldr r7, =gSaveBlock2Ptr - ldr r0, [r7] - lsls r4, 1 - lsls r1, r5, 2 - adds r1, r4, r1 - movs r6, 0xCE - lsls r6, 4 - adds r3, r0, r6 - adds r2, r3, r1 - ldrh r1, [r2] - ldr r0, =0x0000270e - cmp r1, r0 - bhi _081A4394 - adds r0, r1, 0x1 - strh r0, [r2] - cmp r5, 0 - bne _081A4394 - adds r0, r3, r4 - ldrh r1, [r0] - movs r0, 0x20 - bl SetGameStat - ldr r1, [r7] - adds r0, r1, r6 - adds r0, r4 - ldrh r0, [r0] - ldr r2, =0x00000d02 - adds r1, r2 - b _081A4392 - .pool -_081A42DC: - ldr r6, =gSaveBlock2Ptr - ldr r0, [r6] - lsls r2, r4, 1 - lsls r1, r5, 2 - adds r1, r2, r1 - ldr r3, =0x00000d0c - adds r0, r3 - adds r3, r0, r1 - ldrh r0, [r3] - ldr r2, =0x0000270e - cmp r0, r2 - bhi _081A42F8 - adds r0, 0x1 - strh r0, [r3] -_081A42F8: - ldr r0, [r6] - ldr r3, =0x00000d1c - adds r0, r3 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, r2 - bhi _081A4394 - adds r0, 0x1 - b _081A4392 - .pool -_081A431C: - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - lsls r0, r4, 1 - lsls r1, r5, 2 - adds r0, r1 - ldr r1, =0x00000dc8 - adds r2, r1 - adds r1, r2, r0 - b _081A4388 - .pool -_081A4338: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000dda - adds r0, r2 - b _081A4386 - .pool -_081A434C: - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - lsls r0, r4, 1 - lsls r1, r5, 2 - adds r0, r1 - ldr r3, =0x00000de2 - adds r2, r3 - adds r1, r2, r0 - b _081A4388 - .pool -_081A4368: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000e04 - adds r0, r2 - b _081A4386 - .pool -_081A437C: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r3, =0x00000e1a - adds r0, r3 -_081A4386: - adds r1, r0, r1 -_081A4388: - ldrh r3, [r1] - ldr r0, =0x0000270e - cmp r3, r0 - bhi _081A4394 - adds r0, r3, 0x1 -_081A4392: - strh r0, [r1] -_081A4394: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A4230 - - thumb_func_start sub_81A43A8 -sub_81A43A8: @ 81A43A8 - push {r4-r6,lr} - sub sp, 0x4 - movs r4, 0 - ldr r6, =gSaveBlock1Ptr - movs r5, 0x64 -_081A43B2: - ldr r0, =gSaveBlock2Ptr - ldr r0, [r0] - lsls r1, r4, 1 - ldr r2, =0x00000caa - adds r0, r2 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, 0 - beq _081A43EE - adds r1, r0, 0 - muls r1, r5 - movs r0, 0xEA - lsls r0, 1 - adds r1, r0 - ldr r0, [r6] - adds r0, r1 - movs r1, 0xC - movs r2, 0 - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r4, 0 - muls r0, r5 - ldr r1, =gPlayerParty - adds r0, r1 - movs r1, 0xC - mov r2, sp - bl SetMonData -_081A43EE: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _081A43B2 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A43A8 - - thumb_func_start sub_81A4410 -sub_81A4410: @ 81A4410 - push {r4,lr} - ldr r4, =gSpecialVar_Result - bl MoveRecordedBattleToSaveData - strh r0, [r4] - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - ldr r0, =0x00000ca9 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A4410 - - thumb_func_start sub_81A443C -sub_81A443C: @ 81A443C - push {lr} - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - cmp r0, 0 - beq _081A4450 - cmp r0, 0x1 - beq _081A4464 - b _081A446E - .pool -_081A4450: - ldr r0, =gStringVar1 - ldr r1, =gTrainerBattleOpponent_A - ldrh r1, [r1] - bl GetFrontierTrainerName - b _081A446E - .pool -_081A4464: - ldr r0, =gStringVar2 - ldr r1, =gTrainerBattleOpponent_A - ldrh r1, [r1] - bl GetFrontierTrainerName -_081A446E: - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A443C - - thumb_func_start sub_81A447C -sub_81A447C: @ 81A447C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - str r0, [sp] -_081A448C: - ldr r1, =gSaveBlock2Ptr - ldr r0, [r1] - ldr r2, [sp] - lsls r1, r2, 1 - ldr r4, =0x00000caa - adds r0, r4 - adds r0, r1 - ldrh r0, [r0] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r1 - adds r2, 0x1 - str r2, [sp, 0x4] - cmp r0, 0x5 - bhi _081A454E - movs r6, 0 - ldr r0, [sp] - movs r2, 0x64 - adds r1, r0, 0 - muls r1, r2 - ldr r0, =gPlayerParty - adds r7, r1, r0 -_081A44BA: - movs r5, 0 - movs r4, 0xD - adds r4, r6 - mov r8, r4 - adds r0, r6, 0x1 - mov r10, r0 -_081A44C6: - ldr r1, =gSaveBlock2Ptr - ldr r0, [r1] - ldr r2, =0x00000caa - adds r0, r2 - add r0, r9 - ldrh r0, [r0] - movs r4, 0x64 - adds r1, r0, 0 - muls r1, r4 - movs r0, 0xEA - lsls r0, 1 - adds r1, r0 - ldr r2, =gSaveBlock1Ptr - ldr r0, [r2] - adds r0, r1 - adds r1, r5, 0 - adds r1, 0xD - movs r2, 0 - bl GetMonData - adds r4, r0, 0 - adds r0, r7, 0 - mov r1, r8 - movs r2, 0 - bl GetMonData - cmp r4, r0 - beq _081A4508 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _081A44C6 -_081A4508: - cmp r5, 0x4 - bne _081A4516 - adds r0, r7, 0 - movs r1, 0xA6 - adds r2, r6, 0 - bl SetMonMoveSlot -_081A4516: - mov r4, r10 - lsls r0, r4, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _081A44BA - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =gSaveBlock2Ptr - ldr r1, [r2] - ldr r4, =0x00000caa - adds r1, r4 - add r1, r9 - ldrh r1, [r1] - subs r1, 0x1 - movs r3, 0x64 - muls r1, r3 - adds r0, r1 - movs r1, 0x8E - lsls r1, 2 - adds r0, r1 - ldr r2, =gPlayerParty - ldr r4, [sp] - adds r1, r4, 0 - muls r1, r3 - adds r1, r2 - movs r2, 0x64 - bl memcpy -_081A454E: - ldr r1, [sp, 0x4] - lsls r0, r1, 24 - lsrs r0, 24 - str r0, [sp] - cmp r0, 0x3 - bls _081A448C - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A447C - - thumb_func_start sub_81A457C -sub_81A457C: @ 81A457C - push {lr} - ldr r0, =0x000040cf - bl VarGet - lsls r0, 24 - lsrs r0, 24 - bl sub_81A5030 - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A457C - - thumb_func_start sub_81A4594 -sub_81A4594: @ 81A4594 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - mov r8, r1 - adds r6, r3, 0 - ldr r1, =gRecordsWindowId - ldrb r5, [r1] - lsls r4, r0, 1 - adds r4, r0 - ldr r1, =gText_1Dot - adds r4, r1 - mov r1, r8 - lsls r3, r1, 27 - lsrs r3, 24 - lsls r1, r0, 2 - adds r1, r0 - adds r2, r1 - lsls r2, 3 - adds r2, 0x1 - lsls r2, 24 - lsrs r7, r2, 24 - str r7, [sp] - movs r0, 0xFF - mov r10, r0 - str r0, [sp, 0x4] - movs r1, 0 - mov r9, r1 - str r1, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl AddTextPrinterParameterized - movs r0, 0xFF - strb r0, [r6, 0xD] - ldrh r0, [r6, 0x4] - cmp r0, 0 - beq _081A465C - adds r1, r6, 0x6 - ldrb r2, [r6, 0xE] - add r0, sp, 0xC - bl TVShowConvertInternationalString - ldr r1, =gRecordsWindowId - ldrb r0, [r1] - mov r3, r8 - adds r3, 0x2 - lsls r3, 27 - lsrs r3, 24 - str r7, [sp] - mov r1, r10 - str r1, [sp, 0x4] - mov r1, r9 - str r1, [sp, 0x8] - movs r1, 0x1 - add r2, sp, 0xC - bl AddTextPrinterParameterized - ldrh r1, [r6, 0x4] - ldr r0, =0x0000270f - cmp r1, r0 - bls _081A4618 - adds r1, r0, 0 -_081A4618: - ldr r0, =gStringVar2 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r5, =gStringVar4 - ldr r1, =gUnknown_08611D08 - ldr r0, [sp, 0x4C] - lsls r0, 2 - adds r0, r1 - ldr r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xC8 - bl GetStringRightAlignXOffset - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - ldr r1, =gRecordsWindowId - ldrb r0, [r1] - str r7, [sp] - mov r1, r10 - str r1, [sp, 0x4] - mov r1, r9 - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - bl AddTextPrinterParameterized -_081A465C: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A4594 - - thumb_func_start sub_81A4684 -sub_81A4684: @ 81A4684 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - adds r6, r0, 0 - adds r7, r1, 0 - mov r10, r2 - adds r5, r3, 0 - ldr r1, =gRecordsWindowId - ldrb r0, [r1] - lsls r2, r6, 1 - adds r2, r6 - ldr r1, =gText_1Dot - adds r2, r1 - lsls r3, r7, 27 - lsrs r3, 24 - mov r12, r3 - lsls r1, r6, 2 - adds r1, r6 - mov r3, r10 - adds r4, r3, r1 - lsls r1, r4, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - movs r1, 0xFF - mov r9, r1 - str r1, [sp, 0x4] - movs r3, 0 - mov r8, r3 - str r3, [sp, 0x8] - movs r1, 0x1 - mov r3, r12 - bl AddTextPrinterParameterized - ldrh r0, [r5, 0x8] - cmp r0, 0 - beq _081A47BC - movs r0, 0xFF - strb r0, [r5, 0x11] - movs r0, 0x1 - negs r0, r0 - strb r0, [r5, 0x19] - adds r1, r5, 0 - adds r1, 0xA - ldrb r2, [r5, 0x1A] - add r0, sp, 0xC - bl TVShowConvertInternationalString - ldr r1, =gRecordsWindowId - ldrb r0, [r1] - adds r3, r7, 0x2 - lsls r3, 27 - lsrs r3, 24 - subs r1, r4, 0x1 - lsls r1, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - mov r2, r9 - str r2, [sp, 0x4] - mov r1, r8 - str r1, [sp, 0x8] - movs r1, 0x1 - add r2, sp, 0xC - bl AddTextPrinterParameterized - adds r4, r5, 0 - adds r4, 0x12 - adds r0, r4, 0 - bl IsStringJapanese - cmp r0, 0 - beq _081A4734 - add r0, sp, 0xC - adds r1, r4, 0 - movs r2, 0x1 - bl TVShowConvertInternationalString - b _081A473C - .pool -_081A4734: - add r0, sp, 0xC - adds r1, r4, 0 - bl StringCopy -_081A473C: - ldr r2, =gRecordsWindowId - mov r9, r2 - ldrb r0, [r2] - adds r3, r7, 0x4 - lsls r3, 27 - lsrs r3, 24 - lsls r1, r6, 2 - adds r1, r6 - mov r2, r10 - adds r6, r2, r1 - adds r1, r6, 0x1 - lsls r1, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - movs r1, 0xFF - mov r8, r1 - str r1, [sp, 0x4] - movs r7, 0 - str r7, [sp, 0x8] - movs r1, 0x1 - add r2, sp, 0xC - bl AddTextPrinterParameterized - ldrh r1, [r5, 0x8] - ldr r0, =0x0000270f - cmp r1, r0 - bls _081A4778 - adds r1, r0, 0 -_081A4778: - ldr r0, =gStringVar2 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r5, =gStringVar4 - ldr r0, =gUnknown_08611D08 - ldr r4, [r0, 0x24] - adds r0, r5, 0 - adds r1, r4, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xC8 - bl GetStringRightAlignXOffset - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r2, r9 - ldrb r0, [r2] - lsls r1, r6, 3 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - mov r1, r8 - str r1, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - bl AddTextPrinterParameterized -_081A47BC: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A4684 - - thumb_func_start sub_81A47E0 -sub_81A47E0: @ 81A47E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x44 - mov r9, r0 - mov r10, r1 - str r2, [sp, 0x40] - movs r0, 0xAC - lsls r0, 1 - bl AllocZeroed - mov r8, r0 - bl sub_80E8260 - add r0, sp, 0x30 - mov r12, r0 - ldr r0, =gSaveBlock2Ptr - ldr r2, [r0] - ldr r3, [sp, 0x40] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 4 - mov r4, r10 - lsls r0, r4, 1 - add r0, r10 - lsls r0, 5 - adds r1, r0 - adds r4, r1, r2 - mov r3, sp - movs r2, 0x2 -_081A4820: - adds r0, r3, 0 - movs r5, 0x87 - lsls r5, 2 - adds r1, r4, r5 - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldr r1, [r1] - str r1, [r0] - adds r4, 0x10 - adds r3, 0x10 - subs r2, 0x1 - cmp r2, 0 - bge _081A4820 - ldr r6, [sp, 0x40] - lsls r0, r6, 4 - mov r7, r10 - lsls r1, r7, 5 - adds r0, r1 - mov r1, r12 - add r0, r8 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - movs r2, 0 -_081A4852: - movs r1, 0 - movs r4, 0 - movs r3, 0 - lsls r5, r2, 4 - adds r6, r2, 0x1 - mov r2, sp -_081A485E: - ldrh r0, [r2, 0x4] - cmp r0, r1 - ble _081A4868 - adds r4, r3, 0 - adds r1, r0, 0 -_081A4868: - adds r2, 0x10 - adds r3, 0x1 - cmp r3, 0x3 - ble _081A485E - mov r0, sp - ldrh r0, [r0, 0x34] - cmp r0, r1 - blt _081A487A - movs r4, 0x3 -_081A487A: - lsls r0, r4, 4 - mov r7, sp - adds r2, r7, r0 - mov r0, r9 - adds r1, r5, r0 - adds r0, r2, 0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - movs r0, 0 - strh r0, [r2, 0x4] - adds r2, r6, 0 - cmp r2, 0x2 - ble _081A4852 - mov r0, r8 - bl Free - add sp, 0x44 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A47E0 - - thumb_func_start sub_81A48B4 -sub_81A48B4: @ 81A48B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x74 - mov r9, r0 - mov r10, r1 - movs r0, 0xAC - lsls r0, 1 - bl AllocZeroed - mov r8, r0 - bl sub_80E8260 - mov r0, sp - adds r0, 0x54 - str r0, [sp, 0x70] - add r1, sp, 0x5C - mov r12, r1 - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - movs r0, 0x54 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - adds r3, r0, r1 - mov r2, sp - movs r4, 0x2 -_081A48EE: - adds r0, r2, 0 - ldr r5, =0x0000057c - adds r1, r3, r5 - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldr r1, [r1] - str r1, [r0] - adds r3, 0x1C - adds r2, 0x1C - subs r4, 0x1 - cmp r4, 0 - bge _081A48EE - mov r6, r10 - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - add r0, r8 - ldr r1, [sp, 0x70] - movs r7, 0x90 - lsls r7, 1 - adds r0, r7 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldr r0, [r0] - str r0, [r1] - movs r4, 0 -_081A492A: - movs r1, 0 - movs r5, 0 - movs r3, 0 - lsls r6, r4, 3 - adds r7, r4, 0x1 - mov r2, sp -_081A4936: - ldrh r0, [r2, 0x8] - cmp r0, r1 - ble _081A4940 - adds r5, r3, 0 - adds r1, r0, 0 -_081A4940: - adds r2, 0x1C - adds r3, 0x1 - cmp r3, 0x2 - ble _081A4936 - mov r2, r12 - ldrh r0, [r2] - cmp r0, r1 - blt _081A4952 - movs r5, 0x3 -_081A4952: - subs r1, r6, r4 - lsls r1, 2 - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - mov r3, sp - adds r2, r3, r0 - add r1, r9 - adds r0, r2, 0 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - movs r0, 0 - strh r0, [r2, 0x8] - adds r4, r7, 0 - cmp r4, 0x2 - ble _081A492A - mov r0, r8 - bl Free - add sp, 0x74 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A48B4 - - thumb_func_start sub_81A4998 -sub_81A4998: @ 81A4998 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x94 - adds r7, r0, 0 - str r1, [sp, 0x90] - ldr r0, =gStringVar1 - ldr r4, =gUnknown_08611CB0 - lsls r5, r7, 3 - adds r1, r5, r4 - ldr r1, [r1] - bl StringCopy - ldr r6, =gStringVar4 - adds r4, 0x4 - adds r5, r4 - ldr r1, [r5] - adds r0, r6, 0 - bl StringExpandPlaceholders - ldr r0, =gRecordsWindowId - mov r8, r0 - ldrb r0, [r0] - movs r1, 0x1 - mov r10, r1 - str r1, [sp] - movs r2, 0xFF - mov r9, r2 - str r2, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - adds r2, r6, 0 - movs r3, 0 - bl AddTextPrinterParameterized - ldr r1, =gUnknown_08611D00 - ldr r2, [sp, 0x90] - lsls r0, r2, 2 - adds r0, r1 - ldr r4, [r0] - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xD0 - bl GetStringRightAlignXOffset - adds r3, r0, 0 - mov r1, r8 - ldrb r0, [r1] - lsls r3, 24 - lsrs r3, 24 - mov r2, r10 - str r2, [sp] - mov r1, r9 - str r1, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - bl AddTextPrinterParameterized - cmp r7, 0x9 - bne _081A4A6C - ldr r2, =gSaveBlock2Ptr - ldr r0, [r2] - ldr r1, =0x00000ee8 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldr r0, [r2] - movs r2, 0xEF - lsls r2, 4 - adds r0, r2 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - add r4, sp, 0x3C - adds r0, r4, 0 - ldr r1, [sp, 0x90] - bl sub_81A48B4 -_081A4A3A: - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x4 - adds r3, r4, 0 - bl sub_81A4684 - adds r4, 0x1C - adds r5, 0x1 - cmp r5, 0x2 - ble _081A4A3A - b _081A4A90 - .pool -_081A4A6C: - add r0, sp, 0xC - adds r1, r7, 0 - ldr r2, [sp, 0x90] - bl sub_81A47E0 - movs r5, 0 - add r4, sp, 0xC -_081A4A7A: - str r7, [sp] - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x4 - adds r3, r4, 0 - bl sub_81A4594 - adds r4, 0x10 - adds r5, 0x1 - cmp r5, 0x2 - ble _081A4A7A -_081A4A90: - add sp, 0x94 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81A4998 - - thumb_func_start sub_81A4AA0 -sub_81A4AA0: @ 81A4AA0 - push {r4,lr} - ldr r4, =gRecordsWindowId - ldr r0, =gUnknown_08611C84 - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - movs r1, 0 - bl sub_81A4998 - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x3 - bl CopyWindowToVram - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A4AA0 - - thumb_func_start sub_81A4AE8 -sub_81A4AE8: @ 81A4AE8 - push {r4,lr} - ldr r4, =gRecordsWindowId - ldrb r0, [r4] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, =gSpecialVar_0x8005 - ldrh r0, [r0] - movs r1, 0x1 - bl sub_81A4998 - ldrb r0, [r4] - movs r1, 0x2 - bl CopyWindowToVram - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A4AE8 - - thumb_func_start sub_81A4B14 -sub_81A4B14: @ 81A4B14 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r1, 0 - ldr r3, =gSaveBlock2Ptr -_081A4B24: - movs r6, 0 - lsls r0, r1, 1 - adds r2, r1, 0x1 - mov r10, r2 - adds r0, r1 - lsls r0, 5 - mov r8, r0 - movs r7, 0 - movs r0, 0x87 - lsls r0, 2 - add r0, r8 - mov r9, r0 -_081A4B3C: - movs r5, 0 - adds r2, r7, 0 - mov r1, r8 - adds r4, r7, r1 -_081A4B44: - ldr r0, [r3] - add r0, r9 - adds r0, r2 - lsls r1, r5, 4 - adds r0, r1 - movs r1, 0 - str r2, [sp] - str r3, [sp, 0x4] - bl CopyUnalignedWord - ldr r3, [sp, 0x4] - ldr r0, [r3] - adds r0, r4 - ldr r1, =0x00000222 - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldr r0, [r3] - adds r0, r4 - movs r1, 0x88 - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - adds r4, 0x10 - adds r5, 0x1 - ldr r2, [sp] - cmp r5, 0x2 - ble _081A4B44 - adds r7, 0x30 - adds r6, 0x1 - cmp r6, 0x1 - ble _081A4B3C - mov r1, r10 - cmp r1, 0x8 - ble _081A4B24 - movs r6, 0 - ldr r7, =gSaveBlock2Ptr - movs r2, 0x54 - mov r10, r2 - movs r3, 0xFF - mov r9, r3 -_081A4B98: - adds r0, r6, 0x1 - mov r8, r0 - mov r1, r10 - muls r1, r6 - movs r0, 0x54 - adds r4, r6, 0 - muls r4, r0 - movs r2, 0 - ldr r3, =0x0000057c - adds r6, r1, r3 - movs r5, 0x2 -_081A4BAE: - ldr r0, [r7] - adds r0, r6 - adds r0, r2 - movs r1, 0 - str r2, [sp] - bl CopyUnalignedWord - ldr r0, [r7] - adds r0, r6 - ldr r2, [sp] - adds r0, r2 - adds r0, 0x4 - movs r1, 0 - bl CopyUnalignedWord - ldr r1, [r7] - adds r1, r4 - ldr r0, =0x00000586 - adds r1, r0 - ldrb r0, [r1] - mov r3, r9 - orrs r0, r3 - strb r0, [r1] - ldr r1, [r7] - adds r1, r4 - ldr r0, =0x0000058e - adds r1, r0 - ldrb r0, [r1] - orrs r0, r3 - strb r0, [r1] - ldr r0, [r7] - adds r0, r4 - ldr r1, =0x00000584 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - adds r4, 0x1C - ldr r2, [sp] - adds r2, 0x1C - subs r5, 0x1 - cmp r5, 0 - bge _081A4BAE - mov r6, r8 - cmp r6, 0x1 - ble _081A4B98 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A4B14 - - thumb_func_start sub_81A4C30 -sub_81A4C30: @ 81A4C30 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0x96 - lsls r0, 2 - bl AllocZeroed - adds r7, r0, 0 - adds r4, r7, 0 - movs r5, 0 - movs r0, 0xFA - lsls r0, 1 - adds r6, r7, r0 - ldr r0, =gPlayerParty - mov r8, r0 -_081A4C4E: - mov r0, r8 - adds r1, r5, r0 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy - adds r4, 0x64 - adds r5, 0x64 - cmp r4, r6 - ble _081A4C4E - ldr r4, =gPlayerPartyCount - ldrb r5, [r4] - bl LoadPlayerParty - bl sub_8076D5C - movs r0, 0x1 - bl TrySavingData - bl sav2_gender2_inplace_and_xFE - strb r5, [r4] - adds r4, r7, 0 - ldr r5, =gPlayerParty - movs r0, 0xFA - lsls r0, 1 - adds r6, r7, r0 -_081A4C84: - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy - adds r4, 0x64 - adds r5, 0x64 - cmp r4, r6 - ble _081A4C84 - adds r0, r7, 0 - bl Free - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A4C30 - - thumb_func_start GetFrontierBrainTrainerPicIndex -GetFrontierBrainTrainerPicIndex: @ 81A4CB0 - push {lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _081A4CD0 - bl GetRecordedBattleFrontierFacility - lsls r0, 24 - lsrs r0, 24 - b _081A4CDA - .pool -_081A4CD0: - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r0, 16 -_081A4CDA: - ldr r2, =gTrainers - ldr r1, =gFacilityToBrainTrainerId - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x3] - pop {r1} - bx r1 - .pool - thumb_func_end GetFrontierBrainTrainerPicIndex - - thumb_func_start GetFrontierBrainTrainerClass -GetFrontierBrainTrainerClass: @ 81A4D00 - push {lr} - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _081A4D20 - bl GetRecordedBattleFrontierFacility - lsls r0, 24 - lsrs r0, 24 - b _081A4D2A - .pool -_081A4D20: - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r0, 16 -_081A4D2A: - ldr r2, =gTrainers - ldr r1, =gFacilityToBrainTrainerId - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x1] - pop {r1} - bx r1 - .pool - thumb_func_end GetFrontierBrainTrainerClass - - thumb_func_start CopyFrontierBrainTrainerName -CopyFrontierBrainTrainerName: @ 81A4D50 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _081A4D70 - bl GetRecordedBattleFrontierFacility - lsls r0, 24 - lsrs r0, 24 - b _081A4D7A - .pool -_081A4D70: - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r0, 16 -_081A4D7A: - movs r3, 0 - lsls r0, 1 - ldr r2, =gTrainers - ldr r1, =gFacilityToBrainTrainerId - adds r0, r1 - ldrh r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r2, 0x4 - adds r2, r0, r2 -_081A4D90: - adds r1, r4, r3 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x6 - ble _081A4D90 - adds r1, r4, r3 - movs r0, 0xFF - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end CopyFrontierBrainTrainerName - - thumb_func_start IsFrontierBrainFemale -IsFrontierBrainFemale: @ 81A4DB8 - push {lr} - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - ldr r1, =gUnknown_08611C8C - lsrs r0, 15 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - pop {r1} - bx r1 - .pool - thumb_func_end IsFrontierBrainFemale - - thumb_func_start SetFrontierBrainTrainerGfxId -SetFrontierBrainTrainerGfxId: @ 81A4DD8 - push {lr} - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - ldr r2, =0x00004010 - ldr r1, =gUnknown_08611C8C - lsrs r0, 15 - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - bl VarSet - pop {r0} - bx r0 - .pool - thumb_func_end SetFrontierBrainTrainerGfxId - - thumb_func_start CreateFrontierBrainPokemon -CreateFrontierBrainPokemon: @ 81A4E04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x44 - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x20] - bl sub_81A513C - str r0, [sp, 0x24] - ldr r0, [sp, 0x20] - cmp r0, 0x1 - bne _081A4E44 - ldr r0, =0x000003fe - bl TrainerIdToDomeTournamentId - lsls r0, 16 - lsrs r0, 16 - bl GetTrainerMonCountInBits - adds r4, r0, 0 - b _081A4E46 - .pool -_081A4E44: - movs r4, 0x7 -_081A4E46: - bl ZeroEnemyPartyMons - movs r1, 0 - str r1, [sp, 0x18] - bl SetFacilityPtrsGetLevel - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x1C] - movs r2, 0 - str r2, [sp, 0x14] -_081A4E5C: - movs r0, 0x1 - ands r0, r4 - asrs r4, 1 - str r4, [sp, 0x30] - ldr r3, [sp, 0x14] - adds r3, 0x1 - str r3, [sp, 0x28] - cmp r0, 0 - bne _081A4E70 - b _081A4FC4 -_081A4E70: - ldr r4, [sp, 0x14] - lsls r4, 2 - mov r9, r4 - ldr r0, [sp, 0x24] - lsls r0, 4 - str r0, [sp, 0x38] - ldr r1, [sp, 0x20] - lsls r1, 4 - str r1, [sp, 0x34] - ldr r2, [sp, 0x1C] - lsls r2, 24 - str r2, [sp, 0x3C] - ldr r3, [sp, 0x18] - adds r3, 0x1 - str r3, [sp, 0x2C] - ldr r0, [sp, 0x14] - add r0, r9 - lsls r0, 2 - mov r8, r0 -_081A4E96: - bl Random - adds r4, r0, 0 - bl Random - lsls r4, 16 - lsrs r7, r4, 16 - lsls r0, 16 - orrs r7, r0 - ldr r0, =0x0000ef2a - adds r1, r7, 0 - bl IsShinyOtIdPersonality - lsls r0, 24 - cmp r0, 0 - bne _081A4E96 - ldr r4, [sp, 0x38] - ldr r1, [sp, 0x24] - subs r0, r4, r1 - lsls r5, r0, 2 - mov r2, r8 - adds r4, r2, r5 - ldr r3, [sp, 0x34] - ldr r1, [sp, 0x20] - subs r0, r3, r1 - lsls r6, r0, 3 - adds r4, r6 - ldr r2, =gUnknown_0861156C - adds r4, r2 - adds r0, r7, 0 - bl GetNatureFromPersonality - ldrb r1, [r4, 0x5] - lsls r0, 24 - lsrs r0, 24 - cmp r1, r0 - bne _081A4E96 - ldr r4, [sp, 0x18] - movs r0, 0x64 - adds r3, r4, 0 - muls r3, r0 - mov r8, r3 - ldr r1, =gEnemyParty - add r1, r8 - mov r10, r1 - ldr r4, [sp, 0x14] - add r4, r9 - lsls r4, 2 - adds r0, r4, r5 - adds r0, r6 - ldr r2, =gUnknown_0861156C - adds r0, r2 - ldrh r1, [r0] - ldr r3, [sp, 0x3C] - lsrs r2, r3, 24 - ldrb r3, [r0, 0x4] - movs r0, 0x1 - str r0, [sp] - str r7, [sp, 0x4] - str r0, [sp, 0x8] - ldr r0, =0x0000ef2a - str r0, [sp, 0xC] - mov r0, r10 - bl CreateMon - ldr r0, =gUnknown_0861156C - adds r5, r0 - adds r5, r6, r5 - adds r4, r5, r4 - adds r4, 0x2 - mov r0, r10 - movs r1, 0xC - adds r2, r4, 0 - bl SetMonData - movs r7, 0 - mov r6, r8 - ldr r3, =gEnemyParty -_081A4F32: - adds r1, r7, 0 - adds r1, 0x1A - ldr r0, [sp, 0x14] - add r0, r9 - lsls r4, r0, 2 - adds r2, r5, r4 - adds r0, r7, 0x6 - adds r2, r0 - adds r0, r6, r3 - str r3, [sp, 0x40] - bl SetMonData - adds r7, 0x1 - ldr r3, [sp, 0x40] - cmp r7, 0x5 - ble _081A4F32 - movs r1, 0xFF - add r0, sp, 0x10 - strb r1, [r0] - movs r7, 0 - ldr r1, [sp, 0x18] - movs r2, 0x64 - adds r6, r1, 0 - muls r6, r2 - ldr r3, =gUnknown_08611578 - mov r8, r3 - ldr r3, =gEnemyParty - adds r5, r4, 0 -_081A4F6A: - ldr r4, [sp, 0x38] - ldr r0, [sp, 0x24] - subs r1, r4, r0 - lsls r1, 2 - adds r1, r5, r1 - ldr r2, [sp, 0x34] - ldr r4, [sp, 0x20] - subs r0, r2, r4 - lsls r0, 3 - adds r1, r0 - add r1, r8 - ldrh r4, [r1] - lsls r2, r7, 24 - lsrs r2, 24 - adds r0, r6, r3 - adds r1, r4, 0 - str r3, [sp, 0x40] - bl SetMonMoveSlot - ldr r3, [sp, 0x40] - cmp r4, 0xDA - bne _081A4F9C - movs r1, 0 - add r0, sp, 0x10 - strb r1, [r0] -_081A4F9C: - adds r5, 0x2 - adds r7, 0x1 - cmp r7, 0x3 - ble _081A4F6A - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r4, r0, 0 - muls r4, r1 - ldr r0, =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x20 - add r2, sp, 0x10 - bl SetMonData - adds r0, r4, 0 - bl CalculateMonStats - ldr r2, [sp, 0x2C] - str r2, [sp, 0x18] -_081A4FC4: - ldr r4, [sp, 0x30] - ldr r3, [sp, 0x28] - str r3, [sp, 0x14] - cmp r3, 0x2 - bgt _081A4FD0 - b _081A4E5C -_081A4FD0: - add sp, 0x44 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end CreateFrontierBrainPokemon - - thumb_func_start sub_81A4FF0 -sub_81A4FF0: @ 81A4FF0 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =0x000040cf - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - bl sub_81A513C - ldr r3, =gUnknown_0861156C - lsls r2, r4, 2 - adds r2, r4 - lsls r1, r0, 4 - subs r1, r0 - adds r1, r2 - lsls r1, 2 - lsls r0, r5, 4 - subs r0, r5 - lsls r0, 3 - adds r1, r0 - adds r1, r3 - ldrh r0, [r1] - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A4FF0 - - thumb_func_start sub_81A5030 -sub_81A5030: @ 81A5030 - push {lr} - lsls r0, 24 - ldr r2, =gTrainerBattleOpponent_A - ldr r3, =0x000003fe - adds r1, r3, 0 - strh r1, [r2] - ldr r2, =0x00004010 - ldr r1, =gUnknown_08611C8C - lsrs r0, 23 - adds r0, r1 - ldrb r1, [r0] - adds r0, r2, 0 - bl VarSet - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A5030 - - thumb_func_start sub_81A5060 -sub_81A5060: @ 81A5060 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =0x000040cf - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - bl sub_81A513C - ldr r2, =gUnknown_0861156C - lsls r4, 1 - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 2 - adds r4, r1 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 2 - adds r4, r1 - lsls r0, r5, 4 - subs r0, r5 - lsls r0, 3 - adds r4, r0 - adds r2, 0xC - adds r4, r2 - ldrh r0, [r4] - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A5060 - - thumb_func_start sub_81A50B0 -sub_81A50B0: @ 81A50B0 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =0x000040cf - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - bl sub_81A513C - ldr r3, =gUnknown_0861156C - lsls r2, r4, 2 - adds r2, r4 - lsls r1, r0, 4 - subs r1, r0 - adds r1, r2 - lsls r1, 2 - lsls r0, r5, 4 - subs r0, r5 - lsls r0, 3 - adds r1, r0 - adds r1, r3 - ldrb r0, [r1, 0x5] - pop {r4,r5} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A50B0 - - thumb_func_start sub_81A50F0 -sub_81A50F0: @ 81A50F0 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r0, =0x000040cf - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - bl sub_81A513C - ldr r2, =gUnknown_0861156C - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 2 - adds r4, r1 - lsls r1, r0, 4 - subs r1, r0 - lsls r1, 2 - adds r4, r1 - lsls r0, r5, 4 - subs r0, r5 - lsls r0, 3 - adds r4, r0 - adds r2, 0x6 - adds r4, r2 - ldrb r0, [r4] - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end sub_81A50F0 - - thumb_func_start sub_81A513C -sub_81A513C: @ 81A513C - push {r4,r5,lr} - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r5, 24 - lsrs r0, 24 - bl sub_81A3B30 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bne _081A51A0 - bl sub_81A39C4 - lsls r0, 16 - ldr r3, =gUnknown_08611550 - lsls r2, r5, 2 - adds r1, r3, 0x3 - adds r1, r2, r1 - lsrs r0, 16 - ldrb r1, [r1] - adds r1, r0, r1 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r1, r0 - bne _081A5180 - movs r4, 0 - b _081A51A0 - .pool -_081A5180: - adds r0, r3, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r1, r0 - beq _081A519E - cmp r1, r0 - ble _081A51A0 - subs r0, r1, r0 - adds r1, r3, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - bl __modsi3 - cmp r0, 0 - bne _081A51A0 -_081A519E: - movs r4, 0x1 -_081A51A0: - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81A513C - - thumb_func_start sub_81A51A8 -sub_81A51A8: @ 81A51A8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 17 - ands r0, r1 - cmp r0, 0 - beq _081A51D4 - bl GetRecordedBattleFrontierFacility - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8185EAC - lsls r0, 24 - lsrs r1, r0, 24 - b _081A51E4 - .pool -_081A51D4: - ldr r0, =0x000040cf - bl VarGet - lsls r0, 16 - lsrs r4, r0, 16 - bl sub_81A513C - adds r1, r0, 0 -_081A51E4: - cmp r5, 0 - beq _081A51F4 - cmp r5, 0x1 - beq _081A5214 - b _081A5228 - .pool -_081A51F4: - ldr r0, =gStringVar4 - ldr r2, =gUnknown_08611DB0 - lsls r1, 2 - adds r1, r2 - ldr r2, [r1] - lsls r1, r4, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - b _081A5228 - .pool -_081A5214: - ldr r0, =gStringVar4 - ldr r2, =gUnknown_08611DB8 - lsls r1, 2 - adds r1, r2 - ldr r2, [r1] - lsls r1, r4, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy -_081A5228: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81A51A8 + thumb_func_start sub_81A5238 sub_81A5238: @ 81A5238 @@ -10392,7 +3664,7 @@ _081A7108: b _081A70D6 _081A710E: movs r0, 0x5 - bl sub_81A5030 + bl SetFrontierBrainEventObjGfx _081A7114: movs r7, 0x1C movs r4, 0 @@ -12955,7 +6227,7 @@ sub_81A8590: @ 81A8590 lsls r0, 16 lsrs r4, r0, 16 movs r0, 0x5 - bl sub_81A3B30 + bl GetPlayerSymbolCountForFacility lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 diff --git a/asm/party_menu.s b/asm/party_menu.s index 53a66378c..8ee815968 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -15615,7 +15615,7 @@ _081B8618: bl GetMonData lsls r0, 16 lsrs r4, r0, 16 - ldr r3, =gUnknown_08611C9A + ldr r3, =gFrontierBannedSpecies lsls r1, r6, 1 adds r0, r1, r3 ldrh r0, [r0] diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s index 1c02f93cd..b45639c13 100644 --- a/asm/rom_8011DC0.s +++ b/asm/rom_8011DC0.s @@ -11490,7 +11490,7 @@ _0801B628: ldr r1, [r0] adds r1, 0xA adds r0, r4, 0 - bl CopyUnalignedWord + bl CopyTrainerId mov r2, r8 ldr r1, [r2] adds r0, r6, 0 diff --git a/data/battle_frontier_2.s b/data/battle_frontier_2.s index 51b62461d..cbd38a119 100644 --- a/data/battle_frontier_2.s +++ b/data/battle_frontier_2.s @@ -7,120 +7,6 @@ .section .rodata .align 2 -gUnknown_08611550:: @ 8611550 - .byte 0x23, 0x46, 0x23, 0x01, 0x04, 0x09, 0x05, 0x00, 0x15, 0x2a, 0x15, 0x01, 0x1c, 0x38, 0x1c, 0x01, 0x15, 0x2a, 0x15, 0x01, 0x1c, 0x8c, 0x38, 0x01, 0x15, 0x46, 0x23, 0x00 - - .align 2 -gUnknown_0861156C:: @ 861156C - .byte 0x41, 0x00, 0xb3, 0x00, 0x18, 0x0f, 0x6a, 0x00, 0x98, 0x98, 0x64, 0x00 - - .align 2 -gUnknown_08611578:: @ 8611578 - .2byte 0x0009, 0x0007, 0x0008, 0x0032, 0x00f4, 0x008d, 0x0118, 0x9864, 0x0098, 0x0664, 0x007e, 0x015b, 0x00d8, 0x002e, 0x008f, 0x00b7 - .2byte 0x0318, 0x9898, 0x0000, 0x646a, 0x0022, 0x00bb, 0x0119, 0x00f7, 0x00f3, 0x008d, 0x0f1f, 0x009e, 0x64fc, 0x0000, 0x0055, 0x015b - .2byte 0x0073, 0x009c, 0x0198, 0x00b3, 0x0f1f, 0x00fc, 0x06fc, 0x0000, 0x005e, 0x015b, 0x0069, 0x0151, 0x008f, 0x0086, 0x031f, 0xfcfc - .2byte 0x0000, 0x0006, 0x00ae, 0x00d8, 0x009c, 0x00f7, 0x011d, 0x00c4, 0x0214, 0x9898, 0x006a, 0x0064, 0x0039, 0x0059, 0x003a, 0x0044 - .2byte 0x018d, 0x008d, 0x0314, 0x9898, 0x646a, 0x0000, 0x0059, 0x0118, 0x0151, 0x014c, 0x0006, 0x00b4, 0x1114, 0x9864, 0x986a, 0x0000 - .2byte 0x013b, 0x009d, 0x014c, 0x0059, 0x011d, 0x00c8, 0x021f, 0xfcfc, 0x0006, 0x0000, 0x0039, 0x0059, 0x003a, 0x00f3, 0x0190, 0x00b7 - .2byte 0x021f, 0xfcfc, 0x0006, 0x0000, 0x005e, 0x0135, 0x0059, 0x00b6, 0x0197, 0x0086, 0x0f1f, 0x00fc, 0x06fc, 0x0000, 0x0055, 0x005e - .2byte 0x015b, 0x009c, 0x00a9, 0x00b3, 0x0310, 0x0098, 0x9800, 0x6a64, 0x006d, 0x0068, 0x005c, 0x0013, 0x016e, 0x00c6, 0x0010, 0x9898 - .2byte 0x6a00, 0x0064, 0x0059, 0x00cf, 0x00f7, 0x0118, 0x0083, 0x00b7, 0x1110, 0x0000, 0x00fc, 0x986a, 0x003a, 0x0020, 0x006d, 0x00b6 - .2byte 0x003b, 0x00b4, 0x0b1f, 0xfc06, 0x00fc, 0x0000, 0x013b, 0x00f5, 0x002e, 0x00b6, 0x016e, 0x00c6, 0x001f, 0xfc06, 0xfc00, 0x0000 - .2byte 0x003f, 0x0059, 0x00f7, 0x0119, 0x00f5, 0x00bb, 0x0b1f, 0x00fc, 0x06fc, 0x0000, 0x003b, 0x0039, 0x002c, 0x015b, 0x00d6, 0x00aa - .2byte 0x0d14, 0x986a, 0x9800, 0x6400, 0x00e0, 0x013d, 0x00cb, 0x00b3, 0x00c5, 0x00c8, 0x1414, 0x0098, 0x0064, 0x6a98, 0x0022, 0x006d - .2byte 0x005e, 0x00b9, 0x012f, 0x00b3, 0x0314, 0xfc00, 0xfc06, 0x0000, 0x00f7, 0x00d8, 0x006d, 0x014c, 0x00c5, 0x0086, 0x141f, 0x00fc - .2byte 0x0000, 0x06fc, 0x0026, 0x006d, 0x009c, 0x005e, 0x005e, 0x00c8, 0x0f1f, 0x00fc, 0x00fc, 0x0006, 0x005e, 0x005f, 0x008a, 0x00c2 - .2byte 0x0133, 0x008d, 0x0d1f, 0xfc06, 0xfc00, 0x0000, 0x0093, 0x0108, 0x00ca, 0x001d, 0x018f, 0x008e, 0x021f, 0xfc00, 0x00fc, 0x0006 - .2byte 0x0071, 0x005e, 0x0073, 0x00e8, 0x00e3, 0x008e, 0x081f, 0x00fc, 0x0000, 0xfc06, 0x005c, 0x014c, 0x00b6, 0x00d3, 0x0180, 0x008e - .2byte 0x031f, 0xfc00, 0x0000, 0x06fc, 0x0055, 0x00b6, 0x004c, 0x0151, 0x018f, 0x008e, 0x021f, 0xfc00, 0x00fc, 0x0006, 0x0071, 0x005e - .2byte 0x0073, 0x00e8, 0x00e3, 0x008e, 0x081f, 0x00fc, 0x0000, 0xfc06, 0x005c, 0x014c, 0x00b6, 0x00d3, 0x0180, 0x008e, 0x031f, 0xfc00 - .2byte 0x0000, 0x06fc, 0x0055, 0x00b6, 0x004c, 0x0151, 0x017b, 0x00b7, 0x0210, 0x00fc, 0x00fc, 0x0006, 0x00cf, 0x00f2, 0x0131, 0x00ca - .2byte 0x00d5, 0x0086, 0x0510, 0x00fc, 0x0000, 0xfc6a, 0x005c, 0x00c9, 0x00b6, 0x009c, 0x0149, 0x00c8, 0x0f10, 0x0098, 0x0064, 0x6a98 - .2byte 0x003a, 0x00f3, 0x0039, 0x0069, 0x017b, 0x00c4, 0x051f, 0x00fc, 0x0000, 0x06fc, 0x00cf, 0x00f2, 0x00bc, 0x00ca, 0x00d0, 0x00b3 - .2byte 0x021f, 0x00fc, 0x0000, 0xfc06, 0x0059, 0x009d, 0x0099, 0x0067, 0x0082, 0x0086, 0x031f, 0x06fc, 0x0000, 0xfc00, 0x015d, 0x00d8 - .2byte 0x002e, 0x009c, 0x0191, 0x00b7, 0x0310, 0x9898, 0x0000, 0x646a, 0x0099, 0x0114, 0x0059, 0x00f6, 0x0193, 0x00c8, 0x0310, 0x9898 - .2byte 0x0000, 0xc806, 0x0059, 0x00e8, 0x005c, 0x014e, 0x0192, 0x0086, 0x0f10, 0x006a, 0x0098, 0x9864, 0x003a, 0x0085, 0x0057, 0x009c - .2byte 0x0090, 0x00c6, 0x101f, 0x0006, 0xfcfc, 0x0000, 0x003b, 0x0160, 0x014c, 0x0073, 0x0091, 0x008d, 0x101f, 0x0006, 0xfcfc, 0x0000 - .2byte 0x0057, 0x00c5, 0x0041, 0x0071, 0x0092, 0x00b3, 0x101f, 0x0006, 0xfcfc, 0x0000, 0x007e, 0x003f, 0x014c, 0x00db - -gUnknown_086118B4:: @ 86118B4 - .byte 0x01, 0x02, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x03, 0x04, 0x04 - .byte 0x01, 0x01, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x04, 0x05, 0x05, 0x02, 0x02, 0x00, 0x00 - .byte 0x05, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x05, 0x06, 0x06, 0x02, 0x02, 0x00, 0x00, 0x05, 0x06, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x06, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x06, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x05, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x07, 0x08, 0x08, 0x03, 0x03, 0x00, 0x00, 0x06, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x06, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x08, 0x09, 0x09, 0x04, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x09, 0x0a, 0x0a, 0x04, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x09, 0x0a, 0x0b, 0x0b, 0x05, 0x05, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0c - .byte 0x05, 0x05, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0b, 0x0c, 0x0d, 0x0d, 0x06, 0x06, 0x00, 0x00 - .byte 0x09, 0x0a, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x0d, 0x0e, 0x0e, 0x06, 0x06, 0x00, 0x00, 0x09, 0x0a, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x0f, 0x0f, 0x07, 0x07, 0x00, 0x00, 0x0a, 0x0b, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 - .byte 0x09, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x07, 0x07, 0x00, 0x00, 0x0a, 0x0b, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x0a, 0x00, 0x00 - .byte 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x08, 0x00, 0x00, 0x0b, 0x0c, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x0b, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00 - .byte 0x0c, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x08, 0x00, 0x00, 0x0b, 0x0c, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x0b, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 - .byte 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x09, 0x00, 0x00, 0x0c, 0x0d, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f - .byte 0x09, 0x09, 0x00, 0x00, 0x0c, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x0a, 0x00, 0x00 - .byte 0x0d, 0x0e, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x0a, 0x00, 0x00, 0x0d, 0x0e, 0x00, 0x00 - .byte 0x0e, 0x00, 0x00, 0x00, 0x0c, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x0b, 0x00, 0x00, 0x0e, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00 - .byte 0x0d, 0x0e, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x0b, 0x00, 0x00, 0x0e, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0d, 0x0e, 0x00, 0x00 - .byte 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00 - .byte 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00 - .byte 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x0d, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f - .byte 0x0d, 0x0d, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x00, 0x00 - .byte 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00 - .byte 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00 - .byte 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00 - .byte 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00 - - .align 2 -gUnknown_08611BFC:: @ 8611BFC - .2byte 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000 - - .align 2 -gUnknown_08611C18:: @ 8611C18 - .4byte sub_81A17A0 - .4byte sub_81A1830 - .4byte sub_81A1968 - .4byte sub_81A1AD4 - .4byte sub_81A1B1C - .4byte sub_81A1B28 - .4byte sub_81A1B38 - .4byte sub_81A1B98 - .4byte sub_81A31FC - .4byte sub_81A35EC - .4byte sub_81A3B00 - .4byte sub_81A3B64 - .4byte sub_81A3D30 - .4byte sub_81A3D58 - .4byte sub_81A3DA0 - .4byte sub_81A3FD4 - .4byte sub_81A4224 - .4byte sub_81A4230 - .4byte sub_81A43A8 - .4byte sub_81A4410 - .4byte sub_81A443C - .4byte sub_81A447C - .4byte sub_81A457C - - .align 2 -gUnknown_08611C74:: @ 8611C74 - window_template 0x00, 0x01, 0x01, 0x1c, 0x12, 0x0f, 0x0001 - - .align 2 -gUnknown_08611C7C:: @ 8611C7C - window_template 0x00, 0x02, 0x02, 0x1a, 0x0f, 0x0f, 0x0001 - - .align 2 -gUnknown_08611C84:: @ 8611C84 - window_template 0x00, 0x02, 0x01, 0x1a, 0x11, 0x0f, 0x0001 - -gUnknown_08611C8C:: @ 8611C8C - .byte 0x46, 0x01, 0x47, 0x00, 0x49, 0x00, 0x48, 0x01, 0x4a, 0x00, 0x4b, 0x01, 0xea, 0x00 - -gUnknown_08611C9A:: @ 8611C9A - .2byte 0x0097, 0x0096, 0x00fa, 0x00f9, 0x00fb, 0x0194, 0x0195, 0x0196, 0x0199, 0x019a, 0xffff - - .align 2 gUnknown_08611CB0:: @ 8611CB0 .4byte gText_BattleTower2 .4byte gUnknown_085ED164 diff --git a/data/event_scripts.s b/data/event_scripts.s index 4534ccf13..d35feb111 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -10302,12 +10302,12 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_2C3F6F:: @ 82C3F6F special sub_81A703C setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 0 special sub_81A703C setvar VAR_0x8004, 5 @@ -10383,12 +10383,12 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_2C40A2:: @ 82C40A2 special sub_81A703C setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 3 special sub_81A703C compare VAR_RESULT, 1 @@ -10447,12 +10447,12 @@ BattleFrontier_BattlePikeRandomRoom3_EventScript_2C4174:: @ 82C4174 special sub_81A703C setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 3 special sub_81A703C compare VAR_RESULT, 1 @@ -10479,7 +10479,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_2C4222:: @ 82C4222 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc warp MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY, 255, 5, 6 waitstate end @@ -10489,7 +10489,7 @@ BattleFrontier_BattlePikeThreePathRoom_MapScript1_2C423E: @ 82C423E setorcopyvar VAR_0x8006, VAR_RESULT setvar VAR_0x8004, 1 setvar VAR_0x8005, 0 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattlePikeThreePathRoom_EventScript_2C426B compare VAR_RESULT, 1 @@ -10503,7 +10503,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_2C426B:: @ 82C426B BattleFrontier_BattlePikeRandomRoom3_EventScript_2C4271:: @ 82C4271 BattleFrontier_BattlePikeThreePathRoom_EventScript_2C4271:: @ 82C4271 setvar VAR_0x8004, 21 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattlePikeRandomRoom1_Movement_2C427A: @ 82C427A @@ -11665,7 +11665,7 @@ TrainerHill_Roof_MapScript1_2C8336: @ 82C8336 special sp194_trainer_tower setvar VAR_0x8004, 1 setvar VAR_0x8005, 5 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq TrainerHill_1F_EventScript_2C83C9 compare VAR_RESULT, 3 diff --git a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc index 888ca9878..69df3aca2 100644 --- a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc @@ -11,7 +11,7 @@ BattleFrontier_BattleArenaBattleRoom_MapScript1_25749C: @ 825749C BattleFrontier_BattleArenaBattleRoom_MapScript1_2574A0: @ 82574A0 setvar VAR_0x8004, 5 - special sub_81A1780 + special CallFrontierUtilFunc call BattleFrontier_BattleArenaBattleRoom_EventScript_2574AE end @@ -42,7 +42,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_2574DC:: @ 82574DC waitmovement 0 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleArenaBattleRoom_EventScript_25752E applymovement 5, BattleFrontier_BattleArenaBattleRoom_Movement_257C08 @@ -51,7 +51,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_2574DC:: @ 82574DC setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleArenaBattleRoom_EventScript_2576B0 BattleFrontier_BattleArenaBattleRoom_EventScript_25752E:: @ 825752E @@ -112,7 +112,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257615:: @ 8257615 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc warp MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY, 255, 7, 8 waitstate @@ -120,12 +120,12 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257630:: @ 8257630 call BattleFrontier_BattleArenaBattleRoom_EventScript_257BA9 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 7, BattleFrontier_BattleArenaBattleRoom_EventScript_257852 applymovement 8, BattleFrontier_BattleArenaBattleRoom_Movement_257BE7 @@ -140,20 +140,20 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257630:: @ 8257630 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc playfanfare MUS_ME_ASA waitfanfare special HealPlayerParty BattleFrontier_BattleArenaBattleRoom_EventScript_2576B0:: @ 82576B0 setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc copyvar VAR_TEMP_F, VAR_RESULT compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleArenaBattleRoom_EventScript_2578BC setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 call_if 1, BattleFrontier_BattleArenaBattleRoom_EventScript_257870 compare VAR_RESULT, 2 @@ -227,7 +227,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257852:: @ 8257852 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc warp MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY, 255, 7, 8 waitstate @@ -271,7 +271,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_25789A:: @ 825789A waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleArenaBattleRoom_EventScript_2578BC:: @ 82578BC @@ -332,14 +332,14 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257961:: @ 8257961 case 4, BattleFrontier_BattleArenaBattleRoom_EventScript_257AF8 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleArenaBattleRoom_EventScript_257A3F msgbox BattleFrontier_BattleArenaBattleRoom_Text_25801C, 4 closemessage setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc applymovement 7, BattleFrontier_BattleArenaBattleRoom_Movement_257C30 waitmovement 0 msgbox BattleFrontier_BattleArenaBattleRoom_Text_25804E, 4 @@ -358,7 +358,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257A3F:: @ 8257A3F BattleFrontier_BattleArenaBattleRoom_EventScript_257A5C:: @ 8257A5C call BattleFrontier_BattleArenaBattleRoom_EventScript_257BA9 setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleArenaBattleRoom_EventScript_257852 applymovement 7, BattleFrontier_BattleArenaBattleRoom_Movement_257BF1 @@ -369,21 +369,21 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257A5C:: @ 8257A5C waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleArenaBattleRoom_Text_2581CF, 4 goto BattleFrontier_BattleArenaBattleRoom_EventScript_257852 BattleFrontier_BattleArenaBattleRoom_EventScript_257AA5:: @ 8257AA5 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleArenaBattleRoom_EventScript_257AF8 msgbox BattleFrontier_BattleArenaBattleRoom_Text_258213, 4 closemessage setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc applymovement 7, BattleFrontier_BattleArenaBattleRoom_Movement_257C30 waitmovement 0 msgbox BattleFrontier_BattleArenaBattleRoom_Text_2582A2, 4 @@ -402,7 +402,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257AF8:: @ 8257AF8 BattleFrontier_BattleArenaBattleRoom_EventScript_257B15:: @ 8257B15 call BattleFrontier_BattleArenaBattleRoom_EventScript_257BA9 setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattleArenaBattleRoom_EventScript_257852 applymovement 7, BattleFrontier_BattleArenaBattleRoom_Movement_257BF1 @@ -413,7 +413,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257B15:: @ 8257B15 waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleArenaBattleRoom_Text_258383, 4 goto BattleFrontier_BattleArenaBattleRoom_EventScript_257852 @@ -429,17 +429,17 @@ FallarborTown_BattleTentBattleRoom_EventScript_257B6C:: @ 8257B6C setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_ARENA setvar VAR_0x8005, 0 special DoSpecialTrainerBattle waitstate setvar VAR_0x8004, 18 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, 21 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattleArenaBattleRoom_EventScript_257BA9:: @ 8257BA9 diff --git a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc index 9ef9a2812..710dd1ece 100644 --- a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc @@ -22,7 +22,7 @@ BattleFrontier_BattleArenaLobby_MapScript2_255C55: @ 8255C55 BattleFrontier_BattleArenaLobby_EventScript_255C7F:: @ 8255C7F setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleArenaLobby_EventScript_255C88:: @ 8255C88 @@ -40,7 +40,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255C88:: @ 8255C88 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 releaseall end @@ -48,7 +48,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255C88:: @ 8255C88 BattleFrontier_BattleArenaLobby_EventScript_255CCF:: @ 8255CCF lockall setvar VAR_0x8004, 10 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattleArenaLobby_EventScript_255CF0 msgbox BattleFrontier_BattleArenaLobby_Text_2568E7, 4 @@ -60,7 +60,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255CF0:: @ 8255CF0 BattleFrontier_BattleArenaLobby_EventScript_255CF8:: @ 8255CF8 msgbox BattleFrontier_BattleArenaLobby_Text_257353, 4 setvar VAR_0x8004, 11 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleArenaLobby_Text_241520, 9 message BattleFrontier_BattleArenaLobby_Text_256931 waitmessage @@ -88,7 +88,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255D2B:: @ 8255D2B BattleFrontier_BattleArenaLobby_EventScript_255D59:: @ 8255D59 setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty special HealPlayerParty setvar VAR_0x8004, 3 @@ -125,7 +125,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255DC0:: @ 8255DC0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 goto BattleFrontier_BattleArenaLobby_EventScript_255F54 @@ -155,13 +155,13 @@ BattleFrontier_BattleArenaLobby_EventScript_255E47:: @ 8255E47 case 2, BattleFrontier_BattleArenaLobby_EventScript_255FFB case 127, BattleFrontier_BattleArenaLobby_EventScript_255FFB setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattleArenaLobby_EventScript_255FAC setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleArenaLobby_Text_256573, 4 fadescreen 1 call BattleFrontier_BattleArenaLobby_EventScript_23F2B7 @@ -181,7 +181,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255EE8:: @ 8255EE8 setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 0 special sub_81A5238 setvar VAR_0x8004, 2 @@ -191,11 +191,11 @@ BattleFrontier_BattleArenaLobby_EventScript_255EE8:: @ 8255EE8 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -208,12 +208,12 @@ BattleFrontier_BattleArenaLobby_EventScript_255F54:: @ 8255F54 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleArenaLobby_Text_2567E6, 4 closemessage setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 call_if 1, BattleFrontier_BattleArenaLobby_EventScript_256005 compare VAR_RESULT, 1 @@ -244,7 +244,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255FE1:: @ 8255FE1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleArenaLobby_EventScript_255FFB BattleFrontier_BattleArenaLobby_EventScript_255FF8:: @ 8255FF8 @@ -346,7 +346,7 @@ BattleFrontier_BattleArenaLobby_EventScript_256092:: @ 8256092 lockall setvar VAR_0x8004, 7 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index 0a4052f23..9b1a77fae 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -10,7 +10,7 @@ BattleFrontier_BattleDomeBattleRoom_MapScript1_24BCB1: @ 824BCB1 special CallBattleDomeFunction setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc copyvar VAR_TEMP_F, VAR_RESULT compare VAR_RESULT, 0 call_if 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24C919 @@ -137,14 +137,14 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24BE9A:: @ 824BE9A setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C8F5 @ goto BattleFrontier_BattleDomePreBattleRoom_EventScript_24C8F5 BattleFrontier_BattleDomeBattleRoom_EventScript_24BEB1:: @ 824BEB1 setvar VAR_0x8004, 20 setvar VAR_0x8005, 1 - special sub_81A1780 + special CallFrontierUtilFunc message BattleFrontier_BattleDomeBattleRoom_Text_24C9E1 waitmessage return @@ -152,7 +152,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24BEB1:: @ 824BEB1 BattleFrontier_BattleDomeBattleRoom_EventScript_24BEC5:: @ 824BEC5 setvar VAR_0x8004, 20 setvar VAR_0x8005, 0 - special sub_81A1780 + special CallFrontierUtilFunc message BattleFrontier_BattleDomeBattleRoom_Text_24CB34 waitmessage return @@ -179,12 +179,12 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24BEE0:: @ 824BEE0 special CallBattleDomeFunction setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 4, BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 setvar VAR_0x8006, 1 @@ -196,7 +196,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62:: @ 824BF62 waitmovement 0 setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 1, BattleFrontier_BattleDomeBattleRoom_EventScript_24BF96 msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CA04, 4 @@ -213,7 +213,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24BF9E:: @ 824BF9E setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleDomeBattleRoom_EventScript_24C8F5 BattleFrontier_BattleDomeBattleRoom_EventScript_24BFC3:: @ 824BFC3 @@ -379,7 +379,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C1B6:: @ 824C1B6 BattleFrontier_BattleDomeBattleRoom_EventScript_24C1BD:: @ 824C1BD setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattleDomeBattleRoom_EventScript_24C1CB:: @ 824C1CB @@ -428,13 +428,13 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C211:: @ 824C211 case 4, BattleFrontier_BattleDomeBattleRoom_EventScript_24C373 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9 msgbox BattleFrontier_BattleDomeBattleRoom_Text_24CFAE, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9:: @ 824C2B9 msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D0D9, 4 @@ -448,7 +448,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9:: @ 824C2B9 setvar VAR_0x8005, 1 special CallBattleDomeFunction setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 closemessage @@ -460,20 +460,20 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C2B9:: @ 824C2B9 waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D1E0, 4 goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 BattleFrontier_BattleDomeBattleRoom_EventScript_24C346:: @ 824C346 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleDomeBattleRoom_EventScript_24C373 msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D319, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattleDomeBattleRoom_EventScript_24C373:: @ 824C373 msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D43E, 4 @@ -487,7 +487,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C373:: @ 824C373 setvar VAR_0x8005, 1 special CallBattleDomeFunction setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 closemessage @@ -499,7 +499,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C373:: @ 824C373 waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleDomeBattleRoom_Text_24D54D, 4 goto BattleFrontier_BattleDomeBattleRoom_EventScript_24BF62 @@ -527,7 +527,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C440:: @ 824C440 setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_DOME setvar VAR_0x8005, 0 @@ -554,11 +554,11 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_24C48B:: @ 824C48B applymovement 255, BattleFrontier_BattleDomeBattleRoom_Movement_24C773 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 3 goto_if 5, BattleFrontier_BattleDomeBattleRoom_EventScript_24C4EF setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc copyvar VAR_TEMP_E, VAR_RESULT compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleDomeBattleRoom_EventScript_24C4EF diff --git a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc index 989ebe2f3..a4c0dafc4 100644 --- a/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeCorridor/scripts.inc @@ -11,7 +11,7 @@ BattleFrontier_BattleDomeCorridor_EventScript_24B10E:: @ 824B10E setvar VAR_TEMP_0, 1 setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattleDomeCorridor_EventScript_24B161 applymovement 1, BattleFrontier_BattleDomeCorridor_Movement_24B1B2 diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc index 6a879df16..669deeeaa 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc @@ -29,7 +29,7 @@ BattleFrontier_BattleDomeLobby_MapScript2_24980F: @ 824980F BattleFrontier_BattleDomeLobby_EventScript_249839:: @ 8249839 setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleDomeLobby_EventScript_249842:: @ 8249842 @@ -51,7 +51,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249842:: @ 8249842 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 releaseall end @@ -60,7 +60,7 @@ BattleFrontier_BattleDomeLobby_EventScript_24989B:: @ 824989B call BattleFrontier_BattleDomeLobby_EventScript_241EBA lockall setvar VAR_0x8004, 10 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattleDomeLobby_EventScript_2498C1 msgbox BattleFrontier_BattleDomeLobby_Text_24A4E9, 4 @@ -72,16 +72,16 @@ BattleFrontier_BattleDomeLobby_EventScript_2498C1:: @ 82498C1 BattleFrontier_BattleDomeLobby_EventScript_2498C9:: @ 82498C9 msgbox BattleFrontier_BattleDomeLobby_Text_24ADB1, 4 setvar VAR_0x8004, 11 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleDomeLobby_Text_241520, 9 message BattleFrontier_BattleDomeLobby_Text_24A5D6 waitmessage special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 @@ -106,9 +106,9 @@ BattleFrontier_BattleDomeLobby_EventScript_249940:: @ 8249940 special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 @@ -160,7 +160,7 @@ BattleFrontier_BattleDomeLobby_EventScript_2499F9:: @ 82499F9 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 goto BattleFrontier_BattleDomeLobby_EventScript_249BC2 @@ -208,13 +208,13 @@ BattleFrontier_BattleDomeLobby_EventScript_249ABF:: @ 8249ABF case 2, BattleFrontier_BattleDomeLobby_EventScript_249C64 case 127, BattleFrontier_BattleDomeLobby_EventScript_249C64 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattleDomeLobby_EventScript_249C15 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleDomeLobby_Text_24A26E, 4 fadescreen 1 call BattleFrontier_BattleDomeLobby_EventScript_23F2B7 @@ -234,17 +234,17 @@ BattleFrontier_BattleDomeLobby_EventScript_249B60:: @ 8249B60 setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 0 special CallBattleDomeFunction setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -259,7 +259,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249BC2:: @ 8249BC2 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 15 special CallBattleDomeFunction msgbox BattleFrontier_BattleDomeLobby_Text_24A437, 4 @@ -295,7 +295,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249C4A:: @ 8249C4A setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleDomeLobby_EventScript_249C64 BattleFrontier_BattleDomeLobby_EventScript_249C61:: @ 8249C61 @@ -413,7 +413,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249D52:: @ 8249D52 setvar VAR_0x8004, 7 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall @@ -424,7 +424,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249D6B:: @ 8249D6B setvar VAR_0x8004, 7 setvar VAR_0x8005, 1 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall diff --git a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc index 203de2813..d870ee8ea 100644 --- a/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomePreBattleRoom/scripts.inc @@ -22,7 +22,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B222:: @ 824B222 setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 1 applymovement 255, BattleFrontier_BattleDomePreBattleRoom_Movement_24B652 waitmovement 0 @@ -100,7 +100,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3BB:: @ 824B3BB waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3DD:: @ 824B3DD @@ -122,7 +122,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B3F5:: @ 824B3F5 BattleFrontier_BattleDomePreBattleRoom_EventScript_24B40A:: @ 824B40A setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B449 case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B452 @@ -157,7 +157,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D:: @ 824B46D special sub_80F9490 waitstate setvar VAR_0x8004, 21 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleDomePreBattleRoom_EventScript_24B24F setvar VAR_0x8004, 2 @@ -187,7 +187,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B46D:: @ 824B46D BattleFrontier_BattleDomePreBattleRoom_EventScript_24B4FB:: @ 824B4FB setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 0, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B53A case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B540 @@ -209,7 +209,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B546:: @ 824B546 BattleFrontier_BattleDomePreBattleRoom_EventScript_24B54C:: @ 824B54C setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B58B case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5A0 @@ -246,7 +246,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7:: @ 824B5C7 special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc playfanfare MUS_ME_ASA waitfanfare special HealPlayerParty @@ -260,7 +260,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7:: @ 824B5C7 BattleFrontier_BattleDomePreBattleRoom_EventScript_24B600:: @ 824B600 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 1, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B634 case 2, BattleFrontier_BattleDomePreBattleRoom_EventScript_24B63D diff --git a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc index ef26ad3a7..6d2350b6f 100644 --- a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc @@ -6,14 +6,14 @@ BattleFrontier_BattleFactoryBattleRoom_MapScripts:: @ 825ADAB BattleFrontier_BattleFactoryBattleRoom_MapScript1_25ADBB: @ 825ADBB setvar VAR_0x8004, 5 - special sub_81A1780 + special CallFrontierUtilFunc checkplayergender compare VAR_RESULT, 0 call_if 1, BattleFrontier_BattleFactoryBattleRoom_EventScript_25AE25 compare VAR_RESULT, 1 call_if 1, BattleFrontier_BattleFactoryBattleRoom_EventScript_25AE2B setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc copyvar VAR_TEMP_F, VAR_RESULT compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleFactoryBattleRoom_EventScript_25ADF3 @@ -88,7 +88,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AEA7:: @ 825AEA7 setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_FACTORY setvar VAR_0x8005, 0 @@ -102,7 +102,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25AEF8:: @ 825AEF8 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleFactoryBattleRoom_EventScript_25B190 @ goto BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25B190 @@ -124,12 +124,12 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AF3E:: @ 825AF3E BattleFrontier_BattleFactoryBattleRoom_EventScript_25AF43:: @ 825AF43 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 7, BattleFrontier_BattleFactoryBattleRoom_EventScript_25AF85 setvar VAR_0x8006, 1 @@ -140,7 +140,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AF85:: @ 825AF85 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleFactoryBattleRoom_EventScript_25B190 BattleFrontier_BattleFactoryBattleRoom_EventScript_25AF9C:: @ 825AF9C @@ -150,13 +150,13 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AF9C:: @ 825AF9C case 4, BattleFrontier_BattleFactoryBattleRoom_EventScript_25B07E setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleFactoryBattleRoom_EventScript_25AFEF msgbox BattleFrontier_BattleFactoryBattleRoom_Text_25B1FB, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattleFactoryBattleRoom_EventScript_25AFEF:: @ 825AFEF msgbox BattleFrontier_BattleFactoryBattleRoom_Text_25B3F1, 4 @@ -167,7 +167,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25AFEF:: @ 825AFEF BattleFrontier_BattleFactoryBattleRoom_EventScript_25B00C:: @ 825B00C setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleFactoryBattleRoom_EventScript_25B105 msgbox BattleFrontier_BattleFactoryBattleRoom_Text_25B42D, 4 @@ -179,20 +179,20 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25B00C:: @ 825B00C waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleFactoryBattleRoom_Text_25B498, 4 goto BattleFrontier_BattleFactoryBattleRoom_EventScript_25B105 BattleFrontier_BattleFactoryBattleRoom_EventScript_25B051:: @ 825B051 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleFactoryBattleRoom_EventScript_25B07E msgbox BattleFrontier_BattleFactoryBattleRoom_Text_25B517, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattleFactoryBattleRoom_EventScript_25B07E:: @ 825B07E msgbox BattleFrontier_BattleFactoryBattleRoom_Text_25B5CF, 4 @@ -203,7 +203,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25B07E:: @ 825B07E BattleFrontier_BattleFactoryBattleRoom_EventScript_25B09B:: @ 825B09B setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattleFactoryBattleRoom_EventScript_25B105 msgbox BattleFrontier_BattleFactoryBattleRoom_Text_25B5E7, 4 @@ -215,7 +215,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25B09B:: @ 825B09B waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleFactoryBattleRoom_Text_25B66D, 4 goto BattleFrontier_BattleFactoryBattleRoom_EventScript_25B105 @@ -224,7 +224,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25B0E0:: @ 825B0E0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_FACTORY setvar VAR_0x8005, 0 @@ -255,7 +255,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_25B105:: @ 825B105 special sub_81A5E74 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 goto BattleFrontier_BattleFactoryBattleRoom_EventScript_25AF85 end diff --git a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc index 7846da874..1a535c893 100644 --- a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc @@ -22,7 +22,7 @@ BattleFrontier_BattleFactoryLobby_MapScript2_258407: @ 8258407 BattleFrontier_BattleFactoryLobby_EventScript_258431:: @ 8258431 setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleFactoryLobby_EventScript_25843A:: @ 825843A @@ -46,7 +46,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_25843A:: @ 825843A setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 releaseall end @@ -54,7 +54,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_25843A:: @ 825843A BattleFrontier_BattleFactoryLobby_EventScript_25849B:: @ 825849B lockall setvar VAR_0x8004, 10 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattleFactoryLobby_EventScript_2584BD msgbox BattleFrontier_BattleFactoryLobby_Text_258D93, 4 @@ -68,12 +68,12 @@ BattleFrontier_BattleFactoryLobby_EventScript_2584BD:: @ 82584BD BattleFrontier_BattleFactoryLobby_EventScript_2584C6:: @ 82584C6 msgbox BattleFrontier_BattleFactoryLobby_Text_2592BD, 4 setvar VAR_0x8004, 11 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleFactoryLobby_Text_241520, 9 message BattleFrontier_BattleFactoryLobby_Text_259323 waitmessage setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 0 @@ -88,7 +88,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_258506:: @ 8258506 message BattleFrontier_BattleFactoryLobby_Text_258CC7 waitmessage setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 @@ -134,7 +134,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_258592:: @ 8258592 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 setvar VAR_0x8006, 2 goto BattleFrontier_BattleFactoryLobby_EventScript_25871A @@ -183,7 +183,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_258653:: @ 8258653 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleFactoryLobby_Text_258C27, 5 switch VAR_RESULT case 0, BattleFrontier_BattleFactoryLobby_EventScript_25879A @@ -197,7 +197,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2586B9:: @ 82586B9 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 setvar VAR_0x8006, 1 @@ -205,7 +205,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2586B9:: @ 82586B9 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc closemessage delay 2 call BattleFrontier_BattleFactoryLobby_EventScript_27134F @@ -249,7 +249,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_258783:: @ 8258783 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleFactoryLobby_EventScript_25879D BattleFrontier_BattleFactoryLobby_EventScript_25879A:: @ 825879A @@ -303,7 +303,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2587E1:: @ 82587E1 setvar VAR_0x8004, 7 setvar VAR_0x8005, 4 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall @@ -314,7 +314,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2587FA:: @ 82587FA setvar VAR_0x8004, 7 setvar VAR_0x8005, 4 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall diff --git a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc index e05c49885..5764025e0 100644 --- a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc @@ -74,7 +74,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259BA5:: @ 8259BA5 waitfanfare special HealPlayerParty setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259C26 playse 263 @@ -95,14 +95,14 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259BA5:: @ 8259BA5 BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259C13:: @ 8259C13 setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_25A0B9 BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259C26:: @ 8259C26 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 call_if 1, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E1D compare VAR_RESULT, 2 @@ -232,7 +232,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E47:: @ 8259E47 waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E69:: @ 8259E69 @@ -243,7 +243,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E69:: @ 8259E69 setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc special CalculatePlayerPartyCount goto BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259C13 diff --git a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc index e97297a16..5cfc4c88b 100644 --- a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc @@ -6,7 +6,7 @@ BattleFrontier_BattlePalaceBattleRoom_MapScripts:: @ 824F815 BattleFrontier_BattlePalaceBattleRoom_MapScript1_24F825: @ 824F825 setvar VAR_0x8004, 5 - special sub_81A1780 + special CallFrontierUtilFunc call BattleFrontier_BattlePalaceBattleRoom_EventScript_24F833 end @@ -36,7 +36,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24F86B:: @ 824F86B showobjectat 1, MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_eq BattleFrontier_BattlePalaceBattleRoom_EventScript_24F8B5 applymovement 1, BattleFrontier_BattlePalaceBattleRoom_Movement_24FE9B @@ -46,7 +46,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24F86B:: @ 824F86B setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattlePalaceBattleRoom_EventScript_24F98A BattleFrontier_BattlePalaceBattleRoom_EventScript_24F8B5:: @ 824F8B5 @@ -71,19 +71,19 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24F8FA:: @ 824F8FA setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattlePalaceBattleRoom_EventScript_24FEBB BattleFrontier_BattlePalaceBattleRoom_EventScript_24F911:: @ 824F911 call BattleFrontier_BattlePalaceBattleRoom_EventScript_241EBA setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 7, BattleFrontier_BattlePalaceBattleRoom_EventScript_24FB28 applymovement 2, BattleFrontier_BattlePalaceBattleRoom_Movement_24FEA7 @@ -97,20 +97,20 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24F911:: @ 824F911 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc playfanfare MUS_ME_ASA waitfanfare special HealPlayerParty BattleFrontier_BattlePalaceBattleRoom_EventScript_24F98A:: @ 824F98A setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc copyvar VAR_TEMP_F, VAR_RESULT compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePalaceBattleRoom_EventScript_24FB61 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 call_if 1, BattleFrontier_BattlePalaceBattleRoom_EventScript_24FE66 compare VAR_RESULT, 2 @@ -181,7 +181,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FB28:: @ 824FB28 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattlePalaceBattleRoom_EventScript_24FEBB BattleFrontier_BattlePalaceBattleRoom_EventScript_24FB3F:: @ 824FB3F @@ -194,7 +194,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FB3F:: @ 824FB3F waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattlePalaceBattleRoom_EventScript_24FB61:: @ 824FB61 @@ -246,13 +246,13 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FC06:: @ 824FC06 case 4, BattleFrontier_BattlePalaceBattleRoom_EventScript_24FD67 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePalaceBattleRoom_EventScript_24FCAA msgbox BattleFrontier_BattlePalaceBattleRoom_Text_2501C1, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattlePalaceBattleRoom_EventScript_24FCAA:: @ 824FCAA msgbox BattleFrontier_BattlePalaceBattleRoom_Text_2502C4, 4 @@ -265,7 +265,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FCC7:: @ 824FCC7 setvar VAR_0x8004, 6 special sub_8195960 setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePalaceBattleRoom_EventScript_24FB28 msgbox BattleFrontier_BattlePalaceBattleRoom_Text_2502FF, 4 @@ -277,7 +277,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FCC7:: @ 824FCC7 waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc applymovement 2, BattleFrontier_BattlePalaceBattleRoom_Movement_2725B6 waitmovement 0 applymovement 1, BattleFrontier_BattlePalaceBattleRoom_Movement_2725A8 @@ -289,13 +289,13 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FCC7:: @ 824FCC7 BattleFrontier_BattlePalaceBattleRoom_EventScript_24FD3A:: @ 824FD3A setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePalaceBattleRoom_EventScript_24FD67 msgbox BattleFrontier_BattlePalaceBattleRoom_Text_250485, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattlePalaceBattleRoom_EventScript_24FD67:: @ 824FD67 msgbox BattleFrontier_BattlePalaceBattleRoom_Text_250572, 4 @@ -308,7 +308,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FD84:: @ 824FD84 setvar VAR_0x8004, 6 special sub_8195960 setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattlePalaceBattleRoom_EventScript_24FB28 msgbox BattleFrontier_BattlePalaceBattleRoom_Text_25057E, 4 @@ -320,7 +320,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24FD84:: @ 824FD84 waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc applymovement 2, BattleFrontier_BattlePalaceBattleRoom_Movement_2725B6 waitmovement 0 applymovement 1, BattleFrontier_BattlePalaceBattleRoom_Movement_2725A8 @@ -336,17 +336,17 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_24FDF7:: @ 824FDF7 setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_PALACE setvar VAR_0x8005, 0 special DoSpecialTrainerBattle waitstate setvar VAR_0x8004, 18 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, 21 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattlePalaceBattleRoom_MapScript2_24FE34: @ 824FE34 diff --git a/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc b/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc index c8142a207..bd916e931 100644 --- a/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc +++ b/data/maps/BattleFrontier_BattlePalaceCorridor/scripts.inc @@ -27,7 +27,7 @@ BattleFrontier_BattlePalaceCorridor_EventScript_24F4B3:: @ 824F4B3 closemessage setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattlePalaceCorridor_EventScript_24F553 applymovement 1, BattleFrontier_BattlePalaceCorridor_Movement_24F5BD diff --git a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc index b86ffa2fb..804fd7bce 100644 --- a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc @@ -22,7 +22,7 @@ BattleFrontier_BattlePalaceLobby_MapScript2_24D79D: @ 824D79D BattleFrontier_BattlePalaceLobby_EventScript_24D7C7:: @ 824D7C7 setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattlePalaceLobby_EventScript_24D7D0:: @ 824D7D0 @@ -40,7 +40,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D7D0:: @ 824D7D0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 releaseall end @@ -48,7 +48,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D7D0:: @ 824D7D0 BattleFrontier_BattlePalaceLobby_EventScript_24D817:: @ 824D817 lockall setvar VAR_0x8004, 10 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattlePalaceLobby_EventScript_24D838 msgbox BattleFrontier_BattlePalaceLobby_Text_24E497, 4 @@ -60,7 +60,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D838:: @ 824D838 BattleFrontier_BattlePalaceLobby_EventScript_24D840:: @ 824D840 msgbox BattleFrontier_BattlePalaceLobby_Text_24EEB9, 4 setvar VAR_0x8004, 11 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePalaceLobby_Text_241520, 9 message BattleFrontier_BattlePalaceLobby_Text_24E4F7 waitmessage @@ -88,7 +88,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D873:: @ 824D873 BattleFrontier_BattlePalaceLobby_EventScript_24D8A1:: @ 824D8A1 setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty special HealPlayerParty setvar VAR_0x8004, 7 @@ -126,7 +126,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D908:: @ 824D908 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 goto BattleFrontier_BattlePalaceLobby_EventScript_24DAF3 @@ -179,13 +179,13 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D9E6:: @ 824D9E6 case 2, BattleFrontier_BattlePalaceLobby_EventScript_24DB94 case 127, BattleFrontier_BattlePalaceLobby_EventScript_24DB94 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattlePalaceLobby_EventScript_24DB45 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePalaceLobby_Text_24E399, 4 fadescreen 1 call BattleFrontier_BattlePalaceLobby_EventScript_23F2B7 @@ -205,7 +205,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DA87:: @ 824DA87 setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 0 special sub_8195960 setvar VAR_0x8004, 2 @@ -215,11 +215,11 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DA87:: @ 824DA87 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -232,7 +232,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DAF3:: @ 824DAF3 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePalaceLobby_Text_24E408, 4 closemessage call BattleFrontier_BattlePalaceLobby_EventScript_24DBBC @@ -268,7 +268,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DB7A:: @ 824DB7A setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattlePalaceLobby_EventScript_24DB94 BattleFrontier_BattlePalaceLobby_EventScript_24DB91:: @ 824DB91 @@ -364,7 +364,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DC50:: @ 824DC50 setvar VAR_0x8004, 7 setvar VAR_0x8005, 2 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall @@ -375,7 +375,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DC69:: @ 824DC69 setvar VAR_0x8004, 7 setvar VAR_0x8005, 2 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall diff --git a/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc b/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc index 23ad26692..4bdf3c80e 100644 --- a/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeCorridor/scripts.inc @@ -12,7 +12,7 @@ BattleFrontier_BattlePikeCorridor_EventScript_25C786:: @ 825C786 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 20 special sub_81A703C setvar VAR_0x8004, 24 @@ -30,7 +30,7 @@ BattleFrontier_BattlePikeCorridor_EventScript_25C786:: @ 825C786 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 99 - special sub_81A1780 + special CallFrontierUtilFunc call BattleFrontier_BattlePikeCorridor_EventScript_25BB49 warpsilent MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM, 255, 6, 10 waitstate diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc index 0b356792f..6bbb21bd1 100644 --- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc @@ -21,7 +21,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B6FD:: @ 825B6FD BattleFrontier_BattlePikeLobby_EventScript_25B707:: @ 825B707 setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattlePikeLobby_EventScript_25B710:: @ 825B710 @@ -42,7 +42,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B710:: @ 825B710 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 releaseall end @@ -50,7 +50,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B710:: @ 825B710 BattleFrontier_BattlePikeLobby_EventScript_25B762:: @ 825B762 lockall setvar VAR_0x8004, 10 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattlePikeLobby_EventScript_25B784 msgbox BattleFrontier_BattlePikeLobby_Text_25C18A, 4 @@ -64,10 +64,10 @@ BattleFrontier_BattlePikeLobby_EventScript_25B784:: @ 825B784 BattleFrontier_BattlePikeLobby_EventScript_25B78D:: @ 825B78D msgbox BattleFrontier_BattlePikeLobby_Text_25C3D9, 4 setvar VAR_0x8004, 11 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePikeLobby_Text_241520, 9 setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 1 setvar VAR_0x8005, 3 special sub_81A703C @@ -98,11 +98,11 @@ BattleFrontier_BattlePikeLobby_EventScript_25B806:: @ 825B806 message BattleFrontier_BattlePikeLobby_Text_25C146 waitmessage setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 setvar VAR_0x8006, 0 @@ -148,13 +148,13 @@ BattleFrontier_BattlePikeLobby_EventScript_25B8BB:: @ 825B8BB case 2, BattleFrontier_BattlePikeLobby_EventScript_25BA76 case 127, BattleFrontier_BattlePikeLobby_EventScript_25BA76 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattlePikeLobby_EventScript_25BA27 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePikeLobby_Text_25C094, 4 fadescreen 1 call BattleFrontier_BattlePikeLobby_EventScript_23F2B7 @@ -175,13 +175,13 @@ BattleFrontier_BattlePikeLobby_EventScript_25B95C:: @ 825B95C setvar VAR_TEMP_1, 0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 28 special sub_81A703C setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 setvar VAR_0x8006, 1 @@ -191,7 +191,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B95C:: @ 825B95C setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -204,11 +204,11 @@ BattleFrontier_BattlePikeLobby_EventScript_25B95C:: @ 825B95C special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePikeLobby_Text_25C130, 4 closemessage setvar VAR_0x8004, 5 - special sub_81A1780 + special CallFrontierUtilFunc call BattleFrontier_BattlePikeLobby_EventScript_25BA94 special HealPlayerParty call BattleFrontier_BattlePikeLobby_EventScript_25BB49 @@ -238,7 +238,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25BA5C:: @ 825BA5C setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattlePikeLobby_EventScript_25BA76 BattleFrontier_BattlePikeLobby_EventScript_25BA73:: @ 825BA73 @@ -255,7 +255,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25BA80:: @ 825BA80 lockall setvar VAR_0x8004, 7 setvar VAR_0x8005, 5 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall diff --git a/data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc b/data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc index d1dc7d13e..6f7140f30 100644 --- a/data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeRandomRoom1/scripts.inc @@ -45,7 +45,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D20A:: @ 825D20A setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc warp MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY, 255, 5, 6 waitstate end @@ -144,13 +144,13 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D2FB:: @ 825D2FB case 4, BattleFrontier_BattlePikeRandomRoom1_EventScript_25D443 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePikeRandomRoom1_EventScript_25D3BD msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25DED2, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattlePikeRandomRoom1_EventScript_25D3BD:: @ 825D3BD msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25DF71, 4 @@ -161,7 +161,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D3BD:: @ 825D3BD BattleFrontier_BattlePikeRandomRoom1_EventScript_25D3DA:: @ 825D3DA setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePikeRandomRoom1_EventScript_25D49D msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25DFA2, 4 @@ -171,7 +171,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D3DA:: @ 825D3DA waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25E003, 4 closemessage goto BattleFrontier_BattlePikeRandomRoom1_EventScript_25D49D @@ -179,13 +179,13 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D3DA:: @ 825D3DA BattleFrontier_BattlePikeRandomRoom1_EventScript_25D416:: @ 825D416 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePikeRandomRoom1_EventScript_25D443 msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25E02C, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattlePikeRandomRoom1_EventScript_25D443:: @ 825D443 msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25E0E8, 4 @@ -196,7 +196,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D443:: @ 825D443 BattleFrontier_BattlePikeRandomRoom1_EventScript_25D460:: @ 825D460 setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattlePikeRandomRoom1_EventScript_25D49D msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25E0F6, 4 @@ -206,7 +206,7 @@ BattleFrontier_BattlePikeRandomRoom1_EventScript_25D460:: @ 825D460 waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePikeRandomRoom1_Text_25E140, 4 closemessage goto BattleFrontier_BattlePikeRandomRoom1_EventScript_25D49D diff --git a/data/maps/BattleFrontier_BattlePikeRandomRoom2/scripts.inc b/data/maps/BattleFrontier_BattlePikeRandomRoom2/scripts.inc index 4f0d4632b..58031dd85 100644 --- a/data/maps/BattleFrontier_BattlePikeRandomRoom2/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeRandomRoom2/scripts.inc @@ -14,7 +14,7 @@ BattleFrontier_BattlePikeRandomRoom2_EventScript_25E3A7:: @ 825E3A7 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc lockall msgbox BattleFrontier_BattlePikeRandomRoom2_Text_25E3F2, 4 closemessage diff --git a/data/maps/BattleFrontier_BattlePikeRandomRoom3/scripts.inc b/data/maps/BattleFrontier_BattlePikeRandomRoom3/scripts.inc index 9256764e8..d1d968054 100644 --- a/data/maps/BattleFrontier_BattlePikeRandomRoom3/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeRandomRoom3/scripts.inc @@ -19,7 +19,7 @@ BattleFrontier_BattlePikeRandomRoom3_EventScript_25E44A:: @ 825E44A setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc warp MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY, 255, 5, 6 waitstate end @@ -37,7 +37,7 @@ BattleFrontier_BattlePikeRandomRoom3_MapScript1_25E47A: @ 825E47A call BattleFrontier_BattlePikeRandomRoom3_EventScript_2C4271 setvar VAR_0x8004, 1 setvar VAR_0x8005, 5 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattlePikeRandomRoom3_EventScript_25E4A3 compare VAR_RESULT, 3 diff --git a/data/maps/BattleFrontier_BattlePikeThreePathRoom/scripts.inc b/data/maps/BattleFrontier_BattlePikeThreePathRoom/scripts.inc index a4725036b..6f5e8db1c 100644 --- a/data/maps/BattleFrontier_BattlePikeThreePathRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeThreePathRoom/scripts.inc @@ -23,7 +23,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_25C887:: @ 825C887 BattleFrontier_BattlePikeThreePathRoom_EventScript_25C891:: @ 825C891 setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattlePikeThreePathRoom_EventScript_25C89A:: @ 825C89A @@ -43,27 +43,27 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_25C8A4:: @ 825C8A4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePikeThreePathRoom_Text_25CDDA, 4 closemessage releaseall setvar VAR_0x8004, 5 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 99 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattlePikeThreePathRoom_EventScript_25C908:: @ 825C908 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 1, BattleFrontier_BattlePikeThreePathRoom_EventScript_25C968 case 3, BattleFrontier_BattlePikeThreePathRoom_EventScript_25C978 @@ -133,7 +133,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_25C9D8:: @ 825C9D8 BattleFrontier_BattlePikeThreePathRoom_EventScript_25C9FD:: @ 825C9FD setvar VAR_0x8004, 6 - special sub_81A1780 + special CallFrontierUtilFunc message BattleFrontier_BattlePikeThreePathRoom_Text_25CE08 waitmessage special LoadPlayerParty @@ -144,7 +144,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_25C9FD:: @ 825C9FD waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattlePikeThreePathRoom_EventScript_25CA2A:: @ 825CA2A diff --git a/data/maps/BattleFrontier_BattlePyramidEmptySquare/scripts.inc b/data/maps/BattleFrontier_BattlePyramidEmptySquare/scripts.inc index eacee4cf3..6225ae0cc 100644 --- a/data/maps/BattleFrontier_BattlePyramidEmptySquare/scripts.inc +++ b/data/maps/BattleFrontier_BattlePyramidEmptySquare/scripts.inc @@ -41,14 +41,14 @@ BattleFrontier_BattlePyramidEmptySquare_MapScript1_252AA2: @ 8252AA2 setvar VAR_0x8004, 15 special sub_81A8E7C setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_TEMP_0 case 0, BattleFrontier_BattlePyramidEmptySquare_EventScript_252B8D case 1, BattleFrontier_BattlePyramidEmptySquare_EventScript_252B66 case 2, BattleFrontier_BattlePyramidEmptySquare_EventScript_252B8D setvar VAR_0x8004, 1 setvar VAR_0x8005, 5 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 4 goto_eq BattleFrontier_BattlePyramidEmptySquare_EventScript_252B39 compare VAR_RESULT, 5 @@ -63,7 +63,7 @@ BattleFrontier_BattlePyramidEmptySquare_MapScript1_252AA2: @ 8252AA2 goto_eq BattleFrontier_BattlePyramidEmptySquare_EventScript_252B42 setvar VAR_0x8004, 14 setvar VAR_0x8005, 8 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_D, 1 BattleFrontier_BattlePyramidEmptySquare_EventScript_252B39:: @ 8252B39 @@ -76,7 +76,7 @@ BattleFrontier_BattlePyramidTop_EventScript_252B42:: @ 8252B42 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 setvar VAR_0x8006, 255 @@ -103,12 +103,12 @@ BattleFrontier_BattlePyramidEmptySquare_EventScript_252B8D:: @ 8252B8D setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 9 special sub_81A8E7C setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_F, 1 end @@ -128,12 +128,12 @@ BattleFrontier_BattlePyramidEmptySquare_EventScript_252BE8:: @ 8252BE8 call BattleFrontier_BattlePalaceBattleRoom_EventScript_241EBA setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 7 goto_eq BattleFrontier_BattlePyramidEmptySquare_EventScript_252C45 setvar VAR_0x8004, 6 @@ -141,7 +141,7 @@ BattleFrontier_BattlePyramidEmptySquare_EventScript_252BE8:: @ 8252BE8 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_RESULT, 0 warp MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE, 255, 1, 1 waitstate diff --git a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc index ccc7b1032..4ae7b8e55 100644 --- a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc @@ -22,7 +22,7 @@ BattleFrontier_BattlePyramidLobby_MapScript2_250735: @ 8250735 BattleFrontier_BattlePyramidLobby_EventScript_25075F:: @ 825075F setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattlePyramidLobby_EventScript_250768:: @ 8250768 @@ -43,7 +43,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250768:: @ 8250768 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 releaseall end @@ -51,7 +51,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250768:: @ 8250768 BattleFrontier_BattlePyramidLobby_EventScript_2507B1:: @ 82507B1 lockall setvar VAR_0x8004, 10 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattlePyramidLobby_EventScript_2507D2 msgbox BattleFrontier_BattlePyramidLobby_Text_2517B5, 4 @@ -66,7 +66,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA call_if 1, BattleFrontier_BattlePyramidLobby_EventScript_250DDB clearflag FLAG_SPECIAL_FLAG_0x4004 setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty setvar VAR_0x8004, 14 special sub_81A8E7C @@ -77,7 +77,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA waitse msgbox BattleFrontier_BattlePyramidLobby_Text_252662, 4 setvar VAR_0x8004, 11 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePyramidLobby_Text_241520, 9 message BattleFrontier_BattlePyramidLobby_Text_251A77 waitmessage @@ -96,7 +96,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA BattleFrontier_BattlePyramidLobby_EventScript_250852:: @ 8250852 setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty setvar VAR_0x8004, 14 special sub_81A8E7C @@ -152,13 +152,13 @@ BattleFrontier_BattlePyramidLobby_EventScript_250904:: @ 8250904 case 2, BattleFrontier_BattlePyramidLobby_EventScript_250AC4 case 127, BattleFrontier_BattlePyramidLobby_EventScript_250AC4 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattlePyramidLobby_EventScript_250A75 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePyramidLobby_Text_251297, 4 fadescreen 1 call BattleFrontier_BattlePyramidLobby_EventScript_23F2B7 @@ -178,7 +178,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2509A5:: @ 82509A5 setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 0 special sub_81A8E7C setvar VAR_0x8004, 2 @@ -188,11 +188,11 @@ BattleFrontier_BattlePyramidLobby_EventScript_2509A5:: @ 82509A5 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 6 special sub_81A8E7C setvar VAR_0x8004, 9 @@ -209,14 +209,14 @@ BattleFrontier_BattlePyramidLobby_EventScript_250A21:: @ 8250A21 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePyramidLobby_Text_251531, 4 closemessage call BattleFrontier_BattlePyramidLobby_EventScript_250D56 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_RESULT, 0 special HealPlayerParty warp MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE, 255, 1, 1 @@ -245,7 +245,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250AAA:: @ 8250AAA setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattlePyramidLobby_EventScript_250AC4 BattleFrontier_BattlePyramidLobby_EventScript_250AC1:: @ 8250AC1 @@ -426,7 +426,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250D42:: @ 8250D42 lockall setvar VAR_0x8004, 7 setvar VAR_0x8005, 6 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall diff --git a/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc b/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc index 5169a6971..46ecef737 100644 --- a/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc +++ b/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc @@ -29,7 +29,7 @@ BattleFrontier_BattlePyramidTop_EventScript_2550F3:: @ 82550F3 BattleFrontier_BattlePyramidTop_MapScript1_2550F4: @ 82550F4 setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_eq BattleFrontier_BattlePyramidTop_EventScript_25510C call BattleFrontier_BattlePyramidTop_EventScript_242170 @@ -37,14 +37,14 @@ BattleFrontier_BattlePyramidTop_MapScript1_2550F4: @ 82550F4 BattleFrontier_BattlePyramidTop_EventScript_25510C:: @ 825510C copyvar VAR_TEMP_C, VAR_RESULT setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_TEMP_0 case 0, BattleFrontier_BattlePyramidTop_EventScript_255193 case 1, BattleFrontier_BattlePyramidTop_EventScript_252B66 case 2, BattleFrontier_BattlePyramidTop_EventScript_255193 setvar VAR_0x8004, 1 setvar VAR_0x8005, 5 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattlePyramidTop_EventScript_252B42 compare VAR_RESULT, 3 @@ -76,12 +76,12 @@ BattleFrontier_BattlePyramidTop_EventScript_255193:: @ 8255193 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 9 special sub_81A8E7C setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_F, 1 end @@ -110,7 +110,7 @@ BattleFrontier_BattlePyramidTop_EventScript_25521A:: @ 825521A setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc warp MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY, 255, 7, 13 waitstate end @@ -135,7 +135,7 @@ BattleFrontier_BattlePyramidTop_EventScript_255256:: @ 8255256 case 4, BattleFrontier_BattlePyramidTop_EventScript_255388 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePyramidTop_EventScript_2552D0 special SpawnScriptEventObject @@ -145,7 +145,7 @@ BattleFrontier_BattlePyramidTop_EventScript_255256:: @ 8255256 closemessage setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc applymovement 2, BattleFrontier_BattlePyramidTop_Movement_25540A waitmovement 0 msgbox BattleFrontier_BattlePyramidTop_Text_25573E, 4 @@ -166,7 +166,7 @@ BattleFrontier_BattlePyramidTop_EventScript_2552DA:: @ 82552DA BattleFrontier_BattlePyramidTop_EventScript_2552FB:: @ 82552FB setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePyramidTop_EventScript_25521A msgbox BattleFrontier_BattlePyramidTop_Text_255873, 4 @@ -175,14 +175,14 @@ BattleFrontier_BattlePyramidTop_EventScript_2552FB:: @ 82552FB waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePyramidTop_Text_25591D, 4 goto BattleFrontier_BattlePyramidTop_EventScript_25521A BattleFrontier_BattlePyramidTop_EventScript_255335:: @ 8255335 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePyramidTop_EventScript_255388 special SpawnScriptEventObject @@ -192,7 +192,7 @@ BattleFrontier_BattlePyramidTop_EventScript_255335:: @ 8255335 closemessage setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc applymovement 2, BattleFrontier_BattlePyramidTop_Movement_25540A waitmovement 0 msgbox BattleFrontier_BattlePyramidTop_Text_255A6D, 4 @@ -213,7 +213,7 @@ BattleFrontier_BattlePyramidTop_EventScript_255392:: @ 8255392 BattleFrontier_BattlePyramidTop_EventScript_2553B3:: @ 82553B3 setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattlePyramidTop_EventScript_25521A msgbox BattleFrontier_BattlePyramidTop_Text_255ACD, 4 @@ -222,7 +222,7 @@ BattleFrontier_BattlePyramidTop_EventScript_2553B3:: @ 82553B3 waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattlePyramidTop_Text_255B82, 4 goto BattleFrontier_BattlePyramidTop_EventScript_25521A diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc index 69a78215d..196518e0b 100644 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc @@ -22,7 +22,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241B6C:: @ 8241B6C waitmovement 0 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerBattleRoom_EventScript_241BC3 applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_24218D @@ -33,7 +33,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241B6C:: @ 8241B6C setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F BattleFrontier_BattleTowerBattleRoom_EventScript_241BC3:: @ 8241BC3 @@ -56,7 +56,7 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_241C03:: @ 8241C03 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 special sub_8161F74 @@ -74,7 +74,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241C2F:: @ 8241C2F waitmovement 0 removeobject 1 setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 call_if 5, BattleFrontier_BattleTowerBattleRoom_EventScript_241EC3 applymovement 2, BattleFrontier_BattleTowerBattleRoom_Movement_24218D @@ -88,13 +88,13 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241C2F:: @ 8241C2F BattleFrontier_BattleTowerBattleRoom_EventScript_241C8F:: @ 8241C8F setvar VAR_0x8004, 9 - special sub_81A1780 + special CallFrontierUtilFunc copyvar VAR_TEMP_F, VAR_RESULT compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleTowerBattleRoom_EventScript_241F0A setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc call BattleFrontier_BattleTowerBattleRoom_EventScript_241E44 call BattleFrontier_BattleTowerBattleRoom_EventScript_23E8E0 compare VAR_RESULT, 1 @@ -156,7 +156,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6:: @ 8241DF6 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 special sub_8161F74 @@ -174,7 +174,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241E22:: @ 8241E22 waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleTowerBattleRoom_EventScript_241E44:: @ 8241E44 @@ -224,7 +224,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_241EBA:: @ 8241EBA BattleFrontier_BattleTowerBattleRoom2_EventScript_241EBA:: @ 8241EBA BattleFrontier_BattleTowerBattleRoom_EventScript_241EBA:: @ 8241EBA setvar VAR_0x8004, 17 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattleTowerBattleRoom_EventScript_241EC3:: @ 8241EC3 @@ -288,13 +288,13 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_241FAF:: @ 8241FAF case 4, BattleFrontier_BattleTowerBattleRoom_EventScript_2420B2 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleTowerBattleRoom_EventScript_242029 msgbox BattleFrontier_BattleTowerBattleRoom_Text_242579, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattleTowerBattleRoom_EventScript_242029:: @ 8242029 msgbox BattleFrontier_BattleTowerBattleRoom_Text_24268C, 4 @@ -306,7 +306,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_242029:: @ 8242029 BattleFrontier_BattleTowerBattleRoom_EventScript_242046:: @ 8242046 call BattleFrontier_BattleTowerBattleRoom_EventScript_241EBA setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 msgbox BattleFrontier_BattleTowerBattleRoom_Text_2426B4, 4 @@ -315,20 +315,20 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_242046:: @ 8242046 waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleTowerBattleRoom_Text_242744, 4 goto BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 BattleFrontier_BattleTowerBattleRoom_EventScript_242085:: @ 8242085 setvar VAR_0x8004, 1 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattleTowerBattleRoom_EventScript_2420B2 msgbox BattleFrontier_BattleTowerBattleRoom_Text_2427F9, 4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattleTowerBattleRoom_EventScript_2420B2:: @ 82420B2 msgbox BattleFrontier_BattleTowerBattleRoom_Text_2428E0, 4 @@ -340,7 +340,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_2420B2:: @ 82420B2 BattleFrontier_BattleTowerBattleRoom_EventScript_2420CF:: @ 82420CF call BattleFrontier_BattleTowerBattleRoom_EventScript_241EBA setvar VAR_0x8004, 12 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 2 goto_eq BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 msgbox BattleFrontier_BattleTowerBattleRoom_Text_2428F7, 4 @@ -349,7 +349,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_2420CF:: @ 82420CF waitmessage waitfanfare setvar VAR_0x8004, 13 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleTowerBattleRoom_Text_24295D, 4 goto BattleFrontier_BattleTowerBattleRoom_EventScript_241DF6 @@ -360,7 +360,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_24210E:: @ 824210E setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, SPECIAL_BATTLE_TOWER setvar VAR_0x8005, 0 @@ -370,17 +370,17 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_24210E:: @ 824210E compare VAR_0x8004, 3 goto_eq BattleFrontier_BattleTowerBattleRoom_EventScript_24215A setvar VAR_0x8004, 18 - special sub_81A1780 + special CallFrontierUtilFunc special HealPlayerParty setvar VAR_0x8004, 21 - special sub_81A1780 + special CallFrontierUtilFunc BattleFrontier_BattleTowerBattleRoom_EventScript_24215A:: @ 824215A setvar VAR_0x8004, 15 special sub_8161F74 setvar VAR_0x8004, 1 setvar VAR_0x8005, 5 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattleArenaBattleRoom_EventScript_242170:: @ 8242170 @@ -390,7 +390,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_242170:: @ 8242170 BattleFrontier_BattlePyramidTop_EventScript_242170:: @ 8242170 BattleFrontier_BattleTowerBattleRoom_EventScript_242170:: @ 8242170 setvar VAR_0x8004, 22 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattleTowerBattleRoom_Movement_242179: @ 8242179 diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc index 9c4cd6bc9..de242cbcc 100644 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc @@ -47,7 +47,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_248F4D:: @ 8248F4D waitmovement 0 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_248FB4 applymovement 2, BattleFrontier_BattleTowerBattleRoom2_Movement_24953E @@ -59,7 +59,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_248F4D:: @ 8248F4D setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleTowerBattleRoom2_EventScript_249143 BattleFrontier_BattleTowerBattleRoom2_EventScript_248FB4:: @ 8248FB4 @@ -117,7 +117,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_24907E:: @ 824907E setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 special sub_8161F74 @@ -156,7 +156,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_249121:: @ 8249121 special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_FRONTIER_BATTLE_MODE, 3 call_if 1, BattleFrontier_BattleTowerBattleRoom2_EventScript_249514 playfanfare MUS_ME_ASA @@ -166,7 +166,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_249121:: @ 8249121 BattleFrontier_BattleTowerBattleRoom2_EventScript_249143:: @ 8249143 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc call BattleFrontier_BattleTowerBattleRoom2_EventScript_2492FD compare VAR_FRONTIER_BATTLE_MODE, 3 goto_eq BattleFrontier_BattleTowerBattleRoom2_EventScript_249283 @@ -234,7 +234,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_2492AF:: @ 82492AF setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 special sub_8161F74 @@ -252,7 +252,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_2492DB:: @ 82492DB waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleTowerBattleRoom2_EventScript_2492FD:: @ 82492FD diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index b70bb8049..1afa9e120 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -49,7 +49,7 @@ BattleFrontier_BattleTowerLobby_MapScript2_23E6DD: @ 823E6DD BattleFrontier_BattleTowerLobby_EventScript_23E707:: @ 823E707 setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end BattleFrontier_BattleTowerLobby_EventScript_23E710:: @ 823E710 @@ -68,7 +68,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E710:: @ 823E710 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 release end @@ -77,7 +77,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E758:: @ 823E758 lock faceplayer setvar VAR_0x8004, 10 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq BattleFrontier_BattleTowerLobby_EventScript_23E778 message BattleFrontier_BattleTowerLobby_Text_23F60D @@ -101,7 +101,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E780:: @ 823E780 BattleFrontier_BattleTowerLobby_EventScript_23E7A5:: @ 823E7A5 msgbox BattleFrontier_BattleTowerLobby_Text_2414D4, 4 setvar VAR_0x8004, 11 - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleTowerLobby_Text_241520, 9 call BattleFrontier_BattleTowerLobby_EventScript_23E84D setvar VAR_0x8004, 1 @@ -151,7 +151,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E84D:: @ 823E84D message BattleFrontier_BattleTowerLobby_Text_23F70F waitmessage setvar VAR_0x8004, 8 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty special HealPlayerParty setvar VAR_0x8004, 6 @@ -182,7 +182,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_23E8B4:: @ 823E8B4 BattleFrontier_BattleTowerBattleRoom_EventScript_23E8B4:: @ 823E8B4 BattleFrontier_BattleTowerLobby_EventScript_23E8B4:: @ 823E8B4 setvar VAR_0x8004, 19 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_eq BattleFrontier_BattleTowerLobby_EventScript_23E8D7 playse SE_SAVE @@ -208,7 +208,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_23E8E0:: @ 823E8E0 BattleFrontier_BattleTowerLobby_EventScript_23E8E0:: @ 823E8E0 setvar VAR_0x8004, 1 setvar VAR_0x8005, 6 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattleTowerLobby_EventScript_23E8EE:: @ 823E8EE @@ -228,7 +228,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E8EE:: @ 823E8EE setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleTowerLobby_EventScript_23F0F3 end @@ -262,13 +262,13 @@ BattleFrontier_BattleTowerLobby_EventScript_23E984:: @ 823E984 case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 case 127, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattleTowerLobby_EventScript_23F02B setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleTowerLobby_Text_2407A6, 4 fadescreen 1 call BattleFrontier_BattleTowerLobby_EventScript_23F2B7 @@ -287,7 +287,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E984:: @ 823E984 BattleFrontier_BattleTowerLobby_EventScript_23EA2A:: @ 823EA2A setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 0 special sub_8161F74 @@ -298,7 +298,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EA2A:: @ 823EA2A setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -342,13 +342,13 @@ BattleFrontier_BattleTowerLobby_EventScript_23EAED:: @ 823EAED case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 case 127, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattleTowerLobby_EventScript_23F02B setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleTowerLobby_Text_240A50, 4 fadescreen 1 call BattleFrontier_BattleTowerLobby_EventScript_23F2B7 @@ -367,7 +367,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EAED:: @ 823EAED BattleFrontier_BattleTowerLobby_EventScript_23EB93:: @ 823EB93 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 0 special sub_8161F74 @@ -378,7 +378,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EB93:: @ 823EB93 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -423,13 +423,13 @@ BattleFrontier_BattleTowerLobby_EventScript_23EC59:: @ 823EC59 case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 case 127, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattleTowerLobby_EventScript_23F02B setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleTowerLobby_Text_240DDB, 4 fadescreen 1 call BattleFrontier_BattleTowerLobby_EventScript_23F2B7 @@ -448,7 +448,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EC59:: @ 823EC59 BattleFrontier_BattleTowerLobby_EventScript_23ECFF:: @ 823ECFF setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 0 special sub_8161F74 @@ -459,7 +459,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23ECFF:: @ 823ECFF setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -503,13 +503,13 @@ BattleFrontier_BattleTowerLobby_EventScript_23EDC2:: @ 823EDC2 case 2, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 case 127, BattleFrontier_BattleTowerLobby_EventScript_23F0E6 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq BattleFrontier_BattleTowerLobby_EventScript_23F02B setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc msgbox BattleFrontier_BattleTowerLobby_Text_24115E, 4 fadescreen 1 call BattleFrontier_BattleTowerLobby_EventScript_23F2B7 @@ -528,7 +528,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EDC2:: @ 823EDC2 BattleFrontier_BattleTowerLobby_EventScript_23EE68:: @ 823EE68 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 0 special sub_8161F74 @@ -539,7 +539,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EE68:: @ 823EE68 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -634,7 +634,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFC7:: @ 823EFC7 setvar VAR_0x8004, 7 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall @@ -645,7 +645,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFE0:: @ 823EFE0 setvar VAR_0x8004, 7 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall @@ -656,7 +656,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFF9:: @ 823EFF9 setvar VAR_0x8004, 7 setvar VAR_0x8005, 0 setvar VAR_0x8006, 2 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall @@ -667,7 +667,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23F012:: @ 823F012 setvar VAR_0x8004, 7 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall @@ -717,7 +717,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23F0C2:: @ 823F0C2 BattleFrontier_BattleTowerLobby_EventScript_23F0D0:: @ 823F0D0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleTowerLobby_EventScript_23F0E6 end @@ -736,7 +736,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23F0F3:: @ 823F0F3 special SavePlayerParty setvar VAR_0x8004, 3 call BattleFrontier_BattleTowerLobby_EventScript_23F272 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_RESULT, 0 BattleFrontier_BattleTowerLobby_EventScript_23F108:: @ 823F108 @@ -924,7 +924,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_23F2B7:: @ 823F2B7 BattleFrontier_BattleTowerLobby_EventScript_23F2B7:: @ 823F2B7 setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 - special sub_81A1780 + special CallFrontierUtilFunc return BattleFrontier_BattleTowerLobby_EventScript_23F2C5:: @ 823F2C5 diff --git a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc index 10cf3194d..de179850d 100644 --- a/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerMultiBattleRoom/scripts.inc @@ -98,7 +98,7 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_243E9D:: @ 8243E9D setvar VAR_0x8004, 2 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc goto BattleFrontier_BattleTowerMultiBattleRoom_EventScript_241C03 end diff --git a/data/maps/BattleFrontier_RankingHall/scripts.inc b/data/maps/BattleFrontier_RankingHall/scripts.inc index e469024e9..9015694eb 100644 --- a/data/maps/BattleFrontier_RankingHall/scripts.inc +++ b/data/maps/BattleFrontier_RankingHall/scripts.inc @@ -62,9 +62,9 @@ BattleFrontier_RankingHall_EventScript_25E516:: @ 825E516 end BattleFrontier_RankingHall_EventScript_25E522:: @ 825E522 - special sub_81A4AA0 + special ShowRankingHallRecordsWindow waitbuttonpress - special sub_81A4AE8 + special ScrollRankingHallRecordsWindow waitbuttonpress special RemoveRecordsWindow releaseall diff --git a/data/maps/BattleFrontier_ScottsHouse/scripts.inc b/data/maps/BattleFrontier_ScottsHouse/scripts.inc index cf7f6a55e..ac7c5eb7a 100644 --- a/data/maps/BattleFrontier_ScottsHouse/scripts.inc +++ b/data/maps/BattleFrontier_ScottsHouse/scripts.inc @@ -114,7 +114,7 @@ BattleFrontier_ScottsHouse_EventScript_26381B:: @ 826381B setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 special sub_8161F74 @@ -123,7 +123,7 @@ BattleFrontier_ScottsHouse_EventScript_26381B:: @ 826381B setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 special sub_8161F74 @@ -157,7 +157,7 @@ BattleFrontier_ScottsHouse_EventScript_2638B4:: @ 82638B4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 special sub_8161F74 @@ -166,7 +166,7 @@ BattleFrontier_ScottsHouse_EventScript_2638B4:: @ 82638B4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 1 setvar VAR_0x8005, 1 special sub_8161F74 diff --git a/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc b/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc index 6103a1aaa..6ec39dfd2 100644 --- a/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc +++ b/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc @@ -37,7 +37,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_2008E7:: @ 82008E7 waitmovement 0 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, FallarborTown_BattleTentBattleRoom_EventScript_200B73 @@ -71,7 +71,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_20097E:: @ 820097E setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty warp MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @@ -87,12 +87,12 @@ FallarborTown_BattleTentBattleRoom_EventScript_20099C:: @ 820099C FallarborTown_BattleTentBattleRoom_EventScript_2009B3:: @ 82009B3 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 3, FallarborTown_BattleTentBattleRoom_EventScript_200AF3 applymovement 3, FallarborTown_BattleTentBattleRoom_Movement_200B9E @@ -107,7 +107,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_2009B3:: @ 82009B3 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc playfanfare MUS_ME_ASA waitfanfare special HealPlayerParty @@ -115,7 +115,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_2009B3:: @ 82009B3 FallarborTown_BattleTentBattleRoom_EventScript_200A2A:: @ 8200A2A setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 call_if 1, FallarborTown_BattleTentBattleRoom_EventScript_200B43 compare VAR_RESULT, 2 @@ -156,7 +156,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_200AF3:: @ 8200AF3 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty warp MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @@ -191,7 +191,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_200B51:: @ 8200B51 waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end FallarborTown_BattleTentBattleRoom_EventScript_200B73:: @ 8200B73 diff --git a/data/maps/FallarborTown_BattleTentLobby/scripts.inc b/data/maps/FallarborTown_BattleTentLobby/scripts.inc index daf76cba2..7c75ae4f0 100644 --- a/data/maps/FallarborTown_BattleTentLobby/scripts.inc +++ b/data/maps/FallarborTown_BattleTentLobby/scripts.inc @@ -22,7 +22,7 @@ FallarborTown_BattleTentLobby_MapScript2_1FFE85: @ 81FFE85 FallarborTown_BattleTentLobby_EventScript_1FFEAF:: @ 81FFEAF setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end FallarborTown_BattleTentLobby_EventScript_1FFEB8:: @ 81FFEB8 @@ -32,12 +32,12 @@ FallarborTown_BattleTentLobby_EventScript_1FFEB8:: @ 81FFEB8 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc releaseall end @@ -51,7 +51,7 @@ FallarborTown_BattleTentLobby_EventScript_1FFEED:: @ 81FFEED setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 3 setvar VAR_0x8005, 0 special sub_81B9B80 @@ -67,7 +67,7 @@ FallarborTown_BattleTentLobby_EventScript_1FFF27:: @ 81FFF27 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc message FallarborTown_BattleTentLobby_Text_2C4F69 waitmessage playfanfare MUS_FANFA4 @@ -99,7 +99,7 @@ FallarborTown_BattleTentLobby_EventScript_1FFF93:: @ 81FFF93 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 3 setvar VAR_0x8005, 0 special sub_81B9B80 @@ -123,7 +123,7 @@ FallarborTown_BattleTentLobby_EventScript_1FFFCD:: @ 81FFFCD setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 goto FallarborTown_BattleTentLobby_EventScript_20013C @@ -152,13 +152,13 @@ FallarborTown_BattleTentLobby_EventScript_20005D:: @ 820005D setvar VAR_FRONTIER_BATTLE_MODE, 0 setvar VAR_RESULT, 2 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq FallarborTown_BattleTentLobby_EventScript_200176 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 2 - special sub_81A1780 + special CallFrontierUtilFunc msgbox FallarborTown_BattleTentLobby_Text_2C4BC8, 4 fadescreen 1 setvar VAR_0x8004, 2 @@ -177,17 +177,17 @@ FallarborTown_BattleTentLobby_EventScript_2000E2:: @ 82000E2 setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 0 special sub_81B9B80 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -200,7 +200,7 @@ FallarborTown_BattleTentLobby_EventScript_20013C:: @ 820013C special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc msgbox FallarborTown_BattleTentLobby_Text_2C4DC3, 4 closemessage call FallarborTown_BattleTentLobby_EventScript_2001CF @@ -230,7 +230,7 @@ FallarborTown_BattleTentLobby_EventScript_2001AB:: @ 82001AB setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto FallarborTown_BattleTentLobby_EventScript_2001C5 FallarborTown_BattleTentLobby_EventScript_2001C2:: @ 82001C2 diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc index 66775d417..1dfc72bcc 100644 --- a/data/maps/LilycoveCity_ContestLobby/scripts.inc +++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc @@ -562,7 +562,7 @@ LilycoveCity_ContestLobby_EventScript_21A784:: @ 821A784 lockall setvar VAR_0x8004, 7 setvar VAR_0x8005, 7 - special sub_81A1780 + special CallFrontierUtilFunc waitbuttonpress special RemoveRecordsWindow releaseall diff --git a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc index e89406f31..242d1b8d8 100644 --- a/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_2F/scripts.inc @@ -263,13 +263,13 @@ MossdeepCity_SpaceCenter_2F_EventScript_224032:: @ 8224032 special ReducePlayerPartyToThree setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, SPECIAL_BATTLE_STEVEN setvar VAR_0x8005, 0 special DoSpecialTrainerBattle waitstate setvar VAR_0x8004, 6 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty switch VAR_RESULT case 1, MossdeepCity_SpaceCenter_2F_EventScript_224071 diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc index 7321f7662..833abdf99 100644 --- a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc +++ b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc @@ -66,7 +66,7 @@ SlateportCity_BattleTentCorridor_EventScript_209A1B:: @ 8209A1B setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty warp MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @@ -74,12 +74,12 @@ SlateportCity_BattleTentCorridor_EventScript_209A1B:: @ 8209A1B SlateportCity_BattleTentBattleRoom_EventScript_209A39:: @ 8209A39 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 3, SlateportCity_BattleTentBattleRoom_EventScript_209A7B @ case 3, SlateportCity_BattleTentCorridor_EventScript_209A7B @@ -92,7 +92,7 @@ SlateportCity_BattleTentCorridor_EventScript_209A7B:: @ 8209A7B setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty warp MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate diff --git a/data/maps/SlateportCity_BattleTentCorridor/scripts.inc b/data/maps/SlateportCity_BattleTentCorridor/scripts.inc index 0a9eb6cf5..c2ef5e3da 100644 --- a/data/maps/SlateportCity_BattleTentCorridor/scripts.inc +++ b/data/maps/SlateportCity_BattleTentCorridor/scripts.inc @@ -70,7 +70,7 @@ SlateportCity_BattleTentCorridor_EventScript_208EEE:: @ 8208EEE SlateportCity_BattleTentCorridor_EventScript_208F0D:: @ 8208F0D setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 call_if 1, SlateportCity_BattleTentCorridor_EventScript_209014 compare VAR_RESULT, 2 @@ -136,7 +136,7 @@ SlateportCity_BattleTentCorridor_EventScript_209022:: @ 8209022 waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end SlateportCity_BattleTentCorridor_EventScript_209044:: @ 8209044 diff --git a/data/maps/SlateportCity_BattleTentLobby/scripts.inc b/data/maps/SlateportCity_BattleTentLobby/scripts.inc index 76b12e31e..2e7886a2e 100644 --- a/data/maps/SlateportCity_BattleTentLobby/scripts.inc +++ b/data/maps/SlateportCity_BattleTentLobby/scripts.inc @@ -22,7 +22,7 @@ SlateportCity_BattleTentLobby_MapScript2_20874F: @ 820874F SlateportCity_BattleTentLobby_EventScript_208779:: @ 8208779 setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end SlateportCity_BattleTentLobby_EventScript_208782:: @ 8208782 @@ -32,12 +32,12 @@ SlateportCity_BattleTentLobby_EventScript_208782:: @ 8208782 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc releaseall end @@ -50,7 +50,7 @@ SlateportCity_BattleTentLobby_EventScript_2087B7:: @ 82087B7 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 3 setvar VAR_0x8005, 0 special sub_81B9D08 @@ -66,7 +66,7 @@ SlateportCity_BattleTentLobby_EventScript_2087E9:: @ 82087E9 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc message SlateportCity_BattleTentLobby_Text_23F68C waitmessage playfanfare MUS_FANFA4 @@ -84,7 +84,7 @@ SlateportCity_BattleTentLobby_EventScript_208837:: @ 8208837 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 3 setvar VAR_0x8005, 0 special sub_81B9D08 @@ -110,7 +110,7 @@ SlateportCity_BattleTentLobby_EventScript_208871:: @ 8208871 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 setvar VAR_0x8006, 2 goto SlateportCity_BattleTentLobby_EventScript_2089AC @@ -141,7 +141,7 @@ SlateportCity_BattleTentLobby_EventScript_208906:: @ 8208906 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 2 - special sub_81A1780 + special CallFrontierUtilFunc msgbox SlateportCity_BattleTentLobby_Text_2C5B06, 5 switch VAR_RESULT case 0, SlateportCity_BattleTentLobby_EventScript_208A2B @@ -152,17 +152,17 @@ SlateportCity_BattleTentLobby_EventScript_208950:: @ 8208950 setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 0 special sub_81B9D08 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc closemessage delay 2 call SlateportCity_BattleTentLobby_EventScript_27134F @@ -224,7 +224,7 @@ SlateportCity_BattleTentLobby_EventScript_208A14:: @ 8208A14 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto SlateportCity_BattleTentLobby_EventScript_208A2E SlateportCity_BattleTentLobby_EventScript_208A2B:: @ 8208A2B diff --git a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc index 36d0edd3a..4bd15c332 100644 --- a/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc +++ b/data/maps/SootopolisCity_MysteryEventsHouse_1F/scripts.inc @@ -5,7 +5,7 @@ SootopolisCity_MysteryEventsHouse_1F_MapScripts:: @ 8227953 SootopolisCity_MysteryEventsHouse_1F_MapScript1_22795E: @ 822795E setvar VAR_0x8004, 16 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 call_if 1, SootopolisCity_MysteryEventsHouse_1F_EventScript_22797D compare VAR_0x40C0, 0 @@ -75,7 +75,7 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_227A24:: @ 8227A24 lock faceplayer setvar VAR_0x8004, 16 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 goto_eq SootopolisCity_MysteryEventsHouse_1F_EventScript_227A4E compare VAR_TEMP_1, 1 diff --git a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc index 7d30cf2c0..41c8a9502 100644 --- a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc +++ b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc @@ -36,7 +36,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_202348:: @ 8202348 waitmovement 0 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 0 goto_if 5, VerdanturfTown_BattleTentBattleRoom_EventScript_20243C @@ -58,7 +58,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_2023AA:: @ 82023AA setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty warp MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @@ -66,12 +66,12 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_2023AA:: @ 82023AA VerdanturfTown_BattleTentBattleRoom_EventScript_2023C8:: @ 82023C8 setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc addvar VAR_RESULT, 1 setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 copyvar VAR_0x8006, VAR_RESULT - special sub_81A1780 + special CallFrontierUtilFunc switch VAR_RESULT case 3, VerdanturfTown_BattleTentBattleRoom_EventScript_202501 applymovement 2, VerdanturfTown_BattleTentBattleRoom_Movement_202581 @@ -85,7 +85,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_2023C8:: @ 82023C8 special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc playfanfare MUS_ME_ASA waitfanfare special HealPlayerParty @@ -93,7 +93,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_2023C8:: @ 82023C8 VerdanturfTown_BattleTentBattleRoom_EventScript_20243C:: @ 820243C setvar VAR_0x8004, 1 setvar VAR_0x8005, 2 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_RESULT, 1 call_if 1, VerdanturfTown_BattleTentBattleRoom_EventScript_202565 compare VAR_RESULT, 2 @@ -131,7 +131,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_202501:: @ 8202501 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty warp MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @@ -146,7 +146,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_20251F:: @ 820251F waitse fadescreen 1 setvar VAR_0x8004, 4 - special sub_81A1780 + special CallFrontierUtilFunc end VerdanturfTown_BattleTentBattleRoom_MapScript2_202541: @ 8202541 diff --git a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc index a4cfc20c2..0368859c2 100644 --- a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc +++ b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc @@ -22,7 +22,7 @@ VerdanturfTown_BattleTentLobby_MapScript2_2016EF: @ 82016EF VerdanturfTown_BattleTentLobby_EventScript_201719:: @ 8201719 setvar VAR_0x8004, 0 - special sub_81A1780 + special CallFrontierUtilFunc end VerdanturfTown_BattleTentLobby_EventScript_201722:: @ 8201722 @@ -32,12 +32,12 @@ VerdanturfTown_BattleTentLobby_EventScript_201722:: @ 8201722 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc releaseall end @@ -51,7 +51,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201757:: @ 8201757 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 5 setvar VAR_0x8005, 0 special sub_81B99B4 @@ -67,7 +67,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201791:: @ 8201791 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc message VerdanturfTown_BattleTentLobby_Text_24A554 waitmessage playfanfare MUS_FANFA4 @@ -99,7 +99,7 @@ VerdanturfTown_BattleTentLobby_EventScript_2017FD:: @ 82017FD setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 5 setvar VAR_0x8005, 0 special sub_81B99B4 @@ -124,7 +124,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201837:: @ 8201837 setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_TEMP_0, 255 goto VerdanturfTown_BattleTentLobby_EventScript_2019AE @@ -153,13 +153,13 @@ VerdanturfTown_BattleTentLobby_EventScript_2018CF:: @ 82018CF setvar VAR_FRONTIER_BATTLE_MODE, 0 setvar VAR_RESULT, 2 setvar VAR_0x8004, 15 - special sub_81A1780 + special CallFrontierUtilFunc compare VAR_0x8004, 1 goto_eq VerdanturfTown_BattleTentLobby_EventScript_2019E8 setvar VAR_0x8004, 2 setvar VAR_0x8005, 1 setvar VAR_0x8006, 2 - special sub_81A1780 + special CallFrontierUtilFunc msgbox VerdanturfTown_BattleTentLobby_Text_2C5633, 4 fadescreen 1 setvar VAR_0x8004, 1 @@ -178,17 +178,17 @@ VerdanturfTown_BattleTentLobby_EventScript_201954:: @ 8201954 setvar VAR_TEMP_0, 0 setvar VAR_0x8004, 2 setvar VAR_0x8005, 4 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 0 special sub_81B99B4 setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 1 - special sub_81A1780 + special CallFrontierUtilFunc setvar VAR_0x8004, 2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc special LoadPlayerParty closemessage delay 2 @@ -201,7 +201,7 @@ VerdanturfTown_BattleTentLobby_EventScript_2019AE:: @ 82019AE special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 - special sub_81A1780 + special CallFrontierUtilFunc msgbox VerdanturfTown_BattleTentLobby_Text_2C56A2, 4 closemessage call VerdanturfTown_BattleTentLobby_EventScript_201A41 @@ -231,7 +231,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201A1D:: @ 8201A1D setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 - special sub_81A1780 + special CallFrontierUtilFunc goto VerdanturfTown_BattleTentLobby_EventScript_201A37 VerdanturfTown_BattleTentLobby_EventScript_201A34:: @ 8201A34 diff --git a/data/specials.inc b/data/specials.inc index 08e12e5e0..5c1653d49 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -242,7 +242,7 @@ gSpecials:: @ 81DBA64 def_special FinishCyclingRoadChallenge def_special UpdateCyclingRoadState def_special GetLeadMonFriendshipScore - def_special sub_81A1780 + def_special CallFrontierUtilFunc def_special sub_8161F74 def_special CallBattleDomeFunction def_special sub_8195960 @@ -448,8 +448,8 @@ gSpecials:: @ 81DBA64 def_special sub_80F90DC def_special sub_80F910C def_special sub_80F9160 - def_special sub_81A4AA0 - def_special sub_81A4AE8 + def_special ShowRankingHallRecordsWindow + def_special ScrollRankingHallRecordsWindow def_special sub_8139F20 def_special sub_80F9134 def_special sub_80F9154 diff --git a/include/apprentice.h b/include/apprentice.h index ca0b04800..195106c53 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -9,7 +9,8 @@ struct ApprenticeTrainer u16 otId; u8 facilityClass; u16 species[APPRENTICE_SPECIES_COUNT]; - u8 rest[14]; + u8 id; + u16 easyChatWords[6]; }; extern const struct ApprenticeTrainer gApprentices[]; diff --git a/include/battle_dome.h b/include/battle_dome.h index d05b08689..2265f14ce 100644 --- a/include/battle_dome.h +++ b/include/battle_dome.h @@ -3,7 +3,7 @@ extern u32 gUnknown_0203CD70; -s32 GetTrainerMonCountInBits(u16 tournamentTrainerId); +s32 GetDomeTrainerMonCountInBits(u16 tournamentTrainerId); s32 TrainerIdToDomeTournamentId(u16 trainerId); #endif // GUARD_BATTLE_DOME_H diff --git a/include/battle_frontier_1.h b/include/battle_frontier_1.h deleted file mode 100644 index bc777914a..000000000 --- a/include/battle_frontier_1.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_BATTLE_FRONTIER_1_H -#define GUARD_BATTLE_FRONTIER_1_H - -bool32 sub_8196034(void); - -#endif // GUARD_BATTLE_FRONTIER_1_H diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h deleted file mode 100644 index 3bd605829..000000000 --- a/include/battle_frontier_2.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef GUARD_BATTLE_FRONTIER_2_H -#define GUARD_BATTLE_FRONTIER_2_H - -#define FRONTIER_BEFORE_TEXT 0 -#define FRONTIER_WIN_TEXT 1 -#define FRONTIER_LOSE_TEXT 2 - -void CopyFrontierTrainerText(u8 whichText, u16 trainerId); -void sub_81A8934(u8); -void sub_81A895C(void); -u16 sub_81A89A0(u8); -void sub_81A8AF8(void); -bool8 InBattlePike(void); -void sub_81AA078(u16*, u8); -void sub_81A4C30(void); -bool8 sub_81A6BF4(void); -u8 sub_81A6CA8(u8, u8); - -#endif // GUARD_BATTLE_FRONTIER_2_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 204a09f60..b5ad4f072 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -38,4 +38,7 @@ #define SPECIAL_BATTLE_PIKE_DOUBLE 9 #define SPECIAL_BATTLE_PYRAMID 10 +// For 'ShowFacilityResultsWindow' function which is a part of the 'CallFrontierUtilFunc' special. +#define RESULTS_LINK_CONTEST 7 + #endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H diff --git a/include/field_specials.h b/include/field_specials.h index 0e2daf9c3..50823ba7d 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -15,5 +15,6 @@ bool32 sub_8138168(void); bool32 sub_81381B0(void); bool32 sub_81381F8(void); bool32 CountSSTidalStep(u16 delta); +void sub_813A878(u8 a0); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/frontier_util.h b/include/frontier_util.h new file mode 100644 index 000000000..cfc3a8af4 --- /dev/null +++ b/include/frontier_util.h @@ -0,0 +1,31 @@ +#ifndef GUARD_FRONTIER_UTIL_H +#define GUARD_FRONTIER_UTIL_H + +#define FRONTIER_BEFORE_TEXT 0 +#define FRONTIER_PLAYER_LOST_TEXT 1 +#define FRONTIER_PLAYER_WON_TEXT 2 + +void CallFrontierUtilFunc(void); +u8 sub_81A3610(void); +void CopyFrontierTrainerText(u8 whichText, u16 trainerId); +void sub_81A3908(void); +u32 GetCurrentFacilityWinStreak(void); +void sub_81A3ACC(void); +u8 GetPlayerSymbolCountForFacility(u8 facility); +void ShowRankingHallRecordsWindow(void); +void ScrollRankingHallRecordsWindow(void); +void ClearRankingHallRecords(void); +u8 GetFrontierBrainTrainerPicIndex(void); +u8 GetFrontierBrainTrainerClass(void); +void CopyFrontierBrainTrainerName(u8 *dst); +bool8 IsFrontierBrainFemale(void); +void SetFrontierBrainEventObjGfx_2(void); +void CreateFrontierBrainPokemon(void); +u16 GetFrontierBrainMonSpecies(u8 monId); +void SetFrontierBrainEventObjGfx(u8 facility); +u16 GetFrontierBrainMonMove(u8 monId, u8 moveSlotId); +u8 GetFrontierBrainMonNature(u8 monId); +u8 GetFrontierBrainMonEvs(u8 monId, u8 evStatId); +s32 GetFronterBrainSymbol(void); + +#endif // GUARD_FRONTIER_UTIL_H diff --git a/include/global.h b/include/global.h index 0cff281e7..c2b139e7a 100644 --- a/include/global.h +++ b/include/global.h @@ -137,6 +137,7 @@ enum LanguageId #define BAG_BERRIES_COUNT 46 #define PYRAMID_BAG_ITEMS_COUNT 10 +#define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. // string lengths #define ITEM_NAME_LENGTH 14 @@ -331,8 +332,8 @@ struct EmeraldBattleTowerRecord /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[4]; /*0x10*/ u16 greeting[6]; - /*0x1C*/ u16 unk1C[6]; - /*0x28*/ u16 unk28[6]; + /*0x1C*/ u16 speechWon[6]; + /*0x28*/ u16 speechLost[6]; /*0x34*/ struct UnknownPokemonStruct party[4]; /*0xE4*/ u8 language; /*0xE8*/ u32 checksum; @@ -400,14 +401,11 @@ struct BattleFrontier /*0xCB2*/ u16 curChallengeBattleNum; // In case of battle pyramid, the floor. /*0xCB4*/ u16 field_CB4[20]; /*0xCDC*/ u32 field_CDC; - /*0xCE0*/ u16 winStreaks[4][2]; - /*0xCF0*/ u16 field_CF0[2]; - /*0xCF4*/ u16 field_CF4[2]; - /*0xCF8*/ u16 field_CF8[2]; - /*0xCFC*/ u16 field_CFC[2]; - /*0xD06*/ u16 field_D00; - /*0xD06*/ u16 field_D02; - /*0xD06*/ u16 field_D04; + /*0xCE0*/ u16 towerWinStreaks[4][2]; + /*0xCF0*/ u16 towerRecordWinStreaks[4][2]; + /*0xD00*/ u16 field_D00; + /*0xD02*/ u16 field_D02; + /*0xD04*/ u16 field_D04; /*0xD06*/ u8 field_D06; /*0xD07*/ u8 field_D07; /*0xD08*/ u8 field_D08_0:1; @@ -421,43 +419,37 @@ struct BattleFrontier /*0xD09*/ u8 filler_D09; /*0xD0A*/ u8 field_D0A; /*0xD0B*/ u8 field_D0B; - /*0xD0C*/ u16 field_D0C[2][2]; - /*0xD14*/ u16 field_D14[2][2]; - /*0xD1C*/ u16 field_D1C[2][2]; + /*0xD0C*/ u16 domeWinStreaks[2][2]; + /*0xD14*/ u16 domeRecordWinStreaks[2][2]; + /*0xD1C*/ u16 domeTotalChampionships[2][2]; /*0xD24*/ struct BattleDomeTrainer domeTrainers[DOME_TOURNAMENT_TRAINERS_COUNT]; - /*0xD64*/ u16 domeMonId[DOME_TOURNAMENT_TRAINERS_COUNT][3]; + /*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][3]; /*0xD64*/ u16 field_DC4[2]; - /*0xDC8*/ u16 field_DC8[2][2]; - /*0xDD0*/ u16 field_DD0[2][2]; + /*0xDC8*/ u16 palaceWinStreaks[2][2]; + /*0xDD0*/ u16 palaceRecordWinStreaks[2][2]; /*0xDD8*/ u16 field_DD8; - /*0xDDA*/ u16 field_DDA[2]; - /*0xDDE*/ u16 field_DDE[2]; - /*0xDE2*/ u16 field_DE2[2][2]; - /*0xDEA*/ u16 field_DEA[2]; - /*0xDEE*/ u16 field_DEE; - /*0xDF0*/ u16 field_DF0; - /*0xDF2*/ u16 field_DF2; - /*0xDF4*/ u16 field_DF4; - /*0xDF6*/ u16 field_DF6; - /*0xDF8*/ u16 field_DF8; - /*0xDFA*/ u16 field_DFA; - /*0xDFC*/ u16 field_DFC; - /*0xDFE*/ u16 field_DFE; - /*0xE00*/ u16 field_E00; + /*0xDDA*/ u16 arenaWinStreaks[2]; + /*0xDDE*/ u16 arenaRecordStreaks[2]; + /*0xDE2*/ u16 factoryWinStreaks[2][2]; + /*0xDEA*/ u16 factoryRecordWinStreaks[2][2]; + /*0xDF6*/ u16 factoryRentsCount[2][2]; + /*0xDFA*/ u16 factoryRecordRentsCount[2][2]; /*0xE02*/ u16 field_E02; - /*0xE04*/ u16 field_E04[2]; - /*0xE08*/ u16 field_E08[9]; - /*0xE1A*/ u16 field_E1A[2]; - /*0xE1E*/ u16 field_E1E[7]; + /*0xE04*/ u16 pikeWinStreaks[2]; + /*0xE08*/ u16 pikeRecordStreaks[2]; + /*0xE0C*/ u16 pikeTotalStreaks[2]; + /*0xE10*/ u16 field_E10[5]; + /*0xE1A*/ u16 pyramidWinStreaks[2]; + /*0xE1E*/ u16 pyramidRecordStreaks[2]; + /*0xE1E*/ u16 field_E1F[5]; /*0xE2C*/ struct PyramidBag pyramidBag; /*0xE58*/ u16 field_E58; /*0xE6A*/ u16 field_E6A; /*0xE6C*/ u16 field_E6C; /*0xE6E*/ u16 field_E6E; /*0xE70*/ struct Struct_field_E70 field_E70[6]; - /*0xEB8*/ u16 frontierBattlePoints; - /*0xEBA*/ u8 field_EBA; - /*0xEBB*/ u8 field_EBB; + /*0xEB8*/ u16 battlePoints; + /*0xEBA*/ u16 field_EBA; /*0xEBC*/ u32 battlesCount; /*0xEC0*/ u16 field_EC0[16]; /*0xEE0*/ u8 field_EE0; @@ -491,6 +483,24 @@ struct PlayersApprentice /*0xB8*/ struct Sav2_B8 field_B8[9]; }; +struct RankingHall1P +{ + u8 id[4]; + u16 winStreak; + u8 name[PLAYER_NAME_LENGTH + 1]; + u8 language; +}; + +struct RankingHall2P +{ + u8 id1[4]; + u8 id2[4]; + u16 winStreak; + u8 name1[PLAYER_NAME_LENGTH + 1]; + u8 name2[PLAYER_NAME_LENGTH + 1]; + u8 language; +}; + struct SaveBlock2 { /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; @@ -515,12 +525,13 @@ struct SaveBlock2 /*0xA8*/ u32 field_A8; /*0xAC*/ u32 encryptionKey; /*0xB0*/ struct PlayersApprentice playerApprentice; - /*0xDC*/ struct Apprentice apprentices[4]; + /*0xDC*/ struct Apprentice apprentices[4]; // From record mixing. /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; /*0x20C*/ struct BerryPickingResults berryPick; - /*0x21C*/ u8 field_21C[1032]; - /*0x624*/ u16 contestLinkResults[20]; // 4 positions for 5 categories, possibly a struct or a 2d array + /*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][3]; // From record mixing. + /*0x57C*/ struct RankingHall2P hallRecords2P[2][3]; // From record mixing. + /*0x624*/ u16 contestLinkResults[5][4]; // 4 positions for 5 categories. /*0x64C*/ struct BattleFrontier frontier; }; // sizeof=0xF2C diff --git a/include/menu.h b/include/menu.h index d105eb5ec..175eabc07 100644 --- a/include/menu.h +++ b/include/menu.h @@ -26,7 +26,6 @@ u16 RunTextPrintersAndIsPrinter0Active(void); void sub_81973A4(void); void NewMenuHelpers_DrawDialogueFrame(u8, u8); void sub_819746C(u8 windowId, bool8 copyToVram); -void NewMenuHelpers_DrawStdWindowFrame(u8, u8); u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor); void PrintPlayerNameOnWindow(u8, const u8*, u16, u16); void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); diff --git a/include/new_game.h b/include/new_game.h index 7e1169ec3..7032647ea 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -1,9 +1,9 @@ #ifndef GUARD_NEW_GAME_H #define GUARD_NEW_GAME_H -void WriteUnalignedWord(u32 var, u8 *dataPtr); -u32 ReadUnalignedWord(u8* dataPtr); -void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom); +void SetTrainerId(u32 trainerId, u8 *dst); +u32 GetTrainerId(u8 *trainerId); +void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); void sub_808447C(void); void Sav2_ClearSetDefault(void); diff --git a/include/record_mixing.h b/include/record_mixing.h index f1b74c143..0d50f46f9 100644 --- a/include/record_mixing.h +++ b/include/record_mixing.h @@ -1,35 +1,13 @@ #ifndef GUARD_RECORD_MIXING_H #define GUARD_RECORD_MIXING_H -// Exported type declarations -struct UnkRecordMixingStruct2a +struct PlayerHallRecords { - u8 playerId[4]; - u16 field_4; - u8 playerName[PLAYER_NAME_LENGTH + 1]; - u8 language; + struct RankingHall1P onePlayer[9][2]; + struct RankingHall2P twoPlayers[2]; }; -struct UnkRecordMixingStruct2b -{ - u8 playerId1[4]; - u8 playerId2[4]; - u16 field_8; - u8 playerName1[PLAYER_NAME_LENGTH + 1]; - u8 playerName2[PLAYER_NAME_LENGTH + 1]; - u8 language; -}; - -struct UnkRecordMixingStruct2 -{ - struct UnkRecordMixingStruct2a field_0[9][2]; - struct UnkRecordMixingStruct2b field_120[2]; -}; - -// Exported RAM declarations - -// Exported ROM declarations void sub_80E6BE8(void); -void sub_80E8260(struct UnkRecordMixingStruct2 *arg0); +void GetPlayerHallRecords(struct PlayerHallRecords *dst); #endif //GUARD_RECORD_MIXING_H diff --git a/include/recorded_battle.h b/include/recorded_battle.h index 81c88a15e..84c5c2ea2 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -14,16 +14,16 @@ u8 sub_81850D0(void); u8 sub_81850DC(u8 *arg0); void sub_81851A8(u8 *arg0); bool32 CanCopyRecordedBattleSaveData(void); -u32 MoveRecordedBattleToSaveData(void); +bool32 MoveRecordedBattleToSaveData(void); void PlayRecordedBattle(void (*CB2_After)(void)); u8 GetRecordedBattleFrontierFacility(void); -u8 sub_8185EAC(void); +u8 GetRecordedBattleFronterBrainSymbol(void); void RecordedBattle_SaveParties(void); u8 GetActiveBattlerLinkPlayerGender(void); void sub_8185F84(void); void sub_8185F90(u16 arg0); u8 sub_8185FAC(void); -u8 GetBattleStyleInRecordedBattle(void); +u8 GetBattleSceneInRecordedBattle(void); u8 GetTextSpeedInRecordedBattle(void); void RecordedBattle_CopyBattlerMoves(void); void sub_818603C(u8 arg0); @@ -31,11 +31,11 @@ u32 GetAiScriptsInRecordedBattle(void); void sub_8186444(void); bool8 sub_8186450(void); void sub_8186468(u8 *dst); -u8 sub_818649C(void); -u8 sub_81864A8(void); -u8 sub_81864B4(void); -u8 sub_81864C0(void); -void sub_81864CC(void); -u16 *sub_81864E0(void); +u8 GetRecordedBattleRecordMixFriendClass(void); +u8 GetRecordedBattleApprenticeId(void); +u8 GetRecordedBattleRecordMixFriendLanguage(void); +u8 GetRecordedBattleApprenticeLanguage(void); +void RecordedBattle_SaveBattleOutcome(void); +u16 *GetRecordedBattleEasyChatSpeech(void); #endif // GUARD_RECORDED_BATTLE_H diff --git a/include/save.h b/include/save.h index a87e31e99..a5f014904 100644 --- a/include/save.h +++ b/include/save.h @@ -94,7 +94,7 @@ u16 CalculateChecksum(void *data, u16 size); void UpdateSaveAddresses(void); u8 HandleSavingData(u8 saveType); u8 TrySavingData(u8 saveType); -u8 sub_8153380(void); +bool8 sub_8153380(void); bool8 sub_81533AC(void); u8 sub_81533E0(void); u8 sub_8153408(void); diff --git a/include/strings.h b/include/strings.h index c563353ec..9338ae624 100644 --- a/include/strings.h +++ b/include/strings.h @@ -877,4 +877,47 @@ extern const u8 gText_PokemonOnHook[]; extern const u8 gText_NotEvenANibble[]; extern const u8 gText_ItGotAway[]; +// Frontier records. +extern const u8 gText_WinStreak[]; +extern const u8 gText_Record[]; +extern const u8 gText_Current[]; +extern const u8 gText_RoomsCleared[]; +extern const u8 gText_Prev[]; +extern const u8 gText_SingleBattleRoomResults[]; +extern const u8 gText_DoubleBattleRoomResults[]; +extern const u8 gText_MultiBattleRoomResults[]; +extern const u8 gText_LinkMultiBattleRoomResults[]; +extern const u8 gText_Lv502[]; +extern const u8 gText_OpenLv[]; +extern const u8 gText_RentalSwap[]; +extern const u8 gText_ClearStreak[]; +extern const u8 gText_Total[]; +extern const u8 gText_Championships[]; +extern const u8 gText_SingleBattleTourneyResults[]; +extern const u8 gText_DoubleBattleTourneyResults[]; +extern const u8 gText_SingleBattleHallResults[]; +extern const u8 gText_DoubleBattleHallResults[]; +extern const u8 gText_BattleChoiceResults[]; +extern const u8 gText_TimesCleared[]; +extern const u8 gText_KOsInARow[]; +extern const u8 gText_SetKOTourneyResults[]; +extern const u8 gText_TimesVar1[]; +extern const u8 gText_BattleSwapSingleResults[]; +extern const u8 gText_BattleSwapDoubleResults[]; +extern const u8 gText_FloorsCleared[]; +extern const u8 gText_BattleQuestResults[]; +extern const u8 gText_LinkContestResults[]; +extern const u8 gText_4th[]; +extern const u8 gText_3rd[]; +extern const u8 gText_2nd[]; +extern const u8 gText_1st[]; +extern const u8 gText_SpaceAndSpace[]; +extern const u8 gText_CommaSpace[]; +extern const u8 gText_NewLine[]; +extern const u8 gText_ScrollTextUp[]; +extern const u8 gText_Space2[]; +extern const u8 gText_Are[]; +extern const u8 gText_Are2[]; +extern const u8 gText_123Dot[][3]; + #endif //GUARD_STRINGS_H diff --git a/include/tv.h b/include/tv.h index 4f1d7730f..5528bada7 100644 --- a/include/tv.h +++ b/include/tv.h @@ -51,5 +51,7 @@ void BravoTrainerPokemonProfile_BeforeInterview1(u16 move); void UpdateTVScreensOnMap(int, int); void TV_PrintIntToStringVar(u8 varIdx, int value); void SaveRecordedItemPurchasesForTVShow(void); +bool8 sub_80EE818(void); +void sub_80EE8C8(u16 winStreak, u8 facilityAndMode); #endif //GUARD_TV_H diff --git a/ld_script.txt b/ld_script.txt index 427313081..911cfaa89 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -264,6 +264,7 @@ SECTIONS { src/menu.o(.text); src/battle_factory.o(.text); src/apprentice.o(.text); + src/frontier_util.o(.text); asm/battle_frontier_2.o(.text); src/item_menu.o(.text); src/list_menu.o(.text); @@ -567,6 +568,7 @@ SECTIONS { src/menu.o(.rodata); src/battle_factory.o(.rodata); src/apprentice.o(.rodata); + src/frontier_util.o(.rodata); data/battle_frontier_2.o(.rodata); src/item_menu.o(.rodata); src/list_menu.o(.rodata); diff --git a/src/apprentice.c b/src/apprentice.c index 065d9cf16..2feac49a7 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -388,112 +388,128 @@ const struct ApprenticeTrainer gApprentices[] = .otId = 0xBDC9, .facilityClass = 0x43, .species = {SPECIES_BEAUTIFLY, SPECIES_DUSTOX, SPECIES_ILLUMISE, SPECIES_SHIFTRY, SPECIES_BRELOOM, SPECIES_NINJASK, SPECIES_SHEDINJA, SPECIES_PINSIR, SPECIES_HERACROSS, SPECIES_VOLBEAT}, - .rest = {0, 0, 0x1D, 8, 0x3e, 20, 0, 12, 1, 10, 0x30, 6, 0x44, 20}, + .id = 0, + .easyChatWords = {0x81D, 0x143E, 0xC00, 0xA01, 0x630, 0x1444}, }, { .name = {_("ヒロオ"), _("LIONEL"), _("LIONEL"), _("CAIO"), _("LUDWIG"), _("LEO")}, .otId = 0xCF09, .facilityClass = 0x2B, .species = {SPECIES_SWELLOW, SPECIES_SWALOT, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_TORKOAL, SPECIES_HARIYAMA, SPECIES_MIGHTYENA, SPECIES_LUDICOLO, SPECIES_CRAWDAUNT, SPECIES_WHISCASH}, - .rest = {1, 0, 0x38, 12, 1, 10, 0x30, 6, 6, 10, 0x20, 0x10, 0x13, 0x22}, + .id = 1, + .easyChatWords = {0xC38, 0xA01, 0x630, 0xA06, 0x1020, 0x2213}, }, { .name = {_("ケイジ"), _("SONNY"), _("HERVE"), _("FEDRO"), _("WENZEL"), _("SANTI")}, .otId = 0x2E34, .facilityClass = 0x26, .species = {SPECIES_LINOONE, SPECIES_MIGHTYENA, SPECIES_WHISCASH, SPECIES_ZANGOOSE, SPECIES_SEVIPER, SPECIES_NINETALES, SPECIES_KECLEON, SPECIES_SHUCKLE, SPECIES_MANECTRIC, SPECIES_MACHAMP}, - .rest = {2, 0, 1, 10, 10, 0x16, 0x15, 14, 0x30, 6, 0x3b, 12, 0x4, 12}, + .id = 2, + .easyChatWords = {0xA01, 0x160A, 0xE15, 0x630, 0xC3B, 0xC04}, }, { .name = {_("ユラ"), _("LAYLA"), _("LAYLA"), _("ASTRID"), _("SONJA"), _("LOLA")}, .otId = 0x84EF, .facilityClass = 0x47, .species = {SPECIES_SWALOT, SPECIES_XATU, SPECIES_ALTARIA, SPECIES_GOLDUCK, SPECIES_FLYGON, SPECIES_ALAKAZAM, SPECIES_GARDEVOIR, SPECIES_WAILORD, SPECIES_GRUMPIG, SPECIES_MIGHTYENA}, - .rest = {3, 0, 11, 16, 15, 0x1e, 0x39, 16, 0x21, 0x14, 0x3, 12, 0xff, 0xff}, + .id = 3, + .easyChatWords = {0x100B, 0x1E0F, 0x1039, 0x1421, 0xC03, 0xFFFF}, }, { .name = {_("ヨウカ"), _("MACY"), _("AMELIE"), _("CLEO"), _("MARIA"), _("ELISA")}, .otId = 0x1E43, .facilityClass = 0x27, .species = {SPECIES_WIGGLYTUFF, SPECIES_LINOONE, SPECIES_KINGDRA, SPECIES_DELCATTY, SPECIES_RAICHU, SPECIES_FEAROW, SPECIES_STARMIE, SPECIES_MEDICHAM, SPECIES_SHIFTRY, SPECIES_BEAUTIFLY}, - .rest = {4, 0, 15, 0x1e, 0x14, 16, 6, 16, 15, 0x28, 0x1c, 0x1c, 0x13, 0x1c}, + .id = 4, + .easyChatWords = {0x1E0F, 0x1014, 0x1006, 0x280F, 0x1C1C, 0x1C13}, }, { .name = {_("ヤスシ"), _("DONTE"), _("BRAHIM"), _("GLAUCO"), _("JOSEF"), _("ROQUE")}, .otId = 0x379F, .facilityClass = 0x30, .species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_AGGRON, SPECIES_MAGNETON, SPECIES_MACHAMP, SPECIES_ARMALDO, SPECIES_HERACROSS, SPECIES_NOSEPASS, SPECIES_EXPLOUD, SPECIES_MIGHTYENA}, - .rest = {5, 0, 0x29, 0x0A, 0x08, 0x14, 0x2F, 0x10, 0x38, 0x16, 0x20, 0x08, 0x00, 0x0C}, + .id = 5, + .easyChatWords = {0xA29, 0x1408, 0x102F, 0x1638, 0x820, 0xC00}, }, { .name = {_("ミサオ"), _("AMIRA"), _("LAURE"), _("DAFNE"), _("AMELIE"), _("LARA")}, .otId = 0xF555, .facilityClass = 0x31, .species = {SPECIES_STARMIE, SPECIES_DODRIO, SPECIES_MAGNETON, SPECIES_MEDICHAM, SPECIES_MIGHTYENA, SPECIES_GLALIE, SPECIES_GOLEM, SPECIES_ELECTRODE, SPECIES_PELIPPER, SPECIES_SHARPEDO}, - .rest = {6, 0, 0x0B, 0x0C, 0x3E, 0x12, 0x00, 0x0C, 0x31, 0x0A, 0x30, 0x14, 0x00, 0x0C}, + .id = 6, + .easyChatWords = {0xC0B, 0x123E, 0xC00, 0xA31, 0x1430, 0xC00}, }, { .name = {_("カズサ"), _("KALI"), _("JODIE"), _("ILENIA"), _("KARO"), _("ELSA")}, .otId = 0x8D26, .facilityClass = 0x14, .species = {SPECIES_NINETALES, SPECIES_ALAKAZAM, SPECIES_SCEPTILE, SPECIES_SALAMENCE, SPECIES_GOLDUCK, SPECIES_MAWILE, SPECIES_WEEZING, SPECIES_LANTURN, SPECIES_GARDEVOIR, SPECIES_MILOTIC}, - .rest = {7, 0, 0x06, 0x0A, 0x20, 0x06, 0x1F, 0x0A, 0x02, 0x0A, 0x03, 0x0C, 0xFF, 0xFF}, + .id = 7, + .easyChatWords = {0xA06, 0x620, 0xA1F, 0xA02, 0xC03, 0xFFFF}, }, { .name = {_("スミレ"), _("ANNIE"), _("ANNIE"), _("IMELDA"), _("INES"), _("ROSA")}, .otId = 0x800C, .facilityClass = 0xD, .species = {SPECIES_SCEPTILE, SPECIES_VILEPLUME, SPECIES_BELLOSSOM, SPECIES_ROSELIA, SPECIES_CORSOLA, SPECIES_FLYGON, SPECIES_BRELOOM, SPECIES_MILOTIC, SPECIES_ALTARIA, SPECIES_CRADILY}, - .rest = {8, 0, 0x22, 0x1E, 0x33, 0x04, 0x0E, 0x02, 0x02, 0x0A, 0x1E, 0x10, 0x00, 0x0C}, + .id = 8, + .easyChatWords = {0x1E22, 0x433, 0x20E, 0xA02, 0x101E, 0xC00}, }, { .name = {_("アキノリ"), _("DILLEN"), _("RENE"), _("INDRO"), _("DETLEF"), _("PEDRO")}, .otId = 0x469f, .facilityClass = 0, .species = {SPECIES_SKARMORY, SPECIES_GOLEM, SPECIES_BLAZIKEN, SPECIES_CAMERUPT, SPECIES_DONPHAN, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_TROPIUS, SPECIES_SOLROCK, SPECIES_RHYDON}, - .rest = {9, 0, 0x3D, 0x0A, 0x11, 0x10, 0x1E, 0x0E, 0x1C, 0x20, 0x04, 0x0C, 0xFF, 0xFF}, + .id = 9, + .easyChatWords = {0xA3D, 0x1011, 0xE1E, 0x201C, 0xC04, 0xFFFF}, }, { .name = {_("トウゾウ"), _("DALLAS"), _("BRUNO"), _("LEARCO"), _("ANSGAR"), _("MANOLO")}, .otId = 0x71FC, .facilityClass = 0x2D, .species = {SPECIES_SEAKING, SPECIES_STARMIE, SPECIES_GOLDUCK, SPECIES_TENTACRUEL, SPECIES_OCTILLERY, SPECIES_GOREBYSS, SPECIES_GLALIE, SPECIES_WAILORD, SPECIES_SHARPEDO, SPECIES_KINGDRA}, - .rest = {10, 0, 0x05, 0x0A, 0x06, 0x06, 0x0E, 0x16, 0x14, 0x0A, 0x00, 0x0C, 0xFF, 0xFF}, + .id = 10, + .easyChatWords = {0xA05, 0x606, 0x160E, 0xA14, 0xC00, 0xFFFF}, }, { .name = {_("セイヤ"), _("FRANK"), _("FRANK"), _("OLINDO"), _("FRANK"), _("MAURO")}, .otId = 0xA39E, .facilityClass = 0x3A, .species = {SPECIES_QUAGSIRE, SPECIES_STARMIE, SPECIES_PELIPPER, SPECIES_CRAWDAUNT, SPECIES_WAILORD, SPECIES_GYARADOS, SPECIES_SWAMPERT, SPECIES_LANTURN, SPECIES_WHISCASH, SPECIES_SHUCKLE}, - .rest = {11, 0, 0x0E, 0x28, 0x3D, 0x10, 0x0F, 0x24, 0x14, 0x0A, 0x23, 0x1E, 0x24, 0x10}, + .id = 11, + .easyChatWords = {0x280E, 0x103D, 0x240F, 0xA14, 0x1E23, 0x1024}, }, { .name = {_("リュウジ"), _("LAMONT"), _("XAV"), _("ORFEO"), _("JÜRGEN"), _("JORGE")}, .otId = 0xE590, .facilityClass = 0x19, .species = {SPECIES_ABSOL, SPECIES_CROBAT, SPECIES_EXPLOUD, SPECIES_MAGNETON, SPECIES_SHARPEDO, SPECIES_MANECTRIC, SPECIES_METAGROSS, SPECIES_ELECTRODE, SPECIES_NOSEPASS, SPECIES_WEEZING}, - .rest = {12, 0, 0x20, 0x10, 0x2E, 0x06, 0x0B, 0x10, 0x22, 0x1E, 0x0F, 0x1E, 0x0B, 0x10}, + .id = 12, + .easyChatWords = {0x1020, 0x62E, 0x100B, 0x1E22, 0x1E0F, 0x100B}, }, { .name = {_("カツアキ"), _("TYRESE"), _("ANDY"), _("PARIDE"), _("DAVID"), _("CHICHO")}, .otId = 0xD018, .facilityClass = 10, .species = {SPECIES_BLAZIKEN, SPECIES_GOLEM, SPECIES_MACHAMP, SPECIES_RHYDON, SPECIES_HARIYAMA, SPECIES_AGGRON, SPECIES_MEDICHAM, SPECIES_ZANGOOSE, SPECIES_VIGOROTH, SPECIES_SLAKING}, - .rest = {13, 0, 0x29, 0x0A, 0x3A, 0x06, 0x15, 0x0E, 0x35, 0x14, 0x34, 0x10, 0x1E, 0x06}, + .id = 13, + .easyChatWords = {0xA29, 0x63A, 0xE15, 0x1435, 0x1034, 0x61E}, }, { .name = {_("トシミツ"), _("DANTE"), _("DANTE"), _("RAOUL"), _("LOTHAR"), _("PABLO")}, .otId = 0xBC75, .facilityClass = 14, .species = {SPECIES_SCEPTILE, SPECIES_SANDSLASH, SPECIES_FLYGON, SPECIES_CLAYDOL, SPECIES_ARMALDO, SPECIES_CROBAT, SPECIES_CRADILY, SPECIES_SOLROCK, SPECIES_LUNATONE, SPECIES_GOLEM}, - .rest = {14, 0, 0x01, 0x0A, 0x17, 0x10, 0x43, 0x12, 0x22, 0x1E, 0x0B, 0x10, 0x0F, 0x28}, + .id = 14, + .easyChatWords = {0xA01, 0x1017, 0x1243, 0x1E22, 0x100B, 0x280F}, }, { .name = {_("ローウェン"), _("ARTURO"), _("ARTURO"), _("ROMOLO"), _("BRIAN"), _("ARTURO")}, .otId = 0xFA02, .facilityClass = 0x20, .species = {SPECIES_ABSOL, SPECIES_MIGHTYENA, SPECIES_ALAKAZAM, SPECIES_BANETTE, SPECIES_NINETALES, SPECIES_CLAYDOL, SPECIES_MUK, SPECIES_SALAMENCE, SPECIES_WALREIN, SPECIES_DUSCLOPS}, - .rest = {15, 0, 0x0F, 0x1E, 0x04, 0x14, 0x2F, 0x10, 0x06, 0x10, 0x20, 0x10, 0x03, 0x0E}, + .id = 15, + .easyChatWords = {0x1E0F, 0x1404, 0x102F, 0x1006, 0x1020, 0xE03}, }, }; @@ -2222,7 +2238,7 @@ static void sub_81A1370(void) r9 = -1; for (i = 1; i < 4; i++) { - if (ReadUnalignedWord(gSaveBlock2Ptr->apprentices[i].playerId) == ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId) + if (GetTrainerId(gSaveBlock2Ptr->apprentices[i].playerId) == GetTrainerId(gSaveBlock2Ptr->playerTrainerId) && gSaveBlock2Ptr->apprentices[i].number < r10) { r10 = gSaveBlock2Ptr->apprentices[i].number; diff --git a/src/battle_dome.c b/src/battle_dome.c index 15348e458..d5489f529 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -3,6 +3,7 @@ #include "battle.h" #include "battle_setup.h" #include "battle_tower.h" +#include "frontier_util.h" #include "battle_message.h" #include "event_data.h" #include "overworld.h" @@ -56,13 +57,12 @@ struct UnkStruct_860DD10 }; extern void sub_81B8558(void); -extern u32 sub_81A39C4(void); -extern u16 sub_81A5060(u8 monId, u8 moveSlotId); -extern u8 sub_81A50F0(u8, u8); -extern u8 sub_81A50B0(u8); +extern u16 GetFrontierBrainMonMove(u8 monId, u8 moveSlotId); +extern u8 GetFrontierBrainMonEvs(u8, u8); +extern u8 GetFrontierBrainMonNature(u8); extern void sub_81A4C30(void); -extern bool8 sub_81A3610(void); -extern u16 sub_81A4FF0(u8); +extern u8 sub_81A3610(void); +extern u16 GetFrontierBrainMonSpecies(u8); extern void ReducePlayerPartyToThree(void); extern u8 gUnknown_0203CEF8[]; @@ -2408,7 +2408,7 @@ static void sub_818E9CC(void) gSaveBlock2Ptr->frontier.field_CA9_a = 0; gSaveBlock2Ptr->frontier.field_CA9_b = 0; if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860D0EC[battleMode][lvlMode])) - gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] = 0; + gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = 0; saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); gTrainerBattleOpponent_A = 0; @@ -2422,7 +2422,7 @@ static void sub_818EA84(void) switch (gSpecialVar_0x8005) { case 0: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode]; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; break; case 1: gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860D0EC[battleMode][lvlMode]) != 0); @@ -2490,7 +2490,7 @@ static void sub_818ED28(void) switch (gSpecialVar_0x8005) { case 0: - gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006; break; case 1: if (gSpecialVar_0x8006) @@ -2575,7 +2575,7 @@ static void InitDomeTrainers(void) for (i = 0; i < 3; i++) { - gSaveBlock2Ptr->frontier.domeMonId[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_SPECIES, NULL); + gSaveBlock2Ptr->frontier.domeMonIds[0][i] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_SPECIES, NULL); for (j = 0; j < 4; j++) gSaveBlock2Ptr->frontier.field_EFC[i].moves[j] = GetMonData(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + j, NULL); for (j = 0; j < 6; j++) @@ -2590,7 +2590,7 @@ static void InitDomeTrainers(void) { do { - trainerId = sub_8162548(sub_81A39C4(), 0); + trainerId = sub_8162548(GetCurrentFacilityWinStreak(), 0); for (j = 1; j < i; j++) { if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) @@ -2603,7 +2603,7 @@ static void InitDomeTrainers(void) { do { - trainerId = sub_8162548(sub_81A39C4() + 1, 0); + trainerId = sub_8162548(GetCurrentFacilityWinStreak() + 1, 0); for (j = 1; j < i; j++) { if (gSaveBlock2Ptr->frontier.domeTrainers[j].trainerId == trainerId) @@ -2621,7 +2621,7 @@ static void InitDomeTrainers(void) monTournamentId = RandomizeFacilityTrainerMonId(trainerId); for (k = 0; k < j; k++) { - s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonId[i][k]; + s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonIds[i][k]; if (checkingMonId == monTournamentId || species[0] == gFacilityTrainerMons[monTournamentId].species || species[1] == gFacilityTrainerMons[monTournamentId].species @@ -2630,7 +2630,7 @@ static void InitDomeTrainers(void) } } while (k != j); - gSaveBlock2Ptr->frontier.domeMonId[i][j] = monTournamentId; + gSaveBlock2Ptr->frontier.domeMonIds[i][j] = monTournamentId; species[j] = gFacilityTrainerMons[monTournamentId].species; } @@ -2671,10 +2671,10 @@ static void InitDomeTrainers(void) ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); for (j = 0; j < 3; j++) { - CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species, + CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species, monLevel, ivs, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].evSpread, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].nature, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].evSpread, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].nature, statValues); statSums[i] += statValues[STAT_ATK]; @@ -2683,8 +2683,8 @@ static void InitDomeTrainers(void) statSums[i] += statValues[STAT_SPDEF]; statSums[i] += statValues[STAT_SPEED]; statSums[i] += statValues[STAT_HP]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type1]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type2]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type1]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type2]; } for (monTypesCount = 0, j = 0; j < 32; j++) @@ -2737,7 +2737,7 @@ static void InitDomeTrainers(void) } for (i = 0; i < 3; i++) - gSaveBlock2Ptr->frontier.domeMonId[j][i] = sub_81A4FF0(i); + gSaveBlock2Ptr->frontier.domeMonIds[j][i] = GetFrontierBrainMonSpecies(i); } Free(statSums); @@ -2799,7 +2799,7 @@ static void SwapDomeTrainers(s32 id1, s32 id2, u16 *statsArray) SWAP(gSaveBlock2Ptr->frontier.domeTrainers[id1].trainerId, gSaveBlock2Ptr->frontier.domeTrainers[id2].trainerId, temp); for (i = 0; i < 3; i++) - SWAP(gSaveBlock2Ptr->frontier.domeMonId[id1][i], gSaveBlock2Ptr->frontier.domeMonId[id2][i], temp); + SWAP(gSaveBlock2Ptr->frontier.domeMonIds[id1][i], gSaveBlock2Ptr->frontier.domeMonIds[id2][i], temp); } static void sub_818F9B0(void) @@ -2829,24 +2829,24 @@ static void CreateDomeMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentM u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using trainerId instead of tournamentTrainerId. As a result, all Pokemon have ivs of 3. u8 level = SetFacilityPtrsGetLevel(); CreateMonWithEVSpreadPersonalityOTID(&gEnemyParty[monPartyId], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].species, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].species, level, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].nature, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].nature, fixedIv, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].evSpread, otId); + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].evSpread, otId); happiness = 0xFF; for (i = 0; i < 4; i++) { SetMonMoveSlot(&gEnemyParty[monPartyId], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].moves[i], i); - if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION) + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].moves[i], i); + if (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].moves[i] == MOVE_FRUSTRATION) happiness = 0; } SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &happiness); SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, - &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][tournamentMonId]].itemTableId]); + &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][tournamentMonId]].itemTableId]); } static void CreateDomeTrainerMons(u16 tournamentTrainerId) @@ -2856,7 +2856,7 @@ static void CreateDomeTrainerMons(u16 tournamentTrainerId) s32 i, bits; ZeroEnemyPartyMons(); - bits = GetTrainerMonCountInBits(tournamentTrainerId); + bits = GetDomeTrainerMonCountInBits(tournamentTrainerId); otId = Random32(); if (Random() % 10 > 5) { @@ -2884,7 +2884,7 @@ static void CreateDomeTrainerMons(u16 tournamentTrainerId) } } -s32 GetTrainerMonCountInBits(u16 tournamentTrainerId) +s32 GetDomeTrainerMonCountInBits(u16 tournamentTrainerId) { s32 bits; if (Random() & 1) @@ -2917,12 +2917,12 @@ static s32 sub_818FCBC(u16 tournamentTrainerId, bool8 arg1) { if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { - array[i] += GetTypeEffectivenessPoints(sub_81A5060(i, moveId), + array[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0); } else { - array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][i]].moves[moveId], + array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][i]].moves[moveId], GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 0); } } @@ -2945,12 +2945,12 @@ static s32 sub_818FDB8(u16 tournamentTrainerId, bool8 arg1) { if (gSaveBlock2Ptr->frontier.domeTrainers[tournamentTrainerId].trainerId == TRAINER_FRONTIER_BRAIN) { - array[i] += GetTypeEffectivenessPoints(sub_81A5060(i, moveId), + array[i] += GetTypeEffectivenessPoints(GetFrontierBrainMonMove(i, moveId), GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1); } else { - array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentTrainerId][i]].moves[moveId], + array[i] += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentTrainerId][i]].moves[moveId], GetMonData(&gPlayerParty[playerMonId], MON_DATA_SPECIES, NULL), 1); } } @@ -3481,13 +3481,13 @@ static void sub_819033C(void) u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - if (gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] < 999) - gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode]++; - if (gSaveBlock2Ptr->frontier.field_D1C[battleMode][lvlMode] < 999) - gSaveBlock2Ptr->frontier.field_D1C[battleMode][lvlMode]++; + if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] < 999) + gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]++; + if (gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][lvlMode] < 999) + gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][lvlMode]++; - if (gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.field_D14[battleMode][lvlMode]) - gSaveBlock2Ptr->frontier.field_D14[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.field_D0C[battleMode][lvlMode]; + if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode]) + gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; } static void ShowDomeOpponentInfo(void) @@ -4756,7 +4756,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { if (trainerId == TRAINER_PLAYER) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i], + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i], SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], @@ -4765,7 +4765,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) } else if (trainerId == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i], + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i], SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], @@ -4774,7 +4774,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) } else { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].species, + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].species, SpriteCb_MonIcon, x | sInfoTrainerMonX[i], y + sInfoTrainerMonY[i], @@ -4837,11 +4837,11 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { textPrinter.currentY = gUnknown_0860D346[i]; if (trainerId == TRAINER_PLAYER) - textPrinter.current_text_offset = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]]; + textPrinter.current_text_offset = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]]; else if (trainerId == TRAINER_FRONTIER_BRAIN) - textPrinter.current_text_offset = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]]; + textPrinter.current_text_offset = gSpeciesNames[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]]; else - textPrinter.current_text_offset = gSpeciesNames[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].species]; + textPrinter.current_text_offset = gSpeciesNames[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].species]; textPrinter.windowId = 1 + i + windowId; if (i == 1) @@ -4875,11 +4875,11 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) for (k = 0; k < DOME_TOURNAMENT_TRAINERS_COUNT; k++) { if (trainerId == TRAINER_FRONTIER_BRAIN) - allocatedArray[k] += sMovePointsForDomeTrainers[sub_81A5060(i, j)][k]; + allocatedArray[k] += sMovePointsForDomeTrainers[GetFrontierBrainMonMove(i, j)][k]; else if (trainerId == TRAINER_PLAYER) allocatedArray[k] += sMovePointsForDomeTrainers[gSaveBlock2Ptr->frontier.field_EFC[i].moves[j]][k]; else - allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].moves[j]][k]; + allocatedArray[k] += sMovePointsForDomeTrainers[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].moves[j]][k]; } } } @@ -4916,7 +4916,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) for (j = 0; j < 6; j++) { if (trainerId == TRAINER_FRONTIER_BRAIN) - allocatedArray[j] = sub_81A50F0(i, j); + allocatedArray[j] = GetFrontierBrainMonEvs(i, j); else allocatedArray[j] = gSaveBlock2Ptr->frontier.field_EFC[i].evs[j]; } @@ -4924,7 +4924,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) for (j = 0; j < 5; j++) { if (trainerId == TRAINER_FRONTIER_BRAIN) - nature = sub_81A50B0(i); + nature = GetFrontierBrainMonNature(i); else nature = gSaveBlock2Ptr->frontier.field_EFC[i].nature; @@ -4952,7 +4952,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) { for (i = 0; i < 3; i++) { - s32 evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].evSpread; + s32 evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread; for (k = 0, j = 0; j < 6; j++) { allocatedArray[j] = 0; @@ -4961,7 +4961,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) evBits >>= 1; } k = MAX_TOTAL_EVS / k; - evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].evSpread; + evBits = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].evSpread; for (j = 0; j < 6; j++) { if (evBits & 1) @@ -4972,7 +4972,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTournamentId) allocatedArray[6] += allocatedArray[0]; for (j = 0; j < 5; j++) { - nature = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[trainerTournamentId][i]].nature; + nature = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[trainerTournamentId][i]].nature; if (gNatureStatTable[nature][j] > 0) { allocatedArray[j + 7] += (allocatedArray[j + 1] * 110) / 100; @@ -5210,7 +5210,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) { if (trainerIds[0] == TRAINER_PLAYER) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i], + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i], SpriteCb_MonIcon, x | sFirstTrainerMonX[i], y + sFirstTrainerMonY[i], @@ -5219,7 +5219,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } else if (trainerIds[0] == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i], + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i], SpriteCb_MonIcon, x | sFirstTrainerMonX[i], y + sFirstTrainerMonY[i], @@ -5228,7 +5228,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } else { - sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[0]][i]].species, + sBattleDomeStruct->arr[2 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[0]][i]].species, SpriteCb_MonIcon, x | sFirstTrainerMonX[i], y + sFirstTrainerMonY[i], @@ -5250,7 +5250,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) { if (trainerIds[1] == TRAINER_PLAYER) { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i], + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i], SpriteCb_MonIcon, x | sSecondTrainerMonX[i], y + sSecondTrainerMonY[i], @@ -5259,7 +5259,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } else if (trainerIds[1] == TRAINER_FRONTIER_BRAIN) { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i], + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i], SpriteCb_MonIcon, x | sSecondTrainerMonX[i], y + sSecondTrainerMonY[i], @@ -5268,7 +5268,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } else { - sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentIds[1]][i]].species, + sBattleDomeStruct->arr[5 + i + arrId] = CreateMonIcon(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentIds[1]][i]].species, SpriteCb_MonIcon, x | sSecondTrainerMonX[i], y + sSecondTrainerMonY[i], @@ -5564,9 +5564,9 @@ static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roun { moveScores[i * 4 + j] = 0; if (gSaveBlock2Ptr->frontier.domeTrainers[winnerTournamentId].trainerId == TRAINER_FRONTIER_BRAIN) - moveIds[i * 4 + j] = sub_81A5060(i, j); + moveIds[i * 4 + j] = GetFrontierBrainMonMove(i, j); else - moveIds[i * 4 + j] = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[winnerTournamentId][i]].moves[j]; + moveIds[i * 4 + j] = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[winnerTournamentId][i]].moves[j]; movePower = gBattleMoves[moveIds[i * 4 + j]].power; if (movePower == 0) @@ -5584,9 +5584,9 @@ static u16 GetWinningMove(s32 winnerTournamentId, s32 loserTournamentId, u8 roun do { var = Random32(); - } while (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[loserTournamentId][k]].nature != GetNatureFromPersonality(var)); + } while (gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].nature != GetNatureFromPersonality(var)); - targetSpecies = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[loserTournamentId][k]].species; + targetSpecies = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[loserTournamentId][k]].species; if (var & 1) targetAbility = gBaseStats[targetSpecies].ability2; else @@ -6193,7 +6193,7 @@ static void sub_8194F58(void) monTournamentId = RandomizeFacilityTrainerMonId(trainerId); for (k = 0; k < j; k++) { - s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonId[i][k]; + s32 checkingMonId = gSaveBlock2Ptr->frontier.domeMonIds[i][k]; if (checkingMonId == monTournamentId || species[0] == gFacilityTrainerMons[monTournamentId].species || species[1] == gFacilityTrainerMons[monTournamentId].species @@ -6202,7 +6202,7 @@ static void sub_8194F58(void) } } while (k != j); - gSaveBlock2Ptr->frontier.domeMonId[i][j] = monTournamentId; + gSaveBlock2Ptr->frontier.domeMonIds[i][j] = monTournamentId; species[j] = gFacilityTrainerMons[monTournamentId].species; } gSaveBlock2Ptr->frontier.domeTrainers[i].isEliminated = 0; @@ -6218,10 +6218,10 @@ static void sub_8194F58(void) ivs = GetDomeTrainerMonIvs(gSaveBlock2Ptr->frontier.domeTrainers[i].trainerId); for (j = 0; j < 3; j++) { - CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species, + CalcDomeMonStats(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species, monLevel, ivs, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].evSpread, - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].nature, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].evSpread, + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].nature, statValues); statSums[i] += statValues[STAT_ATK]; @@ -6230,8 +6230,8 @@ static void sub_8194F58(void) statSums[i] += statValues[STAT_SPDEF]; statSums[i] += statValues[STAT_SPEED]; statSums[i] += statValues[STAT_HP]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type1]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[i][j]].species].type2]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type1]; + monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[i][j]].species].type2]; } // Because GF hates temporary vars, trainerId acts like monTypesCount here. @@ -6347,11 +6347,11 @@ static void DecideRoundWinners(u8 roundId) { for (monId2 = 0; monId2 < 3; monId2++) { - points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId1]].moves[moveSlot], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId2]].species, 2); + points1 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId1]].moves[moveSlot], + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId2]].species, 2); } } - species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId1]].species; + species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId1]].species; points1 += ( gBaseStats[species].baseHP + gBaseStats[species].baseAttack + gBaseStats[species].baseDefense @@ -6370,11 +6370,11 @@ static void DecideRoundWinners(u8 roundId) { for (monId2 = 0; monId2 < 3; monId2++) { - points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId1]].moves[moveSlot], - gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId1][monId2]].species, 2); + points2 += GetTypeEffectivenessPoints(gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId1]].moves[moveSlot], + gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId1][monId2]].species, 2); } } - species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonId[tournamentId2][monId1]].species; + species = gFacilityTrainerMons[gSaveBlock2Ptr->frontier.domeMonIds[tournamentId2][monId1]].species; points2 += ( gBaseStats[species].baseHP + gBaseStats[species].baseAttack + gBaseStats[species].baseDefense diff --git a/src/battle_factory.c b/src/battle_factory.c index c2a3207a6..d7a2939b3 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -1670,7 +1670,7 @@ static void CreateFrontierFactorySelectableMons(u8 firstMonId) u32 otId = 0; u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - u8 var_2C = gSaveBlock2Ptr->frontier.field_DE2[battleMode][lvlMode] / 7; + u8 var_2C = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7; u8 var_28 = 0; gFacilityTrainerMons = gBattleFrontierMons; diff --git a/src/battle_frontier_1.c b/src/battle_frontier_1.c index 9ec9f8520..c53f10dca 100644 --- a/src/battle_frontier_1.c +++ b/src/battle_frontier_1.c @@ -27,7 +27,7 @@ void sub_8195980(void) gSaveBlock2Ptr->frontier.field_CA9_a = 0; gSaveBlock2Ptr->frontier.field_CA9_b = 0; if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode])) - gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] = 0; + gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0; saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); gTrainerBattleOpponent_A = 0; @@ -44,7 +44,7 @@ void sub_8195A38(void) gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC4[1]; break; case 1: - gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode]; + gSpecialVar_Result = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]; break; case 2: gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]) != 0); @@ -63,7 +63,7 @@ void sub_8195AE4(void) gSaveBlock2Ptr->frontier.field_DC4[1] = gSpecialVar_0x8006; break; case 1: - gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006; break; case 2: if (gSpecialVar_0x8006) @@ -79,9 +79,9 @@ void sub_8195BB0(void) u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 50) + if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 50) gSpecialVar_Result = Random() % 3; - else if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 99) + else if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 99) gSpecialVar_Result = 3; else gSpecialVar_Result = 4; @@ -105,14 +105,14 @@ void sub_8195C7C(void) u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode] < 9999) + if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 9999) { u16 wat = 0; - gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode]++; + gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]++; if (lvlMode < gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode]) wat = 1; - if (gSaveBlock2Ptr->frontier.field_DC8[battleMode][wat] != 0) - gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.field_DC8[battleMode][lvlMode]; + if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][wat] != 0) + gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]; } } */ diff --git a/src/battle_main.c b/src/battle_main.c index 9f1ea3c01..e08e12194 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3027,7 +3027,7 @@ static void BattleStartClearSetData(void) if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gSaveBlock2Ptr->optionsBattleSceneOff == TRUE) gHitMarker |= HITMARKER_NO_ANIMATIONS; } - else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && GetBattleStyleInRecordedBattle()) + else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && GetBattleSceneInRecordedBattle()) gHitMarker |= HITMARKER_NO_ANIMATIONS; gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; diff --git a/src/battle_message.c b/src/battle_message.c index 99ab8bbd6..837f3e6d3 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -17,7 +17,7 @@ #include "menu.h" #include "recorded_battle.h" #include "international_string_util.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "battle_tower.h" #include "data2.h" @@ -2579,7 +2579,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) { - CopyFrontierTrainerText(FRONTIER_LOSE_TEXT, gTrainerBattleOpponent_A); + CopyFrontierTrainerText(FRONTIER_PLAYER_WON_TEXT, gTrainerBattleOpponent_A); toCpy = gStringVar4; } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL) @@ -2595,7 +2595,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) { - CopyFrontierTrainerText(FRONTIER_WIN_TEXT, gTrainerBattleOpponent_A); + CopyFrontierTrainerText(FRONTIER_PLAYER_LOST_TEXT, gTrainerBattleOpponent_A); toCpy = gStringVar4; } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL) @@ -2676,7 +2676,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_TRAINER2_LOSE_TEXT: if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) { - CopyFrontierTrainerText(FRONTIER_LOSE_TEXT, gTrainerBattleOpponent_B); + CopyFrontierTrainerText(FRONTIER_PLAYER_WON_TEXT, gTrainerBattleOpponent_B); toCpy = gStringVar4; } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL) @@ -2692,7 +2692,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_TRAINER2_WIN_TEXT: if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) { - CopyFrontierTrainerText(FRONTIER_WIN_TEXT, gTrainerBattleOpponent_B); + CopyFrontierTrainerText(FRONTIER_PLAYER_LOST_TEXT, gTrainerBattleOpponent_B); toCpy = gStringVar4; } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL) diff --git a/src/battle_tent.c b/src/battle_tent.c index 4c4bd7fc3..f3aec1345 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -9,7 +9,7 @@ #include "random.h" #include "item.h" #include "battle_factory.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "constants/items.h" #include "constants/region_map_sections.h" @@ -19,6 +19,8 @@ extern const u16 gBattleFrontierHeldItems[]; extern u16 gUnknown_03006298[]; +extern void sub_81A4C30(void); + // This file's functions. static void sub_81B99D4(void); static void sub_81B9A28(void); diff --git a/src/battle_tower.c b/src/battle_tower.c index 4b63c2875..e95eaf156 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -9,8 +9,7 @@ #include "main.h" #include "international_string_util.h" #include "battle.h" -#include "battle_frontier_1.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "recorded_battle.h" #include "easy_chat.h" #include "gym_leader_rematch.h" @@ -30,15 +29,9 @@ extern u16 gUnknown_03006298[]; -extern void sub_81A3ACC(void); -extern void CreateFrontierBrainPokemon(void); extern void sub_81A6CD0(void); -extern u16 sub_81A39C4(void); -extern void SetFrontierBrainTrainerGfxId(void); -extern u8 GetFrontierBrainTrainerPicIndex(void); -extern u8 GetFrontierBrainTrainerClass(void); -extern u8 IsFrontierBrainFemale(void); -extern void CopyFrontierBrainTrainerName(u8 *dst); +extern void sub_81A4C30(void); +extern u8 sub_81A6CA8(u8, u8); extern void SetMonMoveAvoidReturn(struct Pokemon *mon, u16 move, u8 moveSlot); extern const u8 *const *const gUnknown_085DD690[]; @@ -220,7 +213,7 @@ static void sub_8161F94(void) gSaveBlock2Ptr->frontier.field_CA9_b = 0; sub_81A3ACC(); if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_085DF9AC[battleMode][lvlMode])) - gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] = 0; + gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = 0; ValidateBattleTowerRecordChecksums(); saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); @@ -258,7 +251,7 @@ static void sub_81620F4(void) case 0: break; case 1: - gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] = gSpecialVar_0x8006; + gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006; break; case 2: if (gSpecialVar_0x8006) @@ -364,7 +357,8 @@ static void ChooseNextBattleTowerTrainer(void) { u16 id; u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - u32 r5 = sub_81A39C4() / 7; + u16 winStreak = GetCurrentFacilityWinStreak(); + u32 challengeNum = winStreak / 7; SetFacilityPtrsGetLevel(); if (battleMode == FRONTIER_MODE_MULTIS || battleMode == FRONTIER_MODE_LINK_MULTIS) @@ -385,7 +379,7 @@ static void ChooseNextBattleTowerTrainer(void) s32 i; while (1) { - id = sub_8162548(r5, gSaveBlock2Ptr->frontier.curChallengeBattleNum); + id = sub_8162548(challengeNum, gSaveBlock2Ptr->frontier.curChallengeBattleNum); // Ensure trainer wasn't previously fought in this challenge. for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) @@ -525,7 +519,7 @@ void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId) } else if (trainerId == TRAINER_FRONTIER_BRAIN) { - SetFrontierBrainTrainerGfxId(); + SetFrontierBrainEventObjGfx_2(); return; } else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) @@ -769,14 +763,14 @@ u8 GetFrontierTrainerFrontSpriteId(u16 trainerId) else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - return gFacilityClassToPicIndex[sub_818649C()]; + return gFacilityClassToPicIndex[GetRecordedBattleRecordMixFriendClass()]; else return gFacilityClassToPicIndex[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass]; } else { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - return gFacilityClassToPicIndex[gApprentices[sub_81864A8()].facilityClass]; + return gFacilityClassToPicIndex[gApprentices[GetRecordedBattleApprenticeId()].facilityClass]; else return gFacilityClassToPicIndex[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass]; } @@ -807,7 +801,7 @@ u8 GetFrontierOpponentClass(u16 trainerId) { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) { - trainerClass = gFacilityClassToTrainerClass[sub_818649C()]; + trainerClass = gFacilityClassToTrainerClass[GetRecordedBattleRecordMixFriendClass()]; } else { @@ -819,7 +813,7 @@ u8 GetFrontierOpponentClass(u16 trainerId) { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) { - trainerClass = gFacilityClassToTrainerClass[gApprentices[sub_81864A8()].facilityClass]; + trainerClass = gFacilityClassToTrainerClass[gApprentices[GetRecordedBattleApprenticeId()].facilityClass]; } else { @@ -847,14 +841,14 @@ static u8 GetFrontierTrainerFacilityClass(u16 trainerId) else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - facilityClass = sub_818649C(); + facilityClass = GetRecordedBattleRecordMixFriendClass(); else facilityClass = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass; } else { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - facilityClass = gApprentices[sub_81864A8()].facilityClass; + facilityClass = gApprentices[GetRecordedBattleApprenticeId()].facilityClass; else facilityClass = gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass; } @@ -907,8 +901,8 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId) if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) { - id = sub_81864A8(); - language = sub_81864C0(); + id = GetRecordedBattleApprenticeId(); + language = GetRecordedBattleApprenticeLanguage(); } else { @@ -1179,7 +1173,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) { u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; // Unused variable. u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - u8 challengeNum = gSaveBlock2Ptr->frontier.winStreaks[battleMode][0] / 7; + u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][0] / 7; if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6) fixedIV = sub_81A6CA8(challengeNum, 0); else @@ -1297,7 +1291,7 @@ static void HandleSpecialTrainerBattleEnd(void) { s32 i; - sub_81864CC(); + RecordedBattle_SaveBattleOutcome(); switch (gBattleScripting.specialTrainerBattleType) { case SPECIAL_BATTLE_TOWER: @@ -1480,8 +1474,8 @@ static void SaveCurrentWinStreak(void) u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u16 winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode); - if (gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] < winStreak) - gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] = winStreak; + if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] < winStreak) + gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = winStreak; } static void sub_8163EE4(void) @@ -1509,15 +1503,15 @@ static void sub_8163EE4(void) } playerRecord->lvlMode = lvlMode; playerRecord->facilityClass = class; - CopyUnalignedWord(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId); + CopyTrainerId(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId); StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName); playerRecord->winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode); for (i = 0; i < 6; i++) { playerRecord->greeting[i] = gSaveBlock1Ptr->unk2BBC[i]; - playerRecord->unk1C[i] = gSaveBlock1Ptr->unk2BC8[i]; - playerRecord->unk28[i] = gSaveBlock1Ptr->unk2BD4[i]; + playerRecord->speechWon[i] = gSaveBlock1Ptr->unk2BC8[i]; + playerRecord->speechLost[i] = gSaveBlock1Ptr->unk2BD4[i]; } for (i = 0; i < 4; i++) @@ -1535,7 +1529,7 @@ static void SaveBattleTowerProgress(void) { u16 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] / 7); + s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7); if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0)) sub_8163EE4(); @@ -1625,7 +1619,7 @@ static void sub_81642A0(void) eventObjTemplates = gSaveBlock1Ptr->eventObjectTemplates; lvlMode = gSaveBlock2Ptr->frontier.lvlMode; battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); - challengeNum = gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL); species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); level = SetFacilityPtrsGetLevel(); @@ -1795,7 +1789,8 @@ static void sub_8164828(void) s32 i, j, arrId; s32 monPoolId; s32 level = SetFacilityPtrsGetLevel(); - s32 challengeNum = sub_81A39C4() / 7; + u16 winStreak = GetCurrentFacilityWinStreak(); + s32 challengeNum = winStreak / 7; s32 k = gSpecialVar_LastTalked - 2; s32 trainerId = gSaveBlock2Ptr->frontier.field_CB4[k]; @@ -1911,7 +1906,7 @@ static void sub_8164B74(void) case 0: if (battleMode == FRONTIER_MODE_LINK_MULTIS) { - challengeNum = gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode] / 7; + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; if (sub_800A520()) { SendBlock(bitmask_all_link_players_but_self(), &challengeNum, sizeof(challengeNum)); @@ -2069,7 +2064,7 @@ static void ClearBattleTowerRecord(struct EmeraldBattleTowerRecord *record) u16 GetCurrentBattleTowerWinStreak(u8 lvlMode, u8 battleMode) { - u16 winStreak = gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode]; + u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; if (winStreak > 9999) return 9999; @@ -2164,7 +2159,7 @@ static void FillEReaderTrainerWithPlayerData(void) + gSaveBlock2Ptr->playerTrainerId[2] + gSaveBlock2Ptr->playerTrainerId[3]) % ARRAY_COUNT(gTowerMaleFacilityClasses)]; } - CopyUnalignedWord(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId); + CopyTrainerId(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId); StringCopy7(ereaderTrainer->name, gSaveBlock2Ptr->playerName); ereaderTrainer->winStreak = 1; @@ -2425,9 +2420,9 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em for (i = 0; i < 6; i++) dst->greeting[i] = src->greeting[i]; for (i = 0; i < 6; i++) - dst->unk1C[i] = gUnknown_085DFA46[i]; + dst->speechWon[i] = gUnknown_085DFA46[i]; for (i = 0; i < 6; i++) - dst->unk28[i] = gUnknown_085DFA52[i]; + dst->speechLost[i] = gUnknown_085DFA52[i]; for (i = 0; i < 3; i++) dst->party[i] = src->party[i]; @@ -2526,14 +2521,14 @@ void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId) else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - *dst = sub_81864B4(); + *dst = GetRecordedBattleRecordMixFriendLanguage(); else *dst = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].language; } else { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - *dst = sub_81864C0(); + *dst = GetRecordedBattleApprenticeLanguage(); else *dst = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].language; } diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index fef403c04..738826020 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -1,6 +1,5 @@ #include "global.h" #include "battle_setup.h" -#include "battle_frontier_1.h" #include "bike.h" #include "coord_event_weather.h" #include "daycare.h" @@ -31,6 +30,8 @@ #include "constants/map_types.h" #include "constants/songs.h" +extern bool32 sub_8196034(void); + static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0; static EWRAM_DATA u16 sPreviousPlayerMetatileBehavior = 0; diff --git a/src/field_poison.c b/src/field_poison.c index 6a519d90c..e2fd994fc 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -6,7 +6,7 @@ #include "field_message_box.h" #include "strings.h" #include "rom_818CFC8.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "pokenav.h" #include "event_data.h" #include "script.h" @@ -14,6 +14,8 @@ #include "fldeff_80F9BCC.h" #include "field_poison.h" +extern bool8 InBattlePike(void); + static bool32 sub_80F9568(struct Pokemon *pokemon) { u16 species = GetMonData(pokemon, MON_DATA_SPECIES2); diff --git a/src/field_specials.c b/src/field_specials.c index e2e069d28..522cbdf94 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -2158,73 +2158,73 @@ void sub_8139F20(void) case 1: case 2: case 3: - if (gSaveBlock2Ptr->frontier.winStreaks[var][0] >= gSaveBlock2Ptr->frontier.winStreaks[var][1]) + if (gSaveBlock2Ptr->frontier.towerWinStreaks[var][0] >= gSaveBlock2Ptr->frontier.towerWinStreaks[var][1]) { - unk = gSaveBlock2Ptr->frontier.winStreaks[var][0]; + unk = gSaveBlock2Ptr->frontier.towerWinStreaks[var][0]; } else { - unk = gSaveBlock2Ptr->frontier.winStreaks[var][1]; + unk = gSaveBlock2Ptr->frontier.towerWinStreaks[var][1]; } break; case 4: - if (gSaveBlock2Ptr->frontier.field_D0C[0][0] >= gSaveBlock2Ptr->frontier.field_D0C[0][1]) + if (gSaveBlock2Ptr->frontier.domeWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.domeWinStreaks[0][1]) { - unk = gSaveBlock2Ptr->frontier.field_D0C[0][0]; + unk = gSaveBlock2Ptr->frontier.domeWinStreaks[0][0]; } else { - unk = gSaveBlock2Ptr->frontier.field_D0C[0][1]; + unk = gSaveBlock2Ptr->frontier.domeWinStreaks[0][1]; } break; case 5: - if (gSaveBlock2Ptr->frontier.field_DE2[0][0] >= gSaveBlock2Ptr->frontier.field_DE2[0][1]) + if (gSaveBlock2Ptr->frontier.factoryWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.factoryWinStreaks[0][1]) { - unk = gSaveBlock2Ptr->frontier.field_DE2[0][0]; + unk = gSaveBlock2Ptr->frontier.factoryWinStreaks[0][0]; } else { - unk = gSaveBlock2Ptr->frontier.field_DE2[0][1]; + unk = gSaveBlock2Ptr->frontier.factoryWinStreaks[0][1]; } break; case 6: - if (gSaveBlock2Ptr->frontier.field_DC8[0][0] >= gSaveBlock2Ptr->frontier.field_DC8[0][1]) + if (gSaveBlock2Ptr->frontier.palaceWinStreaks[0][0] >= gSaveBlock2Ptr->frontier.palaceWinStreaks[0][1]) { - unk = gSaveBlock2Ptr->frontier.field_DC8[0][0]; + unk = gSaveBlock2Ptr->frontier.palaceWinStreaks[0][0]; } else { - unk = gSaveBlock2Ptr->frontier.field_DC8[0][1]; + unk = gSaveBlock2Ptr->frontier.palaceWinStreaks[0][1]; } break; case 7: - if (gSaveBlock2Ptr->frontier.field_DDA[0] >= gSaveBlock2Ptr->frontier.field_DDA[1]) + if (gSaveBlock2Ptr->frontier.arenaWinStreaks[0] >= gSaveBlock2Ptr->frontier.arenaWinStreaks[1]) { - unk = gSaveBlock2Ptr->frontier.field_DDA[0]; + unk = gSaveBlock2Ptr->frontier.arenaWinStreaks[0]; } else { - unk = gSaveBlock2Ptr->frontier.field_DDA[1]; + unk = gSaveBlock2Ptr->frontier.arenaWinStreaks[1]; } break; case 8: - if (gSaveBlock2Ptr->frontier.field_E04[0] >= gSaveBlock2Ptr->frontier.field_E04[1]) + if (gSaveBlock2Ptr->frontier.pikeWinStreaks[0] >= gSaveBlock2Ptr->frontier.pikeWinStreaks[1]) { - unk = gSaveBlock2Ptr->frontier.field_E04[0]; + unk = gSaveBlock2Ptr->frontier.pikeWinStreaks[0]; } else { - unk = gSaveBlock2Ptr->frontier.field_E04[1]; + unk = gSaveBlock2Ptr->frontier.pikeWinStreaks[1]; } break; case 9: - if (gSaveBlock2Ptr->frontier.field_E1A[0] >= gSaveBlock2Ptr->frontier.field_E1A[1]) + if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[0] >= gSaveBlock2Ptr->frontier.pyramidWinStreaks[1]) { - unk = gSaveBlock2Ptr->frontier.field_E1A[0]; + unk = gSaveBlock2Ptr->frontier.pyramidWinStreaks[0]; } else { - unk = gSaveBlock2Ptr->frontier.field_E1A[1]; + unk = gSaveBlock2Ptr->frontier.pyramidWinStreaks[1]; } break; } @@ -2253,7 +2253,7 @@ void sub_813A080(void) for (i = 0; i < 9; i++) { - if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode]) + if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]) { gSpecialVar_0x8005 = 4; gSpecialVar_0x8006 = i + 5; @@ -2997,7 +2997,7 @@ void sub_813A8FC(void) { u8 string[32]; u32 x; - StringCopy(ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->frontier.frontierBattlePoints, STR_CONV_MODE_RIGHT_ALIGN, 4), gText_BP); + StringCopy(ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->frontier.battlePoints, STR_CONV_MODE_RIGHT_ALIGN, 4), gText_BP); x = GetStringRightAlignXOffset(1, string, 48); AddTextPrinterParameterized(gUnknown_0203AB6D, 1, string, x, 1, 0, NULL); } @@ -3028,31 +3028,31 @@ void sub_813A988(void) void sub_813A9A4(void) { - if (gSaveBlock2Ptr->frontier.frontierBattlePoints < gSpecialVar_0x8004) + if (gSaveBlock2Ptr->frontier.battlePoints < gSpecialVar_0x8004) { - gSaveBlock2Ptr->frontier.frontierBattlePoints = 0; + gSaveBlock2Ptr->frontier.battlePoints = 0; } else { - gSaveBlock2Ptr->frontier.frontierBattlePoints -= gSpecialVar_0x8004; + gSaveBlock2Ptr->frontier.battlePoints -= gSpecialVar_0x8004; } } void sub_813A9D0(void) { - if (gSaveBlock2Ptr->frontier.frontierBattlePoints + gSpecialVar_0x8004 > 0x270F) + if (gSaveBlock2Ptr->frontier.battlePoints + gSpecialVar_0x8004 > 9999) { - gSaveBlock2Ptr->frontier.frontierBattlePoints = 0x270f; + gSaveBlock2Ptr->frontier.battlePoints = 9999; } else { - gSaveBlock2Ptr->frontier.frontierBattlePoints = gSaveBlock2Ptr->frontier.frontierBattlePoints + gSpecialVar_0x8004; + gSaveBlock2Ptr->frontier.battlePoints = gSaveBlock2Ptr->frontier.battlePoints + gSpecialVar_0x8004; } } u16 sub_813AA04(void) { - return gSaveBlock2Ptr->frontier.frontierBattlePoints; + return gSaveBlock2Ptr->frontier.battlePoints; } void sub_813AA18(void) diff --git a/src/fieldmap.c b/src/fieldmap.c index 96f5d2b85..5019b5dc7 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -1,7 +1,7 @@ #include "global.h" #include "overworld.h" #include "bg.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "constants/rgb.h" #include "fieldmap.h" #include "fldeff_80F9BCC.h" @@ -14,6 +14,8 @@ #include "secret_base.h" #include "tv.h" +extern void sub_81AA078(u16*, u8); + struct ConnectionFlags { u8 south:1; diff --git a/src/frontier_util.c b/src/frontier_util.c new file mode 100644 index 000000000..39f472a60 --- /dev/null +++ b/src/frontier_util.c @@ -0,0 +1,2752 @@ +#include "global.h" +#include "frontier_util.h" +#include "event_data.h" +#include "battle_setup.h" +#include "overworld.h" +#include "random.h" +#include "battle_tower.h" +#include "field_specials.h" +#include "battle.h" +#include "script_pokemon_util_80F87D8.h" +#include "main.h" +#include "window.h" +#include "menu.h" +#include "text.h" +#include "battle_records.h" +#include "international_string_util.h" +#include "string_util.h" +#include "new_game.h" +#include "link.h" +#include "tv.h" +#include "apprentice.h" +#include "pokedex.h" +#include "recorded_battle.h" +#include "data2.h" +#include "record_mixing.h" +#include "strings.h" +#include "malloc.h" +#include "save.h" +#include "load_save.h" +#include "battle_dome.h" +#include "constants/battle_frontier.h" +#include "constants/trainers.h" +#include "constants/species.h" +#include "constants/game_stat.h" +#include "constants/moves.h" +#include "constants/items.h" +#include "constants/event_objects.h" + +extern u8 gUnknown_0203CEF8[]; + +struct FrontierBrainMon +{ + u16 species; + u16 heldItem; + u8 fixedIV; + u8 nature; + u8 evs[6]; + u16 moves[4]; +}; + +extern const struct BattleFrontierTrainer gBattleFrontierTrainers[]; +extern const u8 *const gUnknown_08611D08[]; +extern const u8 *const gUnknown_08611CB0[][2]; +extern const u8 *const gUnknown_08611D00[]; +extern const u8 *const *const gUnknown_08611DB0[]; +extern const u8 *const *const gUnknown_08611DB8[]; +extern const u16 gFacilityToBrainTrainerId[]; + +extern void sub_81B8558(void); + +// This file's functions. +static void sub_81A17A0(void); +static void sub_81A1830(void); +static void sub_81A1968(void); +static void sub_81A1AD4(void); +static void DoSoftReset_(void); +static void sub_81A1B28(void); +static void sub_81A1B38(void); +static void ShowFacilityResultsWindow(void); +static void sub_81A31FC(void); +static void sub_81A35EC(void); +static void sub_81A3B00(void); +static void sub_81A3B64(void); +static void sub_81A3D30(void); +static void sub_81A3D58(void); +static void sub_81A3DA0(void); +static void sub_81A3FD4(void); +static void sub_81A4224(void); +static void sub_81A4230(void); +static void sub_81A43A8(void); +static void sub_81A4410(void); +static void sub_81A443C(void); +static void sub_81A447C(void); +static void sub_81A457C(void); +static void ShowTowerResultsWindow(u8); +static void ShowDomeResultsWindow(u8); +static void ShowPalaceResultsWindow(u8); +static void ShowPikeResultsWindow(void); +static void ShowFactoryResultsWindow(u8); +static void ShowArenaResultsWindow(void); +static void ShowPyramidResultsWindow(void); +static void ShowLinkContestResultsWindow(void); +static void CopyFrontierBrainText(bool8 playerWonText); + +// const rom data +static const u8 gUnknown_08611550[][4] = +{ + [FRONTIER_FACILITY_TOWER] = {0x23, 0x46, 0x23, 0x01}, + [FRONTIER_FACILITY_DOME] = {0x04, 0x09, 0x05, 0x00}, + [FRONTIER_FACILITY_PALACE] = {0x15, 0x2a, 0x15, 0x01}, + [FRONTIER_FACILITY_ARENA] = {0x1c, 0x38, 0x1c, 0x01}, + [FRONTIER_FACILITY_FACTORY] = {0x15, 0x2a, 0x15, 0x01}, + [FRONTIER_FACILITY_PIKE] = {0x1c, 0x8c, 0x38, 0x01}, + [FRONTIER_FACILITY_PYRAMID] = {0x15, 0x46, 0x23, 0x00}, +}; + +static const struct FrontierBrainMon sFrontierBrainsMons[][2][3] = +{ + [FRONTIER_FACILITY_TOWER] = + { + // Silver Symbol. + { + { + .species = SPECIES_ALAKAZAM, + .heldItem = ITEM_BRIGHT_POWDER, + .fixedIV = 24, + .nature = 15, + .evs = {106, 0, 152, 152, 100, 0}, + .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_DISABLE}, + }, + { + .species = SPECIES_ENTEI, + .heldItem = ITEM_LUM_BERRY, + .fixedIV = 24, + .nature = 1, + .evs = {100, 152, 152, 0, 100, 6}, + .moves = {MOVE_FIRE_BLAST, MOVE_CALM_MIND, MOVE_RETURN, MOVE_ROAR}, + }, + { + .species = SPECIES_SNORLAX, + .heldItem = ITEM_QUICK_CLAW, + .fixedIV = 24, + .nature = 3, + .evs = {152, 152, 0, 0, 106, 100}, + .moves = {MOVE_BODY_SLAM, MOVE_BELLY_DRUM, MOVE_YAWN, MOVE_SHADOW_BALL}, + }, + }, + // Gold Symbol. + { + { + .species = SPECIES_RAIKOU, + .heldItem = ITEM_LUM_BERRY, + .fixedIV = 31, + .nature = 15, + .evs = {158, 0, 252, 100, 0, 0}, + .moves = {MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_REFLECT, MOVE_REST}, + }, + { + .species = SPECIES_LATIOS, + .heldItem = ITEM_BRIGHT_POWDER, + .fixedIV = 31, + .nature = 15, + .evs = {252, 0, 252, 6, 0, 0}, + .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_RECOVER, MOVE_DRAGON_CLAW}, + }, + { + .species = SPECIES_SNORLAX, + .heldItem = ITEM_CHESTO_BERRY, + .fixedIV = 31, + .nature = 3, + .evs = {252, 252, 0, 0, 6, 0}, + .moves = {MOVE_CURSE, MOVE_RETURN, MOVE_REST, MOVE_SHADOW_BALL}, + }, + }, + }, + [FRONTIER_FACILITY_DOME] = + { + // Silver Symbol. + { + { + .species = SPECIES_SWAMPERT, + .heldItem = ITEM_FOCUS_BAND, + .fixedIV = 20, + .nature = 2, + .evs = {152, 152, 106, 0, 100, 0}, + .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, + }, + { + .species = SPECIES_SALAMENCE, + .heldItem = ITEM_LUM_BERRY, + .fixedIV = 20, + .nature = 3, + .evs = {152, 152, 106, 100, 0, 0}, + .moves = {MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE}, + }, + { + .species = SPECIES_CHARIZARD, + .heldItem = ITEM_WHITE_HERB, + .fixedIV = 20, + .nature = 17, + .evs = {100, 152, 106, 152, 0, 0}, + .moves = {MOVE_OVERHEAT, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_EARTHQUAKE}, + }, + }, + // Gold Symbol. + { + { + .species = SPECIES_SWAMPERT, + .heldItem = ITEM_LEFTOVERS, + .fixedIV = 31, + .nature = 2, + .evs = {252, 252, 6, 0, 0, 0}, + .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, + }, + { + .species = SPECIES_METAGROSS, + .heldItem = ITEM_QUICK_CLAW, + .fixedIV = 31, + .nature = 2, + .evs = {252, 252, 6, 0, 0, 0}, + .moves = {MOVE_PSYCHIC, MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_PROTECT}, + }, + { + .species = SPECIES_LATIAS, + .heldItem = ITEM_CHESTO_BERRY, + .fixedIV = 31, + .nature = 15, + .evs = {252, 0, 252, 6, 0, 0}, + .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_REST}, + }, + }, + }, + [FRONTIER_FACILITY_PALACE] = + { + // Silver Symbol. + { + { + .species = SPECIES_CROBAT, + .heldItem = ITEM_BRIGHT_POWDER, + .fixedIV = 16, + .nature = 3, + .evs = {152, 0, 0, 152, 100, 106}, + .moves = {MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_FLY}, + }, + { + .species = SPECIES_SLAKING, + .heldItem = ITEM_SCOPE_LENS, + .fixedIV = 16, + .nature = 0, + .evs = {152, 152, 0, 106, 100, 0}, + .moves = {MOVE_EARTHQUAKE, MOVE_SWAGGER, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}, + }, + { + .species = SPECIES_LAPRAS, + .heldItem = ITEM_QUICK_CLAW, + .fixedIV = 16, + .nature = 17, + .evs = {0, 0, 252, 0, 106, 152}, + .moves = {MOVE_ICE_BEAM, MOVE_HORN_DRILL, MOVE_CONFUSE_RAY, MOVE_PROTECT}, + }, + }, + // Gold Symbol. + { + { + .species = SPECIES_ARCANINE, + .heldItem = ITEM_WHITE_HERB, + .fixedIV = 31, + .nature = 11, + .evs = {6, 252, 252, 0, 0, 0}, + .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_ROAR, MOVE_PROTECT}, + }, + { + .species = SPECIES_SLAKING, + .heldItem = ITEM_SCOPE_LENS, + .fixedIV = 31, + .nature = 0, + .evs = {6, 252, 0, 252, 0, 0}, + .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_YAWN}, + }, + { + .species = SPECIES_SUICUNE, + .heldItem = ITEM_KINGS_ROCK, + .fixedIV = 31, + .nature = 11, + .evs = {252, 0, 252, 6, 0, 0}, + .moves = {MOVE_BLIZZARD, MOVE_SURF, MOVE_BITE, MOVE_CALM_MIND}, + }, + }, + }, + [FRONTIER_FACILITY_ARENA] = + { + // Silver Symbol. + { + { + .species = SPECIES_HERACROSS, + .heldItem = ITEM_SALAC_BERRY, + .fixedIV = 20, + .nature = 13, + .evs = {106, 152, 0, 152, 0, 100}, + .moves = {MOVE_MEGAHORN, MOVE_ROCK_TOMB, MOVE_ENDURE, MOVE_REVERSAL}, + }, + { + .species = SPECIES_UMBREON, + .heldItem = ITEM_LEFTOVERS, + .fixedIV = 20, + .nature = 20, + .evs = {152, 0, 100, 0, 152, 106}, + .moves = {MOVE_BODY_SLAM, MOVE_CONFUSE_RAY, MOVE_PSYCHIC, MOVE_FAINT_ATTACK}, + }, + { + .species = SPECIES_SHEDINJA, + .heldItem = ITEM_BRIGHT_POWDER, + .fixedIV = 20, + .nature = 3, + .evs = {0, 252, 6, 252, 0, 0}, + .moves = {MOVE_SHADOW_BALL, MOVE_RETURN, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE}, + }, + }, + // Gold Symbol. + { + { + .species = SPECIES_UMBREON, + .heldItem = ITEM_CHESTO_BERRY, + .fixedIV = 31, + .nature = 20, + .evs = {252, 0, 0, 0, 252, 6}, + .moves = {MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_REST, MOVE_PSYCHIC}, + }, + { + .species = SPECIES_GENGAR, + .heldItem = ITEM_LEFTOVERS, + .fixedIV = 31, + .nature = 15, + .evs = {252, 0, 252, 0, 6, 0}, + .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_DESTINY_BOND}, + }, + { + .species = SPECIES_BRELOOM, + .heldItem = ITEM_LUM_BERRY, + .fixedIV = 31, + .nature = 13, + .evs = {6, 252, 0, 252, 0, 0}, + .moves = {MOVE_SPORE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HEADBUTT}, + }, + }, + }, + [FRONTIER_FACILITY_FACTORY] = + { + // Silver Symbol. + { + { + .species = SPECIES_METANG, + .heldItem = ITEM_SITRUS_BERRY, + .fixedIV = 31, + .nature = 2, + .evs = {0, 252, 252, 0, 6, 0}, + .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW}, + }, + { + .species = SPECIES_SKARMORY, + .heldItem = ITEM_SITRUS_BERRY, + .fixedIV = 31, + .nature = 8, + .evs = {252, 0, 0, 0, 6, 252}, + .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING}, + }, + { + .species = SPECIES_AGGRON, + .heldItem = ITEM_SITRUS_BERRY, + .fixedIV = 31, + .nature = 3, + .evs = {0, 252, 0, 0, 252, 6}, + .moves = {MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW}, + }, + }, + // Gold Symbol. + { + { + .species = SPECIES_METANG, + .heldItem = ITEM_SITRUS_BERRY, + .fixedIV = 31, + .nature = 2, + .evs = {0, 252, 252, 0, 6, 0}, + .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW}, + }, + { + .species = SPECIES_SKARMORY, + .heldItem = ITEM_SITRUS_BERRY, + .fixedIV = 31, + .nature = 8, + .evs = {252, 0, 0, 0, 6, 252}, + .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING}, + }, + { + .species = SPECIES_AGGRON, + .heldItem = ITEM_SITRUS_BERRY, + .fixedIV = 31, + .nature = 3, + .evs = {0, 252, 0, 0, 252, 6}, + .moves = {MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW}, + }, + }, + }, + [FRONTIER_FACILITY_PIKE] = + { + // Silver Symbol. + { + { + .species = SPECIES_SEVIPER, + .heldItem = ITEM_QUICK_CLAW, + .fixedIV = 16, + .nature = 2, + .evs = {252, 0, 252, 0, 6, 0}, + .moves = {MOVE_SWAGGER, MOVE_CRUNCH, MOVE_POISON_FANG, MOVE_GIGA_DRAIN}, + }, + { + .species = SPECIES_SHUCKLE, + .heldItem = ITEM_CHESTO_BERRY, + .fixedIV = 16, + .nature = 5, + .evs = {252, 0, 0, 0, 106, 252}, + .moves = {MOVE_TOXIC, MOVE_SANDSTORM, MOVE_PROTECT, MOVE_REST}, + }, + { + .species = SPECIES_MILOTIC, + .heldItem = ITEM_LEFTOVERS, + .fixedIV = 16, + .nature = 15, + .evs = {152, 0, 100, 0, 152, 106}, + .moves = {MOVE_ICE_BEAM, MOVE_MIRROR_COAT, MOVE_SURF, MOVE_RECOVER}, + }, + }, + // Gold Symbol. + { + { + .species = SPECIES_SEVIPER, + .heldItem = ITEM_FOCUS_BAND, + .fixedIV = 31, + .nature = 5, + .evs = {252, 0, 0, 0, 252, 6}, + .moves = {MOVE_SWAGGER, MOVE_CRUNCH, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, + }, + { + .species = SPECIES_STEELIX, + .heldItem = ITEM_BRIGHT_POWDER, + .fixedIV = 31, + .nature = 2, + .evs = {252, 0, 0, 0, 6, 252}, + .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION, MOVE_SCREECH}, + }, + { + .species = SPECIES_GYARADOS, + .heldItem = ITEM_CHESTO_BERRY, + .fixedIV = 31, + .nature = 3, + .evs = {252, 6, 0, 0, 0, 252}, + .moves = {MOVE_DRAGON_DANCE, MOVE_RETURN, MOVE_ROAR, MOVE_REST}, + }, + }, + }, + [FRONTIER_FACILITY_PYRAMID] = + { + // Silver Symbol. + { + { + .species = SPECIES_REGIROCK, + .heldItem = ITEM_QUICK_CLAW, + .fixedIV = 16, + .nature = 3, + .evs = {152, 152, 0, 0, 106, 100}, + .moves = {MOVE_EXPLOSION, MOVE_SUPERPOWER, MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER}, + }, + { + .species = SPECIES_REGISTEEL, + .heldItem = ITEM_LEFTOVERS, + .fixedIV = 16, + .nature = 3, + .evs = {152, 152, 0, 0, 6, 200}, + .moves = {MOVE_EARTHQUAKE, MOVE_METAL_CLAW, MOVE_TOXIC, MOVE_IRON_DEFENSE}, + }, + { + .species = SPECIES_REGICE, + .heldItem = ITEM_CHESTO_BERRY, + .fixedIV = 16, + .nature = 15, + .evs = {106, 0, 152, 0, 100, 152}, + .moves = {MOVE_ICE_BEAM, MOVE_AMNESIA, MOVE_THUNDER, MOVE_REST}, + }, + }, + // Gold Symbol. + { + { + .species = SPECIES_ARTICUNO, + .heldItem = ITEM_SCOPE_LENS, + .fixedIV = 31, + .nature = 16, + .evs = {6, 0, 252, 252, 0, 0}, + .moves = {MOVE_BLIZZARD, MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_REFLECT}, + }, + { + .species = SPECIES_ZAPDOS, + .heldItem = ITEM_LUM_BERRY, + .fixedIV = 31, + .nature = 16, + .evs = {6, 0, 252, 252, 0, 0}, + .moves = {MOVE_THUNDER, MOVE_DETECT, MOVE_DRILL_PECK, MOVE_LIGHT_SCREEN}, + }, + { + .species = SPECIES_MOLTRES, + .heldItem = ITEM_BRIGHT_POWDER, + .fixedIV = 31, + .nature = 16, + .evs = {6, 0, 252, 252, 0, 0}, + .moves = {MOVE_FIRE_BLAST, MOVE_HYPER_BEAM, MOVE_AERIAL_ACE, MOVE_SAFEGUARD}, + }, + }, + }, +}; + +static const u8 gUnknown_086118B4[][7][4] = +{ + { + {1, 2, 3, 3}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0} + }, + { + {2, 3, 4, 4}, {1, 1, 0, 0}, {4, 5, 0, 0}, {1, 0, 0, 0}, {3, 4, 0, 0}, {1, 0, 0, 0}, {5, 0, 0, 0} + }, + { + {3, 4, 5, 5}, {2, 2, 0, 0}, {5, 6, 0, 0}, {1, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0} + }, + { + {4, 5, 6, 6}, {2, 2, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {4, 5, 0, 0}, {2, 0, 0, 0}, {6, 0, 0, 0} + }, + { + {5, 6, 7, 7}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {2, 0, 0, 0}, {7, 0, 0, 0} + }, + { + {6, 7, 8, 8}, {3, 3, 0, 0}, {6, 7, 0, 0}, {2, 0, 0, 0}, {5, 6, 0, 0}, {4, 0, 0, 0}, {7, 0, 0, 0} + }, + { + {7, 8, 9, 9}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0}, {6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0} + }, + { + {8, 9, 10, 10}, {4, 4, 0, 0}, {7, 8, 0, 0}, {3, 0, 0, 0},{6, 7, 0, 0}, {4, 0, 0, 0}, {8, 0, 0, 0} + }, + { + {9, 10, 11, 11}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0} + }, + { + {10, 11, 12, 12}, {5, 5, 0, 0}, {8, 9, 0, 0}, {4, 0, 0, 0}, {7, 8, 0, 0}, {8, 0, 0, 0}, {9, 0, 0, 0} + }, + { + {11, 12, 13, 13}, {6, 6, 0, 0}, {9, 10, 0, 0}, {5, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0} + }, + { + {12, 13, 14, 14}, {6, 6, 0, 0}, {9, 10, 0, 0}, {6, 0, 0,0}, {8, 9, 0, 0}, {8, 0, 0, 0}, {10, 0, 0, 0} + }, + { + {13, 14, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {7, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0} + }, + { + {14, 15, 15, 15}, {7, 7, 0, 0}, {10, 11, 0, 0}, {8, 0, 0, 0}, {9, 10, 0, 0}, {10, 0, 0, 0}, {11, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {9, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {8, 8, 0, 0}, {11, 12, 0, 0}, {10, 0, 0, 0}, {10, 11, 0, 0}, {10, 0, 0, 0}, {12, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {11, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {9, 9, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {11, 12, 0, 0}, {12, 0, 0, 0}, {13, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {13, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {10, 10, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {12, 13, 0, 0}, {12, 0, 0, 0}, {14, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {12, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {11, 11, 0, 0}, {14, 15, 0, 0}, {15, 0, 0, 0}, {13, 14, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {12, 12, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {14, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {14, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {13, 13, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {14, 14, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + }, + { + {15, 15, 15, 15}, {15, 15, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 15, 0, 0}, {15, 0, 0, 0}, {15, 0, 0, 0} + }, +}; + +static const u16 gUnknown_08611BFC[][2] = +{ + [FRONTIER_FACILITY_TOWER] = {0x0001, 0x0002}, + [FRONTIER_FACILITY_DOME] = {0x0004, 0x0008}, + [FRONTIER_FACILITY_PALACE] = {0x0010, 0x0020}, + [FRONTIER_FACILITY_ARENA] = {0x0040, 0x0080}, + [FRONTIER_FACILITY_FACTORY] = {0x0100, 0x0200}, + [FRONTIER_FACILITY_PIKE] = {0x0400, 0x0800}, + [FRONTIER_FACILITY_PYRAMID] = {0x1000, 0x2000}, +}; + +static void (* const sFrontierUtilFuncs[])(void) = +{ + sub_81A17A0, + sub_81A1830, + sub_81A1968, + sub_81A1AD4, + DoSoftReset_, + sub_81A1B28, + sub_81A1B38, + ShowFacilityResultsWindow, + sub_81A31FC, + sub_81A35EC, + sub_81A3B00, + sub_81A3B64, + sub_81A3D30, + sub_81A3D58, + sub_81A3DA0, + sub_81A3FD4, + sub_81A4224, + sub_81A4230, + sub_81A43A8, + sub_81A4410, + sub_81A443C, + sub_81A447C, + sub_81A457C, +}; + +static const struct WindowTemplate gUnknown_08611C74 = +{ + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 0x1c, + .height = 0x12, + .paletteNum = 15, + .baseBlock = 1 +}; + +static const struct WindowTemplate gUnknown_08611C7C = +{ + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 2, + .width = 0x1a, + .height = 15, + .paletteNum = 15, + .baseBlock = 1 +}; + +static const struct WindowTemplate gUnknown_08611C84 = +{ + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 0x1a, + .height = 17, + .paletteNum = 15, + .baseBlock = 1 +}; + +// Second field - whether the character is female. +static const u8 sFacilityToBrainEventObjGfx[][2] = +{ + [FRONTIER_FACILITY_TOWER] = {EVENT_OBJ_GFX_ANABEL, TRUE}, + [FRONTIER_FACILITY_DOME] = {EVENT_OBJ_GFX_TUCKER, FALSE}, + [FRONTIER_FACILITY_PALACE] = {EVENT_OBJ_GFX_SPENSER, FALSE}, + [FRONTIER_FACILITY_ARENA] = {EVENT_OBJ_GFX_GRETA, TRUE}, + [FRONTIER_FACILITY_FACTORY] = {EVENT_OBJ_GFX_NOLAND, FALSE}, + [FRONTIER_FACILITY_PIKE] = {EVENT_OBJ_GFX_LUCY, TRUE}, + [FRONTIER_FACILITY_PYRAMID] = {EVENT_OBJ_GFX_BRANDON, FALSE}, +}; + +const u16 gFrontierBannedSpecies[] = +{ + SPECIES_MEW, SPECIES_MEWTWO, SPECIES_HO_OH, SPECIES_LUGIA, SPECIES_CELEBI, + SPECIES_KYOGRE, SPECIES_GROUDON, SPECIES_RAYQUAZA, SPECIES_JIRACHI, SPECIES_DEOXYS, 0xFFFF +}; + +// code +void CallFrontierUtilFunc(void) +{ + sFrontierUtilFuncs[gSpecialVar_0x8004](); +} + +static void sub_81A17A0(void) +{ + VarSet(VAR_TEMP_0, 0xFF); + switch (gSaveBlock2Ptr->frontier.field_CA8) + { + case 0: + break; + case 1: + sub_813A878(0); + VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8); + break; + case 4: + sub_813A878(0); + VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8); + break; + case 3: + sub_813A878(1); + VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8); + break; + case 2: + VarSet(VAR_TEMP_0, gSaveBlock2Ptr->frontier.field_CA8); + break; + } +} + +static void sub_81A1830(void) +{ + u8 facility = VarGet(VAR_FRONTIER_FACILITY); + u8 currSymbol = GetPlayerSymbolCountForFacility(facility); + if (currSymbol == 2) + currSymbol = 1; + + switch (gSpecialVar_0x8005) + { + case 0: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA8; + break; + case 1: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.lvlMode; + break; + case 2: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.curChallengeBattleNum; + break; + case 3: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA9_a; + break; + case 5: + gSpecialVar_Result = gBattleOutcome; + gBattleOutcome = 0; + break; + case 6: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CA9_b; + break; + case 7: + gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_D00 & gUnknown_08611BFC[facility][currSymbol]; + break; + } +} + +static void sub_81A1968(void) +{ + s32 i; + u8 facility = VarGet(VAR_FRONTIER_FACILITY); + u8 currSymbol = GetPlayerSymbolCountForFacility(facility); + if (currSymbol == 2) + currSymbol = 1; + + switch (gSpecialVar_0x8005) + { + case 0: + gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8006; + break; + case 1: + gSaveBlock2Ptr->frontier.lvlMode = gSpecialVar_0x8006; + break; + case 2: + gSaveBlock2Ptr->frontier.curChallengeBattleNum = gSpecialVar_0x8006; + break; + case 3: + gSaveBlock2Ptr->frontier.field_CA9_a = gSpecialVar_0x8006; + break; + case 4: + for (i = 0; i < 4; i++) + gSaveBlock2Ptr->frontier.selectedPartyMons[i] = gUnknown_0203CEF8[i]; + break; + case 6: + gSaveBlock2Ptr->frontier.field_CA9_b = gSpecialVar_0x8006; + break; + case 7: + gSaveBlock2Ptr->frontier.field_D00 |= gUnknown_08611BFC[facility][currSymbol]; + break; + } +} + +static void sub_81A1AD4(void) +{ + s32 i; + + sub_81B8558(); + for (i = 0; i < gSpecialVar_0x8005; i++) + gUnknown_0203CEF8[i] = gSaveBlock2Ptr->frontier.selectedPartyMons[i]; + ReducePlayerPartyToThree(); +} + +static void DoSoftReset_(void) +{ + DoSoftReset(); +} + +static void sub_81A1B28(void) +{ + gFacilityTrainers = gBattleFrontierTrainers; +} + +static void sub_81A1B38(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + u16 monId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1; + if (monId < PARTY_SIZE) + gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1] = gPlayerParty[i]; + } +} + +static void ShowFacilityResultsWindow(void) +{ + if (gSpecialVar_0x8006 > 3) + gSpecialVar_0x8006 = 0; + switch (gSpecialVar_0x8005) + { + case FRONTIER_FACILITY_TOWER: + ShowTowerResultsWindow(gSpecialVar_0x8006); + break; + case FRONTIER_FACILITY_DOME: + ShowDomeResultsWindow(gSpecialVar_0x8006); + break; + case FRONTIER_FACILITY_PALACE: + ShowPalaceResultsWindow(gSpecialVar_0x8006); + break; + case FRONTIER_FACILITY_PIKE: + ShowPikeResultsWindow(); + break; + case FRONTIER_FACILITY_FACTORY: + ShowFactoryResultsWindow(gSpecialVar_0x8006); + break; + case FRONTIER_FACILITY_ARENA: + ShowArenaResultsWindow(); + break; + case FRONTIER_FACILITY_PYRAMID: + ShowPyramidResultsWindow(); + break; + case RESULTS_LINK_CONTEST: + ShowLinkContestResultsWindow(); + break; + } +} + +static bool8 sub_81A1C24(u32 flags) +{ + if (gSaveBlock2Ptr->frontier.field_CDC & flags) + return TRUE; + else + return FALSE; +} + +static void PrintAligned(const u8 *str, s32 y) +{ + s32 x = GetStringCenterAlignXOffset(1, str, 224); + y = (y * 8) + 1; + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, y, TEXT_SPEED_FF, NULL); +} + +static void PrintHyphens(s32 y) +{ + s32 i; + u8 text[37]; + + for (i = 0; i < 36; i++) + text[i] = CHAR_HYPHEN; + text[i] = EOS; + + y = (y * 8) + 1; + AddTextPrinterParameterized(gRecordsWindowId, 1, text, 4, y, TEXT_SPEED_FF, NULL); +} + +// Battle Tower records. +static void TowerPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y) +{ + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL); + if (num > 9999) + num = 9999; + ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gText_WinStreak); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL); +} + +static void TowerPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + u16 num = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode]; + TowerPrintStreak(gText_Record, num, x1, x2, y); +} + +static u16 TowerGetWinStreak(u8 battleMode, u8 lvlMode) +{ + u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; + if (winStreak > 9999) + return 9999; + else + return winStreak; +} + +static void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + bool8 isCurrent; + u16 winStreak = TowerGetWinStreak(battleMode, lvlMode); + switch (battleMode) + { + default: + case FRONTIER_MODE_SINGLES: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(2); + else + isCurrent = sub_81A1C24(1); + break; + case FRONTIER_MODE_DOUBLES: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x8000); + else + isCurrent = sub_81A1C24(0x4000); + break; + case FRONTIER_MODE_MULTIS: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x20000); + else + isCurrent = sub_81A1C24(0x10000); + break; + case FRONTIER_MODE_LINK_MULTIS: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x80000); + else + isCurrent = sub_81A1C24(0x40000); + break; + } + + if (isCurrent == TRUE) + TowerPrintStreak(gText_Current, winStreak, x1, x2, y); + else + TowerPrintStreak(gText_Prev, winStreak, x1, x2, y); +} + +static void ShowTowerResultsWindow(u8 battleMode) +{ + gRecordsWindowId = AddWindow(&gUnknown_08611C74); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + if (battleMode == FRONTIER_MODE_SINGLES) + StringExpandPlaceholders(gStringVar4, gText_SingleBattleRoomResults); + else if (battleMode == FRONTIER_MODE_DOUBLES) + StringExpandPlaceholders(gStringVar4, gText_DoubleBattleRoomResults); + else if (battleMode == FRONTIER_MODE_MULTIS) + StringExpandPlaceholders(gStringVar4, gText_MultiBattleRoomResults); + else + StringExpandPlaceholders(gStringVar4, gText_LinkMultiBattleRoomResults); + + PrintAligned(gStringVar4, 2); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 16, 49, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 16, 97, TEXT_SPEED_FF, NULL); + PrintHyphens(10); + TowerPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 72, 132, 49); + TowerPrintRecordStreak(battleMode, FRONTIER_LVL_50, 72, 132, 65); + TowerPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 72, 132, 97); + TowerPrintRecordStreak(battleMode, FRONTIER_LVL_OPEN, 72, 132, 113); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +// Battle Dome records. +static u16 DomeGetWinStreak(u8 battleMode, u8 lvlMode) +{ + u16 winStreak = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; + if (winStreak > 9999) + return 9999; + else + return winStreak; +} + +static void PrintTwoStrings(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y) +{ + AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL); + ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, str2); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL); +} + +static void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + bool8 isCurrent; + u16 winStreak = DomeGetWinStreak(battleMode, lvlMode); + switch (battleMode) + { + default: + case FRONTIER_MODE_SINGLES: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(8); + else + isCurrent = sub_81A1C24(4); + break; + case FRONTIER_MODE_DOUBLES: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x200000); + else + isCurrent = sub_81A1C24(0x100000); + break; + } + + if (isCurrent == TRUE) + PrintTwoStrings(gText_Current, gText_ClearStreak, winStreak, x1, x2, y); + else + PrintTwoStrings(gText_Prev, gText_ClearStreak, winStreak, x1, x2, y); +} + +static void ShowDomeResultsWindow(u8 battleMode) +{ + gRecordsWindowId = AddWindow(&gUnknown_08611C74); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + if (battleMode == FRONTIER_MODE_SINGLES) + StringExpandPlaceholders(gStringVar4, gText_SingleBattleTourneyResults); + else + StringExpandPlaceholders(gStringVar4, gText_DoubleBattleTourneyResults); + + PrintAligned(gStringVar4, 0); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 8, 97, TEXT_SPEED_FF, NULL); + PrintHyphens(10); + DomePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 64, 121, 33); + PrintTwoStrings(gText_Record, gText_ClearStreak, gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][FRONTIER_LVL_50], 64, 121, 49); + PrintTwoStrings(gText_Total, gText_Championships, gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][FRONTIER_LVL_50], 64, 112, 65); + DomePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 64, 121, 97); + PrintTwoStrings(gText_Record, gText_ClearStreak, gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][FRONTIER_LVL_OPEN], 64, 121, 113); + PrintTwoStrings(gText_Total, gText_Championships, gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][FRONTIER_LVL_OPEN], 64, 112, 129); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +// Battle Palace records. +static void PalacePrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y) +{ + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL); + if (num > 9999) + num = 9999; + ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gText_WinStreak); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL); +} + +static void PalacePrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + u16 num = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode]; + PalacePrintStreak(gText_Record, num, x1, x2, y); +} + +static u16 PalaceGetWinStreak(u8 battleMode, u8 lvlMode) +{ + u16 winStreak = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]; + if (winStreak > 9999) + return 9999; + else + return winStreak; +} + +static void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + bool8 isCurrent; + u16 winStreak = PalaceGetWinStreak(battleMode, lvlMode); + switch (battleMode) + { + default: + case FRONTIER_MODE_SINGLES: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x20); + else + isCurrent = sub_81A1C24(0x10); + break; + case FRONTIER_MODE_DOUBLES: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x800000); + else + isCurrent = sub_81A1C24(0x400000); + } + + if (isCurrent == TRUE) + PalacePrintStreak(gText_Current, winStreak, x1, x2, y); + else + PalacePrintStreak(gText_Prev, winStreak, x1, x2, y); +} + +static void ShowPalaceResultsWindow(u8 battleMode) +{ + gRecordsWindowId = AddWindow(&gUnknown_08611C74); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + if (battleMode == FRONTIER_MODE_SINGLES) + StringExpandPlaceholders(gStringVar4, gText_SingleBattleHallResults); + else + StringExpandPlaceholders(gStringVar4, gText_DoubleBattleHallResults); + + PrintAligned(gStringVar4, 2); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 16, 49, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 16, 97, TEXT_SPEED_FF, NULL); + PrintHyphens(10); + PalacePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 72, 131, 49); + PalacePrintRecordStreak(battleMode, FRONTIER_LVL_50, 72, 131, 65); + PalacePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 72, 131, 97); + PalacePrintRecordStreak(battleMode, FRONTIER_LVL_OPEN, 72, 131, 113); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +// Battle Pike records. +static u16 PikeGetWinStreak(u8 lvlMode) +{ + u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode]; + if (winStreak > 9999) + return 9999; + else + return winStreak; +} + +static void PikePrintCleared(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y) +{ + AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL); + ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, str2); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL); +} + +static void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + bool8 isCurrent; + u16 winStreak = PikeGetWinStreak(lvlMode); + + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x800); + else + isCurrent = sub_81A1C24(0x400); + + if (isCurrent == TRUE) + PrintTwoStrings(gText_Current, gText_RoomsCleared, winStreak, x1, x2, y); + else + PrintTwoStrings(gText_Prev, gText_RoomsCleared, winStreak, x1, x2, y); +} + +static void ShowPikeResultsWindow(void) +{ + gRecordsWindowId = AddWindow(&gUnknown_08611C74); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + StringExpandPlaceholders(gStringVar4, gText_BattleChoiceResults); + PrintAligned(gStringVar4, 0); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 8, 97, TEXT_SPEED_FF, NULL); + PrintHyphens(10); + PikePrintPrevOrCurrentStreak(FRONTIER_LVL_50, 64, 114, 33); + PikePrintCleared(gText_Record, gText_RoomsCleared, gSaveBlock2Ptr->frontier.pikeRecordStreaks[FRONTIER_LVL_50], 64, 114, 49); + PikePrintCleared(gText_Total, gText_TimesCleared, gSaveBlock2Ptr->frontier.pikeTotalStreaks[FRONTIER_LVL_50], 64, 114, 65); + PikePrintPrevOrCurrentStreak(FRONTIER_LVL_OPEN, 64, 114, 97); + PikePrintCleared(gText_Record, gText_RoomsCleared, gSaveBlock2Ptr->frontier.pikeRecordStreaks[FRONTIER_LVL_OPEN], 64, 114, 113); + PikePrintCleared(gText_Total, gText_TimesCleared, gSaveBlock2Ptr->frontier.pikeTotalStreaks[FRONTIER_LVL_OPEN], 64, 114, 129); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +// Battle Arena records. +static void ArenaPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y) +{ + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL); + if (num > 9999) + num = 9999; + ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gText_KOsInARow); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL); +} + +static void ArenaPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + u16 num = gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode]; + ArenaPrintStreak(gText_Record, num, x1, x2, y); +} + +static u16 ArenaGetWinStreak(u8 lvlMode) +{ + u16 winStreak = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode]; + if (winStreak > 9999) + return 9999; + else + return winStreak; +} + +static void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + bool8 isCurrent; + u16 winStreak = ArenaGetWinStreak(lvlMode); + + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x80); + else + isCurrent = sub_81A1C24(0x40); + + if (isCurrent == TRUE) + ArenaPrintStreak(gText_Current, winStreak, x1, x2, y); + else + ArenaPrintStreak(gText_Prev, winStreak, x1, x2, y); +} + +static void ShowArenaResultsWindow(void) +{ + gRecordsWindowId = AddWindow(&gUnknown_08611C74); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + PrintHyphens(10); + StringExpandPlaceholders(gStringVar4, gText_SetKOTourneyResults); + PrintAligned(gStringVar4, 2); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 16, 49, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 16, 97, TEXT_SPEED_FF, NULL); + ArenaPrintPrevOrCurrentStreak(FRONTIER_LVL_50, 72, 126, 49); + ArenaPrintRecordStreak(FRONTIER_LVL_50, 72, 126, 65); + ArenaPrintPrevOrCurrentStreak(FRONTIER_LVL_OPEN, 72, 126, 97); + ArenaPrintRecordStreak(FRONTIER_LVL_OPEN, 72, 126, 113); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +// Battle Factory records. +static void FactoryPrintStreak(const u8 *str, u16 num1, u16 num2, u8 x1, u8 x2, u8 x3, u8 y) +{ + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL); + if (num1 > 9999) + num1 = 9999; + ConvertIntToDecimalStringN(gStringVar1, num1, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gText_WinStreak); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL); + + ConvertIntToDecimalStringN(gStringVar1, num2, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gText_TimesVar1); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x3, y, TEXT_SPEED_FF, NULL); +} + +static void FactoryPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y) +{ + u16 num1 = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode]; + u16 num2 = gSaveBlock2Ptr->frontier.factoryRecordRentsCount[battleMode][lvlMode]; + FactoryPrintStreak(gText_Record, num1, num2, x1, x2, x3, y); +} + +static u16 FactoryGetWinStreak(u8 battleMode, u8 lvlMode) +{ + u16 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode]; + if (winStreak > 9999) + return 9999; + else + return winStreak; +} + +static u16 FactoryGetRentsCount(u8 battleMode, u8 lvlMode) +{ + u16 rents = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode]; + if (rents > 9999) + return 9999; + else + return rents; +} + +static void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y) +{ + bool8 isCurrent; + u16 winStreak = FactoryGetWinStreak(battleMode, lvlMode); + u16 rents = FactoryGetRentsCount(battleMode, lvlMode); + switch (battleMode) + { + default: + case FRONTIER_MODE_SINGLES: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x200); + else + isCurrent = sub_81A1C24(0x100); + break; + case FRONTIER_MODE_DOUBLES: + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x2000000); + else + isCurrent = sub_81A1C24(0x1000000); + break; + } + + if (isCurrent == TRUE) + FactoryPrintStreak(gText_Current, winStreak, rents, x1, x2, x3, y); + else + FactoryPrintStreak(gText_Prev, winStreak, rents, x1, x2, x3, y); +} + +static void ShowFactoryResultsWindow(u8 battleMode) +{ + gRecordsWindowId = AddWindow(&gUnknown_08611C74); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + if (battleMode == FRONTIER_MODE_SINGLES) + StringExpandPlaceholders(gStringVar4, gText_BattleSwapSingleResults); + else + StringExpandPlaceholders(gStringVar4, gText_BattleSwapDoubleResults); + + PrintAligned(gStringVar4, 0); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_RentalSwap, 152, 33, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 8, 97, TEXT_SPEED_FF, NULL); + PrintHyphens(10); + FactoryPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 8, 64, 158, 49); + FactoryPrintRecordStreak(battleMode, FRONTIER_LVL_50, 8, 64, 158, 65); + FactoryPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 8, 64, 158, 113); + FactoryPrintRecordStreak(battleMode, FRONTIER_LVL_OPEN, 8, 64, 158, 129); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +// Battle Pyramid records. +static void PyramidPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y) +{ + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL); + if (num > 9999) + num = 9999; + ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gText_FloorsCleared); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL); +} + +static void PyramidPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + u16 num = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode]; + PyramidPrintStreak(gText_Record, num, x1, x2, y); +} + +static u16 PyramidGetWinStreak(u8 lvlMode) +{ + u16 winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode]; + if (winStreak > 9999) + return 9999; + else + return winStreak; +} + +static void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y) +{ + bool8 isCurrent; + u16 winStreak = PyramidGetWinStreak(lvlMode); + + if (lvlMode != FRONTIER_LVL_50) + isCurrent = sub_81A1C24(0x2000); + else + isCurrent = sub_81A1C24(0x1000); + + if (isCurrent == TRUE) + PyramidPrintStreak(gText_Current, winStreak, x1, x2, y); + else + PyramidPrintStreak(gText_Prev, winStreak, x1, x2, y); +} + +static void ShowPyramidResultsWindow(void) +{ + gRecordsWindowId = AddWindow(&gUnknown_08611C74); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + StringExpandPlaceholders(gStringVar4, gText_BattleQuestResults); + PrintAligned(gStringVar4, 2); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 49, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_OpenLv, 8, 97, TEXT_SPEED_FF, NULL); + PrintHyphens(10); + PyramidPrintPrevOrCurrentStreak(FRONTIER_LVL_50, 64, 111, 49); + PyramidPrintRecordStreak(FRONTIER_LVL_50, 64, 111, 65); + PyramidPrintPrevOrCurrentStreak(FRONTIER_LVL_OPEN, 64, 111, 97); + PyramidPrintRecordStreak(FRONTIER_LVL_OPEN, 64, 111, 113); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +// Link contest records. Why is it in this file? +static void ShowLinkContestResultsWindow(void) +{ + const u8 *str; + s32 i, j; + s32 x; + + gRecordsWindowId = AddWindow(&gUnknown_08611C7C); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + + StringExpandPlaceholders(gStringVar4, gText_LinkContestResults); + x = GetStringCenterAlignXOffset(1, gStringVar4, 208); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x, 1, TEXT_SPEED_FF, NULL); + + str = gText_1st; + x = GetStringRightAlignXOffset(1, str, 38) + 50; + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, 25, TEXT_SPEED_FF, NULL); + + str = gText_2nd; + x = GetStringRightAlignXOffset(1, str, 38) + 88; + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, 25, TEXT_SPEED_FF, NULL); + + str = gText_3rd; + x = GetStringRightAlignXOffset(1, str, 38) + 126; + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, 25, TEXT_SPEED_FF, NULL); + + str = gText_4th; + x = GetStringRightAlignXOffset(1, str, 38) + 164; + AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, 25, TEXT_SPEED_FF, NULL); + + x = 6; + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Cool, x, 41, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Beauty, x, 57, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Cute, x, 73, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Smart, x, 89, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Tough, x, 105, TEXT_SPEED_FF, NULL); + + for (i = 0; i < 5; i++) + { + for (j = 0; j < 4; j++) + { + ConvertIntToDecimalStringN(gStringVar4, gSaveBlock2Ptr->contestLinkResults[i][j], STR_CONV_MODE_RIGHT_ALIGN, 4); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, (j * 38) + 64, (i * 16) + 41, TEXT_SPEED_FF, NULL); + } + } + + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +static void sub_81A31FC(void) +{ + u8 text[32]; + s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + + switch (facility) + { + case FRONTIER_FACILITY_TOWER: + if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode]) + { + gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; + if (battleMode == FRONTIER_MODE_LINK_MULTIS) + { + StringCopy(text, gLinkPlayers[gBattleScripting.multiplayerId ^ 1].name); + StripExtCtrlCodes(text); + StringCopy(gSaveBlock2Ptr->frontier.field_EE1[lvlMode], text); + SetTrainerId(gLinkPlayers[gBattleScripting.multiplayerId ^ 1].trainerId, gSaveBlock2Ptr->frontier.field_EF1[lvlMode]); + } + if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] > 1 + && sub_80EE818()) + { + switch (battleMode) + { + case FRONTIER_MODE_SINGLES: + sub_80EE8C8(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 1); + break; + case FRONTIER_MODE_DOUBLES: + sub_80EE8C8(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 2); + break; + case FRONTIER_MODE_MULTIS: + sub_80EE8C8(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 3); + break; + case FRONTIER_MODE_LINK_MULTIS: + sub_80EE8C8(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 4); + break; + } + } + } + break; + case FRONTIER_FACILITY_DOME: + if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode]) + { + gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; + if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] > 1 + && sub_80EE818()) + { + if (battleMode == FRONTIER_MODE_SINGLES) + sub_80EE8C8(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], 5); + else + sub_80EE8C8(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], 6); + } + } + break; + case FRONTIER_FACILITY_PALACE: + if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode]) + { + gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]; + if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] > 1 + && sub_80EE818()) + { + if (battleMode == FRONTIER_MODE_SINGLES) + sub_80EE8C8(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], 11); + else + sub_80EE8C8(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], 12); + } + } + break; + case FRONTIER_FACILITY_ARENA: + if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode]) + { + gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode]; + if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > 1 + && sub_80EE818()) + { + sub_80EE8C8(gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode], 10); + } + } + break; + case FRONTIER_FACILITY_FACTORY: + if (gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] > gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode]) + { + gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode]; + gSaveBlock2Ptr->frontier.factoryRecordRentsCount[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode]; + if (gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] > 1 + && sub_80EE818()) + { + if (battleMode == FRONTIER_MODE_SINGLES) + sub_80EE8C8(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], 7); + else + sub_80EE8C8(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], 8); + } + } + break; + case FRONTIER_FACILITY_PIKE: + if (gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] > gSaveBlock2Ptr->frontier.pikeRecordStreaks[lvlMode]) + { + gSaveBlock2Ptr->frontier.pikeRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode]; + if (gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] > 1 + && sub_80EE818()) + { + sub_80EE8C8(gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode], 9); + } + } + break; + case FRONTIER_FACILITY_PYRAMID: + if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode]) + { + gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode] = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode]; + if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > 1 + && sub_80EE818()) + { + sub_80EE8C8(gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode], 13); + } + } + break; + } +} + +static void sub_81A35EC(void) +{ + VarGet(VAR_FRONTIER_FACILITY); // Unused return value. + gSpecialVar_Result = sub_81A3610(); +} + +u8 sub_81A3610(void) +{ + s32 ret = 0; + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + u16 val = GetCurrentFacilityWinStreak(); + s32 r5 = val + gUnknown_08611550[facility][3]; + s32 symbolsCount; + + if (battleMode != FRONTIER_MODE_SINGLES) + return 0; + + symbolsCount = GetPlayerSymbolCountForFacility(facility); + switch (symbolsCount) + { + case 0: + case 1: + if (r5 == gUnknown_08611550[facility][symbolsCount]) + ret = symbolsCount + 1; + break; + case 2: + default: + if (r5 == gUnknown_08611550[facility][0]) + ret = 3; + else if (r5 == gUnknown_08611550[facility][1]) + ret = 4; + else if (r5 > gUnknown_08611550[facility][1] && (r5 - gUnknown_08611550[facility][1]) % gUnknown_08611550[facility][2] == 0) + ret = 4; + break; + } + + return ret; +} + +void CopyFrontierTrainerText(u8 whichText, u16 trainerId) +{ + switch (whichText) + { + case FRONTIER_BEFORE_TEXT: + if (trainerId == TRAINER_EREADER) + FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.greeting); + else if (trainerId == TRAINER_FRONTIER_BRAIN) + CopyFrontierBrainText(FALSE); + else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + FrontierSpeechToString(gFacilityTrainers[trainerId].speechBefore); + else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) + FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].greeting); + else + CopyFriendsApprenticeChallengeText(trainerId - TRAINER_RECORD_MIXING_APPRENTICE); + break; + case FRONTIER_PLAYER_LOST_TEXT: + if (trainerId == TRAINER_EREADER) + { + FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerLost); + } + else if (trainerId == TRAINER_FRONTIER_BRAIN) + { + CopyFrontierBrainText(FALSE); + } + else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + { + FrontierSpeechToString(gFacilityTrainers[trainerId].speechWin); + } + else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) + { + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + FrontierSpeechToString(GetRecordedBattleEasyChatSpeech()); + else + FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].speechWon); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + FrontierSpeechToString(GetRecordedBattleEasyChatSpeech()); + else + FrontierSpeechToString(gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].easyChatWords); + } + break; + case FRONTIER_PLAYER_WON_TEXT: + if (trainerId == TRAINER_EREADER) + { + FrontierSpeechToString(gSaveBlock2Ptr->frontier.ereaderTrainer.farewellPlayerWon); + } + else if (trainerId == TRAINER_FRONTIER_BRAIN) + { + CopyFrontierBrainText(TRUE); + } + else if (trainerId < TRAINER_RECORD_MIXING_FRIEND) + { + FrontierSpeechToString(gFacilityTrainers[trainerId].speechLose); + } + else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) + { + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + FrontierSpeechToString(GetRecordedBattleEasyChatSpeech()); + else + FrontierSpeechToString(gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].speechLost); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + { + trainerId = GetRecordedBattleApprenticeId(); + FrontierSpeechToString(gApprentices[trainerId].easyChatWords); + } + else + { + trainerId = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id; + FrontierSpeechToString(gApprentices[trainerId].easyChatWords); + } + } + break; + } +} + +void sub_81A3908(void) +{ + s32 battleMode, lvlMode; + + gSaveBlock2Ptr->frontier.field_CDC = 0; + for (battleMode = 0; battleMode < 4; battleMode++) + { + for (lvlMode = 0; lvlMode < 2; lvlMode++) + { + gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = 0; + if (battleMode < FRONTIER_MODE_MULTIS) + { + gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] = 0; + gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0; + gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] = 0; + } + if (battleMode == FRONTIER_MODE_SINGLES) + { + gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = 0; + gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] = 0; + gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] = 0; + } + } + } + if (gSaveBlock2Ptr->frontier.field_CA8 != 0) + gSaveBlock2Ptr->frontier.field_CA8 = 1; +} + +u32 GetCurrentFacilityWinStreak(void) +{ + s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + + switch (facility) + { + case FRONTIER_FACILITY_TOWER: + return gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; + case FRONTIER_FACILITY_DOME: + return gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; + case FRONTIER_FACILITY_PALACE: + return gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]; + case FRONTIER_FACILITY_ARENA: + return gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode]; + case FRONTIER_FACILITY_FACTORY: + return gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode]; + case FRONTIER_FACILITY_PIKE: + return gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode]; + case FRONTIER_FACILITY_PYRAMID: + return gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode]; + default: + return 0; + } +} + +void sub_81A3ACC(void) +{ + s32 i; + + for (i = 0; i < 20; i++) + gSaveBlock2Ptr->frontier.field_CB4[i] |= 0xFFFF; +} + +static void sub_81A3B00(void) +{ + if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN) + gSpecialVar_Result = TRUE; + else + gSpecialVar_Result = FALSE; +} + +u8 GetPlayerSymbolCountForFacility(u8 facility) +{ + return FlagGet(FLAG_SYS_TOWER_SILVER + facility * 2) + + FlagGet(FLAG_SYS_TOWER_GOLD + facility * 2); +} + +static void sub_81A3B64(void) +{ + s32 challengeNum = 0; + s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + s32 points; + + switch (facility) + { + case FRONTIER_FACILITY_TOWER: + challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7; + break; + case FRONTIER_FACILITY_DOME: + challengeNum = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]; + break; + case FRONTIER_FACILITY_PALACE: + challengeNum = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] / 7; + break; + case FRONTIER_FACILITY_ARENA: + challengeNum = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] / 7; + break; + case FRONTIER_FACILITY_FACTORY: + challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / 7; + break; + case FRONTIER_FACILITY_PIKE: + challengeNum = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] / 14; + break; + case FRONTIER_FACILITY_PYRAMID: + challengeNum = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] / 7; + break; + } + + if (challengeNum != 0) + challengeNum--; + if (challengeNum >= ARRAY_COUNT(gUnknown_086118B4)) + challengeNum = ARRAY_COUNT(gUnknown_086118B4) - 1; + + points = gUnknown_086118B4[challengeNum][facility][battleMode]; + if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN) + points += 10; + gSaveBlock2Ptr->frontier.battlePoints += points; + ConvertIntToDecimalStringN(gStringVar1, points, STR_CONV_MODE_LEFT_ALIGN, 2); + if (gSaveBlock2Ptr->frontier.battlePoints > 9999) + gSaveBlock2Ptr->frontier.battlePoints = 9999; + + points = gSaveBlock2Ptr->frontier.field_EBA; + points += gUnknown_086118B4[challengeNum][facility][battleMode]; + sub_80EED60(gUnknown_086118B4[challengeNum][facility][battleMode]); + if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN) + { + points += 10; + sub_80EED60(10); + } + if (points > 0xFFFF) + points = 0xFFFF; + gSaveBlock2Ptr->frontier.field_EBA = points; +} + +static void sub_81A3D30(void) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + gSpecialVar_Result = GetPlayerSymbolCountForFacility(facility); +} + +static void sub_81A3D58(void) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + if (GetPlayerSymbolCountForFacility(facility) == 0) + FlagSet(FLAG_SYS_TOWER_SILVER + facility * 2); + else + FlagSet(FLAG_SYS_TOWER_GOLD + facility * 2); +} + +static void sub_81A3DA0(void) +{ + if (gBattleTypeFlags & gSpecialVar_0x8005) + gSpecialVar_Result = TRUE; + else + gSpecialVar_Result = FALSE; +} + +static u8 sub_81A3DD0(u16 species, u8 arg1, s32 arg2) +{ + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + { + arg1++; + switch (arg1) + { + case 1: + case 3: + case 5: + case 7: + case 9: + case 11: + if (arg2 == arg1) + StringAppend(gStringVar1, gText_SpaceAndSpace); + else if (arg2 > arg1) + StringAppend(gStringVar1, gText_CommaSpace); + break; + case 2: + if (arg1 == arg2) + StringAppend(gStringVar1, gText_SpaceAndSpace); + else + StringAppend(gStringVar1, gText_CommaSpace); + StringAppend(gStringVar1, gText_NewLine); + break; + default: + if (arg1 == arg2) + StringAppend(gStringVar1, gText_SpaceAndSpace); + else + StringAppend(gStringVar1, gText_CommaSpace); + StringAppend(gStringVar1, gText_ScrollTextUp); + break; + } + StringAppend(gStringVar1, gSpeciesNames[species]); + } + + return arg1; +} + +static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count) +{ + s32 i = 0; + + if (species == SPECIES_EGG || species == SPECIES_NONE) + return; + + for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF && gFrontierBannedSpecies[i] != species; i++) + ; + + if (gFrontierBannedSpecies[i] != 0xFFFF) + return; + if (lvlMode == FRONTIER_LVL_50 && monLevel > 50) + return; + + for (i = 0; i < *count && speciesArray[i] != species; i++) + ; + if (i != *count) + return; + + if (heldItem != 0) + { + for (i = 0; i < *count && itemsArray[i] != heldItem; i++) + ; + if (i != *count) + return; + } + + speciesArray[*count] = species; + itemsArray[*count] = heldItem; + (*count)++; +} + +static void sub_81A3FD4(void) +{ + u16 speciesArray[6]; + u16 itemArray[6]; + s32 monId = 0; + s32 toChoose = 0; + u8 count = 0; + s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + s32 monIdLooper; + + switch (battleMode) + { + case FRONTIER_MODE_SINGLES: + toChoose = 3; + break; + case FRONTIER_MODE_MULTIS: + case FRONTIER_MODE_LINK_MULTIS: + toChoose = 2; + break; + case FRONTIER_MODE_DOUBLES: + if (VarGet(VAR_FRONTIER_FACILITY) == FRONTIER_FACILITY_TOWER) + toChoose = 4; + else + toChoose = 3; + break; + } + + monIdLooper = 0; + do + { + monId = monIdLooper; + count = 0; + do + { + u16 species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2); + u16 heldItem = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + u8 level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + u16 hp = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + if (VarGet(VAR_FRONTIER_FACILITY) == FRONTIER_FACILITY_PYRAMID) + { + if (heldItem == 0) + AppendIfValid(species, heldItem, hp, gSpecialVar_Result, level, speciesArray, itemArray, &count); + } + else + { + AppendIfValid(species, heldItem, hp, gSpecialVar_Result, level, speciesArray, itemArray, &count); + } + monId++; + if (monId >= PARTY_SIZE) + monId = 0; + } while (monId != monIdLooper); + + monIdLooper++; + } while (monIdLooper < PARTY_SIZE && count < toChoose); + + if (count < toChoose) + { + s32 i; + s32 caughtBannedMons = 0; + s32 species = gFrontierBannedSpecies[0]; + for (i = 0; species != 0xFFFF; i++, species = gFrontierBannedSpecies[i]) + { + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + caughtBannedMons++; + } + gStringVar1[0] = EOS; + gSpecialVar_0x8004 = 1; + count = 0; + for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF; i++) + count = sub_81A3DD0(gFrontierBannedSpecies[i], count, caughtBannedMons); + + if (count == 0) + { + StringAppend(gStringVar1, gText_Space2); + StringAppend(gStringVar1, gText_Are); + } + else + { + if (count & 1) + StringAppend(gStringVar1, gText_ScrollTextUp); + else + StringAppend(gStringVar1, gText_Space2); + StringAppend(gStringVar1, gText_Are2); + } + } + else + { + gSpecialVar_0x8004 = 0; + gSaveBlock2Ptr->frontier.lvlMode = gSpecialVar_Result; + } +} + +static void sub_81A4224(void) +{ + ValidateEReaderTrainer(); +} + +static void sub_81A4230(void) +{ + s32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + s32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + + switch (facility) + { + case FRONTIER_FACILITY_TOWER: + if (gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] < 9999) + { + gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]++; + if (battleMode == FRONTIER_MODE_SINGLES) + { + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]); + gSaveBlock2Ptr->frontier.field_D02 = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode]; + } + } + break; + case FRONTIER_FACILITY_DOME: + if (gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode] < 9999) + gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode]++; + if (gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][lvlMode] < 9999) + gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][lvlMode]++; + break; + case FRONTIER_FACILITY_PALACE: + if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 9999) + gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]++; + break; + case FRONTIER_FACILITY_ARENA: + if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] < 9999) + gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode]++; + break; + case FRONTIER_FACILITY_FACTORY: + if (gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] < 9999) + gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode]++; + break; + case FRONTIER_FACILITY_PIKE: + if (gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] < 9999) + gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode]++; + break; + case FRONTIER_FACILITY_PYRAMID: + if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] < 9999) + gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode]++; + break; + } +} + +static void sub_81A43A8(void) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (gSaveBlock2Ptr->frontier.selectedPartyMons[i] != 0) + { + u16 item = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_HELD_ITEM, NULL); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &item); + } + } +} + +static void sub_81A4410(void) +{ + gSpecialVar_Result = MoveRecordedBattleToSaveData(); + gSaveBlock2Ptr->frontier.field_CA9_b = 1; +} + +static void sub_81A443C(void) +{ + switch (gSpecialVar_0x8005) + { + case 0: + GetFrontierTrainerName(gStringVar1, gTrainerBattleOpponent_A); + break; + case 1: + GetFrontierTrainerName(gStringVar2, gTrainerBattleOpponent_A); + break; + } +} + +static void sub_81A447C(void) +{ + u8 i, j, k; + + for (i = 0; i < 4; i++) + { + u16 monId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1; + if (monId < PARTY_SIZE) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 4; k++) + { + if (GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + k, NULL) + == GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j, NULL)) + break; + } + if (k == 4) + SetMonMoveSlot(&gPlayerParty[i], MOVE_SKETCH, j); + } + gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1] = gPlayerParty[i]; + } + } +} + +static void sub_81A457C(void) +{ + SetFrontierBrainEventObjGfx(VarGet(VAR_FRONTIER_FACILITY)); +} + +// Battle Frontier Ranking Hall records. +static void Print1PRecord(s32 position, s32 x, s32 y, struct RankingHall1P *hallRecord, s32 hallFacilityId) +{ + u8 text[32]; + u16 winStreak; + + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_123Dot[position], x * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL); + hallRecord->name[PLAYER_NAME_LENGTH] = EOS; + if (hallRecord->winStreak) + { + TVShowConvertInternationalString(text, hallRecord->name, hallRecord->language); + AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 2) * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL); + winStreak = hallRecord->winStreak; + if (winStreak > 9999) + winStreak = 9999; + ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gUnknown_08611D08[hallFacilityId]); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, gUnknown_08611D08[hallFacilityId], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL); + } +} + +static void Print2PRecord(s32 position, s32 x, s32 y, struct RankingHall2P *hallRecord) +{ + u8 text[32]; + u16 winStreak; + + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_123Dot[position], x * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL); + if (hallRecord->winStreak) + { + hallRecord->name1[PLAYER_NAME_LENGTH] = EOS; + hallRecord->name2[PLAYER_NAME_LENGTH] = EOS; + TVShowConvertInternationalString(text, hallRecord->name1, hallRecord->language); + AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 2) * 8, (8 * (y + 5 * position - 1)) + 1, TEXT_SPEED_FF, NULL); + if (IsStringJapanese(hallRecord->name2)) + TVShowConvertInternationalString(text, hallRecord->name2, LANGUAGE_JAPANESE); + else + StringCopy(text, hallRecord->name2); + AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 4) * 8, (8 * (y + 5 * position + 1)) + 1, TEXT_SPEED_FF, NULL); + + winStreak = hallRecord->winStreak; + if (winStreak > 9999) + winStreak = 9999; + ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gUnknown_08611D08[9]); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, gUnknown_08611D08[9], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL); + } +} + +static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvlMode) +{ + s32 i, j; + struct RankingHall1P record1P[4]; + struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords)); + GetPlayerHallRecords(playerHallRecords); + + for (i = 0; i < 3; i++) + record1P[i] = gSaveBlock2Ptr->hallRecords1P[hallFacilityId][lvlMode][i]; + + record1P[3] = playerHallRecords->onePlayer[hallFacilityId][lvlMode]; + + for (i = 0; i < 3; i++) + { + s32 highestWinStreak = 0; + s32 highestId = 0; + for (j = 0; j < 4; j++) + { + if (record1P[j].winStreak > highestWinStreak) + { + highestId = j; + highestWinStreak = record1P[j].winStreak; + } + } + if (record1P[3].winStreak >= highestWinStreak) + highestId = 3; + + dst[i] = record1P[highestId]; + record1P[highestId].winStreak = 0; + } + + free(playerHallRecords); +} + +static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode) +{ + s32 i, j; + struct RankingHall2P record2P[4]; + struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords)); + GetPlayerHallRecords(playerHallRecords); + + for (i = 0; i < 3; i++) + record2P[i] = gSaveBlock2Ptr->hallRecords2P[lvlMode][i]; + + record2P[3] = playerHallRecords->twoPlayers[lvlMode]; + + for (i = 0; i < 3; i++) + { + s32 highestWinStreak = 0; + s32 highestId = 0; + for (j = 0; j < 3; j++) + { + if (record2P[j].winStreak > highestWinStreak) + { + highestId = j; + highestWinStreak = record2P[j].winStreak; + } + } + if (record2P[3].winStreak >= highestWinStreak) + highestId = 3; + + dst[i] = record2P[highestId]; + record2P[highestId].winStreak = 0; + } + + free(playerHallRecords); +} + +static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode) +{ + s32 i; + s32 x; + struct RankingHall1P records1P[3]; + struct RankingHall2P records2P[3]; + + StringCopy(gStringVar1, gUnknown_08611CB0[hallFacilityId][0]); + StringExpandPlaceholders(gStringVar4, gUnknown_08611CB0[hallFacilityId][1]); + AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL); + x = GetStringRightAlignXOffset(1, gUnknown_08611D00[lvlMode], 0xD0); + AddTextPrinterParameterized(gRecordsWindowId, 1, gUnknown_08611D00[lvlMode], x, 1, TEXT_SPEED_FF, NULL); + if (hallFacilityId == HALL_FACILITIES_COUNT) + { + gSaveBlock2Ptr->frontier.field_EE1[0][PLAYER_NAME_LENGTH] = EOS; + gSaveBlock2Ptr->frontier.field_EE1[1][PLAYER_NAME_LENGTH] = EOS; + Fill2PRecords(records2P, lvlMode); + for (i = 0; i < 3; i++) + Print2PRecord(i, 1, 4, &records2P[i]); + } + else + { + Fill1PRecords(records1P, hallFacilityId, lvlMode); + for (i = 0; i < 3; i++) + Print1PRecord(i, 1, 4, &records1P[i], hallFacilityId); + } +} + +void ShowRankingHallRecordsWindow(void) +{ + gRecordsWindowId = AddWindow(&gUnknown_08611C84); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_50); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +void ScrollRankingHallRecordsWindow(void) +{ + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_OPEN); + CopyWindowToVram(gRecordsWindowId, 2); +} + +void ClearRankingHallRecords(void) +{ + s32 i, j, k; + + for (i = 0; i < HALL_FACILITIES_COUNT; i++) + { + for (j = 0; j < 2; j++) + { + for (k = 0; k < 3; k++) + { + CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0. + gSaveBlock2Ptr->hallRecords1P[i][j][k].name[0] = EOS; + gSaveBlock2Ptr->hallRecords1P[i][j][k].winStreak = 0; + } + } + } + + for (j = 0; j < 2; j++) + { + for (k = 0; k < 3; k++) + { + CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0. + CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0. + gSaveBlock2Ptr->hallRecords2P[j][k].name1[0] = EOS; + gSaveBlock2Ptr->hallRecords2P[j][k].name2[0] = EOS; + gSaveBlock2Ptr->hallRecords2P[j][k].winStreak = 0; + } + } +} + +void sub_81A4C30(void) +{ + s32 i; + struct Pokemon *monsParty = calloc(PARTY_SIZE, sizeof(struct Pokemon)); + + for (i = 0; i < PARTY_SIZE; i++) + monsParty[i] = gPlayerParty[i]; + + i = gPlayerPartyCount; + LoadPlayerParty(); + sub_8076D5C(); + TrySavingData(SAVE_LINK); + sav2_gender2_inplace_and_xFE(); + gPlayerPartyCount = i; + + for (i = 0; i < PARTY_SIZE; i++) + gPlayerParty[i] = monsParty[i]; + + free(monsParty); +} + +// Frontier Brain functions. +u8 GetFrontierBrainTrainerPicIndex(void) +{ + s32 facility; + + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + facility = GetRecordedBattleFrontierFacility(); + else + facility = VarGet(VAR_FRONTIER_FACILITY); + + return gTrainers[gFacilityToBrainTrainerId[facility]].trainerPic; +} + +u8 GetFrontierBrainTrainerClass(void) +{ + s32 facility; + + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + facility = GetRecordedBattleFrontierFacility(); + else + facility = VarGet(VAR_FRONTIER_FACILITY); + + return gTrainers[gFacilityToBrainTrainerId[facility]].trainerClass; +} + +void CopyFrontierBrainTrainerName(u8 *dst) +{ + s32 i; + s32 facility; + + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + facility = GetRecordedBattleFrontierFacility(); + else + facility = VarGet(VAR_FRONTIER_FACILITY); + + for (i = 0; i < PLAYER_NAME_LENGTH; i++) + dst[i] = gTrainers[gFacilityToBrainTrainerId[facility]].trainerName[i]; + + dst[i] = EOS; +} + +bool8 IsFrontierBrainFemale(void) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + return sFacilityToBrainEventObjGfx[facility][1]; +} + +void SetFrontierBrainEventObjGfx_2(void) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + VarSet(VAR_OBJ_GFX_ID_0, sFacilityToBrainEventObjGfx[facility][0]); +} + +#define FRONTIER_BRAIN_OTID 61226 + +#ifdef NONMATCHING +void CreateFrontierBrainPokemon(void) +{ + s32 i, j; + s32 monCountInBits; + s32 monPartyId; + s32 monLevel = 0; + u8 friendship; + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 symbol = GetFronterBrainSymbol(); + + if (facility == FRONTIER_FACILITY_DOME) + monCountInBits = GetDomeTrainerMonCountInBits(TrainerIdToDomeTournamentId(TRAINER_FRONTIER_BRAIN)); + else + monCountInBits = 7; + + ZeroEnemyPartyMons(); + monPartyId = 0; + monLevel = SetFacilityPtrsGetLevel(); + for (i = 0; i < 3; monCountInBits >>= 1, i++) + { + if (!(monCountInBits & 1)) + continue; + + do + { + j = Random32(); + } while (IsShinyOtIdPersonality(FRONTIER_BRAIN_OTID, j) || sFrontierBrainsMons[facility][symbol][i].nature != GetNatureFromPersonality(j)); + CreateMon(&gEnemyParty[monPartyId], + sFrontierBrainsMons[facility][symbol][i].species, + monLevel, + sFrontierBrainsMons[facility][symbol][i].fixedIV, + TRUE, j, + TRUE, FRONTIER_BRAIN_OTID); + SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, &sFrontierBrainsMons[facility][symbol][i].heldItem); + for (j = 0; j < 6; j++) + SetMonData(&gEnemyParty[monPartyId], MON_DATA_HP_EV + j, &sFrontierBrainsMons[facility][symbol][i].evs[j]); + friendship = 0xFF; + for (j = 0; j < 4; j++) + { + SetMonMoveSlot(&gEnemyParty[monPartyId], sFrontierBrainsMons[facility][symbol][i].moves[j], j); + if (sFrontierBrainsMons[facility][symbol][i].moves[j] == MOVE_FRUSTRATION) + friendship = 0; + } + SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &friendship); + CalculateMonStats(&gEnemyParty[monPartyId]); + monPartyId++; + } +} +#else +NAKED +void CreateFrontierBrainPokemon(void) +{ + asm_unified("\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x44\n\ + ldr r0, =0x000040cf\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x20]\n\ + bl GetFronterBrainSymbol\n\ + str r0, [sp, 0x24]\n\ + ldr r0, [sp, 0x20]\n\ + cmp r0, 0x1\n\ + bne _081A4E44\n\ + ldr r0, =0x000003fe\n\ + bl TrainerIdToDomeTournamentId\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl GetDomeTrainerMonCountInBits\n\ + adds r4, r0, 0\n\ + b _081A4E46\n\ + .pool\n\ +_081A4E44:\n\ + movs r4, 0x7\n\ +_081A4E46:\n\ + bl ZeroEnemyPartyMons\n\ + movs r1, 0\n\ + str r1, [sp, 0x18]\n\ + bl SetFacilityPtrsGetLevel\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x1C]\n\ + movs r2, 0\n\ + str r2, [sp, 0x14]\n\ +_081A4E5C:\n\ + movs r0, 0x1\n\ + ands r0, r4\n\ + asrs r4, 1\n\ + str r4, [sp, 0x30]\n\ + ldr r3, [sp, 0x14]\n\ + adds r3, 0x1\n\ + str r3, [sp, 0x28]\n\ + cmp r0, 0\n\ + bne _081A4E70\n\ + b _081A4FC4\n\ +_081A4E70:\n\ + ldr r4, [sp, 0x14]\n\ + lsls r4, 2\n\ + mov r9, r4\n\ + ldr r0, [sp, 0x24]\n\ + lsls r0, 4\n\ + str r0, [sp, 0x38]\n\ + ldr r1, [sp, 0x20]\n\ + lsls r1, 4\n\ + str r1, [sp, 0x34]\n\ + ldr r2, [sp, 0x1C]\n\ + lsls r2, 24\n\ + str r2, [sp, 0x3C]\n\ + ldr r3, [sp, 0x18]\n\ + adds r3, 0x1\n\ + str r3, [sp, 0x2C]\n\ + ldr r0, [sp, 0x14]\n\ + add r0, r9\n\ + lsls r0, 2\n\ + mov r8, r0\n\ +_081A4E96:\n\ + bl Random\n\ + adds r4, r0, 0\n\ + bl Random\n\ + lsls r4, 16\n\ + lsrs r7, r4, 16\n\ + lsls r0, 16\n\ + orrs r7, r0\n\ + ldr r0, =0x0000ef2a\n\ + adds r1, r7, 0\n\ + bl IsShinyOtIdPersonality\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _081A4E96\n\ + ldr r4, [sp, 0x38]\n\ + ldr r1, [sp, 0x24]\n\ + subs r0, r4, r1\n\ + lsls r5, r0, 2\n\ + mov r2, r8\n\ + adds r4, r2, r5\n\ + ldr r3, [sp, 0x34]\n\ + ldr r1, [sp, 0x20]\n\ + subs r0, r3, r1\n\ + lsls r6, r0, 3\n\ + adds r4, r6\n\ + ldr r2, =sFrontierBrainsMons\n\ + adds r4, r2\n\ + adds r0, r7, 0\n\ + bl GetNatureFromPersonality\n\ + ldrb r1, [r4, 0x5]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r1, r0\n\ + bne _081A4E96\n\ + ldr r4, [sp, 0x18]\n\ + movs r0, 0x64\n\ + adds r3, r4, 0\n\ + muls r3, r0\n\ + mov r8, r3\n\ + ldr r1, =gEnemyParty\n\ + add r1, r8\n\ + mov r10, r1\n\ + ldr r4, [sp, 0x14]\n\ + add r4, r9\n\ + lsls r4, 2\n\ + adds r0, r4, r5\n\ + adds r0, r6\n\ + ldr r2, =sFrontierBrainsMons\n\ + adds r0, r2\n\ + ldrh r1, [r0]\n\ + ldr r3, [sp, 0x3C]\n\ + lsrs r2, r3, 24\n\ + ldrb r3, [r0, 0x4]\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + str r7, [sp, 0x4]\n\ + str r0, [sp, 0x8]\n\ + ldr r0, =0x0000ef2a\n\ + str r0, [sp, 0xC]\n\ + mov r0, r10\n\ + bl CreateMon\n\ + ldr r0, =sFrontierBrainsMons\n\ + adds r5, r0\n\ + adds r5, r6, r5\n\ + adds r4, r5, r4\n\ + adds r4, 0x2\n\ + mov r0, r10\n\ + movs r1, 0xC\n\ + adds r2, r4, 0\n\ + bl SetMonData\n\ + movs r7, 0\n\ + mov r6, r8\n\ + ldr r3, =gEnemyParty\n\ +_081A4F32:\n\ + adds r1, r7, 0\n\ + adds r1, 0x1A\n\ + ldr r0, [sp, 0x14]\n\ + add r0, r9\n\ + lsls r4, r0, 2\n\ + adds r2, r5, r4\n\ + adds r0, r7, 0x6\n\ + adds r2, r0\n\ + adds r0, r6, r3\n\ + str r3, [sp, 0x40]\n\ + bl SetMonData\n\ + adds r7, 0x1\n\ + ldr r3, [sp, 0x40]\n\ + cmp r7, 0x5\n\ + ble _081A4F32\n\ + movs r1, 0xFF\n\ + add r0, sp, 0x10\n\ + strb r1, [r0]\n\ + movs r7, 0\n\ + ldr r1, [sp, 0x18]\n\ + movs r2, 0x64\n\ + adds r6, r1, 0\n\ + muls r6, r2\n\ + ldr r3, =sFrontierBrainsMons + 0xC\n\ + mov r8, r3\n\ + ldr r3, =gEnemyParty\n\ + adds r5, r4, 0\n\ +_081A4F6A:\n\ + ldr r4, [sp, 0x38]\n\ + ldr r0, [sp, 0x24]\n\ + subs r1, r4, r0\n\ + lsls r1, 2\n\ + adds r1, r5, r1\n\ + ldr r2, [sp, 0x34]\n\ + ldr r4, [sp, 0x20]\n\ + subs r0, r2, r4\n\ + lsls r0, 3\n\ + adds r1, r0\n\ + add r1, r8\n\ + ldrh r4, [r1]\n\ + lsls r2, r7, 24\n\ + lsrs r2, 24\n\ + adds r0, r6, r3\n\ + adds r1, r4, 0\n\ + str r3, [sp, 0x40]\n\ + bl SetMonMoveSlot\n\ + ldr r3, [sp, 0x40]\n\ + cmp r4, 0xDA\n\ + bne _081A4F9C\n\ + movs r1, 0\n\ + add r0, sp, 0x10\n\ + strb r1, [r0]\n\ +_081A4F9C:\n\ + adds r5, 0x2\n\ + adds r7, 0x1\n\ + cmp r7, 0x3\n\ + ble _081A4F6A\n\ + ldr r0, [sp, 0x18]\n\ + movs r1, 0x64\n\ + adds r4, r0, 0\n\ + muls r4, r1\n\ + ldr r0, =gEnemyParty\n\ + adds r4, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0x20\n\ + add r2, sp, 0x10\n\ + bl SetMonData\n\ + adds r0, r4, 0\n\ + bl CalculateMonStats\n\ + ldr r2, [sp, 0x2C]\n\ + str r2, [sp, 0x18]\n\ +_081A4FC4:\n\ + ldr r4, [sp, 0x30]\n\ + ldr r3, [sp, 0x28]\n\ + str r3, [sp, 0x14]\n\ + cmp r3, 0x2\n\ + bgt _081A4FD0\n\ + b _081A4E5C\n\ +_081A4FD0:\n\ + add sp, 0x44\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ +"); +} +#endif + +u16 GetFrontierBrainMonSpecies(u8 monId) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 symbol = GetFronterBrainSymbol(); + + return sFrontierBrainsMons[facility][symbol][monId].species; +} + +void SetFrontierBrainEventObjGfx(u8 facility) +{ + gTrainerBattleOpponent_A = TRAINER_FRONTIER_BRAIN; + VarSet(VAR_OBJ_GFX_ID_0, sFacilityToBrainEventObjGfx[facility][0]); +} + +u16 GetFrontierBrainMonMove(u8 monId, u8 moveSlotId) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 symbol = GetFronterBrainSymbol(); + + return sFrontierBrainsMons[facility][symbol][monId].moves[moveSlotId]; +} + +u8 GetFrontierBrainMonNature(u8 monId) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 symbol = GetFronterBrainSymbol(); + + return sFrontierBrainsMons[facility][symbol][monId].nature; +} + +u8 GetFrontierBrainMonEvs(u8 monId, u8 evStatId) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 symbol = GetFronterBrainSymbol(); + + return sFrontierBrainsMons[facility][symbol][monId].evs[evStatId]; +} + +s32 GetFronterBrainSymbol(void) +{ + s32 facility = VarGet(VAR_FRONTIER_FACILITY); + s32 symbol = GetPlayerSymbolCountForFacility(facility); + + if (symbol == 2) + { + u16 winStreak = GetCurrentFacilityWinStreak(); + if (winStreak + gUnknown_08611550[facility][3] == gUnknown_08611550[facility][0]) + symbol = 0; + else if (winStreak + gUnknown_08611550[facility][3] == gUnknown_08611550[facility][1]) + symbol = 1; + else if (winStreak + gUnknown_08611550[facility][3] > gUnknown_08611550[facility][1] + && (winStreak + gUnknown_08611550[facility][3] - gUnknown_08611550[facility][1]) % gUnknown_08611550[facility][2] == 0) + symbol = 1; + } + return symbol; +} + +static void CopyFrontierBrainText(bool8 playerWonText) +{ + s32 facility; + s32 symbol; + + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + { + facility = GetRecordedBattleFrontierFacility(); + symbol = GetRecordedBattleFronterBrainSymbol(); + } + else + { + facility = VarGet(VAR_FRONTIER_FACILITY); + symbol = GetFronterBrainSymbol(); + } + + switch (playerWonText) + { + case FALSE: + StringCopy(gStringVar4, gUnknown_08611DB0[symbol][facility]); + break; + case TRUE: + StringCopy(gStringVar4, gUnknown_08611DB8[symbol][facility]); + break; + } +} diff --git a/src/item_menu.c b/src/item_menu.c index 7dbdf716f..124fbccd2 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -2,7 +2,7 @@ #include "item_menu.h" #include "battle.h" #include "battle_controllers.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "berry_tag_screen.h" #include "bg.h" #include "constants/items.h" @@ -48,6 +48,8 @@ #include "window.h" #include "apprentice.h" +extern bool8 InBattlePike(void); + void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)()); void CB2_Bag(void); bool8 setup_bag_menu(void); diff --git a/src/new_game.c b/src/new_game.c index 127e48c35..cdabd5ccc 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -26,6 +26,7 @@ #include "item.h" #include "pokedex.h" #include "apprentice.h" +#include "frontier_util.h" extern u8 gDifferentSaveFile; extern u16 gSaveFileStatus; @@ -45,7 +46,6 @@ extern void NewGameInitPCItems(void); extern void ClearDecorationInventories(void); extern void ResetFanClub(void); extern void copy_strings_to_sav1(void); -extern void sub_81A4B14(void); extern void sub_8195E10(void); extern void sub_801AFD8(void); extern void sub_800E5AC(void); @@ -69,30 +69,30 @@ static const struct ContestWinner sContestWinnerPicDummy = }; // code -void WriteUnalignedWord(u32 var, u8 *dataPtr) +void SetTrainerId(u32 trainerId, u8 *dst) { - dataPtr[0] = var; - dataPtr[1] = var >> 8; - dataPtr[2] = var >> 16; - dataPtr[3] = var >> 24; + dst[0] = trainerId; + dst[1] = trainerId >> 8; + dst[2] = trainerId >> 16; + dst[3] = trainerId >> 24; } -u32 ReadUnalignedWord(u8* dataPtr) +u32 GetTrainerId(u8 *trainerId) { - return (dataPtr[3] << 24) | (dataPtr[2] << 16) | (dataPtr[1] << 8) | (dataPtr[0]); + return (trainerId[3] << 24) | (trainerId[2] << 16) | (trainerId[1] << 8) | (trainerId[0]); } -void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom) +void CopyTrainerId(u8 *dst, u8 *src) { s32 i; for (i = 0; i < 4; i++) - copyTo[i] = copyFrom[i]; + dst[i] = src[i]; } static void InitPlayerTrainerId(void) { u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower(); - WriteUnalignedWord(trainerId, gSaveBlock2Ptr->playerTrainerId); + SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); } // L=A isnt set here for some reason. @@ -204,7 +204,7 @@ void NewGameInitData(void) copy_strings_to_sav1(); SetLilycoveLady(); ResetAllApprenticeData(); - sub_81A4B14(); + ClearRankingHallRecords(); sub_8195E10(); sub_801AFD8(); sub_800E5AC(); diff --git a/src/overworld.c b/src/overworld.c index 8d73a6680..cc945dea2 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -52,6 +52,7 @@ #include "tv.h" #include "scanline_effect.h" #include "wild_encounter.h" +#include "frontier_util.h" #include "constants/abilities.h" #include "constants/map_types.h" #include "constants/maps.h" @@ -136,7 +137,6 @@ extern void sub_8087D74(void); extern void battle_pyramid_map_load_related(u8); extern void sub_80B00E8(u8); extern void sub_80E9238(u8); -extern void sub_81A3908(void); extern void sub_81AA2F8(void); extern void sub_8195E10(void); extern void sub_80EDB44(void); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index e1c2c79eb..11f46b475 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -2,7 +2,7 @@ #include "main.h" #include "battle.h" #include "battle_anim.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "battle_message.h" #include "battle_tent.h" #include "bg.h" @@ -45,6 +45,8 @@ #include "constants/songs.h" #include "constants/species.h" +extern bool8 sub_81A6BF4(void); + static EWRAM_DATA struct UnkSummaryStruct { /*0x00*/ union { diff --git a/src/record_mixing.c b/src/record_mixing.c index 4bb97cf1d..5f1aef1df 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -33,31 +33,17 @@ #include "new_game.h" #include "daycare.h" #include "international_string_util.h" +#include "constants/battle_frontier.h" extern void ReceiveSecretBasesData(struct SecretBaseRecord *, size_t, u8); extern void ReceiveEasyChatPairsData(struct EasyChatPair *, size_t, u8); // Static type declarations -struct UnknownRecMixingStruct +struct RecordMixingHallRecords { - u32 field_0; - u16 field_4; - u8 field_6[9]; -}; - -struct UnknownRecMixingStruct2 -{ - u32 field_0; - u16 field_4; - u16 field_6; - u16 field_8; - u8 field_A[16]; -}; - -struct UnknownRecMixingStruct3 -{ - u8 field_0[0x810]; + struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][6]; + struct RankingHall2P hallRecords2P[2][6]; }; struct PlayerRecordsRS @@ -85,7 +71,7 @@ struct PlayerRecordsEmerald /* 0x1210 */ u16 giftItem; /* 0x1214 */ LilycoveLady lilycoveLady; /* 0x1254 */ struct Apprentice apprentice[2]; - /* 0x12dc */ struct UnkRecordMixingStruct2 unk_12dc; + /* 0x12dc */ struct PlayerHallRecords hallRecords; /* 0x1434 */ u8 field_1434[0x10]; }; // 0x1444 @@ -106,12 +92,12 @@ static IWRAM_DATA struct EasyChatPair *sEasyChatPairsSave; static IWRAM_DATA struct RecordMixingDayCareMail *gUnknown_03001148; static IWRAM_DATA void *sBattleTowerSave; static IWRAM_DATA LilycoveLady *sLilycoveLadySave; -static IWRAM_DATA void *gUnknown_03001154; // gSaveBlock2Ptr->field_0DC; +static IWRAM_DATA void *sApprenticesSave; static IWRAM_DATA void *sBattleTowerSave_Duplicate; static IWRAM_DATA u32 sRecordStructSize; static IWRAM_DATA u8 gUnknown_03001160; static IWRAM_DATA u32 filler_03001164; -static IWRAM_DATA u32 gUnknown_03001168[3]; +static IWRAM_DATA struct PlayerHallRecords *gUnknown_03001168[3]; static EWRAM_DATA struct RecordMixingDayCareMail gUnknown_02039F9C = {0}; static EWRAM_DATA union PlayerRecords *sReceivedRecords = NULL; @@ -137,7 +123,7 @@ static void ReceiveGiftItem(u16 *item, u8 which); static void sub_80E7FF8(u8 taskId); static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1); static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2); -static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2); +static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2); static void sub_80E89F8(struct RecordMixingDayCareMail *dst); static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src); static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *arg0); @@ -200,7 +186,7 @@ static void SetSrcLookupPointers(void) gUnknown_03001148 = &gUnknown_02039F9C; sBattleTowerSave = &gSaveBlock2Ptr->frontier.towerPlayer; sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady; - gUnknown_03001154 = gSaveBlock2Ptr->apprentices; + sApprenticesSave = gSaveBlock2Ptr->apprentices; sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.towerPlayer; } @@ -266,8 +252,8 @@ static void PrepareExchangePacket(void) if (GetMultiplayerId() == 0) sSentRecord->emerald.giftItem = GetRecordMixingGift(); - sub_80E8110(sSentRecord->emerald.apprentice, gUnknown_03001154); - sub_80E8260(&sSentRecord->emerald.unk_12dc); + sub_80E8110(sSentRecord->emerald.apprentice, sApprenticesSave); + GetPlayerHallRecords(&sSentRecord->emerald.hallRecords); } } @@ -300,7 +286,7 @@ static void ReceiveExchangePacket(u32 which) ReceiveGiftItem(&sReceivedRecords->emerald.giftItem, which); ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(struct PlayerRecordsEmerald), which); ReceiveApprenticeData(sReceivedRecords->emerald.apprentice, sizeof(struct PlayerRecordsEmerald), (u8) which); - sub_80E89AC(&sReceivedRecords->emerald.unk_12dc, sizeof(struct PlayerRecordsEmerald), (u8) which); + ReceiveRankingHallRecords(&sReceivedRecords->emerald.hallRecords, sizeof(struct PlayerRecordsEmerald), (u8) which); } } @@ -1571,12 +1557,12 @@ static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src) id = ((i + gSaveBlock2Ptr->playerApprentice.field_B2_1) % 3) + 1; if (src[id].playerName[0] != EOS) { - if (ReadUnalignedWord(src[id].playerId) != ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId)) + if (GetTrainerId(src[id].playerId) != GetTrainerId(gSaveBlock2Ptr->playerTrainerId)) { r8++; var_2C = id; } - if (ReadUnalignedWord(src[id].playerId) == ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId)) + if (GetTrainerId(src[id].playerId) == GetTrainerId(gSaveBlock2Ptr->playerTrainerId)) { var_24++; var_28 = id; @@ -1608,42 +1594,42 @@ static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src) } } -void sub_80E8260(struct UnkRecordMixingStruct2 *dst) +void GetPlayerHallRecords(struct PlayerHallRecords *dst) { s32 i, j; - for (i = 0; i < 9; i++) + for (i = 0; i < HALL_FACILITIES_COUNT; i++) { for (j = 0; j < 2; j++) { - CopyUnalignedWord(dst->field_0[i][j].playerId, gSaveBlock2Ptr->playerTrainerId); - dst->field_0[i][j].language = GAME_LANGUAGE; - StringCopy(dst->field_0[i][j].playerName, gSaveBlock2Ptr->playerName); + CopyTrainerId(dst->onePlayer[i][j].id, gSaveBlock2Ptr->playerTrainerId); + dst->onePlayer[i][j].language = GAME_LANGUAGE; + StringCopy(dst->onePlayer[i][j].name, gSaveBlock2Ptr->playerName); } } for (j = 0; j < 2; j++) { - dst->field_120[j].language = GAME_LANGUAGE; - CopyUnalignedWord(dst->field_120[j].playerId1, gSaveBlock2Ptr->playerTrainerId); - CopyUnalignedWord(dst->field_120[j].playerId2, gSaveBlock2Ptr->frontier.field_EF1[j]); - StringCopy(dst->field_120[j].playerName1, gSaveBlock2Ptr->playerName); - StringCopy(dst->field_120[j].playerName2, gSaveBlock2Ptr->frontier.field_EE1[j]); + dst->twoPlayers[j].language = GAME_LANGUAGE; + CopyTrainerId(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId); + CopyTrainerId(dst->twoPlayers[j].id2, gSaveBlock2Ptr->frontier.field_EF1[j]); + StringCopy(dst->twoPlayers[j].name1, gSaveBlock2Ptr->playerName); + StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.field_EE1[j]); } for (i = 0; i < 2; i++) { - dst->field_0[0][i].field_4 = gSaveBlock2Ptr->frontier.field_CF0[i]; - dst->field_0[1][i].field_4 = gSaveBlock2Ptr->frontier.field_CF4[i]; - dst->field_0[2][i].field_4 = gSaveBlock2Ptr->frontier.field_CF8[i]; - dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[0][i]; - dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[0][i]; - dst->field_0[5][i].field_4 = gSaveBlock2Ptr->frontier.field_DDE[i]; - dst->field_0[6][i].field_4 = gSaveBlock2Ptr->frontier.field_DEA[i]; - dst->field_0[7][i].field_4 = gSaveBlock2Ptr->frontier.field_E08[i]; - dst->field_0[8][i].field_4 = gSaveBlock2Ptr->frontier.field_E1E[i]; - - dst->field_120[i].field_8 = gSaveBlock2Ptr->frontier.field_CFC[i]; + dst->onePlayer[0][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_SINGLES][i]; + dst->onePlayer[1][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_DOUBLES][i]; + dst->onePlayer[2][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_MULTIS][i]; + dst->onePlayer[3][i].winStreak = gSaveBlock2Ptr->frontier.domeRecordWinStreaks[FRONTIER_MODE_SINGLES][i]; + dst->onePlayer[4][i].winStreak = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[FRONTIER_MODE_SINGLES][i]; + dst->onePlayer[5][i].winStreak = gSaveBlock2Ptr->frontier.arenaRecordStreaks[i]; + dst->onePlayer[6][i].winStreak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[FRONTIER_MODE_SINGLES][i]; + dst->onePlayer[7][i].winStreak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i]; + dst->onePlayer[8][i].winStreak = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i]; + + dst->twoPlayers[i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_LINK_MULTIS][i]; } } @@ -1653,7 +1639,7 @@ static bool32 sub_80E841C(struct Apprentice *arg0, struct Apprentice *arg1) for (i = 0; i < 4; i++) { - if (ReadUnalignedWord(arg0->playerId) == ReadUnalignedWord(arg1[i].playerId) + if (GetTrainerId(arg0->playerId) == GetTrainerId(arg1[i].playerId) && arg0->number == arg1[i].number) { return TRUE; @@ -1701,538 +1687,144 @@ static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2 } } -NAKED -static void sub_80E8578(struct UnknownRecMixingStruct3 *arg0, struct UnkRecordMixingStruct2 *arg1, size_t arg2, u32 arg3, u32 arg4) +static void sub_80E8578(struct RecordMixingHallRecords *dst, void *hallRecords, size_t recordSize, u32 arg3, s32 linkPlayerCount) { - asm_unified(" push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x54\n\ - str r0, [sp]\n\ - ldr r0, [sp, 0x74]\n\ - movs r4, 0\n\ - mov r8, r4\n\ - movs r5, 0\n\ - str r5, [sp, 0x4]\n\ - ldr r4, =gUnknown_03001168\n\ - b _080E85A0\n\ - .pool\n\ -_080E8598:\n\ - adds r1, r2\n\ - ldr r6, [sp, 0x4]\n\ - adds r6, 0x1\n\ - str r6, [sp, 0x4]\n\ -_080E85A0:\n\ - ldr r5, [sp, 0x4]\n\ - cmp r5, r0\n\ - bge _080E85B6\n\ - cmp r5, r3\n\ - beq _080E85B0\n\ - stm r4!, {r1}\n\ - movs r6, 0x1\n\ - add r8, r6\n\ -_080E85B0:\n\ - mov r5, r8\n\ - cmp r5, 0x3\n\ - bne _080E8598\n\ -_080E85B6:\n\ - movs r6, 0\n\ - str r6, [sp, 0x4]\n\ - subs r0, 0x1\n\ - str r0, [sp, 0x24]\n\ -_080E85BE:\n\ - movs r0, 0\n\ - str r0, [sp, 0x8]\n\ - ldr r1, [sp, 0x4]\n\ - adds r1, 0x1\n\ - str r1, [sp, 0x28]\n\ - ldr r2, [sp, 0x4]\n\ - lsls r2, 1\n\ - str r2, [sp, 0x34]\n\ - ldr r3, [sp, 0x4]\n\ - adds r3, r2, r3\n\ - str r3, [sp, 0x10]\n\ - movs r4, 0\n\ - str r4, [sp, 0x44]\n\ - movs r5, 0\n\ - str r5, [sp, 0x48]\n\ -_080E85DC:\n\ - movs r6, 0\n\ - mov r8, r6\n\ - ldr r0, =gSaveBlock2Ptr\n\ - ldr r1, [r0]\n\ - ldr r2, [sp, 0x10]\n\ - lsls r0, r2, 5\n\ - ldr r3, [sp, 0x48]\n\ - adds r0, r3, r0\n\ - adds r3, r0, r1\n\ - lsls r0, r2, 6\n\ - ldr r4, [sp, 0x44]\n\ - adds r0, r4, r0\n\ - ldr r5, [sp]\n\ - adds r2, r0, r5\n\ -_080E85F8:\n\ - adds r0, r2, 0\n\ - movs r6, 0x87\n\ - lsls r6, 2\n\ - adds r1, r3, r6\n\ - ldm r1!, {r4-r6}\n\ - stm r0!, {r4-r6}\n\ - ldr r1, [r1]\n\ - str r1, [r0]\n\ - adds r3, 0x10\n\ - adds r2, 0x10\n\ - movs r0, 0x1\n\ - add r8, r0\n\ - mov r1, r8\n\ - cmp r1, 0x2\n\ - ble _080E85F8\n\ - movs r2, 0\n\ - mov r8, r2\n\ - ldr r3, [sp, 0x24]\n\ - cmp r8, r3\n\ - bge _080E86DC\n\ - ldr r4, [sp, 0x4]\n\ - lsls r4, 5\n\ - mov r9, r4\n\ - ldr r5, [sp, 0x8]\n\ - lsls r7, r5, 4\n\ - ldr r6, [sp, 0x34]\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r6, r1\n\ - lsls r0, 6\n\ - str r0, [sp, 0x14]\n\ - ldr r2, [sp]\n\ - adds r0, r2, r0\n\ - ldr r3, [sp, 0x44]\n\ - str r3, [sp, 0x18]\n\ - adds r0, r3\n\ - str r0, [sp, 0x1C]\n\ - ldr r4, [sp, 0x14]\n\ - adds r0, r3, r4\n\ - adds r0, r2\n\ - adds r0, 0x30\n\ - mov r10, r0\n\ -_080E864A:\n\ - movs r5, 0\n\ - str r5, [sp, 0xC]\n\ - movs r3, 0\n\ - mov r6, r8\n\ - lsls r6, 2\n\ - str r6, [sp, 0x38]\n\ - ldr r1, [sp, 0x18]\n\ - ldr r2, [sp, 0x14]\n\ - adds r0, r1, r2\n\ - ldr r4, [sp]\n\ - adds r5, r0, r4\n\ - ldr r0, =gUnknown_03001168\n\ - adds r0, r6, r0\n\ - str r0, [sp, 0x50]\n\ -_080E8666:\n\ - lsls r0, r3, 4\n\ - ldr r6, [sp, 0x1C]\n\ - adds r0, r6, r0\n\ - str r3, [sp, 0x4C]\n\ - bl ReadUnalignedWord\n\ - adds r4, r0, 0\n\ - ldr r1, [sp, 0x50]\n\ - ldr r0, [r1]\n\ - add r0, r9\n\ - adds r0, r7\n\ - bl ReadUnalignedWord\n\ - ldr r3, [sp, 0x4C]\n\ - cmp r4, r0\n\ - bne _080E86A8\n\ - ldr r2, [sp, 0xC]\n\ - adds r2, 0x1\n\ - str r2, [sp, 0xC]\n\ - ldr r4, [sp, 0x50]\n\ - ldr r0, [r4]\n\ - mov r6, r9\n\ - adds r1, r7, r6\n\ - adds r1, r0, r1\n\ - ldrh r0, [r5, 0x4]\n\ - ldrh r2, [r1, 0x4]\n\ - cmp r0, r2\n\ - bcs _080E86A8\n\ - adds r0, r5, 0\n\ - ldm r1!, {r2,r4,r6}\n\ - stm r0!, {r2,r4,r6}\n\ - ldr r1, [r1]\n\ - str r1, [r0]\n\ -_080E86A8:\n\ - adds r5, 0x10\n\ - adds r3, 0x1\n\ - cmp r3, 0x2\n\ - ble _080E8666\n\ - ldr r3, [sp, 0xC]\n\ - cmp r3, 0\n\ - bne _080E86CE\n\ - ldr r0, =gUnknown_03001168\n\ - ldr r4, [sp, 0x38]\n\ - adds r0, r4, r0\n\ - ldr r0, [r0]\n\ - mov r5, r9\n\ - adds r2, r7, r5\n\ - mov r1, r10\n\ - adds r0, r2\n\ - ldm r0!, {r2,r3,r6}\n\ - stm r1!, {r2,r3,r6}\n\ - ldr r0, [r0]\n\ - str r0, [r1]\n\ -_080E86CE:\n\ - movs r4, 0x10\n\ - add r10, r4\n\ - movs r5, 0x1\n\ - add r8, r5\n\ - ldr r6, [sp, 0x24]\n\ - cmp r8, r6\n\ - blt _080E864A\n\ -_080E86DC:\n\ - ldr r0, [sp, 0x44]\n\ - adds r0, 0x60\n\ - str r0, [sp, 0x44]\n\ - ldr r1, [sp, 0x48]\n\ - adds r1, 0x30\n\ - str r1, [sp, 0x48]\n\ - ldr r2, [sp, 0x8]\n\ - adds r2, 0x1\n\ - str r2, [sp, 0x8]\n\ - cmp r2, 0x1\n\ - bgt _080E86F4\n\ - b _080E85DC\n\ -_080E86F4:\n\ - ldr r3, [sp, 0x28]\n\ - str r3, [sp, 0x4]\n\ - cmp r3, 0x8\n\ - bgt _080E86FE\n\ - b _080E85BE\n\ -_080E86FE:\n\ - movs r4, 0\n\ - str r4, [sp, 0x8]\n\ -_080E8702:\n\ - ldr r5, [sp, 0x8]\n\ - adds r5, 0x1\n\ - str r5, [sp, 0x2C]\n\ - ldr r0, =gSaveBlock2Ptr\n\ - ldr r1, [r0]\n\ - movs r0, 0x54\n\ - ldr r6, [sp, 0x8]\n\ - muls r0, r6\n\ - adds r3, r0, r1\n\ - movs r0, 0xA8\n\ - muls r0, r6\n\ - ldr r1, [sp]\n\ - adds r2, r0, r1\n\ - movs r4, 0x2\n\ - mov r8, r4\n\ -_080E8720:\n\ - movs r5, 0xD8\n\ - lsls r5, 3\n\ - adds r0, r2, r5\n\ - ldr r6, =0x0000057c\n\ - adds r1, r3, r6\n\ - ldm r1!, {r4-r6}\n\ - stm r0!, {r4-r6}\n\ - ldm r1!, {r4-r6}\n\ - stm r0!, {r4-r6}\n\ - ldr r1, [r1]\n\ - str r1, [r0]\n\ - adds r3, 0x1C\n\ - adds r2, 0x1C\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - add r8, r0\n\ - mov r1, r8\n\ - cmp r1, 0\n\ - bge _080E8720\n\ - movs r2, 0\n\ - mov r8, r2\n\ - ldr r3, [sp, 0x24]\n\ - cmp r8, r3\n\ - blt _080E8752\n\ - b _080E885A\n\ -_080E8752:\n\ - ldr r4, [sp, 0x8]\n\ - lsls r1, r4, 3\n\ - movs r0, 0xA8\n\ - adds r5, r4, 0\n\ - muls r5, r0\n\ - str r5, [sp, 0x20]\n\ - str r5, [sp, 0x3C]\n\ - subs r1, r4\n\ - lsls r1, 2\n\ - mov r10, r1\n\ -_080E8766:\n\ - movs r6, 0\n\ - str r6, [sp, 0xC]\n\ - mov r0, r8\n\ - lsls r0, 2\n\ - str r0, [sp, 0x38]\n\ - mov r1, r8\n\ - adds r1, 0x1\n\ - str r1, [sp, 0x30]\n\ - ldr r0, =gUnknown_03001168\n\ - ldr r2, [sp, 0x38]\n\ - adds r2, r0\n\ - mov r9, r2\n\ - ldr r3, [sp]\n\ - movs r4, 0xD8\n\ - lsls r4, 3\n\ - adds r0, r3, r4\n\ - ldr r5, [sp, 0x3C]\n\ - adds r7, r5, r0\n\ - str r6, [sp, 0x40]\n\ - movs r3, 0x2\n\ -_080E878E:\n\ - ldr r1, [sp, 0x20]\n\ - movs r2, 0xD8\n\ - lsls r2, 3\n\ - adds r0, r1, r2\n\ - ldr r4, [sp]\n\ - adds r0, r4, r0\n\ - ldr r6, [sp, 0x40]\n\ - adds r5, r0, r6\n\ - adds r0, r5, 0\n\ - str r3, [sp, 0x4C]\n\ - bl ReadUnalignedWord\n\ - adds r4, r0, 0\n\ - movs r6, 0x90\n\ - lsls r6, 1\n\ - add r6, r10\n\ - mov r1, r9\n\ - ldr r0, [r1]\n\ - adds r0, r6\n\ - bl ReadUnalignedWord\n\ - ldr r3, [sp, 0x4C]\n\ - cmp r4, r0\n\ - bne _080E8808\n\ - adds r0, r5, 0x4\n\ - bl ReadUnalignedWord\n\ - adds r4, r0, 0\n\ - mov r2, r9\n\ - ldr r0, [r2]\n\ - adds r0, r6\n\ - adds r0, 0x4\n\ - bl ReadUnalignedWord\n\ - ldr r3, [sp, 0x4C]\n\ - cmp r4, r0\n\ - bne _080E8808\n\ - ldr r4, [sp, 0xC]\n\ - adds r4, 0x1\n\ - str r4, [sp, 0xC]\n\ - mov r5, r9\n\ - ldr r0, [r5]\n\ - mov r6, r10\n\ - adds r2, r0, r6\n\ - movs r0, 0x94\n\ - lsls r0, 1\n\ - adds r1, r2, r0\n\ - ldrh r0, [r7, 0x8]\n\ - ldrh r1, [r1]\n\ - cmp r0, r1\n\ - bcs _080E8808\n\ - adds r0, r7, 0\n\ - movs r4, 0x90\n\ - lsls r4, 1\n\ - adds r1, r2, r4\n\ - ldm r1!, {r2,r5,r6}\n\ - stm r0!, {r2,r5,r6}\n\ - ldm r1!, {r4-r6}\n\ - stm r0!, {r4-r6}\n\ - ldr r1, [r1]\n\ - str r1, [r0]\n\ -_080E8808:\n\ - adds r7, 0x1C\n\ - ldr r0, [sp, 0x40]\n\ - adds r0, 0x1C\n\ - str r0, [sp, 0x40]\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bge _080E878E\n\ - ldr r1, [sp, 0xC]\n\ - cmp r1, 0\n\ - bne _080E8850\n\ - mov r0, r8\n\ - adds r0, 0x3\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 2\n\ - ldr r2, [sp, 0x20]\n\ - adds r1, r2\n\ - ldr r3, [sp]\n\ - adds r1, r3, r1\n\ - ldr r0, =gUnknown_03001168\n\ - ldr r4, [sp, 0x38]\n\ - adds r0, r4, r0\n\ - ldr r0, [r0]\n\ - add r0, r10\n\ - movs r5, 0xD8\n\ - lsls r5, 3\n\ - adds r1, r5\n\ - movs r6, 0x90\n\ - lsls r6, 1\n\ - adds r0, r6\n\ - ldm r0!, {r2-r4}\n\ - stm r1!, {r2-r4}\n\ - ldm r0!, {r2,r5,r6}\n\ - stm r1!, {r2,r5,r6}\n\ - ldr r0, [r0]\n\ - str r0, [r1]\n\ -_080E8850:\n\ - ldr r3, [sp, 0x30]\n\ - mov r8, r3\n\ - ldr r4, [sp, 0x24]\n\ - cmp r8, r4\n\ - blt _080E8766\n\ -_080E885A:\n\ - ldr r5, [sp, 0x2C]\n\ - str r5, [sp, 0x8]\n\ - cmp r5, 0x1\n\ - bgt _080E8864\n\ - b _080E8702\n\ -_080E8864:\n\ - add sp, 0x54\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ - "); + s32 i, j, k, l; + s32 var_68; + + k = 0; + i = 0; + while (1) + { + if (i >= linkPlayerCount) + break; + if (i != arg3) + gUnknown_03001168[k++] = hallRecords; + + if (k == 3) + break; + hallRecords += recordSize; + i++; + } + + for (i = 0; i < HALL_FACILITIES_COUNT; i++) + { + for (j = 0; j < 2; j++) + { + for (k = 0; k < 3; k++) + dst->hallRecords1P[i][j][k] = gSaveBlock2Ptr->hallRecords1P[i][j][k]; + + for (k = 0; k < linkPlayerCount - 1; k++) + { + var_68 = 0; + for (l = 0; l < 3; l++) + { + if (GetTrainerId(dst->hallRecords1P[i][j][l].id) == GetTrainerId(gUnknown_03001168[k]->onePlayer[i][j].id)) + { + var_68++; + if (dst->hallRecords1P[i][j][l].winStreak < gUnknown_03001168[k]->onePlayer[i][j].winStreak) + dst->hallRecords1P[i][j][l] = gUnknown_03001168[k]->onePlayer[i][j]; + } + } + if (var_68 == 0) + dst->hallRecords1P[i][j][k + 3] = gUnknown_03001168[k]->onePlayer[i][j]; + } + } + } + + for (j = 0; j < 2; j++) + { + for (k = 0; k < 3; k++) + dst->hallRecords2P[j][k] = gSaveBlock2Ptr->hallRecords2P[j][k]; + + for (k = 0; k < linkPlayerCount - 1; k++) + { + var_68 = 0; + for (l = 0; l < 3; l++) + { + if (GetTrainerId(dst->hallRecords2P[j][l].id1) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id1) + && GetTrainerId(dst->hallRecords2P[j][l].id2) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id2)) + { + var_68++; + if (dst->hallRecords2P[j][l].winStreak < gUnknown_03001168[k]->twoPlayers[j].winStreak) + dst->hallRecords2P[j][l] = gUnknown_03001168[k]->twoPlayers[j]; + } + } + if (var_68 == 0) + dst->hallRecords2P[j][k + 3] = gUnknown_03001168[k]->twoPlayers[j]; + } + } } -static void sub_80E8880(struct UnknownRecMixingStruct *arg0, struct UnknownRecMixingStruct *arg1) +static void sub_80E8880(struct RankingHall1P *arg0, struct RankingHall1P *arg1) { s32 i, j; for (i = 0; i < 3; i++) { - s32 r2 = 0; - s32 r4 = -1; + s32 highestWinStreak = 0; + s32 highestId = -1; for (j = 0; j < 6; j++) { - if (arg1[j].field_4 > r2) + if (arg1[j].winStreak > highestWinStreak) { - r4 = j; - r2 = arg1[j].field_4; + highestId = j; + highestWinStreak = arg1[j].winStreak; } } - if (r4 >= 0) + if (highestId >= 0) { - arg0[i] = arg1[r4]; - arg1[r4].field_4 = 0; + arg0[i] = arg1[highestId]; + arg1[highestId].winStreak = 0; } } } -static void sub_80E88CC(struct UnknownRecMixingStruct2 *arg0, struct UnknownRecMixingStruct2 *arg1) +static void sub_80E88CC(struct RankingHall2P *arg0, struct RankingHall2P *arg1) { s32 i, j; for (i = 0; i < 3; i++) { - s32 r2 = 0; - s32 r4 = -1; + s32 highestWinStreak = 0; + s32 highestId = -1; for (j = 0; j < 6; j++) { - if (arg1[j].field_8 > r2) + if (arg1[j].winStreak > highestWinStreak) { - r4 = j; - r2 = arg1[j].field_8; + highestId = j; + highestWinStreak = arg1[j].winStreak; } } - if (r4 >= 0) + if (highestId >= 0) { - arg0[i] = arg1[r4]; - arg1[r4].field_8 = 0; + arg0[i] = arg1[highestId]; + arg1[highestId].winStreak = 0; } } } -NAKED -static void sub_80E8924(struct UnknownRecMixingStruct3 *arg0) +static void sub_80E8924(struct RecordMixingHallRecords *arg0) { - asm_unified("push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - mov r9, r0\n\ - movs r0, 0\n\ - ldr r1, =gSaveBlock2Ptr\n\ - mov r10, r1\n\ -_080E8936:\n\ - lsls r1, r0, 1\n\ - adds r2, r0, 0x1\n\ - mov r8, r2\n\ - adds r1, r0\n\ - lsls r0, r1, 5\n\ - movs r2, 0x87\n\ - lsls r2, 2\n\ - adds r7, r0, r2\n\ - lsls r1, 6\n\ - mov r0, r9\n\ - adds r4, r0, r1\n\ - movs r6, 0\n\ - movs r5, 0x1\n\ -_080E8950:\n\ - mov r1, r10\n\ - ldr r0, [r1]\n\ - adds r0, r7\n\ - adds r0, r6\n\ - adds r1, r4, 0\n\ - bl sub_80E8880\n\ - adds r4, 0x60\n\ - adds r6, 0x30\n\ - subs r5, 0x1\n\ - cmp r5, 0\n\ - bge _080E8950\n\ - mov r0, r8\n\ - cmp r0, 0x8\n\ - ble _080E8936\n\ - movs r5, 0\n\ - ldr r4, =gSaveBlock2Ptr\n\ -_080E8972:\n\ - movs r0, 0x54\n\ - adds r1, r5, 0\n\ - muls r1, r0\n\ - ldr r2, =0x0000057c\n\ - adds r1, r2\n\ - ldr r0, [r4]\n\ - adds r0, r1\n\ - movs r1, 0xA8\n\ - muls r1, r5\n\ - movs r2, 0xD8\n\ - lsls r2, 3\n\ - adds r1, r2\n\ - add r1, r9\n\ - bl sub_80E88CC\n\ - adds r5, 0x1\n\ - cmp r5, 0x1\n\ - ble _080E8972\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool"); + s32 i, j; + + for (i = 0; i < HALL_FACILITIES_COUNT; i++) + { + for (j = 0; j < 2; j++) + sub_80E8880(gSaveBlock2Ptr->hallRecords1P[i][j], arg0->hallRecords1P[i][j]); + } + for (j = 0; j < 2; j++) + sub_80E88CC(gSaveBlock2Ptr->hallRecords2P[j], arg0->hallRecords2P[j]); } -static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2) +static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t recordSize, u32 arg2) { u8 linkPlayerCount = GetLinkPlayerCount(); - struct UnknownRecMixingStruct3 *largeStructPtr = AllocZeroed(sizeof(struct UnknownRecMixingStruct3)); + struct RecordMixingHallRecords *largeStructPtr = AllocZeroed(sizeof(struct RecordMixingHallRecords)); - sub_80E8578(largeStructPtr, arg0, arg1, arg2, linkPlayerCount); + sub_80E8578(largeStructPtr, hallRecords, recordSize, arg2, linkPlayerCount); sub_80E8924(largeStructPtr); Free(largeStructPtr); diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 0a199f289..50dd2efa8 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -14,17 +14,16 @@ #include "task.h" #include "text.h" #include "battle_setup.h" +#include "frontier_util.h" +#include "constants/trainers.h" #define BATTLER_RECORD_SIZE 664 #define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \ - | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \ - | BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \ - | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \ + | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \ + | BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \ + | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \ | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA)) -extern u8 gUnknown_03001278; -extern u8 gUnknown_03001279; - struct PlayerInfo { u32 trainerId; @@ -55,18 +54,18 @@ struct RecordedBattleSave u16 opponentB; u16 partnerId; u16 field_4FA; - u8 field_4FC; - u8 field_4FD; - u8 field_4FE; - u8 battleStyle:1; + u8 lvlMode; + u8 frontierFacility; + u8 frontierBrainSymbol; + u8 battleScene:1; u8 textSpeed:3; u32 AI_scripts; - u8 field_504[8]; - u8 field_50C; - u8 field_50D; - u16 field_50E[6]; - u8 field_51A; - u8 field_51B; + u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1]; + u8 recordMixFriendClass; + u8 apprenticeId; + u16 easyChatSpeech[6]; + u8 recordMixFriendLanguage; + u8 apprenticeLanguage; u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; u32 checksum; }; @@ -78,13 +77,13 @@ EWRAM_DATA static u16 sRecordedBytesNo[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA static u16 sUnknown_0203C79C[4] = {0}; EWRAM_DATA static u16 sUnknown_0203C7A4[4] = {0}; EWRAM_DATA static u8 sUnknown_0203C7AC = 0; -EWRAM_DATA static u8 sUnknown_0203C7AD = 0; +EWRAM_DATA static u8 sLvlMode = 0; EWRAM_DATA static u8 sFrontierFacility = 0; -EWRAM_DATA static u8 sUnknown_0203C7AF = 0; +EWRAM_DATA static u8 sFrontierBrainSymbol = 0; EWRAM_DATA static MainCallback sCallback2_AfterRecordedBattle = NULL; EWRAM_DATA u8 gUnknown_0203C7B4 = 0; EWRAM_DATA static u8 sUnknown_0203C7B5 = 0; -EWRAM_DATA static u8 sBattleStyle = 0; +EWRAM_DATA static u8 sBattleScene = 0; EWRAM_DATA static u8 sTextSpeed = 0; EWRAM_DATA static u32 sBattleFlags = 0; EWRAM_DATA static u32 sAI_Scripts = 0; @@ -93,17 +92,18 @@ EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0}; EWRAM_DATA static u16 sPlayerMonMoves[2][4] = {0}; EWRAM_DATA static struct PlayerInfo sPlayers[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA static u8 sUnknown_0203CCD0 = 0; -EWRAM_DATA static u8 sUnknown_0203CCD1[8] = {0}; -EWRAM_DATA static u8 sUnknown_0203CCD9 = 0; -EWRAM_DATA static u8 sUnknown_0203CCDA = 0; -EWRAM_DATA static u16 sUnknown_0203CCDC[6] = {0}; -EWRAM_DATA static u8 sUnknown_0203CCE8 = 0; +EWRAM_DATA static u8 sRecordMixFriendName[PLAYER_NAME_LENGTH + 1] = {0}; +EWRAM_DATA static u8 sRecordMixFriendClass = 0; +EWRAM_DATA static u8 sApprenticeId = 0; +EWRAM_DATA static u16 sEasyChatSpeech[6] = {0}; +EWRAM_DATA static u8 sBattleOutcome = 0; -extern u32 sub_81A513C(void); +IWRAM_DATA static u8 sRecordMixFriendLanguage; +IWRAM_DATA static u8 sApprenticeLanguage; // this file's functions static u8 sub_8185278(u8 *arg0, u8 *arg1, u8 *arg2); -static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst); +static bool32 CopyRecordedBattleFromSave(struct RecordedBattleSave *dst); static void RecordedBattle_RestoreSavedParties(void); static void CB2_RecordedBattle(void); @@ -140,7 +140,7 @@ void sub_8184E58(void) { gRecordedBattleRngSeed = gRngValue; sFrontierFacility = VarGet(VAR_FRONTIER_FACILITY); - sUnknown_0203C7AF = sub_81A513C(); + sFrontierBrainSymbol = GetFronterBrainSymbol(); } else if (sUnknown_0203C7AC == 2) { @@ -297,7 +297,7 @@ static u8 sub_8185278(u8 *arg0, u8 *arg1, u8 *arg2) bool32 CanCopyRecordedBattleSaveData(void) { struct RecordedBattleSave *dst = AllocZeroed(sizeof(struct RecordedBattleSave)); - bool32 ret = AllocTryCopyRecordedBattleSaveData(dst); + bool32 ret = CopyRecordedBattleFromSave(dst); Free(dst); return ret; } @@ -314,26 +314,29 @@ static bool32 IsRecordedBattleSaveValid(struct RecordedBattleSave *save) return TRUE; } -static bool32 sub_81852F0(struct RecordedBattleSave *battleSave, struct RecordedBattleSave *saveSection) +static bool32 RecordedBattleToSave(struct RecordedBattleSave *battleSave, struct RecordedBattleSave *saveSection) { - memset(saveSection, 0, sizeof(struct SaveSection)); + memset(saveSection, 0, 0x1000); memcpy(saveSection, battleSave, sizeof(*battleSave)); saveSection->checksum = CalcByteArraySum((void*)(saveSection), sizeof(*saveSection) - 4); if (sub_8153634(31, (void*)(saveSection)) != 1) return FALSE; - - return TRUE; + else + return TRUE; } -#ifdef NONMATCHING -u32 MoveRecordedBattleToSaveData(void) +bool32 MoveRecordedBattleToSaveData(void) { s32 i, j; - u8 var = 0; - struct RecordedBattleSave *battleSave = AllocZeroed(sizeof(struct RecordedBattleSave)); - struct SaveSection *savSection = AllocZeroed(sizeof(struct SaveSection)); + bool32 ret; + struct RecordedBattleSave *battleSave, *savSection; + u8 var; + + var = 0; + battleSave = AllocZeroed(sizeof(struct RecordedBattleSave)); + savSection = AllocZeroed(0x1000); for (i = 0; i < PARTY_SIZE; i++) { @@ -357,8 +360,7 @@ u32 MoveRecordedBattleToSaveData(void) if (sBattleFlags & BATTLE_TYPE_LINK) { - battleSave->battleFlags = (sBattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_20)); - battleSave->battleFlags |= BATTLE_TYPE_x2000000; + battleSave->battleFlags = (sBattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_20)) | BATTLE_TYPE_x2000000; if (sBattleFlags & BATTLE_TYPE_IS_MASTER) { @@ -390,884 +392,101 @@ u32 MoveRecordedBattleToSaveData(void) battleSave->opponentB = gTrainerBattleOpponent_B; battleSave->partnerId = gPartnerTrainerId; battleSave->field_4FA = gUnknown_0203C7B4; - battleSave->field_4FC = gSaveBlock2Ptr->field_CA9_b; - battleSave->field_4FD = sFrontierFacility; - battleSave->field_4FE = sUnknown_0203C7AF; - battleSave->battleStyle = gSaveBlock2Ptr->optionsBattleStyle; + battleSave->lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + battleSave->frontierFacility = sFrontierFacility; + battleSave->frontierBrainSymbol = sFrontierBrainSymbol; + battleSave->battleScene = gSaveBlock2Ptr->optionsBattleSceneOff; battleSave->textSpeed = gSaveBlock2Ptr->optionsTextSpeed; battleSave->AI_scripts = sAI_Scripts; - /* Can't match it without proper knowledge of the Saveblock 2. - if (gTrainerBattleOpponent_A >= 300 && gTrainerBattleOpponent_A <= 399) + if (gTrainerBattleOpponent_A >= TRAINER_RECORD_MIXING_FRIEND && gTrainerBattleOpponent_A < TRAINER_RECORD_MIXING_APPRENTICE) { - for (i = 0; i < 8; i++) - { - battleSave->field_504[i] = gSaveBlock2Ptr->records[gTrainerBattleOpponent_A - 300].field_4[i]; - } - battleSave->field_50C = gSaveBlock2Ptr->records[gTrainerBattleOpponent_A - 300].field_1; + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) + battleSave->recordMixFriendName[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].name[i]; + battleSave->recordMixFriendClass = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].facilityClass; - if (sUnknown_0203CCE8 == 1) + if (sBattleOutcome == B_OUTCOME_WON) { for (i = 0; i < 6; i++) - { - battleSave->field_50E[i] = gSaveBlock2Ptr->records[gTrainerBattleOpponent_A - 300].field_28[i]; - } + battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].speechLost[i]; } else { for (i = 0; i < 6; i++) - { - battleSave->field_50E[i] = gSaveBlock2Ptr->records[gTrainerBattleOpponent_A - 300].field_1C[i]; - } + battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].speechWon[i]; } - battleSave->field_51A = gSaveBlock2Ptr->records[gTrainerBattleOpponent_A - 300].field_E4; + battleSave->recordMixFriendLanguage = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_FRIEND].language; } - else if (gTrainerBattleOpponent_B >= 300 && gTrainerBattleOpponent_B <= 399) + else if (gTrainerBattleOpponent_B >= TRAINER_RECORD_MIXING_FRIEND && gTrainerBattleOpponent_B < TRAINER_RECORD_MIXING_APPRENTICE) { - for (i = 0; i < 8; i++) - { - battleSave->field_504[i] = gSaveBlock2Ptr->records[gTrainerBattleOpponent_B - 300].field_4[i]; - } - battleSave->field_50C = gSaveBlock2Ptr->records[gTrainerBattleOpponent_B - 300].field_1; + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) + battleSave->recordMixFriendName[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].name[i]; + battleSave->recordMixFriendClass = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].facilityClass; - if (sUnknown_0203CCE8 == 1) + if (sBattleOutcome == B_OUTCOME_WON) { for (i = 0; i < 6; i++) - { - battleSave->field_50E[i] = gSaveBlock2Ptr->records[gTrainerBattleOpponent_B - 300].field_28[i]; - } + battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].speechLost[i]; } else { for (i = 0; i < 6; i++) - { - battleSave->field_50E[i] = gSaveBlock2Ptr->records[gTrainerBattleOpponent_B - 300].field_1C[i]; - } + battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].speechWon[i]; } - battleSave->field_51A = gSaveBlock2Ptr->records[gTrainerBattleOpponent_B - 300].field_E4; + battleSave->recordMixFriendLanguage = gSaveBlock2Ptr->frontier.towerRecords[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_FRIEND].language; } - else if (gPartnerTrainerId >= 300 && gPartnerTrainerId <= 399) + else if (gPartnerTrainerId >= TRAINER_RECORD_MIXING_FRIEND && gPartnerTrainerId < TRAINER_RECORD_MIXING_APPRENTICE) { - for (i = 0; i < 8; i++) - { - battleSave->field_504[i] = gSaveBlock2Ptr->records[gPartnerTrainerId - 300].field_4[i]; - } - battleSave->field_50C = gSaveBlock2Ptr->records[gPartnerTrainerId - 300].field_1; + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) + battleSave->recordMixFriendName[i] = gSaveBlock2Ptr->frontier.towerRecords[gPartnerTrainerId - TRAINER_RECORD_MIXING_FRIEND].name[i]; + battleSave->recordMixFriendClass = gSaveBlock2Ptr->frontier.towerRecords[gPartnerTrainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass; - if (sUnknown_0203CCE8 == 1) - { - for (i = 0; i < 6; i++) - { - battleSave->field_50E[i] = gSaveBlock2Ptr->records[gPartnerTrainerId - 300].field_28[i]; - } - } - else + battleSave->recordMixFriendLanguage = gSaveBlock2Ptr->frontier.towerRecords[gPartnerTrainerId - TRAINER_RECORD_MIXING_FRIEND].language; + } + + if (gTrainerBattleOpponent_A >= TRAINER_RECORD_MIXING_APPRENTICE) + { + battleSave->apprenticeId = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_APPRENTICE].id; + for (i = 0; i < 6; i++) + battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_APPRENTICE].easyChatWords[i]; + battleSave->apprenticeLanguage = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_A - TRAINER_RECORD_MIXING_APPRENTICE].language; + } + else if (gTrainerBattleOpponent_B >= TRAINER_RECORD_MIXING_APPRENTICE) + { + battleSave->apprenticeId = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_APPRENTICE].id; + for (i = 0; i < 6; i++) + battleSave->easyChatSpeech[i] = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_APPRENTICE].easyChatWords[i]; + battleSave->apprenticeLanguage = gSaveBlock2Ptr->apprentices[gTrainerBattleOpponent_B - TRAINER_RECORD_MIXING_APPRENTICE].language; + } + else if (gPartnerTrainerId >= TRAINER_RECORD_MIXING_APPRENTICE) + { + battleSave->apprenticeId = gSaveBlock2Ptr->apprentices[gPartnerTrainerId - TRAINER_RECORD_MIXING_APPRENTICE].id; + + battleSave->apprenticeLanguage = gSaveBlock2Ptr->apprentices[gPartnerTrainerId - TRAINER_RECORD_MIXING_APPRENTICE].language; + } + + for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { + for (j = 0; j < BATTLER_RECORD_SIZE; j++) { - for (i = 0; i < 6; i++) - { - battleSave->field_50E[i] = gSaveBlock2Ptr->records[gPartnerTrainerId - 300].field_1C[i]; - } + battleSave->battleRecord[i][j] = sBattleRecords[i][j]; } - battleSave->field_51A = gSaveBlock2Ptr->records[gPartnerTrainerId - 300].field_E4; } - */ -} + while (1) + { + ret = RecordedBattleToSave(battleSave, savSection); + if (ret == TRUE) + break; + var++; + if (var >= 3) + break; + } -#else -NAKED -u32 MoveRecordedBattleToSaveData(void) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - movs r0, 0\n\ - str r0, [sp, 0x4]\n\ - movs r0, 0xF8\n\ - lsls r0, 4\n\ - bl AllocZeroed\n\ - adds r7, r0, 0\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - bl AllocZeroed\n\ - str r0, [sp]\n\ - movs r6, 0\n\ -_0818535E:\n\ - movs r0, 0x64\n\ - adds r4, r6, 0\n\ - muls r4, r0\n\ - adds r5, r7, r4\n\ - ldr r1, =sSavedPlayerParty\n\ - adds r1, r4, r1\n\ - adds r0, r5, 0\n\ - movs r2, 0x64\n\ - bl memcpy\n\ - movs r1, 0x96\n\ - lsls r1, 2\n\ - adds r5, r1\n\ - ldr r0, =sSavedOpponentParty\n\ - adds r4, r0\n\ - adds r0, r5, 0\n\ - adds r1, r4, 0\n\ - movs r2, 0x64\n\ - bl memcpy\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _0818535E\n\ - movs r6, 0\n\ - ldr r2, =gSaveBlock2Ptr\n\ - mov r9, r2\n\ - movs r3, 0x9A\n\ - lsls r3, 3\n\ - adds r3, r7, r3\n\ - str r3, [sp, 0x8]\n\ - ldr r5, =sPlayers\n\ - mov r8, r6\n\ - mov r12, r6\n\ - movs r4, 0x96\n\ - lsls r4, 3\n\ - adds r4, r7\n\ - mov r10, r4\n\ - ldr r0, =0x000004e4\n\ - adds r4, r7, r0\n\ -_081853AC:\n\ - lsls r1, r6, 3\n\ - ldr r0, =sPlayers\n\ - adds r0, 0x4\n\ - mov r3, r8\n\ - adds r2, r3, r0\n\ - add r1, r10\n\ - movs r3, 0x7\n\ -_081853BA:\n\ - ldrb r0, [r2]\n\ - strb r0, [r1]\n\ - adds r2, 0x1\n\ - adds r1, 0x1\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bge _081853BA\n\ - ldr r0, [sp, 0x8]\n\ - adds r1, r0, r6\n\ - ldrb r0, [r5, 0xC]\n\ - strb r0, [r1]\n\ - ldrh r0, [r5, 0x10]\n\ - strb r0, [r4]\n\ - ldrh r0, [r5, 0xE]\n\ - strb r0, [r4, 0xC]\n\ - ldr r1, =0x000004d4\n\ - adds r0, r7, r1\n\ - add r0, r12\n\ - ldr r1, [r5]\n\ - str r1, [r0]\n\ - adds r5, 0x14\n\ - movs r2, 0x14\n\ - add r8, r2\n\ - movs r3, 0x4\n\ - add r12, r3\n\ - adds r4, 0x1\n\ - adds r6, 0x1\n\ - cmp r6, 0x3\n\ - ble _081853AC\n\ - movs r4, 0x9D\n\ - lsls r4, 3\n\ - adds r1, r7, r4\n\ - ldr r5, =gRecordedBattleRngSeed\n\ - ldr r0, [r5]\n\ - str r0, [r1]\n\ - ldr r0, =sBattleFlags\n\ - ldr r2, [r0]\n\ - movs r0, 0x2\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _081854DC\n\ - ldr r1, =0x000004ec\n\ - adds r3, r7, r1\n\ - movs r1, 0x23\n\ - negs r1, r1\n\ - ands r1, r2\n\ - movs r0, 0x80\n\ - lsls r0, 18\n\ - orrs r1, r0\n\ - str r1, [r3]\n\ - movs r0, 0x4\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _08185454\n\ - movs r0, 0x80\n\ - lsls r0, 24\n\ - orrs r1, r0\n\ - str r1, [r3]\n\ - b _081854E2\n\ - .pool\n\ -_08185454:\n\ - movs r0, 0x40\n\ - ands r2, r0\n\ - cmp r2, 0\n\ - beq _081854E2\n\ - ldr r2, =sPlayers\n\ - ldrh r0, [r2, 0xE]\n\ - cmp r0, 0x1\n\ - beq _081854A8\n\ - cmp r0, 0x1\n\ - bgt _08185474\n\ - cmp r0, 0\n\ - beq _0818547E\n\ - b _081854E2\n\ - .pool\n\ -_08185474:\n\ - cmp r0, 0x2\n\ - beq _0818547E\n\ - cmp r0, 0x3\n\ - beq _081854A8\n\ - b _081854E2\n\ -_0818547E:\n\ - ldr r3, =gUnknown_0203C7B4\n\ - ldrb r1, [r3]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r4, =sPlayers\n\ - adds r0, r4\n\ - ldrh r1, [r0, 0xE]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _081854E2\n\ - ldr r5, =0x000004ec\n\ - adds r0, r7, r5\n\ - b _081854C4\n\ - .pool\n\ -_081854A8:\n\ - ldr r0, =gUnknown_0203C7B4\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, =sPlayers\n\ - adds r0, r1\n\ - ldrh r1, [r0, 0xE]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _081854E2\n\ - ldr r2, =0x000004ec\n\ - adds r0, r7, r2\n\ -_081854C4:\n\ - ldr r1, [r0]\n\ - movs r2, 0x80\n\ - lsls r2, 24\n\ - orrs r1, r2\n\ - str r1, [r0]\n\ - b _081854E2\n\ - .pool\n\ -_081854DC:\n\ - ldr r3, =0x000004ec\n\ - adds r0, r7, r3\n\ - str r2, [r0]\n\ -_081854E2:\n\ - ldr r4, =gTrainerBattleOpponent_A\n\ - ldrh r1, [r4]\n\ - ldr r5, =0x000004f4\n\ - adds r0, r7, r5\n\ - strh r1, [r0]\n\ - ldr r0, =gTrainerBattleOpponent_B\n\ - ldrh r1, [r0]\n\ - ldr r2, =0x000004f6\n\ - adds r0, r7, r2\n\ - strh r1, [r0]\n\ - ldr r3, =gPartnerTrainerId\n\ - ldrh r1, [r3]\n\ - movs r4, 0x9F\n\ - lsls r4, 3\n\ - adds r0, r7, r4\n\ - strh r1, [r0]\n\ - ldr r5, =gUnknown_0203C7B4\n\ - ldrb r1, [r5]\n\ - adds r2, 0x4\n\ - adds r0, r7, r2\n\ - strh r1, [r0]\n\ - mov r3, r9\n\ - ldr r0, [r3]\n\ - ldr r4, =0x00000ca9\n\ - adds r0, r4\n\ - ldrb r0, [r0]\n\ - lsls r0, 30\n\ - lsrs r0, 30\n\ - ldr r5, =0x000004fc\n\ - adds r1, r7, r5\n\ - strb r0, [r1]\n\ - ldr r0, =sFrontierFacility\n\ - ldrb r1, [r0]\n\ - adds r2, 0x3\n\ - adds r0, r7, r2\n\ - strb r1, [r0]\n\ - ldr r3, =sUnknown_0203C7AF\n\ - ldrb r1, [r3]\n\ - ldr r4, =0x000004fe\n\ - adds r0, r7, r4\n\ - strb r1, [r0]\n\ - mov r5, r9\n\ - ldr r0, [r5]\n\ - ldrb r1, [r0, 0x15]\n\ - lsls r1, 29\n\ - ldr r0, =0x000004ff\n\ - adds r3, r7, r0\n\ - lsrs r1, 31\n\ - ldrb r2, [r3]\n\ - movs r0, 0x2\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r3]\n\ - ldr r1, [r5]\n\ - ldrb r1, [r1, 0x14]\n\ - lsls r1, 29\n\ - lsrs r1, 28\n\ - movs r2, 0xF\n\ - negs r2, r2\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r3]\n\ - movs r2, 0xA0\n\ - lsls r2, 3\n\ - adds r1, r7, r2\n\ - ldr r3, =sAI_Scripts\n\ - ldr r0, [r3]\n\ - str r0, [r1]\n\ - ldr r4, =0xfffffed4\n\ - adds r1, r4, 0\n\ - ldr r5, =gTrainerBattleOpponent_A\n\ - ldrh r5, [r5]\n\ - adds r0, r1, r5\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x63\n\ - bls _08185580\n\ - b _081856C4\n\ -_08185580:\n\ - movs r6, 0\n\ - ldr r0, =0x00000504\n\ - adds r3, r7, r0\n\ - mov r10, r9\n\ - ldr r1, =gTrainerBattleOpponent_A\n\ - mov r12, r1\n\ - adds r2, r4, 0\n\ - mov r8, r2\n\ - ldr r4, =0x0000073c\n\ -_08185592:\n\ - adds r2, r3, r6\n\ - mov r5, r10\n\ - ldr r1, [r5]\n\ - mov r5, r12\n\ - ldrh r0, [r5]\n\ - add r0, r8\n\ - movs r5, 0xEC\n\ - muls r0, r5\n\ - adds r0, r6, r0\n\ - adds r1, r4\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - strb r0, [r2]\n\ - adds r6, 0x1\n\ - cmp r6, 0x7\n\ - ble _08185592\n\ - mov r0, r9\n\ - ldr r2, [r0]\n\ - ldr r1, =gTrainerBattleOpponent_A\n\ - ldrh r0, [r1]\n\ - ldr r3, =0xfffffed4\n\ - adds r0, r3\n\ - movs r1, 0xEC\n\ - muls r0, r1\n\ - adds r2, r0\n\ - ldr r4, =0x00000739\n\ - adds r2, r4\n\ - ldrb r1, [r2]\n\ - ldr r5, =0x0000050c\n\ - adds r0, r7, r5\n\ - strb r1, [r0]\n\ - ldr r1, =sUnknown_0203CCE8\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x1\n\ - bne _08185664\n\ - movs r6, 0\n\ - ldr r2, =0x0000050e\n\ - adds r4, r7, r2\n\ - mov r10, r9\n\ - ldr r5, =gTrainerBattleOpponent_A\n\ - mov r8, r5\n\ - adds r5, r3, 0\n\ -_081855E6:\n\ - lsls r3, r6, 1\n\ - mov r0, r10\n\ - ldr r2, [r0]\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - adds r0, r5\n\ - movs r1, 0xEC\n\ - muls r0, r1\n\ - adds r3, r0\n\ - movs r0, 0xEC\n\ - lsls r0, 3\n\ - adds r2, r0\n\ - adds r2, r3\n\ - ldrh r0, [r2]\n\ - strh r0, [r4]\n\ - adds r4, 0x2\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _081855E6\n\ - b _08185696\n\ - .pool\n\ -_08185664:\n\ - movs r6, 0\n\ - ldr r1, =0x0000050e\n\ - adds r4, r7, r1\n\ - mov r10, r9\n\ - ldr r2, =gTrainerBattleOpponent_A\n\ - mov r8, r2\n\ - adds r5, r3, 0\n\ -_08185672:\n\ - lsls r3, r6, 1\n\ - mov r0, r10\n\ - ldr r2, [r0]\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - adds r0, r5\n\ - movs r1, 0xEC\n\ - muls r0, r1\n\ - adds r3, r0\n\ - ldr r0, =0x00000754\n\ - adds r2, r0\n\ - adds r2, r3\n\ - ldrh r0, [r2]\n\ - strh r0, [r4]\n\ - adds r4, 0x2\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _08185672\n\ -_08185696:\n\ - mov r1, r9\n\ - ldr r2, [r1]\n\ - ldr r3, =gTrainerBattleOpponent_A\n\ - ldrh r0, [r3]\n\ - ldr r4, =0xfffffed4\n\ - adds r0, r4\n\ - movs r1, 0xEC\n\ - muls r0, r1\n\ - adds r2, r0\n\ - ldr r5, =0x0000081c\n\ - adds r2, r5\n\ - ldrb r1, [r2]\n\ - b _08185856\n\ - .pool\n\ -_081856C4:\n\ - ldr r3, =gTrainerBattleOpponent_B\n\ - ldrh r3, [r3]\n\ - adds r0, r1, r3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x63\n\ - bls _081856D4\n\ - b _081857E4\n\ -_081856D4:\n\ - movs r6, 0\n\ - ldr r4, =0x00000504\n\ - adds r3, r7, r4\n\ - mov r10, r9\n\ - ldr r5, =gTrainerBattleOpponent_B\n\ - mov r12, r5\n\ - ldr r0, =0xfffffed4\n\ - mov r8, r0\n\ - ldr r4, =0x0000073c\n\ -_081856E6:\n\ - adds r2, r3, r6\n\ - mov r5, r10\n\ - ldr r1, [r5]\n\ - mov r5, r12\n\ - ldrh r0, [r5]\n\ - add r0, r8\n\ - movs r5, 0xEC\n\ - muls r0, r5\n\ - adds r0, r6, r0\n\ - adds r1, r4\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - strb r0, [r2]\n\ - adds r6, 0x1\n\ - cmp r6, 0x7\n\ - ble _081856E6\n\ - mov r0, r9\n\ - ldr r2, [r0]\n\ - ldr r1, =gTrainerBattleOpponent_B\n\ - ldrh r0, [r1]\n\ - ldr r3, =0xfffffed4\n\ - adds r0, r3\n\ - movs r1, 0xEC\n\ - muls r0, r1\n\ - adds r2, r0\n\ - ldr r4, =0x00000739\n\ - adds r2, r4\n\ - ldrb r1, [r2]\n\ - ldr r5, =0x0000050c\n\ - adds r0, r7, r5\n\ - strb r1, [r0]\n\ - ldr r1, =sUnknown_0203CCE8\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x1\n\ - bne _08185784\n\ - movs r6, 0\n\ - ldr r2, =0x0000050e\n\ - adds r4, r7, r2\n\ - mov r10, r9\n\ - ldr r5, =gTrainerBattleOpponent_B\n\ - mov r8, r5\n\ - adds r5, r3, 0\n\ -_0818573A:\n\ - lsls r3, r6, 1\n\ - mov r0, r10\n\ - ldr r2, [r0]\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - adds r0, r5\n\ - movs r1, 0xEC\n\ - muls r0, r1\n\ - adds r3, r0\n\ - movs r0, 0xEC\n\ - lsls r0, 3\n\ - adds r2, r0\n\ - adds r2, r3\n\ - ldrh r0, [r2]\n\ - strh r0, [r4]\n\ - adds r4, 0x2\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _0818573A\n\ - b _081857B6\n\ - .pool\n\ -_08185784:\n\ - movs r6, 0\n\ - ldr r1, =0x0000050e\n\ - adds r4, r7, r1\n\ - mov r10, r9\n\ - ldr r2, =gTrainerBattleOpponent_B\n\ - mov r8, r2\n\ - adds r5, r3, 0\n\ -_08185792:\n\ - lsls r3, r6, 1\n\ - mov r0, r10\n\ - ldr r2, [r0]\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - adds r0, r5\n\ - movs r1, 0xEC\n\ - muls r0, r1\n\ - adds r3, r0\n\ - ldr r0, =0x00000754\n\ - adds r2, r0\n\ - adds r2, r3\n\ - ldrh r0, [r2]\n\ - strh r0, [r4]\n\ - adds r4, 0x2\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _08185792\n\ -_081857B6:\n\ - mov r1, r9\n\ - ldr r2, [r1]\n\ - ldr r3, =gTrainerBattleOpponent_B\n\ - ldrh r0, [r3]\n\ - ldr r4, =0xfffffed4\n\ - adds r0, r4\n\ - movs r1, 0xEC\n\ - muls r0, r1\n\ - adds r2, r0\n\ - ldr r5, =0x0000081c\n\ - adds r2, r5\n\ - ldrb r1, [r2]\n\ - b _08185856\n\ - .pool\n\ -_081857E4:\n\ - ldr r3, =gPartnerTrainerId\n\ - ldrh r3, [r3]\n\ - adds r0, r1, r3\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x63\n\ - bhi _0818585C\n\ - movs r6, 0\n\ - ldr r4, =0x00000504\n\ - adds r3, r7, r4\n\ - mov r10, r9\n\ - ldr r5, =gPartnerTrainerId\n\ - mov r12, r5\n\ - ldr r0, =0xfffffed4\n\ - mov r8, r0\n\ - ldr r4, =0x0000073c\n\ -_08185804:\n\ - adds r2, r3, r6\n\ - mov r5, r10\n\ - ldr r1, [r5]\n\ - mov r5, r12\n\ - ldrh r0, [r5]\n\ - add r0, r8\n\ - movs r5, 0xEC\n\ - muls r0, r5\n\ - adds r0, r6, r0\n\ - adds r1, r4\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - strb r0, [r2]\n\ - adds r6, 0x1\n\ - cmp r6, 0x7\n\ - ble _08185804\n\ - mov r0, r9\n\ - ldr r1, [r0]\n\ - ldr r2, =gPartnerTrainerId\n\ - ldrh r0, [r2]\n\ - ldr r3, =0xfffffed4\n\ - adds r0, r3\n\ - movs r2, 0xEC\n\ - muls r0, r2\n\ - adds r1, r0\n\ - ldr r4, =0x00000739\n\ - adds r1, r4\n\ - ldrb r1, [r1]\n\ - ldr r5, =0x0000050c\n\ - adds r0, r7, r5\n\ - strb r1, [r0]\n\ - mov r0, r9\n\ - ldr r1, [r0]\n\ - ldr r4, =gPartnerTrainerId\n\ - ldrh r0, [r4]\n\ - adds r0, r3\n\ - muls r0, r2\n\ - adds r1, r0\n\ - ldr r5, =0x0000081c\n\ - adds r1, r5\n\ - ldrb r1, [r1]\n\ -_08185856:\n\ - ldr r2, =0x0000051a\n\ - adds r0, r7, r2\n\ - strb r1, [r0]\n\ -_0818585C:\n\ - ldr r3, =gTrainerBattleOpponent_A\n\ - ldrh r0, [r3]\n\ - ldr r1, =0x0000018f\n\ - cmp r0, r1\n\ - bls _08185900\n\ - mov r4, r9\n\ - ldr r2, [r4]\n\ - adds r1, r0, 0\n\ - ldr r3, =0xfffffe70\n\ - adds r1, r3\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r2, r0\n\ - adds r2, 0xDC\n\ - ldrb r0, [r2]\n\ - lsls r0, 27\n\ - lsrs r0, 27\n\ - ldr r5, =0x0000050d\n\ - adds r1, r7, r5\n\ - strb r0, [r1]\n\ - movs r6, 0\n\ - ldr r0, =0x0000050e\n\ - adds r4, r7, r0\n\ - mov r10, r9\n\ - ldr r1, =gTrainerBattleOpponent_A\n\ - mov r8, r1\n\ - adds r5, r3, 0\n\ -_08185894:\n\ - lsls r3, r6, 1\n\ - mov r0, r10\n\ - ldr r2, [r0]\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - adds r1, r5\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r3, r0\n\ - movs r1, 0x82\n\ - lsls r1, 1\n\ - adds r2, r1\n\ - adds r2, r3\n\ - ldrh r0, [r2]\n\ - strh r0, [r4]\n\ - adds r4, 0x2\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _08185894\n\ - mov r3, r9\n\ - ldr r2, [r3]\n\ - ldr r4, =gTrainerBattleOpponent_A\n\ - ldrh r1, [r4]\n\ - ldr r5, =0xfffffe70\n\ - adds r1, r5\n\ - b _081859AC\n\ - .pool\n\ -_08185900:\n\ - ldr r3, =gTrainerBattleOpponent_B\n\ - ldrh r0, [r3]\n\ - cmp r0, r1\n\ - bls _0818597C\n\ - mov r4, r9\n\ - ldr r2, [r4]\n\ - adds r1, r0, 0\n\ - ldr r3, =0xfffffe70\n\ - adds r1, r3\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r2, r0\n\ - adds r2, 0xDC\n\ - ldrb r0, [r2]\n\ - lsls r0, 27\n\ - lsrs r0, 27\n\ - ldr r5, =0x0000050d\n\ - adds r1, r7, r5\n\ - strb r0, [r1]\n\ - movs r6, 0\n\ - ldr r0, =0x0000050e\n\ - adds r4, r7, r0\n\ - mov r10, r9\n\ - ldr r1, =gTrainerBattleOpponent_B\n\ - mov r8, r1\n\ - adds r5, r3, 0\n\ -_08185936:\n\ - lsls r3, r6, 1\n\ - mov r0, r10\n\ - ldr r2, [r0]\n\ - mov r0, r8\n\ - ldrh r1, [r0]\n\ - adds r1, r5\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r3, r0\n\ - movs r1, 0x82\n\ - lsls r1, 1\n\ - adds r2, r1\n\ - adds r2, r3\n\ - ldrh r0, [r2]\n\ - strh r0, [r4]\n\ - adds r4, 0x2\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _08185936\n\ - mov r3, r9\n\ - ldr r2, [r3]\n\ - ldr r4, =gTrainerBattleOpponent_B\n\ - ldrh r1, [r4]\n\ - ldr r5, =0xfffffe70\n\ - adds r1, r5\n\ - b _081859AC\n\ - .pool\n\ -_0818597C:\n\ - ldr r3, =gPartnerTrainerId\n\ - ldrh r0, [r3]\n\ - cmp r0, r1\n\ - bls _081859C0\n\ - mov r4, r9\n\ - ldr r2, [r4]\n\ - adds r1, r0, 0\n\ - ldr r3, =0xfffffe70\n\ - adds r1, r3\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r2, r0\n\ - adds r2, 0xDC\n\ - ldrb r0, [r2]\n\ - lsls r0, 27\n\ - lsrs r0, 27\n\ - ldr r5, =0x0000050d\n\ - adds r1, r7, r5\n\ - strb r0, [r1]\n\ - ldr r2, [r4]\n\ - ldr r0, =gPartnerTrainerId\n\ - ldrh r1, [r0]\n\ - adds r1, r3\n\ -_081859AC:\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r2, r0\n\ - ldr r1, =0x0000011b\n\ - adds r0, r2, r1\n\ - ldrb r1, [r0]\n\ - ldr r2, =0x0000051b\n\ - adds r0, r7, r2\n\ - strb r1, [r0]\n\ -_081859C0:\n\ - movs r6, 0\n\ - ldr r3, =0x00000297\n\ - mov r10, r3\n\ - ldr r4, =sBattleRecords\n\ - mov r9, r4\n\ - movs r5, 0xA6\n\ - lsls r5, 2\n\ - mov r8, r5\n\ - ldr r0, =0x0000051c\n\ - adds r5, r7, r0\n\ -_081859D4:\n\ - adds r4, r6, 0x1\n\ - mov r0, r8\n\ - muls r0, r6\n\ - mov r1, r9\n\ - adds r2, r0, r1\n\ - adds r1, r0, r5\n\ - mov r3, r10\n\ - adds r3, 0x1\n\ -_081859E4:\n\ - ldrb r0, [r2]\n\ - strb r0, [r1]\n\ - adds r2, 0x1\n\ - adds r1, 0x1\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bne _081859E4\n\ - adds r6, r4, 0\n\ - cmp r6, 0x3\n\ - ble _081859D4\n\ -_081859F8:\n\ - adds r0, r7, 0\n\ - ldr r1, [sp]\n\ - bl sub_81852F0\n\ - adds r4, r0, 0\n\ - cmp r4, 0x1\n\ - beq _08185A14\n\ - ldr r0, [sp, 0x4]\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - cmp r0, 0x2\n\ - bls _081859F8\n\ -_08185A14:\n\ - adds r0, r7, 0\n\ - bl Free\n\ - ldr r0, [sp]\n\ - bl Free\n\ - adds r0, r4, 0\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .pool\n\ - .syntax divided"); + free(battleSave); + free(savSection); + return ret; } -#endif // NONMATCHING static bool32 TryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst, struct SaveSection *saveBuffer) { @@ -1282,7 +501,7 @@ static bool32 TryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst, stru return TRUE; } -static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst) +static bool32 CopyRecordedBattleFromSave(struct RecordedBattleSave *dst) { struct SaveSection *savBuffer = AllocZeroed(sizeof(struct SaveSection)); bool32 ret = TryCopyRecordedBattleSaveData(dst, savBuffer); @@ -1293,7 +512,7 @@ static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst) static void CB2_RecordedBattleEnd(void) { - gSaveBlock2Ptr->frontier.lvlMode = sUnknown_0203C7AD; + gSaveBlock2Ptr->frontier.lvlMode = sLvlMode; gBattleOutcome = 0; gBattleTypeFlags = 0; gTrainerBattleOpponent_A = 0; @@ -1316,7 +535,7 @@ static void Task_StartAfterCountdown(u8 taskId) } } -static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src) +static void SetVariablesForRecordedBattle(struct RecordedBattleSave *src) { bool8 var; s32 i, j; @@ -1353,29 +572,29 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src) gTrainerBattleOpponent_B = src->opponentB; gPartnerTrainerId = src->partnerId; gUnknown_0203C7B4 = src->field_4FA; - sUnknown_0203C7AD = gSaveBlock2Ptr->frontier.lvlMode; - sFrontierFacility = src->field_4FD; - sUnknown_0203C7AF = src->field_4FE; - sBattleStyle = src->battleStyle; + sLvlMode = gSaveBlock2Ptr->frontier.lvlMode; + sFrontierFacility = src->frontierFacility; + sFrontierBrainSymbol = src->frontierBrainSymbol; + sBattleScene = src->battleScene; sTextSpeed = src->textSpeed; sAI_Scripts = src->AI_scripts; - for (i = 0; i < 8; i++) + for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) { - sUnknown_0203CCD1[i] = src->field_504[i]; + sRecordMixFriendName[i] = src->recordMixFriendName[i]; } - sUnknown_0203CCD9 = src->field_50C; - sUnknown_0203CCDA = src->field_50D; - gUnknown_03001278 = src->field_51A; - gUnknown_03001279 = src->field_51B; + sRecordMixFriendClass = src->recordMixFriendClass; + sApprenticeId = src->apprenticeId; + sRecordMixFriendLanguage = src->recordMixFriendLanguage; + sApprenticeLanguage = src->apprenticeLanguage; for (i = 0; i < 6; i++) { - sUnknown_0203CCDC[i] = src->field_50E[i]; + sEasyChatSpeech[i] = src->easyChatSpeech[i]; } - gSaveBlock2Ptr->frontier.lvlMode = src->field_4FC; + gSaveBlock2Ptr->frontier.lvlMode = src->lvlMode; for (i = 0; i < MAX_BATTLERS_COUNT; i++) { @@ -1389,12 +608,12 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src) void PlayRecordedBattle(void (*CB2_After)(void)) { struct RecordedBattleSave *battleSave = AllocZeroed(sizeof(struct RecordedBattleSave)); - if (AllocTryCopyRecordedBattleSaveData(battleSave) == TRUE) + if (CopyRecordedBattleFromSave(battleSave) == TRUE) { u8 taskId; RecordedBattle_SaveParties(); - SetRecordedBattleVarsFromSave(battleSave); + SetVariablesForRecordedBattle(battleSave); taskId = CreateTask(Task_StartAfterCountdown, 1); gTasks[taskId].tFramesToWait = 128; @@ -1420,9 +639,9 @@ u8 GetRecordedBattleFrontierFacility(void) return sFrontierFacility; } -u8 sub_8185EAC(void) +u8 GetRecordedBattleFronterBrainSymbol(void) { - return sUnknown_0203C7AF; + return sFrontierBrainSymbol; } void RecordedBattle_SaveParties(void) @@ -1478,9 +697,9 @@ u8 sub_8185FAC(void) return sUnknown_0203C7B5; } -u8 GetBattleStyleInRecordedBattle(void) +u8 GetBattleSceneInRecordedBattle(void) { - return sBattleStyle; + return sBattleScene; } u8 GetTextSpeedInRecordedBattle(void) @@ -1630,38 +849,38 @@ void sub_8186468(u8 *dst) s32 i; for (i = 0; i < 8; i++) - dst[i] = sUnknown_0203CCD1[i]; + dst[i] = sRecordMixFriendName[i]; dst[7] = EOS; - ConvertInternationalString(dst, gUnknown_03001278); + ConvertInternationalString(dst, sRecordMixFriendLanguage); } -u8 sub_818649C(void) +u8 GetRecordedBattleRecordMixFriendClass(void) { - return sUnknown_0203CCD9; + return sRecordMixFriendClass; } -u8 sub_81864A8(void) +u8 GetRecordedBattleApprenticeId(void) { - return sUnknown_0203CCDA; + return sApprenticeId; } -u8 sub_81864B4(void) +u8 GetRecordedBattleRecordMixFriendLanguage(void) { - return gUnknown_03001278; + return sRecordMixFriendLanguage; } -u8 sub_81864C0(void) +u8 GetRecordedBattleApprenticeLanguage(void) { - return gUnknown_03001279; + return sApprenticeLanguage; } -void sub_81864CC(void) +void RecordedBattle_SaveBattleOutcome(void) { - sUnknown_0203CCE8 = gBattleOutcome; + sBattleOutcome = gBattleOutcome; } -u16 *sub_81864E0(void) +u16 *GetRecordedBattleEasyChatSpeech(void) { - return sUnknown_0203CCDC; + return sEasyChatSpeech; } diff --git a/src/save.c b/src/save.c index 68427c4c3..0bd48cca9 100644 --- a/src/save.c +++ b/src/save.c @@ -712,30 +712,34 @@ u8 HandleSavingData(u8 saveType) u8 TrySavingData(u8 saveType) // TrySave { - if(gFlashMemoryPresent == TRUE) + if (gFlashMemoryPresent != TRUE) { - HandleSavingData(saveType); - if(gDamagedSaveSectors) - DoSaveFailedScreen(saveType); - else - goto OK; // really? + gUnknown_03006294 = 0xFF; + return 0xFF; } - gUnknown_03006294 = 0xFF; - return 0xFF; -OK: - gUnknown_03006294 = 1; - return 1; + HandleSavingData(saveType); + if (!gDamagedSaveSectors) + { + gUnknown_03006294 = 1; + return 1; + } + else + { + DoSaveFailedScreen(saveType); + gUnknown_03006294 = 0xFF; + return 0xFF; + } } -u8 sub_8153380(void) // trade.s save +bool8 sub_8153380(void) // trade.s save { if (gFlashMemoryPresent != TRUE) - return 1; + return TRUE; UpdateSaveAddresses(); SaveSerializedGame(); RestoreSaveBackupVarsAndIncrement(gRamSaveSectionLocations); - return 0; + return FALSE; } bool8 sub_81533AC(void) // trade.s save @@ -744,9 +748,9 @@ bool8 sub_81533AC(void) // trade.s save if (gDamagedSaveSectors) DoSaveFailedScreen(0); if (retVal == 0xFF) - return 1; + return TRUE; else - return 0; + return FALSE; } u8 sub_81533E0(void) // trade.s save diff --git a/src/scrcmd.c b/src/scrcmd.c index fa3e21996..5a5867a96 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1,5 +1,5 @@ #include "global.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "battle_setup.h" #include "berry.h" #include "clock.h" @@ -49,6 +49,11 @@ #include "tv.h" #include "window.h" +extern u16 sub_81A89A0(u8); +extern void sub_81A8AF8(void); +extern void sub_81A895C(void); +extern void sub_81A8934(u8); + typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(void); diff --git a/src/start_menu.c b/src/start_menu.c index aaa9fec2c..81c4213e7 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -12,7 +12,7 @@ #include "task.h" #include "overworld.h" #include "link.h" -#include "battle_frontier_2.h" +#include "frontier_util.h" #include "rom_818CFC8.h" #include "field_specials.h" #include "event_object_movement.h" @@ -35,6 +35,8 @@ #include "field_player_avatar.h" #include "battle_pyramid_bag.h" +extern bool8 InBattlePike(void); + // Menu actions enum { diff --git a/src/strings.c b/src/strings.c index 15c247744..9cb384e70 100644 --- a/src/strings.c +++ b/src/strings.c @@ -1569,9 +1569,7 @@ asm(".align 2"); const u8 gUnknown_085EE410[] = _("Floors cleared: {STR_VAR_2}"); asm(".align 2"); -const u8 gText_1Dot[] = _("1."); -const u8 gUnknown_085EE427[] = _("2."); -const u8 gUnknown_085EE42A[] = _("3."); +const u8 gText_123Dot[][3] = {_("1."), _("2."), _("3.")}; const u8 gText_SavingDontTurnOff2[] = _("SAVING…\nDON’T TURN OFF THE POWER."); const u8 gText_BlenderMaxSpeedRecord[] = _("BERRY BLENDER\nMAXIMUM SPEED RECORD!"); const u8 gText_234Players[] = _("2 PLAYERS\n3 PLAYERS\n4 PLAYERS"); @@ -1972,7 +1972,7 @@ void sub_80EDB44(void) show->rivalTrainer.nGoldSymbols ++; } } - show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontier.frontierBattlePoints; + show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontier.battlePoints; StringCopy(show->rivalTrainer.playerName, gSaveBlock2Ptr->playerName); tv_store_id_3x(show); show->rivalTrainer.language = gGameLanguage; @@ -2500,7 +2500,7 @@ bool8 sub_80EE818(void) return TRUE; } -void sub_80EE8C8(u16 winStreak, u8 facility) +void sub_80EE8C8(u16 winStreak, u8 facilityAndMode) { TVShow *show; @@ -2512,8 +2512,8 @@ void sub_80EE8C8(u16 winStreak, u8 facility) show->frontier.active = FALSE; StringCopy(show->frontier.playerName, gSaveBlock2Ptr->playerName); show->frontier.winStreak = winStreak; - show->frontier.facility = facility; - switch (facility) + show->frontier.facility = facilityAndMode; + switch (facilityAndMode) { case 1: case 5: diff --git a/src/walda_phrase.c b/src/walda_phrase.c index 4a82be14f..ff2ee7399 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -95,7 +95,7 @@ u16 TryGetWallpaperWithWaldaPhrase(void) { u16 backgroundClr, foregroundClr; u8 patternId, iconId; - u16 trainerId = ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId); + u16 trainerId = GetTrainerId(gSaveBlock2Ptr->playerTrainerId); gSpecialVar_Result = TryCalculateWallpaper(&backgroundClr, &foregroundClr, &iconId, &patternId, trainerId, GetWaldaPhrasePtr()); if (gSpecialVar_Result) diff --git a/sym_bss.txt b/sym_bss.txt index 7df5e3055..9561418c0 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -69,13 +69,7 @@ gUnknown_03001204: @ 3001204 .include "src/battle_transition.o" .include "src/pokemon_animation.o" - -gUnknown_03001278: @ 3001278 - .space 0x1 - -gUnknown_03001279: @ 3001279 - .space 0x3 - + .include "src/recorded_battle.o" .include "src/battle_factory.o" gUnknown_03001288: @ 3001288 |