Yes, khuong made a cheat code to rewrite the IDs of items for crafting in older versions.
Is possibile to have this cheat for v 1.17?
Yes, khuong made a cheat code to rewrite the IDs of items for crafting in older versions.
If you don't want to upgrade, there is an old-version cheat code on the homepage.Is possibile to have this cheat for v 1.17?
Is possibile to have this cheat for v 1.17?
I discovered these cheats after I already installed V.17If you don't want to upgrade, there is an old-version cheat code on the homepage.
Wow! Amazing!I can try to update the cheat code for v 1.18.0 but not for v 1.17, sry. The cheat code is a pointer cheat code, so the pointer chain needs to be updated for each version. I did a quick check and found that static analysis isn't enough; dynamic analysis will be necessary.
I'm planning on creating a cheat code to unlock all exclusive items at once, such as those from the Premium Shop and Star Path. (I'm not sure if it will be possible, but I'm going to try).
Disney Dreamlight Valley v1.18.0 BID=730CED1F08B527E6
This cheat code forcefully progresses the mission and is highly prone to causing issues. ALWAYS back up your save data before use. This should not be used lightly.
With the cheat on, open the menu (+) and go to Quests. Track/untrack your target mission. Tracking the mission forces it to the next step. For example, Track → Untrack → Track advances it by two steps.
![]()
Turn on this cheat code and track the mission to proceed to the next step. This will enable you to invite Vanellope to the Valley in offline mode.
[TrackToAdvanceMissionStep]
fixing ...
[TrackToAdvanceMissionStep OFF]
04000000 03232850 17FFF1A4
04000000 03232854 D503201F
Code:// Original function: Mdl.Missions.MissionManager$$OnTrackedMissionChanged 0x7103232850 CBZ X1, 0x710322EEE0 // If X1 is NULL, jump to original function (RefreshCurrentFollower) 0x7103232854 B 0x7108193584 // If not NULL, jump to the code cave // --- Code Cave Start --- // RVA: 0x8193584 0x7108193584 LDR W8, [X1, #0x20] // Pre-check: Directly read TrackedActivity.ActivityCase 0x7108193588 CMP W8, #1 // Compare with Mission (enum value=1) 0x710819358C B.NE 0x710322EEE0 // If not a Mission, immediately jump to the original function (RefreshCurrentFollower) // main_logic: // --- Main logic (executes only for Missions) --- 0x7108193590 STP X29, X30, [SP, #-0x10]! // Save X29 (FP), X30 (LR) 0x7108193594 STP X19, X20, [SP, #-0x10]! // Save used callee-saved registers X19, X20 // --- Save original argument X0 (MissionManager*) --- 0x7108193598 MOV X19, X0 // Store MissionManager* in X19 // --- Get and save MissionId --- 0x710819359C LDR X0, [X1, #0x18] // X0 = TrackedMission* 0x71081935A0 LDR W20, [X0, #0x18] // W20 = missionId (store in a callee-saved register) // --- Get ProfileWorld instance --- 0x71081935A4 BL 0x71032257B0 // RVA: Profile.get_Profile() -> Profile* in X0 0x71081935A8 LDR X0, [X0, #0x30] // X0 = ProfileWorld* (Profile+0x30) // --- Get MissionSlot object --- 0x71081935AC MOV W1, W20 // Arg2 = missionItem (the saved missionId) 0x71081935B0 MOV X2, XZR // Arg3 = predicate (NULL) 0x71081935B4 BL 0x7104D733B0 // RVA: ProfileWorld.GetMissionSlot -> returns MissionSlot* in X0 // --- ★★★ Advance the mission step ★★★ --- 0x71081935B8 BL 0x71054D2DA0 // RVA: MissionSlot.AdvanceStep() // --- Call RefreshCurrentFollower to sync the state --- 0x71081935BC MOV X0, X19 // Restore the saved MissionManager* into X0 0x71081935C0 BL 0x710322EEE0 // RVA: MissionManager.RefreshCurrentFollower // --- Process complete, restore registers and return normally --- 0x71081935C4 LDP X19, X20, [SP], #0x10 0x71081935C8 LDP X29, X30, [SP], #0x10 0x71081935CC RET
I'm having trouble fixing this cheat code. Has anyone completed the 'Faith, Trust, and Pixel Dust' quest to bring Vanellope to the Valley offline by editing the save file? I want to know if that method causes any game-breaking bugs, because my own code, which forces the mission to the next step, is causing it to get stuck.
Disney Dreamlight Valley v1.18.0 BID=730CED1F08B527E6
When your objectives become "Open the DreamSnaps Submission menu" or "Complete your first DreamSnaps Challenge!", simply navigate to the Quests tab in your menu and track the quest. Doing this will automatically progress the mission.
![]()
This cheat enables you to complete the "Faith, Trust, and Pixel Dust" quest to bring Vanellope into the Valley, even while offline.
[WelcomeVanellope]
04000000 03232850 B4FE3481
04000000 03232854 153D834C
04000000 08193584 B9402028
04000000 08193588 7100051F
04000000 0819358C 544DCAA1
04000000 08193590 A9BF7BF3
04000000 08193594 A9BF57F4
04000000 08193598 A9BF5FF6
04000000 0819359C A9BF67F8
04000000 081935A0 A9BF6FFA
04000000 081935A4 AA0003F3
04000000 081935A8 F9400C28
04000000 081935AC B9401914
04000000 081935B0 96C26E4C
04000000 081935B4 96C2487F
04000000 081935B8 F9401800
04000000 081935BC 2A1403E1
04000000 081935C0 AA1F03E2
04000000 081935C4 972F7F7B
04000000 081935C8 AA0003F4
04000000 081935CC 974CE549
04000000 081935D0 F9400C08
04000000 081935D4 F9400908
04000000 081935D8 B9401915
04000000 081935DC F9400909
04000000 081935E0 91008137
04000000 081935E4 52800016
04000000 081935E8 6B1502DF
04000000 081935EC 5400042A
04000000 081935F0 F8767AEA
04000000 081935F4 F9400D4B
04000000 081935F8 F940096B
04000000 081935FC B9401978
04000000 08193600 F940096C
04000000 08193604 9100819A
04000000 08193608 52800019
04000000 0819360C 6B18033F
04000000 08193610 540002CA
04000000 08193614 F8797B40
04000000 08193618 B9403001
04000000 0819361C 7100043F
04000000 08193620 54000060
04000000 08193624 7100083F
04000000 08193628 540001C1
04000000 0819362C F940440D
04000000 08193630 B94049A1
04000000 08193634 71033C3F
04000000 08193638 540000A0
04000000 0819363C 7102303F
04000000 08193640 54000101
04000000 08193644 528001C1
04000000 08193648 14000002
04000000 0819364C 528001A1
04000000 08193650 F94019A3
04000000 08193654 AA1403E2
04000000 08193658 AA1303E0
04000000 0819365C 96C27BF5
04000000 08193660 11000739
04000000 08193664 17FFFFEA
04000000 08193668 110006D6
04000000 0819366C 17FFFFDF
04000000 08193670 A8C16FFA
04000000 08193674 A8C167F8
04000000 08193678 A8C15FF6
04000000 0819367C A8C157F4
04000000 08193680 A8C17BF3
04000000 08193684 D65F03C0
[WelcomeVanellope OFF]
04000000 03232850 17FFF1A4
04000000 03232854 D503201F
Code:// Hook point: Mdl.Missions.MissionManager$$OnTrackedMissionChanged 0x7103232850 CBZ X1, 0x710322EEE0 // If NULL, branch to the original code 0x7103232854 B 0x7108193584 // Branch to Code Cave // --- Code Cave Start --- (VA: 0x7108193584 ~) 0x7108193584 LDR W8, [X1, #0x20] // Get TrackedActivity.ActivityCase 0x7108193588 CMP W8, #1 // Check if it's a Mission 0x710819358C B.NE 0x710322EEE0 // If not a mission, return to original code // Prologue (minimum required, including X30) 0x7108193590 STP X19, X30, [SP, #-0x10]! 0x7108193594 STP X20, X21, [SP, #-0x10]! 0x7108193598 STP X22, X23, [SP, #-0x10]! 0x710819359C STP X24, X25, [SP, #-0x10]! 0x71081935A0 STP X26, X27, [SP, #-0x10]! 0x71081935A4 MOV X19, X0 // Store 'this' pointer 0x71081935A8 LDR X8, [X1, #0x18] // Get pointer to TrackedMission 0x71081935AC LDR W20, [X8, #0x18] // Get missionId (temp) 0x71081935B0 BL 0x710322EEE0 // Call RefreshCurrentFollower() 0x71081935B4 BL 0x71032257B0 // Get pointer to Profile 0x71081935B8 LDR X0, [X0, #0x30] // Get pointer to ProfileWorld 0x71081935BC MOV W1, W20 // Set id as argument 0x71081935C0 MOV X2, XZR // Set predicate=NULL as argument 0x71081935C4 BL 0x7104D733B0 // Call GetMissionSlot(...) 0x71081935C8 MOV X20, X0 // Store pointer to MissionSlot 0x71081935CC BL 0x71054CCAF0 // Get CurrentStep 0x71081935D0 LDR X8, [X0, #0x18] // Get pointer to RepeatedField<SubStep> 0x71081935D4 LDR X8, [X8, #0x10] // Get pointer to List<SubStep> 0x71081935D8 LDR W21, [X8, #0x18] // Get subStepCount 0x71081935DC LDR X9, [X8, #0x10] // Get pointer to _items 0x71081935E0 ADD X23, X9, #0x20 // Get base address of subSteps array 0x71081935E4 MOV W22, #0 // Initialize loop counter i=0 // ===== Outer loop (Iterate through SubSteps) ===== 0x71081935E8 CMP W22, W21 // Compare i with subStepCount 0x71081935EC B.GE 0x7108193670 // If i >= subStepCount, branch to Epilogue 0x71081935F0 LDR X10, [X23, X22, LSL #3] // Get pointer to subStep 0x71081935F4 LDR X11, [X10, #0x18] // Get pointer to RepeatedField<Objective> 0x71081935F8 LDR X11, [X11, #0x10] // Get pointer to List<Objective> 0x71081935FC LDR W24, [X11, #0x18] // Get objectiveCount 0x7108193600 LDR X12, [X11, #0x10] // Get pointer to _items 0x7108193604 ADD X26, X12, #0x20 // Get base address of objectives array 0x7108193608 MOV W25, #0 // Initialize loop counter j=0 // --- Inner loop (Iterate through Objectives) --- 0x710819360C CMP W25, W24 // Compare j with objectiveCount 0x7108193610 B.GE 0x7108193668 // If j >= objectiveCount, go to next SubStep 0x7108193614 LDR X0, [X26, X25, LSL #3] // Get pointer to objective 0x7108193618 LDR W1, [X0, #0x30] // Get status_ 0x710819361C CMP W1, #1 // Is status Ongoing? 0x7108193620 B.EQ 0x710819362C // If yes, check custom step 0x7108193624 CMP W1, #2 // Is status Completed? 0x7108193628 B.NE 0x7108193660 // If neither, increment j 0x710819362C LDR X13, [X0, #0x88] // Get pointer to objective data 0x7108193630 LDR W1, [X13, #0x48] // Get customStepCase 0x7108193634 CMP W1, #207 // Is custom step 207? 0x7108193638 B.EQ 0x710819364C // If yes, branch to set 13 0x710819363C CMP W1, #140 // Is custom step 140? 0x7108193640 B.NE 0x7108193660 // If no, increment j 0x7108193644 MOV W1, #14 // Set parameter to 14 0x7108193648 B 0x7108193650 // Branch to common call 0x710819364C MOV W1, #13 // Set parameter to 13 0x7108193650 LDR X3, [X13, #0x30] // Get stepName 0x7108193654 MOV X2, X20 // Set missionSlot* as argument 0x7108193658 MOV X0, X19 // Set 'this' as argument 0x710819365C BL 0x7103232630 // Call CheckForAdvanceStep // Increment j and loop 0x7108193660 ADD W25, W25, #1 // j++ 0x7108193664 B 0x710819360C // Branch to inner loop start // Go to next SubStep: Increment i and loop 0x7108193668 ADD W22, W22, #1 // i++ 0x710819366C B 0x71081935E8 // Branch to outer loop start // ==== Epilogue ==== 0x7108193670 LDP X26, X27, [SP], #0x10 0x7108193674 LDP X24, X25, [SP], #0x10 0x7108193678 LDP X22, X23, [SP], #0x10 0x710819367C LDP X20, X21, [SP], #0x10 0x7108193680 LDP X19, X30, [SP], #0x10 0x7108193684 RET // Return from function // --- Code Cave End ---
Is it possible to craft premium items like before?
That works tooThe cheat code is finally fixed, making it possible to invite Vanellope to the Valley even while offline. Just in case, please make a backup of your save file before using it.
Post automatically merged:
I can try to update Khuong's pointer cheat, but it's troublesome to maintain with each new version. I prefer to create an ASM cheat that unlocks all limited items at once. Cheat code requests are always welcome, ofc.
![]()
{MasterCode}
040E0000 04D7DF5C 6B1302A8
04000000 04D7B79C 4B170108
04000000 047D4AEC 97FFFE41
04000000 047D7DC4 9416557B
04000000 0599AE60 D10283FF
04000000 047A2720 D101C3FF
04000000 04CB3444 39412268
04000000 04CB4384 39412288
04000000 04CA84DC 394092C8
04000000 02FA78A4 F9406800
04000000 02FA78A8 B40002A0
04000000 02FA78AC B9402041
04000000 02FA78B0 AA1F03E2
04000000 02FA78B4 94001DE3
04000000 02FA78B8 F9406E60
04000000 02FA78BC B4000200
04000000 02FA78C0 AA1F03E1
04000000 0475F3F8 97C8241E
04000000 0475F700 9445E734
04000000 02B7BF40 94B57524
04000000 047AFDB8 F8018D00
04000000 04C058E4 B94026E8
04000000 04C058EC 0B150108
04000000 04D69CF4 0B180108
04000000 04D69CF8 F81F03BF
04000000 04D6D290 1A89B2B8
04000000 04D6D298 1A89B115
04000000 03241620 17FFF190
04000000 03241624 D503201F
[R MoveSpeed x2]
04000000 0311EDA0 1E204160
04000000 0311EDA4 1E204181
04000000 0311EDA8 1E2041A2
80000080
04000000 0311EDA0 1E2B2960
04000000 0311EDA4 1E2C2981
04000000 0311EDA8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04D7DF5C 6B1F02A8
[CurrencyNoDecrease]
04000000 04D7B79C 4B1F0108
[FreeCraft]
04000000 047D4AEC 52800000
04000000 047D7DC4 52800020
[CookKeepItems]
04000000 0599AE60 D65F03C0
04000000 047A2720 D65F03C0
[AlwaysCriticalSuccess]
04000000 04CB3444 52800028
04000000 04CB4384 52800028
[AlwaysBurning]
04000000 04CA84DC 52800028
[EasyFishing]
04000000 02FA78A4 F9406660
04000000 02FA78A8 AA1F03E1
04000000 02FA78AC 940016A9
04000000 02FA78B0 F9406660
04000000 02FA78B4 52800001
04000000 02FA78B8 AA1F03E2
04000000 02FA78BC 94001651
04000000 02FA78C0 1400000C
[EasyGardening]
04000000 0475F3F8 52800020
04000000 0475F700 D503201F
[InfFruits]
04000000 02B7BF40 D503201F
[InfMiningRock]
04000000 047AFDB8 F8018D1F
[FriendshipMax(add)]
04000000 04C058E4 52A00028
04000000 04C058EC 729C6CC8
[XPMax(add)]
04000000 04D69CF4 52A00148
04000000 04D69CF8 72824408
[CurrencyMax(add)]
04000000 04D6D290 1A89B138
04000000 04D6D298 1A89B135
[WelcomeVanellope]
04000000 03241620 B4FE3201
04000000 03241624 153F5762
04000000 082173AC B9402028
04000000 082173B0 7100051F
04000000 082173B4 A9BF7BF3
04000000 082173B8 A9BF57F4
04000000 082173BC A9BF5FF6
04000000 082173C0 A9BF67F8
04000000 082173C4 A9BF6FFA
04000000 082173C8 AA0003F3
04000000 082173CC F9400C28
04000000 082173D0 B9401914
04000000 082173D4 96C09A23
04000000 082173D8 96C0742E
04000000 082173DC F9401800
04000000 082173E0 2A1403E1
04000000 082173E4 AA1F03E2
04000000 082173E8 972E15C6
04000000 082173EC AA0003F4
04000000 082173F0 974C1F84
04000000 082173F4 F9400C08
04000000 082173F8 F9400908
04000000 082173FC B9401915
04000000 08217400 F9400909
04000000 08217404 91008137
04000000 08217408 52800016
04000000 0821740C 6B1502DF
04000000 08217410 5400042A
04000000 08217414 F8767AEA
04000000 08217418 F9400D4B
04000000 0821741C F940096B
04000000 08217420 B9401978
04000000 08217424 F940096C
04000000 08217428 9100819A
04000000 0821742C 52800019
04000000 08217430 6B18033F
04000000 08217434 540002CA
04000000 08217438 F8797B40
04000000 0821743C B9403001
04000000 08217440 7100043F
04000000 08217444 54000060
04000000 08217448 7100083F
04000000 0821744C 540001C1
04000000 08217450 F940440D
04000000 08217454 B94049A1
04000000 08217458 71033C3F
04000000 0821745C 540000A0
04000000 08217460 7102303F
04000000 08217464 54000101
04000000 08217468 528001C1
04000000 0821746C 14000002
04000000 08217470 528001A1
04000000 08217474 F94019A3
04000000 08217478 AA1403E2
04000000 0821747C AA1303E0
04000000 08217480 96C0A7E0
04000000 08217484 11000739
04000000 08217488 17FFFFEA
04000000 0821748C 110006D6
04000000 08217490 17FFFFDF
04000000 08217494 A8C16FFA
04000000 08217498 A8C167F8
04000000 0821749C A8C15FF6
04000000 082174A0 A8C157F4
04000000 082174A4 A8C17BF3
04000000 082174A8 D65F03C0
0x7104716884 NOP // nop
// --- Hook Patch (WardrobeMenu::OnFocusIn) -------------------------------------
0x710716BDFC BL 0x71082174AC // hook: replace original "MOV X0, X19" and jump to code cave
// --- Code Cave Start (RVA: 0x82174AC, Abs: 0x71082174AC) ----------------------
// [Save Block] save callee-saved in order; X19 saved twice (first copy returned via X0)
0x71082174AC STP X19, X30, [SP, #-0x10]! // save old X19 and LR
0x71082174B0 STP X19, X20, [SP, #-0x10]! // save X19 (working), X20 (Client*)
0x71082174B4 STP X21, X22, [SP, #-0x10]! // save X21 (array base), X22 (length)
0x71082174B8 STP X23, X24, [SP, #-0x10]! // save X23 (index i), X24 (item id)
// [Acquire Client*] via accessor
0x71082174BC BL 0x71032343B0 // X0 = get_MetaClient()
0x71082174C0 MOV X20, X0 // X20 = Client*
// [Acquire Wardrobe] Profile accessor → get_Wardrobe()
0x71082174C4 BL 0x7103234490 // X0 = get_Profile()
0x71082174C8 BL 0x7104E010A0 // X0 = Profile.get_Wardrobe()
0x71082174CC MOV X19, X0 // X19 = ListInventory* (loop "this")
// [Acquire Clothing Array] ItemDatabase.Instance → GetAllByType(ItemType.Clothing, method=null)
0x71082174D0 BL 0x7104494390 // X0 = ItemDatabase.Instance
0x71082174D4 MOV W1, #5 // W1 = ItemType.Clothing
0x71082174D8 MOV X2, XZR // method = null
0x71082174DC BL 0x71044901F0 // X0 = GetAllByType(...)
// [Loop Init] set array base, length, index (readable order)
0x71082174E0 ADD X21, X0, #0x20 // X21 = &elements[0]
0x71082174E4 LDR W22, [X0, #0x18] // W22 = length
0x71082174E8 MOV W23, #0 // W23 = i
// --- [Loop] for (i = 0; i < len; ++i) -----------------------------------------
0x71082174EC LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (ClothingItemData*)
0x71082174F0 BL 0x7103F20E60 // W0 = ClothingItemData.get_Item()
0x71082174F4 MOV W24, W0 // W24 = item id
// [KnowsItem Check] skip grant if already owned
0x71082174F8 MOV X0, X19 // this = ListInventory*
0x71082174FC MOV W1, W24 // arg: item id
0x7108217500 BL 0x71048281A0 // W0 = ListInventory.KnowsItem(...)
0x7108217504 TBNZ W0, #0, 0x710821751C // if true → skip grant
// [Grant Item] DebugAddItem(this=Client*, item, 1, CancellationToken=None)
0x7108217508 MOV X0, X20 // this = Client*
0x710821750C MOV W1, W24 // arg: item id
0x7108217510 MOV W2, #1 // amount = 1
0x7108217514 MOV X3, XZR // CancellationToken = default(0)
0x7108217518 BL 0x710537EAC0 // Client.DebugAddItem(...)
0x710821751C ADD W23, W23, #1 // i++
0x7108217520 CMP W23, W22 // compare i vs length
0x7108217524 B.LO 0x71082174EC // continue if i < length
// [Restore & Return] restore in reverse; load first-saved X19 into X0 and return
0x7108217528 LDP X23, X24, [SP], #0x10 // restore X23, X24
0x710821752C LDP X21, X22, [SP], #0x10 // restore X21, X22
0x7108217530 LDP X19, X20, [SP], #0x10 // restore X19 (working), X20
0x7108217534 LDP X0, X30, [SP], #0x10 // X0 ← old X19 (first-saved), X30 ← LR
0x7108217538 RET // return (recreates original "MOV X0, X19")
// --- Code Cave End -------------------------------------------------------------
I think if you could find the address, a code that makes any of the animals an instant companion/instant level 5 companion would be cool. Im having a hard time finding this one because no matter how much i feed any of them in a day, or in a series of days, I havent been able to get any of them to join me.
The version 1.19.1 will be updated soon, and I'm looking forward to the patch and the update of your cheat codes.Disney Dreamlight Valley v1.19.0 BID=B868533F047509B8
[EasyUnlockCritter]
04000000 047F1100 52800020
04000000 047F173C D503201F
[EasyUnlockCritter OFF]
04000000 047F1100 97D8A18C
04000000 047F173C 5400068B
This cheat code makes Critters love any food, allowing you to befriend them with a single feeding.
[PetFriendshipMax(add)]
04000000 04C6FA7C 2A1503E1
[PetFriendshipMax(add) OFF]
04000000 04C6FA7C 0B180101
With this cheat code enabled, any increase in friendship with your pet will instantly raise it to the maximum level.
Wow, thanks for this! I wasnt sure how to make it work when it seems like 2 addresses needed to be modified together for pet Xp, so i was stuck manually finding and modifying xp for any pet that I had....which was only 1 or 2 because acquiring them sure did get harder in the new updates. One more question. Is it possible to make kaitoB, or patjenova's 'unlock all crafting' code work? It's fun to have the ability to make all materials or enchantments from the start of the game. Enchanting your tools to smash through bone or mushroom barriers from the beginning is nice. Ive only ever had the code partially slightly working before the game freezes or crashes. Frustrating, but it takes a long time for me since i have to manually search out to where i can safely relocate the cheat code. Anyway, thanks a ton for all your work! if you would ever consider making "how to" videos, it would probably be something lots of people would find extremely helpful. I know I would.Disney Dreamlight Valley v1.19.0 BID=B868533F047509B8
[EasyUnlockCritter]
04000000 047F1100 52800020
04000000 047F173C D503201F
[EasyUnlockCritter OFF]
04000000 047F1100 97D8A18C
04000000 047F173C 5400068B
This cheat code makes Critters love any food, allowing you to befriend them with a single feeding.
[PetFriendshipMax(add)]
04000000 04C6FA7C 2A1503E1
[PetFriendshipMax(add) OFF]
04000000 04C6FA7C 0B180101
With this cheat code enabled, any increase in friendship with your pet will instantly raise it to the maximum level.

Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B
[InfMiningRock]
04000000 047B3B88 F8018D1F
Meta.HitMiningRock.Types.Response$$ApplyThis
.text:00000071047B3B88 STR X0, [X8,#0x18]!
.text:00000071047B3B88 STR XZR, [X8,#0x18]!
// ============================================================================
/* Unlock All Clothing + Dev-Check Bypass
Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to code cave that
grants all unowned clothing items, then restore X0←X19 and return.
Additionally NOP out the developer-flag check guarding DebugAddItem. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) ---------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
// Original: 0x710471A654 CBZ W8, 0x710471A68C → bypass by NOP
0x710471A654 NOP // disable dev-flag gate so execution continues
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19, LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19, Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push array base, length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push i, itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire Wardrobe (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E04FE0 // Profile.get_Wardrobe() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory*
// [Get clothing list] ItemDatabase.Instance → GetAllByType(Clothing, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #5 // ItemType.Clothing
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (ClothingItemData*)
0x710821C650 BL 0x7103F24BB0 // ClothingItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned
0x710821C658 MOV X0, X19 // this = ListInventory*
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] DebugAddItem(itemId, 1, default)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // loop back
// [Epilogue & Return] restore and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop
0x710821C68C LDP X21, X22, [SP], #0x10 // pop
0x710821C690 LDP X19, X20, [SP], #0x10 // pop
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // back to original function
// --- [Block D] Reference (targets used above) ---------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_Wardrobe() 0x7104E04FE0
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.Clothing) 0x7104493F40
// ClothingItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
The new version has been updated, and the cheat codes have also been updated. That's really timely. Thanks for your hard work—I can start playing again now!![]()
Before using any cheat codes, be sure to back up your save data. You use cheat codes at your own risk.
Detailed reports are appreciated for any cheat code issues. New cheat code requests are always welcome (I can try at least).
sd:/atmospshere/contents/0100D39012C1A000/cheats/BID.txt
LatestArchive
{MasterCode}
040E0000 04D81E9C 6B1302A8
04000000 04D7F6DC 4B170108
04000000 047D8ACC 97FFFE41
04000000 047DBDA4 94165553
04000000 0599F680 D10283FF
04000000 047A64F0 D101C3FF
04000000 04CB7384 39412268
04000000 04CB82C4 39412288
04000000 04CAC41C 394092C8
04000000 02FA8C94 F9406800
04000000 02FA8C98 B40002A0
04000000 02FA8C9C B9402041
04000000 02FA8CA0 AA1F03E2
04000000 02FA8CA4 94001DE3
04000000 02FA8CA8 F9406E60
04000000 02FA8CAC B4000200
04000000 02FA8CB0 AA1F03E1
04000000 047631C8 97C823E6
04000000 047634D0 9445E9C8
04000000 02B7D300 94B5823C
04000000 047B3B88 F8018D00
04000000 047F50E0 97D8A0E8
04000000 047F571C 5400068B
04000000 04C739BC 0B180101
04000000 04C09824 B94026E8
04000000 04C0982C 0B150108
04000000 04D6DC34 0B180108
04000000 04D6DC38 F81F03BF
04000000 04D711D0 1A89B2B8
04000000 04D711D8 1A89B115
04000000 0471A654 340001C8
04000000 0717107C AA1303E0
04000000 03242A10 17FFF190
04000000 03242A14 D503201F
[R MoveSpeed x2]
04000000 03120190 1E204160
04000000 03120194 1E204181
04000000 03120198 1E2041A2
80000080
04000000 03120190 1E2B2960
04000000 03120194 1E2C2981
04000000 03120198 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04D81E9C 6B1F02A8
[CurrencyNoDecrease]
04000000 04D7F6DC 4B1F0108
[FreeCraft]
04000000 047D8ACC 52800000
04000000 047DBDA4 52800020
[CookKeepItems]
04000000 0599F680 D65F03C0
04000000 047A64F0 D65F03C0
[AlwaysCriticalSuccess]
04000000 04CB7384 52800028
04000000 04CB82C4 52800028
[AlwaysBurning]
04000000 04CAC41C 52800028
[EasyFishing]
04000000 02FA8C94 F9406660
04000000 02FA8C98 AA1F03E1
04000000 02FA8C9C 940016A9
04000000 02FA8CA0 F9406660
04000000 02FA8CA4 52800001
04000000 02FA8CA8 AA1F03E2
04000000 02FA8CAC 94001651
04000000 02FA8CB0 1400000C
[EasyGardening]
04000000 047631C8 52800020
04000000 047634D0 D503201F
[InfFruits]
04000000 02B7D300 D503201F
[InfMiningRock]
04000000 047B3B88 F8018D1F
[EasyUnlockCritter]
04000000 047F50E0 52800020
04000000 047F571C D503201F
[PetFriendshipMax(add)]
04000000 04C739BC 2A1503E1
[FriendshipMax(add)]
04000000 04C09824 52A00028
04000000 04C0982C 729C6CC8
[XPMax(add)]
04000000 04D6DC34 52A00148
04000000 04D6DC38 72824408
[CurrencyMax(add)]
04000000 04D711D0 1A89B138
04000000 04D711D8 1A89B135
[GetAllMissingClothing]
04000000 0471A654 D503201F
04000000 0717107C 9442AD64
04000000 0821C60C A9BF7BF3
04000000 0821C610 A9BF53F3
04000000 0821C614 A9BF5BF5
04000000 0821C618 A9BF63F7
04000000 0821C61C 96C06461
04000000 0821C620 AA0003F4
04000000 0821C624 96C06497
04000000 0821C628 972FA26E
04000000 0821C62C AA0003F3
04000000 0821C630 9709EEAC
04000000 0821C634 528000A1
04000000 0821C638 AA1F03E2
04000000 0821C63C 9709DE41
04000000 0821C640 91008015
04000000 0821C644 B9401816
04000000 0821C648 52800017
04000000 0821C64C F8777AA0
04000000 0821C650 96F42158
04000000 0821C654 2A0003F8
04000000 0821C658 AA1303E0
04000000 0821C65C 2A1803E1
04000000 0821C660 97183EC8
04000000 0821C664 370000C0
04000000 0821C668 AA1403E0
04000000 0821C66C 2A1803E1
04000000 0821C670 52800022
04000000 0821C674 AA1F03E3
04000000 0821C678 97459B1A
04000000 0821C67C 110006F7
04000000 0821C680 6B1602FF
04000000 0821C684 54FFFE43
04000000 0821C688 A8C163F7
04000000 0821C68C A8C15BF5
04000000 0821C690 A8C153F3
04000000 0821C694 A8C17BE0
04000000 0821C698 D65F03C0
[WelcomeVanellope]
04000000 03242A10 B4FE3201
04000000 03242A14 153F6722
04000000 0821C69C B9402028
04000000 0821C6A0 7100051F
04000000 0821C6A4 A9BF7BF3
04000000 0821C6A8 A9BF57F4
04000000 0821C6AC A9BF5FF6
04000000 0821C6B0 A9BF67F8
04000000 0821C6B4 A9BF6FFA
04000000 0821C6B8 AA0003F3
04000000 0821C6BC F9400C28
04000000 0821C6C0 B9401914
04000000 0821C6C4 96C08A63
04000000 0821C6C8 96C0646E
04000000 0821C6CC F9401800
04000000 0821C6D0 2A1403E1
04000000 0821C6D4 AA1F03E2
04000000 0821C6D8 972E10DA
04000000 0821C6DC AA0003F4
04000000 0821C6E0 974C1CD0
04000000 0821C6E4 F9400C08
04000000 0821C6E8 F9400908
04000000 0821C6EC B9401915
04000000 0821C6F0 F9400909
04000000 0821C6F4 91008137
04000000 0821C6F8 52800016
04000000 0821C6FC 6B1502DF
04000000 0821C700 5400042A
04000000 0821C704 F8767AEA
04000000 0821C708 F9400D4B
04000000 0821C70C F940096B
04000000 0821C710 B9401978
04000000 0821C714 F940096C
04000000 0821C718 9100819A
04000000 0821C71C 52800019
04000000 0821C720 6B18033F
04000000 0821C724 540002CA
04000000 0821C728 F8797B40
04000000 0821C72C B9403001
04000000 0821C730 7100043F
04000000 0821C734 54000060
04000000 0821C738 7100083F
04000000 0821C73C 540001C1
04000000 0821C740 F940440D
04000000 0821C744 B94049A1
04000000 0821C748 71033C3F
04000000 0821C74C 540000A0
04000000 0821C750 7102303F
04000000 0821C754 54000101
04000000 0821C758 528001C1
04000000 0821C75C 14000002
04000000 0821C760 528001A1
04000000 0821C764 F94019A3
04000000 0821C768 AA1403E2
04000000 0821C76C AA1303E0
04000000 0821C770 96C09820
04000000 0821C774 11000739
04000000 0821C778 17FFFFEA
04000000 0821C77C 110006D6
04000000 0821C780 17FFFFDF
04000000 0821C784 A8C16FFA
04000000 0821C788 A8C167F8
04000000 0821C78C A8C15FF6
04000000 0821C790 A8C157F4
04000000 0821C794 A8C17BF3
04000000 0821C798 D65F03C0
{MasterCode}
040E0000 04D7DF5C 6B1302A8
04000000 04D7B79C 4B170108
04000000 047D4AEC 97FFFE41
04000000 047D7DC4 9416557B
04000000 0599AE60 D10283FF
04000000 047A2720 D101C3FF
04000000 04CB3444 39412268
04000000 04CB4384 39412288
04000000 04CA84DC 394092C8
04000000 02FA78A4 F9406800
04000000 02FA78A8 B40002A0
04000000 02FA78AC B9402041
04000000 02FA78B0 AA1F03E2
04000000 02FA78B4 94001DE3
04000000 02FA78B8 F9406E60
04000000 02FA78BC B4000200
04000000 02FA78C0 AA1F03E1
04000000 0475F3F8 97C8241E
04000000 0475F700 9445E734
04000000 02B7BF40 94B57524
04000000 047AFDB8 F8018D00
04000000 04C058E4 B94026E8
04000000 04C058EC 0B150108
04000000 04D69CF4 0B180108
04000000 04D69CF8 F81F03BF
04000000 04D6D290 1A89B2B8
04000000 04D6D298 1A89B115
04000000 03241620 17FFF190
04000000 03241624 D503201F
[R MoveSpeed x2]
04000000 0311EDA0 1E204160
04000000 0311EDA4 1E204181
04000000 0311EDA8 1E2041A2
80000080
04000000 0311EDA0 1E2B2960
04000000 0311EDA4 1E2C2981
04000000 0311EDA8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04D7DF5C 6B1F02A8
[CurrencyNoDecrease]
04000000 04D7B79C 4B1F0108
[FreeCraft]
04000000 047D4AEC 52800000
04000000 047D7DC4 52800020
[CookKeepItems]
04000000 0599AE60 D65F03C0
04000000 047A2720 D65F03C0
[AlwaysCriticalSuccess]
04000000 04CB3444 52800028
04000000 04CB4384 52800028
[AlwaysBurning]
04000000 04CA84DC 52800028
[EasyFishing]
04000000 02FA78A4 F9406660
04000000 02FA78A8 AA1F03E1
04000000 02FA78AC 940016A9
04000000 02FA78B0 F9406660
04000000 02FA78B4 52800001
04000000 02FA78B8 AA1F03E2
04000000 02FA78BC 94001651
04000000 02FA78C0 1400000C
[EasyGardening]
04000000 0475F3F8 52800020
04000000 0475F700 D503201F
[InfFruits]
04000000 02B7BF40 D503201F
[InfMiningRock]
04000000 047AFDB8 F8018D1F
[FriendshipMax(add)]
04000000 04C058E4 52A00028
04000000 04C058EC 729C6CC8
[XPMax(add)]
04000000 04D69CF4 52A00148
04000000 04D69CF8 72824408
[CurrencyMax(add)]
04000000 04D6D290 1A89B138
04000000 04D6D298 1A89B135
[WelcomeVanellope]
04000000 03241620 B4FE3201
04000000 03241624 153F5762
04000000 082173AC B9402028
04000000 082173B0 7100051F
04000000 082173B4 A9BF7BF3
04000000 082173B8 A9BF57F4
04000000 082173BC A9BF5FF6
04000000 082173C0 A9BF67F8
04000000 082173C4 A9BF6FFA
04000000 082173C8 AA0003F3
04000000 082173CC F9400C28
04000000 082173D0 B9401914
04000000 082173D4 96C09A23
04000000 082173D8 96C0742E
04000000 082173DC F9401800
04000000 082173E0 2A1403E1
04000000 082173E4 AA1F03E2
04000000 082173E8 972E15C6
04000000 082173EC AA0003F4
04000000 082173F0 974C1F84
04000000 082173F4 F9400C08
04000000 082173F8 F9400908
04000000 082173FC B9401915
04000000 08217400 F9400909
04000000 08217404 91008137
04000000 08217408 52800016
04000000 0821740C 6B1502DF
04000000 08217410 5400042A
04000000 08217414 F8767AEA
04000000 08217418 F9400D4B
04000000 0821741C F940096B
04000000 08217420 B9401978
04000000 08217424 F940096C
04000000 08217428 9100819A
04000000 0821742C 52800019
04000000 08217430 6B18033F
04000000 08217434 540002CA
04000000 08217438 F8797B40
04000000 0821743C B9403001
04000000 08217440 7100043F
04000000 08217444 54000060
04000000 08217448 7100083F
04000000 0821744C 540001C1
04000000 08217450 F940440D
04000000 08217454 B94049A1
04000000 08217458 71033C3F
04000000 0821745C 540000A0
04000000 08217460 7102303F
04000000 08217464 54000101
04000000 08217468 528001C1
04000000 0821746C 14000002
04000000 08217470 528001A1
04000000 08217474 F94019A3
04000000 08217478 AA1403E2
04000000 0821747C AA1303E0
04000000 08217480 96C0A7E0
04000000 08217484 11000739
04000000 08217488 17FFFFEA
04000000 0821748C 110006D6
04000000 08217490 17FFFFDF
04000000 08217494 A8C16FFA
04000000 08217498 A8C167F8
04000000 0821749C A8C15FF6
04000000 082174A0 A8C157F4
04000000 082174A4 A8C17BF3
04000000 082174A8 D65F03C0
{MasterCode}
040E0000 04D3410C 6B1302A8
04000000 04D319EC 4B170108
04000000 04799A0C 97FFFE41
04000000 0479CD04 94161A2F
04000000 04767640 D10283FF
04000000 047678B0 D101C3FF
04000000 04C6B304 39412268
04000000 04C6C244 39412288
04000000 04C6039C 394092C8
04000000 02F9BA04 F9406800
04000000 02F9BA08 B40002A0
04000000 02F9BA0C B9402041
04000000 02F9BA10 AA1F03E2
04000000 02F9BA14 94001DE3
04000000 02F9BA18 F9406E60
04000000 02F9BA1C B4000200
04000000 02F9BA20 AA1F03E1
04000000 04724598 97C8CE82
04000000 047248A0 944584B8
04000000 0472E154 94455E8B
04000000 04774E28 F8018D00
04000000 04BBD864 B94026E8
04000000 04BBD86C 0B150108
04000000 04D1FF04 0B180108
04000000 04D1FF08 F81F03BF
04000000 04D234A0 1A89B2B8
04000000 04D234A8 1A89B115
04000000 03232850 17FFF1A4
04000000 03232854 D503201F
[R MoveSpeed x2]
04000000 03113350 1E204160
04000000 03113354 1E204181
04000000 03113358 1E2041A2
80000080
04000000 03113350 1E2B2960
04000000 03113354 1E2C2981
04000000 03113358 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04D3410C 6B1F02A8
[CurrencyNoDecrease]
04000000 04D319EC 4B1F0108
[FreeCraft]
04000000 04799A0C 52800000
04000000 0479CD04 52800020
[CookKeepItems]
04000000 04767640 D65F03C0
04000000 047678B0 D65F03C0
[AlwaysCriticalSuccess]
04000000 04C6B304 52800028
04000000 04C6C244 52800028
[AlwaysBurning]
04000000 04C6039C 52800028
[EasyFishing]
04000000 02F9BA04 F9406660
04000000 02F9BA08 AA1F03E1
04000000 02F9BA0C 940016A9
04000000 02F9BA10 F9406660
04000000 02F9BA14 52800001
04000000 02F9BA18 AA1F03E2
04000000 02F9BA1C 94001651
04000000 02F9BA20 1400000C
[EasyGardening]
04000000 04724598 52800020
04000000 047248A0 D503201F
[InfFruits]
04000000 0472E154 D503201F
[InfMiningRock]
04000000 04774E28 F8018D1F
[FriendshipMax(add)]
04000000 04BBD864 52A00028
04000000 04BBD86C 729C6CC8
[XPMax(add)]
04000000 04D1FF04 52A00148
04000000 04D1FF08 72824408
[CurrencyMax(add)]
04000000 04D234A0 1A89B138
04000000 04D234A8 1A89B135
[WelcomeVanellope]
04000000 03232850 B4FE3481
04000000 03232854 153D834C
04000000 08193584 B9402028
04000000 08193588 7100051F
04000000 0819358C 544DCAA1
04000000 08193590 A9BF7BF3
04000000 08193594 A9BF57F4
04000000 08193598 A9BF5FF6
04000000 0819359C A9BF67F8
04000000 081935A0 A9BF6FFA
04000000 081935A4 AA0003F3
04000000 081935A8 F9400C28
04000000 081935AC B9401914
04000000 081935B0 96C26E4C
04000000 081935B4 96C2487F
04000000 081935B8 F9401800
04000000 081935BC 2A1403E1
04000000 081935C0 AA1F03E2
04000000 081935C4 972F7F7B
04000000 081935C8 AA0003F4
04000000 081935CC 974CE549
04000000 081935D0 F9400C08
04000000 081935D4 F9400908
04000000 081935D8 B9401915
04000000 081935DC F9400909
04000000 081935E0 91008137
04000000 081935E4 52800016
04000000 081935E8 6B1502DF
04000000 081935EC 5400042A
04000000 081935F0 F8767AEA
04000000 081935F4 F9400D4B
04000000 081935F8 F940096B
04000000 081935FC B9401978
04000000 08193600 F940096C
04000000 08193604 9100819A
04000000 08193608 52800019
04000000 0819360C 6B18033F
04000000 08193610 540002CA
04000000 08193614 F8797B40
04000000 08193618 B9403001
04000000 0819361C 7100043F
04000000 08193620 54000060
04000000 08193624 7100083F
04000000 08193628 540001C1
04000000 0819362C F940440D
04000000 08193630 B94049A1
04000000 08193634 71033C3F
04000000 08193638 540000A0
04000000 0819363C 7102303F
04000000 08193640 54000101
04000000 08193644 528001C1
04000000 08193648 14000002
04000000 0819364C 528001A1
04000000 08193650 F94019A3
04000000 08193654 AA1403E2
04000000 08193658 AA1303E0
04000000 0819365C 96C27BF5
04000000 08193660 11000739
04000000 08193664 17FFFFEA
04000000 08193668 110006D6
04000000 0819366C 17FFFFDF
04000000 08193670 A8C16FFA
04000000 08193674 A8C167F8
04000000 08193678 A8C15FF6
04000000 0819367C A8C157F4
04000000 08193680 A8C17BF3
04000000 08193684 D65F03C0
{MasterCode}
040E0000 04C9433C 6B1302A8
04000000 04C91C1C 4B170108
04000000 04701D0C 97FFFE41
04000000 04705004 9415F9FB
04000000 04C836D0 1A89B2B8
04000000 04C836D8 1A89B115
04000000 04C7FFC4 0B180108
04000000 04C7FFC8 F81F03BF
04000000 04B11444 B94026E8
04000000 04B1144C 0B150108
[R MoveSpeed x2]
04000000 030EDAD0 1E204160
04000000 030EDAD4 1E204181
04000000 030EDAD8 1E2041A2
80000080
04000000 030EDAD0 1E2B2960
04000000 030EDAD4 1E2C2981
04000000 030EDAD8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04C9433C 6B1F02A8
[CurrencyNoDecrease]
04000000 04C91C1C 4B1F0108
[FreeCraft]
04000000 04701D0C 52800000
04000000 04705004 52800020
[CurrencyMax(add)]
04000000 04C836D0 1A89B138
04000000 04C836D8 1A89B135
[XPMax(add)]
04000000 04C7FFC4 52A00148
04000000 04C7FFC8 72824408
[FriendshipMax(add)]
04000000 04B11444 52A00028
04000000 04B1144C 729C6CC8
{MasterCode}
040E0000 04C83E7C 6B1302A8
04000000 04C8175C 4B170108
04000000 046F181C 97FFFE41
04000000 046F4B14 9415FA07
04000000 04C73210 1A89B2B8
04000000 04C73218 1A89B115
04000000 04C6FB04 0B180108
04000000 04C6FB08 F81F03BF
04000000 04B00F54 B94026E8
04000000 04B00F5C 0B150108
[R MoveSpeed x2]
04000000 030DCAA0 1E204160
04000000 030DCAA4 1E204181
04000000 030DCAA8 1E2041A2
80000080
04000000 030DCAA0 1E2B2960
04000000 030DCAA4 1E2C2981
04000000 030DCAA8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04C83E7C 6B1F02A8
[CurrencyNoDecrease]
04000000 04C8175C 4B1F0108
[FreeCraft]
04000000 046F181C 52800000
04000000 046F4B14 52800020
[CurrencyMax(add)]
04000000 04C73210 1A89B138
04000000 04C73218 1A89B135
[XPMax(add)]
04000000 04C6FB04 52A00148
04000000 04C6FB08 72824408
[FriendshipMax(add)]
04000000 04B00F54 52A00028
04000000 04B00F5C 729C6CC8
{MasterCode}
040E0000 04C8B5EC 6B1302A8
04000000 04C88ECC 4B170108
04000000 046DD06C 97FFFE41
04000000 046E0364 941669CF
04000000 04C7A980 1A89B2B8
04000000 04C7A988 1A89B115
08000000 04C77274 F81F03BF 0B180108
04000000 04B086C4 B94026E8
04000000 04B086CC 0B150108
[R MoveSpeed x2]
08000000 030D54F0 1E204181 1E204160
04000000 030D54F8 1E2041A2
80000080
08000000 030D54F0 1E2C2981 1E2B2960
04000000 030D54F8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04C8B5EC 6B1F02A8
[CurrencyNoDecrease]
04000000 04C88ECC 4B1F0108
[FreeCraft]
04000000 046DD06C 52800000
04000000 046E0364 52800020
[CurrencyMax(add)]
04000000 04C7A980 1A89B138
04000000 04C7A988 1A89B135
[XPMax(add)]
08000000 04C77274 72824408 52A00148
[FriendshipMax(add)]
04000000 04B086C4 52A00028
04000000 04B086CC 729C6CC8
// ============================================================================
// Unlock All Furniture (Catalog) + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned *furniture* entries routed to the Catalog ListInventory,
then restore X0←X19 and return. Also NOP out the developer-flag check
guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
// Original: 0x710471A654 CBZ W8, 0x710471A68C → bypass by NOP
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire Catalog (ListInventory*)] <-- changed from Wardrobe to Catalog
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E04F60 // Profile.get_Catalog() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (Catalog)
// [Get furniture list] ItemDatabase.Instance → GetAllByType(Furniture, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #4 // ItemType.Furniture
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete Furniture*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in Catalog
0x710821C658 MOV X0, X19 // this = Catalog (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #99 // amount = 99
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_Catalog() 0x7104E04F60
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.Furniture) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
// ============================================================================
// Unlock All Trimming (Wallpaper & Flooring) + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned trimming entries (Wallpaper/Flooring) routed to the
Trimming ListInventory, then restore X0←X19 and return. Also NOP out
the developer-flag check guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
// Original: 0x710471A654 CBZ W8, 0x710471A68C → bypass by NOP
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire Trimming (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E05190 // Profile.get_Trimming() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (Trimming)
// [Get trimming list] ItemDatabase.Instance → GetAllByType(Trimming, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #16 // ItemType.Trimming
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete Trimming*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in Trimming
0x710821C658 MOV X0, X19 // this = Trimming (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_Trimming() 0x7104E05190
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.Trimming) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
// ============================================================================
// Unlock All Makeup + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned makeup entries routed to the Makeup ListInventory,
then restore X0←X19 and return. Also NOP out the developer-flag check
guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
// Original: 0x710471A654 CBZ W8, 0x710471A68C → bypass by NOP
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire Makeup (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E05100 // Profile.get_Makeup() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (Makeup)
// [Get makeup list] ItemDatabase.Instance → GetAllByType(Makeup, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #14 // ItemType.Makeup
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete Makeup*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in Makeup
0x710821C658 MOV X0, X19 // this = Makeup (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_Makeup() 0x7104E05100
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.Makeup) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
// ============================================================================
// Unlock All Avatar Features + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned avatar features routed to the AvatarFeatures
ListInventory, then restore X0←X19 and return. Also NOP out the
developer-flag check guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
// Original: 0x710471A654 CBZ W8, 0x710471A68C → bypass by NOP
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire AvatarFeatures (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E05460 // Profile.get_AvatarFeatures() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (AvatarFeatures)
// [Get avatar features list] ItemDatabase.Instance → GetAllByType(AvatarFeature, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #7 // ItemType.AvatarFeature
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete AvatarFeature*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in AvatarFeatures
0x710821C658 MOV X0, X19 // this = AvatarFeatures (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_AvatarFeatures() 0x7104E05460
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.AvatarFeature) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
// ============================================================================
// Unlock All Skins + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned skins routed to the Skins ListInventory,
then restore X0←X19 and return. Also NOP out the developer-flag check
guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire Skins (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E05340 // Profile.get_Skins() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (Skins)
// [Get skins list] ItemDatabase.Instance → GetAllByType(Skin, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #17 // ItemType.Skin
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete Skin*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in Skins
0x710821C658 MOV X0, X19 // this = Skins (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_Skins() 0x7104E05340
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.Skin) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
// ============================================================================
// Unlock All Touch of Magic (Decals) + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned TouchOfMagic entries routed to the Decals
ListInventory, then restore X0←X19 and return. Also NOP out the
developer-flag check guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire Decals (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E052B0 // Profile.get_Decals() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (Decals)
// [Get TouchOfMagic list] ItemDatabase.Instance → GetAllByType(TouchOfMagic, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #10 // ItemType.TouchOfMagic
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete TouchOfMagic/Decal*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in Decals
0x710821C658 MOV X0, X19 // this = Decals (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_Decals() 0x7104E052B0
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.TouchOfMagic) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
// ============================================================================
// Unlock All Photo Mode + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned photo-mode entries routed to the PhotoMode
ListInventory, then restore X0←X19 and return. Also NOP out the
developer-flag check guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire PhotoMode (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E054F0 // Profile.get_PhotoMode() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (PhotoMode)
// [Get photo-mode list] ItemDatabase.Instance → GetAllByType(PhotoMode, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #19 // ItemType.PhotoMode
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete PhotoMode*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in PhotoMode
0x710821C658 MOV X0, X19 // this = PhotoMode (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_PhotoMode() 0x7104E054F0
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.PhotoMode) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
// ============================================================================
// Unlock All Board Game Figurines + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned board-game figurines routed to the Figurines
ListInventory, then restore X0←X19 and return. Also NOP out the
developer-flag check guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire Figurines (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E053D0 // Profile.get_Figurines() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (Figurines)
// [Get figurine list] ItemDatabase.Instance → GetAllByType(BoardGame, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #18 // ItemType.BoardGame
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete Figurine*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in Figurines
0x710821C658 MOV X0, X19 // this = Figurines (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_Figurines() 0x7104E053D0
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.BoardGame) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
// ============================================================================
// Unlock All Buildings + Dev-Check Bypass
/* Goal: Hook WardrobeMenu::OnFocusIn ("MOV X0, X19") → jump to a code cave that
grants all unowned building entries routed to the Buildings
ListInventory, then restore X0←X19 and return. Also NOP out the
developer-flag check guarding DebugAddItem so item granting proceeds. */
// ============================================================================
// --- [Block A] Hook Patch (WardrobeMenu::OnFocusIn) -------------------------
// Original at hook site: 0x710717107C MOV X0, X19
0x710717107C BL 0x710821C60C // hook: replace MOV X0, X19 and branch to code cave
// --- [Block B] Developer Check Bypass (Meta.DebugAddItem.Types.Response$$ApplyThis) ---
0x710471A654 NOP // disable dev-flag gate so DebugAddItem can run
// --- [Block C] Code Cave Start (RVA: 0x821C60C, Abs: 0x710821C60C) ----------
// Save/restore X19/LR and others; finally load saved X19 into X0 to recreate "MOV X0, X19".
// [Prologue & Saves]
0x710821C60C STP X19, X30, [SP, #-0x10]! // push old X19 and LR
0x710821C610 STP X19, X20, [SP, #-0x10]! // push working X19 and Client*
0x710821C614 STP X21, X22, [SP, #-0x10]! // push elements base and length
0x710821C618 STP X23, X24, [SP, #-0x10]! // push loop index and temp itemId
// [Acquire Client*]
0x710821C61C BL 0x71032357A0 // get_MetaClient() → X0
0x710821C620 MOV X20, X0 // X20 = Client*
// [Acquire Buildings (ListInventory*)]
0x710821C624 BL 0x7103235880 // get_Profile() → X0
0x710821C628 BL 0x7104E05220 // Profile.get_Buildings() → X0
0x710821C62C MOV X19, X0 // X19 = ListInventory* (Buildings)
// [Get building list] ItemDatabase.Instance → GetAllByType(Building, null)
0x710821C630 BL 0x71044980E0 // ItemDatabase.Instance → X0
0x710821C634 MOV W1, #2 // ItemType.Building
0x710821C638 MOV X2, XZR // method = null
0x710821C63C BL 0x7104493F40 // GetAllByType(...) → X0 (List<T>*)
// [List<T> layout] size @ +0x18 (W), data @ +0x20 (ptr)
0x710821C640 ADD X21, X0, #0x20 // X21 = &elements[0]
0x710821C644 LDR W22, [X0, #0x18] // W22 = length
0x710821C648 MOV W23, #0 // i = 0
// --- [Loop] for (i = 0; i < len; ++i) ----------------------------------------
// NOTE: This calls a concrete get_Item() to extract itemId from each ItemData.
0x710821C64C LDR X0, [X21, X23, LSL #3] // X0 = IItemData* (concrete Building*ItemData*)
0x710821C650 BL 0x7103F24BB0 // ItemData.get_Item() → W0 (itemId)
0x710821C654 MOV W24, W0 // W24 = itemId
// [KnowsItem?] skip if already owned in Buildings
0x710821C658 MOV X0, X19 // this = Buildings (ListInventory*)
0x710821C65C MOV W1, W24 // itemId
0x710821C660 BL 0x710482C180 // ListInventory.KnowsItem(int) → W0
0x710821C664 TBNZ W0, #0, 0x710821C67C // if owned, jump to loop-next
// [Grant Item] add via DebugAddItem(itemId, 1, default CancellationToken)
0x710821C668 MOV X0, X20 // this = Client*
0x710821C66C MOV W1, W24 // itemId
0x710821C670 MOV W2, #1 // amount = 1
0x710821C674 MOV X3, XZR // CancellationToken = 0
0x710821C678 BL 0x71053832E0 // Client.DebugAddItem(int,int,CancellationToken)
// [Loop next]
0x710821C67C ADD W23, W23, #1 // i++
0x710821C680 CMP W23, W22 // i < len ?
0x710821C684 B.LO 0x710821C64C // continue loop
// [Epilogue & Return] restore regs and recreate "MOV X0, X19"
0x710821C688 LDP X23, X24, [SP], #0x10 // pop temps
0x710821C68C LDP X21, X22, [SP], #0x10 // pop list meta
0x710821C690 LDP X19, X20, [SP], #0x10 // pop inv and client
0x710821C694 LDP X0, X30, [SP], #0x10 // X0 ← (first-saved X19), restore LR
0x710821C698 RET // return to original function
// --- [Block D] Reference (targets used above) --------------------------------
// get_MetaClient() 0x71032357A0
// get_Profile() 0x7103235880
// Profile.get_Buildings() 0x7104E05220
// ItemDatabase.Instance 0x71044980E0
// ItemDatabase.GetAllByType(ItemType.Building) 0x7104493F40
// ItemData.get_Item() 0x7103F24BB0
// ListInventory.KnowsItem(int) 0x710482C180
// Client.DebugAddItem(int,int,CancellationToken) 0x71053832E0
Can I ask what welcome venelope is . Thanks though for all them awesome cheats![]()
Before using any cheat codes, be sure to back up your save data. You use cheat codes at your own risk.
Detailed reports are appreciated for any cheat code issues. New cheat code requests are always welcome (I can try at least).
sd:/atmospshere/contents/0100D39012C1A000/cheats/BID.txt
LatestArchive
{MasterCode}
040E0000 04D81E9C 6B1302A8
04000000 04D7F6DC 4B170108
04000000 047D8ACC 97FFFE41
04000000 047DBDA4 94165553
04000000 0599F680 D10283FF
04000000 047A64F0 D101C3FF
04000000 04CB7384 39412268
04000000 04CB82C4 39412288
04000000 04CAC41C 394092C8
04000000 02FA8C94 F9406800
04000000 02FA8C98 B40002A0
04000000 02FA8C9C B9402041
04000000 02FA8CA0 AA1F03E2
04000000 02FA8CA4 94001DE3
04000000 02FA8CA8 F9406E60
04000000 02FA8CAC B4000200
04000000 02FA8CB0 AA1F03E1
04000000 047631C8 97C823E6
04000000 047634D0 9445E9C8
04000000 02B7D300 94B5823C
04000000 047B3B88 F8018D00
04000000 047F50E0 97D8A0E8
04000000 047F571C 5400068B
04000000 04C739BC 0B180101
04000000 04C09824 B94026E8
04000000 04C0982C 0B150108
04000000 04D6DC34 0B180108
04000000 04D6DC38 F81F03BF
04000000 04D711D0 1A89B2B8
04000000 04D711D8 1A89B115
04000000 0471A654 340001C8
04000000 0717107C AA1303E0
04000000 03242A10 17FFF190
04000000 03242A14 D503201F
[R MoveSpeed x2]
04000000 03120190 1E204160
04000000 03120194 1E204181
04000000 03120198 1E2041A2
80000080
04000000 03120190 1E2B2960
04000000 03120194 1E2C2981
04000000 03120198 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04D81E9C 6B1F02A8
[CurrencyNoDecrease]
04000000 04D7F6DC 4B1F0108
[FreeCraft]
04000000 047D8ACC 52800000
04000000 047DBDA4 52800020
[CookKeepItems]
04000000 0599F680 D65F03C0
04000000 047A64F0 D65F03C0
[AlwaysCriticalSuccess]
04000000 04CB7384 52800028
04000000 04CB82C4 52800028
[AlwaysBurning]
04000000 04CAC41C 52800028
[EasyFishing]
04000000 02FA8C94 F9406660
04000000 02FA8C98 AA1F03E1
04000000 02FA8C9C 940016A9
04000000 02FA8CA0 F9406660
04000000 02FA8CA4 52800001
04000000 02FA8CA8 AA1F03E2
04000000 02FA8CAC 94001651
04000000 02FA8CB0 1400000C
[EasyGardening]
04000000 047631C8 52800020
04000000 047634D0 D503201F
[InfFruits]
04000000 02B7D300 D503201F
[InfMiningRock]
04000000 047B3B88 F8018D1F
[EasyUnlockCritter]
04000000 047F50E0 52800020
04000000 047F571C D503201F
[PetFriendshipMax(add)]
04000000 04C739BC 2A1503E1
[FriendshipMax(add)]
04000000 04C09824 52A00028
04000000 04C0982C 729C6CC8
[XPMax(add)]
04000000 04D6DC34 52A00148
04000000 04D6DC38 72824408
[CurrencyMax(add)]
04000000 04D711D0 1A89B138
04000000 04D711D8 1A89B135
[GetAllMissingClothing]
04000000 0471A654 D503201F
04000000 0717107C 9442AD64
04000000 0821C60C A9BF7BF3
04000000 0821C610 A9BF53F3
04000000 0821C614 A9BF5BF5
04000000 0821C618 A9BF63F7
04000000 0821C61C 96C06461
04000000 0821C620 AA0003F4
04000000 0821C624 96C06497
04000000 0821C628 972FA26E
04000000 0821C62C AA0003F3
04000000 0821C630 9709EEAC
04000000 0821C634 528000A1
04000000 0821C638 AA1F03E2
04000000 0821C63C 9709DE41
04000000 0821C640 91008015
04000000 0821C644 B9401816
04000000 0821C648 52800017
04000000 0821C64C F8777AA0
04000000 0821C650 96F42158
04000000 0821C654 2A0003F8
04000000 0821C658 AA1303E0
04000000 0821C65C 2A1803E1
04000000 0821C660 97183EC8
04000000 0821C664 370000C0
04000000 0821C668 AA1403E0
04000000 0821C66C 2A1803E1
04000000 0821C670 52800022
04000000 0821C674 AA1F03E3
04000000 0821C678 97459B1A
04000000 0821C67C 110006F7
04000000 0821C680 6B1602FF
04000000 0821C684 54FFFE43
04000000 0821C688 A8C163F7
04000000 0821C68C A8C15BF5
04000000 0821C690 A8C153F3
04000000 0821C694 A8C17BE0
04000000 0821C698 D65F03C0
[WelcomeVanellope]
04000000 03242A10 B4FE3201
04000000 03242A14 153F6722
04000000 0821C69C B9402028
04000000 0821C6A0 7100051F
04000000 0821C6A4 A9BF7BF3
04000000 0821C6A8 A9BF57F4
04000000 0821C6AC A9BF5FF6
04000000 0821C6B0 A9BF67F8
04000000 0821C6B4 A9BF6FFA
04000000 0821C6B8 AA0003F3
04000000 0821C6BC F9400C28
04000000 0821C6C0 B9401914
04000000 0821C6C4 96C08A63
04000000 0821C6C8 96C0646E
04000000 0821C6CC F9401800
04000000 0821C6D0 2A1403E1
04000000 0821C6D4 AA1F03E2
04000000 0821C6D8 972E10DA
04000000 0821C6DC AA0003F4
04000000 0821C6E0 974C1CD0
04000000 0821C6E4 F9400C08
04000000 0821C6E8 F9400908
04000000 0821C6EC B9401915
04000000 0821C6F0 F9400909
04000000 0821C6F4 91008137
04000000 0821C6F8 52800016
04000000 0821C6FC 6B1502DF
04000000 0821C700 5400042A
04000000 0821C704 F8767AEA
04000000 0821C708 F9400D4B
04000000 0821C70C F940096B
04000000 0821C710 B9401978
04000000 0821C714 F940096C
04000000 0821C718 9100819A
04000000 0821C71C 52800019
04000000 0821C720 6B18033F
04000000 0821C724 540002CA
04000000 0821C728 F8797B40
04000000 0821C72C B9403001
04000000 0821C730 7100043F
04000000 0821C734 54000060
04000000 0821C738 7100083F
04000000 0821C73C 540001C1
04000000 0821C740 F940440D
04000000 0821C744 B94049A1
04000000 0821C748 71033C3F
04000000 0821C74C 540000A0
04000000 0821C750 7102303F
04000000 0821C754 54000101
04000000 0821C758 528001C1
04000000 0821C75C 14000002
04000000 0821C760 528001A1
04000000 0821C764 F94019A3
04000000 0821C768 AA1403E2
04000000 0821C76C AA1303E0
04000000 0821C770 96C09820
04000000 0821C774 11000739
04000000 0821C778 17FFFFEA
04000000 0821C77C 110006D6
04000000 0821C780 17FFFFDF
04000000 0821C784 A8C16FFA
04000000 0821C788 A8C167F8
04000000 0821C78C A8C15FF6
04000000 0821C790 A8C157F4
04000000 0821C794 A8C17BF3
04000000 0821C798 D65F03C0
{MasterCode}
040E0000 04D7DF5C 6B1302A8
04000000 04D7B79C 4B170108
04000000 047D4AEC 97FFFE41
04000000 047D7DC4 9416557B
04000000 0599AE60 D10283FF
04000000 047A2720 D101C3FF
04000000 04CB3444 39412268
04000000 04CB4384 39412288
04000000 04CA84DC 394092C8
04000000 02FA78A4 F9406800
04000000 02FA78A8 B40002A0
04000000 02FA78AC B9402041
04000000 02FA78B0 AA1F03E2
04000000 02FA78B4 94001DE3
04000000 02FA78B8 F9406E60
04000000 02FA78BC B4000200
04000000 02FA78C0 AA1F03E1
04000000 0475F3F8 97C8241E
04000000 0475F700 9445E734
04000000 02B7BF40 94B57524
04000000 047AFDB8 F8018D00
04000000 04C058E4 B94026E8
04000000 04C058EC 0B150108
04000000 04D69CF4 0B180108
04000000 04D69CF8 F81F03BF
04000000 04D6D290 1A89B2B8
04000000 04D6D298 1A89B115
04000000 03241620 17FFF190
04000000 03241624 D503201F
[R MoveSpeed x2]
04000000 0311EDA0 1E204160
04000000 0311EDA4 1E204181
04000000 0311EDA8 1E2041A2
80000080
04000000 0311EDA0 1E2B2960
04000000 0311EDA4 1E2C2981
04000000 0311EDA8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04D7DF5C 6B1F02A8
[CurrencyNoDecrease]
04000000 04D7B79C 4B1F0108
[FreeCraft]
04000000 047D4AEC 52800000
04000000 047D7DC4 52800020
[CookKeepItems]
04000000 0599AE60 D65F03C0
04000000 047A2720 D65F03C0
[AlwaysCriticalSuccess]
04000000 04CB3444 52800028
04000000 04CB4384 52800028
[AlwaysBurning]
04000000 04CA84DC 52800028
[EasyFishing]
04000000 02FA78A4 F9406660
04000000 02FA78A8 AA1F03E1
04000000 02FA78AC 940016A9
04000000 02FA78B0 F9406660
04000000 02FA78B4 52800001
04000000 02FA78B8 AA1F03E2
04000000 02FA78BC 94001651
04000000 02FA78C0 1400000C
[EasyGardening]
04000000 0475F3F8 52800020
04000000 0475F700 D503201F
[InfFruits]
04000000 02B7BF40 D503201F
[InfMiningRock]
04000000 047AFDB8 F8018D1F
[FriendshipMax(add)]
04000000 04C058E4 52A00028
04000000 04C058EC 729C6CC8
[XPMax(add)]
04000000 04D69CF4 52A00148
04000000 04D69CF8 72824408
[CurrencyMax(add)]
04000000 04D6D290 1A89B138
04000000 04D6D298 1A89B135
[WelcomeVanellope]
04000000 03241620 B4FE3201
04000000 03241624 153F5762
04000000 082173AC B9402028
04000000 082173B0 7100051F
04000000 082173B4 A9BF7BF3
04000000 082173B8 A9BF57F4
04000000 082173BC A9BF5FF6
04000000 082173C0 A9BF67F8
04000000 082173C4 A9BF6FFA
04000000 082173C8 AA0003F3
04000000 082173CC F9400C28
04000000 082173D0 B9401914
04000000 082173D4 96C09A23
04000000 082173D8 96C0742E
04000000 082173DC F9401800
04000000 082173E0 2A1403E1
04000000 082173E4 AA1F03E2
04000000 082173E8 972E15C6
04000000 082173EC AA0003F4
04000000 082173F0 974C1F84
04000000 082173F4 F9400C08
04000000 082173F8 F9400908
04000000 082173FC B9401915
04000000 08217400 F9400909
04000000 08217404 91008137
04000000 08217408 52800016
04000000 0821740C 6B1502DF
04000000 08217410 5400042A
04000000 08217414 F8767AEA
04000000 08217418 F9400D4B
04000000 0821741C F940096B
04000000 08217420 B9401978
04000000 08217424 F940096C
04000000 08217428 9100819A
04000000 0821742C 52800019
04000000 08217430 6B18033F
04000000 08217434 540002CA
04000000 08217438 F8797B40
04000000 0821743C B9403001
04000000 08217440 7100043F
04000000 08217444 54000060
04000000 08217448 7100083F
04000000 0821744C 540001C1
04000000 08217450 F940440D
04000000 08217454 B94049A1
04000000 08217458 71033C3F
04000000 0821745C 540000A0
04000000 08217460 7102303F
04000000 08217464 54000101
04000000 08217468 528001C1
04000000 0821746C 14000002
04000000 08217470 528001A1
04000000 08217474 F94019A3
04000000 08217478 AA1403E2
04000000 0821747C AA1303E0
04000000 08217480 96C0A7E0
04000000 08217484 11000739
04000000 08217488 17FFFFEA
04000000 0821748C 110006D6
04000000 08217490 17FFFFDF
04000000 08217494 A8C16FFA
04000000 08217498 A8C167F8
04000000 0821749C A8C15FF6
04000000 082174A0 A8C157F4
04000000 082174A4 A8C17BF3
04000000 082174A8 D65F03C0
{MasterCode}
040E0000 04D3410C 6B1302A8
04000000 04D319EC 4B170108
04000000 04799A0C 97FFFE41
04000000 0479CD04 94161A2F
04000000 04767640 D10283FF
04000000 047678B0 D101C3FF
04000000 04C6B304 39412268
04000000 04C6C244 39412288
04000000 04C6039C 394092C8
04000000 02F9BA04 F9406800
04000000 02F9BA08 B40002A0
04000000 02F9BA0C B9402041
04000000 02F9BA10 AA1F03E2
04000000 02F9BA14 94001DE3
04000000 02F9BA18 F9406E60
04000000 02F9BA1C B4000200
04000000 02F9BA20 AA1F03E1
04000000 04724598 97C8CE82
04000000 047248A0 944584B8
04000000 0472E154 94455E8B
04000000 04774E28 F8018D00
04000000 04BBD864 B94026E8
04000000 04BBD86C 0B150108
04000000 04D1FF04 0B180108
04000000 04D1FF08 F81F03BF
04000000 04D234A0 1A89B2B8
04000000 04D234A8 1A89B115
04000000 03232850 17FFF1A4
04000000 03232854 D503201F
[R MoveSpeed x2]
04000000 03113350 1E204160
04000000 03113354 1E204181
04000000 03113358 1E2041A2
80000080
04000000 03113350 1E2B2960
04000000 03113354 1E2C2981
04000000 03113358 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04D3410C 6B1F02A8
[CurrencyNoDecrease]
04000000 04D319EC 4B1F0108
[FreeCraft]
04000000 04799A0C 52800000
04000000 0479CD04 52800020
[CookKeepItems]
04000000 04767640 D65F03C0
04000000 047678B0 D65F03C0
[AlwaysCriticalSuccess]
04000000 04C6B304 52800028
04000000 04C6C244 52800028
[AlwaysBurning]
04000000 04C6039C 52800028
[EasyFishing]
04000000 02F9BA04 F9406660
04000000 02F9BA08 AA1F03E1
04000000 02F9BA0C 940016A9
04000000 02F9BA10 F9406660
04000000 02F9BA14 52800001
04000000 02F9BA18 AA1F03E2
04000000 02F9BA1C 94001651
04000000 02F9BA20 1400000C
[EasyGardening]
04000000 04724598 52800020
04000000 047248A0 D503201F
[InfFruits]
04000000 0472E154 D503201F
[InfMiningRock]
04000000 04774E28 F8018D1F
[FriendshipMax(add)]
04000000 04BBD864 52A00028
04000000 04BBD86C 729C6CC8
[XPMax(add)]
04000000 04D1FF04 52A00148
04000000 04D1FF08 72824408
[CurrencyMax(add)]
04000000 04D234A0 1A89B138
04000000 04D234A8 1A89B135
[WelcomeVanellope]
04000000 03232850 B4FE3481
04000000 03232854 153D834C
04000000 08193584 B9402028
04000000 08193588 7100051F
04000000 0819358C 544DCAA1
04000000 08193590 A9BF7BF3
04000000 08193594 A9BF57F4
04000000 08193598 A9BF5FF6
04000000 0819359C A9BF67F8
04000000 081935A0 A9BF6FFA
04000000 081935A4 AA0003F3
04000000 081935A8 F9400C28
04000000 081935AC B9401914
04000000 081935B0 96C26E4C
04000000 081935B4 96C2487F
04000000 081935B8 F9401800
04000000 081935BC 2A1403E1
04000000 081935C0 AA1F03E2
04000000 081935C4 972F7F7B
04000000 081935C8 AA0003F4
04000000 081935CC 974CE549
04000000 081935D0 F9400C08
04000000 081935D4 F9400908
04000000 081935D8 B9401915
04000000 081935DC F9400909
04000000 081935E0 91008137
04000000 081935E4 52800016
04000000 081935E8 6B1502DF
04000000 081935EC 5400042A
04000000 081935F0 F8767AEA
04000000 081935F4 F9400D4B
04000000 081935F8 F940096B
04000000 081935FC B9401978
04000000 08193600 F940096C
04000000 08193604 9100819A
04000000 08193608 52800019
04000000 0819360C 6B18033F
04000000 08193610 540002CA
04000000 08193614 F8797B40
04000000 08193618 B9403001
04000000 0819361C 7100043F
04000000 08193620 54000060
04000000 08193624 7100083F
04000000 08193628 540001C1
04000000 0819362C F940440D
04000000 08193630 B94049A1
04000000 08193634 71033C3F
04000000 08193638 540000A0
04000000 0819363C 7102303F
04000000 08193640 54000101
04000000 08193644 528001C1
04000000 08193648 14000002
04000000 0819364C 528001A1
04000000 08193650 F94019A3
04000000 08193654 AA1403E2
04000000 08193658 AA1303E0
04000000 0819365C 96C27BF5
04000000 08193660 11000739
04000000 08193664 17FFFFEA
04000000 08193668 110006D6
04000000 0819366C 17FFFFDF
04000000 08193670 A8C16FFA
04000000 08193674 A8C167F8
04000000 08193678 A8C15FF6
04000000 0819367C A8C157F4
04000000 08193680 A8C17BF3
04000000 08193684 D65F03C0
{MasterCode}
040E0000 04C9433C 6B1302A8
04000000 04C91C1C 4B170108
04000000 04701D0C 97FFFE41
04000000 04705004 9415F9FB
04000000 04C836D0 1A89B2B8
04000000 04C836D8 1A89B115
04000000 04C7FFC4 0B180108
04000000 04C7FFC8 F81F03BF
04000000 04B11444 B94026E8
04000000 04B1144C 0B150108
[R MoveSpeed x2]
04000000 030EDAD0 1E204160
04000000 030EDAD4 1E204181
04000000 030EDAD8 1E2041A2
80000080
04000000 030EDAD0 1E2B2960
04000000 030EDAD4 1E2C2981
04000000 030EDAD8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04C9433C 6B1F02A8
[CurrencyNoDecrease]
04000000 04C91C1C 4B1F0108
[FreeCraft]
04000000 04701D0C 52800000
04000000 04705004 52800020
[CurrencyMax(add)]
04000000 04C836D0 1A89B138
04000000 04C836D8 1A89B135
[XPMax(add)]
04000000 04C7FFC4 52A00148
04000000 04C7FFC8 72824408
[FriendshipMax(add)]
04000000 04B11444 52A00028
04000000 04B1144C 729C6CC8
{MasterCode}
040E0000 04C83E7C 6B1302A8
04000000 04C8175C 4B170108
04000000 046F181C 97FFFE41
04000000 046F4B14 9415FA07
04000000 04C73210 1A89B2B8
04000000 04C73218 1A89B115
04000000 04C6FB04 0B180108
04000000 04C6FB08 F81F03BF
04000000 04B00F54 B94026E8
04000000 04B00F5C 0B150108
[R MoveSpeed x2]
04000000 030DCAA0 1E204160
04000000 030DCAA4 1E204181
04000000 030DCAA8 1E2041A2
80000080
04000000 030DCAA0 1E2B2960
04000000 030DCAA4 1E2C2981
04000000 030DCAA8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04C83E7C 6B1F02A8
[CurrencyNoDecrease]
04000000 04C8175C 4B1F0108
[FreeCraft]
04000000 046F181C 52800000
04000000 046F4B14 52800020
[CurrencyMax(add)]
04000000 04C73210 1A89B138
04000000 04C73218 1A89B135
[XPMax(add)]
04000000 04C6FB04 52A00148
04000000 04C6FB08 72824408
[FriendshipMax(add)]
04000000 04B00F54 52A00028
04000000 04B00F5C 729C6CC8
{MasterCode}
040E0000 04C8B5EC 6B1302A8
04000000 04C88ECC 4B170108
04000000 046DD06C 97FFFE41
04000000 046E0364 941669CF
04000000 04C7A980 1A89B2B8
04000000 04C7A988 1A89B115
08000000 04C77274 F81F03BF 0B180108
04000000 04B086C4 B94026E8
04000000 04B086CC 0B150108
[R MoveSpeed x2]
08000000 030D54F0 1E204181 1E204160
04000000 030D54F8 1E2041A2
80000080
08000000 030D54F0 1E2C2981 1E2B2960
04000000 030D54F8 1E2D29A2
20000000
[EnergyNoDecrease]
040E0000 04C8B5EC 6B1F02A8
[CurrencyNoDecrease]
04000000 04C88ECC 4B1F0108
[FreeCraft]
04000000 046DD06C 52800000
04000000 046E0364 52800020
[CurrencyMax(add)]
04000000 04C7A980 1A89B138
04000000 04C7A988 1A89B135
[XPMax(add)]
08000000 04C77274 72824408 52A00148
[FriendshipMax(add)]
04000000 04B086C4 52A00028
04000000 04B086CC 729C6CC8

Can I ask what welcome venelope is . Thanks though for all them awesome cheats![]()
Disney Dreamlight Valley v1.18.0 BID=730CED1F08B527E6
When your objectives become "Open the DreamSnaps Submission menu" or "Complete your first DreamSnaps Challenge!", simply navigate to the Quests tab in your menu and track the quest. Doing this will automatically progress the mission.
![]()
This cheat enables you to complete the "Faith, Trust, and Pixel Dust" quest to bring Vanellope into the Valley, even while offline.
[WelcomeVanellope]
04000000 03232850 B4FE3481
04000000 03232854 153D834C
04000000 08193584 B9402028
04000000 08193588 7100051F
04000000 0819358C 544DCAA1
04000000 08193590 A9BF7BF3
04000000 08193594 A9BF57F4
04000000 08193598 A9BF5FF6
04000000 0819359C A9BF67F8
04000000 081935A0 A9BF6FFA
04000000 081935A4 AA0003F3
04000000 081935A8 F9400C28
04000000 081935AC B9401914
04000000 081935B0 96C26E4C
04000000 081935B4 96C2487F
04000000 081935B8 F9401800
04000000 081935BC 2A1403E1
04000000 081935C0 AA1F03E2
04000000 081935C4 972F7F7B
04000000 081935C8 AA0003F4
04000000 081935CC 974CE549
04000000 081935D0 F9400C08
04000000 081935D4 F9400908
04000000 081935D8 B9401915
04000000 081935DC F9400909
04000000 081935E0 91008137
04000000 081935E4 52800016
04000000 081935E8 6B1502DF
04000000 081935EC 5400042A
04000000 081935F0 F8767AEA
04000000 081935F4 F9400D4B
04000000 081935F8 F940096B
04000000 081935FC B9401978
04000000 08193600 F940096C
04000000 08193604 9100819A
04000000 08193608 52800019
04000000 0819360C 6B18033F
04000000 08193610 540002CA
04000000 08193614 F8797B40
04000000 08193618 B9403001
04000000 0819361C 7100043F
04000000 08193620 54000060
04000000 08193624 7100083F
04000000 08193628 540001C1
04000000 0819362C F940440D
04000000 08193630 B94049A1
04000000 08193634 71033C3F
04000000 08193638 540000A0
04000000 0819363C 7102303F
04000000 08193640 54000101
04000000 08193644 528001C1
04000000 08193648 14000002
04000000 0819364C 528001A1
04000000 08193650 F94019A3
04000000 08193654 AA1403E2
04000000 08193658 AA1303E0
04000000 0819365C 96C27BF5
04000000 08193660 11000739
04000000 08193664 17FFFFEA
04000000 08193668 110006D6
04000000 0819366C 17FFFFDF
04000000 08193670 A8C16FFA
04000000 08193674 A8C167F8
04000000 08193678 A8C15FF6
04000000 0819367C A8C157F4
04000000 08193680 A8C17BF3
04000000 08193684 D65F03C0
[WelcomeVanellope OFF]
04000000 03232850 17FFF1A4
04000000 03232854 D503201F
Code:// Hook point: Mdl.Missions.MissionManager$$OnTrackedMissionChanged // Legend: // MissionObjective.status_ : enum MissionStepStatus { 0=NotStarted, 1=Ongoing, 2=ReadyToBeCompleted, ... } // MissionObjectiveData.customStepCase_: enum CustomStepOneofCase { ... 140=DesignChallenge, ... 207=MenuAction, ... } // MissionCompleteStep.Types.Condition : 13=MenuAction (open DreamSnaps menu), 14=DesignChallenge (post to DreamSnaps) // // Registers usage (stable across loops / BL): // X19 = this (MissionManager*) // X20 = MissionSlot* // W21/W22 = subStepCount / i (outer loop) // X23 = subSteps base // W24/W25 = objectiveCount / j (inner loop) // X26 = objectives base // // Call convention for CheckForAdvanceStep: // X0=this, W1=condition(13|14), X2=missionSlot*, X3=stepName (string) 0x7103232850 CBZ X1, 0x710322EEE0 // TrackedActivity == NULL? → return to original 0x7103232854 B 0x7108193584 // Jump to code cave // --- Code Cave Start --- (VA: 0x7108193584 ~) 0x7108193584 LDR W8, [X1, #0x20] // Read ActivityCase 0x7108193588 CMP W8, #1 // ActivityCase == Mission ? 0x710819358C B.NE 0x710322EEE0 // Not Mission → return to original // Prologue (minimal; save LR too) 0x7108193590 STP X19, X30, [SP, #-0x10]! 0x7108193594 STP X20, X21, [SP, #-0x10]! 0x7108193598 STP X22, X23, [SP, #-0x10]! 0x710819359C STP X24, X25, [SP, #-0x10]! 0x71081935A0 STP X26, X27, [SP, #-0x10]! 0x71081935A4 MOV X19, X0 // X19 ← MissionManager* (this) 0x71081935A8 LDR X8, [X1, #0x18] // TrackedActivity.TrackedMission* 0x71081935AC LDR W20, [X8, #0x18] // missionId (temporary; only for GetMissionSlot) 0x71081935B0 BL 0x710322EEE0 // MissionManager.RefreshCurrentFollower() 0x71081935B4 BL 0x71032257B0 // Profile.get_Profile() 0x71081935B8 LDR X0, [X0, #0x30] // X0 ← ProfileWorld* 0x71081935BC MOV W1, W20 // arg1: missionId 0x71081935C0 MOV X2, XZR // arg2: predicate = NULL 0x71081935C4 BL 0x7104D733B0 // X0 ← ProfileWorld.GetMissionSlot(id, NULL) 0x71081935C8 MOV X20, X0 // Keep MissionSlot* in X20 0x71081935CC BL 0x71054CCAF0 // X0 ← MissionSlot.get_CurrentStep() 0x71081935D0 LDR X8, [X0, #0x18] // RepeatedField<MissionSubStep>* 0x71081935D4 LDR X8, [X8, #0x10] // List<MissionSubStep>* 0x71081935D8 LDR W21, [X8, #0x18] // W21 ← subStepCount 0x71081935DC LDR X9, [X8, #0x10] // _items (Il2CppArray*) 0x71081935E0 ADD X23, X9, #0x20 // X23 ← subSteps data base 0x71081935E4 MOV W22, #0 // i = 0 // ===== Outer loop over SubSteps ===== 0x71081935E8 CMP W22, W21 0x71081935EC B.GE 0x7108193670 // i >= subStepCount → Epilogue 0x71081935F0 LDR X10, [X23, X22, LSL #3] // X10 ← MissionSubStep* 0x71081935F4 LDR X11, [X10, #0x18] // RepeatedField<MissionObjective>* 0x71081935F8 LDR X11, [X11, #0x10] // List<MissionObjective>* 0x71081935FC LDR W24, [X11, #0x18] // W24 ← objectiveCount 0x7108193600 LDR X12, [X11, #0x10] // _items 0x7108193604 ADD X26, X12, #0x20 // X26 ← objectives data base 0x7108193608 MOV W25, #0 // j = 0 // —— Inner loop over Objectives —— 0x710819360C CMP W25, W24 0x7108193610 B.GE 0x7108193668 // j >= objectiveCount → next SubStep 0x7108193614 LDR X0, [X26, X25, LSL #3] // X0 ← MissionObjective* 0x7108193618 LDR W1, [X0, #0x30] // W1 ← status_ (MissionStepStatus) 0x710819361C CMP W1, #1 // status == Ongoing(1) ? 0x7108193620 B.EQ 0x710819362C // yes → check step case 0x7108193624 CMP W1, #2 // status == ReadyToBeCompleted(2) ? 0x7108193628 B.NE 0x7108193660 // no → skip (j++) // At this point: status ∈ {1,2} (candidate objective) 0x710819362C LDR X13, [X0, #0x88] // X13 ← MissionObjectiveData* 0x7108193630 LDR W1, [X13, #0x48] // W1 ← customStepCase (CustomStepOneofCase) 0x7108193634 CMP W1, #207 // customStepCase == MenuAction(207) ? 0x7108193638 B.EQ 0x710819364C // yes → set Condition=13 0x710819363C CMP W1, #140 // customStepCase == DesignChallenge(140) ? 0x7108193640 B.NE 0x7108193660 // no → skip (j++) 0x7108193644 MOV W1, #14 // Condition = 14 (DesignChallenge) 0x7108193648 B 0x7108193650 // go call CheckForAdvanceStep 0x710819364C MOV W1, #13 // Condition = 13 (MenuAction) 0x7108193650 LDR X3, [X13, #0x30] // X3 ← stepName (Objective's StepName string) 0x7108193654 MOV X2, X20 // X2 ← missionSlot* 0x7108193658 MOV X0, X19 // X0 ← this (MissionManager*) 0x710819365C BL 0x7103232630 // Call CheckForAdvanceStep(this, cond=13/14, slot, stepName) // Advance inner loop 0x7108193660 ADD W25, W25, #1 // j++ 0x7108193664 B 0x710819360C // loop back (Objectives) // Advance outer loop 0x7108193668 ADD W22, W22, #1 // i++ 0x710819366C B 0x71081935E8 // loop back (SubSteps) // ==== Epilogue ==== 0x7108193670 LDP X26, X27, [SP], #0x10 // Restore callee-saved 0x7108193674 LDP X24, X25, [SP], #0x10 0x7108193678 LDP X22, X23, [SP], #0x10 0x710819367C LDP X20, X21, [SP], #0x10 0x7108193680 LDP X19, X30, [SP], #0x10 0x7108193684 RET // --- Code Cave End ---