diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-10-06 18:03:21 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-06 18:03:21 -0400 |
commit | fb9b695f9a366f662b5262f440d77c770b131d0d (patch) | |
tree | 4aea0466e25e069d4b17fc8d1d0cdd23bee6e128 | |
parent | b4b509f68477068ae111cc5a6094d858d396c4bb (diff) | |
parent | 076971ee687e1956a1b01144634b3e3468e23cff (diff) |
Merge pull request #112 from ultima-soul/new_game
Decompile/port new_game
46 files changed, 297 insertions, 429 deletions
diff --git a/asm/battle_tower.s b/asm/battle_tower.s index abb47aba9..08fefffbc 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2799,7 +2799,7 @@ _080E6F0E: ldr r4, _080E6FA4 @ =gSaveBlock2Ptr ldr r1, [r4] adds r1, 0xA - bl CopyUnalignedWord + bl CopyTrainerId adds r0, r5, 0x4 ldr r1, [r4] bl StringCopy7 @@ -3369,7 +3369,7 @@ _080E7372: adds r0, 0xC ldr r1, [r5] adds r1, 0xA - bl CopyUnalignedWord + bl CopyTrainerId adds r0, r7, 0x4 ldr r1, [r5] bl StringCopy7 diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 604929f1f..ffd31bcc8 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -868,8 +868,8 @@ _080BDD2C: .4byte gUnknown_83ECED4 _080BDD30: .4byte 0x0000ffff thumb_func_end sub_80BDCB8 - thumb_func_start sub_80BDD34 -sub_80BDD34: @ 80BDD34 + thumb_func_start InitEasyChatPhrases +InitEasyChatPhrases: @ 80BDD34 push {r4-r7,lr} movs r4, 0 ldr r5, _080BDE00 @ =gSaveBlock1Ptr @@ -988,7 +988,7 @@ _080BDE18: .4byte 0x0000ffff _080BDE1C: .4byte 0x00002cc4 _080BDE20: .4byte 0x00002cd0 _080BDE24: .4byte 0x00002f10 - thumb_func_end sub_80BDD34 + thumb_func_end InitEasyChatPhrases thumb_func_start sub_80BDE28 sub_80BDE28: @ 80BDE28 diff --git a/asm/event_data.s b/asm/event_data.s index 690134c27..263bd99c3 100644 --- a/asm/event_data.s +++ b/asm/event_data.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_806E0D0 -sub_806E0D0: @ 806E0D0 + thumb_func_start InitEventData +InitEventData: @ 806E0D0 push {r4,lr} ldr r4, _0806E108 @ =gSaveBlock1Ptr ldr r0, [r4] @@ -35,7 +35,7 @@ sub_806E0D0: @ 806E0D0 .align 2, 0 _0806E108: .4byte gSaveBlock1Ptr _0806E10C: .4byte gUnknown_20370E0 - thumb_func_end sub_806E0D0 + thumb_func_end InitEventData thumb_func_start sub_806E110 sub_806E110: @ 806E110 diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 5b28e21d5..75475b667 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -1458,7 +1458,7 @@ sub_80F2934: @ 80F2934 movs r0, 0x3 @ MAP_GROUP(INDIGO_PLATEAU_EXTERIOR) movs r1, 0x9 @ MAP_NUM(INDIGO_PLATEAU_EXTERIOR) movs r3, 0xB - bl Overworld_SetWarpDestination + bl SetWarpDestination bl DoWarp bl ResetInitialPlayerAvatarState add sp, 0x4 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index f65efc5f7..4ddbed23a 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3356,7 +3356,7 @@ sub_8117440: @ 8117440 asrs r5, 24 str r5, [sp] adds r3, r4, 0 - bl Overworld_SetWarpDestination + bl SetWarpDestination ldr r0, [r6] movs r1, 0x4 ldrsb r1, [r0, r1] @@ -3423,7 +3423,7 @@ sub_81174B4: @ 81174B4 adds r0, r4, 0 adds r1, r5, 0 mov r3, r8 - bl Overworld_SetWarpDestination + bl SetWarpDestination bl WarpIntoMap add sp, 0x4 pop {r3} diff --git a/asm/new_game.s b/asm/new_game.s deleted file mode 100644 index 15c06e8eb..000000000 --- a/asm/new_game.s +++ /dev/null @@ -1,340 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start WriteUnalignedWord -WriteUnalignedWord: @ 80548FC - strb r0, [r1] - lsrs r2, r0, 8 - strb r2, [r1, 0x1] - lsrs r2, r0, 16 - strb r2, [r1, 0x2] - lsrs r0, 24 - strb r0, [r1, 0x3] - bx lr - thumb_func_end WriteUnalignedWord - - thumb_func_start CopyUnalignedWord -CopyUnalignedWord: @ 805490C - push {r4,lr} - adds r4, r0, 0 - adds r3, r1, 0 - movs r2, 0 -_08054914: - adds r0, r4, r2 - adds r1, r3, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _08054914 - pop {r4} - pop {r0} - bx r0 - thumb_func_end CopyUnalignedWord - - thumb_func_start InitPlayerTrainerId -InitPlayerTrainerId: @ 8054928 - push {r4,lr} - bl Random - adds r4, r0, 0 - bl GetGeneratedTrainerIdLower - lsls r4, 16 - lsls r0, 16 - lsrs r0, 16 - orrs r4, r0 - ldr r0, _08054950 @ =gSaveBlock2Ptr - ldr r1, [r0] - adds r1, 0xA - adds r0, r4, 0 - bl WriteUnalignedWord - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08054950: .4byte gSaveBlock2Ptr - thumb_func_end InitPlayerTrainerId - - thumb_func_start SetDefaultOptions -SetDefaultOptions: @ 8054954 - ldr r3, _080549A8 @ =gSaveBlock2Ptr - ldr r2, [r3] - ldrb r1, [r2, 0x14] - movs r0, 0x8 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x14] - ldr r2, [r3] - ldrb r1, [r2, 0x14] - movs r0, 0x7 - ands r0, r1 - strb r0, [r2, 0x14] - ldr r2, [r3] - ldrb r1, [r2, 0x15] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r2, [r3] - ldrb r1, [r2, 0x15] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r2, [r3] - ldrb r1, [r2, 0x15] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r2, [r3] - ldrb r1, [r2, 0x15] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x15] - ldr r1, [r3] - movs r0, 0 - strb r0, [r1, 0x13] - bx lr - .align 2, 0 -_080549A8: .4byte gSaveBlock2Ptr - thumb_func_end SetDefaultOptions - - thumb_func_start sub_80549AC -sub_80549AC: @ 80549AC - push {r4,lr} - ldr r4, _080549D0 @ =gSaveBlock2Ptr - ldr r0, [r4] - adds r0, 0x28 - movs r1, 0 - movs r2, 0x34 - bl memset - ldr r0, [r4] - adds r0, 0x5C - movs r1, 0 - movs r2, 0x34 - bl memset - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080549D0: .4byte gSaveBlock2Ptr - thumb_func_end sub_80549AC - - thumb_func_start sub_80549D4 -sub_80549D4: @ 80549D4 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r0, _080549F0 @ =gSaveBlock2Ptr - ldr r1, [r0] - adds r1, 0xB0 - ldr r2, _080549F4 @ =0x050001fa - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080549F0: .4byte gSaveBlock2Ptr -_080549F4: .4byte 0x050001fa - thumb_func_end sub_80549D4 - - thumb_func_start sub_80549F8 -sub_80549F8: @ 80549F8 - push {lr} - sub sp, 0x4 - movs r2, 0x1 - negs r2, r2 - movs r0, 0x6 - str r0, [sp] - movs r0, 0x4 - movs r1, 0x1 - movs r3, 0x6 - bl Overworld_SetWarpDestination - bl WarpIntoMap - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_80549F8 - - thumb_func_start Sav2_ClearSetDefault -Sav2_ClearSetDefault: @ 8054A18 - push {lr} - bl ClearSav2 - bl SetDefaultOptions - pop {r0} - bx r0 - thumb_func_end Sav2_ClearSetDefault - - thumb_func_start ResetMenuAndMonGlobals -ResetMenuAndMonGlobals: @ 8054A28 - push {lr} - ldr r1, _08054A5C @ =gUnknown_2031DB0 - movs r0, 0 - strb r0, [r1] - bl ZeroPlayerPartyMons - bl ZeroEnemyPartyMons - bl sub_81089BC - bl ResetTMCaseCursorPos - bl BerryPouch_CursorResetToTop - bl sub_811089C - bl Random - lsls r0, 16 - lsrs r0, 16 - bl sub_8083214 - bl sub_806E6FC - pop {r0} - bx r0 - .align 2, 0 -_08054A5C: .4byte gUnknown_2031DB0 - thumb_func_end ResetMenuAndMonGlobals - - thumb_func_start sub_8054A60 -sub_8054A60: @ 8054A60 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - ldr r6, _08054B50 @ =gSaveBlock1Ptr - ldr r1, [r6] - ldr r0, _08054B54 @ =0x00003a4c - mov r8, r0 - add r1, r8 - mov r0, sp - bl StringCopy - ldr r1, _08054B58 @ =gUnknown_2031DB0 - movs r0, 0x1 - strb r0, [r1] - ldr r4, _08054B5C @ =gSaveBlock2Ptr - ldr r0, [r4] - movs r1, 0xF2 - lsls r1, 4 - adds r0, r1 - movs r5, 0 - str r5, [r0] - bl ZeroPlayerPartyMons - bl ZeroEnemyPartyMons - bl sub_80549D4 - bl ClearSav1 - bl ClearMailData - ldr r0, [r4] - strb r5, [r0, 0x9] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0xA8 - str r5, [r1] - adds r0, 0xAC - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xAD - strb r5, [r0] - bl InitPlayerTrainerId - bl PlayTimeCounter_Reset - bl sub_80549AC - bl sub_806E0D0 - bl ResetFameChecker - ldr r0, [r6] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - ldr r1, _08054B60 @ =0x00000bb8 - bl SetMoney - bl sub_8054E68 - bl InitLinkBattleRecords - bl sub_80A0904 - bl sub_80A0958 - bl sub_806E190 - ldr r0, _08054B64 @ =gPlayerPartyCount - strb r5, [r0] - bl ZeroPlayerPartyMons - bl sub_808C7E0 - bl ClearRoamerData - ldr r0, [r6] - ldr r1, _08054B68 @ =0x00000296 - adds r0, r1 - strh r5, [r0] - bl ClearItemSlotsInAllBagPockets - bl sub_80EB658 - bl sub_809C794 - bl sub_80BDD34 - bl sub_8113044 - bl copy_strings_to_sav1 - bl sub_8054B70 - bl sub_8143D24 - bl sub_815D838 - bl sub_80549F8 - ldr r0, _08054B6C @ =gUnknown_81A6481 - bl ScriptContext2_RunNewScript - ldr r0, [r6] - add r0, r8 - mov r1, sp - bl StringCopy - bl sub_815EE0C - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08054B50: .4byte gSaveBlock1Ptr -_08054B54: .4byte 0x00003a4c -_08054B58: .4byte gUnknown_2031DB0 -_08054B5C: .4byte gSaveBlock2Ptr -_08054B60: .4byte 0x00000bb8 -_08054B64: .4byte gPlayerPartyCount -_08054B68: .4byte 0x00000296 -_08054B6C: .4byte gUnknown_81A6481 - thumb_func_end sub_8054A60 - - thumb_func_start sub_8054B70 -sub_8054B70: @ 8054B70 - push {r4-r6,lr} - sub sp, 0x4 - mov r0, sp - movs r5, 0 - strh r5, [r0] - ldr r4, _08054BBC @ =gSaveBlock2Ptr - ldr r1, [r4] - movs r0, 0xAF - lsls r0, 4 - adds r1, r0 - ldr r6, _08054BC0 @ =0x01000008 - mov r0, sp - adds r2, r6, 0 - bl CpuSet - ldr r0, [r4] - ldr r1, _08054BC4 @ =0x00000af8 - adds r0, r1 - movs r1, 0 - bl sub_815EE54 - bl ResetPokeJumpResults - mov r0, sp - adds r0, 0x2 - strh r5, [r0] - ldr r1, [r4] - movs r2, 0xB1 - lsls r2, 4 - adds r1, r2 - adds r2, r6, 0 - bl CpuSet - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08054BBC: .4byte gSaveBlock2Ptr -_08054BC0: .4byte 0x01000008 -_08054BC4: .4byte 0x00000af8 - thumb_func_end sub_8054B70 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 5cc051c8a..1bf22ede1 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -289,8 +289,8 @@ sub_8054E40: @ 8054E40 _08054E64: .4byte 0x0000406e thumb_func_end sub_8054E40 - thumb_func_start sub_8054E68 -sub_8054E68: @ 8054E68 + thumb_func_start ResetGameStats +ResetGameStats: @ 8054E68 push {r4,r5,lr} movs r2, 0 ldr r5, _08054E8C @ =gSaveBlock1Ptr @@ -311,7 +311,7 @@ _08054E74: bx r0 .align 2, 0 _08054E8C: .4byte gSaveBlock1Ptr - thumb_func_end sub_8054E68 + thumb_func_end ResetGameStats thumb_func_start IncrementGameStat IncrementGameStat: @ 8054E90 @@ -1003,8 +1003,8 @@ WarpIntoMap: @ 8055378 bx r0 thumb_func_end WarpIntoMap - thumb_func_start Overworld_SetWarpDestination -Overworld_SetWarpDestination: @ 805538C + thumb_func_start SetWarpDestination +SetWarpDestination: @ 805538C push {r4-r6,lr} sub sp, 0x8 adds r4, r0, 0 @@ -1034,7 +1034,7 @@ Overworld_SetWarpDestination: @ 805538C bx r0 .align 2, 0 _080553C4: .4byte gUnknown_2031DBC - thumb_func_end Overworld_SetWarpDestination + thumb_func_end SetWarpDestination thumb_func_start warp1_set_2 warp1_set_2: @ 80553C8 @@ -1049,7 +1049,7 @@ warp1_set_2: @ 80553C8 movs r3, 0x1 negs r3, r3 str r3, [sp] - bl Overworld_SetWarpDestination + bl SetWarpDestination add sp, 0x4 pop {r0} bx r0 @@ -1151,7 +1151,7 @@ sub_805546C: @ 805546C lsls r4, 24 asrs r4, 24 str r4, [sp] - bl Overworld_SetWarpDestination + bl SetWarpDestination _0805549A: add sp, 0x4 pop {r4} @@ -1458,7 +1458,7 @@ _080556BC: lsls r4, r6, 24 asrs r4, 24 str r4, [sp] - bl Overworld_SetWarpDestination + bl SetWarpDestination _080556D6: add sp, 0x4 pop {r4-r6} @@ -1627,7 +1627,7 @@ sub_80557C4: @ 80557C4 lsls r4, r5, 24 asrs r4, 24 str r4, [sp] - bl Overworld_SetWarpDestination + bl SetWarpDestination b _08055818 _080557FC: bl mapheader_run_script_with_tag_x6 @@ -1700,7 +1700,7 @@ sub_8055864: @ 8055864 negs r3, r3 str r3, [sp] adds r2, r3, 0 - bl Overworld_SetWarpDestination + bl SetWarpDestination bl sub_8055E94 bl warp_shift bl set_current_map_header_from_sav1_save_old_name @@ -3493,7 +3493,7 @@ CB2_NewGame: @ 8056644 bl sub_80569BC bl StopMapMusic bl sub_8056420 - bl sub_8054A60 + bl NewGameInitData bl ResetInitialPlayerAvatarState bl PlayTimeCounter_Start bl ScriptContext1_Init diff --git a/asm/player_pc.s b/asm/player_pc.s index ca08fe3b2..fa528abb9 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_80EB658 -sub_80EB658: @ 80EB658 + thumb_func_start NewGameInitPCItems +NewGameInitPCItems: @ 80EB658 push {r4-r6,lr} movs r4, 0 bl ClearPCItemSlots @@ -48,7 +48,7 @@ _080EB6A0: bx r0 .align 2, 0 _080EB6A8: .4byte gUnknown_8402220 - thumb_func_end sub_80EB658 + thumb_func_end NewGameInitPCItems thumb_func_start sub_80EB6AC sub_80EB6AC: @ 80EB6AC diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 47097a060..180ec0e5d 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1897,8 +1897,8 @@ _0808C7D8: .4byte mapldr_0808C6D8 _0808C7DC: .4byte CB2_ReturnToField thumb_func_end sub_808C7B4 - thumb_func_start sub_808C7E0 -sub_808C7E0: @ 808C7E0 + thumb_func_start ResetPokemonStorageSystem +ResetPokemonStorageSystem: @ 808C7E0 push {r4-r6,lr} movs r0, 0 bl sub_808BA00 @@ -1954,7 +1954,7 @@ _0808C832: bx r0 .align 2, 0 _0808C850: .4byte gUnknown_84186CD - thumb_func_end sub_808C7E0 + thumb_func_end ResetPokemonStorageSystem thumb_func_start sub_808C854 sub_808C854: @ 808C854 diff --git a/asm/start_menu.s b/asm/start_menu.s index 40a678a01..7ab76140f 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -1386,7 +1386,7 @@ _0806F81A: cmp r0, 0x2 bne _0806F82E _0806F826: - ldr r0, _0806F83C @ =gUnknown_2031DB0 + ldr r0, _0806F83C @ =gDifferentSaveFile ldrb r0, [r0] cmp r0, 0 bne _0806F848 @@ -1397,7 +1397,7 @@ _0806F82E: b _0806F864 .align 2, 0 _0806F838: .4byte gSaveFileStatus -_0806F83C: .4byte gUnknown_2031DB0 +_0806F83C: .4byte gDifferentSaveFile _0806F840: .4byte gUnknown_3000FA4 _0806F844: .4byte sub_806F86C _0806F848: @@ -1423,7 +1423,7 @@ _0806F866: thumb_func_start sub_806F86C sub_806F86C: @ 806F86C push {lr} - ldr r0, _0806F880 @ =gUnknown_2031DB0 + ldr r0, _0806F880 @ =gDifferentSaveFile ldrb r0, [r0] cmp r0, 0x1 bne _0806F88C @@ -1432,7 +1432,7 @@ sub_806F86C: @ 806F86C bl sub_806F69C b _0806F894 .align 2, 0 -_0806F880: .4byte gUnknown_2031DB0 +_0806F880: .4byte gDifferentSaveFile _0806F884: .4byte gUnknown_81C566A _0806F888: .4byte sub_806F8C0 _0806F88C: @@ -1537,7 +1537,7 @@ sub_806F940: @ 806F940 push {r4,lr} movs r0, 0 bl IncrementGameStat - ldr r4, _0806F95C @ =gUnknown_2031DB0 + ldr r4, _0806F95C @ =gDifferentSaveFile ldrb r0, [r4] cmp r0, 0x1 bne _0806F960 @@ -1547,7 +1547,7 @@ sub_806F940: @ 806F940 strb r0, [r4] b _0806F966 .align 2, 0 -_0806F95C: .4byte gUnknown_2031DB0 +_0806F95C: .4byte gDifferentSaveFile _0806F960: movs r0, 0 bl TrySavingData diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc index c333c6336..44861f91f 100644 --- a/data/map_event_scripts.inc +++ b/data/map_event_scripts.inc @@ -1435,7 +1435,7 @@ Text_1A644F:: @ 81A644F .string "once. Is that okay?$" -gUnknown_81A6481:: @ 81A6481 +EventScript_ResetAllMapFlags:: @ 81A6481 setflag FLAG_0x02B setflag FLAG_0x02C setflag FLAG_0x033 diff --git a/include/battle_records.h b/include/battle_records.h new file mode 100644 index 000000000..97f28a3b0 --- /dev/null +++ b/include/battle_records.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_RECORDS_H +#define GUARD_BATTLE_RECORDS_H + +void ClearPlayerLinkBattleRecords(void); + +#endif // GUARD_BATTLE_RECORDS_H diff --git a/include/berry.h b/include/berry.h index c5a132ccb..0e554a789 100644 --- a/include/berry.h +++ b/include/berry.h @@ -62,6 +62,7 @@ void FieldObjectInteractionPickBerryTree(void); void FieldObjectInteractionRemoveBerryTree(void); u8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); +void sub_809C794(void); const struct Berry * sub_809C8A0(u8 berryIdx); extern const struct Berry gBerries[]; diff --git a/include/berry_pouch.h b/include/berry_pouch.h index cd9866d81..f478ff194 100644 --- a/include/berry_pouch.h +++ b/include/berry_pouch.h @@ -19,5 +19,6 @@ void BerryPouch_SetExitCallback(void (*exitCallback)(void)); void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect); void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc); void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId); +void BerryPouch_CursorResetToTop(void); #endif //GUARD_BERRY_POUCH_H diff --git a/include/berry_powder.h b/include/berry_powder.h index 89582aacc..f0e77c44b 100644 --- a/include/berry_powder.h +++ b/include/berry_powder.h @@ -2,5 +2,6 @@ #define GUARD_BERRY_POWDER_H u32 GetBerryPowder(void); +void SetBerryPowder(u32 *powder, u32 amount); #endif //GUARD_BERRY_POWDER_H diff --git a/include/easy_chat.h b/include/easy_chat.h index bd5c9a026..a487c9456 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -38,6 +38,7 @@ void InitializeEasyChatWordArray(u16 *words, u16 length); void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); void sub_80BDE28(void); +void InitEasyChatPhrases(void); void EnableRareWord(u8); #endif // GUARD_EASYCHAT_H diff --git a/include/event_data.h b/include/event_data.h index 013579ab5..5f455467d 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -37,6 +37,7 @@ void sub_806E6FC(void); void sub_806E2D0(void); void sub_806E370(void); bool32 sub_806E25C(void); +void sub_806E190(void); extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; diff --git a/include/event_scripts.h b/include/event_scripts.h index 310335196..41a7a7bf2 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1155,4 +1155,7 @@ extern const u8 EventScript_SafariOutOfBalls[]; extern const u8 EventScript_ItemfinderDigUpUnderfootItem[]; +// new_game +extern const u8 EventScript_ResetAllMapFlags[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/global.h b/include/global.h index 55233a340..35f8de01b 100644 --- a/include/global.h +++ b/include/global.h @@ -205,6 +205,14 @@ struct UnkSaveBlock2Substruct_55C /* 0x016:0x572 */ u8 unk_16; }; // size: 0x018 +struct UnkSaveBlock2Substruct_B0 +{ + /* 0x000:0x0B0 */ u8 field_0[0x3F0]; + /* 0x3F0:0x4A0 */ u32 field_3F0[0x2F]; + /* 0x4AC:0x55C */ struct UnkSaveBlock2Substruct_55C field_4AC; + /* 0x4C4:0x574 */ u8 field_4C4[0x324]; +}; // size: 0x7E8 + struct SaveBlock2 { /*0x000*/ u8 playerName[PLAYER_NAME_LENGTH]; @@ -227,14 +235,16 @@ struct SaveBlock2 /*0x098*/ struct Time localTimeOffset; /*0x0A0*/ struct Time lastBerryTreeUpdate; /*0x0A8*/ u32 field_A8; - /*0x0AC*/ u8 filler_AC[0x3F4]; - /*0x4A0*/ u32 unk_4A0[0x2F]; - /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; - /*0x574*/ u8 filler_574[0x324]; + /*0x0AC*/ u8 field_AC; + /*0x0AD*/ u8 field_AD; + /*0x0AE*/ u8 filler_AE[0x2]; + /*0x0B0*/ struct UnkSaveBlock2Substruct_B0 unk_B0; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; - /*0xB00*/ u8 filler_B00[0x420]; + /*0xB00*/ struct PokemonJumpResults pokeJump; + /*0xB10*/ struct BerryPickingResults berryPick; + /*0xB20*/ u8 filler_B20[0x400]; /*0xF20*/ u32 encryptionKey; }; diff --git a/include/item.h b/include/item.h index 583a47cdc..6e0af31bb 100644 --- a/include/item.h +++ b/include/item.h @@ -62,7 +62,7 @@ u8 ItemId_GetBattleUsage(u16 itemId); ItemUseFunc ItemId_GetBattleFunc(u16 itemId); u8 ItemId_GetSecondaryId(u16 itemId); u16 itemid_get_market_price(u16 itemId); -void ClearItemSlotsInAllBagPockets(void); +void ClearBag(void); void ClearPCItemSlots(void); void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); diff --git a/include/item_menu.h b/include/item_menu.h index 2e83ed1f4..ceaf277a3 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -26,6 +26,7 @@ extern u16 gSpecialVar_ItemId; void sub_81AAC50(void); void sub_81AAC70(void); void sub_8108CF0(void); +void sub_81089BC(void); void sub_810B108(u8); void ReturnToBagFromKeyItem(void); void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2); diff --git a/include/main.h b/include/main.h index d326909ff..589709436 100644 --- a/include/main.h +++ b/include/main.h @@ -67,6 +67,7 @@ void SetVBlankCounter1Ptr(u32 *ptr); void DisableVBlankCounter1(void); void StartTimer1(void); void SeedRngAndSetTrainerId(void); +u16 GetGeneratedTrainerIdLower(void); extern const char RomHeaderGameCode[4]; extern const char RomHeaderSoftwareVersion; diff --git a/include/mevent.h b/include/mevent.h index b61fa732d..cee88e403 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -66,5 +66,6 @@ void MENews_RemoveScrollIndicatorArrowPair(void); bool32 WonderNews_Test_Unk_02(void); bool32 WonderCard_Test_Unk_08_6(void); u32 MENews_GetInput(u16 input); +void sub_8143D24(void); #endif //GUARD_MEVENT_H diff --git a/include/new_game.h b/include/new_game.h index a45b090c8..ed40546ba 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -3,17 +3,10 @@ #include "global.h" -void WriteUnalignedWord(u32 var, u8 *dataPtr); -u32 ReadUnalignedWord(u8* dataPtr); -void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom); -void InitPlayerTrainerId(void); -void SetDefaultOptions(void); -void ClearPokedexFlags(void); -void WarpToTruck(void); +void SetTrainerId(u32 trainerId, u8 *dst); +void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); -void ResetMiniGamesResults(void); -void sub_808447C(void); -void Sav2_ClearSetDefault(void); void ResetMenuAndMonGlobals(void); +void Sav2_ClearSetDefault(void); #endif // GUARD_NEW_GAME_H diff --git a/include/overworld.h b/include/overworld.h index 92b0f6001..f2ef24e9e 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -49,7 +49,7 @@ void IncrementGameStat(u8 index); void Overworld_SetMapObjTemplateCoords(u8, s16, s16); void Overworld_SetMapObjTemplateMovementType(u8, u8); -void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); void SetDynamicWarpWithCoords(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); @@ -137,6 +137,7 @@ u8 get_map_light_from_warp0(void); const struct MapHeader *warp1_get_mapheader(void); void sub_8055F88(void); void sub_8056788(void); +void ResetGameStats(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/include/player_pc.h b/include/player_pc.h index f527ec9f5..06ab0cb0f 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -21,5 +21,6 @@ struct PlayerPC_Unk_203AAC4 // Exported ROM declarations void sub_816B060(u8 taskId); +void NewGameInitPCItems(void); #endif //GUARD_PLAYER_PC_H diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h new file mode 100644 index 000000000..62d0e610f --- /dev/null +++ b/include/pokemon_jump.h @@ -0,0 +1,8 @@ +#ifndef GUARD_POKEMON_JUMP_H +#define GUARD_POKEMON_JUMP_H + +#include "main.h" + +void ResetPokeJumpResults(void); + +#endif // GUARD_POKEMON_JUMP_H diff --git a/include/pokemon_size_record.h b/include/pokemon_size_record.h index 3fa448cbb..d62ced51d 100644 --- a/include/pokemon_size_record.h +++ b/include/pokemon_size_record.h @@ -11,6 +11,9 @@ void InitLotadSizeRecord(void); void GetLotadSizeRecordInfo(void); void CompareLotadSize(void); +void sub_80A0904(void); +void sub_80A0958(void); + void GiveGiftRibbonToParty(u8 index, u8 ribbonId); #endif // GUARD_POKEMON_SIZE_RECORD_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 8ab9e5f0e..6790fb775 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -14,6 +14,7 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); +void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/quest_log.h b/include/quest_log.h index 0690dd282..7e86e7c2f 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -33,6 +33,8 @@ u8 sub_8112EB4(void); void sub_8113018(const u8 * text, u8 mode); void MapNamePopupWindowIdSetDummy(void); void sub_8111CF0(void); +void sub_811089C(void); +void sub_8113044(void); extern u8 gUnknown_203ADFA; diff --git a/include/trainer_tower.h b/include/trainer_tower.h index 9cca2ea76..82a3e6cdc 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -5,5 +5,7 @@ void PrintTrainerTowerRecords(void); void InitTrainerTowerBattleStruct(void); void FreeTrainerTowerBattleStruct(void); u8 GetTrainerTowerTrainerFrontSpriteId(void); +void sub_815D838(void); +void ResetTrainerTowerResults(void); #endif //GUARD_TRAINER_TOWER_H diff --git a/include/union_room_chat.h b/include/union_room_chat.h new file mode 100644 index 000000000..17e482525 --- /dev/null +++ b/include/union_room_chat.h @@ -0,0 +1,7 @@ +#ifndef GUARD_UNION_ROOM_CHAT_H +#define GUARD_UNION_ROOM_CHAT_H + +void sub_801DD98(void); +void copy_strings_to_sav1(void); + +#endif // GUARD_UNION_ROOM_CHAT_H diff --git a/include/wild_encounter.h b/include/wild_encounter.h index bf53ed6ee..5bcab1249 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -45,5 +45,6 @@ bool8 UpdateRepelCounter(void); void sub_8082740(u8); u8 GetUnownLetterByPersonalityLoByte(u32 personality); bool8 SweetScentWildEncounter(void); +void sub_8083214(u16 randVal); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.txt b/ld_script.txt index a65474cd5..7dbe59085 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -87,7 +87,7 @@ SECTIONS { src/load_save.o(.text); asm/trade.o(.text); src/play_time.o(.text); - asm/new_game.o(.text); + src/new_game.o(.text); asm/overworld.o(.text); src/fieldmap.o(.text); src/metatile_behavior.o(.text); diff --git a/src/battle_records.c b/src/battle_records.c index 3c2032641..38889ca67 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -279,7 +279,7 @@ static void ResetBGPos(void) ChangeBgY(3, 0, 0); } -static void InitLinkBattleRecord(struct LinkBattleRecord * record) +static void ClearLinkBattleRecord(struct LinkBattleRecord *record) { CpuFill16(0, record, sizeof(*record)); record->name[0] = EOS; @@ -289,12 +289,12 @@ static void InitLinkBattleRecord(struct LinkBattleRecord * record) record->draws = 0; } -static void InitLinkBattleRecords_(struct LinkBattleRecords * records) +static void ClearLinkBattleRecords(struct LinkBattleRecords *records) { s32 i; for (i = 0; i < LINK_B_RECORDS_COUNT; i++) - InitLinkBattleRecord(&records->entries[i]); + ClearLinkBattleRecord(&records->entries[i]); SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0); SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0); SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0); @@ -404,7 +404,7 @@ static void AddOpponentLinkBattleRecord(struct LinkBattleRecords * records, cons { i = LINK_B_RECORDS_COUNT - 1; record = &records->entries[LINK_B_RECORDS_COUNT - 1]; - InitLinkBattleRecord(record); + ClearLinkBattleRecord(record); StringCopyN(record->name, namebuf, OT_NAME_LENGTH); record->trainerId = trainerId; } @@ -412,9 +412,9 @@ static void AddOpponentLinkBattleRecord(struct LinkBattleRecords * records, cons SortLinkBattleRecords(records); } -void InitLinkBattleRecords(void) +void ClearPlayerLinkBattleRecords(void) { - InitLinkBattleRecords_(&gSaveBlock2Ptr->linkBattleRecords); + ClearLinkBattleRecords(&gSaveBlock2Ptr->linkBattleRecords); } static void IncTrainerCardWinCount(s32 battlerId) diff --git a/src/berry_powder.c b/src/berry_powder.c index 9b3bbc17f..992e82522 100644 --- a/src/berry_powder.c +++ b/src/berry_powder.c @@ -11,12 +11,12 @@ EWRAM_DATA u8 gUnknown_203F464 = 0; -u32 sub_815EE3C(u32 * a0) +u32 DecryptBerryPowder(u32 * a0) { return *a0 ^ gSaveBlock2Ptr->encryptionKey; } -void sub_815EE54(u32 * a0, u32 a1) +void SetBerryPowder(u32 * a0, u32 a1) { *a0 = gSaveBlock2Ptr->encryptionKey ^ a1; } @@ -28,7 +28,7 @@ void sub_815EE6C(u32 a0) bool8 sub_815EE88(u32 a0) { - if (sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < a0) + if (DecryptBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < a0) return FALSE; else return TRUE; @@ -36,7 +36,7 @@ bool8 sub_815EE88(u32 a0) bool8 sub_815EEB0(void) { - if (sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < gSpecialVar_0x8004) + if (DecryptBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < gSpecialVar_0x8004) return FALSE; else return TRUE; @@ -45,15 +45,15 @@ bool8 sub_815EEB0(void) bool8 sub_815EEE0(u32 a0) { u32 * ptr = &gSaveBlock2Ptr->berryCrush.berryPowderAmount; - u32 amount = sub_815EE3C(ptr) + a0; + u32 amount = DecryptBerryPowder(ptr) + a0; if (amount > 99999) { - sub_815EE54(ptr, 99999); + SetBerryPowder(ptr, 99999); return FALSE; } else { - sub_815EE54(ptr, amount); + SetBerryPowder(ptr, amount); return TRUE; } } @@ -65,8 +65,8 @@ bool8 sub_815EF20(u32 a0) return FALSE; else { - u32 amount = sub_815EE3C(ptr); - sub_815EE54(ptr, amount - a0); + u32 amount = DecryptBerryPowder(ptr); + SetBerryPowder(ptr, amount - a0); return TRUE; } } @@ -78,15 +78,15 @@ bool8 sub_815EF5C(void) return FALSE; else { - u32 amount = sub_815EE3C(ptr); - sub_815EE54(ptr, amount - gSpecialVar_0x8004); + u32 amount = DecryptBerryPowder(ptr); + SetBerryPowder(ptr, amount - gSpecialVar_0x8004); return TRUE; } } u32 GetBerryPowder(void) { - return sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount); + return DecryptBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount); } void sub_815EFBC(u8 windowId, u32 powder, u8 x, u8 y, u8 speed) diff --git a/src/item.c b/src/item.c index 3f33f464d..42dfd334e 100644 --- a/src/item.c +++ b/src/item.c @@ -326,7 +326,7 @@ void ClearPCItemSlots(void) } } -void ClearItemSlotsInAllBagPockets(void) +void ClearBag(void) { u16 i; diff --git a/src/mevent.c b/src/mevent.c index d0d7f59aa..78880c228 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -588,7 +588,7 @@ void DestroyWonderCard(void) ClearRamScript(); sub_806E2D0(); sub_806E370(); - sub_80E7524(gSaveBlock2Ptr->unk_4A0); + sub_80E7524(gSaveBlock2Ptr->unk_B0.field_3F0); } bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data) @@ -769,7 +769,7 @@ void sub_81442CC(struct MEventStruct_Unk1442CC * data) data->unk_14 = 0; for (i = 0; i < 4; i++) data->unk_16[i] = gSaveBlock1Ptr->unk_3120.unk_338[i]; - CopyUnalignedWord(data->unk_4C, gSaveBlock2Ptr->playerTrainerId); + CopyTrainerId(data->unk_4C, gSaveBlock2Ptr->playerTrainerId); StringCopy(data->unk_45, gSaveBlock2Ptr->playerName); for (i = 0; i < 6; i++) data->unk_50[i] = gSaveBlock1Ptr->unk2CA0[i]; diff --git a/src/mevent_server.c b/src/mevent_server.c index 1c2dc4ced..4e2b7280d 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -226,7 +226,7 @@ static u32 ish_mainseq_4(struct mevent_client * svr) sub_8069EA4(svr->recvBuffer, 1000); break; case 18: - memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc); + memcpy(gSaveBlock2Ptr->unk_B0.field_3F0, svr->recvBuffer, 0xbc); ValidateEReaderTrainer(); break; case 21: diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 70566ca58..89df1ee34 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -281,7 +281,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx) { u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; - memcpy(gSaveBlock2Ptr->unk_4A0, (void *)data, 0xBC); + memcpy(gSaveBlock2Ptr->unk_B0.field_3F0, (void *)data, 0xBC); ValidateEReaderTrainer(); StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNewTrainer); ctx->data[2] = 2; diff --git a/src/new_game.c b/src/new_game.c new file mode 100644 index 000000000..58deac9b9 --- /dev/null +++ b/src/new_game.c @@ -0,0 +1,161 @@ +#include "global.h" +#include "new_game.h" +#include "random.h" +#include "main.h" +#include "overworld.h" +#include "constants/maps.h" +#include "load_save.h" +#include "item_menu.h" +#include "tm_case.h" +#include "berry_pouch.h" +#include "quest_log.h" +#include "wild_encounter.h" +#include "event_data.h" +#include "string_util.h" +#include "mail_data.h" +#include "play_time.h" +#include "money.h" +#include "battle_records.h" +#include "pokemon_size_record.h" +#include "pokemon_storage_system.h" +#include "roamer.h" +#include "item.h" +#include "player_pc.h" +#include "berry.h" +#include "easy_chat.h" +#include "union_room_chat.h" +#include "mevent.h" +#include "trainer_tower.h" +#include "script.h" +#include "berry_powder.h" +#include "pokemon_jump.h" +#include "event_scripts.h" + +// this file's functions +static void ResetMiniGamesResults(void); + +// EWRAM vars +EWRAM_DATA bool8 gDifferentSaveFile = FALSE; + +void SetTrainerId(u32 trainerId, u8 *dst) +{ + dst[0] = trainerId; + dst[1] = trainerId >> 8; + dst[2] = trainerId >> 16; + dst[3] = trainerId >> 24; +} + +void CopyTrainerId(u8 *dst, u8 *src) +{ + s32 i; + for (i = 0; i < 4; i++) + dst[i] = src[i]; +} + +static void InitPlayerTrainerId(void) +{ + u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower(); + SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); +} + +static void SetDefaultOptions(void) +{ + gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID; + gSaveBlock2Ptr->optionsWindowFrameType = 0; + gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO; + gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT; + gSaveBlock2Ptr->optionsBattleSceneOff = FALSE; + gSaveBlock2Ptr->regionMapZoom = FALSE; + gSaveBlock2Ptr->optionsButtonMode = OPTIONS_BUTTON_MODE_NORMAL; +} + +static void ClearPokedexFlags(void) +{ + memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned)); + memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen)); +} + +static void sub_80549D4(void) +{ + CpuFill32(0, &gSaveBlock2Ptr->unk_B0, sizeof(gSaveBlock2Ptr->unk_B0)); +} + +static void WarpToPlayersRoom(void) +{ + SetWarpDestination(MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_2F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_2F), -1, 6, 6); + WarpIntoMap(); +} + +void Sav2_ClearSetDefault(void) +{ + ClearSav2(); + SetDefaultOptions(); +} + +void ResetMenuAndMonGlobals(void) +{ + gDifferentSaveFile = FALSE; + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + sub_81089BC(); + ResetTMCaseCursorPos(); + BerryPouch_CursorResetToTop(); + sub_811089C(); + sub_8083214(Random()); + sub_806E6FC(); +} + +void NewGameInitData(void) +{ + u8 rivalName[PLAYER_NAME_LENGTH]; + + StringCopy(rivalName, gSaveBlock1Ptr->rivalName); + gDifferentSaveFile = TRUE; + gSaveBlock2Ptr->encryptionKey = 0; + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + sub_80549D4(); + ClearSav1(); + ClearMailData(); + gSaveBlock2Ptr->specialSaveWarpFlags = 0; + gSaveBlock2Ptr->field_A8 = 0; + gSaveBlock2Ptr->field_AC = 1; + gSaveBlock2Ptr->field_AD = 0; + InitPlayerTrainerId(); + PlayTimeCounter_Reset(); + ClearPokedexFlags(); + InitEventData(); + ResetFameChecker(); + SetMoney(&gSaveBlock1Ptr->money, 3000); + ResetGameStats(); + ClearPlayerLinkBattleRecords(); + sub_80A0904(); + sub_80A0958(); + sub_806E190(); + gPlayerPartyCount = 0; + ZeroPlayerPartyMons(); + ResetPokemonStorageSystem(); + ClearRoamerData(); + gSaveBlock1Ptr->registeredItem = 0; + ClearBag(); + NewGameInitPCItems(); + sub_809C794(); + InitEasyChatPhrases(); + sub_8113044(); + copy_strings_to_sav1(); + ResetMiniGamesResults(); + sub_8143D24(); + sub_815D838(); + WarpToPlayersRoom(); + ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); + StringCopy(gSaveBlock1Ptr->rivalName, rivalName); + ResetTrainerTowerResults(); +} + +static void ResetMiniGamesResults(void) +{ + CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush)); + SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0); + ResetPokeJumpResults(); + CpuFill16(0, &gSaveBlock2Ptr->berryPick, sizeof(struct BerryPickingResults)); +} diff --git a/src/quest_log.c b/src/quest_log.c index 8b9ee9395..065b42cef 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -986,7 +986,7 @@ void sub_8111368(void) { gUnknown_203ADFA = 2; sub_806E6FC(); - ClearItemSlotsInAllBagPockets(); + ClearBag(); ClearPCItemSlots(); if (sub_8110AC8() == 1) { diff --git a/src/scrcmd.c b/src/scrcmd.c index bcf8c231d..85059691f 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -733,7 +733,7 @@ bool8 ScrCmd_warp(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); DoWarp(); ResetInitialPlayerAvatarState(); return TRUE; @@ -747,7 +747,7 @@ bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); DoDiveWarp(); ResetInitialPlayerAvatarState(); return TRUE; @@ -761,7 +761,7 @@ bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); DoDoorWarp(); ResetInitialPlayerAvatarState(); return TRUE; @@ -778,7 +778,7 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) if (mapGroup == 0xFF && mapNum == 0xFF) SetWarpDestinationToFixedHoleWarp(x - 7, y - 7); else - Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); + SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); DoFallWarp(); ResetInitialPlayerAvatarState(); return TRUE; @@ -792,7 +792,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_807E59C(); ResetInitialPlayerAvatarState(); return TRUE; @@ -806,7 +806,7 @@ bool8 ScrCmd_warpteleport2(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_805DAE4(GetPlayerFacingDirection()); sub_807E500(); ResetInitialPlayerAvatarState(); @@ -821,7 +821,7 @@ bool8 ScrCmd_setwarp(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); + SetWarpDestination(mapGroup, mapNum, warpId, x, y); return FALSE; } diff --git a/src/seagallop.c b/src/seagallop.c index e3333ef32..5374f7bac 100644 --- a/src/seagallop.c +++ b/src/seagallop.c @@ -319,7 +319,7 @@ static void Task_SeaGallop_3(void) gSpecialVar_0x8006 = 0; warpInfo = sSeaGallopSpawnTable[gSpecialVar_0x8006]; - Overworld_SetWarpDestination(warpInfo[0], warpInfo[1], -1, warpInfo[2], warpInfo[3]); + SetWarpDestination(warpInfo[0], warpInfo[1], -1, warpInfo[2], warpInfo[3]); PlayRainStoppingSoundEffect(); PlaySE(SE_KAIDAN); gFieldCallback = sub_807DF64; diff --git a/src/trainer_tower.c b/src/trainer_tower.c index da3cf6dda..17f6b9e09 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -1458,7 +1458,7 @@ void sub_815EDF4(u32 * counter, u32 value) *counter = value ^ gSaveBlock2Ptr->encryptionKey; } -void sub_815EE0C(void) +void ResetTrainerTowerResults(void) { s32 i; diff --git a/sym_ewram.txt b/sym_ewram.txt index 194f7fe5d..8ef93ab54 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -485,9 +485,10 @@ gUnknown_2031DA8: @ 2031DA8 gUnknown_2031DAC: @ 2031DAC .space 0x4 -gUnknown_2031DB0: @ 2031DB0 - .space 0x4 + .align 2 + .include "src/new_game.o" + .align 2 gUnknown_2031DB4: @ 2031DB4 .space 0x8 |