diff options
author | Slawter666 <38655737+Slawter666@users.noreply.github.com> | 2018-05-05 18:50:26 +0100 |
---|---|---|
committer | Slawter666 <38655737+Slawter666@users.noreply.github.com> | 2018-05-05 18:50:26 +0100 |
commit | 22ec43a6eddfc63bbb1f9a883c7b1cdda05f0d64 (patch) | |
tree | b5d33877dbe736022815a40c6ff2af3977e36d77 | |
parent | 39fd42faeadeb73bf57018f69a6d69463635847a (diff) | |
parent | 83ea8d0cd9f8141181d09718c79b8916df945752 (diff) |
resolve merge conflicts
85 files changed, 2198 insertions, 4373 deletions
diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 491a87948..7f2dbcc73 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -12985,7 +12985,7 @@ _081A10F4: adds r1, r0 adds r1, 0xBA ldrh r0, [r1] - bl ItemId_GetItem + bl ItemId_GetName adds r1, r0, 0 b _081A1174 .pool @@ -14344,7 +14344,7 @@ sub_81A1C4C: @ 81A1C4C adds r3, r0, 0 lsls r0, r5, 3 adds r5, r0, 0x1 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId ldrb r0, [r0] lsls r3, 24 lsrs r3, 24 @@ -14370,7 +14370,7 @@ sub_81A1C90: @ 81A1C90 push {r4,lr} sub sp, 0x34 adds r2, r0, 0 - ldr r3, =gResultsWindowId + ldr r3, =gRecordsWindowId movs r1, 0xAE mov r0, sp adds r0, 0x2F @@ -14425,7 +14425,7 @@ sub_81A1CD8: @ 81A1CD8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -14644,7 +14644,7 @@ sub_81A1EA8: @ 81A1EA8 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -14685,7 +14685,7 @@ _081A1F28: ldr r0, =gStringVar4 movs r1, 0x2 bl sub_81A1C4C - ldr r6, =gResultsWindowId + ldr r6, =gRecordsWindowId ldrb r0, [r6] ldr r2, =gText_Lv502 movs r1, 0x31 @@ -14798,7 +14798,7 @@ sub_81A2008: @ 81A2008 lsrs r6, 24 lsls r5, 24 lsrs r5, 24 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r5, [sp] @@ -14932,7 +14932,7 @@ sub_81A2134: @ 81A2134 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -14957,7 +14957,7 @@ _081A2184: ldr r0, =gStringVar4 movs r1, 0 bl sub_81A1C4C - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] ldr r2, =gText_Lv502 movs r6, 0x21 @@ -14969,7 +14969,7 @@ _081A2184: movs r1, 0x1 movs r3, 0x8 bl PrintTextOnWindow - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] ldr r2, =gText_OpenLv movs r1, 0x61 @@ -15052,10 +15052,10 @@ _081A2184: mov r1, r8 movs r3, 0x40 bl sub_81A2008 - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] bl PutWindowTilemap - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] movs r1, 0x3 bl CopyWindowToVram @@ -15091,7 +15091,7 @@ sub_81A22B8: @ 81A22B8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -15285,7 +15285,7 @@ sub_81A2460: @ 81A2460 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -15310,7 +15310,7 @@ _081A24B0: ldr r0, =gStringVar4 movs r1, 0x2 bl sub_81A1C4C - ldr r6, =gResultsWindowId + ldr r6, =gRecordsWindowId ldrb r0, [r6] ldr r2, =gText_Lv502 movs r1, 0x31 @@ -15420,7 +15420,7 @@ sub_81A258C: @ 81A258C lsrs r6, 24 lsls r5, 24 lsrs r5, 24 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r5, [sp] @@ -15533,7 +15533,7 @@ sub_81A2698: @ 81A2698 mov r5, r8 push {r5-r7} sub sp, 0xC - ldr r6, =gResultsWindowId + ldr r6, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r6] @@ -15672,7 +15672,7 @@ sub_81A27E8: @ 81A27E8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -15836,7 +15836,7 @@ _081A2956: sub_81A2968: @ 81A2968 push {r4-r6,lr} sub sp, 0xC - ldr r5, =gResultsWindowId + ldr r5, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r5] @@ -15935,7 +15935,7 @@ sub_81A2A28: @ 81A2A28 lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r6, [sp] @@ -16211,7 +16211,7 @@ sub_81A2C94: @ 81A2C94 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -16236,7 +16236,7 @@ _081A2CE0: ldr r0, =gStringVar4 movs r1, 0 bl sub_81A1C4C - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r8, r0 ldrb r0, [r0] ldr r2, =gText_Lv502 @@ -16340,7 +16340,7 @@ sub_81A2DB4: @ 81A2DB4 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -16506,7 +16506,7 @@ _081A2F26: sub_81A2F38: @ 81A2F38 push {r4-r6,lr} sub sp, 0xC - ldr r5, =gResultsWindowId + ldr r5, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r5] @@ -16584,7 +16584,7 @@ sub_81A2FF8: @ 81A2FF8 mov r6, r8 push {r6,r7} sub sp, 0xC - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C7C bl AddWindow strb r0, [r4] @@ -16750,7 +16750,7 @@ _081A315C: movs r2, 0x1 movs r3, 0x4 bl ConvertIntToDecimalStringN - ldr r6, =gResultsWindowId + ldr r6, =gRecordsWindowId ldrb r0, [r6] movs r1, 0x26 adds r3, r5, 0 @@ -19026,7 +19026,7 @@ sub_81A4594: @ 81A4594 sub sp, 0x2C mov r8, r1 adds r6, r3, 0 - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r5, [r1] lsls r4, r0, 1 adds r4, r0 @@ -19062,7 +19062,7 @@ sub_81A4594: @ 81A4594 ldrb r2, [r6, 0xE] add r0, sp, 0xC bl TVShowConvertInternationalString - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] mov r3, r8 adds r3, 0x2 @@ -19102,7 +19102,7 @@ _081A4618: adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] str r7, [sp] mov r1, r10 @@ -19136,7 +19136,7 @@ sub_81A4684: @ 81A4684 adds r7, r1, 0 mov r10, r2 adds r5, r3, 0 - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] lsls r2, r6, 1 adds r2, r6 @@ -19176,7 +19176,7 @@ sub_81A4684: @ 81A4684 ldrb r2, [r5, 0x1A] add r0, sp, 0xC bl TVShowConvertInternationalString - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] adds r3, r7, 0x2 lsls r3, 27 @@ -19211,7 +19211,7 @@ _081A4734: adds r1, r4, 0 bl StringCopy _081A473C: - ldr r2, =gResultsWindowId + ldr r2, =gRecordsWindowId mov r9, r2 ldrb r0, [r2] adds r3, r7, 0x4 @@ -19532,7 +19532,7 @@ sub_81A4998: @ 81A4998 ldr r1, [r5] adds r0, r6, 0 bl StringExpandPlaceholders - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r8, r0 ldrb r0, [r0] movs r1, 0x1 @@ -19631,7 +19631,7 @@ _081A4A90: thumb_func_start sub_81A4AA0 sub_81A4AA0: @ 81A4AA0 push {r4,lr} - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C84 bl AddWindow strb r0, [r4] @@ -19659,7 +19659,7 @@ sub_81A4AA0: @ 81A4AA0 thumb_func_start sub_81A4AE8 sub_81A4AE8: @ 81A4AE8 push {r4,lr} - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldrb r0, [r4] movs r1, 0x11 bl FillWindowPixelBuffer @@ -19841,7 +19841,7 @@ _081A4C4E: ble _081A4C4E ldr r4, =gPlayerPartyCount ldrb r5, [r4] - bl copy_player_party_from_sav1 + bl LoadPlayerParty bl sub_8076D5C movs r0, 0x1 bl TrySavingData @@ -29770,7 +29770,7 @@ sub_81A9E90: @ 81A9E90 ldr r0, =0x0000400e movs r1, 0 bl VarSet - bl copy_player_party_from_sav1 + bl LoadPlayerParty _081A9EB8: pop {r0} bx r0 diff --git a/asm/battle_records.s b/asm/battle_records.s deleted file mode 100644 index 1880e7b45..000000000 --- a/asm/battle_records.s +++ /dev/null @@ -1,1285 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_813BF94 -sub_813BF94: @ 813BF94 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r2, =0x01000008 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - movs r0, 0xFF - strb r0, [r4] - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813BF94 - - thumb_func_start sub_813BFC4 -sub_813BFC4: @ 813BFC4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0x4 -_0813BFCA: - adds r0, r4, 0 - bl sub_813BF94 - adds r4, 0x10 - subs r5, 0x1 - cmp r5, 0 - bge _0813BFCA - movs r0, 0x17 - movs r1, 0 - bl SetGameStat - movs r0, 0x18 - movs r1, 0 - bl SetGameStat - movs r0, 0x19 - movs r1, 0 - bl SetGameStat - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813BFC4 - - thumb_func_start sub_813BFF8 -sub_813BFF8: @ 813BFF8 - adds r1, r0, 0 - ldrh r0, [r1, 0xA] - ldrh r2, [r1, 0xC] - adds r0, r2 - ldrh r1, [r1, 0xE] - adds r0, r1 - bx lr - thumb_func_end sub_813BFF8 - - thumb_func_start sub_813C008 -sub_813C008: @ 813C008 - push {r4-r7,lr} - adds r7, r1, 0 - lsls r2, 16 - lsrs r6, r2, 16 - movs r5, 0 - adds r4, r0, 0 -_0813C014: - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0x7 - bl StringCompareN - cmp r0, 0 - bne _0813C02C - ldrh r0, [r4, 0x8] - cmp r0, r6 - bne _0813C02C - adds r0, r5, 0 - b _0813C036 -_0813C02C: - adds r4, 0x10 - adds r5, 0x1 - cmp r5, 0x4 - ble _0813C014 - movs r0, 0x5 -_0813C036: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_813C008 - - thumb_func_start sub_813C03C -sub_813C03C: @ 813C03C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - mov r10, r0 - movs r1, 0x4 -_0813C04C: - subs r3, r1, 0x1 - adds r6, r3, 0 - cmp r3, 0 - blt _0813C0BA - lsls r0, r1, 4 - add r0, r10 - str r0, [sp, 0x14] - lsls r0, r3, 4 - mov r2, r10 - adds r5, r0, r2 - movs r4, 0x50 - add r4, r10 - mov r9, r4 - add r1, r9 - mov r8, r1 -_0813C06A: - ldr r0, [sp, 0x14] - str r3, [sp, 0x10] - bl sub_813BFF8 - adds r4, r0, 0 - adds r0, r5, 0 - bl sub_813BFF8 - ldr r3, [sp, 0x10] - cmp r4, r0 - ble _0813C0B2 - mov r1, sp - ldr r0, [sp, 0x14] - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldr r0, [r0] - str r0, [r1] - ldr r1, [sp, 0x14] - adds r0, r5, 0 - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldr r0, [r0] - str r0, [r1] - adds r1, r5, 0 - mov r0, sp - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldr r0, [r0] - str r0, [r1] - mov r7, r8 - ldrb r2, [r7] - mov r0, r9 - adds r1, r0, r6 - ldrb r0, [r1] - strb r0, [r7] - strb r2, [r1] -_0813C0B2: - subs r5, 0x10 - subs r6, 0x1 - cmp r6, 0 - bge _0813C06A -_0813C0BA: - adds r1, r3, 0 - cmp r1, 0 - bgt _0813C04C - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_813C03C - - thumb_func_start sub_813C0D0 -sub_813C0D0: @ 813C0D0 - push {lr} - adds r2, r0, 0 - cmp r1, 0x2 - beq _0813C100 - cmp r1, 0x2 - bgt _0813C0E2 - cmp r1, 0x1 - beq _0813C0E8 - b _0813C12A -_0813C0E2: - cmp r1, 0x3 - beq _0813C118 - b _0813C12A -_0813C0E8: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000270f - cmp r0, r1 - bls _0813C12A - strh r1, [r2, 0xA] - b _0813C12A - .pool -_0813C100: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000270f - cmp r0, r1 - bls _0813C12A - strh r1, [r2, 0xC] - b _0813C12A - .pool -_0813C118: - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000270f - cmp r0, r1 - bls _0813C12A - strh r1, [r2, 0xE] -_0813C12A: - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C0D0 - - thumb_func_start sub_813C134 -sub_813C134: @ 813C134 - push {r4,lr} - cmp r0, 0x2 - beq _0813C14E - cmp r0, 0x2 - bgt _0813C144 - cmp r0, 0x1 - beq _0813C14A - b _0813C166 -_0813C144: - cmp r0, 0x3 - beq _0813C152 - b _0813C166 -_0813C14A: - movs r4, 0x17 - b _0813C154 -_0813C14E: - movs r4, 0x18 - b _0813C154 -_0813C152: - movs r4, 0x19 -_0813C154: - adds r0, r4, 0 - bl GetGameStat - ldr r1, =0x0000270e - cmp r0, r1 - bhi _0813C166 - adds r0, r4, 0 - bl IncrementGameStat -_0813C166: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C134 - - thumb_func_start sub_813C170 -sub_813C170: @ 813C170 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - mov r8, r1 - mov r10, r3 - ldr r0, [sp, 0x20] - lsls r2, 16 - lsrs r7, r2, 16 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - mov r0, r10 - bl sub_813C134 - adds r0, r6, 0 - bl sub_813C03C - adds r0, r6, 0 - mov r1, r8 - adds r2, r7, 0 - bl sub_813C008 - adds r5, r0, 0 - cmp r5, 0x5 - bne _0813C1D4 - movs r5, 0x4 - adds r4, r6, 0 - adds r4, 0x40 - adds r0, r4, 0 - bl sub_813BF94 - adds r0, r4, 0 - mov r1, r8 - movs r2, 0x7 - bl StringCopyN - strh r7, [r4, 0x8] - adds r2, r6, 0 - adds r2, 0x54 - ldr r1, =gLinkPlayers - mov r3, r9 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x1A] - strb r0, [r2] -_0813C1D4: - lsls r0, r5, 4 - adds r0, r6, r0 - mov r1, r10 - bl sub_813C0D0 - adds r0, r6, 0 - bl sub_813C03C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C170 - - thumb_func_start InitLinkBattleRecords -InitLinkBattleRecords: @ 813C1F8 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00003150 - adds r0, r1 - bl sub_813BFC4 - pop {r0} - bx r0 - .pool - thumb_func_end InitLinkBattleRecords - - thumb_func_start sub_813C214 -sub_813C214: @ 813C214 - push {lr} - movs r1, 0x64 - muls r1, r0 - ldr r0, =gUnknown_02039B6C - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldr r2, =0x0000270f - cmp r0, r2 - bls _0813C230 - strh r2, [r1] -_0813C230: - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C214 - - thumb_func_start sub_813C23C -sub_813C23C: @ 813C23C - push {lr} - movs r1, 0x64 - muls r1, r0 - ldr r0, =gUnknown_02039B6E - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldr r2, =0x0000270f - cmp r0, r2 - bls _0813C258 - strh r2, [r1] -_0813C258: - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C23C - - thumb_func_start sub_813C264 -sub_813C264: @ 813C264 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0x1 - beq _0813C27C - cmp r0, 0x2 - beq _0813C28A - b _0813C298 - .pool -_0813C27C: - eors r0, r4 - bl sub_813C214 - adds r0, r4, 0 - bl sub_813C23C - b _0813C298 -_0813C28A: - movs r0, 0x1 - eors r0, r4 - bl sub_813C23C - adds r0, r4, 0 - bl sub_813C214 -_0813C298: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813C264 - - thumb_func_start sub_813C2A0 -sub_813C2A0: @ 813C2A0 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl InUnionRoom - cmp r0, 0x1 - beq _0813C2DA - adds r0, r4, 0 - bl sub_813C264 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00003150 - adds r0, r1 - movs r1, 0x64 - adds r3, r4, 0 - muls r3, r1 - ldr r2, =gUnknown_02039B88 - adds r1, r3, r2 - subs r2, 0x30 - adds r3, r2 - ldrh r2, [r3, 0xE] - ldr r3, =gBattleOutcome - ldrb r3, [r3] - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - bl sub_813C170 -_0813C2DA: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C2A0 - - thumb_func_start sub_813C2F4 -sub_813C2F4: @ 813C2F4 - push {r4,lr} - sub sp, 0xC - ldr r4, =gStringVar1 - movs r0, 0x17 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar2 - movs r0, 0x18 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar3 - movs r0, 0x19 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_TotalRecordWLD - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xD0 - bl GetStringCenterAlignXOffset - adds r3, r0, 0 - ldr r0, =gResultsWindowId - ldrb r0, [r0] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x11 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - bl PrintTextOnWindow - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C2F4 - - thumb_func_start sub_813C384 -sub_813C384: @ 813C384 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r6, r0, 0 - adds r5, r2, 0 - lsls r1, 24 - lsrs r4, r1, 24 - ldrh r0, [r6, 0xA] - cmp r0, 0 - bne _0813C40C - ldr r7, [r6, 0xC] - cmp r7, 0 - bne _0813C40C - ldr r0, =gResultsWindowId - mov r8, r0 - ldrb r0, [r0] - ldr r2, =gUnknown_085B3D84 - lsls r4, 3 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl PrintTextOnWindow - mov r1, r8 - ldrb r0, [r1] - ldr r5, =gUnknown_085B3D8C - str r4, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - movs r3, 0x50 - bl PrintTextOnWindow - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - movs r3, 0x80 - bl PrintTextOnWindow - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - movs r3, 0xB0 - bl PrintTextOnWindow - b _0813C4A8 - .pool -_0813C40C: - ldr r0, =gStringVar1 - movs r1, 0x8 - bl StringFillWithTerminator - ldr r0, =gStringVar1 - adds r1, r6, 0 - movs r2, 0x7 - bl StringCopyN - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, =gStringVar1 - bl ConvertInternationalString - ldr r0, =gResultsWindowId - mov r8, r0 - ldrb r0, [r0] - lsls r4, 3 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - movs r5, 0 - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gStringVar1 - movs r3, 0x8 - bl PrintTextOnWindow - ldrh r1, [r6, 0xA] - ldr r0, =gStringVar1 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gStringVar1 - movs r3, 0x50 - bl PrintTextOnWindow - ldrh r1, [r6, 0xC] - ldr r0, =gStringVar1 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gStringVar1 - movs r3, 0x80 - bl PrintTextOnWindow - ldrh r1, [r6, 0xE] - ldr r0, =gStringVar1 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gStringVar1 - movs r3, 0xB0 - bl PrintTextOnWindow -_0813C4A8: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C384 - - thumb_func_start sub_813C4BC -sub_813C4BC: @ 813C4BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - ldr r6, =gResultsWindowId - ldr r0, =gUnknown_085B3D7C - bl AddWindow - strb r0, [r6] - ldrb r0, [r6] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r6] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r5, =gStringVar4 - ldr r1, =gText_PlayersBattleResults - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0xD0 - bl GetStringCenterAlignXOffset - adds r3, r0, 0 - ldrb r0, [r6] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x1 - str r1, [sp] - movs r4, 0 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - adds r2, r5, 0 - bl PrintTextOnWindow - ldr r0, =gSaveBlock1Ptr - mov r8, r0 - ldr r0, [r0] - ldr r1, =0x00003150 - mov r9, r1 - add r0, r9 - bl sub_813C2F4 - ldr r1, =gText_WinLoseDraw - adds r0, r5, 0 - bl StringExpandPlaceholders - ldrb r0, [r6] - movs r1, 0x29 - str r1, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - movs r3, 0 - bl PrintTextOnWindow - mov r7, r8 - movs r6, 0xE0 - lsls r6, 19 - mov r5, r9 -_0813C540: - ldr r2, [r7] - adds r0, r2, r5 - lsrs r1, r6, 24 - ldr r3, =0x000031a0 - adds r2, r3 - adds r2, r4 - ldrb r2, [r2] - bl sub_813C384 - movs r0, 0x80 - lsls r0, 18 - adds r6, r0 - adds r5, 0x10 - adds r4, 0x1 - cmp r4, 0x4 - ble _0813C540 - ldr r4, =gResultsWindowId - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - 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_813C4BC - - thumb_func_start sub_813C5A0 -sub_813C5A0: @ 813C5A0 - push {r4,lr} - ldr r4, =gResultsWindowId - ldrb r0, [r4] - movs r1, 0 - bl sub_819746C - ldrb r0, [r4] - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C5A0 - - thumb_func_start sub_813C5BC -sub_813C5BC: @ 813C5BC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813C5DC - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_813C5EC - str r0, [r1] -_0813C5DC: - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C5BC - - thumb_func_start sub_813C5EC -sub_813C5EC: @ 813C5EC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks - adds r4, r1, r0 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0813C610 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813C61A -_0813C610: - movs r0, 0x5 - bl PlaySE - ldr r0, =sub_813C62C - str r0, [r4] -_0813C61A: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C5EC - - thumb_func_start sub_813C62C -sub_813C62C: @ 813C62C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_813C664 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C62C - - thumb_func_start sub_813C664 -sub_813C664: @ 813C664 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813C694 - ldr r0, =CB2_ReturnToFieldContinueScript - bl SetMainCallback2 - ldr r0, =gUnknown_0203AB78 - ldr r0, [r0] - bl Free - movs r0, 0 - bl sub_813C6A8 - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl DestroyTask -_0813C694: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C664 - - thumb_func_start sub_813C6A8 -sub_813C6A8: @ 813C6A8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - bl ClearWindowTilemap - adds r0, r4, 0 - movs r1, 0x2 - bl CopyWindowToVram - adds r0, r4, 0 - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813C6A8 - - thumb_func_start sub_813C6D4 -sub_813C6D4: @ 813C6D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0813C6FA: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _0813C6FA - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0x8 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0xA - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0xC - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0xE - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C6D4 - - thumb_func_start sub_813C80C -sub_813C80C: @ 813C80C - push {lr} - bl ScanlineEffect_Stop - bl ResetTasks - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - pop {r0} - bx r0 - thumb_func_end sub_813C80C - - thumb_func_start sub_813C828 -sub_813C828: @ 813C828 - push {lr} - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - pop {r0} - bx r0 - thumb_func_end sub_813C828 - - thumb_func_start sub_813C880 -sub_813C880: @ 813C880 - push {lr} - movs r1, 0x94 - lsls r1, 4 - movs r0, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_813C880 - - thumb_func_start sub_813C890 -sub_813C890: @ 813C890 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, =gUnknown_085B3484 - adds r0, r4, 0 - movs r2, 0xC0 - movs r3, 0 - bl LoadBgTiles - ldr r1, =gUnknown_085B3564 - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBufferRect - ldr r0, =gUnknown_085B3544 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C890 - - thumb_func_start sub_813C8D8 -sub_813C8D8: @ 813C8D8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_813C8D8 - - thumb_func_start sub_813C8EC -sub_813C8EC: @ 813C8EC - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_813C8EC - - thumb_func_start sub_813C904 -sub_813C904: @ 813C904 - push {lr} - movs r0, 0 - bl SetVBlankCallback - ldr r0, =sub_813C91C - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C904 - - thumb_func_start sub_813C91C -sub_813C91C: @ 813C91C - push {r4,lr} - sub sp, 0x4 - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x7 - bls _0813C930 - b _0813CA3C -_0813C930: - lsls r0, 2 - ldr r1, =_0813C944 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0813C944: - .4byte _0813C964 - .4byte _0813C970 - .4byte _0813C976 - .4byte _0813C9A8 - .4byte _0813C9BE - .4byte _0813C9DE - .4byte _0813C9F0 - .4byte _0813CA14 -_0813C964: - movs r0, 0 - bl SetVBlankCallback - bl sub_813C6D4 - b _0813CA00 -_0813C970: - bl sub_813C80C - b _0813CA00 -_0813C976: - ldr r4, =gUnknown_0203AB78 - movs r0, 0x80 - lsls r0, 4 - bl AllocZeroed - str r0, [r4] - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_085B3D64 - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - ldr r1, [r4] - movs r0, 0x3 - bl SetBgTilemapBuffer - bl sub_813C828 - b _0813CA00 - .pool -_0813C9A8: - movs r0, 0x3 - bl sub_813C890 - movs r0, 0 - bl stdpal_get - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - b _0813CA00 -_0813C9BE: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813CA3C - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _0813CA00 -_0813C9DE: - ldr r0, =gUnknown_085B3D6C - bl InitWindows - bl DeactivateAllTextPrinters - b _0813CA00 - .pool -_0813C9F0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0813CA00: - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0813CA3C - .pool -_0813CA14: - bl sub_813C880 - ldr r0, =sub_813C8D8 - bl SetVBlankCallback - bl sub_81D5C8C - ldr r0, =sub_813C5BC - movs r1, 0x8 - bl CreateTask - ldr r0, =sub_813C8EC - bl SetMainCallback2 - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_0813CA3C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C91C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/cable_club.s b/asm/cable_club.s index e6fbd1886..7ef499226 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -960,7 +960,7 @@ task_map_chg_seq_0807EC34: @ 80B2B94 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 - ldr r1, =gUnknown_02039B58 + ldr r1, =gTrainerCards ldrh r0, [r5] cmp r0, 0x1 bne _080B2C10 @@ -1044,7 +1044,7 @@ sub_80B2C30: @ 80B2C30 _080B2C5C: movs r0, 0x64 muls r0, r4 - ldr r1, =gUnknown_02039B58 + ldr r1, =gTrainerCards adds r0, r1 lsls r1, r4, 8 ldr r2, =gBlockRecvBuffer @@ -2157,8 +2157,8 @@ sub_80B360C: @ 80B360C ands r0, r1 str r0, [r2] bl Overworld_ResetMapMusic - bl copy_player_party_from_sav1 - bl copy_bags_and_unk_data_to_save_blocks + bl LoadPlayerParty + bl SavePlayerBag bl sub_813BF10 ldr r0, =gSpecialVar_0x8004 ldrh r0, [r0] @@ -2171,7 +2171,7 @@ sub_80B360C: @ 80B360C ldrb r0, [r0] movs r5, 0x1 eors r0, r5 - bl sub_813C2A0 + bl UpdatePlayerLinkBattleRecords ldr r0, =gWirelessCommType ldrb r0, [r0] cmp r0, 0 @@ -2251,8 +2251,8 @@ sub_80B36EC: @ 80B36EC cmp r0, 0x9 bne _080B370E _080B3706: - bl copy_player_party_from_sav1 - bl copy_bags_and_unk_data_to_save_blocks + bl LoadPlayerParty + bl SavePlayerBag _080B370E: movs r0, 0x7F bl copy_saved_warp2_bank_and_enter_x_to_warp1 diff --git a/asm/field_screen.s b/asm/field_screen.s index 2a539d111..e3d48f882 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -8861,7 +8861,7 @@ sub_80AF87C: @ 80AF87C movs r0, 0x1 bl sub_8085540 bl ScriptContext2_Enable - bl save_serialize_npcs + bl SaveMapObjects bl music_something bl sub_80AF0B4 movs r0, 0x2D diff --git a/asm/item.s b/asm/item.s deleted file mode 100644 index 89177c5d4..000000000 --- a/asm/item.s +++ /dev/null @@ -1,1921 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start CheckBagHasSpace -CheckBagHasSpace: @ 80D6800 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r5, r1, 16 - bl ItemId_GetPocket - lsls r0, 24 - cmp r0, 0 - beq _080D6906 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080D6838 - ldr r0, =0x00004004 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D684C -_080D6838: - mov r0, r8 - adds r1, r5, 0 - bl CheckPyramidBagHasSpace - lsls r0, 24 - lsrs r0, 24 - b _080D6916 - .pool -_080D684C: - mov r0, r8 - bl ItemId_GetPocket - subs r0, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r7, =0x000003e7 - cmp r2, 0x3 - beq _080D6860 - movs r7, 0x63 -_080D6860: - movs r6, 0 - ldr r1, =gBagPockets - lsls r4, r2, 3 - adds r0, r4, r1 - mov r9, r4 - ldrb r0, [r0, 0x4] - cmp r6, r0 - bcs _080D68BC - subs r0, r2, 0x2 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 -_080D6878: - adds r0, r4, r1 - ldr r1, [r0] - lsls r0, r6, 2 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, r8 - bne _080D68AC - adds r0, r1, 0x2 - str r2, [sp] - bl GetBagItemQuantity - lsls r0, 16 - lsrs r1, r0, 16 - adds r0, r1, r5 - ldr r2, [sp] - cmp r0, r7 - ble _080D6914 - mov r0, r10 - cmp r0, 0x1 - bls _080D6906 - subs r0, r7, r1 - subs r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _080D6914 -_080D68AC: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, =gBagPockets - adds r0, r4, r1 - ldrb r0, [r0, 0x4] - cmp r6, r0 - bcc _080D6878 -_080D68BC: - cmp r5, 0 - beq _080D6914 - movs r6, 0 - ldr r3, =gBagPockets - mov r1, r9 - adds r0, r1, r3 - ldrb r0, [r0, 0x4] - cmp r6, r0 - bcs _080D6902 - adds r4, r3, 0 - subs r0, r2, 0x2 - lsls r0, 24 - lsrs r2, r0, 24 -_080D68D6: - adds r0, r1, r4 - ldr r1, [r0] - lsls r0, r6, 2 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _080D68F2 - cmp r5, r7 - bls _080D6914 - cmp r2, 0x1 - bls _080D6906 - subs r0, r5, r7 - lsls r0, 16 - lsrs r5, r0, 16 -_080D68F2: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - mov r1, r9 - adds r0, r1, r3 - ldrb r0, [r0, 0x4] - cmp r6, r0 - bcc _080D68D6 -_080D6902: - cmp r5, 0 - beq _080D6914 -_080D6906: - movs r0, 0 - b _080D6916 - .pool -_080D6914: - movs r0, 0x1 -_080D6916: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckBagHasSpace - - thumb_func_start AddBagItem -@ int AddBagItem(int item_id, int quantity) -AddBagItem: @ 80D6928 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - lsls r1, 16 - lsrs r5, r1, 16 - bl ItemId_GetPocket - lsls r0, 24 - cmp r0, 0 - bne _080D694C - movs r0, 0 - b _080D6A92 -_080D694C: - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080D6964 - ldr r0, =0x00004004 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D6978 -_080D6964: - mov r0, r9 - adds r1, r5, 0 - bl AddPyramidBagItem - lsls r0, 24 - lsrs r0, 24 - b _080D6A92 - .pool -_080D6978: - mov r0, r9 - bl ItemId_GetPocket - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, r0, 3 - ldr r0, =gBagPockets - adds r7, r1, r0 - ldrb r0, [r7, 0x4] - lsls r0, 2 - bl AllocZeroed - mov r8, r0 - ldr r1, [r7] - ldrb r2, [r7, 0x4] - lsls r2, 2 - bl memcpy - ldr r2, =0x000003e7 - mov r0, r10 - cmp r0, 0x3 - beq _080D69AA - movs r2, 0x63 -_080D69AA: - movs r6, 0 - ldrb r0, [r7, 0x4] - cmp r6, r0 - bcs _080D6A06 - mov r0, r10 - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] -_080D69BC: - lsls r0, r6, 2 - mov r3, r8 - adds r1, r0, r3 - ldrh r0, [r1] - cmp r0, r9 - bne _080D69FA - adds r4, r1, 0x2 - adds r0, r4, 0 - str r2, [sp, 0x4] - bl GetBagItemQuantity - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, r5 - ldr r2, [sp, 0x4] - cmp r1, r2 - ble _080D6A68 - ldr r1, [sp] - cmp r1, 0x1 - bls _080D6A74 - subs r0, r2, r0 - subs r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - adds r1, r2, 0 - bl SetBagItemQuantity - ldr r2, [sp, 0x4] - cmp r5, 0 - beq _080D6A7E -_080D69FA: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r7, 0x4] - cmp r6, r0 - bcc _080D69BC -_080D6A06: - cmp r5, 0 - beq _080D6A7E - movs r6, 0 - cmp r6, r0 - bcs _080D6A62 - mov r0, r10 - subs r0, 0x2 - lsls r0, 24 - lsrs r4, r0, 24 -_080D6A18: - lsls r0, r6, 2 - mov r3, r8 - adds r1, r0, r3 - ldrh r0, [r1] - cmp r0, 0 - bne _080D6A56 - mov r0, r9 - strh r0, [r1] - cmp r5, r2 - bhi _080D6A40 - adds r0, r1, 0x2 - adds r1, r5, 0 - bl SetBagItemQuantity - b _080D6A7E - .pool -_080D6A40: - cmp r4, 0x1 - bls _080D6A74 - subs r0, r5, r2 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r1, 0x2 - adds r1, r2, 0 - str r2, [sp, 0x4] - bl SetBagItemQuantity - ldr r2, [sp, 0x4] -_080D6A56: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r7, 0x4] - cmp r6, r1 - bcc _080D6A18 -_080D6A62: - cmp r5, 0 - beq _080D6A7E - b _080D6A74 -_080D6A68: - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBagItemQuantity - b _080D6A7E -_080D6A74: - mov r0, r8 - bl Free - movs r0, 0 - b _080D6A92 -_080D6A7E: - ldr r0, [r7] - ldrb r2, [r7, 0x4] - lsls r2, 2 - mov r1, r8 - bl memcpy - mov r0, r8 - bl Free - movs r0, 0x1 -_080D6A92: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end AddBagItem - - thumb_func_start RemoveBagItem -@ pokescrcmd -RemoveBagItem: @ 80D6AA4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r7, r1, 16 - movs r4, 0 - bl ItemId_GetPocket - lsls r0, 24 - cmp r0, 0 - beq _080D6B38 - mov r0, r8 - cmp r0, 0 - beq _080D6B38 - bl InBattlePyramid - lsls r0, 24 - cmp r0, 0 - bne _080D6AE0 - ldr r0, =0x00004004 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D6AF4 -_080D6AE0: - mov r0, r8 - adds r1, r7, 0 - bl RemovePyramidBagItem - lsls r0, 24 - lsrs r0, 24 - b _080D6C5A - .pool -_080D6AF4: - mov r0, r8 - bl ItemId_GetPocket - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, r0, 3 - ldr r0, =gBagPockets - adds r5, r1, r0 - movs r6, 0 - ldrb r2, [r5, 0x4] - cmp r6, r2 - bcs _080D6B34 -_080D6B10: - ldr r0, [r5] - lsls r1, r6, 2 - adds r1, r0 - ldrh r0, [r1] - cmp r0, r8 - bne _080D6B28 - adds r0, r1, 0x2 - bl GetBagItemQuantity - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 -_080D6B28: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r5, 0x4] - cmp r6, r0 - bcc _080D6B10 -_080D6B34: - cmp r4, r7 - bcs _080D6B40 -_080D6B38: - movs r0, 0 - b _080D6C5A - .pool -_080D6B40: - bl CurrentMapIsSecretBase - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080D6B70 - ldr r4, =0x000040ee - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl VarSet - ldr r0, =0x000040ed - mov r1, r8 - bl VarSet -_080D6B70: - mov r0, r9 - bl sub_81ABB2C - lsls r0, 24 - lsrs r1, r0, 24 - ldrb r0, [r5, 0x4] - cmp r0, r1 - bls _080D6BE6 - ldr r0, [r5] - lsls r1, 2 - adds r2, r1, r0 - ldrh r0, [r2] - adds r4, r1, 0 - cmp r0, r8 - bne _080D6BE6 - adds r0, r2, 0x2 - bl GetBagItemQuantity - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r7 - bcc _080D6BB8 - ldr r0, [r5] - adds r0, r4 - adds r0, 0x2 - subs r1, r7 - lsls r1, 16 - lsrs r1, 16 - bl SetBagItemQuantity - movs r7, 0 - b _080D6BCA - .pool -_080D6BB8: - subs r0, r7, r1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, [r5] - adds r0, r4 - adds r0, 0x2 - movs r1, 0 - bl SetBagItemQuantity -_080D6BCA: - ldr r0, [r5] - adds r0, r4 - adds r0, 0x2 - bl GetBagItemQuantity - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - bne _080D6BE2 - ldr r0, [r5] - adds r0, r4, r0 - strh r2, [r0] -_080D6BE2: - cmp r7, 0 - beq _080D6C58 -_080D6BE6: - movs r6, 0 - ldrb r0, [r5, 0x4] - cmp r6, r0 - bcs _080D6C58 -_080D6BEE: - ldr r0, [r5] - lsls r1, r6, 2 - adds r2, r1, r0 - ldrh r0, [r2] - adds r4, r1, 0 - cmp r0, r8 - bne _080D6C4C - adds r0, r2, 0x2 - bl GetBagItemQuantity - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r7 - bcc _080D6C1E - ldr r0, [r5] - adds r0, r4 - adds r0, 0x2 - subs r1, r7 - lsls r1, 16 - lsrs r1, 16 - bl SetBagItemQuantity - movs r7, 0 - b _080D6C30 -_080D6C1E: - subs r0, r7, r1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, [r5] - adds r0, r4 - adds r0, 0x2 - movs r1, 0 - bl SetBagItemQuantity -_080D6C30: - ldr r0, [r5] - adds r0, r4 - adds r0, 0x2 - bl GetBagItemQuantity - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - bne _080D6C48 - ldr r0, [r5] - adds r0, r4, r0 - strh r2, [r0] -_080D6C48: - cmp r7, 0 - beq _080D6C58 -_080D6C4C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r2, [r5, 0x4] - cmp r6, r2 - bcc _080D6BEE -_080D6C58: - movs r0, 0x1 -_080D6C5A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end RemoveBagItem - - thumb_func_start GetPocketByItemId -GetPocketByItemId: @ 80D6C68 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetPocketByItemId - - thumb_func_start ClearItemSlots -ClearItemSlots: @ 80D6C7C - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 24 - movs r4, 0 - lsrs r1, 24 - cmp r4, r1 - bcs _080D6CA6 - adds r5, r1, 0 - movs r7, 0 -_080D6C8E: - lsls r0, r4, 2 - adds r0, r6 - strh r7, [r0] - adds r0, 0x2 - movs r1, 0 - bl SetBagItemQuantity - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r5 - bcc _080D6C8E -_080D6CA6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ClearItemSlots - - thumb_func_start sub_80D6CAC -sub_80D6CAC: @ 80D6CAC - push {lr} - movs r1, 0 - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - movs r3, 0x93 - lsls r3, 3 -_080D6CB8: - lsls r0, r1, 24 - asrs r1, r0, 24 - lsls r0, r1, 2 - adds r0, r2, r0 - adds r0, r3 - ldrh r0, [r0] - cmp r0, 0 - bne _080D6CD0 - adds r0, r1, 0 - b _080D6CE0 - .pool -_080D6CD0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r0, 24 - cmp r0, 0x31 - ble _080D6CB8 - movs r0, 0x1 - negs r0, r0 -_080D6CE0: - pop {r1} - bx r1 - thumb_func_end sub_80D6CAC - - thumb_func_start sub_80D6CE4 -sub_80D6CE4: @ 80D6CE4 - push {r4,lr} - movs r2, 0 - movs r1, 0 - ldr r0, =gSaveBlock1Ptr - ldr r3, [r0] - movs r4, 0x93 - lsls r4, 3 -_080D6CF2: - lsls r0, r1, 2 - adds r0, r3, r0 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0 - beq _080D6D04 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080D6D04: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x31 - bls _080D6CF2 - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end sub_80D6CE4 - - thumb_func_start CheckPCHasItem -CheckPCHasItem: @ 80D6D1C - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - movs r4, 0 -_080D6D28: - ldr r0, =gSaveBlock1Ptr - ldr r2, [r0] - lsls r1, r4, 2 - adds r0, r2, r1 - movs r3, 0x93 - lsls r3, 3 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r6 - bne _080D6D5C - adds r0, r1, r2 - ldr r1, =0x0000049a - adds r0, r1 - bl GetBagItemId - lsls r0, 16 - lsrs r0, 16 - cmp r0, r5 - bcc _080D6D5C - movs r0, 0x1 - b _080D6D68 - .pool -_080D6D5C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x31 - bls _080D6D28 - movs r0, 0 -_080D6D68: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end CheckPCHasItem - - thumb_func_start AddPCItem -AddPCItem: @ 80D6D70 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r5, r1, 16 - movs r0, 0xC8 - bl AllocZeroed - adds r7, r0, 0 - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x93 - lsls r0, 3 - adds r1, r0 - adds r0, r7, 0 - movs r2, 0xC8 - bl memcpy - movs r6, 0 -_080D6D9C: - lsls r0, r6, 2 - adds r1, r0, r7 - ldrh r0, [r1] - cmp r0, r8 - bne _080D6DD0 - adds r4, r1, 0x2 - adds r0, r4, 0 - bl GetBagItemId - lsls r0, 16 - lsrs r2, r0, 16 - adds r1, r2, r5 - ldr r3, =0x000003e7 - cmp r1, r3 - ble _080D6E04 - ldr r1, =0x0000fc19 - adds r0, r5, r1 - adds r0, r2, r0 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - adds r1, r3, 0 - bl SetBagItemId - cmp r5, 0 - beq _080D6E20 -_080D6DD0: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x31 - bls _080D6D9C - cmp r5, 0 - beq _080D6E20 - bl sub_80D6CAC - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080D6E10 - adds r0, r7, 0 - bl Free - movs r0, 0 - b _080D6E3A - .pool -_080D6E04: - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBagItemId - b _080D6E20 -_080D6E10: - lsls r0, r1, 2 - adds r0, r7 - mov r1, r8 - strh r1, [r0] - adds r0, 0x2 - adds r1, r5, 0 - bl SetBagItemId -_080D6E20: - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0x93 - lsls r1, 3 - adds r0, r1 - adds r1, r7, 0 - movs r2, 0xC8 - bl memcpy - adds r0, r7, 0 - bl Free - movs r0, 0x1 -_080D6E3A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end AddPCItem - - thumb_func_start sub_80D6E48 -sub_80D6E48: @ 80D6E48 - push {lr} - lsls r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r2, =gSaveBlock1Ptr - ldr r2, [r2] - lsrs r0, 22 - adds r3, r2, r0 - ldr r0, =0x0000049a - adds r2, r3, r0 - ldrh r0, [r2] - subs r0, r1 - strh r0, [r2] - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080D6E76 - movs r2, 0x93 - lsls r2, 3 - adds r0, r3, r2 - strh r1, [r0] - bl sub_80D6E84 -_080D6E76: - pop {r0} - bx r0 - .pool - thumb_func_end sub_80D6E48 - - thumb_func_start sub_80D6E84 -sub_80D6E84: @ 80D6E84 - push {r4-r7,lr} - movs r2, 0 -_080D6E88: - adds r1, r2, 0x1 - lsls r0, r1, 16 - lsrs r4, r0, 16 - adds r6, r1, 0 - cmp r4, 0x31 - bhi _080D6ECA - ldr r0, =gSaveBlock1Ptr - mov r12, r0 - lsls r5, r2, 2 - movs r7, 0x93 - lsls r7, 3 -_080D6E9E: - mov r0, r12 - ldr r1, [r0] - adds r0, r1, r5 - adds r0, r7 - ldrh r0, [r0] - cmp r0, 0 - bne _080D6EC0 - movs r0, 0x93 - lsls r0, 3 - adds r1, r0 - adds r2, r1, r5 - ldr r3, [r2] - lsls r0, r4, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] - str r3, [r1] -_080D6EC0: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x31 - bls _080D6E9E -_080D6ECA: - lsls r0, r6, 16 - lsrs r2, r0, 16 - cmp r2, 0x30 - bls _080D6E88 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80D6E84 - - thumb_func_start sub_80D6EDC -sub_80D6EDC: @ 80D6EDC - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r2, =0x00000496 - adds r1, r0, r2 - ldrh r2, [r1] - ldr r3, =0x00000103 - cmp r2, r3 - beq _080D6F04 - movs r0, 0x88 - lsls r0, 1 - cmp r2, r0 - beq _080D6F0C - b _080D6F0E - .pool -_080D6F04: - movs r0, 0x88 - lsls r0, 1 - strh r0, [r1] - b _080D6F0E -_080D6F0C: - strh r3, [r1] -_080D6F0E: - pop {r0} - bx r0 - thumb_func_end sub_80D6EDC - - thumb_func_start BagGetItemIdByPocketPosition -@ int BagGetItemIdByPocketPosition(int pocket_id_plus_1, int item_index_in_pocket) -BagGetItemIdByPocketPosition: @ 80D6F14 - lsls r0, 24 - lsls r1, 16 - ldr r2, =gBagPockets - lsrs r0, 21 - subs r0, 0x8 - adds r0, r2 - ldr r0, [r0] - lsrs r1, 14 - adds r1, r0 - ldrh r0, [r1] - bx lr - .pool - thumb_func_end BagGetItemIdByPocketPosition - - thumb_func_start BagGetQuantityByPocketPosition -@ int BagGetQuantityByPocketPosition(int pocket_id_plus_1, int item_index_in_pocket) -BagGetQuantityByPocketPosition: @ 80D6F30 - push {lr} - lsls r0, 24 - lsls r1, 16 - ldr r2, =gBagPockets - lsrs r0, 21 - subs r0, 0x8 - adds r0, r2 - lsrs r1, 14 - ldr r0, [r0] - adds r0, r1 - adds r0, 0x2 - bl GetBagItemQuantity - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .pool - thumb_func_end BagGetQuantityByPocketPosition - - thumb_func_start swap32 -swap32: @ 80D6F58 - ldr r3, [r0] - ldr r2, [r1] - str r2, [r0] - str r3, [r1] - bx lr - thumb_func_end swap32 - - thumb_func_start sub_80D6F64 -sub_80D6F64: @ 80D6F64 - push {r4-r7,lr} - adds r6, r0, 0 - movs r3, 0 - b _080D6FA6 -_080D6F6C: - adds r1, r3, 0x1 - lsls r0, r1, 16 - lsrs r4, r0, 16 - adds r7, r1, 0 - cmp r4, r2 - bcs _080D6FA2 - lsls r5, r3, 2 -_080D6F7A: - ldr r0, [r6] - adds r0, r5 - adds r0, 0x2 - bl GetBagItemQuantity - lsls r0, 16 - cmp r0, 0 - bne _080D6F96 - ldr r1, [r6] - adds r0, r1, r5 - lsls r2, r4, 2 - adds r1, r2 - bl swap32 -_080D6F96: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrb r0, [r6, 0x4] - cmp r4, r0 - bcc _080D6F7A -_080D6FA2: - lsls r0, r7, 16 - lsrs r3, r0, 16 -_080D6FA6: - ldrb r2, [r6, 0x4] - subs r0, r2, 0x1 - cmp r3, r0 - blt _080D6F6C - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D6F64 - - thumb_func_start sub_80D6FB4 -sub_80D6FB4: @ 80D6FB4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - movs r3, 0 - b _080D701A -_080D6FC0: - adds r1, r3, 0x1 - lsls r0, r1, 16 - lsrs r5, r0, 16 - mov r8, r1 - cmp r5, r2 - bcs _080D7014 - lsls r7, r3, 2 -_080D6FCE: - ldr r0, [r6] - adds r0, r7 - adds r0, 0x2 - bl GetBagItemQuantity - lsls r0, 16 - lsls r4, r5, 2 - cmp r0, 0 - beq _080D6FFE - ldr r0, [r6] - adds r0, r4 - adds r0, 0x2 - bl GetBagItemQuantity - lsls r0, 16 - cmp r0, 0 - beq _080D7008 - ldr r0, [r6] - adds r1, r7, r0 - adds r0, r4, r0 - ldrh r1, [r1] - ldrh r0, [r0] - cmp r1, r0 - bls _080D7008 -_080D6FFE: - ldr r1, [r6] - adds r0, r1, r7 - adds r1, r4 - bl swap32 -_080D7008: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrb r0, [r6, 0x4] - cmp r5, r0 - bcc _080D6FCE -_080D7014: - mov r1, r8 - lsls r0, r1, 16 - lsrs r3, r0, 16 -_080D701A: - ldrb r2, [r6, 0x4] - subs r0, r2, 0x1 - cmp r3, r0 - blt _080D6FC0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80D6FB4 - - thumb_func_start sub_80D702C -sub_80D702C: @ 80D702C - push {r4-r6,lr} - adds r4, r0, 0 - adds r3, r2, 0 - cmp r1, r3 - beq _080D708C - lsls r0, r1, 2 - adds r0, r4 - ldr r6, [r0] - cmp r3, r1 - bls _080D7064 - subs r3, 0x1 - lsls r1, 16 - lsls r0, r3, 16 - asrs r2, r0, 16 - cmp r1, r0 - bge _080D7086 - adds r5, r2, 0 -_080D704E: - asrs r2, r1, 16 - lsls r0, r2, 2 - adds r0, r4 - ldr r1, [r0, 0x4] - str r1, [r0] - adds r2, 0x1 - lsls r1, r2, 16 - asrs r0, r1, 16 - cmp r0, r5 - blt _080D704E - b _080D7086 -_080D7064: - lsls r1, 16 - lsls r0, r3, 16 - asrs r2, r0, 16 - cmp r1, r0 - ble _080D7086 - adds r5, r2, 0 -_080D7070: - asrs r2, r1, 16 - lsls r1, r2, 2 - adds r1, r4 - subs r0, r1, 0x4 - ldr r0, [r0] - str r0, [r1] - subs r2, 0x1 - lsls r1, r2, 16 - asrs r0, r1, 16 - cmp r0, r5 - bgt _080D7070 -_080D7086: - lsls r0, r3, 2 - adds r0, r4 - str r6, [r0] -_080D708C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80D702C - - thumb_func_start ClearBag -ClearBag: @ 80D7094 - push {r4,r5,lr} - movs r4, 0 - ldr r5, =gBagPockets -_080D709A: - lsls r1, r4, 3 - adds r1, r5 - ldr r0, [r1] - ldrb r1, [r1, 0x4] - bl ClearItemSlots - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _080D709A - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ClearBag - - thumb_func_start CountTotalItemQuantityInBag -@ u16 CountTotalItemQuantityInBag(u16 itemId) -CountTotalItemQuantityInBag: @ 80D70BC - push {r4-r7,lr} - lsls r0, 16 - lsrs r6, r0, 16 - movs r7, 0 - adds r0, r6, 0 - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 21 - ldr r1, =gUnknown_02039DD0 - adds r5, r0, r1 - movs r4, 0 - ldrb r0, [r5, 0x4] - cmp r7, r0 - bcs _080D70FE -_080D70DA: - ldr r0, [r5] - lsls r1, r4, 2 - adds r1, r0 - ldrh r0, [r1] - cmp r0, r6 - bne _080D70F2 - adds r0, r1, 0x2 - bl GetBagItemQuantity - adds r0, r7, r0 - lsls r0, 16 - lsrs r7, r0, 16 -_080D70F2: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrb r0, [r5, 0x4] - cmp r4, r0 - bcc _080D70DA -_080D70FE: - adds r0, r7, 0 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end CountTotalItemQuantityInBag - - thumb_func_start CheckPyramidBagHasItem -CheckPyramidBagHasItem: @ 80D710C - push {r4,r5,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - ldr r1, =0x00000ca9 - adds r0, r3, r1 - ldrb r1, [r0] - lsls r1, 30 - lsrs r2, r1, 30 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - ldr r2, =0x00000e2c - adds r0, r2 - adds r2, r3, r0 - lsrs r1, 30 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - ldr r1, =0x00000e54 - adds r0, r1 - adds r3, r0 - movs r1, 0 -_080D7140: - lsls r0, r1, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r5 - bne _080D7170 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, r4 - bcs _080D715C - subs r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _080D7170 -_080D715C: - movs r0, 0x1 - b _080D717C - .pool -_080D7170: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9 - bls _080D7140 - movs r0, 0 -_080D717C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end CheckPyramidBagHasItem - - thumb_func_start CheckPyramidBagHasSpace -CheckPyramidBagHasSpace: @ 80D7184 - push {r4,r5,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - ldr r1, =0x00000ca9 - adds r0, r3, r1 - ldrb r1, [r0] - lsls r1, 30 - lsrs r2, r1, 30 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - ldr r2, =0x00000e2c - adds r0, r2 - adds r2, r3, r0 - lsrs r1, 30 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - ldr r1, =0x00000e54 - adds r0, r1 - adds r3, r0 - movs r1, 0 -_080D71B8: - lsls r0, r1, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r0, r5 - beq _080D71C6 - cmp r0, 0 - bne _080D71F0 -_080D71C6: - adds r0, r3, r1 - ldrb r0, [r0] - adds r0, r4 - cmp r0, 0x63 - ble _080D71DA - subs r0, 0x63 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _080D71F0 -_080D71DA: - movs r0, 0x1 - b _080D71FC - .pool -_080D71F0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x9 - bls _080D71B8 - movs r0, 0 -_080D71FC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end CheckPyramidBagHasSpace - - thumb_func_start AddPyramidBagItem -AddPyramidBagItem: @ 80D7204 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - ldr r1, =0x00000ca9 - adds r0, r3, r1 - ldrb r1, [r0] - lsls r1, 30 - lsrs r2, r1, 30 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - ldr r2, =0x00000e2c - adds r0, r2 - adds r0, r3 - mov r9, r0 - lsrs r1, 30 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - ldr r1, =0x00000e54 - adds r0, r1 - adds r3, r0 - mov r8, r3 - movs r0, 0x14 - bl Alloc - adds r5, r0, 0 - movs r0, 0xA - bl Alloc - adds r6, r0, 0 - adds r0, r5, 0 - mov r1, r9 - movs r2, 0x14 - bl memcpy - adds r0, r6, 0 - mov r1, r8 - movs r2, 0xA - bl memcpy - movs r2, 0 -_080D7266: - lsls r0, r2, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, r7 - bne _080D72AA - adds r1, r6, r2 - ldrb r0, [r1] - cmp r0, 0x62 - bhi _080D72AA - adds r0, r4 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x63 - bls _080D72A4 - ldrb r0, [r1] - subs r0, 0x63 - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0x63 - strb r0, [r1] - b _080D72A6 - .pool -_080D72A4: - movs r4, 0 -_080D72A6: - cmp r4, 0 - beq _080D7304 -_080D72AA: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9 - bls _080D7266 - cmp r4, 0 - beq _080D7304 - movs r2, 0 -_080D72BA: - lsls r0, r2, 1 - adds r1, r0, r5 - ldrh r0, [r1] - cmp r0, 0 - bne _080D72E6 - strh r7, [r1] - adds r1, r6, r2 - strb r4, [r1] - lsls r0, r4, 24 - lsrs r0, 24 - cmp r0, 0x63 - bls _080D72E0 - ldrb r0, [r1] - subs r0, 0x63 - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0x63 - strb r0, [r1] - b _080D72E2 -_080D72E0: - movs r4, 0 -_080D72E2: - cmp r4, 0 - beq _080D7304 -_080D72E6: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9 - bls _080D72BA - cmp r4, 0 - beq _080D7304 - adds r0, r5, 0 - bl Free - adds r0, r6, 0 - bl Free - movs r0, 0 - b _080D7326 -_080D7304: - mov r0, r9 - adds r1, r5, 0 - movs r2, 0x14 - bl memcpy - mov r0, r8 - adds r1, r6, 0 - movs r2, 0xA - bl memcpy - adds r0, r5, 0 - bl Free - adds r0, r6, 0 - bl Free - movs r0, 0x1 -_080D7326: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end AddPyramidBagItem - - thumb_func_start RemovePyramidBagItem -RemovePyramidBagItem: @ 80D7334 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - lsls r1, 16 - lsrs r4, r1, 16 - ldr r0, =gSaveBlock2Ptr - ldr r3, [r0] - ldr r1, =0x00000ca9 - adds r0, r3, r1 - ldrb r1, [r0] - lsls r1, 30 - lsrs r2, r1, 30 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 2 - ldr r2, =0x00000e2c - adds r0, r2 - adds r0, r3 - mov r8, r0 - lsrs r1, 30 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - ldr r1, =0x00000e54 - adds r0, r1 - adds r7, r3, r0 - ldr r1, =gUnknown_0203CF30 - ldrh r0, [r1, 0x8] - ldrh r1, [r1, 0x6] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - lsls r0, r2, 1 - mov r1, r8 - adds r3, r0, r1 - ldrh r0, [r3] - cmp r0, r9 - bne _080D73B4 - adds r1, r7, r2 - ldrb r0, [r1] - cmp r0, r4 - bcc _080D73B4 - subs r0, r4 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080D744C - strh r0, [r3] - b _080D744C - .pool -_080D73B4: - movs r0, 0x14 - bl Alloc - adds r5, r0, 0 - movs r0, 0xA - bl Alloc - adds r6, r0, 0 - adds r0, r5, 0 - mov r1, r8 - movs r2, 0x14 - bl memcpy - adds r0, r6, 0 - adds r1, r7, 0 - movs r2, 0xA - bl memcpy - movs r2, 0 -_080D73DA: - lsls r0, r2, 1 - adds r3, r0, r5 - ldrh r0, [r3] - cmp r0, r9 - bne _080D740E - adds r1, r6, r2 - ldrb r0, [r1] - cmp r0, r4 - bcc _080D73FC - subs r0, r4 - strb r0, [r1] - movs r4, 0 - lsls r0, 24 - cmp r0, 0 - bne _080D740A - strh r4, [r3] - b _080D740A -_080D73FC: - subs r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0 - strb r0, [r1] - movs r0, 0 - strh r0, [r3] -_080D740A: - cmp r4, 0 - beq _080D742C -_080D740E: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x9 - bls _080D73DA - cmp r4, 0 - beq _080D742C - adds r0, r5, 0 - bl Free - adds r0, r6, 0 - bl Free - movs r0, 0 - b _080D744E -_080D742C: - mov r0, r8 - adds r1, r5, 0 - movs r2, 0x14 - bl memcpy - adds r0, r7, 0 - adds r1, r6, 0 - movs r2, 0xA - bl memcpy - adds r0, r5, 0 - bl Free - adds r0, r6, 0 - bl Free -_080D744C: - movs r0, 0x1 -_080D744E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end RemovePyramidBagItem - - thumb_func_start SanitizeItemId -SanitizeItemId: @ 80D745C - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xBC - lsls r0, 1 - cmp r1, r0 - bhi _080D746E - adds r0, r1, 0 - b _080D7470 -_080D746E: - movs r0, 0 -_080D7470: - pop {r1} - bx r1 - thumb_func_end SanitizeItemId - - thumb_func_start ItemId_GetItem -@ item *ItemId_GetItem(s16 itemId) -ItemId_GetItem: @ 80D7474 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - ldr r1, =gItems - adds r0, r1 - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetItem - - thumb_func_start itemid_get_number -itemid_get_number: @ 80D7494 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - ldrh r0, [r0, 0xE] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end itemid_get_number - - thumb_func_start itemid_get_market_price -itemid_get_market_price: @ 80D74B8 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - ldrh r0, [r0, 0x10] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end itemid_get_market_price - - thumb_func_start ItemId_GetHoldEffect -ItemId_GetHoldEffect: @ 80D74DC - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x12] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetHoldEffect - - thumb_func_start ItemId_GetHoldEffectParam -ItemId_GetHoldEffectParam: @ 80D7500 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x13] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetHoldEffectParam - - thumb_func_start ItemId_GetDescription -ItemId_GetDescription: @ 80D7524 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r4, 0x14 - adds r0, r4 - ldr r0, [r0] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetDescription - - thumb_func_start itemid_is_unique -itemid_is_unique: @ 80D7548 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x18] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end itemid_is_unique - - thumb_func_start itemid_get_x19 -itemid_get_x19: @ 80D756C - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x19] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end itemid_get_x19 - - thumb_func_start ItemId_GetPocket -ItemId_GetPocket: @ 80D7590 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x1A] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetPocket - - thumb_func_start ItemId_GetType -ItemId_GetType: @ 80D75B4 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - ldrb r0, [r0, 0x1B] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetType - - thumb_func_start ItemId_GetFieldFunc -ItemId_GetFieldFunc: @ 80D75D8 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r4, 0x1C - adds r0, r4 - ldr r0, [r0] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetFieldFunc - - thumb_func_start ItemId_GetBattleUsage -ItemId_GetBattleUsage: @ 80D75FC - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - adds r0, 0x20 - ldrb r0, [r0] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetBattleUsage - - thumb_func_start ItemId_GetBattleFunc -ItemId_GetBattleFunc: @ 80D7620 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r4, 0x24 - adds r0, r4 - ldr r0, [r0] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetBattleFunc - - thumb_func_start ItemId_GetSecondaryId -ItemId_GetSecondaryId: @ 80D7644 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r4, =gItems - bl SanitizeItemId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2C - muls r0, r1 - adds r0, r4 - adds r0, 0x28 - ldrb r0, [r0] - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end ItemId_GetSecondaryId - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s index af4764d76..924e35b89 100644 --- a/asm/mauville_old_man.s +++ b/asm/mauville_old_man.s @@ -90,7 +90,7 @@ sub_8120128: @ 8120128 thumb_func_start sub_8120154 sub_8120154: @ 8120154 push {lr} - bl sub_81339F8 + bl TraderSetup pop {r0} bx r0 thumb_func_end sub_8120154 diff --git a/asm/party_menu.s b/asm/party_menu.s index 29e2e67a6..185d26109 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -15368,7 +15368,7 @@ sub_81B83F0: @ 81B83F0 lsls r0, r1, 24 lsrs r0, 24 movs r1, 0x1 - bl sub_80D6E48 + bl RemovePCItem b _081B8418 .pool _081B8410: diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 21647dfdf..111093bee 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -14810,7 +14810,7 @@ _080CF020: beq _080CF0AC ldr r3, =0x00000d65 adds r4, r3 - bl ItemId_GetItem + bl ItemId_GetName adds r1, r0, 0 adds r0, r4, 0 movs r2, 0 @@ -19057,7 +19057,7 @@ sub_80D12B8: @ 80D12B8 ldr r1, =0x00002234 adds r0, r1 ldrh r0, [r0] - bl ItemId_GetItem + bl ItemId_GetName pop {r1} bx r1 .pool diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 3b41afb55..c7f2ad085 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -4686,7 +4686,7 @@ sub_81C6648: @ 81C6648 .pool _081C667C: ldrh r0, [r5] - bl itemid_is_unique + bl ItemId_GetImportance lsls r0, 24 cmp r0, 0 bne _081C66A0 @@ -4799,7 +4799,7 @@ sub_81C674C: @ 81C674C .pool _081C677C: ldrh r0, [r5] - bl itemid_is_unique + bl ItemId_GetImportance lsls r0, 24 cmp r0, 0 bne _081C6790 diff --git a/asm/pokenav.s b/asm/pokenav.s index 47f350b29..9c42ed730 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -28718,8 +28718,8 @@ nullsub_2: @ 81D5C88 bx lr thumb_func_end nullsub_2 - thumb_func_start sub_81D5C8C -sub_81D5C8C: @ 81D5C8C + thumb_func_start PrintOnTrainerHillRecordsWindow +PrintOnTrainerHillRecordsWindow: @ 81D5C8C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -28857,7 +28857,7 @@ _081D5CD6: pop {r0} bx r0 .pool - thumb_func_end sub_81D5C8C + thumb_func_end PrintOnTrainerHillRecordsWindow thumb_func_start free_203F458 free_203F458: @ 81D5DF0 diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s index 3a7f41d0b..2ba5926aa 100644 --- a/asm/rom_8011DC0.s +++ b/asm/rom_8011DC0.s @@ -3181,7 +3181,7 @@ _08014138: adds r3, r1, r0 movs r0, 0x64 muls r0, r4 - ldr r1, =gUnknown_02039B58 + ldr r1, =gTrainerCards adds r0, r1 ldrb r2, [r5] adds r1, r3, 0 @@ -3278,8 +3278,8 @@ sub_8014210: @ 8014210 lsls r6, 16 lsrs r6, 16 bl HealPlayerParty - bl copy_player_party_to_sav1 - bl copy_bags_and_unk_data_from_save_blocks + bl SavePlayerParty + bl LoadPlayerBag ldr r5, =gLinkPlayers ldr r0, =0x00002211 str r0, [r5, 0x14] @@ -3646,8 +3646,8 @@ _080145F4: movs r1, 0x1 bl sub_80143E4 bl HealPlayerParty - bl copy_player_party_to_sav1 - bl copy_bags_and_unk_data_from_save_blocks + bl SavePlayerParty + bl LoadPlayerBag movs r0, 0x1 str r0, [sp] movs r0, 0x19 @@ -3659,8 +3659,8 @@ _080145F4: _08014620: bl overworld_free_bg_tilemaps bl HealPlayerParty - bl copy_player_party_to_sav1 - bl copy_bags_and_unk_data_from_save_blocks + bl SavePlayerParty + bl LoadPlayerBag ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 @@ -3675,8 +3675,8 @@ _08014620: _0801464C: bl overworld_free_bg_tilemaps bl HealPlayerParty - bl copy_player_party_to_sav1 - bl copy_bags_and_unk_data_from_save_blocks + bl SavePlayerParty + bl LoadPlayerBag ldr r0, =gBlockSendBuffer movs r1, 0x1 bl sub_80143E4 @@ -10615,7 +10615,7 @@ sub_8018220: @ 8018220 lsrs r0, 24 movs r1, 0x64 muls r1, r0 - ldr r0, =gUnknown_02039B58 + ldr r0, =gTrainerCards adds r1, r0 mov r8, r1 bl UnkTextUtil_Reset diff --git a/asm/shop.s b/asm/shop.s index ae60eb364..eac0956cb 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -790,7 +790,7 @@ BuyMenuPrintPriceInList: @ 80E0114 ldr r5, =gStringVar1 lsls r0, r1, 16 lsrs r0, 16 - bl itemid_get_market_price + bl ItemId_GetPrice adds r4, r0, 0 movs r0, 0x1 bl GetPriceReduction @@ -2017,7 +2017,7 @@ _080E0B32: bne _080E0B80 lsls r0, r5, 16 lsrs r0, 16 - bl itemid_get_market_price + bl ItemId_GetPrice adds r4, r0, 0 movs r0, 0x1 bl GetPriceReduction @@ -2259,7 +2259,7 @@ Task_BuyHowManyDialogueHandleInput: @ 80E0D88 cmp r0, 0x1 bne _080E0DF0 ldrh r0, [r5, 0xA] - bl itemid_get_market_price + bl ItemId_GetPrice adds r4, r0, 0 movs r0, 0x1 bl GetPriceReduction diff --git a/asm/trader.s b/asm/trader.s deleted file mode 100644 index a43f59402..000000000 --- a/asm/trader.s +++ /dev/null @@ -1,558 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_81339F8 -sub_81339F8: @ 81339F8 - push {r4-r6,lr} - ldr r0, =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, =0x00002e28 - adds r5, r1, r0 - movs r2, 0 - movs r0, 0x2 - strb r0, [r5] - ldr r0, =0x00002e59 - adds r1, r0 - strb r2, [r1] - movs r4, 0 - ldr r6, =gUnknown_085B09E4 -_08133A12: - movs r0, 0xB - muls r0, r4 - adds r0, 0x5 - adds r0, r5, r0 - lsls r1, r4, 2 - adds r1, r6 - ldr r1, [r1] - bl StringCopy - adds r1, r5, 0x1 - adds r1, r4 - ldr r0, =gUnknown_085B09F4 - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0 - adds r0, 0x32 - adds r0, r4 - movs r1, 0x2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _08133A12 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81339F8 - - thumb_func_start sub_8133A60 -sub_8133A60: @ 8133A60 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002e59 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - bx lr - .pool - thumb_func_end sub_8133A60 - - thumb_func_start sub_8133A78 -sub_8133A78: @ 8133A78 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks + 0x8 - adds r7, r1, r0 - ldr r0, =gSaveBlock1Ptr - ldr r4, [r0] - ldr r0, =0x00002e28 - adds r0, r4 - mov r9, r0 - ldr r0, =gUnknown_085B09F8 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0xC] - str r1, [sp, 0x10] - ldr r1, =gText_Exit - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - adds r6, r0, 0 - ldr r1, =gText_FiveMarks - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - mov r8, r0 - movs r5, 0 - ldr r0, =0x00002e29 - adds r4, r0 -_08133AC2: - mov r0, r9 - adds r0, 0x1 - adds r1, r0, r5 - ldrb r0, [r1] - cmp r0, 0x78 - bls _08133AF0 - mov r0, r8 - b _08133B00 - .pool -_08133AF0: - ldrb r1, [r1] - lsls r1, 5 - ldr r0, =gDecorations + 1 - adds r1, r0 - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth -_08133B00: - cmp r0, r6 - ble _08133B06 - adds r6, r0, 0 -_08133B06: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _08133AC2 - adds r0, r6, 0 - bl convert_pixel_width_to_tile_width - lsls r0, 24 - ldr r2, =0x00ffffff - ldr r1, [sp, 0xC] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0xC] - add r0, sp, 0xC - bl AddWindow - strh r0, [r7, 0x6] - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x85 - lsls r2, 2 - movs r1, 0 - movs r3, 0xE - bl SetWindowBorderStyle - movs r5, 0 -_08133B3C: - adds r1, r4, r5 - ldrb r0, [r1] - cmp r0, 0x78 - bls _08133B70 - ldrb r0, [r7, 0x6] - lsls r1, r5, 4 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gText_FiveMarks - movs r3, 0x8 - bl PrintTextOnWindow - b _08133B94 - .pool -_08133B70: - ldrb r0, [r7, 0x6] - ldrb r2, [r1] - lsls r2, 5 - ldr r1, =gDecorations + 1 - adds r2, r1 - lsls r1, r5, 4 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl PrintTextOnWindow -_08133B94: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _08133B3C - ldrb r0, [r7, 0x6] - ldr r2, =gText_Exit - lsls r1, r5, 4 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - movs r1, 0xFF - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl PrintTextOnWindow - ldrb r0, [r7, 0x6] - movs r1, 0x5 - movs r2, 0 - bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133A78 - - thumb_func_start sub_8133BE4 -sub_8133BE4: @ 8133BE4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r2, r1, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, =gTasks + 0x8 - adds r4, r0, r1 - cmp r2, 0x78 - bls _08133C14 - ldr r1, =gSpecialVar_0x8004 - ldr r2, =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] - b _08133C18 - .pool -_08133C14: - ldr r0, =gSpecialVar_0x8004 - strh r2, [r0] -_08133C18: - ldrb r0, [r4, 0x6] - movs r1, 0 - bl sub_8198070 - ldrb r0, [r4, 0x6] - bl ClearWindowTilemap - ldrb r0, [r4, 0x6] - bl RemoveWindow - movs r0, 0 - bl schedule_bg_copy_tilemap_to_vram - adds r0, r5, 0 - bl DestroyTask - bl EnableBothScriptContexts - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133BE4 - - thumb_func_start sub_8133C48 -sub_8133C48: @ 8133C48 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00002e28 - adds r6, r0, r1 - bl ProcessMenuInput - lsls r0, 24 - lsrs r4, r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08133C80 - cmp r1, r0 - bgt _08133C7C - subs r0, 0x1 - cmp r1, r0 - beq _08133CCA - b _08133C90 - .pool -_08133C7C: - cmp r1, 0x4 - bne _08133C90 -_08133C80: - movs r0, 0x5 - bl PlaySE - adds r0, r7, 0 - movs r1, 0 - bl sub_8133BE4 - b _08133CCA -_08133C90: - movs r0, 0x5 - bl PlaySE - ldr r0, =gSpecialVar_0x8005 - lsls r4, 24 - asrs r4, 24 - strh r4, [r0] - ldr r5, =gStringVar1 - movs r0, 0xB - adds r1, r4, 0 - muls r1, r0 - adds r1, 0x5 - adds r1, r6, r1 - adds r0, r5, 0 - bl StringCopy - adds r0, r6, 0 - adds r0, 0x32 - adds r0, r4 - ldrb r1, [r0] - adds r0, r5, 0 - bl ConvertInternationalString - adds r0, r6, 0x1 - adds r0, r4 - ldrb r1, [r0] - adds r0, r7, 0 - bl sub_8133BE4 -_08133CCA: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133C48 - - thumb_func_start sub_8133CD8 -sub_8133CD8: @ 8133CD8 - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =gSpecialVar_Result - ldr r2, =0x00002e59 - adds r0, r2 - ldrb r0, [r0] - strh r0, [r1] - bx lr - .pool - thumb_func_end sub_8133CD8 - - thumb_func_start sub_8133CF4 -sub_8133CF4: @ 8133CF4 - push {r4,r5,lr} - movs r4, 0 - ldr r5, =gSpecialVar_Result -_08133CFA: - adds r0, r4, 0 - bl CountDecorationCategoryN - lsls r0, 24 - cmp r0, 0 - beq _08133D10 - movs r0, 0 - strh r0, [r5] - b _08133D20 - .pool -_08133D10: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _08133CFA - ldr r1, =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] -_08133D20: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133CF4 - - thumb_func_start sub_8133D2C -sub_8133D2C: @ 8133D2C - push {r4-r6,lr} - ldr r6, =gSpecialVar_Result - movs r0, 0 - strh r0, [r6] - ldr r4, =gDecorations - ldr r5, =gSpecialVar_0x8004 - ldrh r0, [r5] - lsls r0, 5 - adds r2, r0, r4 - ldr r0, =gSpecialVar_0x8006 - ldrh r0, [r0] - lsls r0, 5 - adds r0, r4 - ldrb r1, [r2, 0x13] - ldrb r0, [r0, 0x13] - cmp r1, r0 - beq _08133D72 - adds r0, r1, 0 - bl GetFirstEmptyDecorSlot - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _08133D72 - ldr r0, =gStringVar2 - ldrh r1, [r5] - lsls r1, 5 - adds r1, r4 - ldrb r1, [r1, 0x13] - bl sub_8127250 - movs r0, 0x1 - strh r0, [r6] -_08133D72: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133D2C - - thumb_func_start sub_8133D8C -sub_8133D8C: @ 8133D8C - push {lr} - ldr r0, =sub_8127208 - movs r1, 0 - bl CreateTask - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133D8C - - thumb_func_start sub_8133DA0 -sub_8133DA0: @ 8133DA0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - bl IsSelectedDecorInThePC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08133DFC - ldr r5, =gSpecialVar_0x8006 - ldr r0, =gCurDecorationIndex - ldrb r1, [r0] - ldr r0, =gCurDecorInventoryItems - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5] - ldr r0, =gStringVar3 - ldr r1, =gSpecialVar_0x8004 - ldrh r1, [r1] - lsls r1, 5 - ldr r4, =gDecorations + 1 - adds r1, r4 - bl StringCopy - ldr r0, =gStringVar2 - ldrh r1, [r5] - lsls r1, 5 - adds r1, r4 - bl StringCopy - b _08133E04 - .pool -_08133DFC: - ldr r1, =gSpecialVar_0x8006 - ldr r2, =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] -_08133E04: - adds r0, r6, 0 - bl DestroyTask - bl EnableBothScriptContexts - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133DA0 - - thumb_func_start sub_8133E1C -sub_8133E1C: @ 8133E1C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gSpecialVar_0x8006 - movs r1, 0 - strh r1, [r2] - bl DestroyTask - bl EnableBothScriptContexts - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133E1C - - thumb_func_start sub_8133E38 -sub_8133E38: @ 8133E38 - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, =gSaveBlock1Ptr - ldr r6, [r0] - ldr r0, =0x00002e28 - adds r5, r6, r0 - ldr r1, =gSpecialVar_0x8006 - mov r8, r1 - ldrb r0, [r1] - bl DecorationRemove - ldr r0, =gSpecialVar_0x8004 - ldrb r0, [r0] - bl DecorationAdd - ldr r4, =gSpecialVar_0x8005 - ldrh r1, [r4] - movs r0, 0xB - muls r0, r1 - adds r0, 0x5 - adds r5, r0 - ldr r0, =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r5, 0 - bl StringCopy - ldr r2, =0x00002e29 - adds r0, r6, r2 - ldrh r1, [r4] - adds r0, r1 - mov r2, r8 - ldrh r1, [r2] - strb r1, [r0] - ldr r1, =0x00002e5a - adds r0, r6, r1 - ldrh r4, [r4] - adds r0, r4 - movs r1, 0x2 - strb r1, [r0] - ldr r2, =0x00002e59 - adds r6, r2 - movs r0, 0x1 - strb r0, [r6] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133E38 - - thumb_func_start sub_8133EC0 -sub_8133EC0: @ 8133EC0 - push {lr} - ldr r0, =sub_8133C48 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl sub_8133A78 - pop {r0} - bx r0 - .pool - thumb_func_end sub_8133EC0 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/trainer_card.s b/asm/trainer_card.s index a56dbd157..6d1be17cb 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -3894,7 +3894,7 @@ _080C48F6: sub_80C4904: @ 80C4904 lsls r0, 24 lsrs r0, 24 - ldr r2, =gUnknown_02039B58 + ldr r2, =gTrainerCards movs r1, 0x64 muls r0, r1 adds r0, r2 @@ -4578,7 +4578,7 @@ sub_80C4E74: @ 80C4E74 ldr r0, [r5] ldr r1, =0x00000534 adds r0, r1 - ldr r2, =gUnknown_02039B58 + ldr r2, =gTrainerCards movs r1, 0x64 muls r1, r4 adds r1, r2 diff --git a/common_syms/load_save.txt b/common_syms/load_save.txt new file mode 100644 index 000000000..2d3d9b802 --- /dev/null +++ b/common_syms/load_save.txt @@ -0,0 +1,4 @@ +gFlashMemoryPresent +gSaveBlock1Ptr +gSaveBlock2Ptr +gPokemonStoragePtr diff --git a/common_syms/random.txt b/common_syms/random.txt new file mode 100644 index 000000000..8037c6958 --- /dev/null +++ b/common_syms/random.txt @@ -0,0 +1,2 @@ +gRngValue +gRng2Value diff --git a/data/battle_records.s b/data/battle_records.s deleted file mode 100644 index 86dc9d8b9..000000000 --- a/data/battle_records.s +++ /dev/null @@ -1,37 +0,0 @@ - - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_085B3484:: @ 85B3484 - .incbin "graphics/unknown/unknown_5B3484.4bpp" - - .align 2 -gUnknown_085B3544:: @ 85B3544 - .incbin "graphics/unknown/unknown_5B3484.gbapal" - - .align 2 -gUnknown_085B3564:: @ 85B3564 - .incbin "graphics/unknown/unknown_5B3564.bin" - - .align 2 -gUnknown_085B3D64:: @ 85B3D64 - .4byte 0x000001f0, 0x000031e7 - - .align 2 -gUnknown_085B3D6C:: @ 85B3D6C - window_template 0x00, 0x02, 0x01, 0x1a, 0x12, 0x0f, 0x0014 - null_window_template - - .align 2 -gUnknown_085B3D7C:: @ 85B3D7C - window_template 0x00, 0x02, 0x01, 0x1a, 0x11, 0x0f, 0x0001 - -gUnknown_085B3D84:: @ 85B3D84 - .string "-------$" - -gUnknown_085B3D8C:: @ 85B3D8C - .string "----$" - diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index e5b330bf3..bd633a115 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -450,8 +450,8 @@ OldaleTown_PokemonCenter_2F_EventScript_276F60:: @ 8276F60 OldaleTown_PokemonCenter_2F_EventScript_276FBD:: @ 8276FBD special HealPlayerParty - special copy_player_party_to_sav1 - special copy_bags_and_unk_data_from_save_blocks + special SavePlayerParty + special LoadPlayerBag copyvar VAR_0x4087, VAR_0x8004 messageautoscroll OldaleTown_PokemonCenter_2F_Text_278197 waitmessage @@ -787,9 +787,9 @@ MossdeepCity_GameCorner_1F_Movement_277360: @ 8277360 gUnknown_08277365:: @ 8277365 lockall setvar VAR_0x8004, 0 - special sub_813C4BC + special ShowLinkBattleRecords waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattleArenaBattleRoom.inc b/data/scripts/maps/BattleFrontier_BattleArenaBattleRoom.inc index 52351b549..88a0f9989 100644 --- a/data/scripts/maps/BattleFrontier_BattleArenaBattleRoom.inc +++ b/data/scripts/maps/BattleFrontier_BattleArenaBattleRoom.inc @@ -136,8 +136,8 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_257630:: @ 8257630 applymovement 8, BattleFrontier_BattleArenaBattleRoom_Movement_257BEB waitmovement 0 msgbox BattleFrontier_BattleArenaBattleRoom_Text_257CE9, 4 - special copy_player_party_from_sav1 - special copy_player_party_to_sav1 + special LoadPlayerParty + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 diff --git a/data/scripts/maps/BattleFrontier_BattleArenaLobby.inc b/data/scripts/maps/BattleFrontier_BattleArenaLobby.inc index 303a2c4c9..176b153f7 100644 --- a/data/scripts/maps/BattleFrontier_BattleArenaLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattleArenaLobby.inc @@ -89,7 +89,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255D2B:: @ 8255D2B BattleFrontier_BattleArenaLobby_EventScript_255D59:: @ 8255D59 setvar VAR_0x8004, 8 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty special HealPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 0 @@ -134,7 +134,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255DF4:: @ 8255DF4 faceplayer setvar VAR_FRONTIER_FACILITY, 3 setvar VAR_0x40CE, 0 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox BattleFrontier_BattleArenaLobby_Text_256166, 4 BattleFrontier_BattleArenaLobby_EventScript_255E0B:: @ 8255E0B @@ -196,7 +196,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255EE8:: @ 8255EE8 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call BattleFrontier_BattleArenaLobby_EventScript_27134F @@ -205,7 +205,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255EE8:: @ 8255EE8 goto_eq BattleFrontier_BattleArenaLobby_EventScript_255FE1 BattleFrontier_BattleArenaLobby_EventScript_255F54:: @ 8255F54 - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -248,7 +248,7 @@ BattleFrontier_BattleArenaLobby_EventScript_255FE1:: @ 8255FE1 goto BattleFrontier_BattleArenaLobby_EventScript_255FFB BattleFrontier_BattleArenaLobby_EventScript_255FF8:: @ 8255FF8 - special copy_player_party_from_sav1 + special LoadPlayerParty BattleFrontier_BattleArenaLobby_EventScript_255FFB:: @ 8255FFB msgbox BattleFrontier_BattleArenaLobby_Text_25621F, 4 @@ -348,7 +348,7 @@ BattleFrontier_BattleArenaLobby_EventScript_256092:: @ 8256092 setvar VAR_0x8005, 3 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattleDomeLobby.inc b/data/scripts/maps/BattleFrontier_BattleDomeLobby.inc index 33b5654d0..f985606de 100644 --- a/data/scripts/maps/BattleFrontier_BattleDomeLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattleDomeLobby.inc @@ -76,7 +76,7 @@ BattleFrontier_BattleDomeLobby_EventScript_2498C9:: @ 82498C9 msgbox BattleFrontier_BattleDomeLobby_Text_241520, 9 message BattleFrontier_BattleDomeLobby_Text_24A5D6 waitmessage - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -94,7 +94,7 @@ BattleFrontier_BattleDomeLobby_EventScript_2498C9:: @ 82498C9 setvar VAR_0x8005, 1 setvar VAR_0x8006, 1 special sub_818E9AC - special copy_player_party_from_sav1 + special LoadPlayerParty special HealPlayerParty goto BattleFrontier_BattleDomeLobby_EventScript_249991 @@ -103,7 +103,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249940:: @ 8249940 msgbox BattleFrontier_BattleDomeLobby_Text_24A5BF, 4 message BattleFrontier_BattleDomeLobby_Text_24A5D6 waitmessage - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -117,7 +117,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249940:: @ 8249940 setvar VAR_0x8005, 6 setvar VAR_0x8006, 1 special sub_818E9AC - special copy_player_party_from_sav1 + special LoadPlayerParty special HealPlayerParty BattleFrontier_BattleDomeLobby_EventScript_249991:: @ 8249991 @@ -181,7 +181,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249A47:: @ 8249A47 end BattleFrontier_BattleDomeLobby_EventScript_249A59:: @ 8249A59 - special copy_player_party_to_sav1 + special SavePlayerParty compare VAR_0x40CE, 0 call_if 1, BattleFrontier_BattleDomeLobby_EventScript_249CFD compare VAR_0x40CE, 1 @@ -245,7 +245,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249B60:: @ 8249B60 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call BattleFrontier_BattleDomeLobby_EventScript_27134F @@ -256,7 +256,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249B60:: @ 8249B60 special sub_818E9AC BattleFrontier_BattleDomeLobby_EventScript_249BC2:: @ 8249BC2 - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -299,7 +299,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249C4A:: @ 8249C4A goto BattleFrontier_BattleDomeLobby_EventScript_249C64 BattleFrontier_BattleDomeLobby_EventScript_249C61:: @ 8249C61 - special copy_player_party_from_sav1 + special LoadPlayerParty BattleFrontier_BattleDomeLobby_EventScript_249C64:: @ 8249C64 msgbox BattleFrontier_BattleDomeLobby_Text_249F74, 4 @@ -415,7 +415,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249D52:: @ 8249D52 setvar VAR_0x8006, 0 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -426,7 +426,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249D6B:: @ 8249D6B setvar VAR_0x8006, 1 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattleDomePreBattleRoom.inc b/data/scripts/maps/BattleFrontier_BattleDomePreBattleRoom.inc index 5de099292..a9b6af7f7 100644 --- a/data/scripts/maps/BattleFrontier_BattleDomePreBattleRoom.inc +++ b/data/scripts/maps/BattleFrontier_BattleDomePreBattleRoom.inc @@ -243,7 +243,7 @@ BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5BE:: @ 824B5BE BattleFrontier_BattleDomePreBattleRoom_EventScript_24B5C7:: @ 824B5C7 setvar VAR_0x4000, 1 msgbox BattleFrontier_BattleDomePreBattleRoom_Text_24B760, 4 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 diff --git a/data/scripts/maps/BattleFrontier_BattleFactoryLobby.inc b/data/scripts/maps/BattleFrontier_BattleFactoryLobby.inc index 791a666d5..4a52743a5 100644 --- a/data/scripts/maps/BattleFrontier_BattleFactoryLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattleFactoryLobby.inc @@ -74,7 +74,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2584C6:: @ 82584C6 waitmessage setvar VAR_0x8004, 8 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 0 special sub_81A5E74 @@ -89,7 +89,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_258506:: @ 8258506 waitmessage setvar VAR_0x8004, 8 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 2 setvar VAR_0x8005, 2 setvar VAR_0x8006, 0 @@ -154,7 +154,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2585DD:: @ 82585DD end BattleFrontier_BattleFactoryLobby_EventScript_2585ED:: @ 82585ED - special copy_player_party_to_sav1 + special SavePlayerParty compare VAR_0x40CE, 0 call_if 1, BattleFrontier_BattleFactoryLobby_EventScript_2587B1 compare VAR_0x40CE, 1 @@ -215,7 +215,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2586B9:: @ 82586B9 setvar VAR_0x8006, 0 BattleFrontier_BattleFactoryLobby_EventScript_25871A:: @ 825871A - special copy_player_party_to_sav1 + special SavePlayerParty msgbox BattleFrontier_BattleFactoryLobby_Text_258CB1, 4 closemessage compare VAR_0x40CE, 0 @@ -253,7 +253,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_258783:: @ 8258783 goto BattleFrontier_BattleFactoryLobby_EventScript_25879D BattleFrontier_BattleFactoryLobby_EventScript_25879A:: @ 825879A - special copy_player_party_from_sav1 + special LoadPlayerParty BattleFrontier_BattleFactoryLobby_EventScript_25879D:: @ 825879D msgbox BattleFrontier_BattleFactoryLobby_Text_258BC5, 4 @@ -305,7 +305,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2587E1:: @ 82587E1 setvar VAR_0x8006, 0 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -316,7 +316,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2587FA:: @ 82587FA setvar VAR_0x8006, 1 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattleFactoryPreBattleRoom.inc b/data/scripts/maps/BattleFrontier_BattleFactoryPreBattleRoom.inc index 4c0528e34..2f5cdeef2 100644 --- a/data/scripts/maps/BattleFrontier_BattleFactoryPreBattleRoom.inc +++ b/data/scripts/maps/BattleFrontier_BattleFactoryPreBattleRoom.inc @@ -236,7 +236,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E47:: @ 8259E47 end BattleFrontier_BattleFactoryPreBattleRoom_EventScript_259E69:: @ 8259E69 - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 10 setvar VAR_0x8005, 0 special sub_81A5E74 diff --git a/data/scripts/maps/BattleFrontier_BattlePalaceBattleRoom.inc b/data/scripts/maps/BattleFrontier_BattlePalaceBattleRoom.inc index ccd285a3a..8393d7501 100644 --- a/data/scripts/maps/BattleFrontier_BattlePalaceBattleRoom.inc +++ b/data/scripts/maps/BattleFrontier_BattlePalaceBattleRoom.inc @@ -93,8 +93,8 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_24F911:: @ 824F911 applymovement 3, BattleFrontier_BattlePalaceBattleRoom_Movement_24FEAC waitmovement 0 msgbox BattleFrontier_BattlePalaceBattleRoom_Text_24FF00, 4 - special copy_player_party_from_sav1 - special copy_player_party_to_sav1 + special LoadPlayerParty + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 diff --git a/data/scripts/maps/BattleFrontier_BattlePalaceLobby.inc b/data/scripts/maps/BattleFrontier_BattlePalaceLobby.inc index 2e0f152b4..11fc42ced 100644 --- a/data/scripts/maps/BattleFrontier_BattlePalaceLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattlePalaceLobby.inc @@ -89,7 +89,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D873:: @ 824D873 BattleFrontier_BattlePalaceLobby_EventScript_24D8A1:: @ 824D8A1 setvar VAR_0x8004, 8 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty special HealPlayerParty setvar VAR_0x8004, 7 setvar VAR_0x8005, 0 @@ -152,7 +152,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24D968:: @ 824D968 special sub_8195960 compare VAR_RESULT, 0 goto_if 5, BattleFrontier_BattlePalaceLobby_EventScript_24D817 - special copy_player_party_to_sav1 + special SavePlayerParty compare VAR_0x40CE, 0 call_if 1, BattleFrontier_BattlePalaceLobby_EventScript_24DB9E compare VAR_0x40CE, 1 @@ -220,7 +220,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DA87:: @ 824DA87 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call BattleFrontier_BattlePalaceLobby_EventScript_27134F @@ -229,7 +229,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DA87:: @ 824DA87 goto_eq BattleFrontier_BattlePalaceLobby_EventScript_24DB7A BattleFrontier_BattlePalaceLobby_EventScript_24DAF3:: @ 824DAF3 - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -272,7 +272,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DB7A:: @ 824DB7A goto BattleFrontier_BattlePalaceLobby_EventScript_24DB94 BattleFrontier_BattlePalaceLobby_EventScript_24DB91:: @ 824DB91 - special copy_player_party_from_sav1 + special LoadPlayerParty BattleFrontier_BattlePalaceLobby_EventScript_24DB94:: @ 824DB94 msgbox BattleFrontier_BattlePalaceLobby_Text_24E0D8, 4 @@ -366,7 +366,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DC50:: @ 824DC50 setvar VAR_0x8006, 0 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -377,7 +377,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DC69:: @ 824DC69 setvar VAR_0x8006, 1 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattlePikeLobby.inc b/data/scripts/maps/BattleFrontier_BattlePikeLobby.inc index 40b5e437f..f78cec646 100644 --- a/data/scripts/maps/BattleFrontier_BattlePikeLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattlePikeLobby.inc @@ -76,7 +76,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B78D:: @ 825B78D setvar VAR_0x8005, 3 copyvar VAR_0x8006, VAR_RESULT special sub_81A703C - special copy_player_party_from_sav1 + special LoadPlayerParty special HealPlayerParty setvar VAR_0x8004, 27 special sub_81A703C @@ -107,7 +107,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B806:: @ 825B806 setvar VAR_0x8005, 4 setvar VAR_0x8006, 0 special sub_81A703C - special copy_player_party_from_sav1 + special LoadPlayerParty special HealPlayerParty setvar VAR_0x8004, 27 special sub_81A703C @@ -127,7 +127,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B868:: @ 825B868 faceplayer setvar VAR_FRONTIER_FACILITY, 5 setvar VAR_0x40CE, 0 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox BattleFrontier_BattlePikeLobby_Text_25BB52, 4 BattleFrontier_BattlePikeLobby_EventScript_25B87F:: @ 825B87F @@ -192,7 +192,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B95C:: @ 825B95C setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call BattleFrontier_BattlePikeLobby_EventScript_27134F @@ -201,7 +201,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25B95C:: @ 825B95C special sub_81A703C compare VAR_RESULT, 0 goto_eq BattleFrontier_BattlePikeLobby_EventScript_25BA5C - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -242,7 +242,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25BA5C:: @ 825BA5C goto BattleFrontier_BattlePikeLobby_EventScript_25BA76 BattleFrontier_BattlePikeLobby_EventScript_25BA73:: @ 825BA73 - special copy_player_party_from_sav1 + special LoadPlayerParty BattleFrontier_BattlePikeLobby_EventScript_25BA76:: @ 825BA76 msgbox BattleFrontier_BattlePikeLobby_Text_25BE02, 4 @@ -257,7 +257,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25BA80:: @ 825BA80 setvar VAR_0x8005, 5 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattlePikeThreePathRoom.inc b/data/scripts/maps/BattleFrontier_BattlePikeThreePathRoom.inc index 74da4c01c..d4723acc7 100644 --- a/data/scripts/maps/BattleFrontier_BattlePikeThreePathRoom.inc +++ b/data/scripts/maps/BattleFrontier_BattlePikeThreePathRoom.inc @@ -45,7 +45,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_25C8A4:: @ 825C8A4 setvar VAR_0x8006, 0 special sub_81A1780 setvar VAR_0x4000, 255 - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -136,7 +136,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_25C9FD:: @ 825C9FD special sub_81A1780 message BattleFrontier_BattlePikeThreePathRoom_Text_25CE08 waitmessage - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 8 setvar VAR_0x8005, 2 special sub_81A703C diff --git a/data/scripts/maps/BattleFrontier_BattlePyramidEmptySquare.inc b/data/scripts/maps/BattleFrontier_BattlePyramidEmptySquare.inc index b7dc59257..29485ef12 100644 --- a/data/scripts/maps/BattleFrontier_BattlePyramidEmptySquare.inc +++ b/data/scripts/maps/BattleFrontier_BattlePyramidEmptySquare.inc @@ -99,7 +99,7 @@ BattleFrontier_BattlePyramidEmptySquare_EventScript_252B8D:: @ 8252B8D setvar VAR_0x8004, 3 setvar VAR_0x8005, 1 special sub_81A8E7C - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 diff --git a/data/scripts/maps/BattleFrontier_BattlePyramidLobby.inc b/data/scripts/maps/BattleFrontier_BattlePyramidLobby.inc index 9455479a7..eab2bb18c 100644 --- a/data/scripts/maps/BattleFrontier_BattlePyramidLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattlePyramidLobby.inc @@ -67,7 +67,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA clearflag FLAG_SPECIAL_FLAG_0x4004 setvar VAR_0x8004, 8 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 14 special sub_81A8E7C special HealPlayerParty @@ -97,7 +97,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2507DA:: @ 82507DA BattleFrontier_BattlePyramidLobby_EventScript_250852:: @ 8250852 setvar VAR_0x8004, 8 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 14 special sub_81A8E7C special HealPlayerParty @@ -131,7 +131,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2508B1:: @ 82508B1 faceplayer setvar VAR_FRONTIER_FACILITY, 6 setvar VAR_0x40CE, 0 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox BattleFrontier_BattlePyramidLobby_Text_250F31, 4 BattleFrontier_BattlePyramidLobby_EventScript_2508C8:: @ 82508C8 @@ -197,7 +197,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2509A5:: @ 82509A5 special sub_81A8E7C setvar VAR_0x8004, 9 special sub_81A8E7C - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call BattleFrontier_BattlePyramidLobby_EventScript_27134F @@ -206,7 +206,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_2509A5:: @ 82509A5 goto_eq BattleFrontier_BattlePyramidLobby_EventScript_250AAA BattleFrontier_BattlePyramidLobby_EventScript_250A21:: @ 8250A21 - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -249,7 +249,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250AAA:: @ 8250AAA goto BattleFrontier_BattlePyramidLobby_EventScript_250AC4 BattleFrontier_BattlePyramidLobby_EventScript_250AC1:: @ 8250AC1 - special copy_player_party_from_sav1 + special LoadPlayerParty BattleFrontier_BattlePyramidLobby_EventScript_250AC4:: @ 8250AC4 msgbox BattleFrontier_BattlePyramidLobby_Text_250FE5, 4 @@ -428,7 +428,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250D42:: @ 8250D42 setvar VAR_0x8005, 6 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattlePyramidTop.inc b/data/scripts/maps/BattleFrontier_BattlePyramidTop.inc index 3ba3a5a6a..07e66efa8 100644 --- a/data/scripts/maps/BattleFrontier_BattlePyramidTop.inc +++ b/data/scripts/maps/BattleFrontier_BattlePyramidTop.inc @@ -72,7 +72,7 @@ BattleFrontier_BattlePyramidTop_EventScript_255193:: @ 8255193 setvar VAR_0x8004, 3 setvar VAR_0x8005, 1 special sub_81A8E7C - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 2 setvar VAR_0x8005, 0 setvar VAR_0x8006, 0 diff --git a/data/scripts/maps/BattleFrontier_BattleTowerBattleRoom2.inc b/data/scripts/maps/BattleFrontier_BattleTowerBattleRoom2.inc index feaa18c8d..ec2994591 100644 --- a/data/scripts/maps/BattleFrontier_BattleTowerBattleRoom2.inc +++ b/data/scripts/maps/BattleFrontier_BattleTowerBattleRoom2.inc @@ -153,7 +153,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_249118:: @ 8249118 delay 48 BattleFrontier_BattleTowerBattleRoom2_EventScript_249121:: @ 8249121 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 2 special sub_81A1780 diff --git a/data/scripts/maps/BattleFrontier_BattleTowerLobby.inc b/data/scripts/maps/BattleFrontier_BattleTowerLobby.inc index def3dd122..774507df9 100644 --- a/data/scripts/maps/BattleFrontier_BattleTowerLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattleTowerLobby.inc @@ -152,7 +152,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E84D:: @ 823E84D waitmessage setvar VAR_0x8004, 8 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty special HealPlayerParty setvar VAR_0x8004, 6 setvar VAR_0x8005, 0 @@ -240,7 +240,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23E936:: @ 823E936 lock faceplayer setvar VAR_FRONTIER_FACILITY, 0 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox BattleFrontier_BattleTowerLobby_Text_240537, 4 BattleFrontier_BattleTowerLobby_EventScript_23E948:: @ 823E948 @@ -299,7 +299,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EA2A:: @ 823EA2A setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call BattleFrontier_BattleTowerLobby_EventScript_27134F @@ -320,7 +320,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EA9F:: @ 823EA9F lock faceplayer setvar VAR_FRONTIER_FACILITY, 0 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox BattleFrontier_BattleTowerLobby_Text_2407E2, 4 BattleFrontier_BattleTowerLobby_EventScript_23EAB1:: @ 823EAB1 @@ -379,7 +379,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EB93:: @ 823EB93 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call BattleFrontier_BattleTowerLobby_EventScript_27134F @@ -401,7 +401,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EC08:: @ 823EC08 faceplayer setvar VAR_FRONTIER_FACILITY, 0 clearflag FLAG_0x152 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox BattleFrontier_BattleTowerLobby_Text_240A8B, 4 BattleFrontier_BattleTowerLobby_EventScript_23EC1D:: @ 823EC1D @@ -460,7 +460,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23ECFF:: @ 823ECFF setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call BattleFrontier_BattleTowerLobby_EventScript_27134F @@ -481,7 +481,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23ED74:: @ 823ED74 lock faceplayer setvar VAR_FRONTIER_FACILITY, 0 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox BattleFrontier_BattleTowerLobby_Text_240E15, 4 BattleFrontier_BattleTowerLobby_EventScript_23ED86:: @ 823ED86 @@ -540,7 +540,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EE68:: @ 823EE68 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 setvar VAR_0x8004, 6 @@ -636,7 +636,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFC7:: @ 823EFC7 setvar VAR_0x8006, 0 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -647,7 +647,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFE0:: @ 823EFE0 setvar VAR_0x8006, 1 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -658,7 +658,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFF9:: @ 823EFF9 setvar VAR_0x8006, 2 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -669,7 +669,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23F012:: @ 823F012 setvar VAR_0x8006, 3 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -722,7 +722,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23F0D0:: @ 823F0D0 end BattleFrontier_BattleTowerLobby_EventScript_23F0E3:: @ 823F0E3 - special copy_player_party_from_sav1 + special LoadPlayerParty BattleFrontier_BattleTowerLobby_EventScript_23F0E6:: @ 823F0E6 special CloseLink @@ -733,7 +733,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23F0F1:: @ 823F0F1 end BattleFrontier_BattleTowerLobby_EventScript_23F0F3:: @ 823F0F3 - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 call BattleFrontier_BattleTowerLobby_EventScript_23F272 special sub_81A1780 diff --git a/data/scripts/maps/BattleFrontier_RankingHall.inc b/data/scripts/maps/BattleFrontier_RankingHall.inc index b13bfe343..e469024e9 100644 --- a/data/scripts/maps/BattleFrontier_RankingHall.inc +++ b/data/scripts/maps/BattleFrontier_RankingHall.inc @@ -66,7 +66,7 @@ BattleFrontier_RankingHall_EventScript_25E522:: @ 825E522 waitbuttonpress special sub_81A4AE8 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/FallarborTown_BattleTentBattleRoom.inc b/data/scripts/maps/FallarborTown_BattleTentBattleRoom.inc index b4d0a5d9c..16cb9fff5 100644 --- a/data/scripts/maps/FallarborTown_BattleTentBattleRoom.inc +++ b/data/scripts/maps/FallarborTown_BattleTentBattleRoom.inc @@ -72,7 +72,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_20097E:: @ 820097E setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty warp FALLARBOR_TOWN_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @@ -103,8 +103,8 @@ FallarborTown_BattleTentBattleRoom_EventScript_2009B3:: @ 82009B3 applymovement 1, FallarborTown_BattleTentBattleRoom_Movement_200B94 waitmovement 0 msgbox FallarborTown_BattleTentBattleRoom_Text_257CE9, 4 - special copy_player_party_from_sav1 - special copy_player_party_to_sav1 + special LoadPlayerParty + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -157,7 +157,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_200AF3:: @ 8200AF3 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty warp FALLARBOR_TOWN_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate setvar VAR_0x8004, 1 diff --git a/data/scripts/maps/FallarborTown_BattleTentLobby.inc b/data/scripts/maps/FallarborTown_BattleTentLobby.inc index 347c55659..78a067a55 100644 --- a/data/scripts/maps/FallarborTown_BattleTentLobby.inc +++ b/data/scripts/maps/FallarborTown_BattleTentLobby.inc @@ -134,7 +134,7 @@ FallarborTown_BattleTentLobby_EventScript_200001:: @ 8200001 special sub_81B9B80 compare VAR_RESULT, 0 goto_if 5, FallarborTown_BattleTentLobby_EventScript_1FFF84 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox FallarborTown_BattleTentLobby_Text_2C47EB, 4 FallarborTown_BattleTentLobby_EventScript_200021:: @ 8200021 @@ -188,7 +188,7 @@ FallarborTown_BattleTentLobby_EventScript_2000E2:: @ 82000E2 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call FallarborTown_BattleTentLobby_EventScript_27134F @@ -197,7 +197,7 @@ FallarborTown_BattleTentLobby_EventScript_2000E2:: @ 82000E2 goto_eq FallarborTown_BattleTentLobby_EventScript_2001AB FallarborTown_BattleTentLobby_EventScript_20013C:: @ 820013C - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -234,7 +234,7 @@ FallarborTown_BattleTentLobby_EventScript_2001AB:: @ 82001AB goto FallarborTown_BattleTentLobby_EventScript_2001C5 FallarborTown_BattleTentLobby_EventScript_2001C2:: @ 82001C2 - special copy_player_party_from_sav1 + special LoadPlayerParty FallarborTown_BattleTentLobby_EventScript_2001C5:: @ 82001C5 msgbox FallarborTown_BattleTentLobby_Text_2C487F, 4 diff --git a/data/scripts/maps/LilycoveCity_ContestLobby.inc b/data/scripts/maps/LilycoveCity_ContestLobby.inc index beb96e171..4a7279fb2 100644 --- a/data/scripts/maps/LilycoveCity_ContestLobby.inc +++ b/data/scripts/maps/LilycoveCity_ContestLobby.inc @@ -554,7 +554,7 @@ LilycoveCity_ContestLobby_EventScript_21A77A:: @ 821A77A lockall special ShowBerryBlenderRecordWindow waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -564,7 +564,7 @@ LilycoveCity_ContestLobby_EventScript_21A784:: @ 821A784 setvar VAR_0x8005, 7 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/MauvilleCity_BikeShop.inc b/data/scripts/maps/MauvilleCity_BikeShop.inc index d4915a478..0231e5bde 100644 --- a/data/scripts/maps/MauvilleCity_BikeShop.inc +++ b/data/scripts/maps/MauvilleCity_BikeShop.inc @@ -58,7 +58,7 @@ MauvilleCity_BikeShop_EventScript_20EC6D:: @ 820EC6D MauvilleCity_BikeShop_EventScript_20EC87:: @ 820EC87 msgbox MauvilleCity_BikeShop_Text_20F1BD, 4 - special sub_80D6EDC + special SwapRegisteredBike release end diff --git a/data/scripts/maps/MossdeepCity_SpaceCenter_2F.inc b/data/scripts/maps/MossdeepCity_SpaceCenter_2F.inc index b23da6481..cee99c4d5 100644 --- a/data/scripts/maps/MossdeepCity_SpaceCenter_2F.inc +++ b/data/scripts/maps/MossdeepCity_SpaceCenter_2F.inc @@ -250,13 +250,13 @@ MossdeepCity_SpaceCenter_2F_EventScript_223FDA:: @ 8223FDA MossdeepCity_SpaceCenter_2F_EventScript_22400C:: @ 822400C applymovement VAR_LAST_TALKED, MossdeepCity_SpaceCenter_2F_Movement_2725AA waitmovement 0 - special copy_player_party_to_sav1 + special SavePlayerParty fadescreen 1 special sub_80F9438 waitstate compare VAR_RESULT, 0 goto_if 5, MossdeepCity_SpaceCenter_2F_EventScript_224032 - special copy_player_party_from_sav1 + special LoadPlayerParty goto MossdeepCity_SpaceCenter_2F_EventScript_223FDA MossdeepCity_SpaceCenter_2F_EventScript_224032:: @ 8224032 @@ -270,7 +270,7 @@ MossdeepCity_SpaceCenter_2F_EventScript_224032:: @ 8224032 waitstate setvar VAR_0x8004, 6 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty switch VAR_RESULT case 1, MossdeepCity_SpaceCenter_2F_EventScript_224071 fadescreen 1 diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc index 0da686052..c297d61a7 100644 --- a/data/scripts/maps/PetalburgCity.inc +++ b/data/scripts/maps/PetalburgCity.inc @@ -30,7 +30,7 @@ PetalburgCity_MapScript2_1DC31C: @ 81DC31C PetalburgCity_EventScript_1DC32E:: @ 81DC32E lockall - special copy_player_party_to_sav1 + special SavePlayerParty special PutZigzagoonInPlayerParty applymovement 2, PetalburgCity_Movement_1DC451 applymovement 255, PetalburgCity_Movement_1DC430 @@ -47,7 +47,7 @@ PetalburgCity_EventScript_1DC32E:: @ 81DC32E setvar VAR_0x4057, 3 fadedefaultbgm clearflag FLAG_SPECIAL_FLAG_0x4001 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x4085, 1 warp PETALBURG_CITY_GYM, 255, 4, 108 waitstate diff --git a/data/scripts/maps/SlateportCity_BattleTentBattleRoom.inc b/data/scripts/maps/SlateportCity_BattleTentBattleRoom.inc index e0c6da76c..e52828a19 100644 --- a/data/scripts/maps/SlateportCity_BattleTentBattleRoom.inc +++ b/data/scripts/maps/SlateportCity_BattleTentBattleRoom.inc @@ -67,7 +67,7 @@ SlateportCity_BattleTentCorridor_EventScript_209A1B:: @ 8209A1B setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty warp SLATEPORT_CITY_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @@ -93,7 +93,7 @@ SlateportCity_BattleTentCorridor_EventScript_209A7B:: @ 8209A7B setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty warp SLATEPORT_CITY_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @ forced stop diff --git a/data/scripts/maps/SlateportCity_BattleTentCorridor.inc b/data/scripts/maps/SlateportCity_BattleTentCorridor.inc index 6a0bafb45..b293dc140 100644 --- a/data/scripts/maps/SlateportCity_BattleTentCorridor.inc +++ b/data/scripts/maps/SlateportCity_BattleTentCorridor.inc @@ -140,7 +140,7 @@ SlateportCity_BattleTentCorridor_EventScript_209022:: @ 8209022 end SlateportCity_BattleTentCorridor_EventScript_209044:: @ 8209044 - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 10 setvar VAR_0x8005, 0 special sub_81A5E74 diff --git a/data/scripts/maps/SlateportCity_BattleTentLobby.inc b/data/scripts/maps/SlateportCity_BattleTentLobby.inc index ca51ab57e..e5f510179 100644 --- a/data/scripts/maps/SlateportCity_BattleTentLobby.inc +++ b/data/scripts/maps/SlateportCity_BattleTentLobby.inc @@ -122,7 +122,7 @@ SlateportCity_BattleTentLobby_EventScript_2088AA:: @ 82088AA special sub_81B9D08 compare VAR_RESULT, 0 goto_if 5, SlateportCity_BattleTentLobby_EventScript_2087E9 - special copy_player_party_to_sav1 + special SavePlayerParty msgbox SlateportCity_BattleTentLobby_Text_2C5810, 4 SlateportCity_BattleTentLobby_EventScript_2088CA:: @ 82088CA @@ -228,7 +228,7 @@ SlateportCity_BattleTentLobby_EventScript_208A14:: @ 8208A14 goto SlateportCity_BattleTentLobby_EventScript_208A2E SlateportCity_BattleTentLobby_EventScript_208A2B:: @ 8208A2B - special copy_player_party_from_sav1 + special LoadPlayerParty SlateportCity_BattleTentLobby_EventScript_208A2E:: @ 8208A2E msgbox SlateportCity_BattleTentLobby_Text_2C5AA5, 4 diff --git a/data/scripts/maps/SootopolisCity_MysteryEventsHouse_1F.inc b/data/scripts/maps/SootopolisCity_MysteryEventsHouse_1F.inc index 019bdce10..eaca36e59 100644 --- a/data/scripts/maps/SootopolisCity_MysteryEventsHouse_1F.inc +++ b/data/scripts/maps/SootopolisCity_MysteryEventsHouse_1F.inc @@ -45,7 +45,7 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_2279B7:: @ 82279B7 call_if 1, SootopolisCity_MysteryEventsHouse_1F_EventScript_227A0D compare VAR_0x40C0, 3 call_if 1, SootopolisCity_MysteryEventsHouse_1F_EventScript_227A16 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x40C0, 0 releaseall end @@ -90,7 +90,7 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_227A4E:: @ 8227A4E end SootopolisCity_MysteryEventsHouse_1F_EventScript_227A58:: @ 8227A58 - special copy_player_party_to_sav1 + special SavePlayerParty special sub_8139238 msgbox SootopolisCity_MysteryEventsHouse_1F_Text_227BFC, 5 compare VAR_RESULT, 0 @@ -101,11 +101,11 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_227A58:: @ 8227A58 msgbox SootopolisCity_MysteryEventsHouse_1F_Text_227CEB, 5 compare VAR_RESULT, 0 goto_eq SootopolisCity_MysteryEventsHouse_1F_EventScript_227AE2 - special copy_player_party_from_sav1 + special LoadPlayerParty call SootopolisCity_MysteryEventsHouse_1F_EventScript_27134F compare VAR_RESULT, 0 goto_eq SootopolisCity_MysteryEventsHouse_1F_EventScript_227AE2 - special copy_player_party_to_sav1 + special SavePlayerParty special sub_80F94E8 msgbox SootopolisCity_MysteryEventsHouse_1F_Text_227D21, 4 closemessage @@ -121,7 +121,7 @@ SootopolisCity_MysteryEventsHouse_1F_EventScript_227A58:: @ 8227A58 end SootopolisCity_MysteryEventsHouse_1F_EventScript_227AE2:: @ 8227AE2 - special copy_player_party_from_sav1 + special LoadPlayerParty msgbox SootopolisCity_MysteryEventsHouse_1F_Text_227C44, 4 release end diff --git a/data/scripts/maps/SootopolisCity_MysteryEventsHouse_B1F.inc b/data/scripts/maps/SootopolisCity_MysteryEventsHouse_B1F.inc index 78c7303ae..0dec00967 100644 --- a/data/scripts/maps/SootopolisCity_MysteryEventsHouse_B1F.inc +++ b/data/scripts/maps/SootopolisCity_MysteryEventsHouse_B1F.inc @@ -32,7 +32,7 @@ SootopolisCity_MysteryEventsHouse_B1F_EventScript_227E68:: @ 8227E68 special HealPlayerParty applymovement 255, SootopolisCity_MysteryEventsHouse_B1F_Movement_227EF9 waitmovement 0 - special copy_player_party_from_sav1 + special LoadPlayerParty setvar VAR_0x4001, 1 warp SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F, 255, 3, 1 waitstate diff --git a/data/scripts/maps/TrainerHill_Entrance.inc b/data/scripts/maps/TrainerHill_Entrance.inc index 77b67fb14..eb12efb4b 100644 --- a/data/scripts/maps/TrainerHill_Entrance.inc +++ b/data/scripts/maps/TrainerHill_Entrance.inc @@ -236,7 +236,7 @@ TrainerHill_Entrance_Movement_268385: @ 8268385 TrainerHill_Entrance_EventScript_268388:: @ 8268388 lockall fadescreen 1 - special sub_813C904 + special ShowTrainerHillRecords waitstate releaseall end diff --git a/data/scripts/maps/VerdanturfTown_BattleTentBattleRoom.inc b/data/scripts/maps/VerdanturfTown_BattleTentBattleRoom.inc index b673e959b..ad2749ba8 100644 --- a/data/scripts/maps/VerdanturfTown_BattleTentBattleRoom.inc +++ b/data/scripts/maps/VerdanturfTown_BattleTentBattleRoom.inc @@ -59,7 +59,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_2023AA:: @ 82023AA setvar VAR_0x8005, 0 setvar VAR_0x8006, 4 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty warp VERDANTURF_TOWN_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate @@ -81,8 +81,8 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_2023C8:: @ 82023C8 applymovement 1, VerdanturfTown_BattleTentBattleRoom_Movement_2725A6 waitmovement 0 msgbox VerdanturfTown_BattleTentBattleRoom_Text_24FF00, 4 - special copy_player_party_from_sav1 - special copy_player_party_to_sav1 + special LoadPlayerParty + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -132,7 +132,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_202501:: @ 8202501 setvar VAR_0x8005, 0 setvar VAR_0x8006, 3 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty warp VERDANTURF_TOWN_BATTLE_TENT_LOBBY, 255, 6, 6 waitstate diff --git a/data/scripts/maps/VerdanturfTown_BattleTentLobby.inc b/data/scripts/maps/VerdanturfTown_BattleTentLobby.inc index a7f496820..6f1624a2d 100644 --- a/data/scripts/maps/VerdanturfTown_BattleTentLobby.inc +++ b/data/scripts/maps/VerdanturfTown_BattleTentLobby.inc @@ -135,7 +135,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201873:: @ 8201873 special sub_81B99B4 compare VAR_RESULT, 0 goto_if 5, VerdanturfTown_BattleTentLobby_EventScript_2017EE - special copy_player_party_to_sav1 + special SavePlayerParty msgbox VerdanturfTown_BattleTentLobby_Text_2C50C3, 4 VerdanturfTown_BattleTentLobby_EventScript_201893:: @ 8201893 @@ -189,7 +189,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201954:: @ 8201954 setvar VAR_0x8005, 3 setvar VAR_0x8006, 0 special sub_81A1780 - special copy_player_party_from_sav1 + special LoadPlayerParty closemessage delay 2 call VerdanturfTown_BattleTentLobby_EventScript_27134F @@ -198,7 +198,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201954:: @ 8201954 goto_eq VerdanturfTown_BattleTentLobby_EventScript_201A1D VerdanturfTown_BattleTentLobby_EventScript_2019AE:: @ 82019AE - special copy_player_party_to_sav1 + special SavePlayerParty setvar VAR_0x8004, 3 setvar VAR_0x8005, 3 special sub_81A1780 @@ -235,7 +235,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201A1D:: @ 8201A1D goto VerdanturfTown_BattleTentLobby_EventScript_201A37 VerdanturfTown_BattleTentLobby_EventScript_201A34:: @ 8201A34 - special copy_player_party_from_sav1 + special LoadPlayerParty VerdanturfTown_BattleTentLobby_EventScript_201A37:: @ 8201A37 msgbox VerdanturfTown_BattleTentLobby_Text_2C539A, 4 diff --git a/data/scripts/mauville_man.inc b/data/scripts/mauville_man.inc index 2e00ee702..917e2cf89 100644 --- a/data/scripts/mauville_man.inc +++ b/data/scripts/mauville_man.inc @@ -157,7 +157,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_28E4D4:: @ 828E4D4 msgbox MauvilleCity_PokemonCenter_1F_Text_28E1B1, 5 compare VAR_RESULT, 0 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E503 - special sub_8133CD8 + special ScrSpecial_GetTraderTradedFlag compare VAR_RESULT, 1 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E50D message MauvilleCity_PokemonCenter_1F_Text_28E23F @@ -176,7 +176,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_28E50D:: @ 828E50D end MauvilleCity_PokemonCenter_1F_EventScript_28E517:: @ 828E517 - special sub_8133EC0 + special ScrSpecial_TraderMenuGetDecoration waitstate compare VAR_0x8004, 0 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E558 @@ -185,7 +185,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_28E517:: @ 828E517 msgbox MauvilleCity_PokemonCenter_1F_Text_28E2A9, 5 compare VAR_RESULT, 0 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E56E - special sub_8133CF4 + special ScrSpecial_DoesPlayerHaveNoDecorations compare VAR_RESULT, 1 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E57A goto MauvilleCity_PokemonCenter_1F_EventScript_28E584 @@ -215,19 +215,19 @@ MauvilleCity_PokemonCenter_1F_EventScript_28E57A:: @ 828E57A MauvilleCity_PokemonCenter_1F_EventScript_28E584:: @ 828E584 msgbox MauvilleCity_PokemonCenter_1F_Text_28E323, 4 - special sub_8133D8C + special ScrSpecial_TraderMenuGiveDecoration waitstate compare VAR_0x8006, 0 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E5D4 compare VAR_0x8006, 65535 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E5DE - special sub_8133D2C + special ScrSpecial_IsDecorationFull compare VAR_RESULT, 1 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E5EC msgbox MauvilleCity_PokemonCenter_1F_Text_28E3C4, 5 compare VAR_RESULT, 0 goto_eq MauvilleCity_PokemonCenter_1F_EventScript_28E584 - special sub_8133E38 + special ScrSpecial_TraderDoDecorationTrade msgbox MauvilleCity_PokemonCenter_1F_Text_28E424, 4 release end diff --git a/data/specials.inc b/data/specials.inc index 2290c9d21..740ed3f2e 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -48,8 +48,8 @@ gSpecials:: @ 81DBA64 def_special sub_80B2FD8 def_special GetLinkPartnerNames def_special SpawnLinkPartnerFieldObject - def_special copy_player_party_to_sav1 - def_special copy_player_party_from_sav1 + def_special SavePlayerParty + def_special LoadPlayerParty def_special sub_80F9438 def_special sp02A_crash_sound def_special FieldObjectInteractionGetBerryTreeData @@ -124,12 +124,12 @@ gSpecials:: @ 81DBA64 def_special sub_81213D8 def_special sub_8121450 def_special sub_8121424 - def_special sub_8133EC0 - def_special sub_8133CD8 - def_special sub_8133CF4 - def_special sub_8133D2C - def_special sub_8133D8C - def_special sub_8133E38 + def_special ScrSpecial_TraderMenuGetDecoration + def_special ScrSpecial_GetTraderTradedFlag + def_special ScrSpecial_DoesPlayerHaveNoDecorations + def_special ScrSpecial_IsDecorationFull + def_special ScrSpecial_TraderMenuGiveDecoration + def_special ScrSpecial_TraderDoDecorationTrade def_special GetSeedotSizeRecordInfo def_special CompareSeedotSize def_special GetLotadSizeRecordInfo @@ -141,7 +141,7 @@ gSpecials:: @ 81DBA64 def_special TrendyPhraseIsOld def_special sub_811EF6C def_special GetDewfordHallPaintingNameIndex - def_special sub_80D6EDC + def_special SwapRegisteredBike def_special CalculatePlayerPartyCount def_special CountPartyNonEggMons def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot @@ -207,7 +207,7 @@ gSpecials:: @ 81DBA64 def_special ScriptHatchMon def_special EggHatch def_special sub_8071614 - def_special sub_813C4BC + def_special ShowLinkBattleRecords def_special IsEnoughForCostInVar0x8005 def_special SubtractMoneyFromVar0x8005 def_special sub_80F972C @@ -341,7 +341,7 @@ gSpecials:: @ 81DBA64 def_special sub_81B98DC def_special nullsub_54 def_special sub_80E9B70 - def_special copy_bags_and_unk_data_from_save_blocks + def_special LoadPlayerBag def_special sub_80B05B4 def_special sub_8139754 def_special sub_813970C @@ -526,12 +526,12 @@ gSpecials:: @ 81DBA64 def_special sub_8139ED0 def_special sub_813B968 def_special sub_80F8B94 - def_special sub_813C904 + def_special ShowTrainerHillRecords def_special sub_80B4808 def_special sub_813B9A0 def_special sub_81B9918 def_special sub_80722E0 def_special sub_80B45D0 - def_special sub_813C5A0 + def_special RemoveRecordsWindow def_special sub_8139C10 def_special sub_80B3BC4 diff --git a/data/trader.s b/data/trader.s deleted file mode 100644 index 1fe929ae7..000000000 --- a/data/trader.s +++ /dev/null @@ -1,22 +0,0 @@ - - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_085B09E4:: @ 85B09E4 - .4byte gText_Tristan - .4byte gText_Philip - .4byte gText_Dennis - .4byte gText_Roberto - - .align 2 -gUnknown_085B09F4:: @ 85B09F4 - .byte 0x5b, 0x6b, 0x25, 0x15 - - .align 2 -gUnknown_085B09F8:: @ 85B09F8 - .4byte 0x0a010100, 0x00010f0a - - diff --git a/include/battle_records.h b/include/battle_records.h new file mode 100644 index 000000000..88ff6adc9 --- /dev/null +++ b/include/battle_records.h @@ -0,0 +1,12 @@ +#ifndef GUARD_BATTLE_RECORDS_H +#define GUARD_BATTLE_RECORDS_H + +extern u8 gRecordsWindowId; + +void ClearPlayerLinkBattleRecords(void); +void UpdatePlayerLinkBattleRecords(s32 battlerId); +void ShowLinkBattleRecords(void); +void RemoveRecordsWindow(void); +void ShowTrainerHillRecords(void); + +#endif // GUARD_BATTLE_RECORDS_H diff --git a/include/bg.h b/include/bg.h index de3897fa4..ea84c1573 100644 --- a/include/bg.h +++ b/include/bg.h @@ -68,7 +68,7 @@ void UnsetBgTilemapBuffer(u8 bg); void* GetBgTilemapBuffer(u8 bg); void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset); void CopyBgTilemapBufferToVram(u8 bg); -void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height); +void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height); void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette); void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2); void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height); diff --git a/include/constants/decorations.h b/include/constants/decorations.h index 2e3558721..b9f626d24 100644 --- a/include/constants/decorations.h +++ b/include/constants/decorations.h @@ -122,5 +122,6 @@ #define DECOR_REGIROCK_DOLL 118 #define DECOR_REGICE_DOLL 119 #define DECOR_REGISTEEL_DOLL 120 +#define NUM_DECORATIONS DECOR_REGISTEEL_DOLL #endif // GUARD_CONSTANTS_DECORATIONS_H diff --git a/include/constants/items.h b/include/constants/items.h index a1269414f..4ca5cb7df 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -1,12 +1,6 @@ #ifndef GUARD_CONSTANTS_ITEMS_H #define GUARD_CONSTANTS_ITEMS_H -#define POCKET_ITEMS 1 -#define POCKET_POKE_BALLS 2 -#define POCKET_TM_HM 3 -#define POCKET_BERRIES 4 -#define POCKET_KEY_ITEMS 5 - #define ITEM_NONE 0 // Balls @@ -23,7 +17,7 @@ #define ITEM_LUXURY_BALL 11 #define ITEM_PREMIER_BALL 12 -// Medicine +// Pokemon Items #define ITEM_POTION 13 #define ITEM_ANTIDOTE 14 #define ITEM_BURN_HEAL 15 @@ -57,15 +51,12 @@ #define ITEM_WHITE_FLUTE 43 #define ITEM_BERRY_JUICE 44 #define ITEM_SACRED_ASH 45 - -// Collectibles #define ITEM_SHOAL_SALT 46 #define ITEM_SHOAL_SHELL 47 #define ITEM_RED_SHARD 48 #define ITEM_BLUE_SHARD 49 #define ITEM_YELLOW_SHARD 50 #define ITEM_GREEN_SHARD 51 - #define ITEM_034 52 #define ITEM_035 53 #define ITEM_036 54 @@ -77,8 +68,6 @@ #define ITEM_03C 60 #define ITEM_03D 61 #define ITEM_03E 62 - -// Vitamins #define ITEM_HP_UP 63 #define ITEM_PROTEIN 64 #define ITEM_IRON 65 @@ -88,10 +77,7 @@ #define ITEM_PP_UP 69 #define ITEM_ZINC 70 #define ITEM_PP_MAX 71 - #define ITEM_048 72 - -// Battle items #define ITEM_GUARD_SPEC 73 #define ITEM_DIRE_HIT 74 #define ITEM_X_ATTACK 75 @@ -101,36 +87,29 @@ #define ITEM_X_SPECIAL 79 #define ITEM_POKE_DOLL 80 #define ITEM_FLUFFY_TAIL 81 - #define ITEM_052 82 - -// Field items #define ITEM_SUPER_REPEL 83 #define ITEM_MAX_REPEL 84 #define ITEM_ESCAPE_ROPE 85 #define ITEM_REPEL 86 - #define ITEM_057 87 #define ITEM_058 88 #define ITEM_059 89 #define ITEM_05A 90 #define ITEM_05B 91 #define ITEM_05C 92 - -//Evolution stones #define ITEM_SUN_STONE 93 #define ITEM_MOON_STONE 94 #define ITEM_FIRE_STONE 95 #define ITEM_THUNDER_STONE 96 #define ITEM_WATER_STONE 97 #define ITEM_LEAF_STONE 98 - #define ITEM_063 99 #define ITEM_064 100 #define ITEM_065 101 #define ITEM_066 102 -//Valuable items +// Unusable #define ITEM_TINY_MUSHROOM 103 #define ITEM_BIG_MUSHROOM 104 #define ITEM_069 105 @@ -140,7 +119,6 @@ #define ITEM_STAR_PIECE 109 #define ITEM_NUGGET 110 #define ITEM_HEART_SCALE 111 - #define ITEM_070 112 #define ITEM_071 113 #define ITEM_072 114 @@ -151,7 +129,7 @@ #define ITEM_077 119 #define ITEM_078 120 -// Mail +// Mails #define ITEM_ORANGE_MAIL 121 #define ITEM_HARBOR_MAIL 122 #define ITEM_GLITTER_MAIL 123 @@ -165,7 +143,7 @@ #define ITEM_FAB_MAIL 131 #define ITEM_RETRO_MAIL 132 -//Berries +// Berries #define ITEM_CHERI_BERRY 133 #define ITEM_CHESTO_BERRY 134 #define ITEM_PECHA_BERRY 135 @@ -209,12 +187,11 @@ #define ITEM_LANSAT_BERRY 173 #define ITEM_STARF_BERRY 174 #define ITEM_ENIGMA_BERRY 175 - #define ITEM_0B0 176 #define ITEM_0B1 177 #define ITEM_0B2 178 -// Hold items +// Battle Held items #define ITEM_BRIGHT_POWDER 179 #define ITEM_WHITE_HERB 180 #define ITEM_MACHO_BRACE 181 @@ -262,7 +239,6 @@ #define ITEM_METAL_POWDER 223 #define ITEM_THICK_CLUB 224 #define ITEM_STICK 225 - #define ITEM_0E2 226 #define ITEM_0E3 227 #define ITEM_0E4 228 @@ -292,6 +268,7 @@ #define ITEM_0FC 252 #define ITEM_0FD 253 +// Contest held items #define ITEM_RED_SCARF 254 #define ITEM_BLUE_SCARF 255 #define ITEM_PINK_SCARF 256 @@ -449,10 +426,11 @@ #define ITEM_HM07_WATERFALL ITEM_HM07 #define ITEM_HM08_DIVE ITEM_HM08 +// Unknown #define ITEM_15B 347 #define ITEM_15C 348 -// FireRed/LeafGreen key items +// FireRed/LeafGreen #define ITEM_OAKS_PARCEL 349 #define ITEM_POKE_FLUTE 350 #define ITEM_SECRET_KEY 351 @@ -480,7 +458,7 @@ #define ITEM_RUBY 373 #define ITEM_SAPPHIRE 374 -// Emerald-specific key items +// Emerald #define ITEM_MAGMA_EMBLEM 375 #define ITEM_OLD_SEA_MAP 376 diff --git a/include/decoration.h b/include/decoration.h index a51d9ccce..76b2f2ec4 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -70,5 +70,8 @@ void sub_8126968(void); void sub_8126AD8(u8 taskId); void sub_8127D38(u16 mapX, u16 mapY, u16 decor); void sub_8126B2C(u8 taskId); +void sub_8127208(u8 taskId); +void sub_8127250(u8 *dest, u8 decorCat); +bool8 IsSelectedDecorInThePC(void); #endif //GUARD_DECORATION_H diff --git a/include/global.h b/include/global.h index f88203c90..ce9a96b6f 100644 --- a/include/global.h +++ b/include/global.h @@ -43,9 +43,6 @@ #define PARTY_SIZE 6 -#define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 - #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) >= (b) ? (a) : (b)) @@ -97,6 +94,31 @@ enum LanguageId #define GAME_VERSION (VERSION_EMERALD) #define GAME_LANGUAGE (LANGUAGE_ENGLISH) +// capacities of various saveblock objects +#define DAYCARE_MON_COUNT 2 +#define POKEBLOCKS_COUNT 40 +#define MAP_OBJECTS_COUNT 16 +#define BERRY_TREES_COUNT 128 +#define FLAGS_COUNT 300 +#define VARS_COUNT 256 +#define MAIL_COUNT 16 +#define SECRET_BASES_COUNT 20 +#define PC_ITEMS_COUNT 50 +#define BAG_ITEMS_COUNT 30 +#define BAG_KEYITEMS_COUNT 30 +#define BAG_POKEBALLS_COUNT 16 +#define BAG_TMHM_COUNT 64 +#define BAG_BERRIES_COUNT 46 + +#define PYRAMID_BAG_ITEMS_COUNT 10 + +// string lengths +#define ITEM_NAME_LENGTH 14 +#define POKEMON_NAME_LENGTH 10 +#define OT_NAME_LENGTH 7 +#define PLAYER_NAME_LENGTH 8 +#define MAIL_WORDS_COUNT 9 + enum { MALE, @@ -129,15 +151,6 @@ enum OPTIONS_BATTLE_STYLE_SET }; -enum -{ - BAG_ITEMS = 1, - BAG_POKEBALLS, - BAG_TMsHMs, - BAG_BERRIES, - BAG_KEYITEMS -}; - struct Coords16 { s16 x; @@ -209,11 +222,11 @@ struct BerryPickingResults // possibly used in the game itself? Size may be wron u8 field_F; }; +// two arrays for lvl50 and open level struct PyramidBag { - u16 items_Lvl50[10]; - u16 items_OpenLvl[10]; - u8 quantity[10]; + u16 itemId[2][PYRAMID_BAG_ITEMS_COUNT]; + u8 quantity[2][PYRAMID_BAG_ITEMS_COUNT]; }; struct BerryCrush @@ -223,8 +236,6 @@ struct BerryCrush u32 unk; }; -#define PLAYER_NAME_LENGTH 8 - struct UnknownSaveBlock2Struct { u8 field_0; @@ -303,7 +314,7 @@ struct SaveBlock2 /*0xE1A*/ u16 battlePyramidFloor; // possibly? /*0xE1C*/ u8 field_E1C[16]; /*0xE2C*/ struct PyramidBag pyramidBag; - /*0x???*/ u8 field_notSure[13]; + /*0x???*/ u8 field_unkown[6]; /*0xE6E*/ u16 battleTentWinStreak; /*0xE70*/ u8 field_E70[72]; /*0xEB8*/ u16 frontierBattlePoints; @@ -417,8 +428,6 @@ struct EasyChatPair u16 words[2]; }; /*size = 0x8*/ -#define MAIL_WORDS_COUNT 9 - struct MailStruct { /*0x00*/ u16 words[MAIL_WORDS_COUNT]; @@ -452,10 +461,11 @@ struct UnkMauvilleOldManStruct2 struct MauvilleOldManTrader { - u8 unk0; - u8 unk1[4]; - u8 unk5[4][11]; - u8 unk31; + /* 0x2E28 */ u8 id; + /* 0x2E29 */ u8 unk1[4]; + /* 0x2E2D */ u8 unk5[4][11]; + /* 0x2E59 */ bool8 alreadyTraded; + /* 0x2E5A */ u8 language[4]; }; typedef union OldMan @@ -480,6 +490,8 @@ struct RecordMixing_UnknownStruct u16 unk74[0x2]; }; +#define LINK_B_RECORDS_COUNT 5 + struct LinkBattleRecord { u8 name[8]; @@ -489,6 +501,12 @@ struct LinkBattleRecord u16 draws; }; +struct LinkBattleRecords +{ + struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT]; + u8 languages[LINK_B_RECORDS_COUNT]; +}; + struct RecordMixingGiftData { u8 unk0; @@ -530,8 +548,6 @@ struct DaycareMon u32 steps; }; -#define DAYCARE_MON_COUNT 2 - struct DayCare { struct DaycareMon mons[DAYCARE_MON_COUNT]; @@ -552,13 +568,6 @@ struct RecordMixingDayCareMail bool16 holdsItem[DAYCARE_MON_COUNT]; }; -#define POKEBLOCKS_COUNT 40 -#define MAP_OBJECTS_COUNT 16 -#define BERRY_TREES_COUNT 128 -#define FLAGS_COUNT 300 -#define VARS_COUNT 256 -#define MAIL_COUNT 16 - enum { LILYCOVE_LADY_QUIZ, @@ -645,16 +654,16 @@ struct SaveBlock1 /*0x32*/ u16 mapDataId; /*0x34*/ u16 mapView[0x100]; /*0x234*/ u8 playerPartyCount; - /*0x238*/ struct Pokemon playerParty[6]; + /*0x238*/ struct Pokemon playerParty[PARTY_SIZE]; /*0x490*/ u32 money; /*0x494*/ u16 coins; /*0x496*/ u16 registeredItem; // registered for use with SELECT button - /*0x498*/ struct ItemSlot pcItems[50]; - /*0x560*/ struct ItemSlot bagPocket_Items[30]; - /*0x5D8*/ struct ItemSlot bagPocket_KeyItems[30]; - /*0x650*/ struct ItemSlot bagPocket_PokeBalls[16]; - /*0x690*/ struct ItemSlot bagPocket_TMHM[64]; - /*0x790*/ struct ItemSlot bagPocket_Berries[46]; + /*0x498*/ struct ItemSlot pcItems[PC_ITEMS_COUNT]; + /*0x560*/ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT]; + /*0x5D8*/ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT]; + /*0x650*/ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT]; + /*0x690*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; + /*0x790*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT]; /*0x848*/ struct Pokeblock pokeblocks[POKEBLOCKS_COUNT]; /*0x988*/ u8 seen1[52]; /*0x9BC*/ u16 berryBlenderRecords[3]; @@ -667,7 +676,7 @@ struct SaveBlock1 /*0x139C*/ u16 vars[VARS_COUNT]; /*0x159C*/ u32 gameStats[NUM_GAME_STATS]; /*0x169C*/ struct BerryTree berryTrees[BERRY_TREES_COUNT]; - /*0x1A9C*/ struct SecretBaseRecord secretBases[20]; + /*0x1A9C*/ struct SecretBaseRecord secretBases[SECRET_BASES_COUNT]; /*0x271C*/ u8 playerRoomDecor[12]; /*0x2728*/ u8 playerRoomDecorPos[12]; /*0x2734*/ u8 decorDesk[10]; @@ -703,9 +712,7 @@ struct SaveBlock1 /*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff /*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum /*0x3030*/ struct DayCare daycare; - /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; - /*0x31A0*/ u8 unk_31A0; - /*0x31A1*/ u8 filler_31A1[7]; + /*0x3150*/ struct LinkBattleRecords linkBattleRecords; /*0x31A8*/ u8 giftRibbons[52]; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; diff --git a/include/item.h b/include/item.h index 33d434f78..881d3a3d4 100644 --- a/include/item.h +++ b/include/item.h @@ -1,11 +1,32 @@ -#ifndef ITEM_H -#define ITEM_H +#ifndef GUARD_ITEM_H +#define GUARD_ITEM_H + +// These constants are used in gItems +enum +{ + POCKET_NONE, + POCKET_ITEMS, + POCKET_POKE_BALLS, + POCKET_TM_HM, + POCKET_BERRIES, + POCKET_KEY_ITEMS, +}; + +enum +{ + ITEMS_POCKET, + BALLS_POCKET, + TMHM_POCKET, + BERRIES_POCKET, + KEYITEMS_POCKET, + POCKETS_COUNT +}; typedef void (*ItemUseFunc)(u8); struct Item { - u8 name[14]; + u8 name[ITEM_NAME_LENGTH]; u16 itemId; u16 price; u8 holdEffect; @@ -29,28 +50,41 @@ struct BagPocket extern struct BagPocket gBagPockets[]; -void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity); -void CopyItemName(u16 itemId, u8 *string); -void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity); +void ApplyNewEncryptionKeyToBagItems(u32 newKey); +void ApplyNewEncryptionKeyToBagItems_(u32 newKey); +void SetBagItemsPointers(void); +void CopyItemName(u16 itemId, u8 *dst); +void CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity); +void GetBerryCountString(u8 *dst, const u8 *berryName, u32 quantity); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); +bool8 HasAtLeastOneBerry(void); bool8 CheckBagHasSpace(u16 itemId, u16 count); bool8 AddBagItem(u16 itemId, u16 count); bool8 RemoveBagItem(u16 itemId, u16 count); u8 GetPocketByItemId(u16 itemId); -void ClearItemSlots(struct ItemSlot *itemSlots, u8 b); +void ClearItemSlots(struct ItemSlot *itemSlots, u8 itemCount); u8 CountUsedPCItemSlots(void); bool8 CheckPCHasItem(u16 itemId, u16 count); bool8 AddPCItem(u16 itemId, u16 count); void RemovePCItem(u8 index, u16 count); +void CompactPCItems(void); void SwapRegisteredBike(void); -const struct Item *ItemId_GetItem(u16 itemId); +u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos); +u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 pocketPos); +void CompactItemsInBagPocket(struct BagPocket *bagPocket); +void SortBerriesOrTMHMs(struct BagPocket *bagPocket); +void MoveItemSlotInList(struct ItemSlot* itemSlots_, u32 from, u32 to_); +void ClearBag(void); +u16 CountTotalItemQuantityInBag(u16 itemId); +bool8 AddPyramidBagItem(u16 itemId, u16 count); +bool8 RemovePyramidBagItem(u16 itemId, u16 count); +const u8 *ItemId_GetName(u16 itemId); u16 ItemId_GetId(u16 itemId); u16 ItemId_GetPrice(u16 itemId); u8 ItemId_GetHoldEffect(u16 itemId); u8 ItemId_GetHoldEffectParam(u16 itemId); const u8 *ItemId_GetDescription(u16 itemId); -bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c); u8 ItemId_GetImportance(u16 itemId); u8 ItemId_GetUnknownValue(u16 itemId); u8 ItemId_GetPocket(u16 itemId); @@ -59,14 +93,5 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId); u8 ItemId_GetBattleUsage(u16 itemId); ItemUseFunc ItemId_GetBattleFunc(u16 itemId); u8 ItemId_GetSecondaryId(u16 itemId); -u16 itemid_get_market_price(u16 itemId); -u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos); -void sub_80D6FB4(struct BagPocket*); -void sub_80D6F64(struct BagPocket*); -void sub_80D702C(struct ItemSlot*, s16, u16); -u8 sub_80D6CE4(); -bool8 itemid_is_unique(u16 itemId); -void sub_80D6E48(u8, u16); -void sub_80D6E84(void); -#endif // ITEM_H +#endif // GUARD_ITEM_H diff --git a/include/item_menu.h b/include/item_menu.h index 68393c9ee..40c015a8e 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -55,7 +55,7 @@ void sub_81AAC14(void); void sub_81AAC50(void); void sub_81AAC70(void); void bag_menu_mail_related(void); - void CB2_BagMenuFromStartMenu(void); +u8 sub_81ABB2C(u8 pocketId); #endif //GUARD_item_menu_H diff --git a/include/load_save.h b/include/load_save.h index 460cdf6f3..0868316c8 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -1,27 +1,35 @@ #ifndef GUARD_LOAD_SAVE_H #define GUARD_LOAD_SAVE_H -extern bool32 gFlashMemoryPresent; +extern struct SaveBlock1 gSaveblock1; extern struct SaveBlock2 gSaveblock2; extern struct PokemonStorage gPokemonStorage; +extern bool32 gFlashMemoryPresent; +extern struct SaveBlock1 *gSaveBlock1Ptr; +extern struct SaveBlock2 *gSaveBlock2Ptr; +extern struct PokemonStorage *gPokemonStoragePtr; + +void CheckForFlashMemory(void); void ClearSav2(void); void ClearSav1(void); -void CheckForFlashMemory(void); +void SetSaveBlocksPointers(u16 offset); void MoveSaveBlocks_ResetHeap(void); -bool32 GetSecretBase2Field_9(void); +u32 GetSecretBase2Field_9(void); void ClearSecretBase2Field_9(void); -void SetSecretBase2Field_9(void); -void SetSecretBase2Field_9_AndHideBG(void); -void ClearSecretBase2Field_9_2(void); +void sub_8076D48(void); +void sub_8076D5C(void); +void sav2_gender2_inplace_and_xFE(void); void SavePlayerParty(void); void LoadPlayerParty(void); +void SaveMapObjects(void); +void LoadMapObjects(void); void SaveSerializedGame(void); void LoadSerializedGame(void); void LoadPlayerBag(void); void SavePlayerBag(void); -void SetSaveBlocksPointers(u16); -void sub_8076D5C(void); -void sav2_gender2_inplace_and_xFE(void); +void ApplyNewEncryptionKeyToHword(u16 *hWord, u32 newKey); +void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey); +void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); #endif // GUARD_LOAD_SAVE_H diff --git a/include/palette.h b/include/palette.h index 41cef4048..a1259d327 100644 --- a/include/palette.h +++ b/include/palette.h @@ -1,8 +1,6 @@ #ifndef GUARD_PALETTE_H #define GUARD_PALETTE_H -#include "global.h" - #define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade #define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade #define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade diff --git a/include/script_menu.h b/include/script_menu.h index 717eda041..810e84dcb 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -9,5 +9,6 @@ bool8 ScriptMenu_YesNo(u8 var1, u8 var2); bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); +s32 convert_pixel_width_to_tile_width(s32 pixelWidth); #endif //GUARD_SCRIPT_MENU_H diff --git a/include/secret_base.h b/include/secret_base.h index b2502889c..3e8a80987 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -10,5 +10,6 @@ void sub_80E9578(void); void sub_80E980C(void); u8 *GetSecretBaseMapName(u8 *dest); const u8 *GetSecretBaseTrainerLoseText(void); +bool8 CurrentMapIsSecretBase(void); #endif //GUARD_SECRET_BASE_H diff --git a/include/strings.h b/include/strings.h index 7c81dbcfb..f61dd5319 100644 --- a/include/strings.h +++ b/include/strings.h @@ -74,6 +74,10 @@ extern const u8 gText_DecorationWillBeDiscarded[]; extern const u8 gText_CantThrowAwayInUse[]; extern const u8 gText_DecorationThrownAway[]; +extern const u8 gText_PokeBalls[]; +extern const u8 gText_Berries[]; +extern const u8 gText_Berry[]; + extern const u8 gText_Desk[]; extern const u8 gText_Chair[]; extern const u8 gText_Plant[]; @@ -336,7 +340,7 @@ extern const u8 gText_Var1DotVar2[]; extern const u8 gText_ThreeMarks[]; extern const u8 gText_FirmSlash[]; -//item menu screen text +// item menu screen text extern const u8 gText_CloseBag[]; extern const u8 gText_ClearTo11Var1Clear5Var2[]; extern const u8 gText_UnkF908Var1Clear7Var2[]; @@ -362,11 +366,11 @@ extern const u8 gText_DepositedVar2Var1s[]; extern const u8 gText_NoRoomForItems[]; extern const u8 gText_ThreeDashes[]; -//party menu text +// party menu text extern const u8 gText_PkmnHPRestoredByVar2[]; extern const u8 gText_CantBeUsedOnPkmn[]; -//birch dex rating text +// birch dex rating text extern const u8 gBirchDexRatingText_LessThan10[]; extern const u8 gBirchDexRatingText_LessThan20[]; extern const u8 gBirchDexRatingText_LessThan30[]; @@ -389,7 +393,7 @@ extern const u8 gBirchDexRatingText_LessThan190[]; extern const u8 gBirchDexRatingText_LessThan200[]; extern const u8 gBirchDexRatingText_DexCompleted[]; -//player pc text +// player pc text extern const u8 gText_WhatWouldYouLike[]; extern const u8 gText_NoMailHere[]; @@ -429,5 +433,14 @@ extern const u8 gText_TooImportantToToss[]; extern const u8 gText_ConfirmTossItems[]; extern const u8 gText_MoveVar1Where[]; +extern const u8 gText_Tristan[]; +extern const u8 gText_Philip[]; +extern const u8 gText_Dennis[]; +extern const u8 gText_Roberto[]; +extern const u8 gText_FiveMarks[]; + +extern const u8 gText_TotalRecordWLD[]; +extern const u8 gText_PlayersBattleResults[]; +extern const u8 gText_WinLoseDraw[]; #endif //GUARD_STRINGS_H diff --git a/include/trainer_card.h b/include/trainer_card.h new file mode 100644 index 000000000..5cb93dba0 --- /dev/null +++ b/include/trainer_card.h @@ -0,0 +1,35 @@ +#ifndef GUARD_TRAINER_CARD_H +#define GUARD_TRAINER_CARD_H + +struct TrainerCard +{ + /*0x00*/ u8 gender; + /*0x01*/ u8 stars; + /*0x02*/ bool8 hasPokedex; + /*0x03*/ bool8 var_3; + /*0x04*/ bool8 var_4; + /*0x05*/ u8 var_5; + /*0x06*/ u16 firstHallOfFameA; + /*0x08*/ u16 firstHallOfFameB; + /*0x0A*/ u16 firstHallOfFameC; + /*0x0C*/ u16 pokedexSeen; + /*0x0E*/ u16 trainerId; + /*0x10*/ u16 playTimeHours; + /*0x12*/ u16 playTimeMinutes; + /*0x14*/ u16 linkBattleWins; + /*0x16*/ u16 linkBattleLosses; + /*0x18*/ u16 battleTowerWins; + /*0x1A*/ u16 battleTowerLosses; + /*0x1C*/ u16 contestsWithFriends; + /*0x1E*/ u16 pokeblocksWithFriends; + /*0x20*/ u16 pokemonTrades; + /*0x22*/ u16 var_22; + /*0x24*/ u32 money; + /*0x28*/ u16 var_28[4]; + /*0x30*/ u8 playerName[8]; + /*0x38*/ u8 emeraldAddedUnknownFields[0x64-0x38]; +}; + +extern struct TrainerCard gTrainerCards[4]; + +#endif // GUARD_TRAINER_CARD_H diff --git a/ld_script.txt b/ld_script.txt index c2ba4299e..95e556949 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -137,7 +137,6 @@ SECTIONS { src/item_menu_icons.o(.text); asm/battle_anim_80D51AC.o(.text); src/item.o(.text); - asm/item.o(.text); asm/contest.o(.text); asm/shop.o(.text); src/berry.o(.text); @@ -173,7 +172,7 @@ SECTIONS { asm/slot_machine.o(.text); asm/contest_painting.o(.text); src/battle_ai_script_commands.o(.text); - asm/trader.o(.text); + src/trader.o(.text); src/starter_choose.o(.text); src/wallclock.o(.text); src/rom6.o(.text); @@ -184,7 +183,7 @@ SECTIONS { src/birch_pc.o(.text); src/hof_pc.o(.text); asm/field_specials.o(.text); - asm/battle_records.o(.text); + src/battle_records.o(.text); asm/pokedex_area_screen.o(.text); src/evolution_scene.o(.text); asm/roulette.o(.text); @@ -465,14 +464,14 @@ SECTIONS { data/slot_machine.o(.rodata); data/contest_painting.o(.rodata); src/battle_ai_script_commands.o(.rodata); - data/trader.o(.rodata); + src/trader.o(.rodata); data/starter_choose.o(.rodata); src/wallclock.o(.rodata); src/pokeblock.o(.rodata); src/fldeff_flash.o(.rodata); src/time_events.o(.rodata); data/field_specials.o(.rodata); - data/battle_records.o(.rodata); + src/battle_records.o(.rodata); data/pokedex_area_screen.o(.rodata); src/evolution_scene.o(.rodata); data/roulette.o(.rodata); diff --git a/src/battle_records.c b/src/battle_records.c new file mode 100644 index 000000000..a148f998f --- /dev/null +++ b/src/battle_records.c @@ -0,0 +1,510 @@ +#include "global.h" +#include "battle_records.h" +#include "bg.h" +#include "window.h" +#include "link.h" +#include "battle.h" +#include "overworld.h" +#include "text.h" +#include "text_window.h" +#include "strings.h" +#include "string_util.h" +#include "trainer_card.h" +#include "menu.h" +#include "menu_helpers.h" +#include "palette.h" +#include "main.h" +#include "scanline_effect.h" +#include "international_string_util.h" +#include "sound.h" +#include "constants/songs.h" +#include "malloc.h" +#include "gpu_regs.h" +#include "constants/game_stat.h" + +extern void PrintOnTrainerHillRecordsWindow(void); // pokenav.s + +// this file's functions +static void Task_CloseTrainerHillRecordsOnButton(u8 taskId); +static void Task_BeginPaletteFade(u8 taskId); +static void Task_ExitTrainerHillRecords(u8 taskId); +static void RemoveTrainerHillRecordsWindow(u8 windowId); +static void CB2_ShowTrainerHillRecords(void); + +// EWRAM variables +EWRAM_DATA u8 gRecordsWindowId = 0; +EWRAM_DATA static u8 *sTilemapBuffer = NULL; + +// const rom data +static const u32 sTrainerHillWindowTileset[] = INCBIN_U32("graphics/unknown/unknown_5B3484.4bpp"); +static const u16 sTrainerHillWindowPalette[] = INCBIN_U16("graphics/unknown/unknown_5B3484.gbapal"); +static const u32 sTrainerHillWindowTilemap[] = INCBIN_U32("graphics/unknown/unknown_5B3564.bin"); + +static const struct BgTemplate sTrainerHillRecordsBgTemplates[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + } +}; + +static const struct WindowTemplate sTrainerHillRecordsWindowTemplates[] = +{ + {0x0, 0x2, 0x1, 0x1A, 0x12, 0xF, 0x14}, + DUMMY_WIN_TEMPLATE +}; + +static const struct WindowTemplate sLinkBattleRecordsWindow = {0x0, 0x2, 0x1, 0x1A, 0x11, 0xF, 0x1}; + +static const u8 sText_DashesNoPlayer[] = _("-------"); +static const u8 sText_DashesNoScore[] = _("----"); + +// code +static void ClearLinkBattleRecord(struct LinkBattleRecord *record) +{ + CpuFill16(0, record, sizeof(struct LinkBattleRecord)); + record->name[0] = EOS; + record->trainerId = 0; + record->wins = 0; + record->losses = 0; + record->draws = 0; +} + +static void ClearLinkBattleRecords(struct LinkBattleRecord *records) +{ + s32 i; + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + { + ClearLinkBattleRecord(records + i); + } + SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0); + SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0); + SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0); +} + +static s32 GetLinkBattleRecordTotalBattles(struct LinkBattleRecord *record) +{ + return record->wins + record->losses + record->draws; +} + +static s32 FindLinkBattleRecord(struct LinkBattleRecord *records, const u8 *name, u16 trainerId) +{ + s32 i; + + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + { + if (!StringCompareN(records[i].name, name, OT_NAME_LENGTH) && records[i].trainerId == trainerId) + return i; + } + + return LINK_B_RECORDS_COUNT; +} + +static void SortLinkBattleRecords(struct LinkBattleRecords *records) +{ + s32 i, j; + + for (i = LINK_B_RECORDS_COUNT - 1; i > 0; i--) + { + for (j = i - 1; j >= 0; j--) + { + s32 totalBattlesI = GetLinkBattleRecordTotalBattles(&records->entries[i]); + s32 totalBattlesJ = GetLinkBattleRecordTotalBattles(&records->entries[j]); + + if (totalBattlesI > totalBattlesJ) + { + struct LinkBattleRecord temp1; + u8 temp2; + + temp1 = records->entries[i]; + records->entries[i] = records->entries[j]; + records->entries[j] = temp1; + + temp2 = records->languages[i]; + records->languages[i] = records->languages[j]; + records->languages[j] = temp2; + } + } + } +} + +static void UpdateLinkBattleRecord(struct LinkBattleRecord *record, s32 battleOutcome) +{ + switch (battleOutcome) + { + case B_OUTCOME_WON: + record->wins++; + if (record->wins > 9999) + record->wins = 9999; + break; + case B_OUTCOME_LOST: + record->losses++; + if (record->losses > 9999) + record->losses = 9999; + break; + case B_OUTCOME_DREW: + record->draws++; + if (record->draws > 9999) + record->draws = 9999; + break; + } +} + +static void UpdateLinkBattleGameStats(s32 battleOutcome) +{ + u8 stat; + + switch (battleOutcome) + { + case B_OUTCOME_WON: + stat = GAME_STAT_LINK_BATTLE_WINS; + break; + case B_OUTCOME_LOST: + stat = GAME_STAT_LINK_BATTLE_LOSSES; + break; + case B_OUTCOME_DREW: + stat = GAME_STAT_LINK_BATTLE_DRAWS; + break; + default: + return; + } + + if (GetGameStat(stat) < 9999) + IncrementGameStat(stat); +} + +static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8 *name, u16 trainerId, s32 battleOutcome, u8 battlerId) +{ + s32 index; + + UpdateLinkBattleGameStats(battleOutcome); + SortLinkBattleRecords(records); + index = FindLinkBattleRecord(records->entries, name, trainerId); + if (index == LINK_B_RECORDS_COUNT) + { + index = LINK_B_RECORDS_COUNT - 1; + ClearLinkBattleRecord(&records->entries[index]); + StringCopyN(records->entries[index].name, name, OT_NAME_LENGTH); + records->entries[index].trainerId = trainerId; + records->languages[index] = gLinkPlayers[battlerId].language; + } + UpdateLinkBattleRecord(&records->entries[index], battleOutcome); + SortLinkBattleRecords(records); +} + +void ClearPlayerLinkBattleRecords(void) +{ + ClearLinkBattleRecords(gSaveBlock1Ptr->linkBattleRecords.entries); +} + +static void IncTrainerCardWins(s32 battlerId) +{ + u16 *wins = &gTrainerCards[battlerId].linkBattleWins; + (*wins)++; + if (*wins > 9999) + *wins = 9999; +} + +static void IncTrainerCardLosses(s32 battlerId) +{ + u16 *losses = &gTrainerCards[battlerId].linkBattleLosses; + (*losses)++; + if (*losses > 9999) + *losses = 9999; +} + +static void UpdateTrainerCardWinsLosses(s32 battlerId) +{ + switch (gBattleOutcome) + { + case B_OUTCOME_WON: + IncTrainerCardWins(BATTLE_OPPOSITE(battlerId)); + IncTrainerCardLosses(battlerId); + break; + case B_OUTCOME_LOST: + IncTrainerCardLosses(BATTLE_OPPOSITE(battlerId)); + IncTrainerCardWins(battlerId); + break; + } +} + +void UpdatePlayerLinkBattleRecords(s32 battlerId) +{ + if (InUnionRoom() != TRUE) + { + UpdateTrainerCardWinsLosses(battlerId); + UpdateLinkBattleRecords( + &gSaveBlock1Ptr->linkBattleRecords, + gTrainerCards[battlerId].playerName, + gTrainerCards[battlerId].trainerId, + gBattleOutcome, + battlerId); + } +} + +static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) +{ + s32 x; + + ConvertIntToDecimalStringN(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_LEFT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gText_TotalRecordWLD); + + x = GetStringCenterAlignXOffset(1, gStringVar4, 0xD0); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar4, x, 0x11, 0, NULL); +} + +static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y, s32 language) +{ + if (record->wins == 0 && record->losses == 0 && record->draws == 0) + { + // empty slot + PrintTextOnWindow(gRecordsWindowId, 1, sText_DashesNoPlayer, 8, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, sText_DashesNoScore, 80, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, sText_DashesNoScore, 128, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, sText_DashesNoScore, 176, (y * 8) + 1, 0, NULL); + } + else + { + StringFillWithTerminator(gStringVar1, 8); + StringCopyN(gStringVar1, record->name, 7); + ConvertInternationalString(gStringVar1, language); + + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar1, 8, (y * 8) + 1, 0, NULL); + + ConvertIntToDecimalStringN(gStringVar1, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar1, 80, (y * 8) + 1, 0, NULL); + + ConvertIntToDecimalStringN(gStringVar1, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar1, 128, (y * 8) + 1, 0, NULL); + + ConvertIntToDecimalStringN(gStringVar1, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar1, 176, (y * 8) + 1, 0, NULL); + } +} + +void ShowLinkBattleRecords(void) +{ + s32 i, x; + + gRecordsWindowId = AddWindow(&sLinkBattleRecordsWindow); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); + StringExpandPlaceholders(gStringVar4, gText_PlayersBattleResults); + + x = GetStringCenterAlignXOffset(1, gStringVar4, 208); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar4, x, 1, 0, NULL); + PrintLinkBattleWinsLossesDraws(gSaveBlock1Ptr->linkBattleRecords.entries); + + StringExpandPlaceholders(gStringVar4, gText_WinLoseDraw); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar4, 0, 41, 0, NULL); + + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + { + PrintLinkBattleRecord(&gSaveBlock1Ptr->linkBattleRecords.entries[i], 7 + (i * 2), gSaveBlock1Ptr->linkBattleRecords.languages[i]); + } + + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +void RemoveRecordsWindow(void) +{ + sub_819746C(gRecordsWindowId, FALSE); + RemoveWindow(gRecordsWindowId); +} + +static void Task_TrainerHillWaitForPaletteFade(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = Task_CloseTrainerHillRecordsOnButton; +} + +static void Task_CloseTrainerHillRecordsOnButton(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + task->func = Task_BeginPaletteFade; + } +} + +static void Task_BeginPaletteFade(u8 taskId) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_ExitTrainerHillRecords; +} + +static void Task_ExitTrainerHillRecords(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_ReturnToFieldContinueScript); + Free(sTilemapBuffer); + RemoveTrainerHillRecordsWindow(0); + FreeAllWindowBuffers(); + DestroyTask(taskId); + } +} + +static void RemoveTrainerHillRecordsWindow(u8 windowId) +{ + FillWindowPixelBuffer(windowId, 0); + ClearWindowTilemap(windowId); + CopyWindowToVram(windowId, 2); + RemoveWindow(windowId); +} + +static void ClearVramOamPlttRegs(void) +{ + DmaClearLarge16(3, (void*)(VRAM), VRAM_SIZE, 0x1000); + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BG0CNT, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1CNT, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG2CNT, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG3CNT, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); +} + +static void ClearTasksAndGraphicalStructs(void) +{ + ScanlineEffect_Stop(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); +} + +static void ResetBgCoordinates(void) +{ + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); +} + +static void SetDispcntReg(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_1D_MAP); +} + +static void LoadTrainerHillRecordsWindowGfx(u8 bgId) +{ + LoadBgTiles(bgId, sTrainerHillWindowTileset, sizeof(sTrainerHillWindowTileset), 0); + CopyToBgTilemapBufferRect(bgId, sTrainerHillWindowTilemap, 0, 0, 0x20, 0x20); + LoadPalette(sTrainerHillWindowPalette, 0, 0x20); +} + +static void VblankCB_TrainerHillRecords(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void MainCB2_TrainerHillRecords(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void ShowTrainerHillRecords(void) +{ + SetVBlankCallback(NULL); + SetMainCallback2(CB2_ShowTrainerHillRecords); +} + +static void CB2_ShowTrainerHillRecords(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + ClearVramOamPlttRegs(); + gMain.state++; + break; + case 1: + ClearTasksAndGraphicalStructs(); + gMain.state++; + break; + case 2: + sTilemapBuffer = AllocZeroed(0x800); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sTrainerHillRecordsBgTemplates, ARRAY_COUNT(sTrainerHillRecordsBgTemplates)); + SetBgTilemapBuffer(3, sTilemapBuffer); + ResetBgCoordinates(); + gMain.state++; + break; + case 3: + LoadTrainerHillRecordsWindowGfx(3); + LoadPalette(stdpal_get(0), 0xF0, 0x20); + gMain.state++; + break; + case 4: + if (IsDma3ManagerBusyWithBgCopy() != TRUE) + { + ShowBg(0); + ShowBg(3); + CopyBgTilemapBufferToVram(3); + gMain.state++; + } + break; + case 5: + InitWindows(sTrainerHillRecordsWindowTemplates); + DeactivateAllTextPrinters(); + gMain.state++; + break; + case 6: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gMain.state++; + break; + case 7: + SetDispcntReg(); + SetVBlankCallback(VblankCB_TrainerHillRecords); + PrintOnTrainerHillRecordsWindow(); + CreateTask(Task_TrainerHillWaitForPaletteFade, 8); + SetMainCallback2(MainCB2_TrainerHillRecords); + gMain.state = 0; + break; + } +} diff --git a/src/berry.c b/src/berry.c index 74b7090c0..e128eb0ec 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1218,7 +1218,7 @@ void FieldObjectInteractionRemoveBerryTree(void) u8 PlayerHasBerries(void) { - return IsBagPocketNonEmpty(BAG_BERRIES); + return IsBagPocketNonEmpty(POCKET_BERRIES); } void ResetBerryTreeSparkleFlags(void) diff --git a/src/berry_blender.c b/src/berry_blender.c index 9e6a0fef7..c3b0cc80d 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -30,6 +30,7 @@ #include "trig.h" #include "tv.h" #include "item_menu.h" +#include "battle_records.h" #define BLENDER_SCORE_BEST 0 #define BLENDER_SCORE_GOOD 1 @@ -131,7 +132,6 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2; extern struct MusicPlayerInfo gMPlayInfo_BGM; extern u8 gInGameOpponentsNo; extern u8 gUnknown_020322D5; -extern u8 gResultsWindowId; // graphics extern const u8 gBerryBlenderArrowTiles[]; @@ -2472,7 +2472,7 @@ static void CB2_HandleBlenderEndGame(void) sub_8081F94(&gSendCmd[0]); if (sBerryBlenderData->yesNoAnswer == 0) { - if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // no berries + if (IsBagPocketNonEmpty(POCKET_BERRIES) == FALSE) // no berries { sBerryBlenderData->playAgainState = CANT_PLAY_NO_BERRIES; gSendCmd[1] = 0x9999; @@ -3485,13 +3485,13 @@ void ShowBerryBlenderRecordWindow(void) u8 text[32]; winTemplate = sBlenderRecordWindowTemplate; - gResultsWindowId = AddWindow(&winTemplate); - NewMenuHelpers_DrawStdWindowFrame(gResultsWindowId, 0); - FillWindowPixelBuffer(gResultsWindowId, 0x11); + gRecordsWindowId = AddWindow(&winTemplate); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, 0); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90); - PrintTextOnWindow(gResultsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL); - PrintTextOnWindow(gResultsWindowId, 1, gText_234Players, 4, 0x29, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gText_234Players, 4, 0x29, 0, NULL); for (i = 0, yPos = 0x29; i < BLENDER_SCORES_NO; i++) { @@ -3506,11 +3506,11 @@ void ShowBerryBlenderRecordWindow(void) txtPtr = StringAppend(txtPtr, sText_RPM); xPos = GetStringRightAlignXOffset(1, text, 0x8C); - PrintTextOnWindow(gResultsWindowId, 1, text, xPos, yPos + (i * 16), 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, text, xPos, yPos + (i * 16), 0, NULL); } - PutWindowTilemap(gResultsWindowId); - CopyWindowToVram(gResultsWindowId, 3); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); } static void sub_8083F3C(u8 taskId) diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 1a0d1bce0..9a6e78c81 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -517,7 +517,7 @@ static void TryChangeDisplayedBerry(u8 taskId, s8 toMove) s16 *data = gTasks[taskId].data; s16 currPocketPosition = gUnknown_0203CE58.scrollPosition[3] + gUnknown_0203CE58.cursorPosition[3]; u32 newPocketPosition = currPocketPosition + toMove; - if (newPocketPosition < 46 && BagGetItemIdByPocketPosition(BAG_BERRIES, newPocketPosition) != 0) + if (newPocketPosition < 46 && BagGetItemIdByPocketPosition(POCKET_BERRIES, newPocketPosition) != 0) { if (toMove < 0) data[1] = 2; @@ -537,7 +537,7 @@ static void HandleBagCursorPositionChange(s8 toMove) u16 *cursorPos = &gUnknown_0203CE58.cursorPosition[3]; if (toMove > 0) { - if (*cursorPos < 4 || BagGetItemIdByPocketPosition(BAG_BERRIES, *scrollPos + 8) == 0) + if (*cursorPos < 4 || BagGetItemIdByPocketPosition(POCKET_BERRIES, *scrollPos + 8) == 0) *cursorPos += toMove; else *scrollPos += toMove; @@ -550,7 +550,7 @@ static void HandleBagCursorPositionChange(s8 toMove) *scrollPos += toMove; } - sBerryTag->berryId = ItemIdToBerryType(BagGetItemIdByPocketPosition(BAG_BERRIES, *scrollPos + *cursorPos)); + sBerryTag->berryId = ItemIdToBerryType(BagGetItemIdByPocketPosition(POCKET_BERRIES, *scrollPos + *cursorPos)); } static void Task_DisplayAnotherBerry(u8 taskId) @@ -965,9 +965,9 @@ void CopyBgTilemapBufferToVram(u8 bg) } } -void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height) +void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height) { - void* srcCopy; + const void* srcCopy; u16 destX16; u16 destY16; u16 mode; diff --git a/src/item.c b/src/item.c index a17599db9..975fef3ae 100644 --- a/src/item.c +++ b/src/item.c @@ -5,50 +5,48 @@ #include "string_util.h" #include "text.h" #include "event_data.h" +#include "malloc.h" +#include "secret_base.h" +#include "item_menu.h" +#include "strings.h" +#include "load_save.h" -extern void ApplyNewEncryptionKeyToHword(u16* hword, u32 newKey); extern bool8 InBattlePyramid(void); +extern u16 gUnknown_0203CF30[]; +extern const struct Item gItems[]; -extern const u8 gText_PokeBalls[]; -extern const u8 gText_Berries[]; -extern const u8 gText_Berry[]; +// this file's functions +static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count); +static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count); -bool8 CheckPyramidBagHasItem(u16 itemId, u16 count); -bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count); +// EWRAM variables +EWRAM_DATA struct BagPocket gBagPockets[POCKETS_COUNT] = {0}; -enum -{ - ITEMS_POCKET, - BALLS_POCKET, - TMHM_POCKET, - BERRIES_POCKET, - KEYITEMS_POCKET -}; - -u16 GetBagItemQuantity(u16* quantity) +// code +static u16 GetBagItemQuantity(u16 *quantity) { return gSaveBlock2Ptr->encryptionKey ^ *quantity; } -void SetBagItemQuantity(u16* quantity, u16 newValue) +static void SetBagItemQuantity(u16 *quantity, u16 newValue) { *quantity = newValue ^ gSaveBlock2Ptr->encryptionKey; } -u16 GetBagItemId(u16* slot) +static u16 GetPCItemQuantity(u16 *quantity) { - return *slot; + return *quantity; } -void SetBagItemId(u16* slot, u16 newItemId) +static void SetPCItemQuantity(u16 *quantity, u16 newValue) { - *slot = newItemId; + *quantity = newValue; } void ApplyNewEncryptionKeyToBagItems(u32 newKey) { u32 pocket, item; - for (pocket = 0; pocket < 5; pocket++) + for (pocket = 0; pocket < POCKETS_COUNT; pocket++) { for (item = 0; item < gBagPockets[pocket].capacity; item++) ApplyNewEncryptionKeyToHword(&(gBagPockets[pocket].itemSlots[item].quantity), newKey); @@ -60,58 +58,57 @@ void ApplyNewEncryptionKeyToBagItems_(u32 newKey) // really GF? ApplyNewEncryptionKeyToBagItems(newKey); } -// TODO: move those max values to defines - void SetBagItemsPointers(void) { gBagPockets[ITEMS_POCKET].itemSlots = gSaveBlock1Ptr->bagPocket_Items; - gBagPockets[ITEMS_POCKET].capacity = 30; + gBagPockets[ITEMS_POCKET].capacity = BAG_ITEMS_COUNT; gBagPockets[KEYITEMS_POCKET].itemSlots = gSaveBlock1Ptr->bagPocket_KeyItems; - gBagPockets[KEYITEMS_POCKET].capacity = 30; + gBagPockets[KEYITEMS_POCKET].capacity = BAG_KEYITEMS_COUNT; gBagPockets[BALLS_POCKET].itemSlots = gSaveBlock1Ptr->bagPocket_PokeBalls; - gBagPockets[BALLS_POCKET].capacity = 16; + gBagPockets[BALLS_POCKET].capacity = BAG_POKEBALLS_COUNT; gBagPockets[TMHM_POCKET].itemSlots = gSaveBlock1Ptr->bagPocket_TMHM; - gBagPockets[TMHM_POCKET].capacity = 64; + gBagPockets[TMHM_POCKET].capacity = BAG_TMHM_COUNT; gBagPockets[BERRIES_POCKET].itemSlots = gSaveBlock1Ptr->bagPocket_Berries; - gBagPockets[BERRIES_POCKET].capacity = 46; + gBagPockets[BERRIES_POCKET].capacity = BAG_BERRIES_COUNT; } -void CopyItemName(u16 itemId, u8 *string) +void CopyItemName(u16 itemId, u8 *dst) { - StringCopy(string, ItemId_GetItem(itemId)->name); + StringCopy(dst, ItemId_GetName(itemId)); } -void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity) +void CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity) { if (itemId == ITEM_POKE_BALL) { if (quantity < 2) - StringCopy(string, ItemId_GetItem(ITEM_POKE_BALL)->name); + StringCopy(dst, ItemId_GetName(ITEM_POKE_BALL)); else - StringCopy(string, gText_PokeBalls); + StringCopy(dst, gText_PokeBalls); } else { if (itemId >= ITEM_CHERI_BERRY && itemId <= ITEM_ENIGMA_BERRY) - GetBerryCountString(string, gBerries[itemId - ITEM_CHERI_BERRY].name, quantity); + GetBerryCountString(dst, gBerries[itemId - ITEM_CHERI_BERRY].name, quantity); else - StringCopy(string, ItemId_GetItem(itemId)->name); + StringCopy(dst, ItemId_GetName(itemId)); } } -void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity) +void GetBerryCountString(u8 *dst, const u8 *berryName, u32 quantity) { - const u8* berryString; - u8* txtPtr; + const u8 *berryString; + u8 *txtPtr; if (quantity < 2) berryString = gText_Berry; else berryString = gText_Berries; + txtPtr = StringCopy(dst, berryName); *txtPtr = CHAR_SPACE; StringCopy(txtPtr + 1, berryString); @@ -136,21 +133,21 @@ bool8 CheckBagHasItem(u16 itemId, u16 count) if (ItemId_GetPocket(itemId) == 0) return FALSE; - if (InBattlePyramid() || FlagGet(0x4004) == TRUE) + if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE) return CheckPyramidBagHasItem(itemId, count); pocket = ItemId_GetPocket(itemId) - 1; - //Check for item slots that contain the item + // Check for item slots that contain the item for (i = 0; i < gBagPockets[pocket].capacity; i++) { if (gBagPockets[pocket].itemSlots[i].itemId == itemId) { u16 quantity; - //Does this item slot contain enough of the item? + // Does this item slot contain enough of the item? quantity = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity); if (quantity >= count) return TRUE; count -= quantity; - //Does this item slot and all previous slots contain enough of the item? + // Does this item slot and all previous slots contain enough of the item? if (count == 0) return TRUE; } @@ -161,69 +158,945 @@ bool8 CheckBagHasItem(u16 itemId, u16 count) bool8 HasAtLeastOneBerry(void) { u16 i; - for (i = 0x85; i < 0xB3; i++) + + for (i = FIRST_BERRY_INDEX; i < ITEM_BRIGHT_POWDER; i++) { if (CheckBagHasItem(i, 1) == TRUE) { - gSpecialVar_Result = 1; + gSpecialVar_Result = TRUE; return TRUE; } } - gSpecialVar_Result = 0; + gSpecialVar_Result = FALSE; return FALSE; } -/* Refuses to match. +#ifdef NONMATCHING +// Refuses to match. bool8 CheckBagHasSpace(u16 itemId, u16 count) { u8 i; - u8 pocket; - u16 slotCapacity; - u16 quantity; - if (ItemId_GetPocket(itemId) == 0) + if (ItemId_GetPocket(itemId) == POCKET_NONE) return FALSE; - if (InBattlePyramid() || FlagGet(0x4004) == TRUE) + + if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE) + { return CheckPyramidBagHasSpace(itemId, count); - pocket = ItemId_GetPocket(itemId) - 1; - if (pocket != BERRIES_POCKET) - slotCapacity = 99; + } else - slotCapacity = 999; + { + u8 pocket; + u16 slotCapacity; + u16 ownedCount; - //Check space in any existing item slots that already contain this item - for (i = 0; i < gBagPockets[pocket].capacity; i++) + pocket = ItemId_GetPocket(itemId) - 1; + if (pocket != BERRIES_POCKET) + slotCapacity = 99; + else + slotCapacity = 999; + + // Check space in any existing item slots that already contain this item + for (i = 0; i < gBagPockets[pocket].capacity; i++) + { + if (gBagPockets[pocket].itemSlots[i].itemId == itemId) + { + ownedCount = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity); + if (ownedCount + count <= slotCapacity) + return TRUE; + if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET) + return FALSE; + count -= slotCapacity - ownedCount; + if (count == 0) + return TRUE; + } + } + + // Check space in empty item slots + if (count > 0) + { + for (i = 0; i < gBagPockets[pocket].capacity; i++) + { + if (gBagPockets[pocket].itemSlots[i].itemId == 0) + { + if (count <= slotCapacity) + return TRUE; + if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET) + return FALSE; + count -= slotCapacity; + } + } + if (count > 0) + return FALSE; // No more item slots. The bag is full + } + + return TRUE; + } +} +#else +ASM_DIRECT +bool8 CheckBagHasSpace(u16 itemId, u16 count) +{ + 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, 0x4\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + lsls r1, 16\n\ + lsrs r5, r1, 16\n\ + bl ItemId_GetPocket\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080D6906\n\ + bl InBattlePyramid\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080D6838\n\ + ldr r0, =0x00004004\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080D684C\n\ +_080D6838:\n\ + mov r0, r8\n\ + adds r1, r5, 0\n\ + bl CheckPyramidBagHasSpace\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + b _080D6916\n\ + .pool\n\ +_080D684C:\n\ + mov r0, r8\n\ + bl ItemId_GetPocket\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + ldr r7, =0x000003e7\n\ + cmp r2, 0x3\n\ + beq _080D6860\n\ + movs r7, 0x63\n\ +_080D6860:\n\ + movs r6, 0\n\ + ldr r1, =gBagPockets\n\ + lsls r4, r2, 3\n\ + adds r0, r4, r1\n\ + mov r9, r4\n\ + ldrb r0, [r0, 0x4]\n\ + cmp r6, r0\n\ + bcs _080D68BC\n\ + subs r0, r2, 0x2\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r10, r0\n\ +_080D6878:\n\ + adds r0, r4, r1\n\ + ldr r1, [r0]\n\ + lsls r0, r6, 2\n\ + adds r1, r0, r1\n\ + ldrh r0, [r1]\n\ + cmp r0, r8\n\ + bne _080D68AC\n\ + adds r0, r1, 0x2\n\ + str r2, [sp]\n\ + bl GetBagItemQuantity\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + adds r0, r1, r5\n\ + ldr r2, [sp]\n\ + cmp r0, r7\n\ + ble _080D6914\n\ + mov r0, r10\n\ + cmp r0, 0x1\n\ + bls _080D6906\n\ + subs r0, r7, r1\n\ + subs r0, r5, r0\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0\n\ + beq _080D6914\n\ +_080D68AC:\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + ldr r1, =gBagPockets\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0, 0x4]\n\ + cmp r6, r0\n\ + bcc _080D6878\n\ +_080D68BC:\n\ + cmp r5, 0\n\ + beq _080D6914\n\ + movs r6, 0\n\ + ldr r3, =gBagPockets\n\ + mov r1, r9\n\ + adds r0, r1, r3\n\ + ldrb r0, [r0, 0x4]\n\ + cmp r6, r0\n\ + bcs _080D6902\n\ + adds r4, r3, 0\n\ + subs r0, r2, 0x2\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ +_080D68D6:\n\ + adds r0, r1, r4\n\ + ldr r1, [r0]\n\ + lsls r0, r6, 2\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + bne _080D68F2\n\ + cmp r5, r7\n\ + bls _080D6914\n\ + cmp r2, 0x1\n\ + bls _080D6906\n\ + subs r0, r5, r7\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ +_080D68F2:\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + mov r1, r9\n\ + adds r0, r1, r3\n\ + ldrb r0, [r0, 0x4]\n\ + cmp r6, r0\n\ + bcc _080D68D6\n\ +_080D6902:\n\ + cmp r5, 0\n\ + beq _080D6914\n\ +_080D6906:\n\ + movs r0, 0\n\ + b _080D6916\n\ + .pool\n\ +_080D6914:\n\ + movs r0, 0x1\n\ +_080D6916:\n\ + add sp, 0x4\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"); +} +#endif // NONMATCHING + +bool8 AddBagItem(u16 itemId, u16 count) +{ + u8 i; + + if (ItemId_GetPocket(itemId) == POCKET_NONE) + return FALSE; + + // check Battle Pyramid Bag + if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE) { - if (gBagPockets[pocket].itemSlots[i].itemId == itemId) + return AddPyramidBagItem(itemId, count); + } + else + { + struct BagPocket *itemPocket; + struct ItemSlot *newItems; + u16 slotCapacity; + u16 ownedCount; + u8 pocket = ItemId_GetPocket(itemId) - 1; + + itemPocket = &gBagPockets[pocket]; + newItems = AllocZeroed(itemPocket->capacity * sizeof(struct ItemSlot)); + memcpy(newItems, itemPocket->itemSlots, itemPocket->capacity * sizeof(struct ItemSlot)); + + if (pocket != BERRIES_POCKET) + slotCapacity = 99; + else + slotCapacity = 999; + + for (i = 0; i < itemPocket->capacity; i++) { - quantity = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity); - if (quantity + count <= slotCapacity) - return TRUE; - if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET) + if (newItems[i].itemId == itemId) + { + ownedCount = GetBagItemQuantity(&newItems[i].quantity); + // check if won't exceed max slot capacity + if (ownedCount + count <= slotCapacity) + { + // successfully added to already existing item's count + SetBagItemQuantity(&newItems[i].quantity, ownedCount + count); + + // goto SUCCESS_ADD_ITEM; + // is equivalent but won't match + + memcpy(itemPocket->itemSlots, newItems, itemPocket->capacity * sizeof(struct ItemSlot)); + Free(newItems); + return TRUE; + } + else + { + // try creating another instance of the item if possible + if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET) + { + Free(newItems); + return FALSE; + } + else + { + count -= slotCapacity - ownedCount; + SetBagItemQuantity(&newItems[i].quantity, slotCapacity); + // don't create another instance of the item if it's at max slot capacity and count is equal to 0 + if (count == 0) + { + goto SUCCESS_ADD_ITEM; + } + } + } + } + } + + // we're done if quantity is equal to 0 + if (count > 0) + { + // either no existing item was found or we have to create another instance, because the capacity was exceeded + for (i = 0; i < itemPocket->capacity; i++) + { + if (newItems[i].itemId == ITEM_NONE) + { + newItems[i].itemId = itemId; + if (count > slotCapacity) + { + // try creating a new slot with max capacity if duplicates are possible + if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET) + { + Free(newItems); + return FALSE; + } + count -= slotCapacity; + SetBagItemQuantity(&newItems[i].quantity, slotCapacity); + } + else + { + // created a new slot and added quantity + SetBagItemQuantity(&newItems[i].quantity, count); + goto SUCCESS_ADD_ITEM; + } + } + } + + if (count > 0) + { + Free(newItems); return FALSE; - count -= slotCapacity - quantity; + } + } + + SUCCESS_ADD_ITEM: + memcpy(itemPocket->itemSlots, newItems, itemPocket->capacity * sizeof(struct ItemSlot)); + Free(newItems); + return TRUE; + } +} + +bool8 RemoveBagItem(u16 itemId, u16 count) +{ + u8 i; + u16 totalQuantity = 0; + + if (ItemId_GetPocket(itemId) == POCKET_NONE || itemId == ITEM_NONE) + return FALSE; + + // check Battle Pyramid Bag + if (InBattlePyramid() || FlagGet(FLAG_SPECIAL_FLAG_0x4004) == TRUE) + { + return RemovePyramidBagItem(itemId, count); + } + else + { + u8 pocket; + u8 var; + u16 ownedCount; + struct BagPocket *itemPocket; + + pocket = ItemId_GetPocket(itemId) - 1; + itemPocket = &gBagPockets[pocket]; + + for (i = 0; i < itemPocket->capacity; i++) + { + if (itemPocket->itemSlots[i].itemId == itemId) + totalQuantity += GetBagItemQuantity(&itemPocket->itemSlots[i].quantity); + } + + if (totalQuantity < count) + return FALSE; // We don't have enough of the item + + if (CurrentMapIsSecretBase() == TRUE) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x200); + VarSet(VAR_0x40ED, itemId); + } + + var = sub_81ABB2C(pocket); + if (itemPocket->capacity > var + && itemPocket->itemSlots[var].itemId == itemId) + { + ownedCount = GetBagItemQuantity(&itemPocket->itemSlots[var].quantity); + if (ownedCount >= count) + { + SetBagItemQuantity(&itemPocket->itemSlots[var].quantity, ownedCount - count); + count = 0; + } + else + { + count -= ownedCount; + SetBagItemQuantity(&itemPocket->itemSlots[var].quantity, 0); + } + + if (GetBagItemQuantity(&itemPocket->itemSlots[var].quantity) == 0) + itemPocket->itemSlots[var].itemId = ITEM_NONE; + if (count == 0) return TRUE; } + + for (i = 0; i < itemPocket->capacity; i++) + { + if (itemPocket->itemSlots[i].itemId == itemId) + { + ownedCount = GetBagItemQuantity(&itemPocket->itemSlots[i].quantity); + if (ownedCount >= count) + { + SetBagItemQuantity(&itemPocket->itemSlots[i].quantity, ownedCount - count); + count = 0; + } + else + { + count -= ownedCount; + SetBagItemQuantity(&itemPocket->itemSlots[i].quantity, 0); + } + + if (GetBagItemQuantity(&itemPocket->itemSlots[i].quantity) == 0) + itemPocket->itemSlots[i].itemId = ITEM_NONE; + + if (count == 0) + return TRUE; + } + } + return TRUE; } +} - //Check space in empty item slots - if (count > 0) +u8 GetPocketByItemId(u16 itemId) +{ + return ItemId_GetPocket(itemId); +} + +void ClearItemSlots(struct ItemSlot *itemSlots, u8 itemCount) +{ + u16 i; + + for (i = 0; i < itemCount; i++) { - for (i = 0; i < gBagPockets[pocket].capacity; i++) + itemSlots[i].itemId = ITEM_NONE; + SetBagItemQuantity(&itemSlots[i].quantity, 0); + } +} + +static s32 FindFreePCItemSlot(void) +{ + s8 i; + + for (i = 0; i < PC_ITEMS_COUNT; i++) + { + if (gSaveBlock1Ptr->pcItems[i].itemId == ITEM_NONE) + return i; + } + return -1; +} + +u8 CountUsedPCItemSlots(void) +{ + u8 usedSlots = 0; + u8 i; + + for (i = 0; i < PC_ITEMS_COUNT; i++) + { + if (gSaveBlock1Ptr->pcItems[i].itemId != ITEM_NONE) + usedSlots++; + } + return usedSlots; +} + +bool8 CheckPCHasItem(u16 itemId, u16 count) +{ + u8 i; + + for (i = 0; i < PC_ITEMS_COUNT; i++) + { + if (gSaveBlock1Ptr->pcItems[i].itemId == itemId && GetPCItemQuantity(&gSaveBlock1Ptr->pcItems[i].quantity) >= count) + return TRUE; + } + return FALSE; +} + +bool8 AddPCItem(u16 itemId, u16 count) +{ + u8 i; + s8 freeSlot; + u16 ownedCount; + struct ItemSlot *newItems; + + // Copy PC items + newItems = AllocZeroed(sizeof(gSaveBlock1Ptr->pcItems)); + memcpy(newItems, gSaveBlock1Ptr->pcItems, sizeof(gSaveBlock1Ptr->pcItems)); + + // Use any item slots that already contain this item + for (i = 0; i < PC_ITEMS_COUNT; i++) + { + if (newItems[i].itemId == itemId) { - if (gBagPockets[pocket].itemSlots[i].itemId == 0) + ownedCount = GetPCItemQuantity(&newItems[i].quantity); + if (ownedCount + count <= 999) { - if (count <= slotCapacity) - return TRUE; - if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET) - return FALSE; - count -= slotCapacity; + SetPCItemQuantity(&newItems[i].quantity, ownedCount + count); + memcpy(gSaveBlock1Ptr->pcItems, newItems, sizeof(gSaveBlock1Ptr->pcItems)); + Free(newItems); + return TRUE; + } + count += ownedCount - 999; + SetPCItemQuantity(&newItems[i].quantity, 999); + if (count == 0) + { + memcpy(gSaveBlock1Ptr->pcItems, newItems, sizeof(gSaveBlock1Ptr->pcItems)); + Free(newItems); + return TRUE; } } - if (count > 0) - return FALSE; //No more item slots. The bag is full } + // Put any remaining items into a new item slot. + if (count > 0) + { + freeSlot = FindFreePCItemSlot(); + if (freeSlot == -1) + { + Free(newItems); + return FALSE; + } + else + { + newItems[freeSlot].itemId = itemId; + SetPCItemQuantity(&newItems[freeSlot].quantity, count); + } + } + + // Copy items back to the PC + memcpy(gSaveBlock1Ptr->pcItems, newItems, sizeof(gSaveBlock1Ptr->pcItems)); + Free(newItems); return TRUE; -}*/ +} + +void RemovePCItem(u8 index, u16 count) +{ + // UB: should use GetPCItemQuantity and SetPCItemQuantity functions + gSaveBlock1Ptr->pcItems[index].quantity -= count; + if (gSaveBlock1Ptr->pcItems[index].quantity == 0) + { + gSaveBlock1Ptr->pcItems[index].itemId = ITEM_NONE; + CompactPCItems(); + } +} + +void CompactPCItems(void) +{ + u16 i; + u16 j; + + for (i = 0; i < PC_ITEMS_COUNT - 1; i++) + { + for (j = i + 1; j < PC_ITEMS_COUNT; j++) + { + if (gSaveBlock1Ptr->pcItems[i].itemId == 0) + { + struct ItemSlot temp = gSaveBlock1Ptr->pcItems[i]; + gSaveBlock1Ptr->pcItems[i] = gSaveBlock1Ptr->pcItems[j]; + gSaveBlock1Ptr->pcItems[j] = temp; + } + } + } +} + +void SwapRegisteredBike(void) +{ + switch (gSaveBlock1Ptr->registeredItem) + { + case ITEM_MACH_BIKE: + gSaveBlock1Ptr->registeredItem = ITEM_ACRO_BIKE; + break; + case ITEM_ACRO_BIKE: + gSaveBlock1Ptr->registeredItem = ITEM_MACH_BIKE; + break; + } +} + +u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos) +{ + return gBagPockets[pocketId - 1].itemSlots[pocketPos].itemId; +} + +u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 pocketPos) +{ + return GetBagItemQuantity(&gBagPockets[pocketId - 1].itemSlots[pocketPos].quantity); +} + +static void SwapItemSlots(struct ItemSlot *a, struct ItemSlot *b) +{ + struct ItemSlot temp = *a; + *a = *b; + *b = temp; +} + +void CompactItemsInBagPocket(struct BagPocket *bagPocket) +{ + u16 i, j; + + for (i = 0; i < bagPocket->capacity - 1; i++) + { + for (j = i + 1; j < bagPocket->capacity; j++) + { + if (GetBagItemQuantity(&bagPocket->itemSlots[i].quantity) == 0) + SwapItemSlots(&bagPocket->itemSlots[i], &bagPocket->itemSlots[j]); + } + } +} + +void SortBerriesOrTMHMs(struct BagPocket *bagPocket) +{ + u16 i, j; + + for (i = 0; i < bagPocket->capacity - 1; i++) + { + for (j = i + 1; j < bagPocket->capacity; j++) + { + if (GetBagItemQuantity(&bagPocket->itemSlots[i].quantity) != 0) + { + if (GetBagItemQuantity(&bagPocket->itemSlots[j].quantity) == 0) + continue; + if (bagPocket->itemSlots[i].itemId <= bagPocket->itemSlots[j].itemId) + continue; + } + SwapItemSlots(&bagPocket->itemSlots[i], &bagPocket->itemSlots[j]); + } + } +} + +void MoveItemSlotInList(struct ItemSlot* itemSlots_, u32 from, u32 to_) +{ + // dumb assignments needed to match + struct ItemSlot *itemSlots = itemSlots_; + u32 to = to_; + + if (from != to) + { + s16 i, count; + struct ItemSlot firstSlot = itemSlots[from]; + + if (to > from) + { + to--; + for (i = from, count = to; i < count; i++) + itemSlots[i] = itemSlots[i + 1]; + } + else + { + for (i = from, count = to; i > count; i--) + itemSlots[i] = itemSlots[i - 1]; + } + itemSlots[to] = firstSlot; + } +} + +void ClearBag(void) +{ + u16 i; + + for (i = 0; i < POCKETS_COUNT; i++) + { + ClearItemSlots(gBagPockets[i].itemSlots, gBagPockets[i].capacity); + } +} + +u16 CountTotalItemQuantityInBag(u16 itemId) +{ + u16 i; + u16 ownedCount = 0; + struct BagPocket *bagPocket = &gBagPockets[ItemId_GetPocket(itemId) - 1]; + + for (i = 0; i < bagPocket->capacity; i++) + { + if (bagPocket->itemSlots[i].itemId == itemId) + ownedCount += GetBagItemQuantity(&bagPocket->itemSlots[i].quantity); + } + + return ownedCount; +} + +static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count) +{ + u8 i; + u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl]; + u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl]; + + for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) + { + if (items[i] == itemId) + { + if (quantities[i] >= count) + return TRUE; + + count -= quantities[i]; + if (count == 0) + return TRUE; + } + } + + return FALSE; +} + +static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count) +{ + u8 i; + u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl]; + u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl]; + + for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) + { + if (items[i] == itemId || items[i] == ITEM_NONE) + { + if (quantities[i] + count <= 99) + return TRUE; + + count = (quantities[i] + count) - 99; + if (count == 0) + return TRUE; + } + } + + return FALSE; +} + +bool8 AddPyramidBagItem(u16 itemId, u16 count) +{ + u16 i; + + u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl]; + u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl]; + + u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + + memcpy(newItems, items, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + memcpy(newQuantities, quantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + + for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) + { + if (newItems[i] == itemId && newQuantities[i] < 99) + { + newQuantities[i] += count; + if (newQuantities[i] > 99) + { + count = newQuantities[i] - 99; + newQuantities[i] = 99; + } + else + { + count = 0; + } + + if (count == 0) + break; + } + } + + if (count > 0) + { + for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) + { + if (newItems[i] == ITEM_NONE) + { + newItems[i] = itemId; + newQuantities[i] = count; + if (newQuantities[i] > 99) + { + count = newQuantities[i] - 99; + newQuantities[i] = 99; + } + else + { + count = 0; + } + + if (count == 0) + break; + } + } + } + + if (count == 0) + { + memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + Free(newItems); + Free(newQuantities); + return TRUE; + } + else + { + Free(newItems); + Free(newQuantities); + return FALSE; + } +} + +bool8 RemovePyramidBagItem(u16 itemId, u16 count) +{ + u16 i; + + u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl]; + u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl]; + + i = gUnknown_0203CF30[3] + gUnknown_0203CF30[4]; + if (items[i] == itemId && quantities[i] >= count) + { + quantities[i] -= count; + if (quantities[i] == 0) + items[i] = ITEM_NONE; + return TRUE; + } + else + { + u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + + memcpy(newItems, items, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + memcpy(newQuantities, quantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + + for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) + { + if (newItems[i] == itemId) + { + if (newQuantities[i] >= count) + { + newQuantities[i] -= count; + count = 0; + if (newQuantities[i] == 0) + newItems[i] = ITEM_NONE; + } + else + { + count -= newQuantities[i]; + newQuantities[i] = 0; + newItems[i] = ITEM_NONE; + } + + if (count == 0) + break; + } + } + + if (count == 0) + { + memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); + memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + Free(newItems); + Free(newQuantities); + return TRUE; + } + else + { + Free(newItems); + Free(newQuantities); + return FALSE; + } + } +} + +static u16 SanitizeItemId(u16 itemId) +{ + if (itemId >= ITEM_LAST_ID + 1) + return ITEM_NONE; + else + return itemId; +} + +const u8 *ItemId_GetName(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].name; +} + +u16 ItemId_GetId(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].itemId; +} + +u16 ItemId_GetPrice(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].price; +} + +u8 ItemId_GetHoldEffect(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].holdEffect; +} + +u8 ItemId_GetHoldEffectParam(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].holdEffectParam; +} + +const u8 *ItemId_GetDescription(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].description; +} + +u8 ItemId_GetImportance(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].importance; +} + +// unused +u8 ItemId_GetUnknownValue(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].unk19; +} + +u8 ItemId_GetPocket(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].pocket; +} + +u8 ItemId_GetType(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].type; +} + +ItemUseFunc ItemId_GetFieldFunc(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].fieldUseFunc; +} + +u8 ItemId_GetBattleUsage(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].battleUsage; +} + +ItemUseFunc ItemId_GetBattleFunc(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].battleUseFunc; +} + +u8 ItemId_GetSecondaryId(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].secondaryId; +} diff --git a/src/item_menu.c b/src/item_menu.c index 8c05f0828..d7edea301 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -72,7 +72,7 @@ void AddBagItemIconSprite(u16, u8); void bag_menu_print_description_box_text(int); void bag_menu_print_cursor(u8, u8); void bag_menu_print(u8, u8, const u8*, u8, u8, u8, u8, u8, u8); -bool8 itemid_is_unique(u16); +bool8 ItemId_GetImportance(u16); u16 BagGetQuantityByPocketPosition(u8, u16); void sub_81AB89C(void); void task_close_bag_menu_2(u8); @@ -687,7 +687,7 @@ void sub_81AB520(u8 rboxId, int item_index_in_pocket, u8 a) offset = GetStringRightAlignXOffset(7, gStringVar4, 0x77); bag_menu_print(rboxId, 7, gStringVar4, offset, a, 0, 0, -1, 0); } - else if (gUnknown_0203CE58.pocket != 4 && (unique = itemid_is_unique(itemId)) == FALSE) + else if (gUnknown_0203CE58.pocket != 4 && (unique = ItemId_GetImportance(itemId)) == FALSE) { ConvertIntToDecimalStringN(gStringVar1, itemQuantity, 1, 2); StringExpandPlaceholders(gStringVar4, gText_xVar1); @@ -804,10 +804,10 @@ void sub_81AB9A8(u8 pocketId) { case 2: case 3: - sub_80D6FB4(pocket); + SortBerriesOrTMHMs(pocket); break; default: - sub_80D6F64(pocket); + CompactItemsInBagPocket(pocket); break; } gUnknown_0203CE54->unk829[pocketId] = 0; @@ -847,9 +847,9 @@ void sub_81ABAE0(void) sub_8122298(&gUnknown_0203CE58.scrollPosition[i], &gUnknown_0203CE58.cursorPosition[i], gUnknown_0203CE54->unk82E[i], gUnknown_0203CE54->unk829[i], 8); } -u8 sub_81ABB2C(u8 a) +u8 sub_81ABB2C(u8 pocketId) { - return gUnknown_0203CE58.scrollPosition[a] + gUnknown_0203CE58.cursorPosition[a]; + return gUnknown_0203CE58.scrollPosition[pocketId] + gUnknown_0203CE58.cursorPosition[pocketId]; } void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u8 taskId)) @@ -1179,7 +1179,7 @@ void sub_81AC498(u8 taskId) sub_81AC590(taskId); else { - sub_80D702C(gBagPockets[gUnknown_0203CE58.pocket].itemSlots, data[1], realPos); + MoveItemSlotInList(gBagPockets[gUnknown_0203CE58.pocket].itemSlots, data[1], realPos); gUnknown_0203CE54->unk81A = -1; DestroyListMenuTask(data[0], scrollPos, cursorPos); if (data[1] < realPos) @@ -1231,7 +1231,7 @@ void sub_81AC644(u8 unused) gUnknown_0203CE54->unk828 = 4; break; case 8: - if (!itemid_is_unique(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY) + if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY) { gUnknown_0203CE54->unk820 = gUnknown_0861404B; gUnknown_0203CE54->unk828 = 2; @@ -1243,7 +1243,7 @@ void sub_81AC644(u8 unused) } break; case 6: - if (!itemid_is_unique(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY) + if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY) { gUnknown_0203CE54->unk820 = gUnknown_0861404D; gUnknown_0203CE54->unk828 = 2; @@ -1255,7 +1255,7 @@ void sub_81AC644(u8 unused) } break; case 7: - if (!itemid_is_unique(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY) + if (!ItemId_GetImportance(gSpecialVar_ItemId) && gSpecialVar_ItemId != ITEM_ENIGMA_BERRY) { gUnknown_0203CE54->unk820 = gUnknown_0861404F; gUnknown_0203CE54->unk828 = 2; @@ -1605,7 +1605,7 @@ void ItemMenu_Give(u8 taskId) { DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350); } - else if (!itemid_is_unique(gSpecialVar_ItemId)) + else if (!ItemId_GetImportance(gSpecialVar_ItemId)) { if (CalculatePlayerPartyCount() == 0) bag_menu_print_there_is_no_pokemon(taskId); @@ -1686,7 +1686,7 @@ void item_menu_type_2(u8 taskId) StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeldHere); DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD350); } - else if (gUnknown_0203CE58.pocket != 4 && !itemid_is_unique(gSpecialVar_ItemId)) + else if (gUnknown_0203CE58.pocket != 4 && !ItemId_GetImportance(gSpecialVar_ItemId)) { unknown_ItemMenu_Confirm(taskId); } @@ -1700,7 +1700,7 @@ void item_menu_type_b(u8 taskId) { if (ItemIsMail(gSpecialVar_ItemId) == TRUE) DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350); - else if (gUnknown_0203CE58.pocket != 4 && !itemid_is_unique(gSpecialVar_ItemId)) + else if (gUnknown_0203CE58.pocket != 4 && !ItemId_GetImportance(gSpecialVar_ItemId)) gTasks[taskId].func = unknown_ItemMenu_Confirm; else bag_menu_print_cant_be_held_msg(taskId); @@ -1738,7 +1738,7 @@ void display_sell_item_ask_str(u8 taskId) { s16* data = gTasks[taskId].data; - if (itemid_get_market_price(gSpecialVar_ItemId) == 0) + if (ItemId_GetPrice(gSpecialVar_ItemId) == 0) { CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gText_CantBuyKeyItem); @@ -1765,7 +1765,7 @@ void sub_81AD680(u8 taskId) { s16* data = gTasks[taskId].data; - ConvertIntToDecimalStringN(gStringVar1, (itemid_get_market_price(gSpecialVar_ItemId) / 2) * data[8], 0, 6); + ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8], 0, 6); StringExpandPlaceholders(gStringVar4, gText_ICanPayVar1); DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD6E4); } @@ -1790,7 +1790,7 @@ void sub_81AD730(u8 taskId) s16* data = gTasks[taskId].data; u8 windowId = bag_menu_add_window(8); - sub_81ABCC0(windowId, 1, (itemid_get_market_price(gSpecialVar_ItemId) / 2) * data[8]); + sub_81ABCC0(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]); bag_menu_AddMoney_window(); gTasks[taskId].func = sub_81AD794; } @@ -1801,7 +1801,7 @@ void sub_81AD794(u8 taskId) if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) { - sub_81ABCC0(gUnknown_0203CE54->unk818, data[8], (itemid_get_market_price(gSpecialVar_ItemId) / 2) * data[8]); + sub_81ABCC0(gUnknown_0203CE54->unk818, data[8], (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]); } else if (gMain.newKeys & A_BUTTON) { @@ -1825,7 +1825,7 @@ void sub_81AD84C(u8 taskId) s16* data = gTasks[taskId].data; CopyItemName(gSpecialVar_ItemId, gStringVar2); - ConvertIntToDecimalStringN(gStringVar1, (itemid_get_market_price(gSpecialVar_ItemId) / 2) * data[8], 0, 6); + ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8], 0, 6); StringExpandPlaceholders(gStringVar4, gText_TurnedOverVar1ForVar2); DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD8C8); } @@ -1838,7 +1838,7 @@ void sub_81AD8C8(u8 taskId) PlaySE(SE_REGI); RemoveBagItem(gSpecialVar_ItemId, data[8]); - AddMoney(&gSaveBlock1Ptr->money, (itemid_get_market_price(gSpecialVar_ItemId) / 2) * data[8]); + AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]); DestroyListMenuTask(data[0], scrollPos, cursorPos); sub_81AB9A8(gUnknown_0203CE58.pocket); sub_81ABA88(gUnknown_0203CE58.pocket); @@ -1908,7 +1908,7 @@ void sub_81ADB14(u8 taskId) s16* data = gTasks[taskId].data; FillWindowPixelBuffer(1, 0); - if (itemid_is_unique(gSpecialVar_ItemId)) + if (ItemId_GetImportance(gSpecialVar_ItemId)) { bag_menu_print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0); gTasks[taskId].func = sub_81ADC0C; diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c index 812f1f975..ea244b6a0 100644 --- a/src/lilycove_lady.c +++ b/src/lilycove_lady.c @@ -392,7 +392,7 @@ bool8 sub_818DC60(void) static void sub_818DCAC(u8 *dest, u16 itemId) { - StringCopy(dest, ItemId_GetItem(itemId)->name); + StringCopy(dest, ItemId_GetName(itemId)); } void sub_818DCC8(void) @@ -671,7 +671,7 @@ static u8 sub_818E258(const u8 *str) void sub_818E274(void) { - StringCopy(gStringVar1, ItemId_GetItem(gUnknown_0203CD68->itemId)->name); + StringCopy(gStringVar1, ItemId_GetName(gUnknown_0203CD68->itemId)); } bool8 sub_818E298(void) diff --git a/src/load_save.c b/src/load_save.c index e3de66bb8..917c1dfe1 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -4,33 +4,30 @@ #include "main.h" #include "pokemon.h" #include "random.h" +#include "malloc.h" +#include "item.h" extern void* gUnknown_0203CF5C; extern bool16 IdentifyFlash(void); -extern void SetBagItemsPointers(void); extern void SetDecorationInventoriesPointers(void); extern void ApplyNewEncryptionKeyToGameStats(u32 key); -extern void ApplyNewEncryptionKeyToBagItems(u32 newKey); -extern void ApplyNewEncryptionKeyToBagItems_(u32 key); extern void ApplyNewEncryptionKeyToBerryPowder(u32 key); extern void sub_8084FAC(int unused); -// this is probably wrong or misleading due to it being used in ResetHeap... -extern void InitHeap(void *pointer, u32 size); - #define SAVEBLOCK_MOVE_RANGE 128 struct LoadedSaveData { - /*0x0000*/ struct ItemSlot items[30]; - /*0x0078*/ struct ItemSlot keyItems[30]; - /*0x00F0*/ struct ItemSlot pokeBalls[16]; - /*0x0130*/ struct ItemSlot TMsHMs[64]; - /*0x0230*/ struct ItemSlot berries[46]; + /*0x0000*/ struct ItemSlot items[BAG_ITEMS_COUNT]; + /*0x0078*/ struct ItemSlot keyItems[BAG_KEYITEMS_COUNT]; + /*0x00F0*/ struct ItemSlot pokeBalls[BAG_POKEBALLS_COUNT]; + /*0x0130*/ struct ItemSlot TMsHMs[BAG_TMHM_COUNT]; + /*0x0230*/ struct ItemSlot berries[BAG_BERRIES_COUNT]; /*0x02E8*/ struct MailStruct mail[MAIL_COUNT]; }; +// EWRAM DATA EWRAM_DATA struct SaveBlock2 gSaveblock2 = {0}; EWRAM_DATA u8 gSaveblock2_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; @@ -43,8 +40,13 @@ EWRAM_DATA u8 gSaveblock3_DMA[SAVEBLOCK_MOVE_RANGE] = {0}; EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0}; EWRAM_DATA u32 gLastEncryptionKey = {0}; -void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); +// IWRAM common +IWRAM_DATA bool32 gFlashMemoryPresent; +IWRAM_DATA struct SaveBlock1 *gSaveBlock1Ptr; +IWRAM_DATA struct SaveBlock2 *gSaveBlock2Ptr; +IWRAM_DATA struct PokemonStorage *gPokemonStoragePtr; +// code void CheckForFlashMemory(void) { if (!IdentifyFlash()) @@ -53,7 +55,9 @@ void CheckForFlashMemory(void) InitFlashTimer(); } else + { gFlashMemoryPresent = FALSE; + } } void ClearSav2(void) @@ -80,8 +84,6 @@ void SetSaveBlocksPointers(u16 offset) SetDecorationInventoriesPointers(); } -extern u8 gHeap[]; - void MoveSaveBlocks_ResetHeap(void) { void *vblankCB, *hblankCB; @@ -132,7 +134,6 @@ void MoveSaveBlocks_ResetHeap(void) gSaveBlock2Ptr->encryptionKey = encryptionKey; } - u32 GetSecretBase2Field_9(void) { return gSaveBlock2Ptr->specialSaveWarp & 1; @@ -159,112 +160,112 @@ void sav2_gender2_inplace_and_xFE(void) gSaveBlock2Ptr->specialSaveWarp &= ~1; } -void copy_player_party_to_sav1(void) // SavePlayerParty +void SavePlayerParty(void) { int i; gSaveBlock1Ptr->playerPartyCount = gPlayerPartyCount; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) gSaveBlock1Ptr->playerParty[i] = gPlayerParty[i]; } -void copy_player_party_from_sav1(void) // LoadPlayerParty +void LoadPlayerParty(void) { int i; gPlayerPartyCount = gSaveBlock1Ptr->playerPartyCount; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) gPlayerParty[i] = gSaveBlock1Ptr->playerParty[i]; } -void save_serialize_npcs(void) // SaveMapObjects +void SaveMapObjects(void) { int i; - for (i = 0; i < 16; i++) + for (i = 0; i < MAP_OBJECTS_COUNT; i++) gSaveBlock1Ptr->mapObjects[i] = gMapObjects[i]; } -void save_deserialize_npcs(void) // LoadMapObjects +void LoadMapObjects(void) { int i; - for (i = 0; i < 16; i++) + for (i = 0; i < MAP_OBJECTS_COUNT; i++) gMapObjects[i] = gSaveBlock1Ptr->mapObjects[i]; } void SaveSerializedGame(void) { - copy_player_party_to_sav1(); - save_serialize_npcs(); + SavePlayerParty(); + SaveMapObjects(); } void LoadSerializedGame(void) { - copy_player_party_from_sav1(); - save_deserialize_npcs(); + LoadPlayerParty(); + LoadMapObjects(); } -void copy_bags_and_unk_data_from_save_blocks(void) +void LoadPlayerBag(void) { int i; // load player items. - for (i = 0; i < 30; i++) + for (i = 0; i < BAG_ITEMS_COUNT; i++) gLoadedSaveData.items[i] = gSaveBlock1Ptr->bagPocket_Items[i]; // load player key items. - for (i = 0; i < 30; i++) + for (i = 0; i < BAG_KEYITEMS_COUNT; i++) gLoadedSaveData.keyItems[i] = gSaveBlock1Ptr->bagPocket_KeyItems[i]; // load player pokeballs. - for (i = 0; i < 16; i++) + for (i = 0; i < BAG_POKEBALLS_COUNT; i++) gLoadedSaveData.pokeBalls[i] = gSaveBlock1Ptr->bagPocket_PokeBalls[i]; // load player TMs and HMs. - for (i = 0; i < 64; i++) + for (i = 0; i < BAG_TMHM_COUNT; i++) gLoadedSaveData.TMsHMs[i] = gSaveBlock1Ptr->bagPocket_TMHM[i]; // load player berries. - for (i = 0; i < 46; i++) + for (i = 0; i < BAG_BERRIES_COUNT; i++) gLoadedSaveData.berries[i] = gSaveBlock1Ptr->bagPocket_Berries[i]; // load mail. - for (i = 0; i < 16; i++) + for (i = 0; i < MAIL_COUNT; i++) gLoadedSaveData.mail[i] = gSaveBlock1Ptr->mail[i]; gLastEncryptionKey = gSaveBlock2Ptr->encryptionKey; } -void copy_bags_and_unk_data_to_save_blocks(void) +void SavePlayerBag(void) { int i; u32 encryptionKeyBackup; // save player items. - for (i = 0; i < 30; i++) + for (i = 0; i < BAG_ITEMS_COUNT; i++) gSaveBlock1Ptr->bagPocket_Items[i] = gLoadedSaveData.items[i]; // save player key items. - for (i = 0; i < 30; i++) + for (i = 0; i < BAG_KEYITEMS_COUNT; i++) gSaveBlock1Ptr->bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i]; // save player pokeballs. - for (i = 0; i < 16; i++) + for (i = 0; i < BAG_POKEBALLS_COUNT; i++) gSaveBlock1Ptr->bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i]; // save player TMs and HMs. - for (i = 0; i < 64; i++) + for (i = 0; i < BAG_TMHM_COUNT; i++) gSaveBlock1Ptr->bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i]; // save player berries. - for (i = 0; i < 46; i++) + for (i = 0; i < BAG_BERRIES_COUNT; i++) gSaveBlock1Ptr->bagPocket_Berries[i] = gLoadedSaveData.berries[i]; // save mail. - for (i = 0; i < 16; i++) + for (i = 0; i < MAIL_COUNT; i++) gSaveBlock1Ptr->mail[i] = gLoadedSaveData.mail[i]; encryptionKeyBackup = gSaveBlock2Ptr->encryptionKey; diff --git a/src/new_game.c b/src/new_game.c index 89771e92b..37336016e 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -20,8 +20,10 @@ #include "tv.h" #include "coins.h" #include "text.h" +#include "overworld.h" +#include "mail.h" +#include "battle_records.h" -extern u8 gPlayerPartyCount; extern u8 gDifferentSaveFile; extern u16 gSaveFileStatus; extern u8 gUnknown_030060B0; @@ -29,19 +31,15 @@ extern u8 gUnknown_030060B0; // TODO: replace those declarations with file headers extern u16 GetGeneratedTrainerIdLower(void); extern void ClearContestWinnerPicsInContestHall(void); -extern void Overworld_SetWarpDestination(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos); extern void warp_in(void); extern void sub_80BB358(void); extern void ResetBagScrollPositions(void); extern void ResetPokedex(void); extern void sub_8084400(void); -extern void ClearMailData(void); extern void ResetGabbyAndTy(void); extern void ResetSecretBases(void); extern void ResetLinkContestBoolean(void); -extern void ResetGameStats(void); extern void sub_8052DA8(void); -extern void InitLinkBattleRecords(void); extern void ResetPokemonStorageSystem(void); extern void ClearBag(void); extern void NewGameInitPCItems(void); @@ -58,7 +56,7 @@ extern void ResetContestLinkResults(void); extern void ResetPokeJumpResults(void); extern void SetBerryPowder(u32* powder, u32 newValue); -extern u8 EventScript_2715DE[]; +extern const u8 EventScript_2715DE[]; void WriteUnalignedWord(u32 var, u8 *dataPtr) { @@ -178,7 +176,7 @@ void NewGameInitData(void) ResetLinkContestBoolean(); ResetGameStats(); ClearAllContestWinnerPics(); - InitLinkBattleRecords(); + ClearPlayerLinkBattleRecords(); InitSeedotSizeRecord(); InitLotadSizeRecord(); gPlayerPartyCount = 0; diff --git a/src/player_pc.c b/src/player_pc.c index f56ecb128..6f39fa449 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -444,7 +444,7 @@ static void ItemStorage_Withdraw(u8 taskId) { s16 *data = gTasks[taskId].data; - NUM_ITEMS = sub_80D6CE4(); + NUM_ITEMS = CountUsedPCItemSlots(); if (NUM_ITEMS != 0) ItemStorage_WithdrawToss_Helper(taskId, FALSE); else @@ -459,7 +459,7 @@ static void ItemStorage_Toss(u8 taskId) { s16 *data = gTasks[taskId].data; - NUM_ITEMS = sub_80D6CE4(); + NUM_ITEMS = CountUsedPCItemSlots(); if (NUM_ITEMS != 0) ItemStorage_WithdrawToss_Helper(taskId, TRUE); else @@ -967,7 +967,7 @@ static void sub_816C0C8(void) static void sub_816C110(void) { - sub_80D6E84(); + CompactPCItems(); sub_812220C(gSaveBlock1Ptr->pcItems, 50, &(playerPCItemPageInfo.pageItems), &(playerPCItemPageInfo.count), 0x8); } @@ -1180,7 +1180,7 @@ static void ItemStorage_DoItemSwap(u8 taskId, bool8 a) { if(c != b - 1) { - sub_80D702C(gSaveBlock1Ptr->pcItems, c, b); + MoveItemSlotInList(gSaveBlock1Ptr->pcItems, c, b); ItemStorage_RefreshListMenu(); } } @@ -1301,7 +1301,7 @@ static void ItemStorage_DoItemToss(u8 taskId) data = gTasks[taskId].data; b = (playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove); - if(!itemid_is_unique(gSaveBlock1Ptr->pcItems[b].itemId)) + if(!ItemId_GetImportance(gSaveBlock1Ptr->pcItems[b].itemId)) { CopyItemName(gSaveBlock1Ptr->pcItems[b].itemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, data[2], STR_CONV_MODE_LEFT_ALIGN, 3); @@ -1335,7 +1335,7 @@ static void ItemStorage_HandleRemoveItem(u8 taskId) data = gTasks[taskId].data; if(gMain.newKeys & (A_BUTTON | B_BUTTON)) { - sub_80D6E48((playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove), data[2]); + RemovePCItem((playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove), data[2]); DestroyListMenuTask(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos)); sub_816C110(); sub_816C140(); diff --git a/src/pokeblock.c b/src/pokeblock.c index e829452b2..60087b5bf 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -589,7 +589,7 @@ static void PutPokeblockInfoText(void) { u8 i; - const u8 *itemName = ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name; + const u8 *itemName = ItemId_GetName(ITEM_POKEBLOCK_CASE); PrintOnPokeblockWindow(0, itemName, GetStringCenterAlignXOffset(1, itemName, 0x48)); PrintOnPokeblockWindow(2, gText_Spicy, 0); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index e7fcce629..f77b7c38c 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3173,11 +3173,11 @@ void sub_81C3554(u8 taskId) void sub_81C35E4() { - u8 *text; + const u8 *text; int offset; if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == 1 && (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5)) { - text = (u8*)ItemId_GetItem(ITEM_ENIGMA_BERRY); + text = ItemId_GetName(ITEM_ENIGMA_BERRY); } else if (gUnknown_0203CF1C->summary.item == ITEM_NONE) text = gText_None; diff --git a/src/random.c b/src/random.c index f2f0ede58..f0b2d9e5f 100644 --- a/src/random.c +++ b/src/random.c @@ -7,6 +7,10 @@ EWRAM_DATA static u8 sUnknown = 0; EWRAM_DATA static u32 sRandCount = 0; +// IWRAM common +IWRAM_DATA u32 gRngValue; +IWRAM_DATA u32 gRng2Value; + u16 Random(void) { gRngValue = 1103515245 * gRngValue + 24691; diff --git a/src/save.c b/src/save.c index 8025d6586..81731692e 100644 --- a/src/save.c +++ b/src/save.c @@ -4,17 +4,15 @@ #include "constants/game_stat.h" #include "task.h" #include "decompress.h" +#include "load_save.h" +#include "overworld.h" // for the chunk declarations -extern struct SaveBlock2 gSaveblock2; -extern struct SaveBlock1 gSaveblock1; -extern struct PokemonStorage gPokemonStorage; extern struct SaveSectionLocation gRamSaveSectionLocations[0xE]; -extern u8 gDecompressionBuffer[]; -extern u32 gFlashMemoryPresent; extern u16 gUnknown_03006294; extern bool8 gSoftResetDisabled; +extern u32 gUnknown_0203CF5C; // Divide save blocks into individual chunks to be written to flash sectors @@ -24,13 +22,13 @@ extern bool8 gSoftResetDisabled; /* * Sector Layout: - * + * * Sectors 0 - 13: Save Slot 1 * Sectors 14 - 27: Save Slot 2 * Sectors 28 - 29: Hall of Fame * Sector 30: e-Reader/Mystery Gift Stuff (note: e-Reader is deprecated in Emerald US) * Sector 31: Recorded Battle - * + * * There are two save slots for saving the player's game data. We alternate between * them each time the game is saved, so that if the current save slot is corrupt, * we can load the previous one. We also rotate the sectors in each save slot @@ -41,7 +39,7 @@ extern bool8 gSoftResetDisabled; // (u8 *)structure was removed from the first statement of the macro in Emerald. // This is because malloc is used to allocate addresses so storing the raw -// addresses should not be done in the offsets information. +// addresses should not be done in the offsets information. #define SAVEBLOCK_CHUNK(structure, chunkNum) \ { \ chunkNum * SECTOR_DATA_SIZE, \ @@ -69,8 +67,10 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] = }; extern void DoSaveFailedScreen(u8); // save_failed_screen -extern void LoadSerializedGame(void); // load_save extern bool32 ProgramFlashSectorAndVerify(u8 sector, u8 *data); +extern void save_serialize_map(void); +extern void sub_800ADF8(void); +extern bool8 sub_800A520(void); // iwram common u16 gLastWrittenSector; @@ -656,11 +656,6 @@ void UpdateSaveAddresses(void) } } -extern u32 GetGameStat(u8 index); // rom4 -extern void IncrementGameStat(u8 index); // rom4 -extern void SaveSerializedGame(void); // load_save -extern u32 gUnknown_0203CF5C; - u8 HandleSavingData(u8 saveType) { u8 i; @@ -836,7 +831,7 @@ u16 sub_815355C(void) struct SaveSection* savSection; savSection = gFastSaveSection = &gSaveDataBuffer; - if (gFlashMemoryPresent != 1) + if (gFlashMemoryPresent != TRUE) return 0; UpdateSaveAddresses(); GetSaveValidStatus(gRamSaveSectionLocations); @@ -897,12 +892,6 @@ u32 sub_8153634(u8 sector, u8* src) return 1; } -extern void save_serialize_map(void); -extern void sub_8076D5C(void); -extern void sav2_gender2_inplace_and_xFE(void); -extern void sub_800ADF8(void); -extern bool8 sub_800A520(void); - void sub_8153688(u8 taskId) { s16* taskData = gTasks[taskId].data; diff --git a/src/trader.c b/src/trader.c new file mode 100644 index 000000000..4914f8140 --- /dev/null +++ b/src/trader.c @@ -0,0 +1,209 @@ +#include "global.h" +#include "constants/decorations.h" +#include "constants/mauville_man.h" +#include "decoration.h" +#include "decoration_inventory.h" +#include "event_data.h" +#include "main.h" +#include "menu.h" +#include "menu_helpers.h" +#include "script.h" +#include "constants/songs.h" +#include "sound.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "script_menu.h" + +static const u8 * const gUnknown_085B09E4[] = +{ + gText_Tristan, + gText_Philip, + gText_Dennis, + gText_Roberto, +}; + +static const u8 gTraderDecorations[] = +{ + DECOR_DUSKULL_DOLL, + DECOR_BALL_CUSHION, + DECOR_TIRE, + DECOR_PRETTY_FLOWERS, +}; + +void TraderSetup(void) +{ + u8 i; + struct MauvilleOldManTrader *trader = &gSaveBlock1Ptr->oldMan.trader; + + trader->id = MAUVILLE_MAN_TRADER; + trader->alreadyTraded = FALSE; + + for (i = 0; i < 4; i++) + { + StringCopy(trader->unk5[i], gUnknown_085B09E4[i]); + trader->unk1[i] = gTraderDecorations[i]; + trader->language[i] = GAME_LANGUAGE; + } +} + +void sub_8133A60(void) +{ + struct MauvilleOldManTrader *trader = &gSaveBlock1Ptr->oldMan.trader; + trader->alreadyTraded = FALSE; +} + +void CreateAvailableDecorationsMenu(u8 taskId) +{ + u8 i; + s16 * data = gTasks[taskId].data; + struct MauvilleOldManTrader *trader = &gSaveBlock1Ptr->oldMan.trader; + struct WindowTemplate windowTemplate = {0, 1, 1, 10, 10, 15, 1}; + s32 windowWidth = GetStringWidth(1, gText_Exit, 0); + s32 fiveMarksWidth = GetStringWidth(1, gText_FiveMarks, 0); + for (i = 0; i < 4; i++) + { + s32 curWidth; + if (trader->unk1[i] > NUM_DECORATIONS) + curWidth = fiveMarksWidth; + else + curWidth = GetStringWidth(1, gDecorations[trader->unk1[i]].name, 0); + if (curWidth > windowWidth) + windowWidth = curWidth; + } + windowTemplate.width = convert_pixel_width_to_tile_width(windowWidth); + data[3] = AddWindow(&windowTemplate); + SetWindowBorderStyle(data[3], FALSE, 0x214, 14); + for (i = 0; i < 4; i++) + { + if (trader->unk1[i] > NUM_DECORATIONS) + PrintTextOnWindow(data[3], 1, gText_FiveMarks, 8, 16 * i + 1, 255, NULL); + else + PrintTextOnWindow(data[3], 1, gDecorations[trader->unk1[i]].name, 8, 16 * i + 1, 255, NULL); + } + PrintTextOnWindow(data[3], 1, gText_Exit, 8, 16 * i + 1, 255, NULL); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[3], 5, 0); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_8133BE4(u8 taskId, u8 decorationId) +{ + s16 * data = gTasks[taskId].data; + if (decorationId > NUM_DECORATIONS) + { + gSpecialVar_0x8004 = 0xFFFF; + } + else + { + gSpecialVar_0x8004 = decorationId; + } + + sub_8198070(data[3], FALSE); + ClearWindowTilemap(data[3]); + RemoveWindow(data[3]); + schedule_bg_copy_tilemap_to_vram(0); + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +void Task_HandleGetDecorationMenuInput(u8 taskId) +{ + struct MauvilleOldManTrader *trader = &gSaveBlock1Ptr->oldMan.trader; + s8 input = ProcessMenuInput(); + + switch (input) + { + case -2: + break; + case -1: + case 4: + PlaySE(SE_SELECT); + sub_8133BE4(taskId, 0); + break; + default: + PlaySE(SE_SELECT); + gSpecialVar_0x8005 = input; + StringCopy(gStringVar1, trader->unk5[input]); + ConvertInternationalString(gStringVar1, trader->language[input]); + sub_8133BE4(taskId, trader->unk1[input]); + break; + } +} + +void ScrSpecial_GetTraderTradedFlag(void) +{ + struct MauvilleOldManTrader *trader = &gSaveBlock1Ptr->oldMan.trader; + gSpecialVar_Result = trader->alreadyTraded; +} + +void ScrSpecial_DoesPlayerHaveNoDecorations(void) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + if (CountDecorationCategoryN(i)) + { + gSpecialVar_Result = FALSE; + return; + } + } + gSpecialVar_Result = TRUE; +} + +void ScrSpecial_IsDecorationFull(void) +{ + gSpecialVar_Result = FALSE; + if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category + && GetFirstEmptyDecorSlot(gDecorations[gSpecialVar_0x8004].category) == -1) + { + sub_8127250(gStringVar2, gDecorations[gSpecialVar_0x8004].category); + gSpecialVar_Result = TRUE; + } +} + +void ScrSpecial_TraderMenuGiveDecoration(void) +{ + CreateTask(sub_8127208, 0); +} + +void sub_8133DA0(u8 taskId) +{ + if (IsSelectedDecorInThePC() == TRUE) + { + gSpecialVar_0x8006 = gCurDecorInventoryItems[gCurDecorationIndex]; + StringCopy(gStringVar3, gDecorations[gSpecialVar_0x8004].name); + StringCopy(gStringVar2, gDecorations[gSpecialVar_0x8006].name); + } + else + { + gSpecialVar_0x8006 = 0xFFFF; + } + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +void sub_8133E1C(u8 taskId) +{ + gSpecialVar_0x8006 = 0; + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +void ScrSpecial_TraderDoDecorationTrade(void) +{ + struct MauvilleOldManTrader *trader = &gSaveBlock1Ptr->oldMan.trader; + + DecorationRemove(gSpecialVar_0x8006); + DecorationAdd(gSpecialVar_0x8004); + StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2Ptr->playerName); + trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006; + trader->language[gSpecialVar_0x8005] = GAME_LANGUAGE; + trader->alreadyTraded = TRUE; +} + +void ScrSpecial_TraderMenuGetDecoration(void) +{ + u8 taskId = CreateTask(Task_HandleGetDecorationMenuInput, 0); + CreateAvailableDecorationsMenu(taskId); +} @@ -1380,13 +1380,13 @@ void PutFanClubSpecialOnTheAir(void) StringCopy(show->fanClubSpecial.idolName, name); tv_store_id_2x(show); show->fanClubSpecial.language = gGameLanguage; - if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->unk_31A0 == LANGUAGE_JAPANESE) + if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->linkBattleRecords.languages[0] == LANGUAGE_JAPANESE) { show->fanClubSpecial.idolNameLanguage = LANGUAGE_JAPANESE; } else { - show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->unk_31A0; + show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->linkBattleRecords.languages[0]; } } @@ -2465,7 +2465,7 @@ bool8 sub_80EE7C0(void) { return TRUE; } - if (gSaveBlock1Ptr->linkBattleRecords[0].name[0] == EOS) + if (gSaveBlock1Ptr->linkBattleRecords.entries[0].name[0] == EOS) { return TRUE; } @@ -2945,7 +2945,7 @@ static void sub_80EF40C(u8 varIdx, TVShow *show) { if (show->smartshopperShow.itemIds[i] != ITEM_NONE) { - price += itemid_get_market_price(show->smartshopperShow.itemIds[i]) * show->smartshopperShow.itemAmounts[i]; + price += ItemId_GetPrice(show->smartshopperShow.itemIds[i]) * show->smartshopperShow.itemAmounts[i]; } } if (show->smartshopperShow.priceReduced == TRUE) @@ -5120,7 +5120,7 @@ static void DoTVShowTodaysSmartShopper(void) break; case 1: TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); - StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[0])->name); + StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0])); TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0]); sTVShowState += 1 + (Random() % 4); break; @@ -5148,7 +5148,7 @@ static void DoTVShowTodaysSmartShopper(void) } break; case 6: - StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[1])->name); + StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[1])); TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[1]); if (show->smartshopperShow.itemIds[2] != ITEM_NONE) { @@ -5164,7 +5164,7 @@ static void DoTVShowTodaysSmartShopper(void) } break; case 7: - StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[2])->name); + StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[2])); TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[2]); if (show->smartshopperShow.priceReduced == TRUE) { @@ -5201,7 +5201,7 @@ static void DoTVShowTodaysSmartShopper(void) break; case 11: TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language); - StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[0])->name); + StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0])); if (show->smartshopperShow.priceReduced == TRUE) { sTVShowState = 8; @@ -5344,7 +5344,7 @@ static void DoTVShowPokemonTodaySuccessfulCapture(void) sTVShowState = 2; break; case 2: - StringCopy(gStringVar2, ItemId_GetItem(show->pokemonToday.ball)->name); + StringCopy(gStringVar2, ItemId_GetName(show->pokemonToday.ball)); TV_PrintIntToStringVar(2, show->pokemonToday.nBallsUsed); if (show->pokemonToday.nBallsUsed < 4) { @@ -6457,7 +6457,7 @@ static void DoTVShowHoennTreasureInvestigators(void) switch (state) { case 0: - StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); + StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item)); if (show->treasureInvestigators.location == MAPSEC_DYNAMIC) { switch (show->treasureInvestigators.mapDataId) @@ -6476,13 +6476,13 @@ static void DoTVShowHoennTreasureInvestigators(void) } break; case 1: - StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); + StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item)); TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language); GetMapName(gStringVar3, show->treasureInvestigators.location, 0); TVShowDone(); break; case 2: - StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name); + StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item)); TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language); TVShowDone(); break; @@ -6598,7 +6598,7 @@ static void DoTVShowBreakingNewsTV(void) break; case 3: TV_PrintIntToStringVar(0, show->breakingNews.balls); - StringCopy(gStringVar2, ItemId_GetItem(show->breakingNews.caughtMonBall)->name); + StringCopy(gStringVar2, ItemId_GetName(show->breakingNews.caughtMonBall)); sTVShowState = 4; break; case 4: @@ -6788,7 +6788,7 @@ static void DoTVShowPokemonLotteryWinnerFlashReport(void) { StringCopy(gStringVar2, gText_Third); } - StringCopy(gStringVar3, ItemId_GetItem(show->lottoWinner.item)->name); + StringCopy(gStringVar3, ItemId_GetName(show->lottoWinner.item)); TVShowDone(); ShowFieldMessage(sTVPokemonLotteryWinnerFlashReportTextGroup[state]); } @@ -7530,7 +7530,7 @@ static void DoTVShowSecretBaseSecrets(void) sTVShowState = show->secretBaseSecrets.savedState; break; case 19: - StringCopy(gStringVar2, ItemId_GetItem(show->secretBaseSecrets.item)->name); + StringCopy(gStringVar2, ItemId_GetName(show->secretBaseSecrets.item)); sTVShowState = show->secretBaseSecrets.savedState; break; case 20: diff --git a/sym_common.txt b/sym_common.txt index b0548a84c..b05f850e1 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -8,24 +8,8 @@ .include "link_rfu.o" .include "rtc.o" .include "battle_main.o" - -gRngValue: @ 3005D80 - .space 0x4 - -gRng2Value: @ 3005D84 - .space 0x4 - -gFlashMemoryPresent: @ 3005D88 - .space 0x4 - -gSaveBlock1Ptr: @ 3005D8C - .space 0x4 - -gSaveBlock2Ptr: @ 3005D90 - .space 0x4 - -gPokemonStoragePtr: @ 3005D94 - .space 0x4 + .include "random.o" + .include "load_save.o" gInGameOpponentsNo: @ 3005D98 .space 0x4 diff --git a/sym_ewram.txt b/sym_ewram.txt index 9bf04d201..24b5a3d68 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -318,7 +318,7 @@ gUnknown_02039B52: @ 2039B52 gUnknown_02039B54: @ 2039B54 .space 0x4 -gUnknown_02039B58: @ 2039B58 +gTrainerCards: @ 2039B58 .space 0x14 gUnknown_02039B6C: @ 2039B6C @@ -414,10 +414,7 @@ gUnknown_02039DD0: @ 2039DD0 .space 0x4 .include "src/map_name_popup.o" - .space 0x3 - -gBagPockets: @ 2039DD8 - .space 0x28 + .include "src/item.o" gUnknown_02039E00: @ 2039E00 .space 0x100 @@ -713,11 +710,7 @@ gUnknown_0203AB6F: @ 203AB6F gUnknown_0203AB70: @ 203AB70 .space 0x4 -gResultsWindowId: @ 203AB74 - .space 0x4 - -gUnknown_0203AB78: @ 203AB78 - .space 0x4 + .include "src/battle_records.o" gUnknown_0203AB7C: @ 203AB7C .space 0x4 |